Tabla de extensión

Buenos días

A ver si me podéis ayudar con una cuestión que no se me ocurre como resolver.

Estoy integrando el módulo de contabilidad de vERP en mi sistema y quiero añadir ciertas funcionalidades al modificar la tabla APU_C (Apuntes). Para ello he creado una tabla de extensión. El caso es el siguiente:

Necesito crear una actualización desde APU_C a una de las tablas de mi sistema cuando marco el apunte como punteado (Campo PUN). Lo quiero hacer sin tocar la tabla APU_C para que si actualizo vERP no me afecte. Había pensado hacer la actualización desde la tabla de extensión, pero me ocurre lo mismo. Para disparar la actualización necesito que se cambie el valor del campo PUN. Si duplico el campo en la tabla de extensión no tengo más forma de actualizarlo que con un trigger desde APU_C, asi que estoy en las mismas. Tengo que tocar la tabla APU_C de todas formas.

¿Se os ocurre la forma de hacerlo?

Gracias y espero haberme explicado

Un saludo

Gonzalo Torre

Hola

Aunque esto no contesta tu respuesta

Yo empece heredando lo del verp, pero ahora con muchas cosas que le falta, mejor he decidido modificar el vERP a mi gusto agregar y quietar segun mi necesidad, y acuando salga actualizaciones del mismo, puedes hacerla segun el registro que velneo envia

saludos

Hola Gonzalo.

Habrá que ver qué te responden en Soporte de VERP, ya que yo tampoco veo una fácil solución. ¿Cómo puedo saber que se está actualizando un registro de APU_C si no puedo tocar nada de esa tabla?

Si yo diseñara una base de datos para ser heredada por otros pondría enganches en todos los Triggers de las tablas.
Por ejem:
Trigger anterior a Modificar -> Llamar a una función enganche FUN_TABLA01_TRIGGER_PRE_MODI(ID)
La función FUN_TABLA01_TRIGGER_PRE_MODI() está vacía en una carpeta del proyecto llamada PERSONALIZACION_USUARIO.
Rellenas la función FUN_TABLA01_TRIGGER_PRE_MODI(ID) con tu código personalizado.

Cuando se actualiza VERP solo tienes que volver a sobrescribir la carpeta PERSONALIZACION_USUARIO del proyecto de datos.

Saludos
Paco Satué

La respuesta es…puntos de inserción en procesos.

Yo lo tengo montado con un sistema de hooks (idea del Wordpress), pero claro es mi propio proyecto y yo lo defino.
Aquí es volvemos a la respuesta de Paco, tendría que ser Velneo el que pusiera ese “hook” en los triggers y tu enganchar tu proceso con ese “punto de inserción”.

De todas formas, busca en Google “velneo actualizaciones” y te saldará un post acerca de cuando se lanzan las actualizaciones. Usando la fórmula condición puedes forzar el lanzamiento de la actualización.
Ej.
Condición #ID=#ID se lanzaría siempre la actualización desde la tabla de extensión (en teoría)

Sin un sistema claro para todos estos temas, se hace muy muy dificil heredar vERP sin tocarlo y que la cosa funcione fluida.

Al final te cansas de limitaciones y haces un fork, porque antes o después necesitas meter triggers, actualizadores o índices.

Se necesita algún mecanismo de “inserción” de código en triggers y procesos de proyectos heredados, algo del estilo que plantean Paco o Manuel, sin esto, de verdad que cualquier problemilla se convierte en un mundo por no poder tocar los proyectos originales.

Hola a todos

Me imaginaba la respuesta que me ibais a dar, pero no por ello es menos frustrante. Me tocará tocar los triggers y apuntarme las modificaciones para futuras versiones.

De momento no me planteo hacer un fork. Sólo voy a utilizar la parte del módulo de contabilidad y de momento no la veo suficientemente madura para empezar a hacer un proyecto separado. Más adelante seguro que lo hago.

Gracias de todos modos

Un saludo

Gonzalo Torre

Hola , estoy con ustedes, yo estoy llevando varios proyectos con VERP , y me encuentro con muchas trabajas con el tema de las tablas de extensión , al final te toca modificar las tablas del verp y apuntártelo todo , a ver si en próximas versiones mejoran este tema…

Buenos días

Refloto este tema para ver si Manuel de Wikan lo ve. Seguro que si :slight_smile:

Me gustaría que me dijeras, si es posible, como tenías montado lo que comentabas de los hooks en los procesos. Estoy desarrollando un nuevo sistema y para las personalizaciones me vendría genial tener montado algún sistema para inyectar código en determinadas partes del programa.

Gracias y un saludo

de este problema surgió esta idea:

https://soporte.velneo.es/entries/24530092-Puntos-de-insercion-en-procesos-y-manejadores-de-evento

y os animo a votarla. Trata de poder insertar tu código en el código de una aplicación heredada por medio de un punto de inserción.
Solventaría la creación de tablas extendidas (por medio de puntos de inserción de código en triggers), validación de formularios, añadir funcionalidad a procesos (por ejemplo, a un proceso de facturación), etc…

Espero os resulte útil la idea y Velneo la valore.
Un saludo.

Votada. De todas formas mucho me temo que la espera es en vano. Estoy probando a hacerlo con javascript, pero con mis conocimientos creo que lo llevo claro.

Lo que voy haciendo lo pongo en este hilo

https://velneo.es/foros/topic/proceso-javascript/