Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[RESUELTO] - Heredar mas información de la cuenta
#1
Thumbs Up 
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.
Reply
#2
¿para qué?
Joe
TSolucio
Reply
#3
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
Reply
#4
(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.
Reply
#5
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
Reply
#6
(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.
Reply
#7
(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.
Reply
#8
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
Reply
#9
(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?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)