12-01-2016, 12:30 PM
(09-22-2016, 06:23 AM)julioval Wrote:(09-21-2016, 07:20 AM)kapsule Wrote: Hola @julioval
Lo primero que debes hacer es registrar el evento correspondiente para el módulo que quieres implementar los nuevos datos. Para ello debes hacer lo siguiente.
1. Crear un fichero <NombreModulo>Handler.php.
2. Una vez creado el fichero, debes definir una clase que herede de VTEventHandler.
<?php
class NombreModuloHandler extends VTEventHandler {
/**
* @param $handlerType
* @param $entityData VTEntityData
*/
function handleEvent($handlerType, $entityData){
$moduleName = $entityData->getModuleName();
if ($moduleName=='NombreModulo'){
switch($handlerType) {
case 'vtiger.entity.beforesave':
$this->beforeSave($entityData);
break;
case 'vtiger.entity.aftersave':
$this->afterSave($entityData);
break;
}
}
}
/**
* @param $entityData
*/
function beforeSave($entityData){
}
/**
* @param $entityData
*/
function afterSave($entityData) {
}
}
?>
3. Ahora le indicamos al sistema coreBOS que queremos activar los eventos aftersave y beforesave para ese módulo en cuestión. Para ello creamos un fichero de actualización coreBOS o un fix directo. Lo que te vaya mejor. En mi caso siempre utilizo el modelo de coreBOSUpdate para centralizar todas las modificaciones.
Vtiger_Event::register(
'NombreModulo', 'vtiger.entity.beforesave',
'NombreModuloHandler', 'modules/NombreModulo/NombreModuloHandler.php'
);
Vtiger_Event::register(
'NombreModulo', 'vtiger.entity.aftersave',
'NombreModuloHandler', 'modules/NombreModulo/NombreModuloHandler.php'
);
4. Una vez registrado los eventos, ya puedes implementar la modificación que necesites. A raíz de estos cambios, cada vez que guardes un registro en el módulo indicado el sistema llamará a estos eventos. Con lo cual lo único que debes hacer es recoger los datos de la variable $entityData y hacer lo que necesites.
- Actualizar una serie de campos.
- Obtener datos de otra entidad y cargarlos sobre el módulo en cuestión
etc...
Si necesitas más ayuda pregunta.
Saludos
Hola @kapsule y gracias.
Que currada de respuesta. Le doy dos vueltas y te comento.
Hola.
Y en esto no se puede hacer con Business Mappings?
Estoy empezando a entrar en este mundo y me parece mas asequible.
Saludos.