Ver Mensaje Individual
  #4  
Antiguo 05-02-2007
mamaro mamaro is offline
Miembro
 
Registrado: mar 2004
Posts: 79
Reputación: 21
mamaro Va por buen camino
Funcionamiento

Hola !

Les explico porqué tengo que desactivar los disparadores:
Es un sistema de stock, tengo dos tablas para las salidas (cabezal y detalle), dos de entrada (cabezal y detalle), dos de remitos (entró la mercadería pero no se conoce el precio aún), una tabla de artículos, y muy importante tengo una tabla de existencias (aquí almaceno lo relativo a una entrada específica -lote, fecha de vencimiento, precio de compra, cantidad, etc-) ... digo muy importante porque estoy trabajando con medicamentos y por lo tanto los datos que aquí almaceno pueden ser de importancia vital.

Quiero aclarar que el artículo tiene un stock (que debería coincidir con la suma de las existencias).

Bueno esto funciona así:
1) Hago una entrada (entrada o remito), ésto acciona un disparador que crea lo que corresponda en la tabla de existencias, suma la cantidad al stock de la tabla artículo, etc.
2) Hago una salida, ésto acciona otro disparador que reduce la existencia
y el stock del artículo. Se accionan además otros disparadores por ejemplo uno que obtiene el precio de compra.

Bueno hasta aquí todo bien, el problema se dá cuando la existencia corresponde a un remito, en este caso no hay un precio de compra que traer.
Los empleados revisan todo antes de hacer el cierre y encuentran estos problemas (son usuarios con formación alta), por lo que solicitan a las empresas que les envíen los documentos definitivos (con precios) ... la mayoría de las veces los proveedores envían los documentos ... pero (siempre hay un pero) existen ocaciones en que nó. Al no tener un documento que abale el precio de compra que figurará en el cierre, le preguntan a la empresa o lo estiman (depende el caso)
...
cuando van a ingresar el precio "a mano", yo lo que hago desde mi programa delphi es:
1) Desactivo el disparador "obtiene precio de compra" de la tabla de salidas. Si lo dejo activado va a buscar el precio de la existencia, o sea cero.
2) Ejecuto un procedimiento almacenado que actualiza el precio de esa salida en particular.
3) Activo el disparador "obtiene precio de compra" de la tabla de salidas.

Bueno espero haber aclarado un poco las cosas, saludos a todos.
Responder Con Cita