project QadFinancials > class BPosting > method AddPostingLineTaxForSuspDel

Description

Create two posting tax lines, one to reverse the original suspended/delayed tax account and one to create the newly posting tax line on the normal tax account.


Parameters


icPostingTcRowidinputcharacter
itPaymentTaxPointDateinputdate
itInvoiceTaxPointDateinputdate
icPostingLineTextinputcharacter
icCurrencyCodeinputcharacter
icSuspDelTaxGLCodeinputcharacter
icSuspDelTaxDivisionCodeinputcharacter
icNormalTaxGLCodeinputcharacter
icNormalTaxDivisionCodeinputcharacter
icPostingVatInOutinputcharacter
icPostingVatCodeinputcharacter
icPostingVatDomaininputcharacter
idExchangeRateinputdecimal
idExchangeRateScaleinputdecimal
icExchangeRateTypeinputcharacter
icTransactionTypeinputcharacter
icTaxTransactionTypeinputcharacter
idBaseDebitTCinputdecimal
idBaseCreditTCinputdecimal
idBaseDebitLCinputdecimal
idBaseCreditLCinputdecimal
idBaseDebitCCinputdecimal
idBaseCreditCCinputdecimal
idVatDebitTCinputdecimal
idVatCreditTCinputdecimal
idVatDebitLCinputdecimal
idVatCreditLCinputdecimal
idVatDebitCCinputdecimal
idVatCreditCCinputdecimal
icFromTaxZoneinputcharacter
icToTaxZoneinputcharacter
icTaxEnvinputcharacter
ilIsTaxableinputlogical
icTaxClassinputcharacter
icTaxUsageinputcharacter
icTaxTypeinputcharacter
ilIsRevChargeinputlogical
iiTaxAddressIDinputinteger
icTaxIDFederalinputcharacter
icTaxIDStateinputcharacter
icTaxIDMisc1inputcharacter
icTaxIDMisc2inputcharacter
icTaxIDMisc3inputcharacter
iiOwnAddressIDinputinteger
icOwnTaxIDFedralinputcharacter
icOwnTaxIDStateinputcharacter
icOwnTaxIDMisc1inputcharacter
icOwnTaxIDMisc2inputcharacter
icOwnTaxIDMisc3inputcharacter
iiOwnTaxDeclinputinteger
itInvoicePostingDateinputdate
icTaxRateTypeinputcharacter
ilIsDelayedTaxinputlogical
itInvoiceExchangeRateDateinputdateIf this date is filled, then it wil be the date to be used to calculate the exchange rate
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BDInvoice.MoveSuspendedTax


program code (program6/bposting.p)

assign oiReturnStatus      = -98
       viLocalReturnStatus = 0.

SUSPDELBLOCK: DO:
    <M-62 run AddPostingLineTax
       (input  icPostingTcRowid (icPostingTcRowid), 
        input  itInvoicePostingDate (itTaxPointDate), 
        input  icPostingLineText (icPostingLineText), 
        input  icCurrencyCode (icCurrencyCode), 
        input  icPostingVatInOut (icPostingVatInOut), 
        input  icPostingVatCode (icPostingVatCode), 
        input  icPostingVatDomain (icPostingVatDomain), 
        input  idExchangeRate (idExchangeRate), 
        input  idExchangeRateScale (idExchangeRateScale), 
        input  icExchangeRateType (icExchangeRateType), 
        input  ? (idCCExchangeRate), 
        input  ? (idCCExchangeRateScale), 
        input  icTransactionType (icTransactionType), 
        input  icTaxTransactionType (icTaxTransactionType), 
        input  idBaseCreditTC (idBaseDebitTC), 
        input  idBaseDebitTC (idBaseCreditTC), 
        input  idBaseCreditLC (idBaseDebitLC), 
        input  idBaseDebitLC (idBaseCreditLC), 
        input  idBaseCreditCC (idBaseDebitCC), 
        input  idBaseDebitCC (idBaseCreditCC), 
        input  idVatCreditTC (idVatDebitTC), 
        input  idVatDebitTC (idVatCreditTC), 
        input  idVatCreditLC (idVatDebitLC), 
        input  idVatDebitLC (idVatCreditLC), 
        input  idVatCreditCC (idVatDebitCC), 
        input  idVatDebitCC (idVatCreditCC), 
        input  icSuspDelTaxGLCode (icNormalTaxGLCode), 
        input  icSuspDelTaxDivisionCode (icNormalTaxDivisionCode), 
        input  false (ilNormalTaxIsAlreadyAbsRet), 
        input  ? (icAbsRetTaxGLCode), 
        input  ? (icAbsRetTaxDivisionCode), 
        input  icFromTaxZone (icFromTaxZone), 
        input  icToTaxZone (icToTaxZone), 
        input  icTaxEnv (icTaxEnvrionment), 
        input  ilIsTaxable (ilIsTaxable), 
        input  icTaxClass (icTaxClass), 
        input  icTaxUsage (icTaxUsage), 
        input  icTaxType (icTaxType), 
        input  ilIsRevCharge (ilTaxIsReverseChargeDomestic), 
        input  iiTaxAddressID (iiTaxAddressID), 
        input  icTaxIDFederal (icTaxIDFeder), 
        input  icTaxIDState (icTaxIDState), 
        input  icTaxIDMisc1 (icTaxIDMisc1), 
        input  icTaxIDMisc2 (icTaxIDMisc2), 
        input  icTaxIDMisc3 (icTaxIDMisc3), 
        input  iiOwnAddressID (iiOwnAddressID), 
        input  icOwnTaxIDFedral (icOwnTaxIDFeder), 
        input  icOwnTaxIDState (icOwnTaxIDState), 
        input  icOwnTaxIDMisc1 (icOwnTaxIDMisc1), 
        input  icOwnTaxIDMisc2 (icOwnTaxIDMisc2), 
        input  icOwnTaxIDMisc3 (icOwnTaxIDMisc3), 
        input  iiOwnTaxDecl (iiOwnTaxIDDeclarat), 
        input  yes (ilIsSuspDel), 
        output viDummy (oiNormalTaxPostingLineID), 
        output vcDummy (ocNormalTaxPostingLineTcRowid), 
        output viDummy (oiAbsRetTaxPostingLineID), 
        output vcDummy (ocAbsRetTaxPostingLineTcRowid), 
        output viDummy (oiNormalTaxPostingVatID), 
        input  false (ilLinkedCrCyDaemonReqExists), 
        input  yes (ilCalledFromMoveSuspDelTax), 
        input  ? (itInvoiceExchangeRateDate), 
        output viFcReturnSuper (oiReturnStatus)) in BPosting>
    if viFcReturnSuper <> 0
    then assign viLocalReturnStatus = viFcReturnSuper.
    if viFcReturnSuper < 0 then leave SUSPDELBLOCK.

    if icTaxRateType <> {&TAXDATETYPE-PAYMENTDATE}
    then do:
        /* remain the original logic */
        <M-46 run AddPostingLineTax
           (input  icPostingTcRowid (icPostingTcRowid), 
            input  itInvoicePostingDate (itTaxPointDate), 
            input  icPostingLineText (icPostingLineText), 
            input  icCurrencyCode (icCurrencyCode), 
            input  icPostingVatInOut (icPostingVatInOut), 
            input  icPostingVatCode (icPostingVatCode), 
            input  icPostingVatDomain (icPostingVatDomain), 
            input  idExchangeRate (idExchangeRate), 
            input  idExchangeRateScale (idExchangeRateScale), 
            input  icExchangeRateType (icExchangeRateType), 
            input  ? (idCCExchangeRate), 
            input  ? (idCCExchangeRateScale), 
            input  icTransactionType (icTransactionType), 
            input  icTaxTransactionType (icTaxTransactionType), 
            input  idBaseDebitTC (idBaseDebitTC), 
            input  idBaseCreditTC (idBaseCreditTC), 
            input  idBaseDebitLC (idBaseDebitLC), 
            input  idBaseCreditLC (idBaseCreditLC), 
            input  idBaseDebitCC (idBaseDebitCC), 
            input  idBaseCreditCC (idBaseCreditCC), 
            input  idVatDebitTC (idVatDebitTC), 
            input  idVatCreditTC (idVatCreditTC), 
            input  idVatDebitLC (idVatDebitLC), 
            input  idVatCreditLC (idVatCreditLC), 
            input  idVatDebitCC (idVatDebitCC), 
            input  idVatCreditCC (idVatCreditCC), 
            input  icNormalTaxGLCode (icNormalTaxGLCode), 
            input  icNormalTaxDivisionCode (icNormalTaxDivisionCode), 
            input  false (ilNormalTaxIsAlreadyAbsRet), 
            input  ? (icAbsRetTaxGLCode), 
            input  ? (icAbsRetTaxDivisionCode), 
            input  icFromTaxZone (icFromTaxZone), 
            input  icToTaxZone (icToTaxZone), 
            input  icTaxEnv (icTaxEnvrionment), 
            input  ilIsTaxable (ilIsTaxable), 
            input  icTaxClass (icTaxClass), 
            input  icTaxUsage (icTaxUsage), 
            input  icTaxType (icTaxType), 
            input  ilIsRevCharge (ilTaxIsReverseChargeDomestic), 
            input  iiTaxAddressID (iiTaxAddressID), 
            input  icTaxIDFederal (icTaxIDFeder), 
            input  icTaxIDState (icTaxIDState), 
            input  icTaxIDMisc1 (icTaxIDMisc1), 
            input  icTaxIDMisc2 (icTaxIDMisc2), 
            input  icTaxIDMisc3 (icTaxIDMisc3), 
            input  iiOwnAddressID (iiOwnAddressID), 
            input  icOwnTaxIDFedral (icOwnTaxIDFeder), 
            input  icOwnTaxIDState (icOwnTaxIDState), 
            input  icOwnTaxIDMisc1 (icOwnTaxIDMisc1), 
            input  icOwnTaxIDMisc2 (icOwnTaxIDMisc2), 
            input  icOwnTaxIDMisc3 (icOwnTaxIDMisc3), 
            input  iiOwnTaxDecl (iiOwnTaxIDDeclarat), 
            input  false (ilIsSuspDel), 
            output viDummy (oiNormalTaxPostingLineID), 
            output vcDummy (ocNormalTaxPostingLineTcRowid), 
            output viDummy (oiAbsRetTaxPostingLineID), 
            output vcDummy (ocAbsRetTaxPostingLineTcRowid), 
            output viDummy (oiNormalTaxPostingVatID), 
            input  false (ilLinkedCrCyDaemonReqExists), 
            input  yes (ilCalledFromMoveSuspDelTax), 
            output viFcReturnSuper (oiReturnStatus)) in BPosting>
        if viFcReturnSuper <> 0
        then assign viLocalReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0 then leave SUSPDELBLOCK.
    end. /* if icTaxRateType <> {&TAXDATETYPE-PAYMENTDATE} */
    else do:                                                 
        /***************************************************/
        /* Tax rate date type is at Payment Date */
        /* Include a new calling of AddPostingLineTax */
        /***************************************************/

        /* get LC Exchange rate at posting date*/
        if icCurrencyCode = vcCompanyLC
        then do:
            assign vdLCExchangeRate      = 1
                   vdLCExchangeRateScale = 1.
        end.
        else do:
            <M-4 run GetExchangeRate
               (input  tPosting.Company_ID (iiCompanyID), 
                input  ? (iiFromCurrencyID), 
                input  icCurrencyCode (icFromCurrencyCode), 
                input  viCompanyLCId (iiToCurrencyID), 
                input  ? (icToCurrencyCode), 
                input  ? (iiExchangeRateTypeID), 
                input  {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateTypeCode), 
                input  tPosting.PostingDate (itValidityDate), 
                output vdLCExchangeRate (odExchangeRate), 
                output vdLCExchangeRateScale (odExchangeScaleFactor), 
                output viFcReturnSuper (oiReturnStatus)) in BPosting>
            if viFcReturnSuper <> 0
            then assign viLocalReturnStatus = viFcReturnSuper.
            if viFcReturnSuper < 0 then leave SUSPDELBLOCK.
        end.

        /* get CC Exchange rate at postingdate */
        if icCurrencyCode = vcCompanyCC
        then do:
            assign vdCCExchangeRate      = 1
                   vdCCExchangeRateScale = 1.
        end.
        else do:
            <M-41 run GetExchangeRate
               (input  tPosting.Company_ID (iiCompanyID), 
                input  ? (iiFromCurrencyID), 
                input  icCurrencyCode (icFromCurrencyCode), 
                input  viCompanyCCId (iiToCurrencyID), 
                input  ? (icToCurrencyCode), 
                input  ? (iiExchangeRateTypeID), 
                input  {&EXCHANGERATETYPE-STATUTORY} (icExchangeRateTypeCode), 
                input  tPosting.PostingDate (itValidityDate), 
                output vdCCExchangeRate (odExchangeRate), 
                output vdCCExchangeRateScale (odExchangeScaleFactor), 
                output viFcReturnSuper (oiReturnStatus)) in BPosting>
            if viFcReturnSuper <> 0
            then assign viLocalReturnStatus = viFcReturnSuper.
            if viFcReturnSuper < 0 then leave SUSPDELBLOCK.
        end.

        /* Calculate the VatNormal LC and CC values */
        assign vdVatDebitNormalLC = <M-94 RoundAmount
                                       (input  idVatDebitTC * vdLCExchangeRate * vdlcexchangeRateScale (idUnroundedAmount), 
                                        input  viCompanyLCId (iiCurrencyID), 
                                        input  vcCompanyLC (icCurrencyCode)) in BApplicationProperty>.

        assign vdVatCreditNormalLC = <M-8 RoundAmount
                                        (input  idVatCreditTC * vdLCExchangeRate * vdlcexchangeRateScale (idUnroundedAmount), 
                                         input  viCompanyLCId (iiCurrencyID), 
                                         input  vcCompanyLC (icCurrencyCode)) in BApplicationProperty>.

        assign vdVatDebitNormalCC = <M-77 RoundAmount
                                       (input  idVatDebitTC * vdCCExchangeRate * vdCCExchangeRateScale (idUnroundedAmount), 
                                        input  viCompanyCCId (iiCurrencyID), 
                                        input  vcCompanyCC (icCurrencyCode)) in BApplicationProperty>.

        assign vdVatCreditNormalCC = <M-67 RoundAmount
                                        (input  idVatCreditTC * vdCCExchangeRate * vdCCExchangeRateScale (idUnroundedAmount), 
                                         input  viCompanyCCId (iiCurrencyID), 
                                         input  vcCompanyCC (icCurrencyCode)) in BApplicationProperty>.

        <M-83 run AddPostingLineTax
           (input  icPostingTcRowid (icPostingTcRowid), 
            input  tPosting.PostingDate (itTaxPointDate), 
            input  icPostingLineText (icPostingLineText), 
            input  icCurrencyCode (icCurrencyCode), 
            input  icPostingVatInOut (icPostingVatInOut), 
            input  icPostingVatCode (icPostingVatCode), 
            input  icPostingVatDomain (icPostingVatDomain), 
            input  vdLCExchangeRate (idExchangeRate), 
            input  vdLCExchangeRateScale (idExchangeRateScale), 
            input  {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateType), 
            input  vdCCExchangeRate (idCCExchangeRate), 
            input  vdCCExchangeRateScale (idCCExchangeRateScale), 
            input  icTransactionType (icTransactionType), 
            input  icTaxTransactionType (icTaxTransactionType), 
            input  idBaseDebitTC (idBaseDebitTC), 
            input  idBaseCreditTC (idBaseCreditTC), 
            input  idBaseDebitLC (idBaseDebitLC), 
            input  idBaseCreditLC (idBaseCreditLC), 
            input  idBaseDebitCC (idBaseDebitCC), 
            input  idBaseCreditCC (idBaseCreditCC), 
            input  idVatDebitTC (idVatDebitTC), 
            input  idVatCreditTC (idVatCreditTC), 
            input  vdVatDebitNormalLC (idVatDebitLC), 
            input  vdVatCreditNormalLC (idVatCreditLC), 
            input  vdVatDebitNormalCC (idVatDebitCC), 
            input  vdVatCreditNormalCC (idVatCreditCC), 
            input  icNormalTaxGLCode (icNormalTaxGLCode), 
            input  icNormalTaxDivisionCode (icNormalTaxDivisionCode), 
            input  false (ilNormalTaxIsAlreadyAbsRet), 
            input  ? (icAbsRetTaxGLCode), 
            input  ? (icAbsRetTaxDivisionCode), 
            input  icFromTaxZone (icFromTaxZone), 
            input  icToTaxZone (icToTaxZone), 
            input  icTaxEnv (icTaxEnvrionment), 
            input  ilIsTaxable (ilIsTaxable), 
            input  icTaxClass (icTaxClass), 
            input  icTaxUsage (icTaxUsage), 
            input  icTaxType (icTaxType), 
            input  ilIsRevCharge (ilTaxIsReverseChargeDomestic), 
            input  iiTaxAddressID (iiTaxAddressID), 
            input  icTaxIDFederal (icTaxIDFeder), 
            input  icTaxIDState (icTaxIDState), 
            input  icTaxIDMisc1 (icTaxIDMisc1), 
            input  icTaxIDMisc2 (icTaxIDMisc2), 
            input  icTaxIDMisc3 (icTaxIDMisc3), 
            input  iiOwnAddressID (iiOwnAddressID), 
            input  icOwnTaxIDFedral (icOwnTaxIDFeder), 
            input  icOwnTaxIDState (icOwnTaxIDState), 
            input  icOwnTaxIDMisc1 (icOwnTaxIDMisc1), 
            input  icOwnTaxIDMisc2 (icOwnTaxIDMisc2), 
            input  icOwnTaxIDMisc3 (icOwnTaxIDMisc3), 
            input  iiOwnTaxDecl (iiOwnTaxIDDeclarat), 
            input  false (ilIsSuspDel), 
            output viDummy (oiNormalTaxPostingLineID), 
            output vcDummy (ocNormalTaxPostingLineTcRowid), 
            output viDummy (oiAbsRetTaxPostingLineID), 
            output vcDummy (ocAbsRetTaxPostingLineTcRowid), 
            output viDummy (oiNormalTaxPostingVatID), 
            input  false (ilLinkedCrCyDaemonReqExists), 
            input  no (ilCalledFromMoveSuspDelTax), 
            output viFcReturnSuper (oiReturnStatus)) in BPosting>
        if viFcReturnSuper <> 0
        then assign viLocalReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0 then leave SUSPDELBLOCK.

        /* ================= */
        /* Get the CC amount */
        /* ================= */
        assign vlCurrFetched = false.
        if ((idVatDebitCC    = ? or idVatDebitCC = 0 ) and
            (idVatCreditCC   = ? or idVatCreditCC = 0)) and
           ((idVatDebitTC  <> ? and idVatDebitTC <> 0) or
            (idVatCreditTC <> ? and idVatCreditTC <> 0))
        then do:
            <M-82 run CalculateCCAmount
               (input  tPosting.Company_ID (iiCompanyID), 
                input  idVatCreditLC (idPostingLineCreditLC), 
                input  idVatCreditTC (idPostingLineCreditTC), 
                input  idVatDebitLC (idPostingLineDebitLC), 
                input  idVatDebitTC (idPostingLineDebitTC), 
                input  tPosting.PostingDate (itPostingDate), 
                input  icCurrencyCode (icCurrencyCode), 
                input  itInvoicePostingDate (itInvoiceExchangeRateDate), 
                input-output vdCCExchangeRateTemp (bdCCExchangeRate), 
                input-output vdCCExchangeRateScaleTemp (bdCCExchangeRateScale), 
                input-output vlCurrFetched (blCurrencyFetched), 
                output idVatCreditCC (odPostingLineCreditCC), 
                output idVatDebitCC (odPostingLineDebitCC), 
                output viFcReturnSuper (oiReturnStatus)) in BPosting>
            if viFcReturnSuper <> 0
            then assign viLocalReturnStatus = viFcReturnSuper.
            if viFcReturnSuper < 0 
            then Leave SUSPDELBLOCK.
        end. /* if idVatDebitCC = ? or idVatCreditCC = ? */

        /* make sure the cc values are not equal to question mark */
        if idVatDebitCC = ? then assign idVatDebitCC = 0.
        if idVatCreditCC = ? then assign idVatCreditCC = 0.
  
        /* calculate the delta TAX LC and CC amount */
        assign  vdDeltaVatDebitNormalLC  = idVatDebitLC  - vdVatDebitNormalLC
                vdDeltaVatCreditNormalLC = idVatCreditLC - vdVatCreditNormalLC
                vdDeltaVatDebitNormalCC  = idVatDebitCC  - vdVatDebitNormalCC
                vdDeltaVatCreditNormalCC = idVatCreditCC - vdVatCreditNormalCC.
                
        
        /* create posting to Exchange rate gain/loss account */
        <M-81 run AddPostingLineExchRateGainLoss
           (input  tPosting.tc_Rowid (icPostingtcRowId), 
            input  {&EXCHANGERATETYPE_REALIZED} (icExchangeRateGainLoseType), 
            input  vdDeltaVatDebitNormalLC (idDeltaDebitLC), 
            input  vdDeltaVatCreditNormalLC (idDeltaCreditLC), 
            input  vdDeltaVatDebitNormalCC (idDeltaDebitCC), 
            input  vdDeltaVatCreditNormalCC (idDeltaCreditCC), 
            input  vdLCExchangeRate (idLCExchangeRate), 
            input  vdLCExchangeRateScale (idLCExchangeRateScale), 
            input  vdCCExchangeRate (idCCExchangeRate), 
            input  vdCCExchangeRateScale (idCCExchangeRateScale), 
            input  if ilIsDelayedTax then 'Del Tax':U else 'Susp Tax':U (icPostingLineTextPre), 
            input  tPosting.PostingDate (itExchangeRateDate), 
            input  icCurrencyCode (icCurrencyCode), 
            output viPostingLineId (oiLCPostingLine_ID), 
            output viPostingLineId (oiCCPostingLine_ID), 
            output viFcReturnSuper (oiReturnStatus)) in BPosting>        
        if viFcReturnSuper <> 0
        then assign viLocalReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0 
        then Leave SUSPDELBLOCK.
    end.
END. /* end SUSPDELBLOCK */

assign oiReturnStatus = viLocalReturnStatus.