project QadFinancials > class BDInvoice > method StdMaintainTTCalcAmounts

Description

calculate the lc, cc and balance amounts


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BDInvoice.StdMaintainTT


program code (program7/bdinvoice.p)

    
    if tApiDInvoice.DInvoiceCurrency_ID = viCompanyLCId or
       tApiDInvoice.tcCurrencyCode      = vcCompanyLC  
    then assign tApiDInvoice.DInvoiceExchangeRate     = 1
                tApiDInvoice.DInvoiceRateScale        = 1  
                tApiDInvoice.DInvoiceOriginalDebitLC  = tApiDInvoice.DInvoiceOriginalDebitTC
                tApiDInvoice.DInvoiceOriginalCreditLC = tApiDInvoice.DInvoiceOriginalCreditTC.
    else 
    if (tApiDInvoice.DInvoiceOriginalCreditLC = 0 or tApiDInvoice.DInvoiceOriginalCreditLC = ?) and
       (tApiDInvoice.DInvoiceOriginalDebitLC  = 0 or tApiDInvoice.DInvoiceOriginalDebitLC  = ?)
    then do :
        assign vhFcComponent = ?.  
        if  tApiDInvoice.DInvoiceExchangeRate = 0 or 
            tApiDInvoice.DInvoiceExchangeRate = ?
        then do :         
            <M-42 run GetExRateByEntityInvoiceFlag
               (input  tApiDInvoice.DInvoicePostingDate (itDInvoicePostingDate), 
                input  tApiDInvoice.DInvoiceTaxPointDate (itDInvoiceTaxPointDate), 
                input  tApiDInvoice.DInvoiceCurrency_ID (iiFromCurrencyId), 
                input  tApiDInvoice.tcCurrencyCode (icFromCurrencyCode), 
                input  viCompanyLCId (iiToCurrencyId), 
                input  ? (icToCurrencyCode), 
                input  0 (iiExchangeRateTypeId), 
                input  {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateTypeCode), 
                output tApiDInvoice.DInvoiceExchangeRate (odDInvoiceExchangeRate), 
                output tApiDInvoice.DInvoiceRateScale (odDInvoiceRateScale), 
                output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
        end.
        if viFcReturnSuper < 0 or 
          (viFcReturnSuper > 0 and 
           oiReturnStatus = 0)
        then assign oiReturnStatus = viFcReturnSuper.
        assign tApiDInvoice.DInvoiceOriginalDebitLC  = <M-9 RoundAmount
                                                          (input  tApiDInvoice.DInvoiceOriginalDebitTC  * tApiDInvoice.DInvoiceExchangeRate * tApiDInvoice.DInvoiceRateScale (idUnroundedAmount), 
                                                           input  viCompanyLCId (iiCurrencyID), 
                                                           input  vcCompanyLC (icCurrencyCode)) in BApplicationProperty>
               tApiDInvoice.DInvoiceOriginalCreditLC = <M-10 RoundAmount
                                                          (input  tApiDInvoice.DInvoiceOriginalCreditTC * tApiDInvoice.DInvoiceExchangeRate * tApiDInvoice.DInvoiceRateScale (idUnroundedAmount), 
                                                           input  viCompanyLCId (iiCurrencyID), 
                                                           input  vcCompanyLC (icCurrencyCode)) in BApplicationProperty>.
    end.
    else do:
        if ((tApiDInvoice.DInvoiceOriginalDebitLC  <> 0 and tApiDInvoice.DInvoiceOriginalDebitLC  <> ?) or
            (tApiDInvoice.DInvoiceOriginalCreditLC <> 0 and tApiDInvoice.DInvoiceOriginalCreditLC <> ?)) and
           ((tApiDInvoice.DInvoiceOriginalDebitTC  <> 0 and tApiDInvoice.DInvoiceOriginalDebitTC  <> ?) or 
            (tApiDInvoice.DInvoiceOriginalCreditTC <> 0 and tApiDInvoice.DInvoiceOriginalCreditTC <> ?))
        then assign tApiDInvoice.DInvoiceRateScale    = 1
                    tApiDInvoice.DInvoiceExchangeRate = 
                     ((if tApiDInvoice.DInvoiceOriginalDebitLC  = ? then 0 else tApiDInvoice.DInvoiceOriginalDebitLC) - 
                      (if tApiDInvoice.DInvoiceOriginalCreditLC = ? then 0 else tApiDInvoice.DInvoiceOriginalCreditLC)) 
                     /
                     ((if tApiDInvoice.DInvoiceOriginalDebitTC  = ? then 0 else tApiDInvoice.DInvoiceOriginalDebitTC) - 
                      (if tApiDInvoice.DInvoiceOriginalCreditTC = ? then 0 else tApiDInvoice.DInvoiceOriginalCreditTC)) no-error.
        
    end.
    if tApiDInvoice.DInvoiceRateScale = 0 then assign tApiDInvoice.DInvoiceRateScale = 1.
    

    if viCompanyCCId <> 0 and viCompanyCCId <> ?
    then do:
        if tApiDInvoice.tcCurrencyCode = vcCompanyCC
        then assign tApiDInvoice.DInvoiceOriginalDebitCC  = tApiDInvoice.DInvoiceOriginalDebitTC
                    tApiDInvoice.DInvoiceOriginalCreditCC = tApiDInvoice.DInvoiceOriginalCreditTC
                    tApiDInvoice.DInvoiceCCRate           = 1
                    tApiDInvoice.DInvoiceCCScale          = 1.
        else if vlDomainIsStatutory = false
        then assign tApiDInvoice.DInvoiceOriginalDebitCC  = tApiDInvoice.DInvoiceOriginalDebitLC
                    tApiDInvoice.DInvoiceOriginalCreditCC = tApiDInvoice.DInvoiceOriginalCreditLC
                    tApiDInvoice.DInvoiceCCRate           = tApiDInvoice.DInvoiceExchangeRate
                    tApiDinvoice.DInvoiceCCSCale          = tApiDInvoice.DInvoiceRateScale.
        else do:                
             <M-79 run GetExRateByEntityInvoiceFlag
                (input  tApiDInvoice.DInvoicePostingDate (itDInvoicePostingDate), 
                 input  tApiDInvoice.DInvoiceTaxPointDate (itDInvoiceTaxPointDate), 
                 input  0 (iiFromCurrencyId), 
                 input  tApiDInvoice.tcCurrencyCode (icFromCurrencyCode), 
                 input  viCompanyCCId (iiToCurrencyId), 
                 input  vcCompanyCC (icToCurrencyCode), 
                 input  0 (iiExchangeRateTypeId), 
                 input  {&EXCHANGERATETYPE-STATUTORY} (icExchangeRateTypeCode), 
                 output vdDInvoiceExchangeRate (odDInvoiceExchangeRate), 
                 output vdDInvoiceExchangeRateScale (odDInvoiceRateScale), 
                 output viFcReturnSuper (oiReturnStatus)) in BDInvoice>             
            if viFcReturnSuper < 0 or 
              (viFcReturnSuper > 0 and 
               oiReturnStatus = 0)
            then assign oiReturnStatus = viFcReturnSuper.  

            /* Check if the invoice is a correction invoice from the operationals. */
            <M-28 run CheckExternalInvoiceApiCC
               (input  tApiDInvoice.tc_Rowid (icApiInvoiceRowId), 
                input-output vdDInvoiceExchangeRate (bdExchangeRate), 
                input-output vdDInvoiceExchangeRateScale (bdRateScale), 
                output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
                
            if viFcReturnSuper < 0 or 
              (viFcReturnSuper > 0 and 
               oiReturnStatus = 0)
            then assign oiReturnStatus = viFcReturnSuper. 
              
              
            assign tApiDInvoice.DInvoiceOriginalDebitCC  = <M-11 RoundAmount
                                                              (input  tApiDInvoice.DInvoiceOriginalDebitTC * vdDInvoiceExchangeRate * vdDInvoiceExchangeRateScale (idUnroundedAmount), 
                                                               input  viCompanyCCId (iiCurrencyID), 
                                                               input  vcCompanyCC (icCurrencyCode)) in business>
                   tApiDInvoice.DInvoiceOriginalCreditCC = <M-12 RoundAmount
                                                              (input  tApiDInvoice.DInvoiceOriginalCreditTC * vdDInvoiceExchangeRate * vdDInvoiceExchangeRateScale (idUnroundedAmount), 
                                                               input  viCompanyCCId (iiCurrencyID), 
                                                               input  vcCompanyCC (icCurrencyCode)) in business>
                   tApiDInvoice.DInvoiceCCRate           = vdDInvoiceExchangeRate 
                   tApiDinvoice.DInvoiceCCSCale          = vdDInvoiceExchangeRateScale .
        end.
    end.

    /* fill balance fields */
    assign tApiDInvoice.DInvoiceBalanceDebitTC  = tApiDInvoice.DInvoiceBalanceDebitTC  + tApiDInvoice.DInvoiceOriginalDebitTC
           tApiDInvoice.DInvoiceBalanceDebitLC  = tApiDInvoice.DInvoiceBalanceDebitLC  + tApiDInvoice.DInvoiceOriginalDebitLC
           tApiDInvoice.DInvoiceBalanceDebitCC  = tApiDInvoice.DInvoiceBalanceDebitCC  + tApiDInvoice.DInvoiceOriginalDebitCC
           tApiDInvoice.DInvoiceBalanceCreditTC = tApiDInvoice.DInvoiceBalanceCreditTC + tApiDInvoice.DInvoiceOriginalCreditTC
           tApiDInvoice.DInvoiceBalanceCreditLC = tApiDInvoice.DInvoiceBalanceCreditLC + tApiDInvoice.DInvoiceOriginalCreditLC
           tApiDInvoice.DInvoiceBalanceCreditCC = tApiDInvoice.DInvoiceBalanceCreditCC + tApiDInvoice.DInvoiceOriginalCreditCC.

    assign tApiDInvoice.DInvoiceBalanceTC = tApiDInvoice.DInvoiceBalanceDebitTC - tApiDInvoice.DInvoiceBalanceCreditTC
           tApiDInvoice.DInvoiceBalanceLC = tApiDInvoice.DInvoiceBalanceDebitLC - tApiDInvoice.DInvoiceBalanceCreditLC
           tApiDInvoice.DInvoiceBalanceCC = tApiDInvoice.DInvoiceBalanceDebitCC - tApiDInvoice.DInvoiceBalanceCreditCC
           tApiDInvoice.DInvoiceIsOpen    = (tApiDInvoice.DInvoiceBalanceTC <> 0 or tApiDInvoice.DInvoiceBalanceLC <> 0 or tApiDInvoice.DInvoiceBalanceCC <> 0)
           tApiDInvoice.tc_status         = (if tApiDInvoice.tc_Status = "":U then "C":U else tApiDInvoice.tc_Status).