Hi
How can I to create a logic hook for module A that also executes when we save a record in module B?
Now when I process or save records and add or delete related records my logic hook runs well in model A (Contacts). But I need process when I save a new recored in a module B (Puestos) also.
This is my code:
I have this logic hook “custom/modules/Contacts/LogicResumenContacto.php”
<?php
if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class LogicResumenContacto
{
public function before_save(&$bean, $event, $arguments)
{
$this->_actualizarDatosContacto($bean);
}
public function after_save(&$bean, $event, $arguments)
{
$this->_actualizarDatosContacto($bean);
}
public function after_relationship_add(&$bean, $event, $arguments)
{
$this->_actualizarDatosContacto($bean);
}
public function after_relationship_delete(&$bean, $event, $arguments)
{
$this->_actualizarDatosContacto($bean);
}
public function process_record (&$bean, $event, $arguments)
{
$this->_actualizarDatosContacto($bean);
}
//Actualizamos Resumen Contacto
private function _actualizarDatosContacto (&$bean)
{
global $db;
$sqlUpdate = "UPDATE contacts_cstm
join (SELECT
contacts.id AS contacto_id,
count(DISTINCT(pdt_puestos_trabajo.id)) As puestos,
GROUP_CONCAT(DISTINCT(concat(' ',users.user_name))) AS delegados,
GROUP_CONCAT(DISTINCT(concat('^',pdt_puestos_trabajo.specialty,'^'))) AS especialidades,
GROUP_CONCAT(DISTINCT(concat('^',pdt_puestos_trabajo.subspeciality,'^'))) AS subespecialidades,
count(DISTINCT(users.user_name)) AS numDelegados,
count(DISTINCT(pdt_puestos_trabajo.specialty)) AS numEspecialidades,
GROUP_CONCAT(DISTINCT(concat(' ',accounts.`name`))) AS cuentas,
count(DISTINCT(accounts.`name`)) AS numCuentas,
min(pdt_puestos_trabajo.priority) As prioridad,
max(meetings.date_start) as last_visit,
DATEDIFF(now(),max(meetings.date_start)) as dias_ultima_visita,
COUNT(DISTINCT(meetings.id))as numVisitas,
(CASE
WHEN (COUNT(DISTINCT(meetings.id))) BETWEEN 1 and 20 THEN 3
WHEN (COUNT(DISTINCT(meetings.id))) BETWEEN 21 and 50 THEN 2
WHEN (COUNT(DISTINCT(meetings.id))) BETWEEN 51 and 100 THEN 1
ELSE null
END) as prioridad2
FROM
pdt_puestos_trabajo_contacts_c
RIGHT JOIN contacts
ON pdt_puestos_trabajo_contacts_c.pdt_puestos_trabajo_contactscontacts_ida = contacts.id and pdt_puestos_trabajo_contacts_c.deleted=0
LEFT JOIN pdt_puestos_trabajo
ON pdt_puestos_trabajo_contacts_c.pdt_puestos_trabajo_contactspdt_puestos_trabajo_idb = pdt_puestos_trabajo.id and pdt_puestos_trabajo.deleted=0
LEFT JOIN users
ON pdt_puestos_trabajo.assigned_user_id = users.id and users.deleted=0 and users.`status`='Active' and users.employee_status='Active'
LEFT JOIN pdt_puestos_trabajo_accounts_c
ON pdt_puestos_trabajo.id = pdt_puestos_trabajo_accounts_c.pdt_puestos_trabajo_accountspdt_puestos_trabajo_idb and pdt_puestos_trabajo_accounts_c.deleted=0
LEFT JOIN accounts
ON pdt_puestos_trabajo_accounts_c.pdt_puestos_trabajo_accountsaccounts_ida = accounts.id and accounts.deleted=0
LEFT JOIN pdt_puestos_trabajo_meetings_c
ON pdt_puestos_trabajo.id = pdt_puestos_trabajo_meetings_c.pdt_puestos_trabajo_meetingspdt_puestos_trabajo_ida and pdt_puestos_trabajo_meetings_c.deleted=0
LEFT JOIN meetings
ON pdt_puestos_trabajo_meetings_c.pdt_puestos_trabajo_meetingsmeetings_idb = meetings.id and meetings.deleted=0 and meetings.`status`='Held' and DATEDIFF(now(),meetings.date_start)<500
WHERE contacts.id='$bean->id'
GROUP BY
contacts.id
) as datos on contacts_cstm.id_c=datos.contacto_id
set
contacts_cstm.num_pdt_c = datos.puestos,
contacts_cstm.delegados_test_c = datos.delegados,
contacts_cstm.numerodelegados_c=datos.numDelegados,
contacts_cstm.especialidades_multiple_c=datos.especialidades,
contacts_cstm.subespecialidades_multiple_c=datos.subespecialidades,
contacts_cstm.cuentas_test_c = datos.cuentas,
contacts_cstm.num_cuentas_c=datos.numCuentas,
contacts_cstm.dias_ult_visita_c=datos.dias_ultima_visita,
contacts_cstm.prioridad_c=datos.prioridad,
contacts_cstm.prioridad_2_c=datos.prioridad2
where contacts_cstm.id_c='$bean->id' ";
$db->query($sqlUpdate);
}
}
custom/Extension/modules/Contacts/Ext/LogicHooks/LogicResumenContacto.php
<?php
$hook_array['before_save'][]= Array(
99, 'Set Name', 'custom/modules/Contacts/LogicResumenContacto.php', 'LogicResumenContacto', 'before_save'
);
$hook_array['after_save'][]= Array(
99, 'Set Name', 'custom/modules/Contacts/LogicResumenContacto.php', 'LogicResumenContacto', 'after_save'
);
$hook_array['process_record'][]= Array(
99, 'Set Name', 'custom/modules/Contacts/LogicResumenContacto.php', 'LogicResumenContacto', 'process_record'
);
$hook_array['after_relationship_add'][]= Array(
99, 'Set Name', 'custom/modules/Contacts/LogicResumenContacto.php', 'LogicResumenContacto', 'after_relationship_add'
);
$hook_array['after_relationship_delete'][]= Array(
99, 'Set Name', 'custom/modules/Contacts/LogicResumenContacto.php', 'LogicResumenContacto', 'after_relationship_delete'
);
Thank you