Está en la página 1de 4

D:\TRIGGER ISS LOGMED.

txt

Thursday, 08 January 2015 4:33 PM

CREATE TRIGGER [dbo].[MADELOGMEDISSTRAN_Trigger] ON [dbo].[MADELOGMEDISSTRAN]


WITH EXECUTE AS CALLER
FOR INSERT
AS
--------------------------------------------------------------------------------- Created on 15-02-2013 11:45:31 AM
-- Description: <TRIGGER PERUBAHAN STOK DAN BATCH PADA SAAT ISSUE>
-- Database Name
: MADEDBF
-- TABEL
: MADELOGMEDSTOKMAST, MADELOGMEDBATCHMST
-- Object Name
: MADELOGMEDISSTRAN_Trigger
-- Author
: Made
-- Website
: http://made-setiawan.com
-------------------------------------------------------------------------------DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE

@ITEMCODE_ISS AS VARCHAR(12)
@QTYSUB_AWAL AS INT
@QTYSUB_AWAL_TO AS INT
@QOH_AWAL AS INT
@QOH_AWAL_TO AS INT
@QTY_ISS AS INT
@DEPTFROM_ISS AS VARCHAR(6)
@DEPTTO_ISS AS VARCHAR(6)
@BATCHNO AS VARCHAR(20)
@EXPDT AS DATETIME
@MFRBATCHNO AS VARCHAR(12)
@UNITPRICE AS MONEY
@STATUS AS VARCHAR(1)
@ISSTYPE AS VARCHAR(1)
@IDISSTRAN AS INT
@ISSRNO AS VARCHAR(20)

BEGIN
/* Trigger body */
---nilai awal dari data yg di insert
SELECT @ITEMCODE_ISS = ITEMCODE, @DEPTFROM_ISS = DEPTFROM, @DEPTTO_ISS = DEPTTO,
@BATCHNO = BATCHNO, @QTY_ISS = ABS(QTY), @EXPDT = EXPDT,
@MFRBATCHNO = MFRBATCHNO, @UNITPRICE = UNITPRICE, @STATUS = STATUS,
@ISSTYPE = ISSTYPE, @IDISSTRAN = IDISSTRAN, @ISSRNO = ISSSRNO FROM INSERTED
BEGIN
-- IF @STATUS = 'B'
IF @ISSTYPE = 'I'
BEGIN
/* PERUBAHAN PADA DEPT ---> DEPTFORM */
-- UPDATE STOCK
SELECT @QOH_AWAL = (SELECT SUM(QOH) AS VQOH FROM dbo.MADELOGMEDSTOKMAST
WHERE ITEMCODE = @ITEMCODE_ISS AND
DEPTCODE = @DEPTFROM_ISS
GROUP BY ITEMCODE, DEPTCODE)
UPDATE dbo.MADELOGMEDSTOKMAST
-1-

D:\TRIGGER ISS LOGMED.txt

Thursday, 08 January 2015 4:33 PM

SET QOH = @QOH_AWAL - @QTY_ISS


WHERE DEPTCODE = @DEPTFROM_ISS AND ITEMCODE = @ITEMCODE_ISS
-- UPDATE BATCH
SELECT @QTYSUB_AWAL = (SELECT SUM(QTYSUB) AS VQTYSUB FROM DBO.MADELOGMEDBATCHMST
WHERE ITEMCODE = @ITEMCODE_ISS AND
DEPTCODE = @DEPTFROM_ISS AND BATCHNO = @BATCHNO
GROUP BY
dbo.MADELOGMEDBATCHMST.DEPTCODE,
dbo.MADELOGMEDBATCHMST.ITEMCODE,
dbo.MADELOGMEDBATCHMST.BATCHNO )
UPDATE dbo.MADELOGMEDBATCHMST
SET QTYSUB = @QTYSUB_AWAL - @QTY_ISS
WHERE DEPTCODE = @DEPTFROM_ISS AND BATCHNO = @BATCHNO
END
END
/* PERUBAHAN PADA DEPT ---> DEPTTO */
-- UPDATE STOKMASTER
BEGIN
IF @STATUS ='B'
IF NOT EXISTS (SELECT QOH FROM dbo.MADELOGMEDSTOKMAST
WHERE ITEMCODE = @ITEMCODE_ISS AND
DEPTCODE = @DEPTTO_ISS )
BEGIN
INSERT INTO dbo.MADELOGMEDSTOKMAST (DEPTCODE, ITEMCODE, QOH)
VALUES (@DEPTTO_ISS, @ITEMCODE_ISS, @QTY_ISS)
END
ELSE
BEGIN
SELECT @QOH_AWAL_TO = (SELECT SUM(QOH) AS VQOH_TO FROM dbo.MADELOGMEDSTOKMAST
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS
GROUP BY ITEMCODE, DEPTCODE)
UPDATE dbo.MADELOGMEDSTOKMAST
SET QOH = @QOH_AWAL_TO + @QTY_ISS
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS
END
ELSE
BEGIN
SELECT @QOH_AWAL_TO = (SELECT SUM(QOH) AS VQOH_TO FROM dbo.MADELOGMEDSTOKMAST
-2-

D:\TRIGGER ISS LOGMED.txt

Thursday, 08 January 2015 4:33 PM

WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS


GROUP BY ITEMCODE, DEPTCODE)
UPDATE dbo.MADELOGMEDSTOKMAST
SET QOH = @QOH_AWAL_TO + @QTY_ISS
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS
END
END
BEGIN
-- UPDATE BATCHMASTER
IF @STATUS ='B'
IF NOT EXISTS (SELECT BATCHNO, ITEMCODE, DEPTCODE FROM dbo.MADELOGMEDBATCHMST
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS
AND BATCHNO = @BATCHNO)
BEGIN
INSERT INTO dbo.MADELOGMEDBATCHMST (DEPTCODE, ITEMCODE, BATCHNO,
EXPDT, MFRBATCHNO, UNITPRICE, QTY, QTYSUB )
VALUES (@DEPTTO_ISS, @ITEMCODE_ISS, @BATCHNO, @EXPDT, @MFRBATCHNO,
@UNITPRICE, @QTY_ISS, @QTY_ISS)
END
ELSE
BEGIN
SELECT @QTYSUB_AWAL_TO = (SELECT SUM(QTYSUB) AS VQTYSUB FROM
DBO.MADELOGMEDBATCHMST
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS AND BATCHNO =
@BATCHNO
GROUP BY
dbo.MADELOGMEDBATCHMST.DEPTCODE,
dbo.MADELOGMEDBATCHMST.ITEMCODE, dbo.MADELOGMEDBATCHMST.BATCHNO )

UPDATE dbo.MADELOGMEDBATCHMST
SET QTYSUB = @QTY_ISS + @QTYSUB_AWAL_TO
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS
AND BATCHNO = @BATCHNO
END
ELSE
BEGIN
SELECT @QTYSUB_AWAL_TO = (SELECT SUM(QTYSUB) AS VQTYSUB FROM
DBO.MADELOGMEDBATCHMST
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS AND BATCHNO =
@BATCHNO
GROUP BY
dbo.MADELOGMEDBATCHMST.DEPTCODE,
dbo.MADELOGMEDBATCHMST.ITEMCODE, dbo.MADELOGMEDBATCHMST.BATCHNO )
-3-

D:\TRIGGER ISS LOGMED.txt

Thursday, 08 January 2015 4:33 PM

UPDATE dbo.MADELOGMEDBATCHMST
SET QTYSUB = @QTY_ISS + @QTYSUB_AWAL_TO
WHERE ITEMCODE = @ITEMCODE_ISS AND DEPTCODE = @DEPTTO_ISS
AND BATCHNO = @BATCHNO
END
END
END
GO

-4-

También podría gustarte