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
icPostingTcRowid | input | character | |
itPaymentTaxPointDate | input | date | |
itInvoiceTaxPointDate | input | date | |
icPostingLineText | input | character | |
icCurrencyCode | input | character | |
icSuspDelTaxGLCode | input | character | |
icSuspDelTaxDivisionCode | input | character | |
icNormalTaxGLCode | input | character | |
icNormalTaxDivisionCode | input | character | |
icPostingVatInOut | input | character | |
icPostingVatCode | input | character | |
icPostingVatDomain | input | character | |
idExchangeRate | input | decimal | |
idExchangeRateScale | input | decimal | |
icExchangeRateType | input | character | |
icTransactionType | input | character | |
icTaxTransactionType | input | character | |
idBaseDebitTC | input | decimal | |
idBaseCreditTC | input | decimal | |
idBaseDebitLC | input | decimal | |
idBaseCreditLC | input | decimal | |
idBaseDebitCC | input | decimal | |
idBaseCreditCC | input | decimal | |
idVatDebitTC | input | decimal | |
idVatCreditTC | input | decimal | |
idVatDebitLC | input | decimal | |
idVatCreditLC | input | decimal | |
idVatDebitCC | input | decimal | |
idVatCreditCC | input | decimal | |
icFromTaxZone | input | character | |
icToTaxZone | input | character | |
icTaxEnv | input | character | |
ilIsTaxable | input | logical | |
icTaxClass | input | character | |
icTaxUsage | input | character | |
icTaxType | input | character | |
ilIsRevCharge | input | logical | |
iiTaxAddressID | input | integer | |
icTaxIDFederal | input | character | |
icTaxIDState | input | character | |
icTaxIDMisc1 | input | character | |
icTaxIDMisc2 | input | character | |
icTaxIDMisc3 | input | character | |
iiOwnAddressID | input | integer | |
icOwnTaxIDFedral | input | character | |
icOwnTaxIDState | input | character | |
icOwnTaxIDMisc1 | input | character | |
icOwnTaxIDMisc2 | input | character | |
icOwnTaxIDMisc3 | input | character | |
iiOwnTaxDecl | input | integer | |
itInvoicePostingDate | input | date | |
icTaxRateType | input | character | |
ilIsDelayedTax | input | logical | |
itInvoiceExchangeRateDate | input | date | If this date is filled, then it wil be the date to be used to calculate the exchange rate |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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.