Hola compañeros, tengo un par de disparadores que acualizar datos en una tabla, el cual funciona de la siguiente manera:
Al realizar una compra automaticamente carga la cantidad comprada con la cantidad existente (hasta aqui todo bien), pero al querer anular esa compra es decir revertir el proceso tengo problemas cuando el producto es el mismo es decir
COMPRA
Código MySQL:
Ver originalCANT | IDARTICULO | PRECIO
3 | 55 | 55.55
1 | 55 | 55.55
2 | 55 | 55.55
Actualizar la existencia del producto agregandole los 6, pero al anular no sabe como operarlo porque me resulta restando 9 en lugar de los 6
El disparador para anular es el siguiente
Código MySQL:
Ver original update sys_compra_detalle
set estado
= new.estado
where no_compra
= new.no_compra
; update sys_kardex
set estado
= new.estado
where no_movimiento
= new.no_compra
; update sys_articulo a
, (select * from sys_compra_detalle
where no_compra
=new.no_compra
) b
set a.existencia
=a.existencia
-b.cantidadcompra
where a.idarticulo
=b.idarticulo
;
Cabe mencionar que el detalle de la compra tiene un idcompra_detalle como clave primaria autonumerica
Por su ayuda gracias.
PD el proceso si funciona cuando hago el after update en la tabla detalle
Código MySQL:
Ver original update sys_articulo
set existencia
= existencia
- new.cantidadcompra
where idarticulo
= new.idarticulo
;
Porque obviamente me cuanta la llaves primarias. Pero en este caso debo hacer 2 disparadores uno para el maestro y otro para el detalle, y lo que quiero es controlarlo desde uno solo