• No results found

Employee Testing and Selection

In document How To Manage A Business (Page 98-152)

Conceptos a tratar

• Creación de punteros indirectos (reales y virtual). • Enlaces singular de plural por índice.

• Actualizaciones.

• Triggers (procesos de tabla).

Descripción

El ejemplo siguiente muestra el diseño del módulo de ventas de una gestión comercial. Se van a tener en cuenta las siguientes consideraciones: • Crearemos unos contadores, tanto de albaranes como de facturas, para

que se vayan incrementando a medida que se crean nuevos albaranes y facturas.

• Cada cliente tendrá un descuento particular para cada familia de artículos. • Cada artículo tiene una tarifa concreta.

• Si cambiamos la fecha de un albarán, ésta deberá modificarse en todas las líneas de ese albarán.

• La aplicación será multialmacén, es decir, existirán diversos almacenes que generarán sus propios albaranes y existencias de artículos.

Esquema de la aplicación

En este caso, al ser un diseño con muchas tablas, iremos creando diferen- tes “sub-esquemas” o módulos del esquema de tablas general de la apli- cación. Es decir, en vez de tener todas las tablas del proyecto y sus res- pectivos enlaces en un único esquema de tablas como se venía haciendo hasta ahora, iremos creando más esquemas de tablas dentro del proyecto para así poder trabajar más cómodamente.

Comenzamos por la creación del esquema correspondiente a los contado- res para los albaranes, las facturas y las series de facturación. Dentro del área correspondiente al esquema de tablas creamos las siguientes tablas: AÑOS, SERIES DE FACTURACIÓN, CONTADORES, CLIENTES, ALBARA- NES y FACTURAS, todas de tipo maestro normal con clave numérica, ex- cepto CONTADORES, que será de tipo histórico.

¿Cómo las relacionamos? Comencemos con la tabla SERIES DE FACTU- RACIÓN. Sus registros constan de un código y una letra y se usan para cla- sificar las facturas.

Por otro lado, en la tabla FACTURAS guardaremos los datos generales de cada factura. Una factura estará compuesta por albaranes, mientras que cada albarán estará compuesto por líneas, es decir, la tabla ALBARANES

08

Desarrollo completo de una aplicación

será histórica de FACTURAS, mientras que LÍNEAS será histórica de AL- BARANES (LINEAS la crearemos más adelante).

En CLIENTES guardamos información acerca de cada cliente, siendo CLIENTES maestra de ALBARANES. Por otro lado, haciendo SERIES DE FACTURACIÓN maestra de CLIENTES podremos obtener todos los clientes con los que hemos trabajado un año determinado.

Entre las tablas AÑOS y SERIES DE FACTURACIÓN tenemos un doble plu- ral (los años de la serie de facturación, la serie de facturación del año), que resolvemos gracias a una tabla histórica intermedia: CONTADORES. FACTURAS y ALBARANES también serán históricas de AÑOS y de SERIES DE FACTURACIÓN.

Seleccionamos la opción de menú Esquema > Cambiar nombre (o pulsamos la tecla F2) y en el cuadro de diálogo que se muestra, llamado Esquema, sus- tituimos en la propiedad Descripción la denominación “Esquema de tablas” por “Esquema contadores”. En dicho cuadro de diálogo podemos incluir den- tro de la propiedad Observaciones una serie de comentarios que permitan al programador interpretar más fácilmente el esquema en sucesivas ocasiones:

En la tabla CONTADORES creamos dos campos numéricos de longitud 3: CONTADOR-ALB y CONTADOR-FAC, que serán los que almacenen los va- lores de los contadores de albaranes y facturas, respectivamente. En la tabla FACTURAS creamos el campo NUM-FAC (Número de factura, numérico de longitud 3) que almacenará el número de factura.

En la tabla ALBARANES añadimos el campo BASE (Base total, numérico de longitud 3, con 2 decimales y con signo) que almacenará el importe total del

albarán, y el campo NUM-ALB (Nº Albarán, numérico de longitud 3) que al- macenará el número de albarán.

En la tabla CLIENTES creamos el campo ACUM-VENTAS (Acumulado de ventas, numérico de longitud 5, con 2 decimales y con signo) que será el encargado de guardar el total de ventas del cliente.

Con este esquema de tablas es posible crear dos punteros indirectos. Di- chos enlaces se crean en esquemas que contienen tablas unidas por “bra- zos de pulpo”. Por ejemplo, si observamos las tablas FACTURAS y CON- TADORES podremos ver dos brazos (uno sería FACTURAS/AÑOS/CONTA- DORES, y otro FACTURAS/SERIES DE FACTURACIÓN/CONTADORES). Por tanto es posible crear un enlace a tabla de datos indirecta desde FAC- TURAS a CONTADORES. Como en otras ocasiones, debemos modificar un índice de la tabla CONTADORES, de modo que abrimos el índice Año y le añadimos el campo Seriesdefact.

También podemos abrir el índice Seriesdefact y añadirle el campo Año.

08

Desarrollo completo de una aplicación

A continuación creamos el campo PUNT-CONTADORES en la tabla FAC- TURAS, que tiene las siguientes propiedades:

Pulsando el botón Resolución se resuelve uno de los índices para crear el

enlace, hagámoslo con el índice Año. La parte Año del índice se resuelve con el Año de la factura, mientras que la parte Series de facturación se re- suelve con la Serie de facturación de dicha factura.

De la misma manera, entre la tabla ALBARANES y la tabla CONTADORES se puede establecer otro enlace indirecto, ya que están unidas por los bra- zos CLIENTES/FACTURAS/AÑOS/CONTADORES y CLIENTES/SERIES DE FACTURACIÓN/CONTADORES, respectivamente.

En este caso, como ya hemos modificado los índices de la tabla CONTA- DORES, sólo queda crear en la tabla ALBARANES un nuevo campo, llama- do PUNT-CONTADORES, que será el del enlace indirecto y tendrá las mis- mas propiedades que el campo de igual nombre declarado en la tabla FAC- TURAS. Pulsamos el botón Resolución, resolviendo el Año con el Año del albarán y la Serie de facturación con la Serie de facturación del albarán. Con esto tenemos creado el segundo puntero indirecto, quedando comple- to el Esquema contadores definido anteriormente:

08

Desarrollo completo de una aplicación

Para acumular el valor de los contadores de albaranes y facturas creamos dos triggers (procesos de tabla) dentro de la tabla FACTURAS. Para ello se- leccionamos, dentro de la tabla FACTURAS, la subcarpeta Procesos y pul- samos el botón Insert. Aparecerá el cuadro de diálogo Nuevo manejador de

evento de: Facturas, en el que seleccionamos la opción Anterior a un alta de ficha:

Al pulsar el botón Aceptar se crea en la subcarpeta Procesos el trigger in- dicado.

Si hacemos doble clic sobre el trigger recién creado aparecerá el cuadro de diálogo Proceso: Facturas->Anterior a un alta de ficha. En él escribiremos el proceso a realizar cuando se cree una nueva factura.

El funcionamiento del proceso es el siguiente: si no existe un valor en el campo NUM-FACT, modificamos la ficha de maestro a través del puntero indirecto a la tabla CONTADORES, para incrementar en uno el campo CON- TADOR-FAC (el contador de facturas) y a continuación almacenar dicho va- lor del contador en la variable local Contador, que es la que dará su valor almacenado al campo NUM-FAC de la tabla FACTURAS.

De igual manera, pulsamos de nuevo la tecla insert en la subcarpeta Pro-

cesos de la tabla FACTURAS. Aparecerá otra vez el cuadro de diálogo Nuevo manejador de evento de: Facturas y seleccionamos la opción An- terior a una modificación de ficha. Al hacer doble clic sobre el trigger crea-

do aparece el cuadro de diálogo Proceso: Facturas-> Anterior a una mo-

dificación de ficha, en el que escribimos un proceso igual al creado en el

trigger anterior al alta de ficha. De esta manera los contadores podrán ser modificados tanto en el alta como en la modificación de una ficha de FAC- TURAS.

Ahora crearemos una actualización en ALBARANES, de modo que sobre la subcarpeta Actualizaciones de la tabla ALBARANES pulsamos la tecla In-

sert, apareciendo el cuadro de diálogo Actualización desde Albaranes. Co-

mo Campo enlazado seleccionamos el campo CLIENTES de la tabla:

Pulsamos el botón Añadir y aparecerá el cuadro de diálogo Componen- te de Actualización. En él declaramos las siguientes propiedades:

08

Desarrollo completo de una aplicación

Este componente de actualización incrementa el valor del acumulado de ventas de un cliente (campo ACUM-VENTAS de la tabla CLIENTES) con el valor del importe de la base del albarán (campo BASE-TOT) de la tabla AL- BARANES.

Las actualizaciones presentan una gran ventaja frente a los triggers: sólo in- dicamos qué hacer en el alta. La propia actualización se encarga de resol- ver lo que tiene que hacer en la modificación y en la baja.

En la misma tabla de ALBARANES crearemos tres triggers: Anterior a un al-

ta de ficha, Anterior a una modificación de ficha y Posterior a una modifica- ción de ficha. Los dos primeros triggers, que son iguales, tienen una es-

tructura parecida a la de los triggers correspondientes a la tabla FACTU- RAS, con la salvedad de que en este caso trabajamos con el contador de albaranes:

El tercer trigger (Posterior a una modificación de ficha) es un proceso que modifica la fecha de las líneas del albarán con la fecha correspondiente al campo FECHA del albarán:

Desde la tabla ALBARANES realizamos la facturación, para lo cual hacemos uso de procesos y de tubos.

Ahora crearemos un nuevo subesquema de tablas, que llamaremos “Es- quema ventas”.

08

Desarrollo completo de una aplicación

Dentro del Esquema ventas, crearemos las siguientes tablas: DESCUEN- TOS, FAMILIAS, ARTÍCULOS y LINEAS. A estas tablas añadimos las tablas ALBARANES y CLIENTES, creadas anteriormente. Para ello hacemos doble clic con el botón izquierdo del ratón sobre los iconos que aparecen en el área Tablas no usadas, situada en la parte inferior izquierda ( ). Dicho panel muestra las tablas del proyecto que no están siendo utilizadas en el Esquema de tablas actual. Al hacer doble clic aparecerán las tablas ALBARANES y CLIENTES en el esquema de tablas Esquema ventas, sien- do su diseño el siguiente:

En la tabla FAMILIAS guardaremos los distintos tipos o familias de artículos (éstos presentan una estructura arbolada, por ejemplo: tornillos de hierro de métrica 6, tornillos de hierro de métrica 10, tornillos de aluminio de métrica 6, tornillos de aluminio de métrica 10, etc.).

Para cada pareja cliente - artículo aplicaremos un descuento distinto, de modo que entre FAMILIAS y CLIENTES hay un doble plural que resolvemos mediante la tabla histórica DESCUENTOS.

CLIENTES será maestro de ALBARANES, mientras que FAMILIAS lo será de ARTÍCULOS. Entre ALBARANES y ARTICULOS tenemos un doble plural que resolvemos aprovechando la tabla histórica LINEAS.

Ahora añadiremos un puntero indirecto que enlace LINEAS y DESCUEN- TOS, tablas que se relacionan por los brazos LÍNEAS/ALBARANES/CLIEN- TES/DESCUENTOS y LÍNEAS/ARTÍCULOS/FAMILIAS/DESCUENTOS. Creamos el campo PUNT-DTOS en la tabla LINEAS, enlazado a tabla de da- tos indirecta y lo resolvemos. Seguidamente añadimos el campo PORC- DTO en la tabla DESCUENTOS (numérico de longitud 2, con 2 decimales) y en la tabla LINEAS el campo PORC-DTO (Porcentaje de descuento, numé- rico de longitud 2, con 2 decimales y con signo, y que tiene como conteni- do inicial el campo PORC-DTO de la tabla DESCUENTOS obtenido a través del enlace indirecto).

También creamos una actualización desde LINEAS a la tabla DESCUENTOS que, utilizando el campo enlazado PUNT-DTOS de la tabla LINEAS, pasa el valor del campo PORC-DTO de la línea al PORC-DTO del descuento. Ahora crearemos otro sub - esquema: Esquema Almacenes, en el que de- claramos las tablas ALMACENES y EXISTENCIAS y añadimos las tablas AL- BARANES, LÍNEAS y ARTÍCULOS (que ya existían). También hemos de es- tablecer un enlace indirecto desde la tabla LINEAS a la tabla EXISTENCIAS.

08

Desarrollo completo de una aplicación

Ahora creamos el “Esquema Tarifas”, en el que mantenemos las tablas del Esquema ventas, incluimos la tabla CLIENTES y añadimos las tablas TARI- FAS y TARIFAS DE VENTA:

Entre las tablas TARIFAS y ARTICULOS hay un doble plural, que resolvemos mediante la tabla TARIFAS DE VENTA, además CLIENTES será histórica de TARIFAS.

Creamos también un enlace indirecto entre LINEAS y TARIFAS DE VENTA, para lo cual en TARIFAS DE VENTA modificamos uno de sus índices (TARI- FAS o ARTICULOS), declarándolo de clave única y añadiéndole el campo contrario:

Ahora, en la tabla LINEAS, creamos el campo PUNT-TARIFAS-VTA que tie- ne las siguientes propiedades:

Resolvemos el enlace:

08

Desarrollo completo de una aplicación

De esta manera tenemos definido en enlace indirecto. Al ser virtual Veláz- quez lo representa con un color gris oscuro. Lo hemos definido virtual ya que no es necesario permanentemente (es una lectura puntual).

In document How To Manage A Business (Page 98-152)

Related documents