Documente Academic
Documente Profesional
Documente Cultură
/*
2. Hacer un TRIGGER denominado TR_del_dventas, que después de
borrar una fila en la tabla dventas
actualice el Importe Total en la tabla pventas (usar
PA_TotalPreVenta).
*/
CREATE TRIGGER TR_del_dventas
ON dventas
FOR DELETE
AS
DECLARE @itot DECIMAL,@nvta INT
SELECT @nvta=nvta FROM DELETED
EXECUTE PA_TotalPreVenta @nvta,@itot OUTPUT
UPDATE pventas SET itot=@itot WHERE nvta=@nvta
--PRUEBA
DELETE dventas WHERE nvta=1 AND cprd =2
/*
3. Hacer un TRIGGER denominado TR_ins_dventas, que después de
insertar una fila en la tabla dventas
actualice el Importe Total en la tabla pventas (usar
PA_TotalPreVenta).
*/
CREATE TRIGGER TR_ins_dventas
ON dventas
FOR INSERT
AS
DECLARE @itot DECIMAL,@nvta INT
SELECT @nvta=nvta FROM INSERTED
EXECUTE PA_TotalPreVenta @nvta,@itot OUTPUT
UPDATE pventas SET itot=@itot WHERE nvta=@nvta
--PRUEBA
INSERT INTO dventas VALUES (1,2,25,2,50)
INSERT INTO dventas VALUES (2,1,1,2,8)
/*
4. Hacer un TRIGGER denominado TR_upd_dventas, que después de
actualizar una fila en la tabla dventas
actualice el Importe Total (itot) en la tabla pventas (usar
PA_TotalPreVenta).
*/
CREATE TRIGGER TR_upd_dventas
ON dventas
FOR UPDATE
AS
DECLARE @iTot DECIMAL,@nvta INT
SELECT @nvta=nvta FROM INSERTED
EXECUTE PA_TotalPreVenta @nvta, @iTot OUTPUT
UPDATE pventas SET itot=@iTot WHERE nvta=@nvta
-- prueba
UPDATE dventas SET cant=1,impt=50
WHERE nvta=1 and cprd=2
/*
5. Hacer un TRIGGER denominado TR_del_dventas, que después de
borrar una fila en la tabla dventas
actualice el Importe de descuento (ides) en la tabla pventas (usar
PA_DescPreVenta). Ademas si ya no
hay mas filas para esa venta en la tabla dventas que también
eliminé la filade la tabla pventas.
*/
CREATE TRIGGER TR_del_dventas
ON dventas
FOR DELETE
AS
DECLARE @nvta INT,@ides DECIMAL(10,2)
SELECT @nvta=nvta FROM DELETED
EXECUTE PA_DescPreVenta @nvta,@ides OUTPUT
UPDATE pventas SET ides=@ides WHERE nvta=@nvta
IF(@ides = 0) DELETE pventas WHERE nvta=@nvta
--PRUEBA
DELETE dventas WHERE nvta=1 AND cprd =1
DELETE dventas WHERE nvta=2 AND cprd =1
select * from pventas
select * from dventas
/*
6. Hacer un TRIGGER denominado TR_ins_dventas, que después de
insertar una fila en la tabla dventas actualice el
Importe de descuento (ides) en la tabla pventas (usar
PA_DescPreVenta).
*/
CREATE TRIGGER TR_ins_dventas
ON dventas
FOR INSERT
AS
DECLARE @nvta INT,@ides DECIMAL(10,2)
SELECT @nvta=nvta FROM INSERTED
EXECUTE PA_DescPreVenta @nvta,@ides OUTPUT
UPDATE pventas SET ides=@ides WHERE nvta=@nvta
--PRUEBA
INSERT INTO dventas VALUES (1,3,4,2,8)
/*
7. Hacer un TRIGGER denominado TR_upd_dventas, que después de
actualizar una fila en la tabla dventas actualice el
Importe de descuento (ides) en la tabla pventas (usar
PA_DescPreVenta).
*/
CREATE TRIGGER TR_upd_dventas
ON dventas
FOR UPDATE
AS
--PRUEBA
UPDATE dventas SET impt=10 WHERE nvta=1 AND cprd=1
/*
8. Hacer un TRIGGER denominado TR_del_PreVentas, que borre toda la
venta incluyendo su detalle (usar PA_DelPreVentas).
*/
CREATE TRIGGER TR_del_PreVentas
ON pventas
FOR DELETE
AS
DECLARE @nvta INT
SELECT @nvta=nvta FROM DELETED
EXECUTE PA_DelPreVentas @nvta
--PRUEBA
DELETE pventas WHERE nvta=1
/*
9. Hacer un TRIGGER denominado TR_ins_log, que despues de insertar
una fila en la tabla pventas inserte los
datos en la tabla log_pventas
*/
CREATE TRIGGER TR_ins_log
ON pventas
FOR INSERT
AS
DECLARE @nvta INT
SELECT @nvta=nvta FROM INSERTED
INSERT INTO log_pventas VALUES(@nvta,GETDATE() , USER,'I')
--prueba
INSERT INTO pventas VALUES(4,'clienteD',1,GETDATE(),0,0)
/*
10. Hacer un TRIGGER denominado TR_del_log, que despues de borarr
una fila en la tabla pventas inserte los
datos en la tabla log_pventas
*/
CREATE TRIGGER TR_del_log
ON pventas
FOR DELETE
AS
DECLARE @nvta INT
SELECT @nvta=nvta FROM DELETED
INSERT INTO log_pventas VALUES(@nvta,GETDATE(),USER,'D')
--prueba
DELETE pventas WHERE nvta=2
/*
11. Hacer un TRIGGER denominado TR_upd_log, que despues de
actualizar una fila en la tabla pventas inserte
los datos en la tabla log_pventas
*/
CREATE TRIGGER TR_upd_log
ON pventas
FOR UPDATE
AS
DECLARE @nvta INT
SELECT @nvta=nvta FROM INSERTED
INSERT INTO log_pventas VALUES(@nvta,GETDATE(),USER,'U')
--prueba
UPDATE pventas SET calm=3 WHERE nvta=2
--******************************** PA
--PA para 1
CREATE PROCEDURE PA_StockxAlmacen(@cprd INT,@calm INT,@stock
DECIMAL(10,2) OUTPUT)
AS
SELECT @stock=isnull(sum(cant),0) FROM sumi
WHERE cprd=@cprd AND calm=@calm
RETURN
--PA para 2,3 y 4
DROP PROCEDURE PA_TotalPreVenta
CREATE PROCEDURE PA_TotalPreVenta (@nvta INT,@itot DECIMAl OUTPUT)
AS
SET @itot=0
SELECT @itot=isnull(sum(impt),0) FROM dventas WHERE nvta=@nvta
RETURN
--PA para 5,6 y 7
CREATE PROCEDURE PA_DescPreVenta(@nvta INT,@impdes DECIMAL(10,2)
OUTPUT)
AS
DECLARE @itot INT
EXECUTE PA_TotalPreVenta @nvta,@itot output
SET @impdes = @itot
IF(@itot >= 10 AND @itot <= 20) SET @impdes=@itot-(@itot*0.10)
IF(@itot >= 11 AND @itot <= 50) SET @impdes=@itot-(@itot*0.15)
IF(@itot > 50) SET @impdes=@itot-(@itot*0.20)
RETURN
--PA 8
CREATE PROCEDURE PA_DelPreVentas (@nvta INT)
AS
DELETE dventas WHERE nvta=@nvta
RETURN