Posts: 370
Threads: 112
Joined: Jan 2016
Reputation:
3
09-20-2016, 11:06 AM
(This post was last modified: 12-02-2016, 12:25 PM by julioval.)
Hola,
Cuando creo un quote/SO/oportunity y le pongo una cuenta, determinada información de la cuenta se "hereda" en esos quote/SO/oportunity.
Mi pregunta es: ¿se puede hacer de alguna manera para que se herede en esas quote/SO/oportunity mas información de la cuenta?
Saludos.
Posts: 3,564
Threads: 36
Joined: Apr 2014
Reputation:
49
Posts: 51
Threads: 2
Joined: Apr 2015
Reputation:
13
Hola @julioval
Si que lo puedes hacer. La implementación dependerá de tus necesidades. Es decir, si quieres mostrar esa información adicional una vez seleccionadas un registro deberás utilizar JavaScript. En caso contrario, lo puedes hacer una vez se guarda el registro. Para ello puedes utilizar una clase de tipo VTEventHandler. De esta forma puedes capturar el evento vtiger.entity.aftersave y actualizar las datos que necesites. En mi caso tengo implementados varios cambios de este tipo.
Si necesitas ayuda de cómo implementarlo no dudes en preguntar.
Saludos
Posts: 370
Threads: 112
Joined: Jan 2016
Reputation:
3
(09-20-2016, 08:24 PM)kapsule Wrote: Hola @julioval
Si que lo puedes hacer. La implementación dependerá de tus necesidades. Es decir, si quieres mostrar esa información adicional una vez seleccionadas un registro deberás utilizar JavaScript. En caso contrario, lo puedes hacer una vez se guarda el registro. Para ello puedes utilizar una clase de tipo VTEventHandler. De esta forma puedes capturar el evento vtiger.entity.aftersave y actualizar las datos que necesites. En mi caso tengo implementados varios cambios de este tipo.
Si necesitas ayuda de cómo implementarlo no dudes en preguntar.
Saludos
Y eso como lo hago? Yo querria que se pudiera heredar mas informacion existente en la cuenta, a criterio mio, del tipo: "Importancia", "Forma de pago", etc
Lo de la clase VTEventHandler como funciona? me parece mas asequible.
Saludos.
Posts: 51
Threads: 2
Joined: Apr 2015
Reputation:
13
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
Posts: 370
Threads: 112
Joined: Jan 2016
Reputation:
3
(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.
Posts: 370
Threads: 112
Joined: Jan 2016
Reputation:
3
(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.
Posts: 3,564
Threads: 36
Joined: Apr 2014
Reputation:
49
con un BM de mapeo de campos puedes añadir campos pero solo al crear desde la lista relacionada o acción, la de capturar y rellenar no la hemos creado todavía, pero está en la lista
Joe
TSolucio
Posts: 370
Threads: 112
Joined: Jan 2016
Reputation:
3
(12-01-2016, 12:58 PM)joebordes Wrote: con un BM de mapeo de campos puedes añadir campos pero solo al crear desde la lista relacionada o acción, la de capturar y rellenar no la hemos creado todavía, pero está en la lista
Ok, gracias.
Pues de momento me pondré a intentar actualizar mi instalación, que ya le va haciendo falta por lo que veo.
A ver si consigo todas las funcionalidades.
Algún consejo por dónde tirar?
|