КАК я могу реализовать логические перехваты с помощью sugarcrm?

#php #hook #sugarcrm

#php #перехват #sugarcrm

Вопрос:

Я хочу реализовать логический перехват Sugar, который срабатывает, когда статус счета становится подтвержденным.

Это мой логический перехват:

 <?php
    $hook_version = 1; 
    $hook_array = Array(); 
    $hook_array['after_save'] = Array(); 
    $hook_array['after_save'][] = Array(1, 'status invoices Changes', '/var/www/html/suitecrm/modules/AOS_Invoices/AOS_LogicHooks.php','AOS_LogicHooks', 'statusInvoicesChanges'); 
?>`
  

Это мой класс действий:

 <?php
    class AOS_LogicHooks {

        public function statusInvoicesChanges (SugarBean $bean, $event, $arguments) {
            if ($dictionary['AOS_Invoices']['fields']['status']='validated') { 
                $GLOBALS['log']->fatal("Status has been changed");
            }
        }
    }
?>
  

Чего мне не хватает?

Ответ №1:

Для сравнения вам нужен двойной == или тройной === (строгий). Использование одного = является оператором присваивания.

 if ($dictionary['AOS_Invoices']['fields']['status'] == 'validated') { 
  

Ответ №2:

вы должны изменить путь в своих логических перехватах : 'custom/modules/AOS_Invoices/AOS_LogicHooks.php'
И измените свой код вашего класса действий на:

 <?php 
class statusChange { 
  public function statusInvoicesChanges ($bean, $event, $arguments) { 
// addition line:
$GLOBALS['log']-> debug(get_class()." ". __FUNCTION__." Status:n ".print_r($bean->status,true));
    if ($bean->status == 'Validated'){ 
      $GLOBALS['log']-> debug("Status has been changed"); 
    }
  } 
} 
?>