ALTER PROCEDURE [dbo].[taSopLineIvcInsertComponent]
@I_vSOPTYPE SMALLINT,
@I_vSOPNUMBE CHAR(21),
@I_vUSERDATE DATETIME = '',
@I_vLOCNCODE CHAR(10) = '',
@I_vLNITMSEQ INT,
@I_vITEMNMBR CHAR(30),
@I_vAutoAssignBin SMALLINT = 1,
@I_vITEMDESC CHAR(100) = '',
@I_vQUANTITY NUMERIC(19, 5),
@I_vQTYTBAOR NUMERIC(19, 5) = 0,
@I_vQTYCANCE NUMERIC(19, 5) = 0,
@I_vQTYFULFI NUMERIC(19, 5) = NULL,
@I_vQUOTEQTYTOINV NUMERIC(19, 5) = 0,
@I_vQTYONHND NUMERIC(19, 5) = 0,
@I_vQTYRTRND NUMERIC(19, 5) = 0,
@I_vQTYINUSE NUMERIC(19, 5) = 0,
@I_vQTYINSVC NUMERIC(19, 5) = 0,
@I_vQTYDMGED NUMERIC(19, 5) = 0,
@I_vCUSTNMBR CHAR(15),
@I_vDOCID CHAR(15) = '',
@I_vUNITCOST NUMERIC(19, 5) = NULL,
@I_vNONINVEN SMALLINT = 0,
@I_vAUTOALLOCATESERIAL INT = 0,
@I_vAUTOALLOCATELOT INT = 0,
@I_vCMPNTSEQ INT = 0,
@I_vCMPITUOM CHAR(9) = '',
@I_vCURNCYID CHAR(15) = '',
@I_vUpdateIfExists SMALLINT = 0,
@I_vRecreateDist SMALLINT = 0,
@I_vRequesterTrx SMALLINT = 0,
@I_vQtyShrtOpt SMALLINT = 2,
@I_vRECREATECOMM SMALLINT = 0,
@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 CHAR(255) OUTPUT
AS
SET DEADLOCK_PRIORITY LOW;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
DECLARE @tCURNCYID CHAR(15),
@RNDGAMNT NUMERIC(19, 5),
@ROUNDTO SMALLINT,
@ROUNDHOW SMALLINT,
@LOFSGMNTALL INT,
@NEW_ACCNT_STRING VARCHAR(100),
@MAXSEG INT,
@ACTINDX INT,
@LOFSGMNTEND INT,
@LOFSGMNT INT,
@ACSEGSEP CHAR(1),
@ACSGFLOC SMALLINT,
@ACCNT_STRING CHAR(100),
@Location_Segment CHAR(67),
@ITMTRKOP SMALLINT,
@DECPLQTY SMALLINT,
@DECPLCUR SMALLINT,
@ITEMTYPE INT,
@EXTQTYAL NUMERIC(19, 5),
@PriceGroup CHAR(11),
@QTYDMGED NUMERIC(19, 5),
@ATYALLOC NUMERIC(19, 5),
@INVINDX INT,
@CSLSINDX INT,
@SLSINDX INT,
@MKDNINDX INT,
@RTNSINDX INT,
@INUSINDX INT,
@INSRINDX INT,
@DMGDINDX INT,
@RMSLSACC INT,
@RMCOSACC INT,
@UNITCOST NUMERIC(19, 5),
@KITUOFM CHAR(8),
@QTYBSUOM NUMERIC(19, 5),
@KITQTYBSUOM NUMERIC(19, 5),
@UOMSCHDL CHAR(10),
@KITUOMSCHDL CHAR(10),
@KITUOFMBASE CHAR(8),
@ITEMDESC CHAR(100),
@dtDEFAULT DATETIME,
@MSTRNUMB INT,
@BCHSOURC CHAR(15),
@DOCID CHAR(15),
@USDOCID1 CHAR(15),
@USDOCID2 CHAR(15),
@DOCAMNT NUMERIC(19, 5),
@iStatus INT,
@iError INT,
@O_oErrorState INT,
@iUpdDstLine4ErrState INT,
@iCustomStatePre INT,
@iCustomErrStringPre CHAR(255),
@iCustomStatePost INT,
@iCustomErrStringPost CHAR(255),
@USEACFRM SMALLINT,
@ALLOCABY SMALLINT,
@USPFULPR SMALLINT,
@KITITEMNMBR CHAR(30),
@iCustomState INT,
@ALLOCATED NUMERIC(19, 5),
@KITITEMTYPE INT,
@IVSLRNIX INT,
@QTTYALLOC NUMERIC(19, 5),
@QTYAVL NUMERIC(19, 5),
@QTYTOBO NUMERIC(19, 5),
@LotsToAllocate NUMERIC(19, 5),
@serialstoallocate NUMERIC(19, 5),
@SERIALQUANTITY NUMERIC(19, 5),
@LOTQUANTITY NUMERIC(19, 5),
@LOTQTY NUMERIC(19, 5),
@SERIALQTY NUMERIC(19, 5),
@SOP10201COUNTSERIAL SMALLINT,
@LineCount INT,
@ENABLEMULTIBIN SMALLINT,
@BinFulfillQty NUMERIC(19, 5),
@BinQtyAvail NUMERIC(19, 5),
@BIN CHAR(15),
@BinQtyType SMALLINT,
@taSopLineDeleteErrState INT,
@taSopLineDeleteErrString CHAR(255),
@EXTDCOST NUMERIC(19, 5),
@TOTALQTY NUMERIC(19, 5),
@KITEXTDCOST NUMERIC(19, 5),
@KITQUANTITY NUMERIC(19, 5),
@CURRNIDX SMALLINT,
@CMPITQTY NUMERIC(19, 5),
@serialsallocated NUMERIC(19, 5),
@VCTNMTHD SMALLINT,
@SERLTNUM CHAR(20),
@QTYTYPE SMALLINT,
@DTSEQNUM SMALLINT,
@DATERECD DATETIME,
@iCustomErrString CHAR(255),
@SOP10201COUNT SMALLINT,
@DROPSHIP SMALLINT,
@count INT,
@ReqShipDate DATETIME,
@SOPHdrTbl CHAR(18),
@DexRowID INT,
@oExists INT,
@OInsStatus INT,
@mylock TINYINT,
@DexLockErrorState INT,
@currdate DATETIME,
@LOCNCODE CHAR(10),
@ISMCTRX INT,
@FUNCRIDX INT,
@lock CHAR(30),
@exists TINYINT,
@hdrexists TINYINT,
@cmpexists TINYINT,
@DeleteType INT,
@PRICMTHD SMALLINT,
@CALCKITC TINYINT,
@UOMPRICE NUMERIC(19, 5),
@UNITPRCE NUMERIC(19, 5),
@PRCLEVEL CHAR(10),
@fieldupdate TINYINT,
@XTNDPRCE NUMERIC(19, 5),
@KITDECPLCUR INT,
@FUNLCURR CHAR(15),
@ITEMFUNCTDEC INT,
@KITITEMFUNCTDEC INT,
@FUNDECPLCUR INT,
@EDITDECPLCUR INT,
@KITUNITCOST NUMERIC(19, 5),
@ORTDISAM NUMERIC(19, 5),
@TRDISPCT NUMERIC(19, 5),
@PYMTRMID CHAR(20),
@DUEDATE DATETIME,
@DISCDATE DATETIME,
@DSCPCTAM NUMERIC(19, 5),
@SopHdrUpdateState INT,
@SopHdrUpdateErrString CHAR(255),
@CHGAMNT NUMERIC(19, 5),
@ISMCREG TINYINT,
@SOP10201QTYONHND NUMERIC(19, 5),
@SOP10201QTYRTRND NUMERIC(19, 5),
@SOP10201QTYINUSE NUMERIC(19, 5),
@SOP10201QTYINSVC NUMERIC(19, 5),
@SOP10201QTYDMGED NUMERIC(19, 5),
@LOCNCODEPassed SMALLINT,
@LOCNCODELINE CHAR(10),
@PRSTADCD CHAR(15),
@ADDRESS1 CHAR(30),
@ADDRESS2 CHAR(30),
@ADDRESS3 CHAR(30),
@CNTCPRSN CHAR(30),
@FAXNUMBR CHAR(21),
@CITY CHAR(30),
@STATE CHAR(29),
@ZIPCODE CHAR(10),
@COUNTRY CHAR(20),
@PHNUMBR1 CHAR(21),
@PHNUMBR2 CHAR(21),
@PHNUMBR3 CHAR(21),
@SHIPMTHD CHAR(15),
@SALSTERR CHAR(15),
@SLPRSNID CHAR(15),
@UPSZONE CHAR(3),
@TAXEXMT1 CHAR(25),
@TAXEXMT2 CHAR(25),
@TXRGNNUM CHAR(25),
@KTACCTSR TINYINT,
@KITIVCOGSIX INT,
@STOP INT,
@RECALCBTCHTOT INT,
@QTYCANCE NUMERIC(19, 5),
@OLDKITXTNDPRCE NUMERIC(19, 5),
@SITEINACTIVE TINYINT,
@ITEMSITEINACTIVE TINYINT;
SELECT @tCURNCYID = '',
@ROUNDTO = 0,
@ROUNDHOW = 0,
@RNDGAMNT = 0,
@O_iErrorState = 0,
@LOFSGMNTALL = 0,
@NEW_ACCNT_STRING = '',
@MAXSEG = 0,
@ACTINDX = 0,
@LOFSGMNTEND = 0,
@LOFSGMNT = 0,
@ACSEGSEP = '',
@ACSGFLOC = 0,
@ACCNT_STRING = '',
@Location_Segment = '',
@ITMTRKOP = 0,
@DECPLQTY = 0,
@DECPLCUR = 0,
@ITEMTYPE = 0,
@EXTQTYAL = 0,
@PriceGroup = '',
@INVINDX = 0,
@CSLSINDX = 0,
@SLSINDX = 0,
@MKDNINDX = 0,
@RTNSINDX = 0,
@INUSINDX = 0,
@INSRINDX = 0,
@DMGDINDX = 0,
@RMSLSACC = 0,
@RMCOSACC = 0,
@UNITCOST = 0,
@KITUOFM = '',
@QTYBSUOM = 1,
@KITQTYBSUOM = 0,
@UOMSCHDL = '',
@KITUOMSCHDL = '',
@KITUOFMBASE = '',
@ITEMDESC = '',
@dtDEFAULT = '',
@MSTRNUMB = 0,
@BCHSOURC = '',
@DOCID = '',
@USDOCID1 = '',
@USDOCID2 = '',
@DOCAMNT = 0,
@iStatus = 0,
@iError = 0,
@O_oErrorState = 0,
@iUpdDstLine4ErrState = 0,
@iCustomStatePre = 0,
@iCustomErrStringPre = '',
@iCustomStatePost = 0,
@iCustomErrStringPost = '',
@USEACFRM = 0,
@ALLOCABY = 0,
@USPFULPR = 0,
@KITITEMNMBR = '',
@iCustomState = 0,
@ALLOCATED = 0,
@KITITEMTYPE = 0,
@IVSLRNIX = 0,
@QTTYALLOC = 0,
@QTYAVL = 0,
@QTYTOBO = 0,
@LotsToAllocate = 0,
@serialstoallocate = 0,
@SERIALQUANTITY = 0,
@LOTQUANTITY = 0,
@LOTQTY = 0,
@SERIALQTY = 0,
@SOP10201COUNTSERIAL = 0,
@LineCount = 0,
@ENABLEMULTIBIN = 0,
@BinFulfillQty = 0,
@BinQtyAvail = 0,
@BIN = '',
@BinQtyType = 1,
@taSopLineDeleteErrState = 0,
@taSopLineDeleteErrString = '',
@EXTDCOST = 0,
@TOTALQTY = 0,
@KITEXTDCOST = 0,
@KITQUANTITY = 0,
@CURRNIDX = 0,
@CMPITQTY = 0,
@serialsallocated = 0,
@VCTNMTHD = 0,
@SERLTNUM = '',
@QTYTYPE = 1,
@DTSEQNUM = 0,
@DATERECD = '',
@iCustomErrString = '',
@SOP10201COUNT = 0,
@DROPSHIP = 0,
@count = 0,
@ReqShipDate = '',
@SOPHdrTbl = '',
@DexRowID = 0,
@oExists = 0,
@OInsStatus = 0,
@mylock = 0,
@DexLockErrorState = 0,
@currdate = CONVERT(VARCHAR(12), GETDATE()),
@LOCNCODE = '',
@ISMCTRX = 0,
@FUNCRIDX = 0,
@lock = '',
@exists = 0,
@hdrexists = 0,
@cmpexists = 0,
@DeleteType = 0,
@PRICMTHD = 0,
@CALCKITC = 0,
@UOMPRICE = 0,
@UNITPRCE = 0,
@PRCLEVEL = '',
@fieldupdate = 0,
@XTNDPRCE = 0,
@KITDECPLCUR = 0,
@FUNLCURR = '',
@ITEMFUNCTDEC = 0,
@KITITEMFUNCTDEC = 0,
@FUNDECPLCUR = 0,
@EDITDECPLCUR = 2,
@KITUNITCOST = 0,
@DSCPCTAM = 0,
@SopHdrUpdateState = 0,
@SopHdrUpdateErrString = '',
@CHGAMNT = 0,
@ISMCREG = 1,
@SOP10201QTYONHND = 0,
@SOP10201QTYRTRND = 0,
@SOP10201QTYINUSE = 0,
@SOP10201QTYINSVC = 0,
@SOP10201QTYDMGED = 0,
@LOCNCODEPassed = 1,
@LOCNCODELINE = '',
@PRSTADCD = '',
@ADDRESS1 = '',
@ADDRESS2 = '',
@ADDRESS3 = '',
@CNTCPRSN = '',
@FAXNUMBR = '',
@CITY = '',
@STATE = '',
@ZIPCODE = '',
@COUNTRY = '',
@PHNUMBR1 = '',
@PHNUMBR2 = '',
@PHNUMBR3 = '',
@SHIPMTHD = '',
@SALSTERR = '',
@SLPRSNID = '',
@UPSZONE = '',
@TAXEXMT1 = '',
@TAXEXMT2 = '',
@TXRGNNUM = '',
@KTACCTSR = 0,
@KITIVCOGSIX = 0,
@STOP = 0,
@RECALCBTCHTOT = 2,
@QTYCANCE = 0,
@OLDKITXTNDPRCE = 0,
@SITEINACTIVE = 0,
@ITEMSITEINACTIVE = 0;
IF (@oErrString IS NULL)
BEGIN
SELECT @oErrString = '';
END;
EXEC @iStatus = taSopLineIvcInsertComponentPre @I_vSOPTYPE OUTPUT,
@I_vSOPNUMBE OUTPUT,
@I_vUSERDATE OUTPUT,
@I_vLOCNCODE OUTPUT,
@I_vLNITMSEQ OUTPUT,
@I_vITEMNMBR OUTPUT,
@I_vAutoAssignBin OUTPUT,
@I_vITEMDESC OUTPUT,
@I_vQUANTITY OUTPUT,
@I_vQTYTBAOR OUTPUT,
@I_vQTYCANCE OUTPUT,
@I_vQTYFULFI OUTPUT,
@I_vQUOTEQTYTOINV OUTPUT,
@I_vQTYONHND OUTPUT,
@I_vQTYRTRND OUTPUT,
@I_vQTYINUSE OUTPUT,
@I_vQTYINSVC OUTPUT,
@I_vQTYDMGED OUTPUT,
@I_vCUSTNMBR OUTPUT,
@I_vDOCID OUTPUT,
@I_vUNITCOST OUTPUT,
@I_vNONINVEN OUTPUT,
@I_vAUTOALLOCATESERIAL OUTPUT,
@I_vAUTOALLOCATELOT OUTPUT,
@I_vCMPNTSEQ OUTPUT,
@I_vCMPITUOM OUTPUT,
@I_vCURNCYID OUTPUT,
@I_vUpdateIfExists OUTPUT,
@I_vRecreateDist OUTPUT,
@I_vRequesterTrx OUTPUT,
@I_vQtyShrtOpt OUTPUT,
@I_vRECREATECOMM OUTPUT,
@I_vUSRDEFND1 OUTPUT,
@I_vUSRDEFND2 OUTPUT,
@I_vUSRDEFND3 OUTPUT,
@I_vUSRDEFND4 OUTPUT,
@I_vUSRDEFND5 OUTPUT,
@O_iErrorState = @iCustomStatePre OUTPUT,
@oErrString = @iCustomErrStringPre OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@iCustomStatePre <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @iCustomErrStringPre;
SELECT @O_iErrorState = 3424;
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_vLOCNCODE IS NULL)
OR (@I_vLNITMSEQ IS NULL)
OR (@I_vITEMNMBR IS NULL)
OR (@I_vITEMDESC IS NULL)
OR (@I_vQUANTITY IS NULL)
OR (@I_vQTYTBAOR IS NULL)
OR (@I_vQTYCANCE IS NULL)
OR (@I_vQUOTEQTYTOINV IS NULL)
OR (@I_vQTYONHND IS NULL)
OR (@I_vQTYRTRND IS NULL)
OR (@I_vQTYINUSE IS NULL)
OR (@I_vQTYINSVC IS NULL)
OR (@I_vQTYDMGED IS NULL)
OR (@I_vCUSTNMBR IS NULL)
OR (@I_vDOCID IS NULL)
OR (@I_vNONINVEN IS NULL)
OR (@I_vAUTOALLOCATESERIAL IS NULL)
OR (@I_vAUTOALLOCATELOT IS NULL)
OR (@I_vCMPNTSEQ IS NULL)
OR (@I_vCMPITUOM IS NULL)
OR (@I_vCURNCYID IS NULL)
OR (@I_vUpdateIfExists IS NULL)
OR (@I_vRecreateDist IS NULL)
OR (@I_vRequesterTrx IS NULL)
OR (@I_vQtyShrtOpt IS NULL)
)
BEGIN
SELECT @O_iErrorState = 191;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
IF (
(@I_vQTYTBAOR < 0)
OR (@I_vQTYCANCE < 0)
OR (@I_vQTYFULFI < 0)
OR (@I_vQUOTEQTYTOINV < 0)
OR (@I_vQTYONHND < 0)
OR (@I_vQTYRTRND < 0)
OR (@I_vQTYINUSE < 0)
OR (@I_vQTYINSVC < 0)
OR (@I_vQTYDMGED < 0)
OR (@I_vUNITCOST < 0)
)
BEGIN
SELECT @O_iErrorState = 452;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
SELECT @I_vSOPNUMBE = UPPER(@I_vSOPNUMBE),
@I_vLOCNCODE = UPPER(@I_vLOCNCODE),
@I_vITEMNMBR = UPPER(@I_vITEMNMBR),
@I_vCUSTNMBR = UPPER(@I_vCUSTNMBR),
@I_vDOCID = UPPER(@I_vDOCID),
@I_vCURNCYID = UPPER(@I_vCURNCYID);
IF (NOT EXISTS
(
SELECT 1
FROM tempdb..sysobjects
WHERE id =
(
SELECT OBJECT_ID('tempdb..#eConnectCalledFromSopLine')
)
)
)
BEGIN
IF (NOT EXISTS
(
SELECT 1
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0
)
)
BEGIN
SELECT @O_iErrorState = 193;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
ELSE
BEGIN
SELECT @exists = 1;
END;
END;
IF EXISTS
(
SELECT SOPNUMBE
FROM SOP10100 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
)
BEGIN
SELECT @hdrexists = 1;
END;
IF (
(@I_vSOPNUMBE = '')
OR (@I_vITEMNMBR = '')
OR (@I_vLNITMSEQ = 0)
OR (@I_vCUSTNMBR = '')
)
BEGIN
SELECT @O_iErrorState = 192;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vSOPTYPE < 1) OR (@I_vSOPTYPE > 6))
BEGIN
SELECT @O_iErrorState = 194;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vSOPTYPE <> 3)
AND (@I_vQUANTITY < 0)
BEGIN
SELECT @O_iErrorState = 7469;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vNONINVEN < 0) OR (@I_vNONINVEN > 1))
BEGIN
SELECT @O_iErrorState = 3905;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vAUTOALLOCATESERIAL < 0) OR (@I_vAUTOALLOCATESERIAL > 2))
BEGIN
SELECT @O_iErrorState = 3907;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vAUTOALLOCATELOT < 0) OR (@I_vAUTOALLOCATELOT > 2))
BEGIN
SELECT @O_iErrorState = 3909;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vUpdateIfExists < 0) OR (@I_vUpdateIfExists > 1))
BEGIN
SELECT @O_iErrorState = 4059;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vRecreateDist < 0) OR (@I_vRecreateDist > 1))
BEGIN
SELECT @O_iErrorState = 8129;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vRequesterTrx < 0) OR (@I_vRequesterTrx > 1))
BEGIN
SELECT @O_iErrorState = 6258;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vQtyShrtOpt NOT IN ( 1, 2, 3, 4, 5, 6 ))
BEGIN
SELECT @O_iErrorState = 6259;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vQtyShrtOpt IN ( 1, 3, 4, 5, 6 )) AND (@I_vSOPTYPE = 3))
BEGIN
SELECT @O_iErrorState = 6261;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vRECREATECOMM NOT IN ( 0, 1 ))
BEGIN
SELECT @O_iErrorState = 12002;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vUpdateIfExists = 0)
AND (@I_vRECREATECOMM = 1)
BEGIN
SELECT @O_iErrorState = 12008;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (NOT EXISTS
(
SELECT 1
FROM tempdb..sysobjects
WHERE id =
(
SELECT OBJECT_ID('tempdb..#eConnectCalledFromSopLine')
)
)
)
BEGIN
SELECT @KITITEMNMBR = ITEMNMBR,
@ALLOCATED = ATYALLOC,
@CURRNIDX = CURRNIDX,
@DROPSHIP = DROPSHIP,
@ReqShipDate = ReqShipDate,
@PRCLEVEL = PRCLEVEL,
@LOCNCODELINE = LOCNCODE
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0;
END;
ELSE
BEGIN
SELECT @KITITEMNMBR = KITITEMNMBR,
@ALLOCATED = ALLOCATED,
@CURRNIDX = CURRNIDX,
@DROPSHIP = DROPSHIP,
@ReqShipDate = ReqShipDate
FROM #eConnectCalledFromSopLine;
END;
SELECT @KITITEMTYPE = ITEMTYPE,
@PRICMTHD = PRICMTHD,
@KTACCTSR = KTACCTSR,
@KITIVCOGSIX = IVCOGSIX
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR;
IF (
(NOT EXISTS
(
SELECT TOP 1
CURNCYID
FROM IV00105 (NOLOCK)
WHERE CURNCYID <> ''
)
)
AND (NOT EXISTS
(
SELECT TOP 1
CURNCYID
FROM CM00100 (NOLOCK)
WHERE CURNCYID <> ''
)
)
)
BEGIN
SELECT @ISMCREG = 0;
END;
IF (@hdrexists = 0)
BEGIN
IF (@I_vCURNCYID = '')
BEGIN
SELECT @I_vCURNCYID = ISNULL(CURNCYID, '')
FROM RM00101 (NOLOCK)
WHERE CUSTNMBR = @I_vCUSTNMBR;
IF (@I_vCURNCYID = '')
BEGIN
SELECT @I_vCURNCYID = ISNULL(FUNLCURR, '')
FROM MC40000 (NOLOCK);
END;
END;
END;
ELSE
BEGIN
IF (@ISMCREG = 0)
BEGIN
SELECT @I_vCURNCYID = ISNULL(FUNLCURR, '')
FROM MC40000 (NOLOCK);
END;
ELSE
BEGIN
SELECT @I_vCURNCYID = CURNCYID
FROM SOP10100 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE;
END;
END;
SELECT @FUNLCURR = FUNLCURR
FROM MC40000 (NOLOCK);
IF ((@I_vCURNCYID <> '') AND (@I_vCURNCYID <> @FUNLCURR))
BEGIN
SELECT @ISMCTRX = 1;
END;
IF (@I_vCURNCYID = '')
BEGIN
SELECT @O_iErrorState = 8119;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
SELECT @FUNCRIDX = FUNCRIDX
FROM MC40000 (NOLOCK);
IF (@CURRNIDX <> @FUNCRIDX)
BEGIN
SELECT @ISMCTRX = 1;
END;
IF (@ALLOCATED > 0)
SELECT @ALLOCABY = 1;
ELSE
SELECT @ALLOCABY = 0;
IF (@I_vDOCID <> '')
BEGIN
IF (@I_vSOPTYPE <> 6)
BEGIN
SELECT @USPFULPR = USPFULPR
FROM SOP40200 (NOLOCK)
WHERE DOCID = @I_vDOCID
AND SOPTYPE = @I_vSOPTYPE;
END;
ELSE
BEGIN
SELECT @USPFULPR = USPFULPR
FROM SOP40200 (NOLOCK)
WHERE DOCID = @I_vDOCID
AND SOPTYPE = 3;
END;
END;
ELSE
BEGIN
SELECT @USPFULPR = 0;
END;
IF (@KITITEMTYPE <> 3)
BEGIN
SELECT @O_iErrorState = 831;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vLOCNCODE = '')
BEGIN
SELECT @LOCNCODEPassed = 0;
END;
IF (@LOCNCODEPassed = 0)
BEGIN
SELECT @I_vLOCNCODE = @LOCNCODELINE;
END;
IF (@I_vNONINVEN = 0)
BEGIN
SELECT @EXTQTYAL = CASE
WHEN QTYONHND - ATYALLOC > 0 THEN
QTYONHND - ATYALLOC
WHEN @I_vQUANTITY < 0 THEN
0
ELSE
0
END
FROM IV00102 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE;
SELECT @UOMSCHDL = UOMSCHDL,
@VCTNMTHD = VCTNMTHD
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR;
IF (@I_vCMPITUOM = '')
BEGIN
SELECT @I_vCMPITUOM = CMPITUOM
FROM IV00104 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CMPTITNM = @I_vITEMNMBR;
SELECT @count = @@rowcount;
IF (@count = 0)
BEGIN
SELECT @O_iErrorState = 3906;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@count > 1)
BEGIN
SELECT @O_iErrorState = 8117;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
SELECT @CMPITQTY = CMPITQTY
FROM IV00104 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CMPTITNM = @I_vITEMNMBR
AND CMPITUOM = @I_vCMPITUOM;
SELECT @QTYBSUOM = QTYBSUOM
FROM IV40202 (NOLOCK)
WHERE UOMSCHDL = @UOMSCHDL
AND UOFM = @I_vCMPITUOM;
SELECT @KITUOFM = SELNGUOM,
@KITUOMSCHDL = UOMSCHDL
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR;
SELECT @KITUOFMBASE = UOFM
FROM IV40202 (NOLOCK)
WHERE UOMSCHDL = @KITUOMSCHDL
AND QTYBSUOM = 1.00000;
SELECT @KITQTYBSUOM = QTYBSUOM
FROM IV40202 (NOLOCK)
WHERE UOMSCHDL = @KITUOMSCHDL
AND EQUIVUOM = @KITUOFMBASE
AND UOFM = @KITUOFM;
END;
ELSE
BEGIN
IF (@I_vCMPITUOM = '')
BEGIN
SELECT @I_vCMPITUOM = 'Each';
END;
END;
SELECT @TOTALQTY = @I_vQUANTITY + @I_vQTYCANCE + @I_vQTYTBAOR + @I_vQUOTEQTYTOINV;
IF (
(@I_vNONINVEN = 0)
AND (@I_vCMPITUOM <> '')
AND (NOT EXISTS
(
SELECT 1
FROM IV40202 (NOLOCK)
WHERE UOMSCHDL = @UOMSCHDL
AND UOFM = @I_vCMPITUOM
)
)
)
BEGIN
SELECT @O_iErrorState = 3915;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vUpdateIfExists = 1)
BEGIN
IF (NOT EXISTS
(
SELECT 1
FROM SOP10200
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ
AND ITEMNMBR = @I_vITEMNMBR
)
)
BEGIN
SELECT @O_iErrorState = 4065;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
ELSE
BEGIN
SELECT @cmpexists = 1;
SELECT @EXTQTYAL = EXTQTYAL,
@QTYCANCE = QTYCANCE
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
END;
END;
IF (@I_vCMPNTSEQ = 0)
BEGIN
SELECT @I_vCMPNTSEQ = ISNULL(MAX(CMPNTSEQ), 0) + 16384
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ;
END;
ELSE
BEGIN
IF (
(@I_vUpdateIfExists = 0)
AND (EXISTS
(
SELECT 1
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ
)
)
)
BEGIN
SELECT @O_iErrorState = 3910;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (
(
@I_vDOCID <> ''
AND @I_vSOPTYPE <> 6
)
AND (NOT EXISTS
(
SELECT 1
FROM SOP40200 (NOLOCK)
WHERE DOCID = @I_vDOCID
AND SOPTYPE = @I_vSOPTYPE
)
)
)
BEGIN
SELECT @O_iErrorState = 3467;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(
@I_vDOCID <> ''
AND @I_vSOPTYPE = 6
)
AND (NOT EXISTS
(
SELECT 1
FROM SOP40200 (NOLOCK)
WHERE DOCID = @I_vDOCID
AND SOPTYPE = 3
AND WORKFLOWENABLED = 1
)
)
)
BEGIN
SELECT @O_iErrorState = 7742;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vQTYFULFI > 0) AND (@ALLOCABY = 0))
BEGIN
SELECT @O_iErrorState = 3546;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(@I_vQTYFULFI > 0)
AND
(
(@I_vSOPTYPE = 1)
OR (@I_vSOPTYPE = 4)
OR (@I_vSOPTYPE = 5)
)
)
BEGIN
SELECT @O_iErrorState = 3547;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vQTYCANCE > 0) AND (@I_vSOPTYPE = 4))
BEGIN
SELECT @O_iErrorState = 3548;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@ALLOCABY = 3) AND (@I_vQTYFULFI > 0))
BEGIN
SELECT @O_iErrorState = 3549;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vQTYFULFI > @I_vQUANTITY)
AND (@I_vQUANTITY > 0)
BEGIN
SELECT @O_iErrorState = 3550;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(@I_vQUANTITY <> @I_vQTYINSVC + @I_vQTYINUSE + @I_vQTYDMGED + @I_vQTYRTRND + @I_vQTYONHND)
AND (@I_vSOPTYPE = 4)
)
BEGIN
SELECT @O_iErrorState = 3912;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vLOCNCODE = '')
BEGIN
SELECT @I_vLOCNCODE = LOCNCODE
FROM SOP40100 (NOLOCK);
END;
SELECT TOP 1
@LOCNCODE = LOCNCODE
FROM IV40700 (NOLOCK)
WHERE LOCNCODE <> '';
IF (@I_vLOCNCODE = '')
BEGIN
IF (@LOCNCODE <> '')
BEGIN
SELECT @O_iErrorState = 195;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
ELSE
BEGIN
IF (NOT EXISTS
(
SELECT 1
FROM IV40700 (NOLOCK)
WHERE LOCNCODE = @I_vLOCNCODE
)
)
BEGIN
SELECT @O_iErrorState = 196;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(@I_vNONINVEN = 0)
AND (NOT EXISTS
(
SELECT 1
FROM IV00102 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE
)
)
)
BEGIN
SELECT @O_iErrorState = 197;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
SELECT @SITEINACTIVE = INACTIVE
FROM IV40700 (NOLOCK)
WHERE LOCNCODE = @I_vLOCNCODE;
SELECT @ITEMSITEINACTIVE = INACTIVE
FROM IV00102 (NOLOCK)
WHERE (
ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE
);
IF (@I_vLOCNCODE <> '' AND @SITEINACTIVE = 1)
BEGIN
SELECT @O_iErrorState = 11811;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vLOCNCODE <> '' AND @I_vITEMNMBR <> '' AND @ITEMSITEINACTIVE = 1)
BEGIN
SELECT @O_iErrorState = 11812;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(
(@LOCNCODE = '')
AND (@I_vLOCNCODE = '')
)
AND (@I_vQtyShrtOpt IN ( 1, 3, 4, 5, 6 ))
)
BEGIN
SELECT @O_iErrorState = 2097;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(@I_vNONINVEN = 0)
AND (NOT EXISTS
(
SELECT 1
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
)
)
)
BEGIN
SELECT @O_iErrorState = 198;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF ((@I_vUNITCOST >= 0) AND (@I_vSOPTYPE <> 4) AND (@I_vNONINVEN = 0))
BEGIN
SELECT @O_iErrorState = 3553;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(
(@I_vQTYINSVC <> 0)
OR (@I_vQTYINUSE <> 0)
OR (@I_vQTYDMGED <> 0)
OR (@I_vQTYRTRND <> 0)
OR (@I_vQTYONHND <> 0)
)
AND
(
@I_vSOPTYPE IN ( 1, 2, 5 )
OR
(
@I_vSOPTYPE = 3
AND @I_vQUANTITY > 0
)
)
)
BEGIN
SELECT @O_iErrorState = 8502;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(@I_vSOPTYPE <> 2)
AND (@I_vSOPTYPE <> 3)
AND (@I_vSOPTYPE <> 6)
AND (@I_vQTYTBAOR <> 0)
)
BEGIN
SELECT @O_iErrorState = 830;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vNONINVEN = 0)
BEGIN
SELECT @ITEMDESC = ITEMDESC,
@PriceGroup = PriceGroup,
@UNITCOST = CASE
WHEN @VCTNMTHD IN ( 4, 5 ) THEN
STNDCOST
ELSE
CURRCOST
END,
@INVINDX = IVIVINDX,
@CSLSINDX = IVCOGSIX,
@SLSINDX = CASE
WHEN
(
@I_vSOPTYPE <> 4
AND @I_vQUANTITY >= 0
) THEN
IVSLSIDX
ELSE
IVSLRNIX
END,
@MKDNINDX = IVSLDSIX,
@RTNSINDX = IVRETIDX,
@INUSINDX = IVINUSIX,
@INSRINDX = IVINSVIX,
@DMGDINDX = IVDMGIDX,
@ITEMTYPE = ITEMTYPE,
@DECPLQTY = DECPLQTY,
@ITMTRKOP = ITMTRKOP
FROM IV00101 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR;
IF (@RTNSINDX = 0)
SELECT @RTNSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 1300;
IF (@INUSINDX = 0)
SELECT @INUSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 700;
IF (@INSRINDX = 0)
SELECT @INSRINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 800;
IF (@DMGDINDX = 0)
SELECT @DMGDINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 900;
IF (@MKDNINDX = 0)
SELECT @MKDNINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 500;
END;
ELSE
BEGIN
SELECT @ITEMDESC = @I_vITEMDESC;
SELECT @INVINDX = ACTINDX,
@MKDNINDX = 0,
@RTNSINDX = ACTINDX,
@INUSINDX = ACTINDX,
@INSRINDX = ACTINDX,
@IVSLRNIX = ACTINDX,
@DMGDINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 3
AND SEQNUMBR = 2400;
SELECT @DECPLQTY = DECPLQTY,
@DECPLCUR = DECPLCUR
FROM SOP40100 (NOLOCK)
WHERE SETUPKEY = 1;
SELECT @SLSINDX = 0,
@CSLSINDX = 0;
END;
IF (@I_vNONINVEN = 0)
BEGIN
IF (@ISMCTRX = 1)
BEGIN
SELECT @DECPLCUR = DECPLCUR
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND CURNCYID = @I_vCURNCYID;
SELECT @KITDECPLCUR = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CURNCYID = @I_vCURNCYID;
SELECT @ITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND CURNCYID = @FUNLCURR;
SELECT @KITITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CURNCYID = @FUNLCURR;
END;
ELSE
BEGIN
SELECT @DECPLCUR = DECPLCUR
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND
(
CURNCYID = ''
OR CURNCYID = @I_vCURNCYID
);
SELECT @KITDECPLCUR = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND
(
CURNCYID = ''
OR CURNCYID = @I_vCURNCYID
);
SELECT @ITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND
(
CURNCYID = ''
OR CURNCYID = @FUNLCURR
);
SELECT @KITITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND
(
CURNCYID = ''
OR CURNCYID = @FUNLCURR
);
END;
END;
ELSE
BEGIN
SELECT @ITEMFUNCTDEC = DECPLCUR - 1
FROM SOP40600 (NOLOCK)
WHERE CURNCYID = @FUNLCURR;
IF (@ISMCTRX = 1)
BEGIN
SELECT @KITDECPLCUR = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CURNCYID = @I_vCURNCYID;
SELECT @KITITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CURNCYID = @FUNLCURR;
END;
ELSE
BEGIN
SELECT @KITDECPLCUR = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND
(
CURNCYID = ''
OR CURNCYID = @I_vCURNCYID
);
SELECT @KITITEMFUNCTDEC = DECPLCUR - 1
FROM IV00105 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND
(
CURNCYID = ''
OR CURNCYID = @FUNLCURR
);
END;
END;
SELECT @FUNDECPLCUR = DECPLCUR
FROM MC40000 a (NOLOCK),
DYNAMICS..MC40200 b (NOLOCK)
WHERE a.FUNCRIDX = b.CURRNIDX
AND a.FUNLCURR = b.CURNCYID;
IF (@ISMCTRX = 1)
BEGIN
SELECT @EDITDECPLCUR = DECPLCUR - 1
FROM DYNAMICS..MC40200 (NOLOCK)
WHERE CURNCYID = @I_vCURNCYID;
END;
ELSE
BEGIN
SELECT @EDITDECPLCUR = @FUNDECPLCUR - 1;
END;
IF (
(@I_vNONINVEN = 1)
AND EXISTS
(
SELECT 1
FROM SOP40600 (NOLOCK)
WHERE CURNCYID = @I_vCURNCYID
)
)
BEGIN
SELECT @DECPLCUR = DECPLCUR
FROM SOP40600 (NOLOCK)
WHERE CURNCYID = @I_vCURNCYID;
END;
IF ((@ITEMTYPE IN ( 4, 5, 6 )) OR (@I_vSOPTYPE = 1))
BEGIN
SELECT @I_vQtyShrtOpt = 2;
END;
IF (@MKDNINDX = 0)
SELECT @MKDNINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 500;
SELECT @USEACFRM = USEACFRM,
@CALCKITC = CALCKITC
FROM SOP40100 (NOLOCK);
IF (@USEACFRM = 1)
BEGIN
SELECT @SLSINDX = CASE
WHEN @I_vSOPTYPE <> 4
AND
(
@I_vSOPTYPE IN ( 3, 6 )
AND @I_vQUANTITY >= 0
) THEN
RMSLSACC
ELSE
0
END,
@CSLSINDX = RMCOSACC
FROM RM00101 (NOLOCK)
WHERE CUSTNMBR = @I_vCUSTNMBR;
IF (@I_vSOPTYPE <> 4)
AND
(
@I_vSOPTYPE = 3
AND @I_vQUANTITY < 0
)
BEGIN
IF (@SLSINDX = 0)
BEGIN
SELECT @SLSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 3
AND SEQNUMBR = 1100;
END;
END;
ELSE
BEGIN
SELECT @SLSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 3
AND SEQNUMBR = 1200;
END;
IF (@CSLSINDX = 0)
BEGIN
SELECT @CSLSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 3
AND SEQNUMBR = 200;
END;
IF (@INVINDX = 0)
BEGIN
SELECT @INVINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 3
AND SEQNUMBR = 900;
END;
END;
ELSE
BEGIN
IF (@INVINDX = 0)
BEGIN
SELECT @INVINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 100;
END;
IF (@SLSINDX = 0)
BEGIN
IF @I_vSOPTYPE = 4
OR
(
@I_vSOPTYPE = 3
AND @I_vQUANTITY < 0
)
BEGIN
SELECT @SLSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 600;
END;
ELSE
BEGIN
SELECT @SLSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 400;
END;
END;
IF (@KTACCTSR = 1)
BEGIN
SELECT @CSLSINDX = @KITIVCOGSIX;
END;
IF (@CSLSINDX = 0)
BEGIN
SELECT @CSLSINDX = ACTINDX
FROM SY01100 (NOLOCK)
WHERE SERIES = 5
AND SEQNUMBR = 300;
END;
END;
SELECT @MAXSEG = MAX(SGMTNUMB)
FROM SY00300 (NOLOCK);
SELECT @Location_Segment = ISNULL(Location_Segment, '')
FROM IV40700 (NOLOCK)
WHERE LOCNCODE = @I_vLOCNCODE;
SELECT @ACSGFLOC = ACSGFLOC,
@ENABLEMULTIBIN = ENABLEMULTIBIN
FROM IV40100 (NOLOCK)
WHERE SETUPKEY = 1;
IF ((@INVINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @INVINDX;
IF (@ACSGFLOC < @MAXSEG)
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @INVINDX = @ACTINDX;
END;
END;
IF ((@MKDNINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @MKDNINDX;
IF (@ACSGFLOC < @MAXSEG)
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @MKDNINDX = @ACTINDX;
END;
END;
IF ((@RTNSINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @RTNSINDX;
IF (@ACSGFLOC < @MAXSEG)
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @RTNSINDX = @ACTINDX;
END;
END;
IF ((@INUSINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @INUSINDX;
IF @ACSGFLOC < @MAXSEG
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @INUSINDX = @ACTINDX;
END;
END;
IF ((@INSRINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @INSRINDX;
IF (@ACSGFLOC < @MAXSEG)
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @INSRINDX = @ACTINDX;
END;
END;
IF ((@DMGDINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @DMGDINDX;
IF (@ACSGFLOC < @MAXSEG)
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @DMGDINDX = @ACTINDX;
END;
END;
IF ((@CSLSINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @CSLSINDX;
IF (@ACSGFLOC < @MAXSEG)
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @CSLSINDX = @ACTINDX;
END;
END;
IF ((@SLSINDX <> 0) AND (@Location_Segment <> '') AND (@ACSGFLOC <> 0))
BEGIN
SELECT @ACTINDX = 0,
@ACCNT_STRING = '',
@NEW_ACCNT_STRING = '';
SELECT @ACCNT_STRING = ACTNUMST
FROM GL00105 (NOLOCK)
WHERE ACTINDX = @SLSINDX;
IF (@ACSGFLOC < @MAXSEG)
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB >= @ACSGFLOC;
SELECT @LOFSGMNTEND = SUM(LOFSGMNT) + (@MAXSEG - @ACSGFLOC)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB > @ACSGFLOC;
END;
ELSE
BEGIN
SELECT @LOFSGMNT = SUM(LOFSGMNT)
FROM SY00300 (NOLOCK)
WHERE SGMTNUMB = @ACSGFLOC;
END;
SELECT @LOFSGMNTALL = SUM(LOFSGMNT) + (@MAXSEG - 1)
FROM SY00300 (NOLOCK);
IF (@ACSGFLOC = @MAXSEG)
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment));
END;
ELSE
BEGIN
SELECT @NEW_ACCNT_STRING
= SUBSTRING(@ACCNT_STRING, 1, @LOFSGMNTALL - @LOFSGMNT) + RTRIM(LTRIM(@Location_Segment))
+ SUBSTRING(@ACCNT_STRING, @LOFSGMNTALL - @LOFSGMNTEND + 1, @LOFSGMNTALL);
END;
SELECT @ACTINDX = ISNULL(ACTINDX, 0)
FROM GL00105 (NOLOCK)
WHERE ACTNUMST = @NEW_ACCNT_STRING;
IF (@ACTINDX <> 0)
BEGIN
SELECT @SLSINDX = @ACTINDX;
END;
END;
IF (
(
(@I_vSOPTYPE = 4)
OR
(
@I_vSOPTYPE = 3
AND @I_vQUANTITY < 0
)
)
AND (@ITMTRKOP IN ( 2, 3 ))
)
BEGIN
SELECT @SOP10201QTYONHND = SUM(SERLTQTY)
FROM SOP10201 (NOLOCK)
WHERE QTYTYPE = 1
AND SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
SELECT @SOP10201QTYRTRND = SUM(SERLTQTY)
FROM SOP10201 (NOLOCK)
WHERE QTYTYPE = 2
AND SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
SELECT @SOP10201QTYINUSE = SUM(SERLTQTY)
FROM SOP10201 (NOLOCK)
WHERE QTYTYPE = 3
AND SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
SELECT @SOP10201QTYINSVC = SUM(SERLTQTY)
FROM SOP10201 (NOLOCK)
WHERE QTYTYPE = 4
AND SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
SELECT @SOP10201QTYDMGED = SUM(SERLTQTY)
FROM SOP10201 (NOLOCK)
WHERE QTYTYPE = 5
AND SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (
(@SOP10201QTYONHND <> @I_vQTYONHND * @QTYBSUOM)
OR (@SOP10201QTYRTRND <> @I_vQTYRTRND * @QTYBSUOM)
OR (@SOP10201QTYINUSE <> @I_vQTYINUSE * @QTYBSUOM)
OR (@SOP10201QTYINSVC <> @I_vQTYINSVC * @QTYBSUOM)
OR (@SOP10201QTYDMGED <> @I_vQTYDMGED * @QTYBSUOM)
)
BEGIN
SELECT @O_iErrorState = 8243;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (@O_iErrorState <> 0)
BEGIN
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 = 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 = 4061;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
WHILE (1 = 1)
BEGIN
IF (@exists = 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;
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 = 4060;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF (@I_vUpdateIfExists = 1)
BEGIN
IF (
(
@I_vAUTOALLOCATESERIAL IN ( 1, 2 )
AND @ITMTRKOP = 2
)
OR
(
@I_vAUTOALLOCATELOT IN ( 1, 2 )
AND @ITMTRKOP = 3
)
)
BEGIN
SELECT @DeleteType = 998;
END;
ELSE
BEGIN
SELECT @DeleteType = 2;
END;
EXEC @iStatus = taSopLineDelete @I_vSOPTYPE = @I_vSOPTYPE,
@I_vSOPNUMBE = @I_vSOPNUMBE,
@I_vLNITMSEQ = @I_vLNITMSEQ,
@I_vITEMNMBR = @I_vITEMNMBR,
@I_vCMPNTSEQ = @I_vCMPNTSEQ,
@I_vDeleteType = @DeleteType,
@I_vRequesterTrx = 1,
@O_iErrorState = @taSopLineDeleteErrState OUTPUT,
@oErrString = @taSopLineDeleteErrString OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@taSopLineDeleteErrState <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @taSopLineDeleteErrString;
SELECT @O_iErrorState = 4064;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
SELECT @lock = ITEMNMBR
FROM IV00102 WITH (UPDLOCK INDEX(PKIV00102))
WHERE ITEMNMBR = @I_vITEMNMBR
AND
(
LOCNCODE = @I_vLOCNCODE
OR LOCNCODE = ''
);
IF ((@ITEMTYPE NOT IN ( 3, 4, 5, 6 )) AND (@I_vQtyShrtOpt <> 2))
BEGIN
SELECT @QTTYALLOC = ATYALLOC
FROM IV00102 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE;
IF (@QTTYALLOC >= 0)
BEGIN
SELECT @QTYAVL = QTYONHND - ATYALLOC
FROM IV00102 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE;
END;
ELSE
BEGIN
SELECT @QTYAVL = QTYONHND + ATYALLOC
FROM IV00102 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE;
END;
IF (@QTYAVL < 0)
BEGIN
SELECT @QTYAVL = 0;
END;
IF (
(@I_vNONINVEN = 0)
AND
(
(@I_vSOPTYPE = 2)
OR (@I_vSOPTYPE = 3)
OR (@I_vSOPTYPE = 6)
)
AND ((@I_vQUANTITY * @QTYBSUOM) > @QTYAVL)
)
BEGIN
IF ((@I_vQtyShrtOpt IN ( 1, 3, 4, 5, 6 )) AND (@I_vQTYFULFI <> 0))
BEGIN
SELECT @O_iErrorState = 3545;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vQtyShrtOpt = 1)
BEGIN
SELECT @I_vQUANTITY = ROUND(@QTYAVL / @QTYBSUOM, @DECPLQTY - 1, 1);
SELECT @TOTALQTY = ROUND(@QTYAVL / @QTYBSUOM, @DECPLQTY - 1, 1) + @I_vQTYCANCE + @I_vQTYTBAOR;
END;
ELSE
BEGIN
IF (@I_vQtyShrtOpt = 3)
BEGIN
SELECT @QTYTOBO = @I_vQUANTITY,
@I_vQUANTITY = 0;
SELECT @TOTALQTY = @QTYTOBO + @I_vQTYCANCE + @I_vQTYTBAOR;
END;
ELSE
BEGIN
IF (@I_vQtyShrtOpt = 4)
BEGIN
SELECT @QTYTOBO = @I_vQUANTITY - ROUND(@QTYAVL / @QTYBSUOM, @DECPLQTY - 1, 1);
SELECT @I_vQUANTITY = @I_vQUANTITY - @QTYTOBO;
SELECT @TOTALQTY = @I_vQUANTITY + @QTYTOBO + @I_vQTYCANCE + @I_vQTYTBAOR;
END;
ELSE
BEGIN
IF (@I_vQtyShrtOpt = 5)
BEGIN
SELECT @I_vQTYCANCE = @I_vQTYCANCE + @I_vQUANTITY,
@I_vQUANTITY = 0;
SELECT @TOTALQTY = @I_vQTYCANCE + @I_vQTYTBAOR;
END;
ELSE
BEGIN
IF (@I_vQtyShrtOpt = 6)
BEGIN
SELECT @I_vQTYCANCE
= @I_vQTYCANCE + (@I_vQUANTITY - ROUND(@QTYAVL / @QTYBSUOM, @DECPLQTY - 1, 1));
SELECT @I_vQUANTITY = @I_vQUANTITY - @I_vQTYCANCE;
SELECT @TOTALQTY = @I_vQUANTITY + @I_vQTYCANCE + @I_vQTYTBAOR;
END;
END;
END;
END;
END;
END;
END;
IF (@I_vQTYFULFI IS NULL)
BEGIN
IF (
(@ALLOCABY = 1)
AND (@USPFULPR = 0)
AND
(
(@I_vSOPTYPE = 2)
OR (@I_vSOPTYPE = 3)
OR (@I_vSOPTYPE = 6)
)
)
BEGIN
SELECT @I_vQTYFULFI = @I_vQUANTITY;
END;
ELSE
BEGIN
SELECT @I_vQTYFULFI = 0;
END;
END;
IF (
(@ITMTRKOP = 3)
AND (@ITEMTYPE IN ( 1, 2 ))
AND (@I_vNONINVEN = 0)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND (@LOCNCODE <> '')
)
BEGIN
SELECT @LOTQUANTITY = @I_vQTYFULFI * @QTYBSUOM;
SELECT @LotsToAllocate = @LOTQUANTITY - ISNULL(SUM(SERLTQTY), 0)
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (@LotsToAllocate < 0)
BEGIN
SELECT @O_iErrorState = 3916;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (
(@ITMTRKOP = 2)
AND (@ITEMTYPE = 1)
AND (@I_vNONINVEN = 0)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND
(
@LOCNCODE <> ''
AND @I_vQUANTITY >= 0
)
)
BEGIN
SELECT @SERIALQUANTITY = @I_vQTYFULFI * @QTYBSUOM;
SELECT @serialstoallocate = @SERIALQUANTITY - ISNULL(COUNT(SERLTQTY), 0)
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (@serialstoallocate < 0)
BEGIN
SELECT @O_iErrorState = 3457;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
SELECT @SOP10201COUNTSERIAL = COUNT(*)
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ;
IF (
(@SOP10201COUNTSERIAL = 0)
AND
(
(@I_vAUTOALLOCATESERIAL = 1)
OR (@I_vAUTOALLOCATESERIAL = 2)
)
AND (@ITMTRKOP = 2)
AND
(
(@USPFULPR = 0)
OR (@I_vQTYFULFI > 0)
)
AND
(
(@I_vQTYFULFI <> 0)
OR (@I_vQTYFULFI IS NULL)
)
)
BEGIN
SELECT @O_iErrorState = 3466;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (
(@ITMTRKOP = 3)
AND (@I_vNONINVEN = 0)
AND
(
(@I_vAUTOALLOCATELOT = 0)
OR (@I_vAUTOALLOCATELOT = 2)
)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND
(
(@USPFULPR = 0)
OR (@I_vQTYFULFI > 0)
)
AND (@I_vQTYFULFI <> 0)
AND (@LOCNCODE <> '')
)
BEGIN
SELECT @LOTQTY = ISNULL(SUM(QTYRECVD), 0)
FROM IV00300 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LTNUMSLD = 0
AND QTYTYPE = 1;
IF ((@LOTQTY < @LotsToAllocate) AND (@I_vQtyShrtOpt = 2))
BEGIN
SELECT @O_iErrorState = 3468;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (
(@ITMTRKOP = 2)
AND (@I_vNONINVEN = 0)
AND
(
(@I_vAUTOALLOCATESERIAL = 0)
OR (@I_vAUTOALLOCATESERIAL = 2)
)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND (@LOCNCODE <> '')
)
BEGIN
SELECT @SERIALQTY = COUNT(*)
FROM IV00200 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND SERLNSLD = 0
AND QTYTYPE = 1;
IF ((@SERIALQTY < @serialstoallocate) AND (@I_vQtyShrtOpt = 2))
BEGIN
SELECT @O_iErrorState = 3469;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (@I_vNONINVEN = 1)
BEGIN
IF (@I_vUNITCOST IS NOT NULL)
BEGIN
SELECT @UNITCOST = @I_vUNITCOST;
END;
ELSE
BEGIN
SELECT @UNITCOST = 0;
END;
END;
IF (@I_vSOPTYPE = 4)
BEGIN
IF (@I_vNONINVEN = 1)
BEGIN
IF (@I_vUNITCOST IS NOT NULL)
BEGIN
SELECT @UNITCOST = @I_vUNITCOST;
END;
ELSE
BEGIN
SELECT @UNITCOST = 0;
END;
END;
END;
IF (
(@ITMTRKOP = 2)
AND (@ITEMTYPE = 1)
AND (@I_vNONINVEN = 0)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND
(
(@I_vAUTOALLOCATESERIAL = 0)
OR (@I_vAUTOALLOCATESERIAL = 2)
)
AND (@LOCNCODE <> '')
)
BEGIN
WHILE (@serialsallocated < @serialstoallocate)
BEGIN
IF ((@VCTNMTHD = 1) OR (@VCTNMTHD = 3) OR (@VCTNMTHD = 4))
SELECT TOP 1
@SERLTNUM = SERLNMBR,
@QTYTYPE = QTYTYPE,
@DTSEQNUM = DTSEQNUM,
@DATERECD = DATERECD
FROM IV00200 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE
AND SERLNSLD = 0
AND QTYTYPE = 1
ORDER BY DATERECD,
DTSEQNUM;
ELSE
SELECT TOP 1
@SERLTNUM = SERLNMBR,
@QTYTYPE = QTYTYPE,
@DTSEQNUM = DTSEQNUM,
@DATERECD = DATERECD
FROM IV00200 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE
AND SERLNSLD = 0
AND QTYTYPE = 1
ORDER BY DATERECD DESC,
DTSEQNUM DESC;
IF (@SERLTNUM = '')
BEGIN
SELECT @O_iErrorState = 3911;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
ELSE
BEGIN
EXEC @iStatus = taSopSerial @I_vSOPTYPE = @I_vSOPTYPE,
@I_vSOPNUMBE = @I_vSOPNUMBE,
@I_vLNITMSEQ = @I_vLNITMSEQ,
@I_vCMPNTSEQ = @I_vCMPNTSEQ,
@I_vQTYTYPE = 1,
@I_vITEMNMBR = @I_vITEMNMBR,
@I_vLOCNCODE = @I_vLOCNCODE,
@I_vQUANTITY = 1,
@I_vSERLNMBR = @SERLTNUM,
@I_vAUTOCREATESERIAL = 0,
@I_vDOCID = @I_vDOCID,
@I_vRequesterTrx = 1,
@O_iErrorState = @iCustomState OUTPUT,
@oErrString = @iCustomErrString OUTPUT;
IF (@iCustomState NOT IN ( 0, 1526 ))
BEGIN
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@iCustomState <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + LTRIM(RTRIM(@iCustomErrString));
SELECT @O_iErrorState = 3461;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
SELECT @SERLTNUM = '';
SELECT @serialsallocated = @serialsallocated + 1;
END;
END;
END;
IF (
(@ITMTRKOP = 2)
AND (@ITEMTYPE = 1)
AND (@I_vNONINVEN = 0)
AND
(
(@USPFULPR = 0)
OR (@I_vQTYFULFI > 0)
)
AND (@I_vQTYFULFI <> 0)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND (@LOCNCODE <> '')
)
BEGIN
SELECT @ALLOCATED = ISNULL(COUNT(SERLTQTY), 0)
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (@SERIALQUANTITY <> @ALLOCATED)
BEGIN
SELECT @O_iErrorState = 3914;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF ((@ITMTRKOP = 3) AND (@LOCNCODE <> ''))
BEGIN
SELECT @SOP10201COUNT = COUNT(*)
FROM SOP10201 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = @I_vCMPNTSEQ;
IF (
(@SOP10201COUNT = 0)
AND
(
(@I_vAUTOALLOCATELOT = 1)
OR (@I_vAUTOALLOCATELOT = 2)
)
AND (@ITMTRKOP = 3)
AND
(
(@USPFULPR = 0)
OR (@I_vQTYFULFI > 0)
)
AND (@I_vQTYFULFI <> 0)
)
BEGIN
SELECT @O_iErrorState = 3462;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(@SOP10201COUNT > 0)
AND (@I_vAUTOALLOCATELOT = 0)
AND (@ITMTRKOP = 3)
)
BEGIN
SELECT @O_iErrorState = 3463;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (
(@I_vSOPTYPE IN ( 2, 3, 6 ))
AND (@ITMTRKOP = 3)
AND (@ITEMTYPE = 1)
AND (@I_vNONINVEN = 0)
AND
(
(@I_vAUTOALLOCATELOT = 0)
OR (@I_vAUTOALLOCATELOT = 2)
)
AND (@LotsToAllocate > 0)
AND
(
(@USPFULPR = 0)
OR (@I_vQTYFULFI > 0)
)
AND (@I_vQTYFULFI <> 0)
AND (@ALLOCABY = 1)
)
BEGIN
IF (@I_vUSERDATE = '')
BEGIN
SELECT @I_vUSERDATE = CONVERT(VARCHAR(12), GETDATE());
END;
EXEC @iStatus = taSopLot @I_vSOPTYPE = @I_vSOPTYPE,
@I_vSOPNUMBE = @I_vSOPNUMBE,
@I_vUSERDATE = @I_vUSERDATE,
@I_vLNITMSEQ = @I_vLNITMSEQ,
@I_vCMPNTSEQ = @I_vCMPNTSEQ,
@I_vITEMNMBR = @I_vITEMNMBR,
@I_vLOCNCODE = @I_vLOCNCODE,
@I_vQUANTITY = @LotsToAllocate,
@I_vDOCID = @I_vDOCID,
@I_vDROPSHIP = @DROPSHIP,
@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 = 3464;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF (@I_vSOPTYPE = 3 AND @I_vQTYTBAOR > 0)
BEGIN
SELECT @EXTDCOST = ROUND((@I_vQTYTBAOR * @UNITCOST) * @QTYBSUOM, @FUNDECPLCUR - 1);
END;
ELSE
BEGIN
SELECT @EXTDCOST = ROUND((@I_vQUANTITY * @UNITCOST) * @QTYBSUOM, @FUNDECPLCUR - 1);
END;
INSERT SOP10200
(
UOFM,
SOPTYPE,
SOPNUMBE,
LNITMSEQ,
CMPNTSEQ,
ITEMNMBR,
ITEMDESC,
NONINVEN,
LOCNCODE,
UNITCOST,
ORUNTCST,
UNITPRCE,
ORUNTPRC,
XTNDPRCE,
OXTNDPRC,
REMPRICE,
OREPRICE,
EXTDCOST,
OREXTCST,
MRKDNAMT,
ORMRKDAM,
MRKDNTYP,
INVINDX,
CSLSINDX,
SLSINDX,
MKDNINDX,
RTNSINDX,
INUSINDX,
INSRINDX,
DMGDINDX,
QUANTITY,
ATYALLOC,
QTYONHND,
QTYCANCE,
QTYRTRND,
QTYINUSE,
QTYINSVC,
QTYDMGED,
QTYREMAI,
QTYTOINV,
QTYTORDR,
QTYFULFI,
QTYSLCTD,
QTYBSUOM,
EXTQTYAL,
EXTQTYSEL,
ReqShipDate,
FUFILDAT,
ACTLSHIP,
CURRNIDX,
PURCHSTAT,
QTYONPO,
QTYRECVD,
QTYPRVRECVD,
QTYORDER,
QTYTBAOR,
ITEMCODE,
DECPLQTY,
DECPLCUR,
ODECPLCU
)
SELECT @I_vCMPITUOM,
@I_vSOPTYPE,
@I_vSOPNUMBE,
@I_vLNITMSEQ,
@I_vCMPNTSEQ,
@I_vITEMNMBR,
CASE
WHEN @I_vITEMDESC = '' THEN
@ITEMDESC
ELSE
@I_vITEMDESC
END,
@I_vNONINVEN,
@I_vLOCNCODE,
CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NULL)
) THEN
@UNITCOST * @QTYBSUOM
ELSE
0
END,
CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NOT NULL)
) THEN
@UNITCOST * @QTYBSUOM
ELSE
0
END,
0,
0,
0,
0,
0,
0,
CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NULL)
) THEN
@EXTDCOST
ELSE
0
END,
CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NOT NULL)
) THEN
@EXTDCOST
ELSE
0
END,
0,
0,
0,
@INVINDX,
@CSLSINDX,
@SLSINDX,
@MKDNINDX,
@RTNSINDX,
@INUSINDX,
@INSRINDX,
@DMGDINDX,
@TOTALQTY,
CASE
WHEN
(
(@I_vNONINVEN = 0)
AND (@DROPSHIP = 0)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND (@ALLOCABY = 1)
AND (@ITEMTYPE IN ( 1, 2, 3 ))
) THEN
@TOTALQTY - @I_vQTYCANCE - @I_vQTYTBAOR - @QTYTOBO
ELSE
0
END,
CASE
WHEN
(
(@I_vSOPTYPE = 4)
AND (@I_vQTYONHND > 0)
) THEN
@I_vQTYONHND
WHEN (
@I_vSOPTYPE = 3
AND @I_vQUANTITY < 0
)
AND (@ITEMTYPE IN ( 1, 2, 3 )) THEN
@I_vQUANTITY * -1
ELSE
0
END,
@I_vQTYCANCE,
CASE
WHEN
(
(@I_vSOPTYPE = 4)
AND (@I_vQTYRTRND > 0)
) THEN
@I_vQTYRTRND
ELSE
0
END,
CASE
WHEN
(
(@I_vSOPTYPE = 4)
AND (@I_vQTYINUSE > 0)
) THEN
@I_vQTYINUSE
ELSE
0
END,
CASE
WHEN
(
(@I_vSOPTYPE = 4)
AND (@I_vQTYINSVC > 0)
) THEN
@I_vQTYINSVC
ELSE
0
END,
CASE
WHEN
(
(@I_vSOPTYPE = 4)
AND (@I_vQTYDMGED > 0)
) THEN
@I_vQTYDMGED
ELSE
0
END,
CASE
WHEN (@I_vSOPTYPE = 4)
OR
(
@I_vSOPTYPE = 3
AND @I_vQUANTITY < 0
) THEN
0
ELSE
@TOTALQTY - @I_vQTYCANCE
END,
CASE
WHEN
(
(@I_vSOPTYPE = 2)
OR
(
(@I_vSOPTYPE = 3)
AND (@I_vQUANTITY >= 0)
)
OR (@I_vSOPTYPE = 5)
OR (@I_vSOPTYPE = 6)
) THEN
@I_vQUANTITY
WHEN (@I_vSOPTYPE = 1) THEN
@I_vQUOTEQTYTOINV
ELSE
0
END,
CASE
WHEN (@I_vSOPTYPE = 1) THEN
@I_vQUANTITY
ELSE
0
END,
CASE
WHEN (@I_vSOPTYPE IN ( 2, 3, 6 )) THEN
@I_vQTYFULFI
ELSE
0
END,
CASE
WHEN (@I_vSOPTYPE IN ( 2, 3, 6 )) THEN
@I_vQTYFULFI * @QTYBSUOM
ELSE
0
END,
@QTYBSUOM,
CASE
WHEN
(
(@I_vSOPTYPE NOT IN ( 1, 4, 5 ))
AND (@ALLOCABY = 1)
AND (@I_vQUANTITY > 0)
) THEN
@EXTQTYAL
WHEN (
(@I_vSOPTYPE = 3)
AND (@I_vQTYTBAOR > 0)
)
OR
(
(@cmpexists = 1)
AND
(
(@I_vSOPTYPE NOT IN ( 1, 4, 5 ))
AND (@ALLOCABY = 1)
AND (@I_vQUANTITY >= 0)
)
) THEN
@EXTQTYAL
ELSE
0
END,
CASE
WHEN
(
(@I_vSOPTYPE IN ( 2, 3, 6 ))
AND
(
(@ITMTRKOP = 2)
OR (@ITMTRKOP = 3)
)
AND (@USPFULPR = 0)
) THEN
@I_vQTYFULFI * @QTYBSUOM
ELSE
0
END,
@ReqShipDate,
CASE
WHEN
(
(@I_vUpdateIfExists = 1)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND (@I_vQTYFULFI > 0)
) THEN
@currdate
ELSE
@dtDEFAULT
END,
CASE
WHEN
(
(@I_vUpdateIfExists = 1)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
AND (@I_vQTYFULFI > 0)
) THEN
@currdate
ELSE
@dtDEFAULT
END,
0,
CASE
WHEN (
(@I_vNONINVEN = 1)
OR (@I_vQTYTBAOR > 0)
OR (@QTYTOBO > 0)
OR
(
(@I_vSOPTYPE = 5)
AND (@I_vQUANTITY > 0)
)
OR @DROPSHIP = 1
)
OR @ITEMTYPE IN ( 3, 4, 5, 6 )
AND (@I_vSOPTYPE NOT IN ( 1, 3, 4 )) THEN
2
ELSE
1
END,
0,
0,
0,
CASE
WHEN (
@I_vSOPTYPE = 3
OR @I_vSOPTYPE = 6
)
AND (@I_vQUANTITY > 0) THEN
@I_vQUANTITY
WHEN
(
@I_vSOPTYPE = 3
AND @I_vQTYTBAOR > 0
) THEN
@I_vQTYTBAOR
ELSE
0
END,
(@QTYTOBO + @I_vQTYTBAOR),
'',
@DECPLQTY,
@ITEMFUNCTDEC + 1,
@DECPLCUR;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 182;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF (
(@ITEMTYPE IN ( 1, 2, 4, 5, 6 ))
AND (@I_vSOPTYPE <> 1)
AND (@I_vSOPTYPE <> 4)
AND (@I_vSOPTYPE <> 5)
AND (@DROPSHIP = 0)
AND (@LOCNCODE <> '')
)
BEGIN
IF (@ALLOCABY = 1)
AND (@ITEMTYPE IN ( 1, 2 ))
BEGIN
UPDATE IV00102
SET ATYALLOC = ATYALLOC + (@I_vQUANTITY * @QTYBSUOM),
QTYBKORD = QTYBKORD + ((@I_vQTYTBAOR + @QTYTOBO) * (@QTYBSUOM))
FROM IV00102 WITH (UPDLOCK INDEX(PKIV00102))
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE;
END;
ELSE
BEGIN
UPDATE IV00102
SET QTYBKORD = QTYBKORD + ((@I_vQTYTBAOR + @QTYTOBO) * (@QTYBSUOM))
FROM IV00102 WITH (UPDLOCK INDEX(PKIV00102))
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE;
END;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 470;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
IF (@ALLOCABY = 1)
AND (@ITEMTYPE IN ( 1, 2 ))
BEGIN
UPDATE IV00102
SET ATYALLOC = ATYALLOC + (@I_vQUANTITY * @QTYBSUOM),
QTYBKORD = QTYBKORD + ((@I_vQTYTBAOR + @QTYTOBO) * (@QTYBSUOM))
FROM IV00102 WITH (UPDLOCK INDEX(PKIV00102))
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = '';
END;
ELSE
BEGIN
UPDATE IV00102
SET QTYBKORD = QTYBKORD + ((@I_vQTYTBAOR + @QTYTOBO) * (@QTYBSUOM))
FROM IV00102 WITH (UPDLOCK INDEX(PKIV00102))
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = '';
END;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 587;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF (
(@I_vSOPTYPE = 5)
AND (@ITEMTYPE IN ( 1, 2, 3, 5 ))
AND (@LOCNCODE <> '')
)
BEGIN
UPDATE IV00102
SET QTYBKORD = QTYBKORD + (@I_vQUANTITY * @QTYBSUOM)
FROM IV00102 WITH (UPDLOCK INDEX(PKIV00102))
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = @I_vLOCNCODE;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 521;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYBKORD = QTYBKORD + (@I_vQUANTITY * @QTYBSUOM)
FROM IV00102 WITH (UPDLOCK INDEX(PKIV00102))
WHERE ITEMNMBR = @I_vITEMNMBR
AND LOCNCODE = '';
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 3472;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF (NOT EXISTS
(
SELECT 1
FROM tempdb..sysobjects
WHERE id =
(
SELECT OBJECT_ID('tempdb..#eConnectCalledFromSopLine')
)
)
)
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,
@OLDKITXTNDPRCE = XTNDPRCE
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 - QTYCANCE)) / @KITQUANTITY, @KITITEMFUNCTDEC), 0))
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ <> 0;
END;
IF (@CALCKITC = 1)
BEGIN
IF (@PRICMTHD IN ( 3, 4, 5, 6 ))
BEGIN
SELECT @fieldupdate = 1;
SELECT @UOMPRICE = UOMPRICE / 100
FROM IV00108 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CURNCYID = @FUNLCURR
AND PRCLEVEL = @PRCLEVEL
AND UOFM = @KITUOFM
AND FROMQTY <= @KITQUANTITY
AND TOQTY >= @KITQUANTITY;
IF (@PRICMTHD = 3)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND((SUM(b.CURRCOST * (a.QUANTITY - a.QTYCANCE)) / @KITQUANTITY), @KITITEMFUNCTDEC)
* ISNULL(ROUND(1 + @UOMPRICE, @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 (@PRICMTHD = 4)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND(
(SUM(b.STNDCOST * (a.QUANTITY - a.QTYCANCE)) / @KITQUANTITY),
@KITITEMFUNCTDEC
) * ISNULL(ROUND(1 + @UOMPRICE, @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 (@PRICMTHD = 5)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND(
(SUM(b.CURRCOST * (a.QUANTITY - a.QTYCANCE)) / @KITQUANTITY),
@KITITEMFUNCTDEC
) / ISNULL(1 - @UOMPRICE, 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 (@PRICMTHD = 6)
BEGIN
SELECT @UNITPRCE
= ROUND(
ROUND(
(SUM(b.STNDCOST * (a.QUANTITY - a.QTYCANCE)) / @KITQUANTITY),
@KITITEMFUNCTDEC
) / ISNULL(1 - @UOMPRICE, 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;
END;
IF EXISTS
(
SELECT TOP 1
1
FROM IV00108 (NOLOCK)
WHERE ITEMNMBR = @I_vITEMNMBR
AND CURNCYID <> ''
)
BEGIN
SELECT @tCURNCYID = @I_vCURNCYID;
END;
ELSE
BEGIN
SELECT @tCURNCYID = '';
END;
SELECT @RNDGAMNT = ISNULL(RNDGAMNT, 0),
@ROUNDHOW = ISNULL(ROUNDHOW, 0),
@ROUNDTO = ISNULL(ROUNDTO, 0)
FROM IV00107 (NOLOCK)
WHERE ITEMNMBR = @KITITEMNMBR
AND CURNCYID = @I_vCURNCYID
AND PRCLEVEL = @PRCLEVEL
AND UOFM = @KITUOFM
AND QTYBSUOM = @QTYBSUOM;
IF @ROUNDTO > 1
AND @ROUNDTO < 5
BEGIN
EXEC @iStatus = taPricingGetRoundPrice @ROUNDTO,
@ROUNDHOW,
@RNDGAMNT,
@UNITPRCE OUTPUT;
SELECT @iError = @@error;
IF (@iError <> 0)
OR (@iStatus <> 0)
BEGIN
IF (@iStatus <> 0)
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @iStatus;
END;
SELECT @O_iErrorState = 8183;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
END;
IF (@UNITPRCE IS NULL)
BEGIN
SELECT @UNITPRCE = 0;
END;
END;
SELECT @XTNDPRCE = ISNULL(ROUND(QUANTITY * (@UNITPRCE - MRKDNAMT), @EDITDECPLCUR), 0)
FROM SOP10200 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND LNITMSEQ = @I_vLNITMSEQ
AND CMPNTSEQ = 0;
END;
UPDATE SOP10200
SET UNITCOST = CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NULL)
) THEN
@KITUNITCOST
ELSE
0
END,
ORUNTCST = CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NOT NULL)
) THEN
@KITUNITCOST
ELSE
0
END,
EXTDCOST = CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NULL)
) THEN
@KITEXTDCOST
ELSE
0
END,
OREXTCST = CASE
WHEN
(
(@ISMCTRX = 0)
OR (@I_vUNITCOST IS NOT NULL)
) THEN
@KITEXTDCOST
ELSE
0
END,
UNITPRCE = CASE
WHEN @fieldupdate = 1 THEN
@UNITPRCE
ELSE
UNITPRCE
END,
ORUNTPRC = CASE
WHEN @fieldupdate = 1
AND @ISMCTRX = 1 THEN
0
WHEN @fieldupdate = 1
AND @ISMCTRX = 0 THEN
@UNITPRCE
ELSE
ORUNTPRC
END,
XTNDPRCE = CASE
WHEN @fieldupdate = 1 THEN
@XTNDPRCE
ELSE
XTNDPRCE
END,
OXTNDPRC = CASE
WHEN @fieldupdate = 1
AND @ISMCTRX = 1 THEN
0
WHEN @fieldupdate = 1
AND @ISMCTRX = 0 THEN
@XTNDPRCE
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 = 522;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF ((@ENABLEMULTIBIN = 1) AND (@ITMTRKOP = 1))
BEGIN
IF (@I_vSOPTYPE = 4)
BEGIN
SELECT @I_vAutoAssignBin = 1;
END;
IF (
(@ITEMTYPE IN ( 1, 2 ))
AND (@I_vNONINVEN = 0)
AND (@I_vSOPTYPE IN ( 2, 3, 6 ))
)
BEGIN
IF (@I_vQTYFULFI > 0)
BEGIN
SELECT @BinFulfillQty = @I_vQTYFULFI * @QTYBSUOM;
END;
ELSE
BEGIN
IF (
(
(
(@ALLOCABY = 3)
OR (@ALLOCABY = 2)
)
OR
(
(@ALLOCABY = 1)
AND (@USPFULPR = 1)
)
)
OR (@I_vQTYFULFI = 0)
)
BEGIN
SELECT @BinFulfillQty = 0;
END;
ELSE
BEGIN
SELECT @BinFulfillQty = CASE
WHEN @ITMTRKOP = 1 THEN
@I_vQUANTITY * @QTYBSUOM
WHEN @ITMTRKOP = 2 THEN
@serialstoallocate
WHEN @ITMTRKOP = 3 THEN
@LotsToAllocate
ELSE
0
END;
END;
END;
END;
IF (@I_vAutoAssignBin = 1)
BEGIN
IF EXISTS
(
SELECT 1
FROM SOP10203 (NOLOCK)
WHERE SOPTYPE = @I_vSOPTYPE
AND SOPNUMBE = @I_vSOPNUMBE
AND ITEMNMBR = @I_vITEMNMBR
AND LNITMSEQ = @I_vLNITMSEQ
)
BEGIN
SELECT @O_iErrorState = 7192;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
WHILE (@BinQtyType < 6)
BEGIN
IF (@I_vSOPTYPE = 4)
BEGIN
SELECT @BinFulfillQty = CASE @BinQtyType
WHEN 1 THEN
@I_vQTYONHND
WHEN 2 THEN
@I_vQTYRTRND
WHEN 3 THEN
@I_vQTYINUSE
WHEN 4 THEN
@I_vQTYINSVC
WHEN 5 THEN
@I_vQTYDMGED
ELSE
@BinFulfillQty
END;
END;
IF (@BinFulfillQty > 0)
BEGIN
EXEC @iStatus = taSopMultiBin @I_vSOPNUMBE = @I_vSOPNUMBE,
@I_vSOPTYPE = @I_vSOPTYPE,
@I_vITEMNMBR = @I_vITEMNMBR,
@I_vLNITMSEQ = @I_vLNITMSEQ,
@I_vCMPNTSEQ = @I_vCMPNTSEQ,
@I_vBIN = '',
@I_vQTYTYPE = @BinQtyType,
@I_vUOFM = @KITQTYBSUOM,
@I_vQUANTITY = @BinFulfillQty,
@I_vCreateBin = 0,
@I_vOverrideBin = 1,
@I_vRequesterTrx = 1,
@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 = 7191;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
BREAK;
END;
END;
IF (@I_vSOPTYPE = 4)
BEGIN
SELECT @BinQtyType = @BinQtyType + 1;
END;
ELSE
BEGIN
SELECT @BinQtyType = 6;
END;
END;
END;
END;
BREAK;
END;
IF (@I_vUpdateIfExists = 1)
AND (@I_vSOPTYPE = 2)
AND (@PRICMTHD IN ( 3, 4, 5, 6 ))
BEGIN
SELECT @CHGAMNT = @OLDKITXTNDPRCE;
SELECT @STOP = 1,
@RECALCBTCHTOT = 4;
END;
IF (@mylock = 1)
BEGIN
IF (@hdrexists = 1)
BEGIN
SELECT @ORTDISAM = ORTDISAM,
@TRDISPCT = TRDISPCT,
@PYMTRMID = PYMTRMID,
@DUEDATE = DUEDATE,
@DISCDATE = DISCDATE,
@CHGAMNT = CASE
WHEN @STOP = 1 THEN
@CHGAMNT
ELSE
ORSUBTOT
END,
@PRSTADCD = PRSTADCD,
@DSCPCTAM = DSCPCTAM / 100,
@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,
@SALSTERR = SALSTERR,
@SLPRSNID = SLPRSNID,
@UPSZONE = UPSZONE,
@TAXEXMT1 = TAXEXMT1,
@TAXEXMT2 = TAXEXMT2,
@TXRGNNUM = TXRGNNUM
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;
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_vSALSTERR = @SALSTERR,
@I_vSLPRSNID = @SLPRSNID,
@I_vUPSZONE = @UPSZONE,
@I_vTAXEXMT1 = @TAXEXMT1,
@I_vTAXEXMT2 = @TAXEXMT2,
@I_vTXRGNNUM = @TXRGNNUM,
@I_vRECREATEDIST = @I_vRecreateDist,
@I_vRECREATECOMM = @I_vRECREATECOMM,
@I_vRECREATETAXES = 0,
@I_vRECALCBTCHTOT = @RECALCBTCHTOT,
@I_vDSCPCTAM = @DSCPCTAM,
@I_vCHGAMNT = @CHGAMNT,
@I_vUSRDEFND1 = @I_vLNITMSEQ,
@O_iErrorState = @SopHdrUpdateState OUTPUT,
@oErrString = @SopHdrUpdateErrString OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@SopHdrUpdateState <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @SopHdrUpdateErrString;
SELECT @O_iErrorState = 8130;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
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 = 4063;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
EXEC @iStatus = taSopLineIvcInsertComponentPost @I_vSOPTYPE,
@I_vSOPNUMBE,
@I_vUSERDATE,
@I_vLOCNCODE,
@I_vLNITMSEQ,
@I_vITEMNMBR,
@I_vAutoAssignBin,
@I_vITEMDESC,
@I_vQUANTITY,
@I_vQTYTBAOR,
@I_vQTYCANCE,
@I_vQTYFULFI,
@I_vQUOTEQTYTOINV,
@I_vQTYONHND,
@I_vQTYRTRND,
@I_vQTYINUSE,
@I_vQTYINSVC,
@I_vQTYDMGED,
@I_vCUSTNMBR,
@I_vDOCID,
@I_vUNITCOST,
@I_vNONINVEN,
@I_vAUTOALLOCATESERIAL,
@I_vAUTOALLOCATELOT,
@I_vCMPNTSEQ,
@I_vCMPITUOM,
@I_vCURNCYID,
@I_vUpdateIfExists,
@I_vRecreateDist,
@I_vRequesterTrx,
@I_vQtyShrtOpt,
@I_vRECREATECOMM,
@I_vUSRDEFND1,
@I_vUSRDEFND2,
@I_vUSRDEFND3,
@I_vUSRDEFND4,
@I_vUSRDEFND5,
@O_iErrorState = @iCustomStatePost OUTPUT,
@oErrString = @iCustomErrStringPost OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus <> 0) OR (@iCustomStatePost <> 0) OR (@iError <> 0))
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @iCustomErrStringPost;
SELECT @O_iErrorState = 3423;
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 = 4062;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
RETURN (@O_iErrorState);