Por hacer

Soporte para diferentes tipos de envases


Para el 2008 y en la siguiente versión quiero poner control por cajas/unidades/palets y tener soporte para delegaciones y/o subempresas.

En un principio creare una tabla de Envases con los siguientes campos:

create table envases
(
emp_codi int not null, # Empresa
env_codi char(2) not null, # Esta sera la clave corta (CJ=Cajas,etc,PL=Palet)
env_nomb char(25) not null, # Descripcion de la clave.
env_unid smallint, # Cambio a Unidades
) constraint ix_envases primary key (emp_codi,env_codi);

En esta tabla para cada delegación (subempresa o como lo queramos llamar) ira las diferentes Envases disponibles.
Así una clave normal seria:

Empresa: 1 Clave: CJ Nombre: Cajas Cambio a Unidades: 10

Lo cual definiría que la clave CJ en la empresa 1 son cajas y en cada caja hay 10 Unidades (por defecto).

Entonces, desde la carga de pedidos de compras a los albaranes de venta se definira de lo que estamos hablando. Ahora mismo se habla siempre en Unidades pero despues se podra hablar en Cajas, etc.

En el maestro de productos se incluira un campo que definira el tipo de Envase prederteminado (Unidaes,Cajas...) tanto para ventas como para compras.

Ademas habrá una tabla que definirá, por producto la relacion entre las diferentes envases

La tabla sera:

create table envaprod
(
emp_codi int not null, # Empresa
env_codi smallint not null, # Envase
pro_codi int not null, # Codigo de Producto.
enp_unid smallint not null, # Unidades para este envase
) constraint ix_envaprod primary key (emp_codi,env_codi,pro_codi);

Así si no existe ese producto para ese envase y empresa en esta tabla se buscara el valor por defecto en la tabla envases.

En la tabla stock-partidas se hablara siempre por Unidades y los listados y consultas mostraran los valores en el valor que tenga en la tabla productos.

Delegaciones y/o subempresas

Se creara un campo nuevo en la tabla proveedores que indique si el proveedor es interno. Es decir si realmente es solo un documento de pedido entre delegaciones y/o subempresas.
El campo sera:

prv_intern smallint not null, # 0 No es interno (por defecto).

Todos los albaranes que se hagan sobre proveedores con la clave esta diferente de 0 No se podran facturar.

En la tabla v_cliente se creara un campo para lo mismo.


cli_intern smallint not null, # 0 No es interno (por defecto).

Todos los albaranes sobre clientes con ese clave activa no se podran facturar, pues se consideraran albaranes internos.

Para diferenciar las subempresas y/o delegaciones se utilizara el campo sbe_codi (tabla subempresas). Hay que poner este campo en las siguientes tablas:

- Pedidos de compras.
- Consulta albaranes de compras
- Consulta pedidos de compras.
- ....

Para poder controlar en stock-partidas el stock por delegaciones, se utilizara el campo alm_codi (almacen). Esto se hara incluyendo en la tabla almacenes el campo sbe_codi, de tal manera que un v_almacen siempre pertenecerá a una única subempresa. Para saber el almacen por defecto para cada subempresa se incluye el campo alm_codi en la tabla subempresa.

Mejoras en seguridad


Se crea la tabla accusuemp. En esta tabla por cada usuario se pondrá a que empresa tiene acceso cada usuario. Si no hay ningún registro para el usuario eso implicara que el usuario solo tiene acceso a la empresa que tenga en la tabla usuarios.

create table accusuemp
(
usu_codi int not null, # Usuario
emp_codi int not null, # Empresa
) constraint ix_accusuemp primary key (usu_codi,emp_codi);

Si hay un registro para el usuario con la empresa 0 eso indicara que ese usuario tiene acceso a TODAS las empresas.

Tambien se crea la tabla accususbe. En esta tabla por cada usuario se pondrá a que sub-empresa tiene acceso cada usuario. El funcionamiento sera igual a la tabla accusuemp.

create table accususbe
(
usu_codi int not null, # Usuario
emp_codi int not null, # Empresa
sbe_codi int not null, # SubEmpresa
) constraint ix_accususbe primary key (usu_codi,emp_codi);

Si un usuario tiene el campo SubEmpresa a 0 significara que tiene acceso a todas las subempresas que marque el campo Empresa

El campo Empresa no puede ser igual a cero

En la tabla usuarios se incluye el campo subempresa, este campo definira la subempresa con la que trabaja por defecto el usuario. Si esa subempresa es igual a 0 significara que tiene acceso a todas. De tal modo que no se comprobara ni siquiera la tabla accususbe

Mas cosas que se haran algún año de esto.
  • Implementar un sencillo TPV
  • Documentación, mucha documentación. :-)