ALTER PROCEDURE [dbo].[taSopLotAuto] @I_vSOPTYPE SMALLINT, @I_vSOPNUMBE CHAR(21), @I_vUSERDATE DATETIME='', @I_vLNITMSEQ INT, @I_vITEMNMBR CHAR(30), @I_vLOCNCODE CHAR(10) ='', @I_vQUANTITY NUMERIC(19, 5), @I_vBIN CHAR(15) ='', @I_vCREATEBIN TINYINT=0, @I_vLOTNUMBR CHAR(20) ='', @I_vEXPNDATE DATETIME='', @I_vMFGDATE DATETIME='', @I_vQTYTYPE SMALLINT=1, @I_vRequesterTrx SMALLINT=0, @I_vDOCID CHAR(15) ='', @I_vDROPSHIP SMALLINT=0, @I_vQTYFULFI NUMERIC(19, 5) =NULL, @I_vALLOCATE SMALLINT=0, @I_vCMPNTSEQ INT=0, @I_vLOTNUMBRToReplace CHAR(20) ='', @I_vAUTOCREATELOT INT=0, @I_vUOFM CHAR(8) ='', @I_vDATERECD DATETIME='', @I_vUpdateIfExists 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 VARCHAR(255) OUTPUT
AS
SET DEADLOCK_PRIORITY LOW;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
DECLARE @QTYRECVD NUMERIC(19, 5), @DTSEQNUM NUMERIC(19, 5), @UNITCOST NUMERIC(19, 5), @SLTSQNUM INT, @ATYALLOC NUMERIC(19, 5), @QTYSOLD NUMERIC(19, 5), @VCTNMTHD TINYINT, @OVRSERLT TINYINT, @ITMTRKOP TINYINT, @iStatus INT, @iError INT, @iCustomState INT, @iCustomErrString VARCHAR(255), @O_oErrorState INT, @ALLOCABY SMALLINT, @USPFULPR SMALLINT, @LOCNCODE CHAR(10), @ExstITEMNMBR CHAR(30), @ExstATYALLOC NUMERIC(19, 5), @ExstQTYFULFI NUMERIC(19, 5), @QTYBSUOM NUMERIC(19, 5), @SOPHdrTbl CHAR(18), @DexRowID INT, @oExists INT, @OInsStatus INT, @mylock TINYINT, @DexLockErrorState INT, @QUANTITY NUMERIC(19, 5), @QtyDone NUMERIC(19, 5), @LotFound SMALLINT, @QtyAvail NUMERIC(19, 5), @SERLTQTY NUMERIC(19, 5), @AmntOverExst NUMERIC(19, 5), @UOFMBASE CHAR(8), @UOMSCHDL CHAR(10), @DTSEQNUMREP NUMERIC(19, 5), @ATYALLOCMAST NUMERIC(19, 5), @ATYALLOCREP NUMERIC(19, 5), @DATERECDREP DATETIME, @ENABLEMULTIBIN TINYINT, @sCompanyID INT, @NOTEINDX NUMERIC(19, 5), @iGetNextNoteIdxErrState INT, @BinToReplace CHAR(15), @QTY NUMERIC(19, 5), @ALLEXPLOTSOTHER TINYINT, @ASSIGNLOTNUMBY TINYINT, @USEEXISTINGSNLOTS TINYINT, @LotHit TINYINT, @SITEINACTIVE TINYINT, @ITEMSITEINACTIVE TINYINT;
SELECT @QTYRECVD=0, @DTSEQNUM=0, @UNITCOST=0, @ATYALLOC=0, @QTYSOLD=0, @VCTNMTHD=0, @OVRSERLT=0, @ITMTRKOP=0, @iStatus=0, @iError=0, @iCustomState=0, @iCustomErrString='', @O_iErrorState=0, @ALLOCABY=0, @USPFULPR=0, @LOCNCODE='', @ExstITEMNMBR='', @ExstATYALLOC=0, @ExstQTYFULFI=0, @QTYBSUOM=0, @SOPHdrTbl='', @DexRowID=0, @oExists=0, @OInsStatus=0, @mylock=0, @DexLockErrorState=0, @QUANTITY=0, @QtyDone=0, @LotFound=0, @QtyAvail=0, @SERLTQTY=0, @AmntOverExst=0, @UOFMBASE=0, @UOMSCHDL='', @DTSEQNUMREP=0, @ATYALLOCMAST=0, @ATYALLOCREP=0, @DATERECDREP='', @ENABLEMULTIBIN=0, @sCompanyID=0, @NOTEINDX=0, @iGetNextNoteIdxErrState=0, @BinToReplace='', @QTY=0, @ALLEXPLOTSOTHER=0, @ASSIGNLOTNUMBY=1, @USEEXISTINGSNLOTS=0, @LotHit=0, @SITEINACTIVE=0, @ITEMSITEINACTIVE=0;
IF(@oErrString IS NULL)BEGIN
SELECT @oErrString='';
END;
EXEC @iStatus=taSopLotAutoPre @I_vSOPTYPE OUTPUT, @I_vSOPNUMBE OUTPUT, @I_vUSERDATE OUTPUT, @I_vLNITMSEQ OUTPUT, @I_vITEMNMBR OUTPUT, @I_vLOCNCODE OUTPUT, @I_vQUANTITY OUTPUT, @I_vBIN OUTPUT, @I_vCREATEBIN OUTPUT, @I_vLOTNUMBR OUTPUT, @I_vEXPNDATE OUTPUT, @I_vMFGDATE OUTPUT, @I_vQTYTYPE OUTPUT, @I_vRequesterTrx OUTPUT, @I_vDOCID OUTPUT, @I_vDROPSHIP OUTPUT, @I_vQTYFULFI OUTPUT, @I_vALLOCATE OUTPUT, @I_vCMPNTSEQ OUTPUT, @I_vLOTNUMBRToReplace OUTPUT, @I_vAUTOCREATELOT OUTPUT, @I_vUOFM OUTPUT, @I_vDATERECD OUTPUT, @I_vUpdateIfExists 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)+' '+LTRIM(RTRIM(@iCustomErrString));
SELECT @O_iErrorState=2629;
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_vUSERDATE IS NULL OR @I_vITEMNMBR IS NULL OR @I_vQUANTITY IS NULL OR @I_vBIN IS NULL OR @I_vCREATEBIN IS NULL OR @I_vLNITMSEQ IS NULL OR @I_vDOCID IS NULL OR @I_vDROPSHIP IS NULL OR @I_vALLOCATE IS NULL OR @I_vCMPNTSEQ IS NULL OR @I_vLOTNUMBRToReplace IS NULL OR @I_vAUTOCREATELOT IS NULL OR @I_vUOFM IS NULL OR @I_vUpdateIfExists IS NULL)BEGIN
SELECT @O_iErrorState=3332;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vSOPTYPE=0)OR(@I_vSOPNUMBE=''))BEGIN
SELECT @O_iErrorState=3333;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF(@I_vUSERDATE='')BEGIN
SELECT @I_vUSERDATE=CONVERT(VARCHAR(12), GETDATE());
END;
IF @I_vDATERECD='' BEGIN
SELECT @I_vDATERECD=CONVERT(VARCHAR(12), GETDATE());
END;
SELECT @I_vSOPNUMBE=UPPER(@I_vSOPNUMBE), @I_vITEMNMBR=UPPER(@I_vITEMNMBR), @I_vLOTNUMBR=UPPER(@I_vLOTNUMBR), @I_vLOCNCODE=UPPER(@I_vLOCNCODE), @I_vDOCID=UPPER(@I_vDOCID), @I_vBIN=UPPER(@I_vBIN);
IF(@I_vSOPTYPE<>3)AND(@I_vQUANTITY<0)BEGIN
SELECT @O_iErrorState=7478;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
SELECT @QTY=@I_vQUANTITY;
IF(@I_vSOPTYPE=3 AND @I_vQUANTITY<0)BEGIN
SELECT @I_vQUANTITY=@I_vQUANTITY *-1;
END;
SELECT @ENABLEMULTIBIN=ENABLEMULTIBIN, @ALLEXPLOTSOTHER=ALLEXPLOTSOTHER, @ASSIGNLOTNUMBY=ASSIGNLOTNUMBY, @USEEXISTINGSNLOTS=USEEXISTINGSNLOTS
FROM IV40100(NOLOCK)
WHERE SETUPKEY=1;
SELECT @ITMTRKOP=ITMTRKOP FROM IV00101(NOLOCK)WHERE ITEMNMBR=@I_vITEMNMBR;
IF(@ITMTRKOP<>3)BEGIN
SELECT @O_iErrorState=2080;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vUpdateIfExists<0)OR(@I_vUpdateIfExists>1))BEGIN
SELECT @O_iErrorState=4697;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vQTYTYPE<1)OR(@I_vQTYTYPE>5))BEGIN
SELECT @O_iErrorState=4727;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vUpdateIfExists=0)AND(@I_vLOTNUMBRToReplace<>''))BEGIN
SELECT @O_iErrorState=4698;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vUpdateIfExists=1)AND(@I_vSOPTYPE IN (2, 3, 6))AND(@I_vLOTNUMBRToReplace<>'')AND NOT EXISTS (SELECT 1
FROM IV00300(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBRToReplace))BEGIN
IF((@I_vUpdateIfExists=1)AND(@I_vLOTNUMBRToReplace<>'')AND NOT EXISTS (SELECT 1
FROM IV00300(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBRToReplace))BEGIN
SELECT @O_iErrorState=4699;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
END;
IF((@I_vUpdateIfExists=1)AND(@I_vLOTNUMBRToReplace<>'')AND NOT EXISTS (SELECT 1
FROM SOP10201(NOLOCK)
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ AND POSTED=0 AND ITEMNMBR=@I_vITEMNMBR AND SERLTNUM=@I_vLOTNUMBRToReplace))BEGIN
SELECT @O_iErrorState=4700;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vSOPTYPE IN (2, 3, 6))AND(@I_vQUANTITY>0)AND(@I_vAUTOCREATELOT=0)AND(@I_vLOTNUMBR<>'')AND(NOT EXISTS (SELECT 1
FROM IV00300(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBR AND LOCNCODE=@I_vLOCNCODE)))BEGIN
SELECT @O_iErrorState=4725;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vSOPTYPE<2)OR(@I_vSOPTYPE>6))BEGIN
SELECT @O_iErrorState=3334;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF(@I_vQTYFULFI>0)BEGIN
SELECT @I_vQUANTITY=@I_vQTYFULFI;
END;
IF(@I_vQTYFULFI IS NULL)BEGIN
SELECT @I_vQTYFULFI=@I_vQUANTITY;
END;
IF(@I_vQTYFULFI=0)BEGIN
RETURN;
END;
IF(@I_vLOCNCODE='')BEGIN
SELECT @I_vLOCNCODE=LOCNCODE FROM SOP40100(NOLOCK);
END;
SELECT @I_vUOFM=CASE WHEN @I_vUOFM='' THEN SELNGUOM ELSE @I_vUOFM END, @UOMSCHDL=UOMSCHDL
FROM IV00101(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR;
SELECT @UOFMBASE=BASEUOFM FROM IV40201(NOLOCK)WHERE UOMSCHDL=@UOMSCHDL;
SELECT @QTYBSUOM=QTYBSUOM
FROM IV40202(NOLOCK)
WHERE UOMSCHDL=@UOMSCHDL AND EQUIVUOM=@UOFMBASE AND UOFM=@I_vUOFM;
IF(@I_vUOFM='')BEGIN
SELECT @O_iErrorState=4729;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF NOT EXISTS (SELECT 1 FROM IV00107(NOLOCK)WHERE ITEMNMBR=@I_vITEMNMBR AND UOFM=@I_vUOFM)BEGIN
SELECT @O_iErrorState=7190;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
SELECT @QUANTITY=@I_vQUANTITY;
SELECT @I_vQUANTITY=@I_vQUANTITY * @QTYBSUOM;
SELECT TOP 1 @LOCNCODE=LOCNCODE FROM IV40700(NOLOCK)WHERE LOCNCODE<>'';
IF(@I_vLOCNCODE='')BEGIN
IF(@LOCNCODE<>'')BEGIN
SELECT @O_iErrorState=969;
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=1367;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((NOT EXISTS (SELECT 1
FROM IV00102(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE)))BEGIN
SELECT @O_iErrorState=1388;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
END;
IF(@LOCNCODE='')BEGIN
SELECT @O_iErrorState=2078;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
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=11813;
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=11814;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF(@I_vUpdateIfExists=1)BEGIN
IF(NOT EXISTS (SELECT 1
FROM SOP10100(NOLOCK)
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE))BEGIN
SELECT @O_iErrorState=4701;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
SELECT @ExstITEMNMBR=ITEMNMBR, @ExstATYALLOC=ATYALLOC, @ExstQTYFULFI=QTYFULFI, @QTYBSUOM=QTYBSUOM
FROM SOP10200(NOLOCK)
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ;
IF(@I_vITEMNMBR<>@ExstITEMNMBR)BEGIN
SELECT @O_iErrorState=4702;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vLOTNUMBR<>'')AND(@I_vLOTNUMBRToReplace='')AND(@ExstQTYFULFI+@I_vQTYFULFI>@ExstATYALLOC))BEGIN
SELECT @O_iErrorState=4703;
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=5656;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
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=7741;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
IF(@I_vDOCID<>'')AND(@I_vSOPTYPE<>6)BEGIN
SELECT @ALLOCABY=ALLOCABY, @USPFULPR=USPFULPR
FROM SOP40200(NOLOCK)
WHERE DOCID=@I_vDOCID AND SOPTYPE=@I_vSOPTYPE;
END;
ELSE BEGIN
SELECT @ALLOCABY=1, @USPFULPR=0;
END;
IF(@I_vDOCID<>'')AND(@I_vSOPTYPE=6)BEGIN
SELECT @ALLOCABY=ALLOCABY, @USPFULPR=USPFULPR
FROM SOP40200(NOLOCK)
WHERE DOCID=@I_vDOCID AND SOPTYPE=3;
END;
ELSE BEGIN
SELECT @ALLOCABY=1, @USPFULPR=0;
END;
IF((@I_vSOPTYPE IN (2, 3, 6))AND(@I_vQTYTYPE<>1))BEGIN
SELECT @O_iErrorState=4726;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vDROPSHIP=1)AND(@I_vAUTOCREATELOT=1))BEGIN
SELECT @O_iErrorState=4724;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF(@I_vLOTNUMBRToReplace<>'')BEGIN
IF(NOT EXISTS (SELECT 1
FROM SOP10201(NOLOCK)
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ AND QTYTYPE=@I_vQTYTYPE AND SERLTNUM=@I_vLOTNUMBRToReplace AND SERLTQTY=@I_vQUANTITY))BEGIN
SELECT @O_iErrorState=4731;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
END;
IF(@ENABLEMULTIBIN=0)BEGIN
IF(@I_vCREATEBIN=1)BEGIN
SELECT @O_iErrorState=7199;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF(@I_vBIN<>'')BEGIN
SELECT @O_iErrorState=7174;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
END;
ELSE BEGIN
IF((@I_vAUTOCREATELOT=0)AND(@I_vCREATEBIN=1)AND(@I_vSOPTYPE<>4))BEGIN
SELECT @O_iErrorState=7175;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF(@I_vSOPTYPE=4)BEGIN
IF(@I_vBIN='')BEGIN
SELECT @I_vBIN=SORETURNBIN
FROM IV00102(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE;
END;
IF(@I_vBIN='')BEGIN
SELECT @I_vBIN=SORETURNBIN FROM IV40700(NOLOCK)WHERE LOCNCODE=@I_vLOCNCODE;
END;
IF(@I_vBIN='')BEGIN
SELECT @O_iErrorState=7176;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
END;
IF((@I_vSOPTYPE<>4)AND(@I_vBIN<>'')AND(@I_vCREATEBIN=0))BEGIN
IF NOT EXISTS (SELECT 1
FROM IV00112(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND BIN=@I_vBIN AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE)BEGIN
SELECT @O_iErrorState=7177;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
ELSE BEGIN
IF((SELECT QUANTITY-ATYALLOC
FROM IV00112(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND BIN=@I_vBIN AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE)<@I_vQTYFULFI)BEGIN
SELECT @O_iErrorState=7178;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
END;
END;
IF((@I_vBIN='')AND(@I_vCREATEBIN=1))BEGIN
SELECT @O_iErrorState=7179;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF(@I_vCREATEBIN NOT IN (0, 1))BEGIN
SELECT @O_iErrorState=7180;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
END;
IF((@I_vBIN<>'')AND NOT EXISTS (SELECT 1 FROM IV40701(NOLOCK)WHERE LOCNCODE=@I_vLOCNCODE AND BIN=@I_vBIN)AND(@I_vCREATEBIN=0))BEGIN
SELECT @O_iErrorState=7181;
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=4705;
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;
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=4706;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF(@I_vUpdateIfExists=1)BEGIN
IF(@I_vLOTNUMBRToReplace<>'')BEGIN
SELECT @DTSEQNUMREP=DTSEQNUM, @DATERECDREP=DATERECD, @ATYALLOCREP=SERLTQTY, @BinToReplace=BIN
FROM SOP10201(NOLOCK)
WHERE SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ AND QTYTYPE=@I_vQTYTYPE AND SERLTNUM=@I_vLOTNUMBRToReplace AND SERLTQTY=@I_vQUANTITY;
IF(@I_vSOPTYPE IN (2, 3))BEGIN
SELECT @ATYALLOCMAST=ATYALLOC
FROM IV00300(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBRToReplace AND DTSEQNUM=@DTSEQNUMREP AND DATERECD=@DATERECDREP;
IF(@ATYALLOCREP>@ATYALLOCMAST)BEGIN
SELECT @O_iErrorState=4732;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF((@I_vSOPTYPE<>4)AND(@BinToReplace<>''))BEGIN
UPDATE IV00112
SET ATYALLOC=ATYALLOC-@I_vQUANTITY
FROM IV00112(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND BIN=@BinToReplace AND QTYTYPE=@I_vQTYTYPE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=7182;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
DELETE SOP10201
WHERE SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ AND QTYTYPE=@I_vQTYTYPE AND SERLTNUM=@I_vLOTNUMBRToReplace AND SERLTQTY=@I_vQUANTITY;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=4707;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00300
SET ATYALLOC=ATYALLOC-@I_vQUANTITY
FROM IV00300(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBRToReplace AND DTSEQNUM=@DTSEQNUMREP AND DATERECD=@DATERECDREP;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=4708;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF(@I_vLOTNUMBR<>'')BEGIN
UPDATE SOP10200
SET FUFILDAT=@I_vUSERDATE, ACTLSHIP=@I_vUSERDATE
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=4709;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF(@I_vCMPNTSEQ<>0)BEGIN
UPDATE SOP10200
SET FUFILDAT=@I_vUSERDATE, ACTLSHIP=@I_vUSERDATE
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=0;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=4734;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF((@I_vLOTNUMBRToReplace<>'')AND(@I_vLOTNUMBR=''))BEGIN
UPDATE SOP10200
SET QTYFULFI=QTYFULFI-@QUANTITY, QTYSLCTD=QTYSLCTD-@I_vQUANTITY, EXTQTYSEL=EXTQTYSEL-@I_vQUANTITY
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=7183;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF(@I_vLOTNUMBRToReplace<>'')BEGIN
IF((SELECT RCTSEQNM
FROM IV00300(NOLOCK)
WHERE LOTNUMBR=@I_vLOTNUMBRToReplace AND ITEMNMBR=@I_vITEMNMBR AND DTSEQNUM=@DTSEQNUMREP)=0)BEGIN
DELETE IV00300
WHERE LOTNUMBR=@I_vLOTNUMBRToReplace AND ITEMNMBR=@I_vITEMNMBR AND RCTSEQNM=0;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=6523;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYONHND=QTYONHND-@I_vQUANTITY
FROM IV00102(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=6524;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYONHND=QTYONHND-@I_vQUANTITY
FROM IV00102(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE='';
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=6525;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
IF(@BinToReplace<>'')BEGIN
UPDATE IV00112
SET QUANTITY=QUANTITY-@I_vQUANTITY
FROM IV00112(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND BIN=@BinToReplace AND QTYTYPE=@I_vQTYTYPE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=6526;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
END;
IF((@I_vLOTNUMBR<>'')AND(@I_vLOTNUMBRToReplace=''))BEGIN
UPDATE SOP10200
SET QTYFULFI=QTYFULFI+@QUANTITY, QTYSLCTD=QTYSLCTD+@I_vQUANTITY, EXTQTYSEL=EXTQTYSEL+@I_vQUANTITY
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=7184;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF(@UNITCOST=0)BEGIN
SELECT @UNITCOST=CASE WHEN VCTNMTHD IN (4, 5) THEN STNDCOST ELSE CURRCOST END
FROM IV00101(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR;
END;
IF((@I_vCREATEBIN=1)AND NOT EXISTS (SELECT 1 FROM IV40701(NOLOCK)WHERE LOCNCODE=@I_vLOCNCODE AND BIN=@I_vBIN))BEGIN
SELECT @sCompanyID=CMPANYID
FROM DYNAMICS..SY01500(NOLOCK)
WHERE INTERID=DB_NAME();
EXEC @iStatus=DYNAMICS..tasmGetNextNoteIndex @I_sCompanyID=@sCompanyID, @I_iSQLSessionID=0, @I_noteincrement=1, @O_mNoteIndex=@NOTEINDX OUTPUT, @O_iErrorState=@iGetNextNoteIdxErrState OUTPUT;
SELECT @iError=@@error;
IF((@iStatus<>0)OR(@iGetNextNoteIdxErrState<>0)OR(@iError<>0))BEGIN
SELECT @oErrString=RTRIM(@oErrString)+' '+@iGetNextNoteIdxErrState;
SELECT @O_iErrorState=7185;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
INSERT IV40701(LOCNCODE, BIN, NOTEINDX)
SELECT @I_vLOCNCODE, @I_vBIN, @NOTEINDX;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=7186;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF(@I_vAUTOCREATELOT=1)BEGIN
SELECT @AmntOverExst=ISNULL(SUM(QTYRECVD-QTYSOLD-ATYALLOC), 0)-@I_vQUANTITY
FROM IV00300(NOLOCK)
WHERE QTYTYPE=1 AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR;
IF(@AmntOverExst<0)BEGIN
SELECT @AmntOverExst=@AmntOverExst *-1;
END; ELSE BEGIN
SELECT @AmntOverExst=0;
END;
END;
IF((@I_vAUTOCREATELOT=1)AND(@AmntOverExst>0)AND(@I_vLOTNUMBR<>'')AND((@I_vSOPTYPE IN (2, 3, 6)AND @QTY>0))AND((@ALLOCABY=1)OR(@I_vALLOCATE=1))AND((@USPFULPR=0)OR(@I_vQTYFULFI>0))AND(@I_vQTYFULFI<>0)AND(@I_vDROPSHIP=0))BEGIN
SELECT @DTSEQNUM=ISNULL(MAX(DTSEQNUM), 0)+16384
FROM IV00300(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND DATERECD=@I_vDATERECD;
IF(@ENABLEMULTIBIN=1)BEGIN
IF((@I_vCREATEBIN=1)AND NOT EXISTS (SELECT 1
FROM IV00112(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND BIN=@I_vBIN AND QTYTYPE=1))BEGIN
INSERT IV00112(ITEMNMBR, LOCNCODE, BIN, QTYTYPE, QUANTITY, ATYALLOC)
SELECT @I_vITEMNMBR, @I_vLOCNCODE, @I_vBIN, 1, 0, 0;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=7187;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
UPDATE IV00112
SET QUANTITY=QUANTITY+@I_vQUANTITY
FROM IV00112(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND BIN=@I_vBIN AND QTYTYPE=@I_vQTYTYPE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=7188;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF(@USEEXISTINGSNLOTS=1)BEGIN
SELECT @O_iErrorState=9593;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
SELECT @OVRSERLT=1;
INSERT IV00300(ITEMNMBR, LOCNCODE, DATERECD, DTSEQNUM, LOTNUMBR, QTYRECVD, QTYSOLD, ATYALLOC, UNITCOST, RCTSEQNM, VNDRNMBR, LTNUMSLD, QTYTYPE, BIN, MFGDATE, EXPNDATE)
SELECT @I_vITEMNMBR, @I_vLOCNCODE, @I_vDATERECD, @DTSEQNUM, @I_vLOTNUMBR, @AmntOverExst, 0, 0, @UNITCOST, 0, '', 0, @I_vQTYTYPE, CASE @ENABLEMULTIBIN WHEN 1 THEN @I_vBIN ELSE '' END, @I_vMFGDATE, @I_vEXPNDATE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=2081;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
IF((SELECT ISNULL(LOTTYPE, '')FROM IV00101(NOLOCK)WHERE ITEMNMBR=@I_vITEMNMBR)<>'')BEGIN
IF NOT EXISTS (SELECT 1
FROM IV00301(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBR)BEGIN
INSERT IV00301(ITEMNMBR, LOTNUMBR, LOTATRB1, LOTATRB2, LOTATRB3, LOTATRB4, LOTATRB5, IUSCOUNT, RCRDSTTS)
SELECT @I_vITEMNMBR, @I_vLOTNUMBR, '', '', '', '', '', 1, 2;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=6354;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
ELSE BEGIN
IF(@I_vLOTNUMBRToReplace='')BEGIN
UPDATE IV00301
SET IUSCOUNT=IUSCOUNT+1
FROM IV00301(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBR;
END;
ELSE BEGIN
UPDATE IV00301
SET IUSCOUNT=IUSCOUNT-1
FROM IV00301(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBR;
END;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=6358;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
UPDATE IV00102
SET QTYONHND=QTYONHND+@I_vQUANTITY
FROM IV00102(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=3327;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
UPDATE IV00102
SET QTYONHND=QTYONHND+@I_vQUANTITY
FROM IV00102(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE='';
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=3328;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF((@I_vAUTOCREATELOT=1)AND(@AmntOverExst>0)AND(@I_vLOTNUMBR<>'')AND((@I_vSOPTYPE IN (2, 3, 6)AND @QTY<0))AND((@ALLOCABY=1)OR(@I_vALLOCATE=1))AND((@USPFULPR=0)OR(@I_vQTYFULFI>0))AND(@I_vQTYFULFI<>0)AND(@I_vDROPSHIP=0))BEGIN
IF((SELECT ISNULL(LOTTYPE, '')FROM IV00101(NOLOCK)WHERE ITEMNMBR=@I_vITEMNMBR)<>'')BEGIN
IF NOT EXISTS (SELECT 1
FROM IV00301(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBR)BEGIN
INSERT IV00301(ITEMNMBR, LOTNUMBR, LOTATRB1, LOTATRB2, LOTATRB3, LOTATRB4, LOTATRB5, IUSCOUNT, RCRDSTTS)
SELECT @I_vITEMNMBR, @I_vLOTNUMBR, '', '', '', '', '', 1, 0;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=5658;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
ELSE BEGIN
IF(@I_vLOTNUMBRToReplace='')BEGIN
UPDATE IV00301
SET IUSCOUNT=IUSCOUNT+1
FROM IV00301(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBR;
END;
ELSE BEGIN
UPDATE IV00301
SET IUSCOUNT=IUSCOUNT-1
FROM IV00301(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOTNUMBR=@I_vLOTNUMBR;
END;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=5659;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
END;
WHILE((@LotFound=0)AND(@I_vLOTNUMBR<>''))BEGIN
SELECT @LotHit=0;
SELECT @SLTSQNUM=ISNULL(MAX(SLTSQNUM), 0)+1
FROM SOP10201(NOLOCK)
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ;
SELECT @DTSEQNUM=ISNULL(MAX(DTSEQNUM), 0)+16384
FROM IV00300(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND DATERECD=@I_vDATERECD;
IF(@I_vSOPTYPE<>4)AND(@QTY>0)BEGIN
SELECT @VCTNMTHD=VCTNMTHD FROM IV00101(NOLOCK)WHERE ITEMNMBR=@I_vITEMNMBR;
IF(@VCTNMTHD IN (1, 3, 4))BEGIN
IF(@ALLEXPLOTSOTHER=1)BEGIN
IF(@ASSIGNLOTNUMBY=2)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE=''))OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE=''))
ORDER BY EXPNDATE, DTSEQNUM;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY EXPNDATE, DTSEQNUM;
END;
END;
IF(@LotHit=0)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE=''))OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE=''))
ORDER BY DATERECD, DTSEQNUM;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY DATERECD, DTSEQNUM;
END;
END;
END;
ELSE BEGIN
IF(@ASSIGNLOTNUMBY=2)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN)
ORDER BY EXPNDATE, DTSEQNUM;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY EXPNDATE, DTSEQNUM;
END;
END;
IF(@LotHit=0)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN)
ORDER BY DATERECD, DTSEQNUM;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY DATERECD, DTSEQNUM;
END;
END;
END;
END;
ELSE BEGIN
IF(@ALLEXPLOTSOTHER=1)BEGIN
IF(@ASSIGNLOTNUMBY=2)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN)
ORDER BY EXPNDATE DESC, DTSEQNUM DESC;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY EXPNDATE DESC, DTSEQNUM DESC;
END;
END;
IF(@LotHit=0)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE=''))OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE=''))
ORDER BY DATERECD DESC, DTSEQNUM DESC;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY DATERECD DESC, DTSEQNUM DESC;
END;
END;
END;
ELSE BEGIN
IF(@ASSIGNLOTNUMBY=2)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN)
ORDER BY EXPNDATE DESC, DTSEQNUM DESC;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY EXPNDATE DESC, DTSEQNUM DESC;
END;
END;
IF(@LotHit=0)BEGIN
IF(@I_vEXPNDATE='')BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND(EXPNDATE>@I_vUSERDATE OR EXPNDATE='')AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN)
ORDER BY DATERECD DESC, DTSEQNUM DESC;
END;
ELSE BEGIN
SELECT TOP 1 @DTSEQNUM=ISNULL(DTSEQNUM, 0), @I_vDATERECD=ISNULL(DATERECD, ''), @LotHit=1
FROM IV00300(NOLOCK)
WHERE(@I_vBIN='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND EXPNDATE=@I_vEXPNDATE)OR(@I_vBIN<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND QTYTYPE=@I_vQTYTYPE AND LTNUMSLD=0 AND LOTNUMBR=@I_vLOTNUMBR AND BIN=@I_vBIN AND EXPNDATE=@I_vEXPNDATE)
ORDER BY DATERECD DESC, DTSEQNUM DESC;
END;
END;
END;
END;
IF((@I_vEXPNDATE<>'')AND NOT EXISTS (SELECT 1
FROM IV00300(NOLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND LOTNUMBR=@I_vLOTNUMBR AND DATERECD=@I_vDATERECD AND DTSEQNUM=@DTSEQNUM AND LTNUMSLD=0 AND QTYTYPE=@I_vQTYTYPE AND EXPNDATE=@I_vEXPNDATE))BEGIN
SELECT @O_iErrorState=9595;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
IF(@LotHit=0)BEGIN
SELECT @O_iErrorState=4728;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
IF(@LotHit>0)BEGIN
SELECT @QTYRECVD=QTYRECVD, @ATYALLOC=ATYALLOC, @QTYSOLD=QTYSOLD, @UNITCOST=UNITCOST, @I_vBIN=CASE @ENABLEMULTIBIN WHEN 1 THEN BIN ELSE '' END, @I_vEXPNDATE=EXPNDATE, @I_vMFGDATE=MFGDATE
FROM IV00300(NOLOCK)
WHERE(@I_vEXPNDATE<>'' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND LOTNUMBR=@I_vLOTNUMBR AND DATERECD=@I_vDATERECD AND DTSEQNUM=@DTSEQNUM AND LTNUMSLD=0 AND QTYTYPE=@I_vQTYTYPE AND EXPNDATE=@I_vEXPNDATE)OR(@I_vEXPNDATE='' AND ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND LOTNUMBR=@I_vLOTNUMBR AND DATERECD=@I_vDATERECD AND DTSEQNUM=@DTSEQNUM AND LTNUMSLD=0 AND QTYTYPE=@I_vQTYTYPE);
IF((@I_vEXPNDATE<>'')AND(@I_vEXPNDATE<=@I_vUSERDATE)AND(@ALLEXPLOTSOTHER=0)AND(@OVRSERLT=0))BEGIN
SELECT @O_iErrorState=9594;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
IF(@I_vQUANTITY>(@QTYRECVD-@ATYALLOC-@QTYSOLD+@QtyDone))BEGIN
SELECT @QtyAvail=@QTYRECVD-@ATYALLOC-@QTYSOLD;
SELECT @SERLTQTY=@QtyAvail;
END;
ELSE BEGIN
SELECT @LotFound=1;
SELECT @SERLTQTY=@I_vQUANTITY-@QtyDone;
SELECT @QtyAvail=@I_vQUANTITY-@QtyDone;
END;
END;
ELSE BEGIN
SELECT @O_iErrorState=3330;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
IF(@I_vSOPTYPE=4)OR(@QTY<0)BEGIN
SELECT @SERLTQTY=@I_vQUANTITY;
END;
IF(NOT EXISTS (SELECT 1
FROM SOP10201(NOLOCK)
WHERE SOPTYPE=@I_vSOPTYPE AND SOPNUMBE=@I_vSOPNUMBE AND LNITMSEQ=@I_vLNITMSEQ AND CMPNTSEQ=@I_vCMPNTSEQ AND QTYTYPE=@I_vQTYTYPE AND SLTSQNUM=@SLTSQNUM))AND(((@ALLOCABY=1)OR(@I_vALLOCATE=1)OR(@I_vSOPTYPE=4))AND((@USPFULPR=0)OR(@I_vQTYFULFI>0))AND(@I_vQTYFULFI<>0)AND(@I_vDROPSHIP=0)AND(@I_vLOTNUMBR<>''))BEGIN
INSERT SOP10201(SOPTYPE, SOPNUMBE, LNITMSEQ, CMPNTSEQ, QTYTYPE, SERLTNUM, SERLTQTY, SLTSQNUM, DATERECD, DTSEQNUM, UNITCOST, ITEMNMBR, TRXSORCE, POSTED, OVRSERLT, BIN, MFGDATE, EXPNDATE)
SELECT @I_vSOPTYPE, @I_vSOPNUMBE, @I_vLNITMSEQ, @I_vCMPNTSEQ, @I_vQTYTYPE, @I_vLOTNUMBR, @SERLTQTY, @SLTSQNUM, CASE WHEN (@I_vSOPTYPE=4)OR(@I_vSOPTYPE=3 AND @QTY<0) THEN '' ELSE @I_vDATERECD END, CASE WHEN (@I_vSOPTYPE=4)OR(@I_vSOPTYPE=3 AND @QTY<0) THEN 0 ELSE @DTSEQNUM END, CASE WHEN (@I_vSOPTYPE=4)OR(@I_vSOPTYPE=3 AND @QTY<0) THEN 0 ELSE @UNITCOST END, @I_vITEMNMBR, '', 0, CASE WHEN (@I_vSOPTYPE=3 AND @QTY<0) THEN 0 ELSE @OVRSERLT END, CASE @ENABLEMULTIBIN WHEN 1 THEN @I_vBIN ELSE '' END, @I_vMFGDATE, @I_vEXPNDATE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=3324;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
IF(@ENABLEMULTIBIN=1)AND(@I_vSOPTYPE<>4)BEGIN
UPDATE IV00112
SET ATYALLOC=ATYALLOC+@SERLTQTY
FROM IV00112(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND BIN=@I_vBIN AND QTYTYPE=@I_vQTYTYPE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=7189;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
IF(@I_vSOPTYPE<>4)AND(@QTY>0)BEGIN
IF(((@USPFULPR=0)OR(@I_vQTYFULFI>0))AND(@I_vDROPSHIP=0))BEGIN
UPDATE IV00300
SET ATYALLOC=ATYALLOC+@QtyAvail, LTNUMSLD=CASE WHEN @QTYRECVD=@ATYALLOC+@QtyAvail+@QTYSOLD THEN 1 ELSE 0 END
FROM IV00300(UPDLOCK)
WHERE ITEMNMBR=@I_vITEMNMBR AND LOCNCODE=@I_vLOCNCODE AND LOTNUMBR=@I_vLOTNUMBR AND DATERECD=@I_vDATERECD AND DTSEQNUM=@DTSEQNUM AND QTYTYPE=@I_vQTYTYPE;
IF(@@error<>0)BEGIN
SELECT @O_iErrorState=3329;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
BREAK;
END;
END;
END;
SELECT @QtyDone=@QtyDone+@QtyAvail;
SELECT @DTSEQNUM=0;
IF((@LotFound=1)OR(@QtyDone=@I_vQUANTITY)OR(@I_vSOPTYPE=4)OR(@QTY<0))BEGIN
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=4712;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
EXEC @iStatus=taSopLotAutoPost @I_vSOPTYPE, @I_vSOPNUMBE, @I_vUSERDATE, @I_vLNITMSEQ, @I_vITEMNMBR, @I_vLOCNCODE, @I_vQUANTITY, @I_vBIN, @I_vCREATEBIN, @I_vLOTNUMBR, @I_vEXPNDATE, @I_vMFGDATE, @I_vQTYTYPE, @I_vRequesterTrx, @I_vDOCID, @I_vDROPSHIP, @I_vQTYFULFI, @I_vALLOCATE, @I_vCMPNTSEQ, @I_vLOTNUMBRToReplace, @I_vAUTOCREATELOT, @I_vUOFM, @I_vDATERECD, @I_vUpdateIfExists, @I_vUSRDEFND1, @I_vUSRDEFND2, @I_vUSRDEFND3, @I_vUSRDEFND4, @I_vUSRDEFND5, @O_iErrorState=@iCustomState OUTPUT, @oErrString=@iCustomErrString OUTPUT;
SELECT @iError=@@error;
IF((@iStatus<>0)OR(@iCustomState<>0)OR(@iError<>0))BEGIN
SELECT @oErrString=RTRIM(@oErrString)+' '+LTRIM(RTRIM(@iCustomErrString));
SELECT @O_iErrorState=2630;
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=4713;
EXEC @iStatus=taUpdateString @O_iErrorState, @oErrString, @oErrString OUTPUT, @O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
RETURN (@O_iErrorState);