Tutor de tablas de extensión y extensiones de ficha

Las tablas de extensión y las extensiones de ficha son muy útiles para poder personalizar soluciones mediante la herencia. Es decir, podemos "añadir" campos a tablas de soluciones heredadas sin modificar su estructura; es decir, toda la personalización se haría en la solución que hereda la solución a personalizar.

Ejemplo:

Creamos una solución que hereda Velneo vERP, y en ella creamos tablas de extensión y extensiones de ficha para poder añadir campos a las tablas de vERP, sin modificarlas.

Velneo vTutor es una solución única, así que todo lo haremos en la misma solución, pero la operativa no cambia. Es la misma.

Lo objetos los encontrarás en:

Proyecto de datos:

En la carpeta Tablas/Tablas usadas para el tutor de tablas de extensión.

Proyecto de aplicación:

En la carpeta Tutores/Avanzados/Tablas de extensión y extensiones de ficha.

Planteamiento del problema

En vTutor existe una tabla de artículos (ART_M) que contiene los campos siguientes:

Campo

Nombre

Tipo

Longitud

ID

Código

Numérico

3

NAME

Nombre

Alfa128

35

IMG

Foto

Objeto dibujo

8

PDT_SRV

Pendiente de servir

Numérico

4

PRE

Precio

Numérico

4

Lo que queremos es extender la tabla de artículos, añadiendo dos campos más: Alto y Ancho e incluirlos en el formulario de artículos.

Creando la tabla de extensión

En el proyecto de datos creamos una nueva tabla, de tipo maestro de extensión:

El asistente nos pedirá la tabla de datos padre, seleccionaremos la tabla de artículos (ART_M).

Una vez finalizado el asistente, se creará una tabla con el identificador EXTENSIONES_DE_ARTICULOS con un único campo: ID. Es el campo enlazado a la tabla de artículos y, a su vez, el propio ID de la tabla, que serán siempre los mismos en las dos tablas. La extensión de ficha del artículo 2 tendrá ID 2.

Además, veremos que automáticamente nos ha creado también los enlaces a los plurales que tiene la tabla ART_M.

Hemos cambiado el identificador de la tabla por ART_M_EXT.

Y a la tabla le hemos añadido dos campos de tipo numérico de 3 bytes sin decimales:

ALT (Alto)

ANC (Ancho)

LAR (Largo)

Si ahora editamos la tabla de artículos, veremos que nos ha creado un puntero virtual a la tabla de extensión.

Creando el formulario de artículos y la extensión de ficha

Hemos duplicado el formulario ART_M que ya teníamos y a la copia la hemos llamado ART_M_EXT.

En el formulario ART_M_EXT Le hemos añadido un nuevo subobjeto de tipo extensión de ficha con las siguientes propiedades:

Propiedad

Valor

Identificador

ART_M_EXT

Nombre

Extensión de artículos

Modo

Campo puntero *

Campo puntero

EXTENSION_ART_M_EXT

Tabla

ART_M_EXT

(*) Se resuelve con el campo puntero creado en la tabla ART_M cuando creamos la tabla de extensión.

Un punto donde suelen surgir muchas dudas es en las propiedades Alta ficha principal, Baja ficha principal y Modificación ficha principal, así que las explicaré una a una.

Alta ficha principal

En esta propiedad se debe configurar cuándo se ha de dar de alta la ficha de extensión cuando se crea un nuevo artículo. Par ello debemos tener en cuenta que, para poder dar de alta la ficha de extensión ha de existir el artículo, si no se ha creado aún el artículo, no se podrá crear la ficha de extensión porque su ID estará vacío (recordemos que el ID de la ficha de extensión es el propio enlace al artículo).

Según la anterior, de este evento activaremos solamente la propiedad alta de ficha de extensión permitida.

Baja ficha principal

En esta propiedad se debe configurar cuándo se ha de borrar la ficha de extensión. Esta debe ser borrada antes del borrado del artículo, ya que, si se borra antes el artículo, éste no se podrá borrar porque tiene una ficha de extensión.

Según lo anterior, en este evento activaremos las propiedades Previo a la operación principal y Baja ficha extensión permitida.

Modificación ficha principal

En esta propiedad se debe configurar cuándo se ha de modificar la ficha de extensión. Siempre es preferible hacerlo después de la modificación del artículo.

Según lo anterior, en este evento activaremos las propiedades Previo a la operación principal y Modificación ficha extensión permitida. También hemos activado la propiedad Alta de ficha de extensión permitida para que, si hemos dado de alta algún artículo y tenía ficha de extensión, podamos crearla.

Creando los controles

Para cada campo de la tabla de extensión crearemos un control de tipo nombre de campo y otro de tipo edición numérica. La explicación la haré con uno de los campos, pues la operativa es idéntica por cada campo.

Creando el control nombre del campo

En el formulario añadimos un control de tipo nombre de campo.

En la propiedad Ficha de extensión seleccionamos la ficha de extensión que hemos creado en el formulario (ART_M_EXT). Una vez hecho esto, en la propiedad Campo ya tendremos acceso a los campos de la tabla de extensión, seleccionaremos el campo ALT (Alto).

Creando el control de edición numérica

En el formulario añadimos un control de tipo edición numérica.

En la propiedad Ficha de extensión seleccionamos la ficha de extensión que hemos creado en el formulario (ART_M_EXT). Una vez hecho esto, en la propiedad Contenido, si abrimos el asistente de fórmulas veremos que al despegar los campos desplegará los de la ficha de extensión. Seleccionaremos el campo #ALT (Alto).

Hacemos esto mismo con los otros dos campos.

Por último, hemos duplicado la rejilla de artículos añadiendo estos tres campos de la tabla de extensión.

Probando el tutor

Simplemente ejecutarlo y cargará la rejilla de artículos, juega a crear, modificar y borrar alguna ficha.