taPopRcptHdrInsert

Here is the unencrypted text of taPopRcptHdrInsert



CREATE PROCEDURE [dbo].[taPopRcptHdrInsert]
    @I_vPOPRCTNM CHAR(17),
    @I_vPOPTYPE SMALLINT,
    @I_vVNDDOCNM CHAR(20) = '',
    @I_vreceiptdate DATETIME,
    @I_vACTLSHIP DATETIME = '',
    @I_vBACHNUMB CHAR(15),
    @I_vVENDORID CHAR(15),
    @I_vVENDNAME CHAR(64) = '',
    @I_vSUBTOTAL NUMERIC(19, 5) = NULL,
    @I_vTRDISAMT NUMERIC(19, 5) = NULL,
    @I_vFRTAMNT NUMERIC(19, 5) = 0,
    @I_vMISCAMNT NUMERIC(19, 5) = 0,
    @I_vTAXAMNT NUMERIC(19, 5) = 0,
    @I_vTEN99AMNT NUMERIC(19, 5) = 0,
    @I_vPYMTRMID CHAR(20) = NULL,
    @I_vDSCPCTAM NUMERIC(19, 2) = NULL,
    @I_vDSCDLRAM NUMERIC(19, 5) = NULL,
    @I_vDISAVAMT NUMERIC(19, 5) = NULL,
    @I_vREFRENCE CHAR(30) = '',
    @I_vUSER2ENT CHAR(15) = '',
    @I_vVCHRNMBR CHAR(20) = '',
    @I_vTax_Date DATETIME = '',
    @I_vTIME1 DATETIME = '',
    @I_vWITHHAMT NUMERIC(19, 5) = 0,
    @I_vTXRGNNUM CHAR(25) = '',
    @I_vAUTOCOST INT = 0,
    @I_vTAXSCHID CHAR(15) = '',
    @I_vPurchase_Freight_Taxable SMALLINT = 2,
    @I_vPurchase_Misc_Taxable SMALLINT = 2,
    @I_vFRTSCHID CHAR(15) = '',
    @I_vMSCSCHID CHAR(15) = '',
    @I_vFRTTXAMT NUMERIC(19, 5) = 0,
    @I_vMSCTXAMT NUMERIC(19, 5) = 0,
    @I_vBCKTXAMT NUMERIC(19, 5) = 0,
    @I_vBackoutTradeDiscTax NUMERIC(19, 5) = 0,
    @I_vSHIPMTHD CHAR(15) = NULL,
    @I_vUSINGHEADERLEVELTAXES SMALLINT = 0,
    @I_vCREATEDIST SMALLINT = 1,
    @I_vCURNCYID CHAR(15) = '',
    @I_vXCHGRATE NUMERIC(19, 7) = 0,
    @I_vRATETPID CHAR(15) = '',
    @I_vEXPNDATE DATETIME = '',
    @I_vEXCHDATE DATETIME = '',
    @I_vEXGTBDSC CHAR(30) = '',
    @I_vEXTBLSRC CHAR(50) = '',
    @I_vRATEEXPR SMALLINT = -1,
    @I_vDYSTINCR SMALLINT = -1,
    @I_vRATEVARC NUMERIC(19, 7) = 0,
    @I_vTRXDTDEF SMALLINT = -1,
    @I_vRTCLCMTD SMALLINT = -1,
    @I_vPRVDSLMT SMALLINT = 0,
    @I_vDATELMTS SMALLINT = 0,
    @I_vDUEDATE DATETIME = '',
    @I_vDISCDATE DATETIME = '',
    @I_vNOTETEXT VARCHAR(8000) = '',
    @I_vVADCDTRO CHAR(15) = NULL,
    @I_vCASHAMNT NUMERIC(19, 5) = 0,
    @I_vCAMCBKID CHAR(15) = '',
    @I_vCDOCNMBR CHAR(21) = '',
    @I_vCAMTDATE DATETIME = '',
    @I_vCAMPMTNM CHAR(21) = '',
    @I_vCHEKAMNT NUMERIC(19, 5) = 0,
    @I_vCHAMCBID CHAR(15) = '',
    @I_vCHEKNMBR CHAR(21) = '',
    @I_vCHEKDATE DATETIME = '',
    @I_vCAMPYNBR CHAR(21) = '',
    @I_vCRCRDAMT NUMERIC(19, 5) = 0,
    @I_vCARDNAME CHAR(15) = '',
    @I_vCCRCTNUM CHAR(21) = '',
    @I_vCRCARDDT DATETIME = '',
    @I_vCCAMPYNM CHAR(21) = '',
    @I_vDISTKNAM NUMERIC(19, 5) = 0,
    @I_vRequesterTrx 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 TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
DECLARE @RCPTNOTE_1 NUMERIC(19, 5),
        @RCPTNOTE_2 NUMERIC(19, 5),
        @RCPTNOTE_3 NUMERIC(19, 5),
        @RCPTNOTE_4 NUMERIC(19, 5),
        @RCPTNOTE_5 NUMERIC(19, 5),
        @RCPTNOTE_6 NUMERIC(19, 5),
        @RCPTNOTE_7 NUMERIC(19, 5),
        @RCPTNOTE_8 NUMERIC(19, 5),
        @dDUEDATE DATETIME,
        @dDISCDATE DATETIME,
        @VENDNAME CHAR(64),
        @PYMTRMID CHAR(20),
        @DSCLCTYP SMALLINT,
        @DSCDLRAM NUMERIC(19, 5),
        @DSCPCTAM NUMERIC(19, 5),
        @SALPURCH SMALLINT,
        @DISCNTCB SMALLINT,
        @FREIGHT SMALLINT,
        @MISC SMALLINT,
        @TAX SMALLINT,
        @PymtTermAmnt NUMERIC(19, 5),
        @ACCTAMNT NUMERIC(19, 5),
        @FUNACCTAMNT NUMERIC(19, 5),
        @EXTDCOST NUMERIC(19, 5),
        @dtDEFAULT DATETIME,
        @CURRNIDX INT,
        @FCURRNIDX INT,
        @BCHSOURC CHAR(15),
        @iCursorError INT,
        @iCustomState INT,
        @iCustomErrString VARCHAR(255),
        @iStatus INT,
        @iError INT,
        @O_oErrorState INT,
        @iUpdtBthErrState INT,
        @iCreateBatchErrString VARCHAR(255),
        @iUpdDistErrState INT,
        @iCalcDueDateErrState INT,
        @iCalcDueDateErrString VARCHAR(255),
        @iAddCodeErrState INT,
        @iGetNextNoteIdxErrState INT,
        @sCompanyID SMALLINT,
        @TAXAMNTL NUMERIC(19, 5),
        @TAXAMNTH NUMERIC(19, 5),
        @FRTTXAMT NUMERIC(19, 5),
        @ORFRTTAX NUMERIC(19, 5),
        @MSCTXAMT NUMERIC(19, 5),
        @ORMSCTAX NUMERIC(19, 5),
        @iAddErrState INT,
        @FUNLCURR CHAR(15),
        @EXGTBLID CHAR(15),
        @ISMCTRX INT,
        @ORSUBTOT NUMERIC(19, 5),
        @ORTDISAM NUMERIC(19, 5),
        @ORFRTAMT NUMERIC(19, 5),
        @ORMISCAMT NUMERIC(19, 5),
        @ORTAXAMT NUMERIC(19, 5),
        @OR1099AM NUMERIC(19, 5),
        @ORDDLRAT NUMERIC(19, 5),
        @ORDAVAMT NUMERIC(19, 5),
        @OBTAXAMT NUMERIC(19, 5),
        @OrigBackoutFreightTaxAmt NUMERIC(19, 5),
        @OrigBackoutMiscTaxAmt NUMERIC(19, 5),
        @OrigBackoutTradeDiscTax NUMERIC(19, 5),
        @DECPLCUR INT,
        @ORDECPLCUR TINYINT,
        @O_iInitErrorState INT,
        @oInitErrString VARCHAR(255),
        @linecount INT,
        @BCKTXAMT NUMERIC(19, 5),
        @BackoutFreightTaxAmt NUMERIC(19, 5),
        @BackoutMiscTaxAmt NUMERIC(19, 5),
        @SumLineORTAXAMT NUMERIC(19, 5),
        @TaxAmtTot NUMERIC(19, 5),
        @OrTaxAmtTot NUMERIC(19, 5),
        @TrDisTax NUMERIC(19, 5),
        @TrDisTaxDif NUMERIC(19, 5),
        @OrTrDisTax NUMERIC(19, 5),
        @OrTrDisTaxDif NUMERIC(19, 5),
        @BckRunTax NUMERIC(19, 5),
        @BckRunFrt NUMERIC(19, 5),
        @BckRunMsc NUMERIC(19, 5),
        @BckRunLn NUMERIC(19, 5),
        @POPRCTNM CHAR(17),
        @RCPTLNNM INT,
        @TAXDTLID CHAR(15),
        @ACTINDX INT,
        @LocRcptLine INT,
        @DECPLUSED INT,
        @VENDSTTS TINYINT,
        @MCINSTALLED SMALLINT,
        @Total_Landed_Cost_Amount NUMERIC(19, 5),
        @CURNCYID CHAR(15),
        @INTERID CHAR(5),
        @TRDDISCT NUMERIC(19, 5),
        @TRDPCTPR NUMERIC(25, 0),
        @TRDPCTPRNUM NUMERIC(25, 24),
        @TRDISAMT NUMERIC(19, 5),
        @POPALWOP_1 TINYINT,
        @PONUMBER CHAR(17),
        @ADUPINNM SMALLINT,
        @TEN99TYPE SMALLINT,
        @TEN99BOXNUMBER SMALLINT,
        @ORCASAMT NUMERIC(19, 5),
        @ORCHKAMT NUMERIC(19, 5),
        @ORCCDAMT NUMERIC(19, 5),
        @ORDISTKN NUMERIC(19, 5),
        @CAMPMTNM CHAR(21),
        @CAMPYNBR CHAR(21),
        @CHEKNMBR CHAR(21),
        @CCAMPYNM CHAR(21),
        @SUMEXTDCOST NUMERIC(19, 5),
        @MS_ITEM_1 INT,
        @DBName CHAR(50),
        @NGTaxes TINYINT,
        @DCSTATUS TINYINT;
SELECT @RCPTNOTE_1 = 0,
       @RCPTNOTE_2 = 0,
       @RCPTNOTE_3 = 0,
       @RCPTNOTE_4 = 0,
       @RCPTNOTE_5 = 0,
       @RCPTNOTE_6 = 0,
       @RCPTNOTE_7 = 0,
       @RCPTNOTE_8 = 0,
       @dDUEDATE = '',
       @dDISCDATE = '',
       @VENDNAME = '',
       @PYMTRMID = '',
       @DSCLCTYP = 0,
       @DSCDLRAM = 0,
       @DSCPCTAM = 0,
       @SALPURCH = 1,
       @DISCNTCB = 1,
       @FREIGHT = 1,
       @MISC = 1,
       @TAX = 1,
       @PymtTermAmnt = 0,
       @ACCTAMNT = 0,
       @FUNACCTAMNT = 0,
       @EXTDCOST = 0,
       @dtDEFAULT = '',
       @CURRNIDX = 0,
       @FCURRNIDX = 0,
       @BCHSOURC = 'Rcvg Trx Entry',
       @iStatus = 0,
       @iError = 0,
       @O_oErrorState = 0,
       @iUpdtBthErrState = 0,
       @iCreateBatchErrString = '',
       @iUpdDistErrState = 0,
       @iCalcDueDateErrState = 0,
       @iCalcDueDateErrString = '',
       @iGetNextNoteIdxErrState = 0,
       @sCompanyID = '',
       @TAXAMNTL = 0,
       @TAXAMNTH = 0,
       @FRTTXAMT = 0,
       @ORFRTTAX = 0,
       @MSCTXAMT = 0,
       @ORMSCTAX = 0,
       @iAddErrState = 0,
       @FUNLCURR = '',
       @EXGTBLID = '',
       @ISMCTRX = 0,
       @ORSUBTOT = 0,
       @ORTDISAM = 0,
       @ORFRTAMT = 0,
       @ORMISCAMT = 0,
       @ORTAXAMT = 0,
       @OR1099AM = 0,
       @ORDDLRAT = 0,
       @ORDAVAMT = 0,
       @OBTAXAMT = 0,
       @OrigBackoutFreightTaxAmt = 0,
       @OrigBackoutMiscTaxAmt = 0,
       @OrigBackoutTradeDiscTax = 0,
       @DECPLCUR = 0,
       @ORDECPLCUR = 0,
       @linecount = 0,
       @BCKTXAMT = 0,
       @BackoutFreightTaxAmt = 0,
       @BackoutMiscTaxAmt = 0,
       @SumLineORTAXAMT = 0,
       @TaxAmtTot = 0,
       @OrTaxAmtTot = 0,
       @TrDisTax = 0,
       @TrDisTaxDif = 0,
       @OrTrDisTax = 0,
       @OrTrDisTaxDif = 0,
       @BckRunTax = 0,
       @BckRunFrt = 0,
       @BckRunMsc = 0,
       @BckRunLn = 0,
       @POPRCTNM = '',
       @RCPTLNNM = 0,
       @TAXDTLID = '',
       @ACTINDX = 0,
       @LocRcptLine = 0,
       @O_iErrorState = 0,
       @DECPLUSED = 0,
       @VENDSTTS = 0,
       @MCINSTALLED = 1,
       @Total_Landed_Cost_Amount = 0,
       @CURNCYID = '',
       @INTERID = '',
       @TRDDISCT = 0,
       @TRDPCTPR = 0,
       @TRDPCTPRNUM = 0,
       @TRDISAMT = 0,
       @POPALWOP_1 = 0,
       @PONUMBER = '',
       @ADUPINNM = 0,
       @TEN99TYPE = 0,
       @TEN99BOXNUMBER = 0,
       @ORCASAMT = 0,
       @ORCHKAMT = 0,
       @ORCCDAMT = 0,
       @ORDISTKN = 0,
       @CAMPMTNM = '',
       @CAMPYNBR = '',
       @CHEKNMBR = '',
       @CAMPMTNM = '',
       @CCAMPYNM = '',
       @SUMEXTDCOST = 0,
       @MS_ITEM_1 = POWER(2, 20),
       @DBName = '',
       @DCSTATUS = 0;
IF (@oErrString IS NULL)
BEGIN
    SELECT @oErrString = '';
END;
EXEC @iStatus = taPopRcptHdrInsertPre @I_vPOPRCTNM OUTPUT,
                                      @I_vPOPTYPE OUTPUT,
                                      @I_vVNDDOCNM OUTPUT,
                                      @I_vreceiptdate OUTPUT,
                                      @I_vACTLSHIP OUTPUT,
                                      @I_vBACHNUMB OUTPUT,
                                      @I_vVENDORID OUTPUT,
                                      @I_vVENDNAME OUTPUT,
                                      @I_vSUBTOTAL OUTPUT,
                                      @I_vTRDISAMT OUTPUT,
                                      @I_vFRTAMNT OUTPUT,
                                      @I_vMISCAMNT OUTPUT,
                                      @I_vTAXAMNT OUTPUT,
                                      @I_vTEN99AMNT OUTPUT,
                                      @I_vPYMTRMID OUTPUT,
                                      @I_vDSCPCTAM OUTPUT,
                                      @I_vDSCDLRAM OUTPUT,
                                      @I_vDISAVAMT OUTPUT,
                                      @I_vREFRENCE OUTPUT,
                                      @I_vUSER2ENT OUTPUT,
                                      @I_vVCHRNMBR OUTPUT,
                                      @I_vTax_Date OUTPUT,
                                      @I_vTIME1 OUTPUT,
                                      @I_vWITHHAMT OUTPUT,
                                      @I_vTXRGNNUM OUTPUT,
                                      @I_vAUTOCOST OUTPUT,
                                      @I_vTAXSCHID OUTPUT,
                                      @I_vPurchase_Freight_Taxable OUTPUT,
                                      @I_vPurchase_Misc_Taxable OUTPUT,
                                      @I_vFRTSCHID OUTPUT,
                                      @I_vMSCSCHID OUTPUT,
                                      @I_vFRTTXAMT OUTPUT,
                                      @I_vMSCTXAMT OUTPUT,
                                      @I_vBCKTXAMT OUTPUT,
                                      @I_vBackoutTradeDiscTax OUTPUT,
                                      @I_vSHIPMTHD OUTPUT,
                                      @I_vUSINGHEADERLEVELTAXES OUTPUT,
                                      @I_vCREATEDIST OUTPUT,
                                      @I_vCURNCYID OUTPUT,
                                      @I_vXCHGRATE OUTPUT,
                                      @I_vRATETPID OUTPUT,
                                      @I_vEXPNDATE OUTPUT,
                                      @I_vEXCHDATE OUTPUT,
                                      @I_vEXGTBDSC OUTPUT,
                                      @I_vEXTBLSRC OUTPUT,
                                      @I_vRATEEXPR OUTPUT,
                                      @I_vDYSTINCR OUTPUT,
                                      @I_vRATEVARC OUTPUT,
                                      @I_vTRXDTDEF OUTPUT,
                                      @I_vRTCLCMTD OUTPUT,
                                      @I_vPRVDSLMT OUTPUT,
                                      @I_vDATELMTS OUTPUT,
                                      @I_vDUEDATE OUTPUT,
                                      @I_vDISCDATE OUTPUT,
                                      @I_vNOTETEXT OUTPUT,
                                      @I_vVADCDTRO OUTPUT,
                                      @I_vCASHAMNT OUTPUT,
                                      @I_vCAMCBKID OUTPUT,
                                      @I_vCDOCNMBR OUTPUT,
                                      @I_vCAMTDATE OUTPUT,
                                      @I_vCAMPMTNM OUTPUT,
                                      @I_vCHEKAMNT OUTPUT,
                                      @I_vCHAMCBID OUTPUT,
                                      @I_vCHEKNMBR OUTPUT,
                                      @I_vCHEKDATE OUTPUT,
                                      @I_vCAMPYNBR OUTPUT,
                                      @I_vCRCRDAMT OUTPUT,
                                      @I_vCARDNAME OUTPUT,
                                      @I_vCCRCTNUM OUTPUT,
                                      @I_vCRCARDDT OUTPUT,
                                      @I_vCCAMPYNM OUTPUT,
                                      @I_vDISTKNAM OUTPUT,
                                      @I_vRequesterTrx 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) AND (@iError <> 0))
BEGIN
    SELECT @iStatus = @iError;
END;
IF (@iStatus <> 0)
   OR (@iCustomState <> 0)
BEGIN
    SELECT @oErrString = RTRIM(@oErrString) + ' ' + LTRIM(RTRIM(@iCustomErrString));
    SELECT @O_iErrorState = 147;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @iAddCodeErrState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (
       @I_vACTLSHIP IS NULL
       OR @I_vBACHNUMB IS NULL
       OR @I_vFRTAMNT IS NULL
       OR @I_vMISCAMNT IS NULL
       OR @I_vPOPRCTNM IS NULL
       OR @I_vPOPTYPE IS NULL
       OR @I_vreceiptdate IS NULL
       OR @I_vREFRENCE IS NULL
       OR @I_vTax_Date IS NULL
       OR @I_vTAXAMNT IS NULL
       OR @I_vTEN99AMNT IS NULL
       OR @I_vTIME1 IS NULL
       OR @I_vTXRGNNUM IS NULL
       OR @I_vUSER2ENT IS NULL
       OR @I_vVCHRNMBR IS NULL
       OR @I_vVENDNAME IS NULL
       OR @I_vVENDORID IS NULL
       OR @I_vVNDDOCNM IS NULL
       OR @I_vWITHHAMT IS NULL
       OR @I_vCASHAMNT IS NULL
       OR @I_vCAMCBKID IS NULL
       OR @I_vCDOCNMBR IS NULL
       OR @I_vCAMTDATE IS NULL
       OR @I_vCAMPMTNM IS NULL
       OR @I_vCHEKAMNT IS NULL
       OR @I_vCHAMCBID IS NULL
       OR @I_vCHEKNMBR IS NULL
       OR @I_vCHEKDATE IS NULL
       OR @I_vCAMPYNBR IS NULL
       OR @I_vCRCRDAMT IS NULL
       OR @I_vCARDNAME IS NULL
       OR @I_vCCRCTNUM IS NULL
       OR @I_vCRCARDDT IS NULL
       OR @I_vCCAMPYNM IS NULL
       OR @I_vDISTKNAM IS NULL
   )
BEGIN
    SELECT @O_iErrorState = 2000;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (
       @I_vPOPRCTNM = ''
       OR @I_vreceiptdate = ''
       OR @I_vVENDORID = ''
       OR @I_vBACHNUMB = ''
       OR @I_vPOPTYPE = 0
   )
BEGIN
    SELECT @O_iErrorState = 2001;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
SELECT @I_vPOPRCTNM = UPPER(@I_vPOPRCTNM),
       @I_vBACHNUMB = UPPER(@I_vBACHNUMB),
       @I_vVENDORID = UPPER(@I_vVENDORID),
       @I_vVNDDOCNM = UPPER(@I_vVNDDOCNM),
       @I_vSHIPMTHD = UPPER(@I_vSHIPMTHD),
       @I_vTAXSCHID = UPPER(@I_vTAXSCHID),
       @I_vFRTSCHID = UPPER(@I_vFRTSCHID),
       @I_vMSCSCHID = UPPER(@I_vMSCSCHID),
       @I_vVADCDTRO = UPPER(@I_vVADCDTRO);
IF (@I_vACTLSHIP = '')
BEGIN
    SELECT @I_vACTLSHIP = @dtDEFAULT;
END;
IF (@I_vTax_Date = '')
BEGIN
    SELECT @I_vTax_Date = @I_vreceiptdate;
END;
SELECT @ADUPINNM = ADUPINNM
FROM PM40100 (NOLOCK);
IF ((@I_vAUTOCOST = 1) AND (@I_vSUBTOTAL > 0))
BEGIN
    SELECT @O_iErrorState = 595;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF ((@I_vPOPTYPE <> 1) AND (@I_vPOPTYPE <> 3))
BEGIN
    SELECT @O_iErrorState = 2002;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@I_vPOPTYPE = 1)
BEGIN
    IF EXISTS (SELECT 1 FROM POP10360 (NOLOCK) WHERE POPRCTNM = @I_vPOPRCTNM)
    BEGIN
        SELECT @O_iErrorState = 394;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
    IF (
           @I_vTAXAMNT <> 0
           OR @I_vFRTAMNT <> 0
           OR @I_vMISCAMNT <> 0
           OR @I_vTRDISAMT <> 0
       )
    BEGIN
        SELECT @O_iErrorState = 995;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
IF (@I_vPOPTYPE = 3)
BEGIN
    IF (@I_vVNDDOCNM = '')
    BEGIN
        SELECT @O_iErrorState = 6357;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
    IF (@ADUPINNM <> 0)
    BEGIN
        IF EXISTS
        (
            SELECT 1
            FROM POP10300 (NOLOCK)
            WHERE VENDORID = @I_vVENDORID
                  AND VNDDOCNM = @I_vVNDDOCNM
        )
           OR EXISTS
        (
            SELECT 1
            FROM POP30300 (NOLOCK)
            WHERE VENDORID = @I_vVENDORID
                  AND VNDDOCNM = @I_vVNDDOCNM
        )
        BEGIN
            SELECT @O_iErrorState = 996;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
        END;
    END;
END;
SELECT @POPALWOP_1 = POPALWOP_1
FROM POP40100 (NOLOCK);
IF (@I_vCREATEDIST NOT IN ( 0, 1 ))
BEGIN
    SELECT @O_iErrorState = 6170;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
SELECT @DBName = DB_NAME();
SELECT @NGTaxes = ABS(SIGN(ISNULL(Company_Options, 0) & @MS_ITEM_1))
FROM DYNAMICS..SY01500 (NOLOCK)
WHERE INTERID = DB_NAME();
IF @NGTaxes = 0
BEGIN
    IF EXISTS
    (
        SELECT TOP 1
               1
        FROM POP10360 (NOLOCK)
        WHERE POPRCTNM = @I_vPOPRCTNM
              AND TAXAMNT < 0
    )
    BEGIN
        SELECT @O_iErrorState = 11485;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF EXISTS (SELECT 1 FROM POP10300 (NOLOCK) WHERE POPRCTNM = @I_vPOPRCTNM)
   OR EXISTS
(
    SELECT 1
    FROM POP30300 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
)
BEGIN
    SELECT @O_iErrorState = 2003;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@I_vDSCPCTAM > 100)
BEGIN
    SELECT @O_iErrorState = 2015;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (NOT EXISTS
(
    SELECT 1
    FROM PM00200 (NOLOCK)
    WHERE VENDORID = @I_vVENDORID
)
   )
BEGIN
    SELECT @O_iErrorState = 2005;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@I_vAUTOCOST = 1)
   OR @I_vSUBTOTAL IS NULL
BEGIN
    SELECT @I_vSUBTOTAL = ISNULL(SUM(EXTDCOST), 0.00)
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM;
    SELECT @EXTDCOST = @I_vSUBTOTAL;
END;
SELECT TOP 1
       @CURNCYID = CURNCYID
FROM POP10310 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM;
SELECT @PYMTRMID = PYMTRMID,
       @VENDNAME = VENDNAME,
       @RCPTNOTE_3 = NOTEINDX,
       @VENDSTTS = VENDSTTS,
       @CURNCYID = CASE
                       WHEN @CURNCYID IS NULL
                            OR @CURNCYID = '' THEN
                           CURNCYID
                       ELSE
                           @CURNCYID
                   END,
       @TRDDISCT = TRDDISCT,
       @I_vVADCDTRO = CASE
                          WHEN @I_vVADCDTRO IS NULL THEN
                              VADCDTRO
                          ELSE
                              @I_vVADCDTRO
                      END,
       @I_vSHIPMTHD = CASE
                          WHEN @I_vSHIPMTHD IS NULL THEN
                              SHIPMTHD
                          ELSE
                              @I_vSHIPMTHD
                      END,
       @TEN99TYPE = TEN99TYPE,
       @TEN99BOXNUMBER = TEN99BOXNUMBER
FROM PM00200 (NOLOCK)
WHERE VENDORID = @I_vVENDORID;
IF (@VENDSTTS = 2)
BEGIN
    SELECT @O_iErrorState = 5418;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF @I_vVADCDTRO <> ''
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM PM00300 (NOLOCK)
        WHERE VENDORID = @I_vVENDORID
              AND ADRSCODE = @I_vVADCDTRO
    )
    BEGIN
        SELECT @O_iErrorState = 462;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF (@I_vCASHAMNT > 0)
BEGIN
    IF (@I_vCAMPMTNM = '')
    BEGIN
        DECLARE @O_iPMNPYNBR VARCHAR(21);
        EXEC @iStatus = taGetPMNextPaymentNumber 1, @O_iPMNPYNBR OUTPUT;
        SELECT @I_vCAMPMTNM = @O_iPMNPYNBR,
               @CAMPMTNM = @O_iPMNPYNBR;
        IF EXISTS
        (
            SELECT CNTRLNUM
            FROM PM00400
            WHERE CNTRLNUM = @CAMPMTNM
                  AND DOCTYPE = 6
        )
        BEGIN
            EXEC @iStatus = taGetPMNextPaymentNumber 1, @O_iPMNPYNBR OUTPUT;
            SELECT @I_vCAMPMTNM = @O_iPMNPYNBR,
                   @CAMPMTNM = @O_iPMNPYNBR;
            SELECT @iError = @@error;
            IF (
                   @iError <> 0
                   OR @iStatus <> 0
                   OR @O_iErrorState <> 0
                   OR @CAMPMTNM = ''
                   OR @CAMPMTNM IS NULL
               )
            BEGIN
                SELECT @O_iErrorState = 9578;
                SELECT @CAMPMTNM = 0;
            END;
        END;
    END;
    SELECT @I_vCAMCBKID = CASE
                              WHEN @I_vCAMCBKID = '' THEN
                                  CHEKBKID
                              ELSE
                                  @I_vCAMCBKID
                          END,
           @I_vCDOCNMBR = CASE
                              WHEN @I_vCDOCNMBR = '' THEN
                                  'CASH'
                              ELSE
                                  @I_vCDOCNMBR
                          END,
           @I_vCAMTDATE = CASE
                              WHEN @I_vCAMTDATE = '' THEN
                                  @I_vreceiptdate
                              ELSE
                                  @I_vCAMTDATE
                          END
    FROM PM40100 (NOLOCK);
END;
IF (@I_vCHEKAMNT > 0)
BEGIN
    IF (@I_vCAMPYNBR = '')
    BEGIN
        EXEC @iStatus = taGetPMNextPaymentNumber 1, @O_iPMNPYNBR OUTPUT;
        SELECT @I_vCAMPYNBR = @O_iPMNPYNBR,
               @CAMPYNBR = @O_iPMNPYNBR;
        IF EXISTS
        (
            SELECT CNTRLNUM
            FROM PM00400
            WHERE CNTRLNUM = @CAMPYNBR
                  AND DOCTYPE = 6
        )
        BEGIN
            EXEC @iStatus = taGetPMNextPaymentNumber 1, @O_iPMNPYNBR OUTPUT;
            SELECT @I_vCAMPYNBR = @O_iPMNPYNBR,
                   @CAMPYNBR = @O_iPMNPYNBR;
            SELECT @iError = @@error;
            IF (
                   @iError <> 0
                   OR @iStatus <> 0
                   OR @O_iErrorState <> 0
                   OR @CAMPYNBR = ''
                   OR @CAMPYNBR IS NULL
               )
            BEGIN
                SELECT @O_iErrorState = 9579;
                SELECT @CAMPYNBR = 0;
            END;
        END;
    END;
    IF (@I_vCHEKNMBR = '')
    BEGIN
        SELECT @I_vCHEKNMBR = NXTCHNUM,
               @CHEKNMBR = NXTCHNUM
        FROM CM00100 (UPDLOCK)
        WHERE CHEKBKID = @I_vCHAMCBID;
        EXEC @iStatus = ivNumber_Inc_Dec 1,
                                         @CHEKNMBR OUTPUT,
                                         @O_iErrorState OUTPUT;
        SELECT @iError = @@error;
        IF (
               @iError <> 0
               OR @iStatus <> 0
               OR @O_iErrorState <> 0
               OR @CHEKNMBR = ''
               OR @CHEKNMBR IS NULL
           )
        BEGIN
            SELECT @O_iErrorState = 9580;
            SELECT @CHEKNMBR = 0;
        END;
        UPDATE CM00100
        SET NXTCHNUM = @CHEKNMBR;
    END;
    SELECT @I_vCHAMCBID = CASE
                              WHEN @I_vCHAMCBID = '' THEN
                                  CHEKBKID
                              ELSE
                                  @I_vCHAMCBID
                          END,
           @I_vCHEKDATE = CASE
                              WHEN @I_vCHEKDATE = '' THEN
                                  @I_vreceiptdate
                              ELSE
                                  @I_vCHEKDATE
                          END
    FROM PM40100 (NOLOCK);
END;
IF (@I_vCRCRDAMT > 0)
BEGIN
    IF (@I_vCCAMPYNM = '')
    BEGIN
        DECLARE @O_iNTVCHNUM VARCHAR(20);
        EXEC @iStatus = taGetPMNextVoucherNumber @O_iNTVCHNUM OUTPUT, 0;
        SELECT @I_vCCAMPYNM = @O_iNTVCHNUM,
               @CCAMPYNM = @O_iNTVCHNUM;
        IF EXISTS
        (
            SELECT CNTRLNUM
            FROM PM00400
            WHERE CNTRLNUM = @O_iNTVCHNUM
                  AND DOCTYPE = 1
        )
        BEGIN
            EXEC @iStatus = taGetPMNextVoucherNumber @O_iNTVCHNUM OUTPUT, 0;
            SELECT @I_vCCAMPYNM = @O_iNTVCHNUM,
                   @CCAMPYNM = @O_iNTVCHNUM;
            SELECT @iError = @@error;
            IF (
                   @iError <> 0
                   OR @iStatus <> 0
                   OR @O_iErrorState <> 0
                   OR @CCAMPYNM = ''
                   OR @CCAMPYNM IS NULL
               )
            BEGIN
                SELECT @O_iErrorState = 9581;
                SELECT @CCAMPYNM = 0;
            END;
        END;
    END;
    SELECT @I_vCCRCTNUM = CASE
                              WHEN @I_vCCRCTNUM = '' THEN
                                  'CREDIT CARD'
                              ELSE
                                  @I_vCCRCTNUM
                          END,
           @I_vCRCARDDT = CASE
                              WHEN @I_vCRCARDDT = '' THEN
                                  @I_vreceiptdate
                              ELSE
                                  @I_vCRCARDDT
                          END
    FROM PM40100 (NOLOCK);
END;
IF (@I_vCASHAMNT < 0)
BEGIN
    SELECT @O_iErrorState = 9582;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vCHEKAMNT < 0)
BEGIN
    SELECT @O_iErrorState = 9583;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vCRCRDAMT < 0)
BEGIN
    SELECT @O_iErrorState = 9584;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vDISTKNAM < 0)
BEGIN
    SELECT @O_iErrorState = 9585;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vCAMCBKID <> '')
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM CM00100 (NOLOCK)
        WHERE CHEKBKID = @I_vCAMCBKID
    )
    BEGIN
        SELECT @O_iErrorState = 9586;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF (@I_vCHAMCBID <> '')
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM CM00100 (NOLOCK)
        WHERE CHEKBKID = @I_vCAMCBKID
    )
    BEGIN
        SELECT @O_iErrorState = 9587;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF (@I_vCARDNAME <> '')
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM SY03100 (NOLOCK)
        WHERE CARDNAME = @I_vCARDNAME
    )
    BEGIN
        SELECT @O_iErrorState = 9588;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF (
       (@I_vCASHAMNT > 0)
       AND
       (
           (@I_vCAMCBKID = '')
           OR (@I_vCDOCNMBR = '')
           OR (@I_vCAMTDATE = '')
           OR (@I_vCAMPMTNM = '')
       )
   )
BEGIN
    SELECT @O_iErrorState = 9589;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (
       (@I_vCHEKAMNT > 0)
       AND
       (
           (@I_vCHAMCBID = '')
           OR (@I_vCHEKNMBR = '')
           OR (@I_vCHEKDATE = '')
           OR (@I_vCAMPYNBR = '')
       )
   )
BEGIN
    SELECT @O_iErrorState = 9590;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (
       (@I_vCRCRDAMT > 0)
       AND
       (
           (@I_vCARDNAME = '')
           OR (@I_vCCRCTNUM = '')
           OR (@I_vCRCARDDT = '')
           OR (@I_vCCAMPYNM = '')
       )
   )
BEGIN
    SELECT @O_iErrorState = 9591;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vSUBTOTAL < @I_vCASHAMNT + @I_vCHEKAMNT + @I_vCRCRDAMT)
BEGIN
    SELECT @O_iErrorState = 9592;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vVENDNAME = '')
BEGIN
    SELECT @I_vVENDNAME = @VENDNAME;
END;
IF (@I_vVENDNAME = '')
BEGIN
    SELECT @O_iErrorState = 2009;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
SELECT @FUNLCURR = FUNLCURR,
       @FCURRNIDX = ISNULL(FUNCRIDX, 0)
FROM MC40000 (NOLOCK);
SELECT @DECPLCUR = DECPLCUR - 1
FROM DYNAMICS..MC40200 (NOLOCK)
WHERE CURNCYID = @FUNLCURR;
IF (@I_vCURNCYID = '')
BEGIN
    SELECT @I_vCURNCYID = @CURNCYID;
    IF (@I_vCURNCYID = '')
    BEGIN
        SELECT @I_vCURNCYID = @FUNLCURR,
               @CURRNIDX = @FCURRNIDX;
    END;
END;
IF (@CURRNIDX = 0)
BEGIN
    SELECT @CURRNIDX = ISNULL(CURRNIDX, 0)
    FROM DYNAMICS..MC40200 (NOLOCK)
    WHERE CURNCYID = @I_vCURNCYID;
END;
IF ((@CURRNIDX = 0) OR (@I_vCURNCYID = ''))
BEGIN
    SELECT @O_iErrorState = 980;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF ((@FUNLCURR <> '') OR (@I_vCURNCYID <> ''))
BEGIN
    IF (@I_vCURNCYID <> '')
        SELECT @DECPLUSED = DECPLCUR - 1
        FROM DYNAMICS..MC40200 (NOLOCK)
        WHERE CURNCYID = @I_vCURNCYID;
    ELSE
        SELECT @DECPLUSED = DECPLCUR - 1
        FROM DYNAMICS..MC40200 (NOLOCK)
        WHERE CURNCYID = @FUNLCURR;
    IF (
           (@I_vSUBTOTAL <> ROUND(@I_vSUBTOTAL, @DECPLUSED))
           OR (@I_vTRDISAMT <> ROUND(@I_vTRDISAMT, @DECPLUSED))
           OR (@I_vFRTAMNT <> ROUND(@I_vFRTAMNT, @DECPLUSED))
           OR (@I_vMISCAMNT <> ROUND(@I_vMISCAMNT, @DECPLUSED))
           OR (@I_vTAXAMNT <> ROUND(@I_vTAXAMNT, @DECPLUSED))
           OR (@I_vTEN99AMNT <> ROUND(@I_vTEN99AMNT, @DECPLUSED))
           OR (@I_vDSCDLRAM <> ROUND(@I_vDSCDLRAM, @DECPLUSED))
           OR (@I_vDISAVAMT <> ROUND(@I_vDISAVAMT, @DECPLUSED))
           OR (@I_vWITHHAMT <> ROUND(@I_vWITHHAMT, @DECPLUSED))
           OR (@I_vFRTTXAMT <> ROUND(@I_vFRTTXAMT, @DECPLUSED))
           OR (@I_vMSCTXAMT <> ROUND(@I_vMSCTXAMT, @DECPLUSED))
           OR (@I_vBCKTXAMT <> ROUND(@I_vBCKTXAMT, @DECPLUSED))
           OR (@I_vBackoutTradeDiscTax <> ROUND(@I_vBackoutTradeDiscTax, @DECPLUSED))
       )
    BEGIN
        SELECT @O_iErrorState = 7323;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
SELECT @ORDECPLCUR = DECPLCUR - 1,
       @RCPTNOTE_5 = NOTEINDX
FROM DYNAMICS..MC40200 (NOLOCK)
WHERE CURNCYID = @I_vCURNCYID;
IF (@I_vCURNCYID <> '')
   AND (@I_vCURNCYID <> @FUNLCURR)
BEGIN
    SELECT @ISMCTRX = 1;
    EXEC @iStatus = taMCCurrencyValidate @I_vMASTERID = @I_vVENDORID,
                                         @I_vDOCDATE = @I_vreceiptdate,
                                         @I_vCURNCYID = @I_vCURNCYID,
                                         @I_vEXCHDATE = @I_vEXCHDATE OUTPUT,
                                         @I_vEXGTBDSC = @I_vEXGTBDSC,
                                         @I_vEXTBLSRC = @I_vEXTBLSRC,
                                         @I_vRATEEXPR = @I_vRATEEXPR OUTPUT,
                                         @I_vDYSTINCR = @I_vDYSTINCR OUTPUT,
                                         @I_vRATEVARC = @I_vRATEVARC,
                                         @I_vTRXDTDEF = @I_vTRXDTDEF,
                                         @I_vPRVDSLMT = @I_vPRVDSLMT,
                                         @I_vDATELMTS = @I_vDATELMTS,
                                         @I_vMODULE = 0,
                                         @I_vTIME1 = @I_vTIME1 OUTPUT,
                                         @I_vXCHGRATE = @I_vXCHGRATE OUTPUT,
                                         @I_vEXPNDATE = @I_vEXPNDATE OUTPUT,
                                         @I_vRATETPID = @I_vRATETPID OUTPUT,
                                         @I_vRTCLCMTD = @I_vRTCLCMTD OUTPUT,
                                         @I_vEXGTBLID = @EXGTBLID OUTPUT,
                                         @oErrString = @oErrString OUTPUT,
                                         @O_iErrorState = @O_iErrorState OUTPUT;
    SELECT @iError = @@error;
    IF @iStatus = 0
       AND @iError <> 0
        SELECT @iStatus = @iError;
    IF (@iStatus <> 0)
       OR (@O_iErrorState <> 0)
    BEGIN
        IF (@O_iErrorState <> 0)
        BEGIN
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
        END;
        SELECT @O_iErrorState = 981;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
    IF (@@error <> 0)
    BEGIN
        SELECT @O_iErrorState = 982;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
ELSE
BEGIN
    SELECT @ISMCTRX = 0,
           @I_vRATEEXPR = 0,
           @I_vDYSTINCR = 0,
           @I_vRTCLCMTD = 0;
END;
SELECT @PONUMBER = PONUMBER
FROM POP10310 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM;
IF (@I_vPYMTRMID IS NULL)
BEGIN
    SELECT @I_vPYMTRMID = @PYMTRMID;
END;
IF ((@I_vTRDISAMT IS NULL) AND (@I_vPOPTYPE = 3))
BEGIN
    SELECT @TRDISAMT = ROUND(@I_vSUBTOTAL * (@TRDDISCT / 10000), @DECPLUSED);
END;
ELSE
BEGIN
    IF @I_vTRDISAMT IS NULL
    BEGIN
        SELECT @I_vTRDISAMT = 0;
    END;
END;
IF (@I_vTRDISAMT > @I_vSUBTOTAL)
BEGIN
    SELECT @O_iErrorState = 5300;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vSUBTOTAL <> 0)
BEGIN
    IF (@I_vTRDISAMT IS NULL)
    BEGIN
        SELECT @I_vTRDISAMT = @TRDISAMT;
        IF (@I_vTRDISAMT = 0)
        BEGIN
            SELECT @TRDPCTPR = 0;
        END;
        ELSE
        BEGIN
            SELECT @TRDPCTPR = TRDDISCT * 100000000000000000
            FROM PM00200 (NOLOCK)
            WHERE VENDORID = @I_vVENDORID;
        END;
    END;
    ELSE
    BEGIN
        IF ((@I_vTRDISAMT = 0) AND (@TRDISAMT = 0))
        BEGIN
            SELECT @TRDPCTPR = 0;
        END;
        ELSE
        BEGIN
            SELECT @TRDPCTPRNUM = ROUND(@I_vTRDISAMT / @I_vSUBTOTAL, 15);
            IF (@TRDPCTPRNUM < 1)
            BEGIN
                SELECT @TRDPCTPR = CAST(SUBSTRING(CAST(@TRDPCTPRNUM AS VARCHAR(27)), 3, 21) AS NUMERIC(21, 0));
            END;
            ELSE
            BEGIN
                SELECT @TRDPCTPR
                    = CAST(SUBSTRING(CAST(@TRDPCTPRNUM AS VARCHAR(27)), 1, 1)
                           + SUBSTRING(CAST(@TRDPCTPRNUM AS VARCHAR(27)), 3, 20) AS NUMERIC(23, 0));
            END;
        END;
    END;
END;
ELSE
BEGIN
    SELECT @TRDPCTPR = TRDDISCT * 100000000000000000
    FROM PM00200 (NOLOCK)
    WHERE VENDORID = @I_vVENDORID;
END;
IF (@I_vAUTOCOST = 0)
BEGIN
    SELECT @EXTDCOST = ISNULL(SUM(EXTDCOST), 0.00)
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM;
    IF (@EXTDCOST <> @I_vSUBTOTAL)
    BEGIN
        SELECT @O_iErrorState = 2006;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
SELECT @ACCTAMNT = @EXTDCOST + @I_vTAXAMNT + @I_vFRTAMNT + @I_vMISCAMNT - @I_vTRDISAMT;
SELECT @FUNACCTAMNT = @ACCTAMNT;
IF (@I_vSUBTOTAL = 0 AND @I_vPOPTYPE = 3 AND @I_vTRDISAMT IS NULL)
BEGIN
    SELECT @I_vTRDISAMT = 0;
END;
IF (@FUNACCTAMNT IS NULL)
BEGIN
    SELECT @FUNACCTAMNT = 0;
END;
IF (@I_vDISAVAMT > (@EXTDCOST + @I_vTAXAMNT + @I_vFRTAMNT + @I_vMISCAMNT - @I_vTRDISAMT))
BEGIN
    SELECT @O_iErrorState = 2016;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@oErrString <> '')
    RETURN (@O_iErrorState);
SELECT @SALPURCH = SALPURCH,
       @DISCNTCB = DISCNTCB,
       @FREIGHT = FREIGHT,
       @MISC = MISC,
       @TAX = TAX,
       @RCPTNOTE_4 = NOTEINDX
FROM SY03300 (NOLOCK)
WHERE PYMTRMID = @I_vPYMTRMID;
SELECT @PymtTermAmnt = @PymtTermAmnt + (@I_vSUBTOTAL * @SALPURCH),
       @PymtTermAmnt = @PymtTermAmnt - (@I_vTRDISAMT * @DISCNTCB),
       @PymtTermAmnt = @PymtTermAmnt + (@I_vFRTAMNT * @FREIGHT),
       @PymtTermAmnt = @PymtTermAmnt + (@I_vMISCAMNT * @MISC),
       @PymtTermAmnt = @PymtTermAmnt + ((@I_vTAXAMNT + @I_vFRTTXAMT + @I_vMSCTXAMT) * (@TAX));
IF (
       (@I_vPYMTRMID = '')
       AND (@I_vDISAVAMT IS NULL)
       AND (@I_vDSCDLRAM IS NULL)
       AND (@I_vDSCPCTAM IS NULL)
   )
BEGIN
    SELECT @I_vDISAVAMT = 0,
           @I_vDSCDLRAM = 0,
           @I_vDSCPCTAM = 0;
END;
IF (
       (@I_vDISAVAMT IS NOT NULL)
       AND
       (
           @I_vDSCDLRAM IS NULL
           OR @I_vDSCDLRAM <> @I_vDISAVAMT
       )
   )
BEGIN
    SELECT @I_vDSCDLRAM = 0;
END;
IF (
       (@I_vDISAVAMT IS NOT NULL)
       AND
       (
           @I_vDSCPCTAM IS NULL
           OR ROUND((@I_vDSCPCTAM / 100) * @PymtTermAmnt, @ORDECPLCUR) <> @I_vDISAVAMT
       )
   )
BEGIN
    SELECT @I_vDSCPCTAM = 0;
END;
IF (
       (
           @I_vDSCDLRAM IS NOT NULL
           AND @I_vDSCDLRAM <> 0
       )
       AND
       (
           @I_vDSCPCTAM IS NOT NULL
           AND @I_vDSCPCTAM <> 0
       )
   )
BEGIN
    SELECT @O_iErrorState = 5380;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF ((@I_vDSCDLRAM IS NOT NULL) AND (@I_vDISAVAMT IS NULL))
BEGIN
    SELECT @I_vDISAVAMT = @I_vDSCDLRAM;
    SELECT @ORDAVAMT = @I_vDISAVAMT,
           @I_vDSCPCTAM = 0;
END;
IF ((@I_vDSCPCTAM IS NOT NULL) AND (@I_vDISAVAMT IS NULL))
BEGIN
    SELECT @I_vDISAVAMT = ((@I_vDSCPCTAM / 100) * @PymtTermAmnt);
    SELECT @ORDAVAMT = @I_vDISAVAMT,
           @I_vDSCDLRAM = 0;
END;
SELECT @DSCLCTYP = DSCLCTYP,
       @DSCDLRAM = DSCDLRAM,
       @DSCPCTAM = DSCPCTAM
FROM SY03300 (NOLOCK)
WHERE PYMTRMID = @I_vPYMTRMID;
IF (
       (@I_vPYMTRMID <> '')
       AND (@I_vDISAVAMT IS NULL)
       AND (@I_vDSCDLRAM IS NULL)
       AND (@I_vDSCPCTAM IS NULL)
   )
BEGIN
    IF (@DSCLCTYP = 1)
    BEGIN
        SELECT @I_vDSCPCTAM = @DSCPCTAM / 100.0,
               @I_vDSCDLRAM = 0;
        IF (@ISMCTRX = 1)
        BEGIN
            SELECT @ORDAVAMT = ROUND((@I_vDSCPCTAM / 100.0) * @PymtTermAmnt, @DECPLUSED);
            SELECT @ORDDLRAT = 0;
            SELECT @I_vDISAVAMT = CASE
                                      WHEN (@I_vRTCLCMTD = 0) THEN
                                          ROUND(@ORDAVAMT * @I_vXCHGRATE, @DECPLCUR)
                                      WHEN (@I_vRTCLCMTD = 1) THEN
                                          ROUND(@ORDAVAMT / @I_vXCHGRATE, @DECPLCUR)
                                      ELSE
                                          0
                                  END;
        END;
        ELSE
        BEGIN
            SELECT @I_vDISAVAMT = ROUND((@I_vDSCPCTAM / 100.0) * @PymtTermAmnt, @DECPLCUR);
            SELECT @ORDAVAMT = @I_vDISAVAMT,
                   @ORDDLRAT = 0;
        END;
    END;
    ELSE IF (@DSCLCTYP = 2)
    BEGIN
        SELECT @I_vDSCPCTAM = 0;
        IF (@ISMCTRX = 1)
        BEGIN
            SELECT @I_vDISAVAMT = @DSCDLRAM,
                   @I_vDSCDLRAM = @DSCDLRAM;
            SELECT @ORDAVAMT = CASE
                                   WHEN (@I_vRTCLCMTD = 0) THEN
                                       ROUND(@I_vDISAVAMT / @I_vXCHGRATE, @DECPLUSED)
                                   WHEN (@I_vRTCLCMTD = 1) THEN
                                       ROUND(@I_vDISAVAMT * @I_vXCHGRATE, @DECPLUSED)
                                   ELSE
                                       0
                               END;
            SELECT @ORDDLRAT = @ORDAVAMT;
        END;
        ELSE
        BEGIN
            SELECT @I_vDSCDLRAM = @DSCDLRAM,
                   @I_vDISAVAMT = @DSCDLRAM;
            SELECT @ORDDLRAT = @I_vDSCDLRAM,
                   @ORDAVAMT = @I_vDISAVAMT;
        END;
    END;
END;
ELSE IF (@ISMCTRX = 1)
BEGIN
    SELECT @ORDAVAMT = @I_vDISAVAMT;
    SELECT @I_vDISAVAMT = CASE
                              WHEN (@I_vRTCLCMTD = 0) THEN
                                  ROUND(@ORDAVAMT * @I_vXCHGRATE, @DECPLCUR)
                              WHEN (@I_vRTCLCMTD = 1) THEN
                                  ROUND(@ORDAVAMT / @I_vXCHGRATE, @DECPLCUR)
                              ELSE
                                  0
                          END;
    SELECT @ORDAVAMT = ROUND(@ORDAVAMT, @DECPLUSED);
    IF (@I_vDSCPCTAM = 0)
    BEGIN
        SELECT @ORDDLRAT = @ORDAVAMT,
               @I_vDSCDLRAM = @I_vDISAVAMT;
    END;
END;
ELSE
BEGIN
    SELECT @I_vDISAVAMT = ROUND(@I_vDISAVAMT, @DECPLCUR),
           @ORDAVAMT = @I_vDISAVAMT;
    IF (@I_vDSCPCTAM = 0)
    BEGIN
        SELECT @I_vDSCDLRAM = @I_vDISAVAMT,
               @ORDDLRAT = @I_vDISAVAMT;
    END;
END;
IF (@I_vPYMTRMID <> '')
BEGIN
    IF (NOT EXISTS
    (
        SELECT 1
        FROM SY03300 (NOLOCK)
        WHERE PYMTRMID = @I_vPYMTRMID
    )
       )
    BEGIN
        SELECT @O_iErrorState = 7036;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
IF ((@I_vPYMTRMID <> '') AND (@I_vDUEDATE = '' OR @I_vDISCDATE = ''))
BEGIN
    EXEC @iStatus = taCalcDueDatePM @I_vVENDORID = @I_vVENDORID,
                                    @I_vPYMTRMID = @I_vPYMTRMID,
                                    @I_vDOCDATE = @I_vreceiptdate,
                                    @O_dDISCDATE = @dDISCDATE OUTPUT,
                                    @O_dDUEDATE = @dDUEDATE OUTPUT,
                                    @O_iErrorState = @iCalcDueDateErrState OUTPUT,
                                    @oErrString = @iCalcDueDateErrString OUTPUT;
    SELECT @iError = @@error;
    IF @iStatus = 0
       AND @iError <> 0
    BEGIN
        SELECT @iStatus = @iError;
    END;
    IF (@iStatus <> 0)
       OR
       (
           @iCalcDueDateErrState <> 0
           OR @dDISCDATE = NULL
           OR @dDUEDATE = NULL
       )
    BEGIN
        SELECT @oErrString = RTRIM(@oErrString) + ' ' + LTRIM(RTRIM(@iCalcDueDateErrString));
        SELECT @O_iErrorState = 2010;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @iAddCodeErrState OUTPUT;
        RETURN (@O_iErrorState);
    END;
    IF (@I_vDUEDATE = '')
        SELECT @I_vDUEDATE = @dDUEDATE;
    IF (@I_vDISCDATE = '')
        SELECT @I_vDISCDATE = @dDISCDATE;
END;
IF (@I_vSHIPMTHD <> '')
BEGIN
    IF (NOT EXISTS
    (
        SELECT 1
        FROM SY03000 (NOLOCK)
        WHERE SHIPMTHD = @I_vSHIPMTHD
    )
       )
    BEGIN
        EXEC @iStatus = taCreateShippingMethod @I_vSHIPMTHD = @I_vSHIPMTHD,
                                               @I_vUpdateIfExists = 0,
                                               @O_iErrorState = @iAddErrState OUTPUT,
                                               @oErrString = @oErrString OUTPUT;
        SELECT @iError = @@error;
        IF @iStatus = 0
           AND @iError <> 0
        BEGIN
            SELECT @iStatus = @iError;
        END;
        IF (@iStatus <> 0)
           OR (@iAddErrState <> 0)
        BEGIN
            SELECT @O_iErrorState = 838;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
END;
IF (@I_vPurchase_Misc_Taxable < 1 OR @I_vPurchase_Misc_Taxable > 3)
BEGIN
    SELECT @O_iErrorState = 839;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
ELSE
BEGIN
    IF (@I_vPurchase_Misc_Taxable <> 1)
    BEGIN
        SELECT @I_vMSCSCHID = '';
    END;
END;
IF (@I_vPurchase_Freight_Taxable < 1 OR @I_vPurchase_Freight_Taxable > 3)
BEGIN
    SELECT @O_iErrorState = 840;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
ELSE
BEGIN
    IF (@I_vPurchase_Freight_Taxable <> 1)
    BEGIN
        SELECT @I_vFRTSCHID = '';
    END;
END;
IF (@I_vTAXSCHID <> '')
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM TX00101 (NOLOCK)
        WHERE TAXSCHID = @I_vTAXSCHID
    )
    BEGIN
        SELECT @O_iErrorState = 841;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
ELSE
BEGIN
    IF (@I_vTAXAMNT > 0.00)
    BEGIN
        SELECT @O_iErrorState = 842;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
SELECT @TAXAMNTL = ISNULL(SUM(ORTAXAMT), 0.00) + ISNULL(SUM(ORFRTTAX), 0.00) + ISNULL(SUM(ORMSCTAX), 0.00)
FROM POP10360 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM
      AND RCPTLNNM = 0
      AND BKOUTTAX = 0;
IF (@TAXAMNTL <> @I_vTAXAMNT + @I_vFRTTXAMT + @I_vMSCTXAMT)
BEGIN
    SELECT @O_iErrorState = 843;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@I_vUSINGHEADERLEVELTAXES = 0)
BEGIN
    SELECT @SumLineORTAXAMT = ISNULL(SUM(ORTAXAMT), 0.00)
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM;
    IF (@SumLineORTAXAMT <> @I_vTAXAMNT)
    BEGIN
        SELECT @O_iErrorState = 7194;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
    SELECT @TAXAMNTH = ISNULL(SUM(TXDTOTTX), 0.00)
    FROM POP10360 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
          AND RCPTLNNM <> 0
          AND BKOUTTAX = 0;
    IF (@TAXAMNTH <> @I_vTAXAMNT + @I_vFRTTXAMT + @I_vMSCTXAMT)
    BEGIN
        SELECT @O_iErrorState = 844;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
IF (@I_vFRTSCHID <> '')
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM TX00101 (NOLOCK)
        WHERE TAXSCHID = @I_vFRTSCHID
    )
    BEGIN
        SELECT @O_iErrorState = 845;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
ELSE
BEGIN
    IF (@I_vFRTTXAMT > 0.00)
    BEGIN
        SELECT @O_iErrorState = 846;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
SELECT @FRTTXAMT = ISNULL(SUM(FRTTXAMT), 0),
       @ORFRTTAX = ISNULL(SUM(ORFRTTAX), 0)
FROM POP10360 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM
      AND RCPTLNNM = 2147483646
      AND BKOUTTAX = 0;
IF ((@I_vFRTTXAMT <> @FRTTXAMT) OR (@I_vFRTTXAMT <> @ORFRTTAX))
BEGIN
    SELECT @O_iErrorState = 847;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@I_vMSCSCHID <> '')
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM TX00101 (NOLOCK)
        WHERE TAXSCHID = @I_vMSCSCHID
    )
    BEGIN
        SELECT @O_iErrorState = 848;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
ELSE
BEGIN
    IF (@I_vMSCTXAMT > 0.00)
    BEGIN
        SELECT @O_iErrorState = 849;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
END;
SELECT @MSCTXAMT = ISNULL(SUM(MSCTXAMT), 0),
       @ORMSCTAX = ISNULL(SUM(ORMSCTAX), 0)
FROM POP10360 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM
      AND RCPTLNNM = 2147483645
      AND BKOUTTAX = 0;
IF ((@I_vMSCTXAMT <> @MSCTXAMT) OR (@I_vMSCTXAMT <> @ORMSCTAX))
BEGIN
    SELECT @O_iErrorState = 836;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
SELECT @ORSUBTOT = @I_vSUBTOTAL,
       @ORFRTTAX = @I_vFRTTXAMT,
       @ORMSCTAX = @I_vMSCTXAMT,
       @ORTDISAM = @I_vTRDISAMT,
       @ORFRTAMT = @I_vFRTAMNT,
       @ORMISCAMT = @I_vMISCAMNT,
       @ORTAXAMT = @I_vTAXAMNT,
       @OR1099AM = @I_vTEN99AMNT,
       @OBTAXAMT = @I_vBCKTXAMT,
       @OrigBackoutTradeDiscTax = @I_vBackoutTradeDiscTax,
       @ORCASAMT = @I_vCASHAMNT,
       @ORCHKAMT = @I_vCHEKAMNT,
       @ORCCDAMT = @I_vCRCRDAMT,
       @ORDISTKN = @I_vDISTKNAM;
IF (@I_vBackoutTradeDiscTax > 0)
BEGIN
    UPDATE POP10310
    SET BackoutTradeDiscTax = ROUND((EXTDCOST / @I_vSUBTOTAL) * @I_vBackoutTradeDiscTax, @DECPLCUR),
        OrigBackoutTradeDiscTax = ROUND((OREXTCST / @ORSUBTOT) * @OrigBackoutTradeDiscTax, @ORDECPLCUR)
    WHERE POPRCTNM = @I_vPOPRCTNM;
    IF (@@error <> 0)
    BEGIN
        SELECT @O_iErrorState = 2628;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
    SELECT @TrDisTax = ISNULL(SUM(BackoutTradeDiscTax), 0)
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM;
    SELECT @TrDisTaxDif = @I_vBackoutTradeDiscTax - @TrDisTax;
    SELECT @OrTrDisTax = ISNULL(SUM(OrigBackoutTradeDiscTax), 0)
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM;
    SELECT @OrTrDisTaxDif = @OrigBackoutTradeDiscTax - @OrTrDisTax;
    IF ((@TrDisTaxDif <> 0) OR (@OrTrDisTaxDif <> 0))
    BEGIN
        UPDATE b
        SET BackoutTradeDiscTax = BackoutTradeDiscTax + @TrDisTaxDif,
            OrigBackoutTradeDiscTax = OrigBackoutTradeDiscTax + @OrTrDisTaxDif
        FROM POP10310 b (NOLOCK),
        (
            SELECT MAX(DEX_ROW_ID) AS Dex
            FROM POP10310 (NOLOCK)
            WHERE POPRCTNM = @I_vPOPRCTNM
        ) AS t1
        WHERE b.POPRCTNM = @I_vPOPRCTNM
              AND b.DEX_ROW_ID = t1.Dex;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 6263;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
END;
SELECT @linecount = COUNT(POPRCTNM) + 2
FROM POP10310 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM;
SELECT @INTERID = INTERID,
       @sCompanyID = CMPANYID
FROM DYNAMICS..SY01500 (NOLOCK)
WHERE INTERID = DB_NAME();
EXEC @iStatus = DYNAMICS..tasmGetNextNoteIndex @I_sCompanyID = @sCompanyID,
                                               @I_iSQLSessionID = 0,
                                               @I_noteincrement = @linecount,
                                               @O_mNoteIndex = @RCPTNOTE_1 OUTPUT,
                                               @O_iErrorState = @iGetNextNoteIdxErrState OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus = 0) AND (@iError <> 0))
BEGIN
    SELECT @iStatus = @iError;
END;
IF ((@iStatus <> 0) OR (@iGetNextNoteIdxErrState <> 0))
BEGIN
    IF (@iGetNextNoteIdxErrState <> 0)
    BEGIN
        EXEC @iStatus = taUpdateString @iGetNextNoteIdxErrState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
    SELECT @O_iErrorState = 247;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
SELECT @RCPTNOTE_2 = NOTEINDX
FROM SY00500 (NOLOCK)
WHERE BACHNUMB = @I_vBACHNUMB
      AND BCHSOURC = @BCHSOURC;
SELECT @RCPTNOTE_6 = NOTEINDX
FROM TX00101 (NOLOCK)
WHERE TAXSCHID = @I_vTAXSCHID;
SELECT @RCPTNOTE_7 = NOTEINDX
FROM TX00101 (NOLOCK)
WHERE TAXSCHID = @I_vFRTSCHID;
SELECT @RCPTNOTE_8 = NOTEINDX
FROM TX00101 (NOLOCK)
WHERE TAXSCHID = @I_vMSCSCHID;
IF (@I_vRequesterTrx = 0)
BEGIN
    EXEC @iStatus = eConnectOutVerify @I_vDOCTYPE = 'PO_Receiving_Transaction',
                                      @I_vINDEX1 = @I_vPOPRCTNM,
                                      @I_vINDEX2 = '',
                                      @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) AND (@iError <> 0))
    BEGIN
        SELECT @iStatus = @iError;
    END;
    IF ((@iStatus <> 0) OR (@iCustomState <> 0))
    BEGIN
        SELECT @O_iErrorState = 1287;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF (
       EXISTS
(
    SELECT 1
    FROM POP10360 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
          AND BKOUTTAX = 1
)
       AND (@I_vBackoutTradeDiscTax = 0)
   )
BEGIN
    SELECT @BckRunTax = @I_vSUBTOTAL + @I_vFRTAMNT + @I_vMISCAMNT,
           @BckRunFrt = @I_vFRTAMNT,
           @BckRunMsc = @I_vMISCAMNT;
    DECLARE PopTax INSENSITIVE CURSOR FOR
    SELECT POPRCTNM,
           RCPTLNNM,
           TAXDTLID,
           ACTINDX
    FROM POP10360 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
    ORDER BY RCPTLNNM ASC,
             BKOUTTAX DESC,
             TAXDTLID ASC;
    OPEN PopTax;
    SELECT @iCursorError = @@cursor_rows;
    IF (@iCursorError > 0)
    BEGIN
        FETCH NEXT FROM PopTax
        INTO @POPRCTNM,
             @RCPTLNNM,
             @TAXDTLID,
             @ACTINDX;
        WHILE (@@fetch_status <> -1)
        BEGIN
            IF (@@fetch_status = -2)
            BEGIN
                SELECT @O_iErrorState = 6233;
                BREAK;
            END;
            IF (
                   (@RCPTLNNM <> @LocRcptLine)
                   AND (@RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ))
               )
            BEGIN
                SELECT @BckRunLn = OREXTCST
                FROM POP10310 (NOLOCK)
                WHERE POPRCTNM = @POPRCTNM
                      AND RCPTLNNM = @RCPTLNNM
                      AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 );
            END;
            UPDATE POP10360
            SET ORGTXPCH = CASE
                               WHEN BKOUTTAX = 1
                                    AND @BckRunTax = @I_vSUBTOTAL + @I_vFRTAMNT + @I_vMISCAMNT
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax - ORTAXAMT - ORFRTTAX - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc = @I_vMISCAMNT THEN
                                   @BckRunMsc - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc <> @I_vMISCAMNT THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483645 THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt = @I_vFRTAMNT THEN
                                   @BckRunFrt - ORFRTTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt <> @I_vFRTAMNT THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483646 THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               ELSE
                                   @BckRunTax
                           END,
                TAXPURCH = CASE
                               WHEN BKOUTTAX = 1
                                    AND @BckRunTax = @I_vSUBTOTAL + @I_vFRTAMNT + @I_vMISCAMNT
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax - ORTAXAMT - ORFRTTAX - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc = @I_vMISCAMNT THEN
                                   @BckRunMsc - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc <> @I_vMISCAMNT THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483645 THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt = @I_vFRTAMNT THEN
                                   @BckRunFrt - ORFRTTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt <> @I_vFRTAMNT THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483646 THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               ELSE
                                   @BckRunTax
                           END,
                TOTPURCH = CASE
                               WHEN BKOUTTAX = 1
                                    AND @BckRunTax = @I_vSUBTOTAL + @I_vFRTAMNT + @I_vMISCAMNT
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax - ORTAXAMT - ORFRTTAX - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc = @I_vMISCAMNT THEN
                                   @BckRunMsc - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc <> @I_vMISCAMNT THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483645 THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt = @I_vFRTAMNT THEN
                                   @BckRunFrt - ORFRTTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt <> @I_vFRTAMNT THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483646 THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               ELSE
                                   @BckRunTax
                           END,
                ORTOTPUR = CASE
                               WHEN BKOUTTAX = 1
                                    AND @BckRunTax = @I_vSUBTOTAL + @I_vFRTAMNT + @I_vMISCAMNT
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax - ORTAXAMT - ORFRTTAX - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 0 THEN
                                   @BckRunTax
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc = @I_vMISCAMNT THEN
                                   @BckRunMsc - ORMSCTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483645
                                    AND @BckRunMsc <> @I_vMISCAMNT THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483645 THEN
                                   @BckRunMsc
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt = @I_vFRTAMNT THEN
                                   @BckRunFrt - ORFRTTAX
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM = 2147483646
                                    AND @BckRunFrt <> @I_vFRTAMNT THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM = 2147483646 THEN
                                   @BckRunFrt
                               WHEN BKOUTTAX = 1
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               WHEN BKOUTTAX = 0
                                    AND RCPTLNNM NOT IN ( 0, 2147483645, 2147483646 ) THEN
                                   @BckRunLn
                               ELSE
                                   @BckRunTax
                           END,
                @BckRunTax = CASE
                                 WHEN BKOUTTAX = 1
                                      AND RCPTLNNM = 0 THEN
                                     @BckRunTax - ORTAXAMT - ORFRTTAX - ORMSCTAX
                                 ELSE
                                     @BckRunTax
                             END,
                @BckRunFrt = CASE
                                 WHEN BKOUTTAX = 1
                                      AND RCPTLNNM = 2147483646 THEN
                                     @BckRunFrt - ORFRTTAX
                                 ELSE
                                     @BckRunFrt
                             END,
                @BckRunMsc = CASE
                                 WHEN BKOUTTAX = 1
                                      AND RCPTLNNM = 2147483645 THEN
                                     @BckRunMsc - ORMSCTAX
                                 ELSE
                                     @BckRunMsc
                             END,
                @BckRunLn = CASE
                                WHEN BKOUTTAX = 1
                                     AND RCPTLNNM NOT IN ( 0, 2147483646, 2147483645 ) THEN
                                    @BckRunLn - ORTAXAMT
                                ELSE
                                    @BckRunLn
                            END
            FROM POP10360 (NOLOCK)
            WHERE POPRCTNM = @POPRCTNM
                  AND RCPTLNNM = @RCPTLNNM
                  AND TAXDTLID = @TAXDTLID
                  AND ACTINDX = @ACTINDX;
            IF (@@error <> 0)
            BEGIN
                SELECT @O_iErrorState = 2614;
                EXEC @iStatus = taUpdateString @O_iErrorState,
                                               @oErrString,
                                               @oErrString OUTPUT,
                                               @O_oErrorState OUTPUT;
                DEALLOCATE PopTax;
                RETURN (@O_iErrorState);
            END;
            SELECT @LocRcptLine = @RCPTLNNM;
            FETCH NEXT FROM PopTax
            INTO @POPRCTNM,
                 @RCPTLNNM,
                 @TAXDTLID,
                 @ACTINDX;
        END;
    END;
    DEALLOCATE PopTax;
END;
IF (EXISTS
(
    SELECT 1
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
          AND CURNCYID <> @I_vCURNCYID
          AND CURNCYID <> ''
          AND @POPALWOP_1 = 0
)
   )
BEGIN
    SELECT @O_iErrorState = 970;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@ISMCTRX = 1)
BEGIN
    IF (@I_vXCHGRATE = 0)
    BEGIN
        SELECT @O_iErrorState = 983;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
    IF (@I_vRTCLCMTD = 0)
    BEGIN
        SELECT @I_vSUBTOTAL = ROUND(@I_vSUBTOTAL * @I_vXCHGRATE, @DECPLCUR),
               @I_vFRTTXAMT = ROUND(@I_vFRTTXAMT * @I_vXCHGRATE, @DECPLCUR),
               @I_vMSCTXAMT = ROUND(@I_vMSCTXAMT * @I_vXCHGRATE, @DECPLCUR),
               @I_vTRDISAMT = ROUND(@I_vTRDISAMT * @I_vXCHGRATE, @DECPLCUR),
               @I_vFRTAMNT = ROUND(@I_vFRTAMNT * @I_vXCHGRATE, @DECPLCUR),
               @I_vMISCAMNT = ROUND(@I_vMISCAMNT * @I_vXCHGRATE, @DECPLCUR),
               @I_vTAXAMNT = ROUND(@I_vTAXAMNT * @I_vXCHGRATE, @DECPLCUR),
               @I_vTEN99AMNT = ROUND(@I_vTEN99AMNT * @I_vXCHGRATE, @DECPLCUR),
               @I_vBackoutTradeDiscTax = ROUND(@I_vBackoutTradeDiscTax * @I_vXCHGRATE, @DECPLCUR),
               @FUNACCTAMNT = ROUND(@ACCTAMNT * @I_vXCHGRATE, @DECPLCUR);
    END;
    ELSE IF (@I_vRTCLCMTD = 1)
    BEGIN
        SELECT @I_vSUBTOTAL = ROUND(@I_vSUBTOTAL / @I_vXCHGRATE, @DECPLCUR),
               @I_vFRTTXAMT = ROUND(@I_vFRTTXAMT / @I_vXCHGRATE, @DECPLCUR),
               @I_vMSCTXAMT = ROUND(@I_vMSCTXAMT / @I_vXCHGRATE, @DECPLCUR),
               @I_vTRDISAMT = ROUND(@I_vTRDISAMT / @I_vXCHGRATE, @DECPLCUR),
               @I_vFRTAMNT = ROUND(@I_vFRTAMNT / @I_vXCHGRATE, @DECPLCUR),
               @I_vMISCAMNT = ROUND(@I_vMISCAMNT / @I_vXCHGRATE, @DECPLCUR),
               @I_vTAXAMNT = ROUND(@I_vTAXAMNT / @I_vXCHGRATE, @DECPLCUR),
               @I_vTEN99AMNT = ROUND(@I_vTEN99AMNT / @I_vXCHGRATE, @DECPLCUR),
               @I_vBackoutTradeDiscTax = ROUND(@I_vBackoutTradeDiscTax / @I_vXCHGRATE, @DECPLCUR),
               @FUNACCTAMNT = ROUND(@ACCTAMNT / @I_vXCHGRATE, @DECPLCUR);
    END;
    IF (@I_vRTCLCMTD = 0)
    BEGIN
        UPDATE POP10100
        SET REMSUBTO = ROUND(REMSUBTO * @I_vXCHGRATE, @DECPLCUR)
        WHERE PONUMBER = @PONUMBER;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 9377;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10310
        SET UNITCOST = ROUND(UNITCOST * @I_vXCHGRATE, (DECPLCUR - 7)),
            ORUNTCST = UNITCOST,
            EXTDCOST = ROUND(EXTDCOST * @I_vXCHGRATE, @DECPLCUR),
            OREXTCST = EXTDCOST,
            TAXAMNT = ROUND(TAXAMNT * @I_vXCHGRATE, @DECPLCUR),
            ORTAXAMT = TAXAMNT,
            BCKTXAMT = ROUND(BCKTXAMT * @I_vXCHGRATE, @DECPLCUR),
            OBTAXAMT = BCKTXAMT,
            BackoutTradeDiscTax = ROUND(BackoutTradeDiscTax * @I_vXCHGRATE, @DECPLCUR),
            OrigBackoutTradeDiscTax = BackoutTradeDiscTax,
            CURNCYID = @I_vCURNCYID,
            CURRNIDX = @CURRNIDX,
            RATETPID = @I_vRATETPID,
            XCHGRATE = @I_vXCHGRATE,
            RATECALC = @I_vRTCLCMTD,
            DENXRATE = 0
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 984;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10360
        SET TAXAMNT = ROUND(TAXAMNT * @I_vXCHGRATE, @DECPLCUR),
            ORTAXAMT = TAXAMNT,
            TAXPURCH = ROUND(TAXPURCH * @I_vXCHGRATE, @DECPLCUR),
            ORGTXPCH = TAXPURCH,
            TOTPURCH = ROUND(TOTPURCH * @I_vXCHGRATE, @DECPLCUR),
            ORTOTPUR = TOTPURCH,
            FRTTXAMT = ROUND(FRTTXAMT * @I_vXCHGRATE, @DECPLCUR),
            ORFRTTAX = FRTTXAMT,
            MSCTXAMT = ROUND(MSCTXAMT * @I_vXCHGRATE, @DECPLCUR),
            ORMSCTAX = MSCTXAMT,
            TXDTOTTX = ROUND(TXDTOTTX * @I_vXCHGRATE, @DECPLCUR),
            OTTAXPON = TXDTOTTX,
            CURRNIDX = @CURRNIDX
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 985;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10390
        SET CURRNIDX = @CURRNIDX,
            XCHGRATE = @I_vXCHGRATE,
            CURNCYID = @I_vCURNCYID,
            RATETPID = @I_vRATETPID,
            EXGTBLID = @EXGTBLID,
            EXCHDATE = @I_vEXCHDATE,
            RATECALC = @I_vRTCLCMTD,
            DENXRATE = 0,
            MCTRXSTT = 0,
            DEBITAMT = ROUND(DEBITAMT * @I_vXCHGRATE, @DECPLCUR),
            ORDBTAMT = DEBITAMT,
            CRDTAMNT = ROUND(CRDTAMNT * @I_vXCHGRATE, @DECPLCUR),
            ORCRDAMT = CRDTAMNT
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 7051;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10500
        SET CURNCYID = @I_vCURNCYID,
            CURRNIDX = @CURRNIDX,
            XCHGRATE = @I_vXCHGRATE,
            RATECALC = @I_vRTCLCMTD,
            DENXRATE = 0,
            RATETPID = @I_vRATETPID,
            EXGTBLID = @EXGTBLID,
            OSTDCOST = ROUND(OSTDCOST / @I_vXCHGRATE, @DECPLCUR)
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 1999;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
    ELSE IF (@I_vRTCLCMTD = 1)
    BEGIN
        UPDATE POP10100
        SET REMSUBTO = ROUND(REMSUBTO / @I_vXCHGRATE, @DECPLCUR)
        WHERE PONUMBER = @PONUMBER;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 9378;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10310
        SET UNITCOST = ROUND(UNITCOST / @I_vXCHGRATE, (DECPLCUR - 7)),
            ORUNTCST = UNITCOST,
            EXTDCOST = ROUND(EXTDCOST / @I_vXCHGRATE, @DECPLCUR),
            OREXTCST = EXTDCOST,
            TAXAMNT = ROUND(TAXAMNT / @I_vXCHGRATE, @DECPLCUR),
            ORTAXAMT = TAXAMNT,
            BCKTXAMT = ROUND(BCKTXAMT / @I_vXCHGRATE, @DECPLCUR),
            OBTAXAMT = BCKTXAMT,
            BackoutTradeDiscTax = ROUND(BackoutTradeDiscTax / @I_vXCHGRATE, @DECPLCUR),
            OrigBackoutTradeDiscTax = BackoutTradeDiscTax,
            CURNCYID = @I_vCURNCYID,
            CURRNIDX = @CURRNIDX,
            RATETPID = @I_vRATETPID,
            XCHGRATE = @I_vXCHGRATE,
            RATECALC = @I_vRTCLCMTD,
            DENXRATE = 0
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 986;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10360
        SET TAXAMNT = ROUND(TAXAMNT / @I_vXCHGRATE, @DECPLCUR),
            ORTAXAMT = TAXAMNT,
            TAXPURCH = ROUND(TAXPURCH / @I_vXCHGRATE, @DECPLCUR),
            ORGTXPCH = TAXPURCH,
            TOTPURCH = ROUND(TOTPURCH / @I_vXCHGRATE, @DECPLCUR),
            ORTOTPUR = TOTPURCH,
            FRTTXAMT = ROUND(FRTTXAMT / @I_vXCHGRATE, @DECPLCUR),
            ORFRTTAX = FRTTXAMT,
            MSCTXAMT = ROUND(MSCTXAMT / @I_vXCHGRATE, @DECPLCUR),
            ORMSCTAX = MSCTXAMT,
            TXDTOTTX = ROUND(TXDTOTTX / @I_vXCHGRATE, @DECPLCUR),
            OTTAXPON = TXDTOTTX,
            CURRNIDX = @CURRNIDX
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 987;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10390
        SET CURRNIDX = @CURRNIDX,
            XCHGRATE = @I_vXCHGRATE,
            CURNCYID = @I_vCURNCYID,
            RATETPID = @I_vRATETPID,
            EXGTBLID = @EXGTBLID,
            EXCHDATE = @I_vEXCHDATE,
            RATECALC = @I_vRTCLCMTD,
            DENXRATE = 0,
            MCTRXSTT = 0,
            DEBITAMT = ROUND(DEBITAMT / @I_vXCHGRATE, @DECPLCUR),
            ORDBTAMT = DEBITAMT,
            CRDTAMNT = ROUND(CRDTAMNT / @I_vXCHGRATE, @DECPLCUR),
            ORCRDAMT = CRDTAMNT
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 7052;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10500
        SET CURNCYID = @I_vCURNCYID,
            CURRNIDX = @CURRNIDX,
            XCHGRATE = @I_vXCHGRATE,
            RATECALC = @I_vRTCLCMTD,
            DENXRATE = 0,
            RATETPID = @I_vRATETPID,
            EXGTBLID = @EXGTBLID,
            OSTDCOST = ROUND(OSTDCOST * @I_vXCHGRATE, @DECPLCUR)
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 2007;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
END;
ELSE
BEGIN
    IF (NOT EXISTS
    (
        SELECT 1
        FROM PM00200 (NOLOCK)
        WHERE VENDORID = @I_vVENDORID
              AND
              (
                  CURNCYID = @I_vCURNCYID
                  OR CURNCYID = ''
              )
    )
       )
    BEGIN
        UPDATE POP10390
        SET CURNCYID = @I_vCURNCYID,
            CURRNIDX = @CURRNIDX
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 7053;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
        UPDATE POP10360
        SET CURRNIDX = @CURRNIDX
        WHERE POPRCTNM = @I_vPOPRCTNM;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 4023;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
END;
UPDATE s
SET s.RUPPVAMT = ((s.ORCPTCOST - (s.OSTDCOST * s.UMQTYINB)) * (s.QTYSHPPD - s.QTYREJ - s.QTYINVCD))
FROM POP10500 s (NOLOCK),
     IV00101 b (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM
      AND s.ITEMNMBR = b.ITEMNMBR
      AND b.VCTNMTHD IN ( 4, 5 );
IF (@@error <> 0)
BEGIN
    SELECT @O_iErrorState = 6661;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vREFRENCE = '')
BEGIN
    SELECT @I_vREFRENCE = 'Receivings Transaction Entry';
END;
IF @ISMCTRX = 1
BEGIN
    UPDATE POP10700
    SET Total_Landed_Cost_Amount = CASE
                                       WHEN @I_vRTCLCMTD = 0 THEN
                                           ROUND(   Total_Landed_Cost_Amount * CASE
                                                                                   WHEN CURNCYID = @FUNLCURR THEN
                                                                                       @I_vXCHGRATE
                                                                                   ELSE
                                                                                       XCHGRATE
                                                                               END,
                                                    @DECPLCUR
                                                )
                                       ELSE
                                           ROUND(   Total_Landed_Cost_Amount / CASE
                                                                                   WHEN CURNCYID = @FUNLCURR THEN
                                                                                       @I_vXCHGRATE
                                                                                   ELSE
                                                                                       XCHGRATE
                                                                               END,
                                                    @DECPLCUR
                                                )
                                   END,
        Orig_TotalLandedCostAmt = CASE
                                      WHEN @I_vRTCLCMTD = 0 THEN
                                          ROUND(   Orig_TotalLandedCostAmt * CASE
                                                                                 WHEN CURNCYID = @FUNLCURR THEN
                                                                                     @I_vXCHGRATE
                                                                                 ELSE
                                                                                     XCHGRATE
                                                                             END,
                                                   @DECPLCUR
                                               )
                                      ELSE
                                          ROUND(   Orig_TotalLandedCostAmt / CASE
                                                                                 WHEN CURNCYID = @FUNLCURR THEN
                                                                                     @I_vXCHGRATE
                                                                                 ELSE
                                                                                     XCHGRATE
                                                                             END,
                                                   @DECPLCUR
                                               )
                                  END
    WHERE POPRCTNM = @I_vPOPRCTNM
          AND
          (
              (CURNCYID <> @FUNLCURR)
              OR
              (
                  @FUNLCURR <> @I_vCURNCYID
                  AND CURNCYID = @FUNLCURR
              )
          );
    IF (@@error <> 0)
    BEGIN
        SELECT @O_iErrorState = 8054;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
UPDATE a
SET a.Total_Landed_Cost_Amount = t1.Total_Landed_Cost_Amount
FROM POP10500 a (NOLOCK),
(
    SELECT SUM(a.Total_Landed_Cost_Amount) Total_Landed_Cost_Amount,
           a.RCPTLNNM
    FROM POP10700 a (NOLOCK)
    WHERE a.POPRCTNM = @I_vPOPRCTNM
    GROUP BY a.POPRCTNM,
             a.RCPTLNNM
) t1
WHERE a.POPRCTNM = @I_vPOPRCTNM
      AND a.RCPTLNNM = t1.RCPTLNNM;
IF (@@error <> 0)
BEGIN
    SELECT @O_iErrorState = 7906;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
SELECT @Total_Landed_Cost_Amount = ROUND(ISNULL(SUM(Total_Landed_Cost_Amount), 0), @DECPLCUR)
FROM POP10700 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM;
SELECT @BCKTXAMT = ROUND(ISNULL(SUM(TXDTOTTX), 0), @DECPLCUR),
       @OBTAXAMT = ROUND(ISNULL(SUM(OTTAXPON), 0), @ORDECPLCUR)
FROM POP10360 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM
      AND RCPTLNNM = 0
      AND BKOUTTAX = 1;
SELECT @BackoutFreightTaxAmt = ROUND(ISNULL(SUM(TXDTOTTX), 0), @DECPLCUR),
       @OrigBackoutFreightTaxAmt = ROUND(ISNULL(SUM(OTTAXPON), 0), @ORDECPLCUR)
FROM POP10360 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM
      AND RCPTLNNM = 2147483646
      AND BKOUTTAX = 1;
SELECT @BackoutMiscTaxAmt = ROUND(ISNULL(SUM(TXDTOTTX), 0), @DECPLCUR),
       @OrigBackoutMiscTaxAmt = ROUND(ISNULL(SUM(OTTAXPON), 0), @ORDECPLCUR)
FROM POP10360 (NOLOCK)
WHERE POPRCTNM = @I_vPOPRCTNM
      AND RCPTLNNM = 2147483645
      AND BKOUTTAX = 1;
SELECT @TaxAmtTot = @I_vTAXAMNT + @I_vFRTTXAMT + @I_vMSCTXAMT,
       @OrTaxAmtTot = @ORTAXAMT + @ORFRTTAX + @ORMSCTAX;
IF (@BCKTXAMT <> 0 OR @OBTAXAMT <> 0)
BEGIN
    UPDATE b
    SET b.BCKTXAMT = t1.TAX + b.BackoutTradeDiscTax,
        b.OBTAXAMT = t1.ORTAX + b.OrigBackoutTradeDiscTax
    FROM POP10310 b (NOLOCK),
    (
        SELECT ISNULL(SUM(TAXAMNT), 0) AS TAX,
               ISNULL(SUM(ORTAXAMT), 0) AS ORTAX,
               RCPTLNNM,
               POPRCTNM
        FROM POP10360 (NOLOCK)
        WHERE POPRCTNM = @I_vPOPRCTNM
              AND RCPTLNNM <> 0
              AND BKOUTTAX = 1
        GROUP BY POPRCTNM,
                 RCPTLNNM
    ) AS t1
    WHERE b.POPRCTNM = @I_vPOPRCTNM
          AND b.RCPTLNNM = t1.RCPTLNNM
          AND b.POPRCTNM = t1.POPRCTNM;
    IF (@@error <> 0)
    BEGIN
        SELECT @O_iErrorState = 6667;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF (@ISMCTRX = 0)
BEGIN
    IF (EXISTS
    (
        SELECT DISTINCT
               1
        FROM IV00105 a (NOLOCK),
             POP10310 b (NOLOCK)
        WHERE b.POPRCTNM = @I_vPOPRCTNM
              AND b.ITEMNMBR = a.ITEMNMBR
    )
       )
    BEGIN
        IF (NOT EXISTS
        (
            SELECT 1
            FROM IV00105 a (NOLOCK),
                 POP10310 b (NOLOCK)
            WHERE b.POPRCTNM = @I_vPOPRCTNM
                  AND b.ITEMNMBR = a.ITEMNMBR
                  AND a.CURNCYID <> ''
        )
           )
        BEGIN
            SELECT @MCINSTALLED = 0;
        END;
    END;
    ELSE
    BEGIN
        IF (NOT EXISTS
        (
            SELECT DISTINCT
                   1
            FROM IV00105 a (NOLOCK)
            WHERE CURNCYID <> ''
        )
           )
        BEGIN
            SELECT @MCINSTALLED = 0;
        END;
    END;
END;
INSERT POP10300
(
    POPRCTNM,
    POPTYPE,
    VNDDOCNM,
    receiptdate,
    GLPOSTDT,
    ACTLSHIP,
    BCHSOURC,
    BACHNUMB,
    VENDORID,
    VENDNAME,
    SUBTOTAL,
    TRDISAMT,
    TRDPCTPR,
    FRTAMNT,
    MISCAMNT,
    TAXAMNT,
    TEN99AMNT,
    PYMTRMID,
    DSCPCTAM,
    DSCDLRAM,
    DISAVAMT,
    DISCDATE,
    DUEDATE,
    REFRENCE,
    RCPTNOTE_1,
    RCPTNOTE_2,
    RCPTNOTE_3,
    RCPTNOTE_4,
    RCPTNOTE_5,
    RCPTNOTE_6,
    RCPTNOTE_7,
    RCPTNOTE_8,
    POPHDR1,
    POPHDR2,
    POPLNERR,
    POSTEDDT,
    PTDUSRID,
    USER2ENT,
    CREATDDT,
    MODIFDT,
    TRXSORCE,
    VCHRNMBR,
    Tax_Date,
    CURNCYID,
    CURRNIDX,
    RATETPID,
    EXGTBLID,
    XCHGRATE,
    EXCHDATE,
    TIME1,
    RATECALC,
    DENXRATE,
    MCTRXSTT,
    ORSUBTOT,
    ORTDISAM,
    ORFRTAMT,
    ORMISCAMT,
    ORTAXAMT,
    OR1099AM,
    ORDDLRAT,
    ORDAVAMT,
    WITHHAMT,
    SIMPLIFD,
    BNKRCAMT,
    ECTRX,
    TXRGNNUM,
    TAXSCHID,
    TXENGCLD,
    BSIVCTTL,
    Purchase_Freight_Taxable,
    Purchase_Misc_Taxable,
    FRTSCHID,
    MSCSCHID,
    FRTTXAMT,
    ORFRTTAX,
    MSCTXAMT,
    ORMSCTAX,
    BCKTXAMT,
    OBTAXAMT,
    BackoutFreightTaxAmt,
    OrigBackoutFreightTaxAmt,
    BackoutMiscTaxAmt,
    OrigBackoutMiscTaxAmt,
    TaxInvReqd,
    TaxInvRecvd,
    APLYWITH,
    PPSTAXRT,
    SHIPMTHD,
    DocPrinted,
    Total_Landed_Cost_Amount,
    BackoutTradeDiscTax,
    OrigBackoutTradeDiscTax,
    CBVAT,
    VADCDTRO,
    TEN99TYPE,
    TEN99BOXNUMBER,
    REPLACEGOODS,
    INVOICEEXPECTED,
    Workflow_Status
)
SELECT @I_vPOPRCTNM,
       @I_vPOPTYPE,
       @I_vVNDDOCNM,
       @I_vreceiptdate,
       @I_vreceiptdate,
       @I_vACTLSHIP,
       @BCHSOURC,
       @I_vBACHNUMB,
       @I_vVENDORID,
       @I_vVENDNAME,
       @I_vSUBTOTAL,
       CASE
           WHEN @I_vTRDISAMT IS NULL THEN
               0
           ELSE
               @I_vTRDISAMT
       END,
       @TRDPCTPR,
       @I_vFRTAMNT,
       @I_vMISCAMNT,
       @TaxAmtTot,
       @I_vTEN99AMNT,
       @I_vPYMTRMID,
       @I_vDSCPCTAM * 100,
       @I_vDSCDLRAM,
       CASE
           WHEN @I_vPOPTYPE = 1 THEN
               0
           WHEN @I_vDISAVAMT IS NULL THEN
               0
           ELSE
               @I_vDISAVAMT
       END,
       CASE
           WHEN @I_vPOPTYPE = 1 THEN
               ''
           ELSE
               @I_vDISCDATE
       END,
       CASE
           WHEN @dDUEDATE = @dtDEFAULT
                AND @I_vDUEDATE = '' THEN
               @I_vreceiptdate
           ELSE
               @I_vDUEDATE
       END,
       @I_vREFRENCE,
       @RCPTNOTE_1,
       @RCPTNOTE_2,
       @RCPTNOTE_3,
       @RCPTNOTE_4,
       @RCPTNOTE_5,
       @RCPTNOTE_6,
       @RCPTNOTE_7,
       @RCPTNOTE_8,
       0,
       0,
       0,
       '',
       '',
       @I_vUSER2ENT,
       CONVERT(VARCHAR(12), GETDATE()),
       CONVERT(VARCHAR(12), GETDATE()),
       '',
       '',
       @I_vreceiptdate,
       CASE
           WHEN @MCINSTALLED = 1 THEN
               @I_vCURNCYID
           ELSE
               ''
       END,
       CASE
           WHEN @MCINSTALLED = 1 THEN
               @CURRNIDX
           ELSE
               0
       END,
       @I_vRATETPID,
       @EXGTBLID,
       @I_vXCHGRATE,
       @I_vEXCHDATE,
       CASE
           WHEN (@ISMCTRX = 1) THEN
               @I_vTIME1
           ELSE
               @dtDEFAULT
       END,
       @I_vRTCLCMTD,
       0,
       0,
       @ORSUBTOT,
       CASE
           WHEN @ORTDISAM IS NULL THEN
               0
           ELSE
               @ORTDISAM
       END,
       @ORFRTAMT,
       @ORMISCAMT,
       @OrTaxAmtTot,
       @OR1099AM,
       @ORDDLRAT,
       CASE
           WHEN @I_vPOPTYPE = 1 THEN
               0
           WHEN @ORDAVAMT IS NULL THEN
               0
           ELSE
               @ORDAVAMT
       END,
       0,
       0,
       0,
       0,
       @I_vTXRGNNUM,
       @I_vTAXSCHID,
       1,
       0,
       @I_vPurchase_Freight_Taxable,
       @I_vPurchase_Misc_Taxable,
       @I_vFRTSCHID,
       @I_vMSCSCHID,
       @I_vFRTTXAMT,
       @ORFRTTAX,
       @I_vMSCTXAMT,
       @ORMSCTAX,
       @BCKTXAMT,
       @OBTAXAMT,
       @BackoutFreightTaxAmt,
       @OrigBackoutFreightTaxAmt,
       @BackoutMiscTaxAmt,
       @OrigBackoutMiscTaxAmt,
       0,
       0,
       0,
       0,
       @I_vSHIPMTHD,
       0,
       @Total_Landed_Cost_Amount,
       @I_vBackoutTradeDiscTax,
       @OrigBackoutTradeDiscTax,
       0,
       @I_vVADCDTRO,
       @TEN99TYPE,
       @TEN99BOXNUMBER,
       0,
       0,
       9;
IF (@@error <> 0)
BEGIN
    SELECT @O_iErrorState = 2011;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF EXISTS (SELECT 1 FROM dbo.sysobjects (NOLOCK) WHERE name = 'PA01901')
   AND EXISTS
(
    SELECT 1
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
)
BEGIN
    SELECT @DCSTATUS = 1
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
          AND ProjNum <> ''
          AND CostCatID <> '';
    INSERT PA01901
    (
        PATranType,
        DOCNUMBR,
        CUSTNMBR,
        PADOCDT,
        PACOSTOWNER,
        RMDTYPAL,
        PABILLTRXT,
        PADocnumber20,
        DCSTATUS
    )
    SELECT 4,
           '',
           '',
           '',
           '',
           0,
           0,
           @I_vPOPRCTNM,
           @DCSTATUS;
    IF (@@error <> 0)
    BEGIN
        SELECT @O_iErrorState = 8180;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF EXISTS
(
    SELECT 1
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
          AND
          (
              (
                  ProjNum <> ''
                  AND CostCatID <> ''
              )
              OR
              (
                  @I_vCASHAMNT <> 0
                  OR @I_vCHEKAMNT <> 0
                  OR @I_vCRCRDAMT <> 0
              )
          )
)
BEGIN
    INSERT PA10701
    (
        PAVIDN,
        CARDNAME,
        CASHAMNT,
        CAMCBKID,
        CAMTDATE,
        CAMPMTNM,
        CDOCNMBR,
        CHEKAMNT,
        CHAMCBID,
        CAMPYNBR,
        CHEKDATE,
        CHEKNMBR,
        CRCRDAMT,
        CCAMPYNM,
        CRCARDDT,
        CCRCTNUM,
        DISTKNAM,
        NOTEINDX,
        ORCASAMT,
        ORCHKAMT,
        ORCCDAMT,
        ORDISTKN,
        PACOMM,
        PAFreight_Taxable_P,
        PAMisc_Taxable_P,
        PApostoDynPM,
        PA_Trade_Discount_Pcnt,
        PAUD1,
        PAUD2,
        TRXTYPE,
        USEADVTX
    )
    SELECT @I_vPOPRCTNM,
           @I_vCARDNAME,
           @I_vCASHAMNT,
           @I_vCAMCBKID,
           @I_vCAMTDATE,
           @I_vCAMPMTNM,
           @I_vCDOCNMBR,
           @I_vCHEKAMNT,
           @I_vCHAMCBID,
           @I_vCAMPYNBR,
           @I_vCHEKDATE,
           @I_vCHEKNMBR,
           @I_vCRCRDAMT,
           @I_vCCAMPYNM,
           @I_vCRCARDDT,
           @I_vCCRCTNUM,
           @I_vDISTKNAM,
           0,
           @ORCASAMT,
           @ORCHKAMT,
           @ORCCDAMT,
           @ORDISTKN,
           'Receivings Transaction Entry',
           @I_vPurchase_Freight_Taxable,
           @I_vPurchase_Misc_Taxable,
           1,
           @I_vDSCPCTAM,
           '',
           '',
           0,
           0;
    IF (@@error <> 0)
    BEGIN
        SELECT @O_iErrorState = 8179;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
IF EXISTS
(
    SELECT 1
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM
          AND ProjNum <> ''
          AND CostCatID <> ''
)
   AND (@I_vTRDISAMT > 0)
BEGIN
    SELECT @SUMEXTDCOST = ISNULL(SUM(EXTDCOST), 0)
    FROM POP10310 (NOLOCK)
    WHERE POPRCTNM = @I_vPOPRCTNM;
    IF @SUMEXTDCOST > 0
    BEGIN
        UPDATE a
        SET a.TRDISAMT = ROUND(b.EXTDCOST / @SUMEXTDCOST, 2) * @I_vTRDISAMT,
            a.ORTDISAM = ROUND(b.EXTDCOST / @SUMEXTDCOST, 2) * @I_vTRDISAMT
        FROM PA10702 a (NOLOCK),
             POP10310 b (NOLOCK)
        WHERE a.PAVIDN = b.POPRCTNM
              AND b.POPRCTNM = @I_vPOPRCTNM
              AND a.RCPTLNNM = b.RCPTLNNM;
        UPDATE a
        SET a.TRDISAMT = a.TRDISAMT + t3.diff
        FROM PA10702 a (NOLOCK),
        (
            SELECT @I_vTRDISAMT - SUM(TRDISAMT) AS diff
            FROM PA10702 (NOLOCK)
            WHERE PAVIDN = @I_vPOPRCTNM
        ) t3 ,
        (
            SELECT MAX(DEX_ROW_ID) AS row
            FROM PA10702 (NOLOCK)
            WHERE PAVIDN = @I_vPOPRCTNM
        ) t2
        WHERE a.PAVIDN = @I_vPOPRCTNM
              AND a.DEX_ROW_ID = t2.row;
    END;
END;
EXEC @iStatus = taCreateUpdateBatchHeaderRcd @I_vBACHNUMB = @I_vBACHNUMB,
                                             @I_vSERIES = 4,
                                             @I_vGLPOSTDT = @I_vreceiptdate,
                                             @I_vBCHSOURC = @BCHSOURC,
                                             @I_vDOCAMT = @FUNACCTAMNT,
                                             @I_vORIGIN = 1,
                                             @I_vNUMOFTRX = 1,
                                             @I_vCHEKBKID = '',
                                             @I_vUSERID = @I_vUSER2ENT,
                                             @O_iErrorState = @iUpdtBthErrState OUTPUT,
                                             @oErrString = @iCreateBatchErrString OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus = 0) AND (@iError <> 0))
    SELECT @iStatus = @iError;
IF (@iStatus <> 0)
   OR (@iUpdtBthErrState <> 0)
BEGIN
    IF (@iUpdtBthErrState <> 0)
    BEGIN
        EXEC @iStatus = taUpdateString @iUpdtBthErrState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
    SELECT @O_iErrorState = 2008;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vPOPTYPE = 1)
BEGIN
    SELECT @I_vDISAVAMT = 0,
           @ORDAVAMT = 0;
END;
EXEC @iStatus = taPopCreateDistributions @I_vPOPTYPE,
                                         @I_vPOPRCTNM,
                                         @I_vVENDORID,
                                         @CURRNIDX,
                                         @I_vTRDISAMT,
                                         @I_vFRTAMNT,
                                         @I_vMISCAMNT,
                                         @TaxAmtTot,
                                         @I_vDISAVAMT,
                                         @ORTDISAM,
                                         @ORFRTAMT,
                                         @ORMISCAMT,
                                         @OrTaxAmtTot,
                                         @ORDAVAMT,
                                         @I_vCASHAMNT,
                                         @I_vCHEKAMNT,
                                         @I_vCRCRDAMT,
                                         @I_vDISTKNAM,
                                         @I_vCURNCYID,
                                         @I_vRATETPID,
                                         @EXGTBLID,
                                         @I_vXCHGRATE,
                                         @I_vEXCHDATE,
                                         @I_vTIME1,
                                         @I_vRTCLCMTD,
                                         @DECPLUSED,
                                         @INTERID,
                                         @sCompanyID,
                                         @I_vCREATEDIST,
                                         @iUpdDistErrState OUTPUT,
                                         @oErrString OUTPUT;
SELECT @iError = @@error;
IF ((@iStatus = 0) AND (@iError <> 0))
    SELECT @iStatus = @iError;
IF ((@iStatus <> 0) OR (@iUpdDistErrState <> 0))
BEGIN
    IF (@iUpdDistErrState <> 0)
    BEGIN
        EXEC @iStatus = taUpdateString @iUpdDistErrState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
    END;
    SELECT @O_iErrorState = 2012;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF (@I_vNOTETEXT <> '')
BEGIN
    INSERT SY03900
    (
        NOTEINDX,
        DATE1,
        TIME1,
        TXTFIELD
    )
    SELECT @RCPTNOTE_1,
           CONVERT(VARCHAR(12), GETDATE()),
           @I_vTIME1,
           @I_vNOTETEXT;
    IF (@@error <> 0)
    BEGIN
        SELECT @O_iErrorState = 6126;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
SELECT @RCPTNOTE_1 = @RCPTNOTE_1 + 1;
UPDATE POP10310
SET RcptLineNoteIDArray_5 = @RCPTNOTE_1,
    @RCPTNOTE_1 = @RCPTNOTE_1 + 1
WHERE POPRCTNM = @I_vPOPRCTNM;
IF (@@error <> 0)
BEGIN
    SELECT @O_iErrorState = 1794;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @O_oErrorState OUTPUT;
END;
IF (@O_iErrorState <> 0)
BEGIN
    RETURN (@O_iErrorState);
END;
IF @I_vCASHAMNT > 0
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM PM00400
        WHERE CNTRLNUM = @I_vCAMPMTNM
              AND DOCTYPE = 6
    )
    BEGIN
        INSERT PM00400
        (
            CNTRLNUM,
            CNTRLTYP,
            DCSTATUS,
            DOCTYPE,
            VENDORID,
            DOCNUMBR,
            CHEKBKID,
            DUEDATE,
            DISCDATE,
            BCHSOURC,
            DOCDATE
        )
        SELECT @I_vCAMPMTNM,
               1,
               0,
               6,
               @I_vVENDORID,
               @I_vCDOCNMBR,
               @I_vCAMCBKID,
               '',
               '',
               'PM_Trxent',
               @I_vCAMTDATE;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 11500;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
END;
IF @I_vCHEKAMNT > 0
BEGIN
    IF NOT EXISTS
    (
        SELECT 1
        FROM PM00400
        WHERE CNTRLNUM = @I_vCAMPYNBR
              AND DOCTYPE = 6
    )
    BEGIN
        INSERT PM00400
        (
            CNTRLNUM,
            CNTRLTYP,
            DCSTATUS,
            DOCTYPE,
            VENDORID,
            DOCNUMBR,
            CHEKBKID,
            DUEDATE,
            DISCDATE,
            BCHSOURC,
            DOCDATE
        )
        SELECT @I_vCAMPYNBR,
               1,
               0,
               6,
               @I_vVENDORID,
               @I_vCHEKNMBR,
               @I_vCHAMCBID,
               '',
               '',
               '',
               @I_vCHEKDATE;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 11501;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
END;
IF @I_vCRCRDAMT > 0
BEGIN
    DECLARE @VENDORID CHAR(15);
    SELECT @VENDORID = VENDORID
    FROM SY03100
    WHERE CARDNAME = @I_vCARDNAME;
    IF NOT EXISTS
    (
        SELECT 1
        FROM PM00400
        WHERE CNTRLNUM = @I_vCCAMPYNM
              AND DOCTYPE = 1
    )
    BEGIN
        INSERT PM00400
        (
            CNTRLNUM,
            CNTRLTYP,
            DCSTATUS,
            DOCTYPE,
            VENDORID,
            DOCNUMBR,
            CHEKBKID,
            DUEDATE,
            DISCDATE,
            BCHSOURC,
            DOCDATE
        )
        SELECT @I_vCCAMPYNM,
               0,
               0,
               1,
               @VENDORID,
               @I_vCCRCTNUM,
               '',
               '',
               '',
               'PM_Trxent',
               @I_vCRCARDDT;
        IF (@@error <> 0)
        BEGIN
            SELECT @O_iErrorState = 11502;
            EXEC @iStatus = taUpdateString @O_iErrorState,
                                           @oErrString,
                                           @oErrString OUTPUT,
                                           @O_oErrorState OUTPUT;
            RETURN (@O_iErrorState);
        END;
    END;
END;
EXEC @iStatus = taPopRcptHdrInsertPost @I_vPOPRCTNM,
                                       @I_vPOPTYPE,
                                       @I_vVNDDOCNM,
                                       @I_vreceiptdate,
                                       @I_vACTLSHIP,
                                       @I_vBACHNUMB,
                                       @I_vVENDORID,
                                       @I_vVENDNAME,
                                       @I_vSUBTOTAL,
                                       @I_vTRDISAMT,
                                       @I_vFRTAMNT,
                                       @I_vMISCAMNT,
                                       @I_vTAXAMNT,
                                       @I_vTEN99AMNT,
                                       @I_vPYMTRMID,
                                       @I_vDSCPCTAM,
                                       @I_vDSCDLRAM,
                                       @I_vDISAVAMT,
                                       @I_vREFRENCE,
                                       @I_vUSER2ENT,
                                       @I_vVCHRNMBR,
                                       @I_vTax_Date,
                                       @I_vTIME1,
                                       @I_vWITHHAMT,
                                       @I_vTXRGNNUM,
                                       @I_vAUTOCOST,
                                       @I_vTAXSCHID,
                                       @I_vPurchase_Freight_Taxable,
                                       @I_vPurchase_Misc_Taxable,
                                       @I_vFRTSCHID,
                                       @I_vMSCSCHID,
                                       @I_vFRTTXAMT,
                                       @I_vMSCTXAMT,
                                       @I_vBCKTXAMT,
                                       @I_vBackoutTradeDiscTax,
                                       @I_vSHIPMTHD,
                                       @I_vUSINGHEADERLEVELTAXES,
                                       @I_vCREATEDIST,
                                       @I_vCURNCYID,
                                       @I_vXCHGRATE,
                                       @I_vRATETPID,
                                       @I_vEXPNDATE,
                                       @I_vEXCHDATE,
                                       @I_vEXGTBDSC,
                                       @I_vEXTBLSRC,
                                       @I_vRATEEXPR,
                                       @I_vDYSTINCR,
                                       @I_vRATEVARC,
                                       @I_vTRXDTDEF,
                                       @I_vRTCLCMTD,
                                       @I_vPRVDSLMT,
                                       @I_vDATELMTS,
                                       @I_vDUEDATE,
                                       @I_vDISCDATE,
                                       @I_vNOTETEXT,
                                       @I_vVADCDTRO,
                                       @I_vCASHAMNT,
                                       @I_vCAMCBKID,
                                       @I_vCDOCNMBR,
                                       @I_vCAMTDATE,
                                       @I_vCAMPMTNM,
                                       @I_vCHEKAMNT,
                                       @I_vCHAMCBID,
                                       @I_vCHEKNMBR,
                                       @I_vCHEKDATE,
                                       @I_vCAMPYNBR,
                                       @I_vCRCRDAMT,
                                       @I_vCARDNAME,
                                       @I_vCCRCTNUM,
                                       @I_vCRCARDDT,
                                       @I_vCCAMPYNM,
                                       @I_vDISTKNAM,
                                       @I_vRequesterTrx,
                                       @I_vUSRDEFND1,
                                       @I_vUSRDEFND2,
                                       @I_vUSRDEFND3,
                                       @I_vUSRDEFND4,
                                       @I_vUSRDEFND5,
                                       @O_iErrorState = @iCustomState OUTPUT,
                                       @oErrString = @iCustomErrString OUTPUT;
SELECT @iError = @@error;
IF @iStatus = 0
   AND @iError <> 0
BEGIN
    SELECT @iStatus = @iError;
END;
IF (@iStatus <> 0)
   OR (@iCustomState <> 0)
BEGIN
    SELECT @oErrString = RTRIM(@oErrString) + ' ' + LTRIM(RTRIM(@iCustomErrString));
    SELECT @O_iErrorState = 148;
    EXEC @iStatus = taUpdateString @O_iErrorState,
                                   @oErrString,
                                   @oErrString OUTPUT,
                                   @iAddCodeErrState OUTPUT;
    RETURN (@O_iErrorState);
END;
IF @@error = 0
   AND @O_iErrorState = 0
   AND @O_oErrorState = 0
    SELECT @O_iErrorState = 0;
IF (@I_vRequesterTrx = 0)
BEGIN
    EXEC @iStatus = eConnectOutVerify @I_vDOCTYPE = 'PO_Receiving_Transaction',
                                      @I_vINDEX1 = @I_vPOPRCTNM,
                                      @I_vINDEX2 = '',
                                      @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
       AND @iError <> 0
    BEGIN
        SELECT @iStatus = @iError;
    END;
    IF (@iStatus <> 0)
       OR (@iCustomState <> 0)
    BEGIN
        SELECT @O_iErrorState = 1288;
        EXEC @iStatus = taUpdateString @O_iErrorState,
                                       @oErrString,
                                       @oErrString OUTPUT,
                                       @O_oErrorState OUTPUT;
        RETURN (@O_iErrorState);
    END;
END;
RETURN (@O_iErrorState);
GO



RealWorldCode gives developers practical, real‑world solutions with clean, working code — no fluff, no theory, just answers.
Links
Home
Knowledge Areas
Sitemap
Contact
Et cetera
Privacy Policy
Terms and Conditions
Cookie Preferences