Hello.
I'm using SugarCRM Enterprise Edition 7.5.2.4, using an "On Demand" instance.
I developed a logic hook to the native module "RevenueLineItems", that is related to the module "Opportunities".
The logic is: on creating a RevenueLineItem (here I will treat as "Revenue", for simplifying...) for the Opportunity, it updates the Opportunity sales status with the Revenue sales stage value.
The first time I installed there was a missing "?>" in the php code, causing an infinite loop on saving the Revenue, and there weren't any logs I wrote for the hook in the sugar.log file. I tried to uninstall the module, but it didn't succeed.
Second time, I corrected the code and installed an updated package on the CRM. The Revenue was saving correctly, but the logic hook still didn't work, without a single log registered.
So, what I'm doing wrong? May be the old module version causing the problem, or there is something wrong with my code?
manifest.php:
<?php $manifest = array( 'acceptable_sugar_flavors' => array('CE','PRO','CORP','ENT','ULT'), 'acceptable_sugar_versions' => array( 'exact_matches' => array(), 'regex_matches' => array('(.*?)\\.(.*?)\\.(.*?)$'), ), 'readme' =>'', 'author' => 'Ramon Marcondes', 'description' => 'Modulo - Receita de Item de Linha (RevenueLineItems)', 'icon' => '', 'is_uninstallable' => true, 'key' => 'mod_revenuelineitems', 'name' => 'RevenueLineItems', 'published_date' => '2016-02-22 14:00:00', 'type' => 'module', 'version' => '1.1', ); $installdefs = array( 'id' => 'revenuelineitem', 'copy' => array( 0 => array( 'from' => '<basepath>/custom/modules/RevenueLineItems/lh_revenuelineitems.php', 'to' => 'custom/modules/RevenueLineItems/lh_revenuelineitems.php', ), ), 'logic_hooks' => array( array( 'module' => 'RevenueLineItems', 'hook' => 'after_save', 'order' => 99, 'description' => 'Logic hook - Receita Itens de Linha', 'file' => 'custom/modules/RevenueLineItems/lh_revenuelineitems.php', 'class' => 'Receita', 'function' => 'receita_save', ), ), ); ?>
And the lh_revenuelineitems.php (the logic hook code):
<?php if (!defined('sugarEntry') || !sugarEntry) { $GLOBALS['log']->fatal("Receita - not a valid entry point!"); die('Not A Valid Entry Point'); } class Receita { function receita_save($bean, $event, $arguments) { //require_once('log4php/LoggerManager.php'); //$db = DBManagerFactory::getInstance(); $GLOBALS['log']->fatal('Receita chegou aqui'); if ($bean->load_relationship('opportunities')) { $GLOBALS['log']->fatal("Receita encontrou oportunidade relacionada"); $relatedBeans = $bean->opportunities->getBeans(); if (!empty($relatedBeans)) { $GLOBALS['log']->fatal("Encontrou oportunidade"); $parentbean = current($relatedBeans); $parentbean->sales_status = $bean->sales_stage; $parentbean->save(); } else { $GLOBALS['log']->fatal("Não encontrou oportunidade"); } } else { $GLOBALS['log']->fatal("Receita não encontrou oportunidade relacionada"); } } } ?>
Any help would be appreciated.
Thanks.