USE [NGB01];
GO
/****** Object: StoredProcedure [dbo].[taSopLineDelete] Script Date: 6/12/2025 11:28:36 AM ******/
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE [dbo].[taSopLineDelete]
@I_vSOPTYPE SMALLINT,
@I_vSOPNUMBE CHAR(21),
@I_vLNITMSEQ INT = 0,
@I_vITEMNMBR CHAR(30),
@I_vRequesterTrx SMALLINT = 0,
@I_vRecreateDist SMALLINT = 0,
@I_vCMPNTSEQ INT = 0,
@I_vDeleteType SMALLINT,
@I_vUSRDEFND1 CHAR(50) = '',
@I_vUSRDEFND2 CHAR(50) = '',
@I_vUSRDEFND3 CHAR(50) = '',
@I_vUSRDEFND4 VARCHAR(8000) = '',
@I_vUSRDEFND5 VARCHAR(8000) = '',
@O_iErrorState INT OUTPUT,
@oErrString VARCHAR(255) OUTPUT
AS
SET DEADLOCK_PRIORITY LOW;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
DECLARE @CUSTNMBR CHAR(15),
@iStatus INT,
@DOCDATE DATETIME,
@BACHNUMB CHAR(15),
@ITMTRKOP SMALLINT,
@iError INT,
@O_oErrorState INT,
@iUpdtBthErrState INT,
@iUpdDistErrState INT,
@iCreateBatchErrString VARCHAR(255),
@SOPHdrTbl CHAR(18),
@DexRowID INT,
@oExists INT,
@CURRNIDX INT,
@ORTDISAM NUMERIC(19, 5),
@DISTKNAM NUMERIC(19, 5),
@PYMTRCVD NUMERIC(19, 5),
@FRTAMNT NUMERIC(19, 5),
@MISCAMNT NUMERIC(19, 5),
@TAXAMNT NUMERIC(19, 5),
@LineCount INT,
@ITEMTYPE SMALLINT,
@ACCTAMNT NUMERIC(19, 5),
@DISAVAMT NUMERIC(19, 5),
@ORNCMAMT NUMERIC(19, 5),
@OXTNDPRC NUMERIC(19, 5),
@ORSUBTOT NUMERIC(19, 5),
@ORMSCTAX NUMERIC(19, 5),
@OREXTCST NUMERIC(19, 5),
@OInsStatus INT,
@iCustomState INT,
@iCustomErrString VARCHAR(255),
@FUNLCURR CHAR(15),
@CURNCYID CHAR(15),
@mylock TINYINT,
@DexLockErrorState INT,
@TOTALTAX NUMERIC(19, 5),
@taSopLineDeletePostErrState INT,
@taSopLineDeletePostErrString CHAR(255),
@taSopHdrRecalcErrState INT,
@taSopHdrRecalcErrString CHAR(255),
@QTYPRBAC NUMERIC(19, 5),
@QTYPRBOO NUMERIC(19, 5),
@QTYPRINV NUMERIC(19, 5),
@QTYPRORD NUMERIC(19, 5),
@ISMCTRX INTEGER,
@CALCKITC TINYINT,
@KITITEM CHAR(30),
@KITPRCLEVEL CHAR(11),
@KITPRICMTHD TINYINT,
@KITUOMPRICE NUMERIC(19, 5),
@KITUOFM CHAR(9),
@KITQUANTITY NUMERIC(19, 5),
@DOCAMTNEG NUMERIC(19, 5),
@ENABLEMULTIBIN SMALLINT,
@SEROVQTY NUMERIC(19, 5),
@LOTOVQTY NUMERIC(19, 5),
@LOCNCODE CHAR(10),
@ITEMNMBR CHAR(30),
@SUBTOTAL NUMERIC(19, 5),
@TRADEPCT NUMERIC(19, 5),
@OTRADPCT NUMERIC(19, 5),
@DeleteType INT,
@ORTDISAML NUMERIC(19, 5),
@ISTRADEAPERCENT INT,
@TRDISPCT NUMERIC(19, 5),
@PYMTRMID CHAR(20),
@DUEDATE DATETIME,
@DISCDATE DATETIME,
@UNITPRCE NUMERIC(19, 5),
@KITXTNDPRCE NUMERIC(19, 5),
@FUNDECPLCUR INT,
@EDITDECPLCUR INT,
@USEUNITPRCE NUMERIC(19, 5),
@XCHGRATE NUMERIC(19, 7),
@RTCLCMTD SMALLINT,
@ODECPLCU INT,
@DECPLCUR INT,
@XTNDPRCEExst NUMERIC(19, 5),
@XTNDPRCECHG NUMERIC(19, 5),
@DSCPCTAM NUMERIC(19, 5),
@KITEXTDCOST NUMERIC(19, 5),
@KITUNITCOST NUMERIC(19, 5),
@KITITEMFUNCTDEC INT,
@fieldupdate TINYINT,
@NONINVEN TINYINT,
@XTNDPRCE NUMERIC(19, 5),
@stoprecalc TINYINT,
@CHGAMNT NUMERIC(19, 5),
@PRSTADCD CHAR(15),
@SUMSERLTQTY NUMERIC(19, 5),
@SHIPMTHD CHAR(15),
@ADDRESS1 CHAR(60),
@ADDRESS2 CHAR(60),
@ADDRESS3 CHAR(60),
@CNTCPRSN CHAR(60),
@FAXNUMBR CHAR(21),
@CITY CHAR(35),
@STATE CHAR(29),
@ZIPCODE CHAR(10),
@COUNTRY CHAR(60),
@PHNUMBR1 CHAR(21),
@PHNUMBR2 CHAR(21),
@PHNUMBR3 CHAR(21);
SELECT @DOCDATE = '',
@CUSTNMBR = '',
@O_oErrorState = 0,
@O_iErrorState = 0,
@iStatus = 0,
@BACHNUMB = '',
@ITMTRKOP = 0,
@oErrString = '',
@iUpdtBthErrState = 0,
@iUpdDistErrState = 0,
@iCreateBatchErrString = '',
@SOPHdrTbl = '',
@DexRowID = 0,
@oExists = 0,
@CURRNIDX = 0,
@ORTDISAM = 0,
@DISTKNAM = 0,
@PYMTRCVD = 0,
@FRTAMNT = 0,
@MISCAMNT = 0,
@TAXAMNT = 0,
@LineCount = 0,
@ITEMTYPE = 0,
@OInsStatus = 0,
@DISAVAMT = 0,
@ORNCMAMT = 0,
@OXTNDPRC = 0,
@ORSUBTOT = 0,
@ORMSCTAX = 0,
@OREXTCST = 0,
@FUNLCURR = '',
@CURNCYID = '',
@mylock = 0,
@DexLockErrorState = 0,
@TOTALTAX = 0,
@taSopLineDeletePostErrState = 0,
@taSopLineDeletePostErrString = '',
@taSopHdrRecalcErrState = 0,
@taSopHdrRecalcErrString = '',
@QTYPRBAC = 0,
@QTYPRBOO = 0,
@QTYPRINV = 0,
@QTYPRORD = 0,
@ISMCTRX = 0,
@CALCKITC = 0,
@KITITEM = '',
@KITPRCLEVEL = '',
@KITPRICMTHD = 0,
@KITUOMPRICE = 0,
@KITUOFM = '',
@KITQUANTITY = 0,
@DOCAMTNEG = 0,
@ENABLEMULTIBIN = 0,
@SEROVQTY = 0,
@LOTOVQTY = 0,
@LOCNCODE = '',
@ITEMNMBR = '',
@SUBTOTAL = 0,
@TRADEPCT = 0,
@OTRADPCT = 0,
@DeleteType = 0,
@ORTDISAML = 0,
@ISTRADEAPERCENT = 0,
@TRDISPCT = 0,
@PYMTRMID = '',
@DUEDATE = '',
@DISCDATE = '',
@UNITPRCE = 0,
@KITXTNDPRCE = 0,
@FUNDECPLCUR = 2,
@EDITDECPLCUR = 2,
@USEUNITPRCE = 0,
@XCHGRATE = 0,
@RTCLCMTD = 0,
@ODECPLCU = 0,
@DECPLCUR = 0,
@XTNDPRCEExst = 0,
@XTNDPRCECHG = 0,
@DSCPCTAM = 0,
@KITEXTDCOST = 0,
@KITUNITCOST = 0,
@KITITEMFUNCTDEC = 0,
@fieldupdate = 0,
@NONINVEN = 0,
@XTNDPRCE = 0,
@stoprecalc = 0,
@CHGAMNT = 0,
@PRSTADCD = '',
@SUMSERLTQTY = 0,
@SHIPMTHD = '',
@ADDRESS1 = '',
@ADDRESS2 = '',
@ADDRESS3 = '',
@CNTCPRSN = '',
@FAXNUMBR = '',
@CITY = '',
@STATE = '',
@ZIPCODE = '',
@COUNTRY = '',
@PHNUMBR1 = '',
@PHNUMBR2 = '',
@PHNUMBR3 = '';
IF (@oErrString IS NULL)
BEGIN
SELECT @oErrString = '';
END;
EXEC @iStatus = taSopLineDeletePre @I_vSOPTYPE OUTPUT,
@I_vSOPNUMBE OUTPUT,
@I_vLNITMSEQ OUTPUT,
@I_vITEMNMBR OUTPUT,
@I_vRequesterTrx OUTPUT,
@I_vRecreateDist OUTPUT,
@I_vCMPNTSEQ OUTPUT,
@I_vDeleteType OUTPUT,
@I_vUSRDEFND1 OUTPUT,
@I_vUSRDEFND2 OUTPUT,
@I_vUSRDEFND3 OUTPUT,
@I_vUSRDEFND4 OUTPUT,
@I_vUSRDEFND5 OUTPUT,
@O_iErrorState = @iCustomState OUTPUT,
@oErrString = @iCustomErrString OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@iCustomState <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @iCustomErrString;
SELECT @O_iErrorState = 798;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
IF (
(@I_vSOPTYPE IS NULL)
OR (@I_vSOPNUMBE IS NULL)
OR (@I_vLNITMSEQ IS NULL)
OR (@I_vITEMNMBR IS NULL)
OR (@I_vRequesterTrx IS NULL)
OR (@I_vRecreateDist IS NULL)
OR (@I_vCMPNTSEQ IS NULL)
OR (@I_vDeleteType IS NULL)
)
BEGIN
SELECT @O_iErrorState = 407;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vDeleteType = 999)
BEGIN
SELECT @DeleteType = 999,
@I_vDeleteType = 1;
END;
IF (@I_vDeleteType = 998)
BEGIN
SELECT @DeleteType = 999,
@I_vDeleteType = 2;
END;
IF (@I_vDeleteType = 997)
BEGIN
SELECT @DeleteType = 997,
@I_vDeleteType = 1;
END;
IF ((@I_vSOPTYPE < 1) OR (@I_vSOPTYPE > 6))
BEGIN
SELECT @O_iErrorState = 411;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vRequesterTrx < 0) OR (@I_vRequesterTrx > 1))
BEGIN
SELECT @O_iErrorState = 2220;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vSOPNUMBE = '') OR (@I_vITEMNMBR = ''))
BEGIN
SELECT @O_iErrorState = 408;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vRecreateDist < 0) OR (@I_vRecreateDist > 1))
BEGIN
SELECT @O_iErrorState = 752;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vDeleteType < 1) OR (@I_vDeleteType > 2))
BEGIN
SELECT @O_iErrorState = 3566;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
SELECT @I_vSOPNUMBE = UPPER(@I_vSOPNUMBE),
@I_vITEMNMBR = UPPER(@I_vITEMNMBR);
SELECT @ENABLEMULTIBIN = ENABLEMULTIBIN
FROM IV40100 (NOLOCK);
SELECT @FUNLCURR = FUNLCURR
FROM MC40000 (NOLOCK);
SELECT @CURNCYID = CURNCYID
FROM SOP10100 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE;
IF ((@CURNCYID <> '') AND (@CURNCYID <> @FUNLCURR))
BEGIN
SELECT @ISMCTRX = 1;
END;
SELECT @FUNDECPLCUR = DECPLCUR
FROM DYNAMICS..MC40200 (NOLOCK)
WHERE CURNCYID = @FUNLCURR;
IF (@ISMCTRX = 1)
BEGIN
SELECT @EDITDECPLCUR = DECPLCUR - 1
FROM DYNAMICS..MC40200 (NOLOCK)
WHERE CURNCYID = @CURNCYID;
END;
ELSE
BEGIN
SELECT @EDITDECPLCUR = @FUNDECPLCUR - 1;
END;
SELECT @LineCount = COUNT(*)
FROM SOP10200 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND ITEMNMBR = @I_vITEMNMBR;
IF (
(@LineCount > 1)
AND
(
(
(@I_vLNITMSEQ = 0)
AND (@I_vDeleteType = 1)
)
OR
(
(
(@I_vLNITMSEQ = 0)
OR (@I_vCMPNTSEQ = 0)
)
AND (@I_vDeleteType = 2)
)
)
)
BEGIN
SELECT @O_iErrorState = 796;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
ELSE IF (@LineCount = 1)
BEGIN
IF (@I_vLNITMSEQ = 0)
BEGIN
SELECT @I_vLNITMSEQ = LNITMSEQ
FROM SOP10200 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND ITEMNMBR = @I_vITEMNMBR;
END;
IF (@I_vCMPNTSEQ = 0)
BEGIN
SELECT @I_vCMPNTSEQ = CMPNTSEQ
FROM SOP10200 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND ITEMNMBR = @I_vITEMNMBR;
END;
END;
SELECT @ITEMTYPE = ITEMTYPE,
@ITMTRKOP = ITMTRKOP
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR;
IF (NOT EXISTS
(
SELECT ITEMNMBR
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
)
)
BEGIN
SELECT @NONINVEN = 1;
END;
SELECT @QTYPRBAC = QTYPRBAC,
@QTYPRBOO = QTYPRBOO,
@QTYPRINV = QTYPRINV,
@QTYPRORD = QTYPRORD,
@LOCNCODE = LOCNCODE
FROM SOP10200 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND LNITMSEQ = @I_vLNITMSEQ
AND ITEMNMBR = @I_vITEMNMBR;
IF (@I_vDeleteType = 2)
BEGIN
SELECT @KITITEM = ITEMNMBR,
@KITPRCLEVEL = PRCLEVEL,
@KITUOFM = UOFM,
@KITQUANTITY = QUANTITY
FROM SOP10200 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0;
SELECT @KITPRICMTHD = PRICMTHD
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @KITITEM;
SELECT @KITUOMPRICE = UOMPRICE
FROM IV00108 (NOLOCK)
WHERE ITEMNMBR = @KITITEM
AND CURNCYID = @CURNCYID
AND PRCLEVEL = @KITPRCLEVEL
AND UOFM = @KITUOFM
AND @KITQUANTITY = FROMQTY
AND @KITQUANTITY <= TOQTY;
IF (@KITPRICMTHD > 2)
BEGIN
SELECT @CALCKITC = CALCKITC
FROM SOP40100 (NOLOCK)
WHERE SETUPKEY = 1;
END;
ELSE
BEGIN
SELECT @CALCKITC = 0;
END;
END;
IF (@DeleteType NOT IN ( 997, 999 ))
BEGIN
IF (EXISTS
(
SELECT 1
FROM SOP60100 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ
)
)
BEGIN
SELECT @O_iErrorState = 2091;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
SELECT @DexRowID = DEX_ROW_ID
FROM SOP10100 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE;
IF ((@DexRowID = 0) OR (@DexRowID IS NULL))
BEGIN
SELECT @O_iErrorState = 409;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vDeleteType = 1)
BEGIN
IF (NOT EXISTS
(
SELECT 1
FROM SOP10200 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND @I_vITEMNMBR = ITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0
)
)
BEGIN
SELECT @O_iErrorState = 999;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
ELSE
BEGIN
IF (NOT EXISTS
(
SELECT 1
FROM SOP10200 (NOLOCK)
WHERE SOPNUMBE = @I_vSOPNUMBE
AND SOPTYPE = @I_vSOPTYPE
AND @I_vITEMNMBR = ITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ
)
)
BEGIN
SELECT @O_iErrorState = 3449;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@ITEMTYPE = 3)
BEGIN
SELECT @O_iErrorState = 3456;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (@O_iErrorState <> 0)
RETURN (@O_iErrorState);
IF (@I_vRequesterTrx = 0)
BEGIN
EXEC @iStatus = eConnectOutVerify @I_vDOCTYPE = 'Sales_Transaction',
@I_vINDEX1 = @I_vSOPNUMBE,
@I_vINDEX2 = @I_vSOPTYPE,
@I_vINDEX3 = '',
@I_vINDEX4 = '',
@I_vINDEX5 = '',
@I_vINDEX6 = '',
@I_vINDEX7 = '',
@I_vINDEX8 = '',
@I_vINDEX9 = '',
@I_vINDEX10 = '',
@I_vINDEX11 = '',
@I_vINDEX12 = '',
@I_vINDEX13 = '',
@I_vINDEX14 = '',
@I_vINDEX15 = '',
@I_vDelete = 0,
@O_iErrorState = @iCustomState OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@iCustomState <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @iCustomState;
SELECT @O_iErrorState = 3542;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
WHILE (1 = 1)
BEGIN
SELECT @SOPHdrTbl = RTRIM(DB_NAME()) + '.dbo.SOP10100';
SELECT @DexRowID = DEX_ROW_ID
FROM SOP10100 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE;
IF (NOT EXISTS
(
SELECT 1
FROM tempdb..DEX_LOCK (NOLOCK)
WHERE table_path_name = @SOPHdrTbl
AND row_id = @DexRowID
AND session_id = @@spid
)
)
BEGIN
SELECT @mylock = 1;
IF (
(@QTYPRBAC > 0)
OR (@QTYPRBOO > 0)
OR (@QTYPRINV > 0)
OR (@QTYPRORD > 0)
)
BEGIN
SELECT @O_iErrorState = 2254;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
EXEC DYNAMICS..taDEXLOCKS @I_vOperation = 1,
@I_vtable_path_name = @SOPHdrTbl,
@I_vrow_id = @DexRowID,
@O_oExists = @oExists OUTPUT,
@O_oInsertStatus = @OInsStatus OUTPUT,
@O_iErrorState = @DexLockErrorState OUTPUT;
SELECT @iError = @@error;
IF ((@OInsStatus <> 1) OR (@DexLockErrorState <> 0) OR (@iError <> 0))
BEGIN
IF (@DexLockErrorState <> 0)
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @DexLockErrorState;
END;
SELECT @O_iErrorState = 7017;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF ((@ITEMTYPE = 3) OR ((@I_vDeleteType = 2) AND (@CALCKITC = 1)))
BEGIN
SELECT @CUSTNMBR = b.CUSTNMBR,
@OXTNDPRC = a.OXTNDPRC,
@OREXTCST = a.OREXTCST,
@ORTDISAML = a.ORTDISAM,
@ORSUBTOT = b.ORSUBTOT,
@XCHGRATE = b.XCHGRATE,
@RTCLCMTD = b.RTCLCMTD,
@ODECPLCU = a.ODECPLCU,
@DECPLCUR = a.DECPLCUR,
@XTNDPRCEExst = a.XTNDPRCE
FROM SOP10200 a (NOLOCK),
SOP10100 b (NOLOCK)
WHERE a.SOPTYPE = @I_vSOPTYPE
AND a.SOPNUMBE = @I_vSOPNUMBE
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.CMPNTSEQ = 0
AND a.SOPTYPE = b.SOPTYPE
AND a.SOPNUMBE = b.SOPNUMBE;
IF (@NONINVEN = 0)
BEGIN
IF (@ISMCTRX = 1)
BEGIN
SELECT @KITITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEM
AND CURNCYID = @FUNLCURR;
END;
ELSE
BEGIN
SELECT @KITITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEM
AND
(
CURNCYID = ''
OR CURNCYID = @FUNLCURR
);
END;
END;
END;
ELSE
BEGIN
SELECT @CUSTNMBR = b.CUSTNMBR,
@OXTNDPRC = a.OXTNDPRC,
@OREXTCST = a.OREXTCST,
@ORTDISAML = a.ORTDISAM,
@ORSUBTOT = b.ORSUBTOT,
@XTNDPRCEExst = a.XTNDPRCE
FROM SOP10200 a (NOLOCK),
SOP10100 b (NOLOCK)
WHERE a.SOPTYPE = @I_vSOPTYPE
AND a.SOPNUMBE = @I_vSOPNUMBE
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.CMPNTSEQ = @I_vCMPNTSEQ
AND a.SOPTYPE = b.SOPTYPE
AND a.SOPNUMBE = b.SOPNUMBE;
END;
IF (@I_vSOPTYPE = 5)
BEGIN
UPDATE a
SET a.QTYBKORD = a.QTYBKORD - (b.QTYTORDR * b.QTYBSUOM) - (b.QTYTOINV * b.QTYBSUOM)
FROM IV00102 a (UPDLOCK),
SOP10200 b (NOLOCK),
IV00101 c (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = b.LOCNCODE
AND b.ITEMNMBR = c.ITEMNMBR
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND b.CMPNTSEQ = @I_vCMPNTSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 4766;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE a
SET a.QTYBKORD = a.QTYBKORD - (b.QTYTORDR * b.QTYBSUOM) - (b.QTYTOINV * b.QTYBSUOM)
FROM IV00102 a (UPDLOCK),
SOP10200 b (NOLOCK),
IV00101 c (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = ''
AND b.ITEMNMBR = c.ITEMNMBR
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND b.CMPNTSEQ = @I_vCMPNTSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 7219;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF (@I_vSOPTYPE IN ( 2, 3, 6 ))
BEGIN
IF (@I_vDeleteType = 2)
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - (b.ATYALLOC * b.QTYBSUOM),
a.QTYBKORD = a.QTYBKORD - (b.QTYTBAOR * b.QTYBSUOM)
FROM IV00102 a (UPDLOCK),
SOP10200 b (NOLOCK),
IV00101 c (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = b.LOCNCODE
AND b.ITEMNMBR = c.ITEMNMBR
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND b.CMPNTSEQ = @I_vCMPNTSEQ
AND
(
c.ITEMTYPE = 1
OR c.ITEMTYPE = 2
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 7195;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - (b.ATYALLOC * b.QTYBSUOM),
a.QTYBKORD = a.QTYBKORD - (b.QTYTBAOR * b.QTYBSUOM)
FROM IV00102 a (UPDLOCK),
SOP10200 b (NOLOCK),
IV00101 c (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = ''
AND b.ITEMNMBR = c.ITEMNMBR
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND b.CMPNTSEQ = @I_vCMPNTSEQ
AND
(
c.ITEMTYPE = 1
OR c.ITEMTYPE = 2
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 7196;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF ((@ITMTRKOP = 1) AND (@ENABLEMULTIBIN = 1))
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - b.QUANTITY
FROM IV00112 a (UPDLOCK),
SOP10203 b (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = b.LOCNCODE
AND a.BIN = b.BIN
AND a.QTYTYPE = b.QTYTYPE
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND b.CMPNTSEQ = @I_vCMPNTSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 7197;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF ((@ITMTRKOP IN ( 2, 3 )) AND (@ENABLEMULTIBIN = 1))
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - b.SERLTQTY
FROM IV00112 a (UPDLOCK),
SOP10201 b (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.BIN = b.BIN
AND a.QTYTYPE = b.QTYTYPE
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND a.LOCNCODE = @LOCNCODE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 9312;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
ELSE
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - (b.ATYALLOC * b.QTYBSUOM),
a.QTYBKORD = a.QTYBKORD - (b.QTYTBAOR * b.QTYBSUOM)
FROM IV00102 a (UPDLOCK),
SOP10200 b (NOLOCK),
IV00101 c (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = b.LOCNCODE
AND b.ITEMNMBR = c.ITEMNMBR
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND
(
c.ITEMTYPE = 1
OR c.ITEMTYPE = 2
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 413;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - (b.ATYALLOC * b.QTYBSUOM),
a.QTYBKORD = a.QTYBKORD - (b.QTYTBAOR * b.QTYBSUOM)
FROM IV00102 a (UPDLOCK),
SOP10200 b (NOLOCK),
IV00101 c (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = ''
AND b.ITEMNMBR = c.ITEMNMBR
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND
(
c.ITEMTYPE = 1
OR c.ITEMTYPE = 2
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 414;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF ((@ITMTRKOP = 1) AND (@ENABLEMULTIBIN = 1))
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - b.QUANTITY
FROM IV00112 a (UPDLOCK),
SOP10203 b (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LOCNCODE = b.LOCNCODE
AND a.BIN = b.BIN
AND a.QTYTYPE = b.QTYTYPE
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 5991;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF (
(@ITMTRKOP IN ( 2, 3 ))
AND (@ENABLEMULTIBIN = 1)
AND (@DeleteType <> 999)
)
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - b.SERLTQTY
FROM IV00112 a (UPDLOCK),
SOP10201 b (NOLOCK)
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.BIN = b.BIN
AND a.QTYTYPE = b.QTYTYPE
AND b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND a.LOCNCODE = @LOCNCODE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 9311;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF ((@ITMTRKOP = 2) AND (@DeleteType <> 999))
BEGIN
UPDATE IV00200
SET SERLNSLD = 0
FROM IV00200 (UPDLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND SERLNMBR IN
(
SELECT SERLTNUM
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 422;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF EXISTS
(
SELECT 1
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND OVRSERLT = 1
)
BEGIN
DELETE IV00200
WHERE SERLNMBR IN
(
SELECT SERLTNUM
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND OVRSERLT = 1
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 6511;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
SELECT @SEROVQTY = 0;
SELECT @SEROVQTY = SUM(SERLTQTY)
FROM SOP10201
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND OVRSERLT = 1;
UPDATE IV00102
SET QTYONHND = QTYONHND - @SEROVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @LOCNCODE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 6512;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYONHND = QTYONHND - @SEROVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = '';
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 6513;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF ((@ITMTRKOP = 3) AND (@DeleteType <> 999))
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - c.SERLTQTY,
a.LTNUMSLD = 0
FROM IV00300 a (UPDLOCK),
SOP10201 b (NOLOCK),
(
SELECT a.ITEMNMBR,
a.LOCNCODE,
a.QTYTYPE,
a.DATERECD,
a.DTSEQNUM,
SUM(b.SERLTQTY) AS 'SERLTQTY'
FROM IV00300 a (NOLOCK),
SOP10201 b (NOLOCK)
WHERE b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND a.DATERECD = b.DATERECD
AND a.DTSEQNUM = b.DTSEQNUM
AND a.LOTNUMBR = b.SERLTNUM
AND a.LOCNCODE = @LOCNCODE
AND a.ITEMNMBR = b.ITEMNMBR
AND a.QTYTYPE = b.QTYTYPE
GROUP BY a.ITEMNMBR,
a.LOCNCODE,
a.QTYTYPE,
a.DATERECD,
a.DTSEQNUM
) c
WHERE b.SOPTYPE = @I_vSOPTYPE
AND b.SOPNUMBE = @I_vSOPNUMBE
AND b.LNITMSEQ = @I_vLNITMSEQ
AND a.DATERECD = b.DATERECD
AND a.DTSEQNUM = b.DTSEQNUM
AND a.LOTNUMBR = b.SERLTNUM
AND a.LOCNCODE = @LOCNCODE
AND a.ITEMNMBR = b.ITEMNMBR
AND a.QTYTYPE = b.QTYTYPE
AND c.ITEMNMBR = a.ITEMNMBR
AND c.LOCNCODE = a.LOCNCODE
AND c.QTYTYPE = a.QTYTYPE
AND c.DATERECD = a.DATERECD
AND c.DTSEQNUM = a.DTSEQNUM;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 423;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF EXISTS
(
SELECT 1
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND OVRSERLT = 1
)
BEGIN
DELETE IV00300
WHERE LOTNUMBR IN
(
SELECT SERLTNUM
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND OVRSERLT = 1
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 6514;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
SELECT @LOTOVQTY = 0;
SELECT @LOTOVQTY = SUM(SERLTQTY)
FROM SOP10201
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND OVRSERLT = 1;
UPDATE IV00102
SET QTYONHND = QTYONHND - @LOTOVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @ITEMNMBR
AND LOCNCODE = @LOCNCODE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 6515;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYONHND = QTYONHND - @LOTOVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @ITEMNMBR
AND LOCNCODE = '';
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 6516;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF (
(@ITEMTYPE = 3)
AND (@DeleteType <> 999)
AND
(
SELECT COUNT(a.ITEMNMBR)
FROM SOP10200 a (NOLOCK)
JOIN IV00101 b (NOLOCK)
ON a.ITEMNMBR = b.ITEMNMBR
WHERE a.SOPNUMBE = @I_vSOPNUMBE
AND a.SOPTYPE = @I_vSOPTYPE
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.CMPNTSEQ <> 0
AND b.ITMTRKOP = 2
) > 0
)
BEGIN
DECLARE @KitSerSOPNUMBE CHAR(21),
@KitSerSOPTYPE SMALLINT,
@KitSerLNITMSEQ INT,
@KitSerCMPNTSEQ INT,
@KitSerITEMNMBR CHAR(30),
@KitSerLOCNCODE CHAR(10);
DECLARE Kit_Ser CURSOR FOR(
SELECT a.SOPNUMBE,
a.SOPTYPE,
a.LNITMSEQ,
a.CMPNTSEQ,
a.ITEMNMBR,
a.LOCNCODE
FROM SOP10200 a (NOLOCK)
JOIN IV00101 b (NOLOCK)
ON a.ITEMNMBR = b.ITEMNMBR
WHERE a.SOPNUMBE = @I_vSOPNUMBE
AND a.SOPTYPE = @I_vSOPTYPE
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.CMPNTSEQ <> 0
AND b.ITMTRKOP = 2);
OPEN Kit_Ser;
FETCH NEXT FROM Kit_Ser
INTO @KitSerSOPNUMBE,
@KitSerSOPTYPE,
@KitSerLNITMSEQ,
@KitSerCMPNTSEQ,
@KitSerITEMNMBR,
@KitSerLOCNCODE;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE IV00200
SET SERLNSLD = 0
FROM IV00200 (UPDLOCK)
WHERE ITEMNMBR = @KitSerITEMNMBR
AND SERLNMBR IN
(
SELECT SERLTNUM
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @KitSerSOPTYPE
AND SOPNUMBE = @KitSerSOPNUMBE
AND LNITMSEQ = @KitSerLNITMSEQ
AND CMPNTSEQ = @KitSerCMPNTSEQ
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11858;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF EXISTS
(
SELECT 1
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @KitSerSOPTYPE
AND SOPNUMBE = @KitSerSOPNUMBE
AND LNITMSEQ = @KitSerLNITMSEQ
AND CMPNTSEQ = @KitSerCMPNTSEQ
AND OVRSERLT = 1
)
BEGIN
DELETE IV00200
WHERE SERLNMBR IN
(
SELECT SERLTNUM
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @KitSerSOPTYPE
AND SOPNUMBE = @KitSerSOPNUMBE
AND LNITMSEQ = @KitSerLNITMSEQ
AND CMPNTSEQ = @KitSerCMPNTSEQ
AND OVRSERLT = 1
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11859;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
SELECT @SEROVQTY = 0;
SELECT @SEROVQTY = SUM(SERLTQTY)
FROM SOP10201
WHERE SOPTYPE = @KitSerSOPTYPE
AND SOPNUMBE = @KitSerSOPNUMBE
AND LNITMSEQ = @KitSerLNITMSEQ
AND CMPNTSEQ = @KitSerCMPNTSEQ
AND OVRSERLT = 1;
UPDATE IV00102
SET QTYONHND = QTYONHND - @SEROVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @KitSerITEMNMBR
AND LOCNCODE = @KitSerLOCNCODE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11860;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYONHND = QTYONHND - @SEROVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @KitSerITEMNMBR
AND LOCNCODE = '';
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11861;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
FETCH NEXT FROM Kit_Ser
INTO @KitSerSOPNUMBE,
@KitSerSOPTYPE,
@KitSerLNITMSEQ,
@KitSerCMPNTSEQ,
@KitSerITEMNMBR,
@KitSerLOCNCODE;
END;
CLOSE Kit_Ser;
DEALLOCATE Kit_Ser;
END;
IF (
(@ITEMTYPE = 3)
AND (@DeleteType <> 999)
AND
(
SELECT COUNT(a.ITEMNMBR)
FROM SOP10200 a (NOLOCK)
JOIN IV00101 b (NOLOCK)
ON a.ITEMNMBR = b.ITEMNMBR
WHERE a.SOPNUMBE = @I_vSOPNUMBE
AND a.SOPTYPE = @I_vSOPTYPE
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.CMPNTSEQ <> 0
AND b.ITMTRKOP = 3
) > 0
)
BEGIN
DECLARE @KitLotSOPNUMBE CHAR(21),
@KitLotSOPTYPE SMALLINT,
@KitLotLNITMSEQ INT,
@KitLotCMPNTSEQ INT,
@KitLotITEMNMBR CHAR(30),
@KitLotLOCNCODE CHAR(10);
DECLARE Kit_Lot CURSOR FOR(
SELECT a.SOPNUMBE,
a.SOPTYPE,
a.LNITMSEQ,
a.CMPNTSEQ,
a.ITEMNMBR,
a.LOCNCODE
FROM SOP10200 a (NOLOCK)
JOIN IV00101 b (NOLOCK)
ON a.ITEMNMBR = b.ITEMNMBR
WHERE a.SOPNUMBE = @I_vSOPNUMBE
AND a.SOPTYPE = @I_vSOPTYPE
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.CMPNTSEQ <> 0
AND b.ITMTRKOP = 3);
OPEN Kit_Lot;
FETCH NEXT FROM Kit_Lot
INTO @KitLotSOPNUMBE,
@KitLotSOPTYPE,
@KitLotLNITMSEQ,
@KitLotCMPNTSEQ,
@KitLotITEMNMBR,
@KitLotLOCNCODE;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE a
SET a.ATYALLOC = a.ATYALLOC - c.SERLTQTY,
a.LTNUMSLD = 0
FROM IV00300 a (UPDLOCK),
SOP10201 b (NOLOCK),
(
SELECT a.ITEMNMBR,
a.LOCNCODE,
a.QTYTYPE,
a.DATERECD,
a.DTSEQNUM,
SUM(b.SERLTQTY) AS 'SERLTQTY'
FROM IV00300 a (NOLOCK),
SOP10201 b (NOLOCK)
WHERE b.SOPTYPE = @KitLotSOPTYPE
AND b.SOPNUMBE = @KitLotSOPNUMBE
AND b.LNITMSEQ = @KitLotLNITMSEQ
AND b.CMPNTSEQ = @KitLotCMPNTSEQ
AND a.DATERECD = b.DATERECD
AND a.DTSEQNUM = b.DTSEQNUM
AND a.LOTNUMBR = b.SERLTNUM
AND a.LOCNCODE = @KitSerLOCNCODE
AND a.ITEMNMBR = b.ITEMNMBR
AND a.QTYTYPE = b.QTYTYPE
GROUP BY a.ITEMNMBR,
a.LOCNCODE,
a.QTYTYPE,
a.DATERECD,
a.DTSEQNUM
) c
WHERE b.SOPTYPE = @KitLotSOPTYPE
AND b.SOPNUMBE = @KitLotSOPNUMBE
AND b.LNITMSEQ = @KitLotLNITMSEQ
AND b.CMPNTSEQ = @KitLotCMPNTSEQ
AND a.DATERECD = b.DATERECD
AND a.DTSEQNUM = b.DTSEQNUM
AND a.LOTNUMBR = b.SERLTNUM
AND a.LOCNCODE = @KitSerLOCNCODE
AND a.ITEMNMBR = b.ITEMNMBR
AND a.QTYTYPE = b.QTYTYPE
AND c.ITEMNMBR = a.ITEMNMBR
AND c.LOCNCODE = a.LOCNCODE
AND c.QTYTYPE = a.QTYTYPE
AND c.DATERECD = a.DATERECD
AND c.DTSEQNUM = a.DTSEQNUM;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11862;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF EXISTS
(
SELECT 1
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @KitLotSOPTYPE
AND SOPNUMBE = @KitLotSOPNUMBE
AND LNITMSEQ = @KitLotLNITMSEQ
AND CMPNTSEQ = @KitLotCMPNTSEQ
AND OVRSERLT = 1
)
BEGIN
DELETE IV00300
WHERE LOTNUMBR IN
(
SELECT SERLTNUM
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @KitLotSOPTYPE
AND SOPNUMBE = @KitLotSOPNUMBE
AND LNITMSEQ = @KitLotLNITMSEQ
AND CMPNTSEQ = @KitLotCMPNTSEQ
AND OVRSERLT = 1
);
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11863;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
SELECT @LOTOVQTY = 0;
SELECT @LOTOVQTY = SUM(SERLTQTY)
FROM SOP10201
WHERE SOPTYPE = @KitLotSOPTYPE
AND SOPNUMBE = @KitLotSOPNUMBE
AND LNITMSEQ = @KitLotLNITMSEQ
AND CMPNTSEQ = @KitLotCMPNTSEQ
AND OVRSERLT = 1;
UPDATE IV00102
SET QTYONHND = QTYONHND - @LOTOVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @KitLotITEMNMBR
AND LOCNCODE = @KitSerLOCNCODE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11864;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYONHND = QTYONHND - @LOTOVQTY
FROM IV00102 (UPDLOCK)
WHERE ITEMNMBR = @KitLotITEMNMBR
AND LOCNCODE = '';
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 11865;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
FETCH NEXT FROM Kit_Lot
INTO @KitLotSOPNUMBE,
@KitLotSOPTYPE,
@KitLotLNITMSEQ,
@KitLotCMPNTSEQ,
@KitLotITEMNMBR,
@KitLotLOCNCODE;
END;
CLOSE Kit_Lot;
DEALLOCATE Kit_Lot;
END;
END;
IF (@I_vDeleteType = 1)
BEGIN
DELETE SOP10105
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 420;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
DELETE SOP10202
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 751;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
DELETE SOP10200
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 419;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF (@ENABLEMULTIBIN = 1)
BEGIN
DELETE SOP10203
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 5999;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF (@DeleteType <> 999)
BEGIN
DELETE SOP10201
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 421;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
ELSE
BEGIN
DELETE SOP10200
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 3454;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF (@ENABLEMULTIBIN = 1)
BEGIN
DELETE SOP10203
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 3563;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF (@DeleteType <> 999)
BEGIN
DELETE SOP10201
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 3455;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF (@I_vSOPTYPE IN ( 1, 2, 3, 6 ))
BEGIN
IF ((@I_vDeleteType = 2) AND (@CALCKITC = 1) AND (@mylock = 1))
BEGIN
SELECT @KITEXTDCOST = ROUND(SUM(EXTDCOST), @FUNDECPLCUR - 1)
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ > 0;
SELECT @KITQUANTITY = QUANTITY
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0;
IF (@KITQUANTITY = 0)
BEGIN
SELECT @KITUNITCOST = 0;
END;
ELSE
BEGIN
SELECT @KITUNITCOST = ABS(ISNULL(ROUND(SUM(UNITCOST * QUANTITY) / @KITQUANTITY, @KITITEMFUNCTDEC), 0))
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ <> 0;
END;
IF (@KITPRICMTHD IN ( 3, 4, 5, 6 ))
BEGIN
SELECT @fieldupdate = 1;
SELECT @KITUOMPRICE = UOMPRICE / 100
FROM IV00108 (NOLOCK)
WHERE ITEMNMBR = @KITITEM
AND CURNCYID = @FUNLCURR
AND PRCLEVEL = @KITPRCLEVEL
AND UOFM = @KITUOFM
AND FROMQTY <= @KITQUANTITY
AND TOQTY >= @KITQUANTITY;
IF (@KITPRICMTHD = 3)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND((SUM(b.CURRCOST * a.QUANTITY) / @KITQUANTITY), @KITITEMFUNCTDEC)
* ISNULL(ROUND(1 + @KITUOMPRICE, @KITITEMFUNCTDEC), 0),
@KITITEMFUNCTDEC
)
FROM SOP10200 a,
IV00101 b,
IV40202 c
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.SOPTYPE = @I_vSOPTYPE
AND a.SOPNUMBE = @I_vSOPNUMBE
AND a.CMPNTSEQ > 0
AND c.UOMSCHDL = b.UOMSCHDL
AND c.UOFM = a.UOFM;
END;
ELSE
BEGIN
IF (@KITPRICMTHD = 4)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND((SUM(b.STNDCOST * a.QUANTITY) / @KITQUANTITY), @KITITEMFUNCTDEC)
* ISNULL(ROUND(1 + @KITUOMPRICE, @KITITEMFUNCTDEC), 0),
@KITITEMFUNCTDEC
)
FROM SOP10200 a,
IV00101 b,
IV40202 c
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.SOPTYPE = @I_vSOPTYPE
AND a.SOPNUMBE = @I_vSOPNUMBE
AND a.CMPNTSEQ > 0
AND c.UOMSCHDL = b.UOMSCHDL
AND c.UOFM = a.UOFM;
END;
ELSE
BEGIN
IF (@KITPRICMTHD = 5)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND((SUM(b.CURRCOST * a.QUANTITY) / @KITQUANTITY), @KITITEMFUNCTDEC)
/ ISNULL(ROUND(1 - @KITUOMPRICE, @KITITEMFUNCTDEC), 0),
@KITITEMFUNCTDEC
)
FROM SOP10200 a,
IV00101 b,
IV40202 c
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.SOPTYPE = @I_vSOPTYPE
AND a.SOPNUMBE = @I_vSOPNUMBE
AND a.CMPNTSEQ > 0
AND c.UOMSCHDL = b.UOMSCHDL
AND c.UOFM = a.UOFM;
END;
ELSE
BEGIN
IF (@KITPRICMTHD = 6)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND((SUM(b.STNDCOST * a.QUANTITY) / @KITQUANTITY), @KITITEMFUNCTDEC)
/ ISNULL(ROUND(1 - @KITUOMPRICE, @KITITEMFUNCTDEC), 0),
@KITITEMFUNCTDEC
)
FROM SOP10200 a,
IV00101 b,
IV40202 c
WHERE a.ITEMNMBR = b.ITEMNMBR
AND a.LNITMSEQ = @I_vLNITMSEQ
AND a.SOPTYPE = @I_vSOPTYPE
AND a.SOPNUMBE = @I_vSOPNUMBE
AND a.CMPNTSEQ > 0
AND c.UOMSCHDL = b.UOMSCHDL
AND c.UOFM = a.UOFM;
END;
END;
END;
IF (@UNITPRCE IS NULL)
BEGIN
SELECT @UNITPRCE = 0;
END;
END;
IF (@ISMCTRX = 1)
BEGIN
IF (@RTCLCMTD = 0)
BEGIN
SELECT @USEUNITPRCE
= ROUND(ROUND(@UNITPRCE / @XCHGRATE, (@ODECPLCU - 1)) * @XCHGRATE, (@DECPLCUR - 1));
END;
ELSE
BEGIN
SELECT @USEUNITPRCE
= ROUND(ROUND(@UNITPRCE * @XCHGRATE, (@ODECPLCU - 1)) / @XCHGRATE, (@DECPLCUR - 1));
END;
END;
SELECT @KITXTNDPRCE = ISNULL(ROUND(QUANTITY * (@USEUNITPRCE - MRKDNAMT), @FUNDECPLCUR), 0)
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0;
SELECT @XTNDPRCECHG = @XTNDPRCEExst - @KITXTNDPRCE,
@stoprecalc = 1;
UPDATE RM00103
SET ONORDAMT = ONORDAMT - @XTNDPRCECHG
FROM RM00103 (UPDLOCK)
WHERE CUSTNMBR = @CUSTNMBR;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 3447;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
SELECT @XTNDPRCE = ISNULL(ROUND(QUANTITY * (@USEUNITPRCE - MRKDNAMT), @FUNDECPLCUR), 0)
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0;
UPDATE SOP10200
SET UNITCOST = CASE
WHEN @fieldupdate = 1 THEN
@KITUNITCOST
ELSE
0
END,
ORUNTCST = CASE
WHEN @fieldupdate = 1
AND @ISMCTRX = 1 THEN
0
ELSE
@KITUNITCOST
END,
EXTDCOST = CASE
WHEN @fieldupdate = 1 THEN
@KITEXTDCOST
ELSE
0
END,
OREXTCST = CASE
WHEN @fieldupdate = 1
AND @ISMCTRX = 1 THEN
0
ELSE
@KITEXTDCOST
END,
UNITPRCE = CASE
WHEN @fieldupdate = 1 THEN
@UNITPRCE
ELSE
UNITPRCE
END,
ORUNTPRC = CASE
WHEN @fieldupdate = 1
AND @ISMCTRX = 1 THEN
0
ELSE
ORUNTPRC
END,
XTNDPRCE = CASE
WHEN @fieldupdate = 1 THEN
@XTNDPRCE
ELSE
XTNDPRCE
END,
OXTNDPRC = CASE
WHEN @fieldupdate = 1
AND @ISMCTRX = 1 THEN
0
ELSE
OXTNDPRC
END,
REMPRICE = CASE
WHEN @fieldupdate = 1 THEN
@XTNDPRCE
ELSE
REMPRICE
END,
OREPRICE = CASE
WHEN @fieldupdate = 1 THEN
@XTNDPRCE
ELSE
OREPRICE
END
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 3450;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF (@mylock = 1)
BEGIN
SELECT @ORTDISAM = ORTDISAM,
@TRDISPCT = TRDISPCT,
@PYMTRMID = PYMTRMID,
@DUEDATE = DUEDATE,
@DISCDATE = DISCDATE,
@DSCPCTAM = DSCPCTAM / 100,
@CHGAMNT = SUBTOTAL,
@PRSTADCD = PRSTADCD,
@ADDRESS1 = ADDRESS1,
@ADDRESS2 = ADDRESS2,
@ADDRESS3 = ADDRESS3,
@CNTCPRSN = CNTCPRSN,
@FAXNUMBR = FAXNUMBR,
@CITY = CITY,
@STATE = STATE,
@ZIPCODE = ZIPCODE,
@COUNTRY = COUNTRY,
@PHNUMBR1 = PHNUMBR1,
@PHNUMBR2 = PHNUMBR2,
@PHNUMBR3 = PHONE3,
@SHIPMTHD = SHIPMTHD
FROM SOP10100 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE;
IF (@TRDISPCT > 0)
BEGIN
SELECT @TRDISPCT = @TRDISPCT / 100.00,
@ORTDISAM = NULL;
END;
IF (@TRDISPCT = 0)
BEGIN
SELECT @ORTDISAM = @ORTDISAM,
@TRDISPCT = NULL;
END;
UPDATE SOP10100
SET Flags = Flags | 8
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 5340;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
EXEC @iStatus = taSopHdrRecalc @I_vSOPTYPE = @I_vSOPTYPE,
@I_vSOPNUMBE = @I_vSOPNUMBE,
@I_vSHIPMTHD = @SHIPMTHD,
@I_vPYMTRMID = @PYMTRMID,
@I_vPRSTADCD = @PRSTADCD,
@I_vADDRESS1 = @ADDRESS1,
@I_vADDRESS2 = @ADDRESS2,
@I_vADDRESS3 = @ADDRESS3,
@I_vCNTCPRSN = @CNTCPRSN,
@I_vFAXNUMBR = @FAXNUMBR,
@I_vCITY = @CITY,
@I_vSTATE = @STATE,
@I_vZIPCODE = @ZIPCODE,
@I_vCOUNTRY = @COUNTRY,
@I_vPHNUMBR1 = @PHNUMBR1,
@I_vPHNUMBR2 = @PHNUMBR2,
@I_vPHNUMBR3 = @PHNUMBR3,
@I_vDUEDATE = @DUEDATE,
@I_vDISCDATE = @DISCDATE,
@I_vTRDISAMT = @ORTDISAM,
@I_vTRADEPCT = @TRDISPCT,
@I_vRECREATEDIST = @I_vRecreateDist,
@I_vRECREATECOMM = 1,
@I_vRECREATETAXES = 1,
@I_vRECALCBTCHTOT = @stoprecalc,
@I_vDSCPCTAM = @DSCPCTAM,
@I_vCHGAMNT = @CHGAMNT,
@O_iErrorState = @taSopHdrRecalcErrState OUTPUT,
@oErrString = @taSopHdrRecalcErrString OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@taSopHdrRecalcErrState <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @taSopHdrRecalcErrString;
SELECT @O_iErrorState = 2263;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
BREAK;
END;
IF (@mylock = 1)
BEGIN
EXEC @iStatus = DYNAMICS..taDEXLOCKS @I_vOperation = 3,
@I_vtable_path_name = @SOPHdrTbl,
@I_vrow_id = @DexRowID,
@O_oExists = @oExists OUTPUT,
@O_oInsertStatus = @OInsStatus OUTPUT,
@O_iErrorState = @DexLockErrorState OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@DexLockErrorState <> 0) OR (@iError <> 0))
BEGIN
IF (@DexLockErrorState <> 0)
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @DexLockErrorState;
END;
SELECT @O_iErrorState = 2223;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
EXEC @iStatus = taSopLineDeletePost @I_vSOPTYPE,
@I_vSOPNUMBE,
@I_vLNITMSEQ,
@I_vITEMNMBR,
@I_vRequesterTrx,
@I_vRecreateDist,
@I_vCMPNTSEQ,
@I_vDeleteType,
@I_vUSRDEFND1,
@I_vUSRDEFND2,
@I_vUSRDEFND3,
@I_vUSRDEFND4,
@I_vUSRDEFND5,
@O_iErrorState = @taSopLineDeletePostErrState OUTPUT,
@oErrString = @taSopLineDeletePostErrString OUTPUT;
SELECT @iError = @@error;
IF (
(@iStatus <> 0)
OR (@taSopLineDeletePostErrState <> 0)
OR (@iError <> 0)
)
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @taSopLineDeletePostErrString;
SELECT @O_iErrorState = 785;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
IF (@I_vRequesterTrx = 0)
BEGIN
EXEC @iStatus = eConnectOutVerify @I_vDOCTYPE = 'Sales_Transaction',
@I_vINDEX1 = @I_vSOPNUMBE,
@I_vINDEX2 = @I_vSOPTYPE,
@I_vINDEX3 = '',
@I_vINDEX4 = '',
@I_vINDEX5 = '',
@I_vINDEX6 = '',
@I_vINDEX7 = '',
@I_vINDEX8 = '',
@I_vINDEX9 = '',
@I_vINDEX10 = '',
@I_vINDEX11 = '',
@I_vINDEX12 = '',
@I_vINDEX13 = '',
@I_vINDEX14 = '',
@I_vINDEX15 = '',
@I_vDelete = 1,
@O_iErrorState = @iCustomState OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@iCustomState <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @iCustomState;
SELECT @O_iErrorState = 2783;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
RETURN (@O_iErrorState);