09-21-2016, 07:20 AM
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
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