Como comenzar el desarrollo de software empresarial con Velneo V7 y no morir en el intento – III

Continuando con nuestro mini curso de “Desarrollo de software empresarial con Velneo V7” hoy vamos a ver como creamos actualizaciones y eventos de tabla (o triggers) en nuestras tablas.

Por si tienes que refrescar un poco lo visto en los capítulos anteriores, recuerda que en el primero vimos un poco de teoría y cómo crear los proyectos (tanto de datos como de aplicación) y en el segundo vimos cómo crear las tablas y sus campos. Arrancamos el tercer capítulo en 3, 2, 1…

COMO COMENZAR EL DESARROLLO DE SOFTWARE EMPRESARIAL CON VELNEO V7 Y NO MORIR EN EL INTENTO – III

Primero como siempre un poco de teoría…. que nunca viene mal.

¿Qué es una actualización en Velneo V7?

Según la definición de la zona info de Velneouna actualización es un subobjeto de tabla que permite actualizar el valor de los campos de un registro de una tabla enlazada cada vez que se produce un alta, una modificación o una baja en la tabla origen en la que definimos las actualizaciones.”

¿Qué es un evento de tabla o trigger en Velneo V7?

Pues también según la zona info de Velneo V7un trigger es un proceso definido por el programador que es ejecutado automáticamente al producirse el evento al que hace referencia.”

Aquí es cuando empieza a sonar el canto de los grillos y nos hemos quedado un poco como estábamos… con la boca abierta. Para entendernos un trigger no es mas que un proceso que se lanza en el servidor al dar de alta, modificar o eliminar un registro… ahhhhhhh ahora si….

Desarrollo de software en Velneo V7: Planteamiento

Vamos a suponer que tenemos una tabla de “Albaranes de compra” con sus correspondientes líneas. Además tenemos también una tabla de “Artículos” y una de acumulados de artículos por mes llamada “EST_ARTICULO“. Cada vez que introduzcamos una línea, la editemos o la demos de baja, queremos que se actualicen datos de otras tablas relacionadas con dicha línea. Recapitulemos… tablas existentes:

  • Cabecera de albaranes de compra
  • Líneas de albaranes de compra
  • Artículos
  • Acumulado mensual de artículos (acumularemos las compras del artículo por año y mes). En esta tabla tendremos un índice de clave única llamado “Art” que contendrá los campos: Artículo, Año y Mes

En la tabla de “Lineas de albarán” tenemos un enlace maestro tanto a la tabla de “Albaranes” como a la tabla de “Artículos”. Además hemos creado un campo de tipo “Indirecto real” a la tabla “EST_ARTICULO“. Esta es su resolución:

Desarrollo de software: Puntero virtual

Creando las actualizaciones

Para crear una actualización, tendremos que entrar en el panel de subobjetos de la tabla y pulsar en la opción de “Actualización“.

Una vez creada tendremos que darle un nombre e indicarle cuál es el campo enlazado de la tabla sobre la que vamos a realizar las actualizaciones (en la imagen de ejemplo hemos creado una actualización a la tabla de “Albaranes de compra“.

Una vez creada la actualización, pulsamos sobre el botón + para añadir un nuevo subobjeto. En este caso un “Componente de actualización“.

En el ejemplo queremos que cada vez que introduzcamos una línea, se “actualicen” automáticamente los valores de los campos “IVA“, “Recargo” y “Total” de la cabecera del albarán. Para ello creamos 3 componentes de actualización (vemos el ejemplo de como se crearía el componente para el “Total Bruto”, el resto se crearían del mismo modo).

Tendremos que darle, como siempre, un “Identificador” al componente, así como indicarle el campo que queremos actualizar (en este caso el “Total Bruto”). Podremos ponerle una condición para que se lance la actualización (aunque no es obligatorio). La mas interesante de las propiedades es “Modo“: Tenemos dos posibles formas en las que el componente modifica el campo siempre que se cumpla la condición para modificar:

  • Acumulado: El componente acumula en el campo destino el valor resuelto en la fórmula.
  • Absoluto: El componente sustituye en el campo destino el valor original por el calculado en la fórmula

Por último habrá que indicarle en la propiedad “Fórmula” el campo o vamos que se acumulará o modificará en el campo destino (dependiendo del modo que se haya indicado).

NOTA

Como bien indica Fernando García, si queremos actualizar los registros de una tabla enlazada a través de un puntero real antes de lanzar la actualización tendremos que comprobar que el registro a actualizar exista. En caso de no existir tendremos que darlo de alta por proceso. Esto se resuelve con el siguiente apartado.

Creando los eventos de tabla o triggers

Boton Triggers Pulsando sobre este botón, tendremos la opción de crear un nuevo trigger.

Tipos de Triggers

Cómo podemos observar, los eventos de tabla los tenemos de tres tipos: “Alta“, “Modificación” y “Baja“. Además estos 3 tipos a su vez se dividen en otros 3. Es importante saber cuando se lanzan los eventos:

  • Anterior: El proceso se lanza ANTES de que la ficha se haya dado de alta, modificado o dado de baja
  • Interno: El proceso es disparado DESPUÉS de que la ficha haya sido guardada en disco y ANTES de disparar las actualizaciones.
  • Posterior: El proceso es disparado DESPUÉS de que la ficha haya sido guardada en disco y DESPUÉS de disparar las actualizaciones.

En el ejemplo que vamos a ver, una vez creada la ficha si hemos introducido descuentos al artículo, se actualiza la ficha de ARTICULO-PROVEEDOR con los últimos valores introducidos en la línea de compra

Ejemplo trigger

¿Qué te ha parecido el artículo? ¿Dudas?, ¿Preguntas? Déjame un comentario mas abajo.

Francisco José Vila Martín
ayudavelneo@ayudavelneo.com

Francisco José Vila es programador certificado y formador en la plataforma de desarrollo de aplicaciones empresariales Velneo V7. Es autor del blog Ayudavelneo desde donde ayuda a desarrolladores que se están iniciando en Velneo V7 a acortar su curva de aprendizaje para que obtengan beneficios y sean rentables desde el minuto 1. Ampliar información

6 Comments
  • Fernando García
    Posted at 11:40h, 18 Junio Responder

    Buen artículo. Sobre todo la nota del trigger que hay que ejecutar antes de que la actualización funcione 😉

    Enhorabuena y un saludo.

    • fjvila
      Posted at 13:39h, 18 Junio Responder

      Gracias por el detalle Fernando… muchas veces doy por supuesto cosas que no son tan obvias.

      • veldevelop
        Posted at 04:40h, 19 Junio Responder

        Ese es el principal fallo de la gran cantidad de información que podemos encontrar. Cuando eres capaz de montar el puzle siempre te falta alguna pieza. Si eres avispado seguro que lo encuentras si eres torpe como yo el cabezazo está garantizado.

  • Veldevelop
    Posted at 12:46h, 18 Junio Responder

    Lamento mucho tener que decirle que me rindo a sus pies. Vaya articulazo. Si señor, a si es como se explican, documentan y se ponen en practica las cosas. Amigo este es el modo en el que Velneo debería de aprender a documentar. Para mi está a la altura de los tutoriales y vídeos de arboleya. De este modo lo entiende hasta un torpe como yo. MIS FELICITACIONES, TE ESTAS SUPERANDO TU A TI MISMO UNA COSA MALA. GRACIAS, GRACIAS Y GRACIAS.

    Lo único que se puede criticar y no es criticable en absoluto, seria un video tutorial del articulo, por lo demás simplemente Genial.

    P.D: No te canses nunca de nosotros. Sigue así.

    • fjvila
      Posted at 13:43h, 18 Junio Responder

      Hola Rodolfo:

      Ten en cuenta que Velneo se dirige a todo tipo de desarrolladores (tanto “novatos” como “expertos” por lo que sus videos o tutoriales tienen que ser algo más genéricos.

      Mi nicho son los desarrolladores que acaban de conocer la plataforma (o llevan poco tiempo con ella) por lo que tengo que ser mas detallista.

      Un saludo y gracias por los comentarios.

      pd. Los videos… de momento los miércoles de 17 a 18 horas

  • Javier
    Posted at 13:29h, 18 Junio Responder

    Enhorabuena por el articulo!, pronto lo pondré en practica, y muchas gracias por seguir al pie del cañón. Ahora mismo es la web de referencia y la más viva de la comunidad de Velneo.

    Saludos y gracias de nuevo.

Post A Comment