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


icPostingRowIdinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BDDocument.AdditionalUpdatesPostingXrefDI


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.