Una aplicacion de gestión desde cero (iii)

Voy a continuar analizando la aplicación y añadiendo tablas necesarias para completarla.

En nuestra actividad tendremos tanto clientes como proveedores, transportistas, contactos…. todos ellos los englobaremos dentro de la tabla ENTIDADES y una maestra de ella FORMAS JURIDICAS. Para saber qué tipo de relación existe entre nosotros ( que también somos en esencia una ENTIDAD )  y las demás entidades, usaremos dos tablas más, TIPOS DE RELACIONES y RELACIONES,  esta última actuando como histórica de TIPOS DE RELACIONES  y ENTIDADES.

Esquema entidades

Esquema básico de Entidades y de las relaciones entre ellas

Desde el proceso ON-INIT-MAP-SERVER se llama a procesos que dán de alta varios registros en estas tablas para tenerlos ya operativos.

Proceso alta

Proceso para dar de alta los principales TIPOS DE RELACIONES.

En la tabla ENTIDADES he introducido un campo booleano que he llamado NOSOTROS. Si nos consideramos como una entidad más, podemos guardar nuestros datos en un registro de esa misma tabla. Además esto nos servirá para hacer ciertas cosas más adelante. Para forzar que sólo hay un registro de clave única que sea nuestra propia empresa, he creado un índice de clave única formado por el campo %CODIGO% y con campo condición para indexar %NOSOTROS%   y estado del campo con el chek marcado.

También he creado un booleano %ALMACEN% para marcar aquellos almacenes que son nuestro (la aplicación pretende ser multialmacén, aunque no sé si lo lograré je je ) y que nos permitirá hacer cosas interesantes con los traspasos de material de un almacén a otro y con las mermas que tengamos de material ( robo, rotura, defecto…). Por tanto, al dar de alta un almacén nuevo, debemos forzar el alta de los datos de dicho almacén en la tabla de ENTIDADES por ejemplo en un trigger de tabla, que es el lugar más apropiado para hacer esto.Aprovecharemos el mismo proceso para dar de alta en su histórico de EXISTENCIAS  todos los artículos que tengamos.

Proceso posterior al alta de la tabla ALMACENES

Así en el proceso de inicio de la aplicación podré lanzar un proceso On-Init en el que compruebe si tiene nuestro datos fiscales y si no es así forzar al usuario a introducirlos . Se pueden incluir tanto en el botón aceptar como en el cancelar un proceso que controle si se han escrito los campos fundamentales en la ficha y si no es así retornar no.

Proceso para llamar al formulario con los datos de la empresa

Ya habíamos hecho las tablas de ALMACENES, ARTICULOS  y EXISTENCIAS. He añadido algunos campos e índices que podéis ver en el mapa.

Cuando nos planteamos hacer una aplicación de gestión nos acabamos dando cuenta que tanto los ciclos de compra como de venta acaban siendo una imagen especular uno del otro. En el de compras, y siguiendo todo el ciclo tenemos: ofertas,presupuestos, pedidos, albaranes y facturas o tickets y en el de ventas lo mismo pero a la inversa. Resumiendo mucho, en todos vamos a usar una serie de documentos que según vendamos o compremos tienen una implicación u otra. Si vendemos, nuestro stock disminuye pero aumenta nuestra caja y si compramos, nuestro stock aumenta y disminuye nuestra caja. Esto muy resumidamente.

Por tanto podemos usar TIPOS DE DOCUMENTOS  que implican TIPOS DE MOVIMIENTO . Si consideramos que en la compra y en la venta hay un origen y un destino de los artículos comprados , nuestra empresa será:

  • En la compra: el proveedor es ORIGEN  y nosotros DESTINO , por tanto aumenta nuestro stock, SUMA EN DESTION Y RESTA EN ORIGEN
  • En la venta: nosotros somos ORIGEN  y el cliente es DESTINO, por tanto disminuye nuestro stock, RESTA EN ORIGEN  y SUMA EN DESTINO.

Por esto en la tabla TIPOS  DE MOVIMIENTO  he introducido dos campos booleanos para tener esa información. Esto va a tener muchas implicaciones a posteriori cuando veamos que usamos una única tabla para la cabecera de un DOCUMETO sea de venta o de compra   y una única tabla para todas las lineas de esos cabeceras

Un tipo de documento implica suma o resta en origen y destino

También he creado unos procesos  que se llaman desde el ON-INIT-MAP-SERVER  para dar de alta registros en estas tablas TIPOS DE MOVIMIENTOS y CLASES DE DOCUMENTOS,  siendo los tipos de movimiento principales, las compras, las ventas , los internos ( traspasos entre almacenes por ejemplo ) y las mermas.

Altas de Tipos de Movimientos principalmente usados en gestión

Vamos ya a unir todas las tablas que tenemos y crear alguna más que iremos utilizando con el desarrollo posterior.

El esquema básico quedaría así:

Esquema básico de compras, ventas y movimientos

En la tabla LINEAS además de varios campos, he introducido las actualizaciones a las EXISTENCIAS, dependiendo del TIPO DE DOCUMENTO  de la CABECERA usando dos campos de tipo puntero indirecto y también las actualizaciones de las bases imponibles y de los valores de los impuestos en una nueva tabla IMP CAB. Uso esta tabla porque siempre me he encontrado con que si yo tenía previsto que se usaran tres tipos de IVA, por ejemplo, tenía que crear tres campos Base Imponible y valores iva en las cabeceras. Pero si el cliente me llamaba después de un tiempo y me pedía otro IVA  más, tenía que hacer modificaciones en el mapa. Con la introducción de esta tabla y algunos cambios que haremos posteriormente, creo que he resuelto ese tipo de problema y alguno más.

Mirad con detenimiento los punteros indirectos desde la tabla LINEAS  y las actualizaciones desde la misma tabla.

Os dejo aquí el mapa para que lo vayáis estudiando  y criticando , por supuesto.

Un saludo.

Anuncios

Acerca de Agustin
Velneoadicto. Tuve la grandísisma suerte de que me enseñaran los más grandes: Juan Muñoz-Cobos , Jesús Arboleya y Jesús Inclán..

2 Responses to Una aplicacion de gestión desde cero (iii)

  1. JYocky says:

    Aqui toy, Este tema esta muy sabroso, y estoy aprendiendo sobre algo que yo pense que ya sabia, mejor dicho hoy si estoy aprendiendo.

    Saludos desde El Salvador.

    4ta. entrega en 5, 4, 3, 2, 1———–

    • Agustin says:

      Buf , buf , buf…. JYocky, déjame respirar un poco…..:-)
      Me alegro de que te guste . Ese es el objetivo:
      investigar para conocer, conocer para compartir, compartir para no olvidar.
      Un saludo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: