12-14-2022, 07:48 PM
Hola
hay varias maneras de hacer esto.
1.- javascript
Cada módulo tiene un fichero ModuleFile.js que carga código javascript propio del módulo. Como este fichero está dentro del módulo se exporta con el y se copiará al instalarlo en otra instalación. El problema de esto es que has de estás cómodo capturando los eventos de guardar y balancearlos con las validaciones y demás.
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/ModuleFile.js
2.- save_module
Cada módulo tiene un fichero ModuleFile.php que contiene un método llamado save_module() este método se llama al finalizar una operación de "guardar". Tienes a tu disposición todos los campos y sus valores y puedes ejecutar cualquier operación en la base de datos. Es el sitio ideal para unos cálculos rápidos. Recuerda que este método se llama antes de los flujos de trabajo por lo que si actualizas la base de datos con valores calculados has de actualizar también el array column_fields para que los flujos de trabajo "vean" los nuevos valores.
Este fichero, al igual que el de javascript se copia al exportar/importar el módulo con lo que tus cambios se copiarán de una instalación a la otra
el problema que tiene este es que si necesitas cambiar los cálculos tienes que modificar el código
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/ModuleFile.php#L101
3.- eventos
coreBOS tiene una gran variedad de eventos en los que puedes añadir tu código, por ejemplo, tienes un evento `after_save` En el wiki se explica cómo añadir tu código a estos eventos. así podrías crear un script dentro del directorio de tu módulo y crear funciones para diferentes eventos. Después registras estos eventos en el método `vtlib_handler` de ModuleFile.php o en el propio manifest.xml
Este es similar a la opción 2, la ventaja es que tienes más opciones de cuando se ejecuta tu código y que puedes aplicar cambios en otros módulos si es necesario
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/ModuleFile.php#L112
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/manifest.xml#L210
https://discussions.corebos.org/documentation/doku.php?id=en:devel:corebos_hooks
4.- flujos de trabajo
si los cálculos los puedes hacer con flujos de trabajo, entonces puedes crear los flujos de trabajo mediante código en el método `vtlib_handler` al instalar. La gran ventaja de este es que los cálculos los puede controlar/cambiar cualquier usuario administrador en cualquier instalación done los instales.
La desventaja es que es un poco más complejo crear los flujos de trabajo mediante código y no se puede hacer todo lo que se puede hacer con código utilizando flujos de trabajo (aunque en realidad son muy potentes).
https://github.com/tsolucio/corebos/blob/master/build/changeSets/PotentialForecastAmount.php#L52-L66
hay varias maneras de hacer esto.
1.- javascript
Cada módulo tiene un fichero ModuleFile.js que carga código javascript propio del módulo. Como este fichero está dentro del módulo se exporta con el y se copiará al instalarlo en otra instalación. El problema de esto es que has de estás cómodo capturando los eventos de guardar y balancearlos con las validaciones y demás.
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/ModuleFile.js
2.- save_module
Cada módulo tiene un fichero ModuleFile.php que contiene un método llamado save_module() este método se llama al finalizar una operación de "guardar". Tienes a tu disposición todos los campos y sus valores y puedes ejecutar cualquier operación en la base de datos. Es el sitio ideal para unos cálculos rápidos. Recuerda que este método se llama antes de los flujos de trabajo por lo que si actualizas la base de datos con valores calculados has de actualizar también el array column_fields para que los flujos de trabajo "vean" los nuevos valores.
Este fichero, al igual que el de javascript se copia al exportar/importar el módulo con lo que tus cambios se copiarán de una instalación a la otra
el problema que tiene este es que si necesitas cambiar los cálculos tienes que modificar el código
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/ModuleFile.php#L101
3.- eventos
coreBOS tiene una gran variedad de eventos en los que puedes añadir tu código, por ejemplo, tienes un evento `after_save` En el wiki se explica cómo añadir tu código a estos eventos. así podrías crear un script dentro del directorio de tu módulo y crear funciones para diferentes eventos. Después registras estos eventos en el método `vtlib_handler` de ModuleFile.php o en el propio manifest.xml
Este es similar a la opción 2, la ventaja es que tienes más opciones de cuando se ejecuta tu código y que puedes aplicar cambios en otros módulos si es necesario
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/ModuleFile.php#L112
https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/manifest.xml#L210
https://discussions.corebos.org/documentation/doku.php?id=en:devel:corebos_hooks
4.- flujos de trabajo
si los cálculos los puedes hacer con flujos de trabajo, entonces puedes crear los flujos de trabajo mediante código en el método `vtlib_handler` al instalar. La gran ventaja de este es que los cálculos los puede controlar/cambiar cualquier usuario administrador en cualquier instalación done los instales.
La desventaja es que es un poco más complejo crear los flujos de trabajo mediante código y no se puede hacer todo lo que se puede hacer con código utilizando flujos de trabajo (aunque en realidad son muy potentes).
https://github.com/tsolucio/corebos/blob/master/build/changeSets/PotentialForecastAmount.php#L52-L66
Joe
TSolucio
TSolucio