IF (SELECT COUNT(AlmCod) FROM nota_ingreso.almacen WHERE
AlmNom=new.AlmNom AND AlmCod=new.AlmCod)=0 THEN INSERT INTO nota_ingreso.almacen (AlmNom,AlmCod,AlmStock) VALUES ('NEW.AlmNom','NEW.AlmCod','1'); ELSE UPDATE nota_ingreso.almacen SET AlmStock=(AlmStock+1)WHERE AlmNom=NEW.AlmNom AND AlmCod=NEW.AlmCod; END IF
DELIMITER $$ CREATE
TRIGGER Stock_Insert BEFORE INSERT ON movi
FOR EACH ROW BEGIN /*Evaluamos la clase de movimiento que se esta realizando*/ /*I=Para cuando ingresa Mercadera*/ /*S=Para cuando Sale Mercadera*/ IF New.Clase='I THEN
/*Ingresos de Mercaderia*/
/*Verificamos si el registro existe en nuestra tabla de Stock*/
/*Si esiste, sera igual a 1 sino sera 0 */
IF (SELECT COUNT(codigo) FROM test.stock WHERE Almacen=new.Almacen AND
Codigo=new.Codigo)=0 THEN /*Insertamos el registro si no existe en nuestra tabla de stock*/ INSERT INTO test.stock (Almacen,Codigo,StockActual) VALUES (NEW.Almacen,NEW.Codigo,NEW.Cantidad); ELSE /*Si el registro ya existe, solo actualizamos el stock sumando la nueva cantidad*/ UPDATE test.stock SET StockActual=StockActual+New.Cantidad WHERE Almacen=NEW.Almacen AND Codigo=NEW.Codigo; END IF; ELSEIF New.Clase='S THEN /*Salidas de Mercaderia*/ /*Si es una salida, necesariamente el registro debe existir en nuestra tabla de stock*/ /*y solo actualizamos descontando del stock, la cantidad saliente*/ UPDATE test.stock SET StockActual=StockActual-New.Cantidad WHERE Almacen=NEW.Almacen AND Codigo=NEW.Codigo; END IF; END; $$ DELIMITER ;
DELIMITER $$ CREATE
TRIGGER Stock_Delete BEFORE DELETE ON movi
FOR EACH ROW BEGIN
UPDATE test.stock SET StockActual=StockActual-OLD.Cantidad WHERE
Almacen=OLD.Almacen AND Codigo=OLD.Codigo;
ELSEIF OLD.Clase='S THEN /*Salidas de Mercaderia*/
/*Solo actualizamos el stock sumando la cantidad anterior */ UPDATE test.stock SET StockActual=StockActual+OLD.Cantidad WHERE Almacen=OLD.Almacen AND Codigo=OLD.Codigo; END IF; /*Auditamos esta modificacin. Claro esto es para atrapar a quienes hacen travesuras, a veces mal intencionadas*/ INSERT INTO test.auditoriainventarios (Almacen,Clase,Nro_Voucher,Codigo,Cantidad_Anterior,Cantidad_Nueva,Usuario,Fecha_ Hora,Accion) VALUES(OLD.Almacen,OLD.Clase,OLD.Nro_Voucher,OLD.Codigo,OLD.Cantidad,0,SESSION_US ER(),CONCAT(CURRENT_DATE,' ,CURRENT_TIME),'Eliminacin); END; $$ DELIMITER ;