project QadFinancials > class BDDocument > method AdditionalUpdatesPostingXrefDISuspTax
Description
when you change status of a 'Draft' payment to paid, then the posting lines to balance the suspended tax posting lines to normal tax posting lines must be created.
Parameters
icPostingRowId | input | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program5/bddocument.p)
if (tDDocument.tc_Status = 'C':U and
(t_iDDocument.DDocumentStatus = {&DOCUMENTSTATUS-ACCEPT} or
t_iDDocument.DDocumentStatus = {&DOCUMENTSTATUS-DISCONT} or
t_iDDocument.DDocumentStatus = {&DOCUMENTSTATUS-INCASSO} or
t_iDDocument.DDocumentStatus = {&DOCUMENTSTATUS-INIT} or
t_iDDocument.DDocumentStatus = {&DOCUMENTSTATUS-PORTFOLIO}) and
(tDDocument.DDocumentStatus = {&DOCUMENTSTATUS-PAID} or
tDDocument.DDocumentStatus = {&DOCUMENTSTATUS-PAIDCON})) OR
(tDDocument.tc_Status = 'N':U and
(tDDocument.DDocumentStatus = {&DOCUMENTSTATUS-PAID} or
tDDocument.DDocumentStatus = {&DOCUMENTSTATUS-PAIDCON}))
then do:
if tqCompanyPropertyBySuspDelTax.tcCompanyPropertySuspTax <> {&SUSPDELAYTAX-FIRSTPAY}
then do:
<Q-4 run DDocumentInvoiceXrefByStatus (all) (Read) (NoCache)
(input ?, (CompanyId)
input tDDocumentInvoiceXref.DInvoice_ID, (DIvnoiceId)
input {&DOCUMENTSTATUS-PAID} + ',':U + {&DOCUMENTSTATUS-PAIDCON}, (DocumentStatus)
input ?, (DocumentType)
output dataset tqDDocumentInvoiceXrefByStatus) in BDDocument >
assign vdPaidTotalAmount = 0.
for each tqDDocumentInvoiceXrefByStatus where
(tqDDocumentInvoiceXrefByStatus.tcDDocumentStatus = {&DOCUMENTSTATUS-PAID} or
tqDDocumentInvoiceXrefByStatus.tcDDocumentStatus = {&DOCUMENTSTATUS-PAIDCON}) and
tqDDocumentInvoiceXrefByStatus.tiDInvoice_ID = tDDocumentInvoiceXref.DInvoice_ID:
assign vdPaidTotalAmount = vdPaidTotalAmount + abs(tqDDocumentInvoiceXrefByStatus.tdDDocumentInvoiceXrefAlloTC).
end.
end.
if tqCompanyPropertyBySuspDelTax.tcCompanyPropertySuspTax = {&SUSPDELAYTAX-FIRSTPAY}
then do:
/* check if no movement already exist, because at first payment only one moment can be made */
assign vdSuspTaxAmountTC = 0.
if not can-find (first tMoveSuspTaxDDoc where
tMoveSuspTaxDDoc.tiDInvoiceId = tqDInvoiceVatForSuspTax.tiDInvoice_ID and
tMoveSuspTaxDDoc.tiDInvoiceVatId = tqDInvoiceVatForSuspTax.tiDInvoiceVat_ID and
tMoveSuspTaxDDoc.tdSuspTaxAmountTC = tqDInvoiceVatForSuspTax.tdDInvoiceVatSuspDelTaxAmtTC)
then assign vdSuspTaxAmountTC = tqDInvoiceVatForSuspTax.tdDInvoiceVatSuspDelTaxAmtTC.
end.
else if tqCompanyPropertyBySuspDelTax.tcCompanyPropertySuspTax = {&SUSPDELAYTAX-LASTPAY} and
(((tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-INVOICE} or
tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-INVOICECORRECTION}) and
tqDInvoiceVatForSuspTax.tdDInvoiceOriginalDebitTC = vdPaidTotalAmount + tDDocumentInvoiceXref.DDocumentInvoiceXrefAlloTC) OR
((tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-CREDITNOTE} or
tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION}) and
tqDInvoiceVatForSuspTax.tdDInvoiceOriginalCreditTC = vdPaidTotalAmount + tDDocumentInvoiceXref.DDocumentInvoiceXrefAlloTC))
then assign vdSuspTaxAmountTC = tqDInvoiceVatForSuspTax.tdDInvoiceVatSuspDelTaxAmtTC.
else if tqCompanyPropertyBySuspDelTax.tcCompanyPropertySuspTax = {&SUSPDELAYTAX-PROPORPAY}
then assign vdSuspTaxAmountTC = if (((tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-INVOICE} or
tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-INVOICECORRECTION}) and
tqDInvoiceVatForSuspTax.tdDInvoiceOriginalDebitTC = vdPaidTotalAmount + tDDocumentInvoiceXref.DDocumentInvoiceXrefAlloTC) OR
((tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-CREDITNOTE} or
tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION}) and
tqDInvoiceVatForSuspTax.tdDInvoiceOriginalCreditTC= vdPaidTotalAmount + tDDocumentInvoiceXref.DDocumentInvoiceXrefAlloTC))
then tqDInvoiceVatForSuspTax.tdDInvoiceVatSuspDelTaxAmtTC
else if (tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-INVOICE} or
tqDInvoiceVatForSuspTax.tcDInvoiceType = {&INVOICETYPE-INVOICECORRECTION})
then (tDDocumentInvoiceXref.DDocumentInvoiceXrefAlloTC / tqDInvoiceVatForSuspTax.tdDInvoiceOriginalDebitTC) * tqDInvoiceVatForSuspTax.tdDInvoiceVatSuspDelTaxAmtTC
else (tDDocumentInvoiceXref.DDocumentInvoiceXrefAlloTC / tqDInvoiceVatForSuspTax.tdDInvoiceOriginalCreditTC) * tqDInvoiceVatForSuspTax.tdDInvoiceVatSuspDelTaxAmtTC
vdSuspTaxAmountTC = <M-3 RoundAmount
(input vdSuspTaxAmountTC (idUnroundedAmount),
input 0 (iiCurrencyID),
input tDDocumentInvoiceXref.tcCurrencyCode (icCurrencyCode)) in business>.
else assign vdSuspTaxAmountTC = 0.
if vdSuspTaxAmountTC <> 0
then do:
create tMoveSuspTaxDDoc.
assign tMoveSuspTaxDDoc.tcPostingRowId = icPostingRowId
tMoveSuspTaxDDoc.tiDInvoiceId = tqDInvoiceVatForSuspTax.tiDInvoice_ID
tMoveSuspTaxDDoc.tdSuspTaxAmountTC = vdSuspTaxAmountTC
tMoveSuspTaxDDoc.ttPaymentTaxPointDate = tDDocument.ttPostingDate
tMoveSuspTaxDDoc.tiDInvoiceVatId = tqDInvoiceVatForSuspTax.tiDInvoiceVat_ID.
end.
end.