project QadFinancials > class TSetStatutoryCurrency > method SetStatutoryCurrencyBasedOnTCDInvoice

Description

Assign the Statutory Currency Amounts based on the amounts in TC and the exchange Rate between TC and the newly entered SC.
Split into detail method, because main method would get to big.


Parameters


ocErrorMessageoutputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method TSetStatutoryCurrency.SetStatutoryCurrencyBasedOnTC


program code (program1/tsetstatutorycurrency.p)

assign oiReturnStatus      = -98
       viLocalReturnStatus = 0.
   
STATCURRDETBLOCK:
do on error undo, return:
    /* DInvoice */
    for each Company  of Domains,
        each DInvoice of Company exclusive-lock Transaction:

        /* Get Exchange Rates */
        <M-28 run GetExchangeRate
           (input  DInvoice.DInvoiceCurrency_ID (iiFromCurrencyID), 
            input  viNewSCID (iiToCurrencyID), 
            input  viSCExchangeRateTypeID (iiExchangeRateTypeID), 
            input  DInvoice.DInvoicePostingDate (itDate), 
            input  viExchangeRateSharedSetID (iiSharedSetID), 
            output vdRate (odExchangeRate), 
            output vdScale (odExchangeRateScale), 
            output ocErrorMessage (ocErrorMessage), 
            output viFcReturnSuper (oiReturnStatus)) in TSetStatutoryCurrency>
        if viFcReturnSuper <> 0
        then assign viLocalReturnStatus = viFcReturnSuper.
        if viFcReturnSuper < 0
        then leave STATCURRDETBLOCK.
        
        assign DInvoice.DInvoiceBalanceCC        = <M-29 RoundSCAmount  (input  DInvoice.DInvoiceBalanceTC        * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceBalanceCreditCC  = <M-30 RoundSCAmount  (input  DInvoice.DInvoiceBalanceCreditTC  * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceBalanceDebitCC   = <M-31 RoundSCAmount  (input  DInvoice.DInvoiceBalanceDebitTC   * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceNonDiscAmtCC     = <M-32 RoundSCAmount  (input  DInvoice.DInvoiceNonDiscAmtTC     * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceOriginalCreditCC = <M-33 RoundSCAmount  (input  DInvoice.DInvoiceOriginalCreditTC * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceOriginalDebitCC  = <M-34 RoundSCAmount  (input  DInvoice.DInvoiceOriginalDebitTC  * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceVatBaseCreditCC  = <M-35 RoundSCAmount  (input  DInvoice.DInvoiceVatBaseCreditTC  * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceVatBaseDebitCC   = <M-36 RoundSCAmount  (input  DInvoice.DInvoiceVatBaseDebitTC   * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceVatCreditCC      = <M-37 RoundSCAmount  (input  DInvoice.DInvoiceVatCreditTC      * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceVatDebitCC       = <M-38 RoundSCAmount  (input  DInvoice.DInvoiceVatDebitTC       * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
               DInvoice.DInvoiceCCRate           = vdRate
               DInvoice.DInvoiceCCScale          = vdScale.

        /* DInvoiceStage */
        for each DInvoiceStage of DInvoice exclusive-lock: 
            assign DInvoiceStage.DInvoiceStageAmountCC = <M-39 RoundSCAmount  (input  DInvoiceStage.DInvoiceStageAmountTC * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>.
        end. /* DInvoiceStage */ 

        /* DInvoiceVat */
        for each DInvoiceVat of DInvoice exclusive-lock: 
            assign DInvoiceVat.DInvoiceVatVatBaseCreditCC = <M-40 RoundSCAmount  (input  DInvoiceVat.DInvoiceVatVatBaseCreditTC * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
                   DInvoiceVat.DInvoiceVatVatBaseDebitCC  = <M-41 RoundSCAmount  (input  DInvoiceVat.DInvoiceVatVatBaseDebitTC  * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
                   DInvoiceVat.DInvoiceVatVatCreditCC     = <M-42 RoundSCAmount  (input  DInvoiceVat.DInvoiceVatVatCreditTC     * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>
                   DInvoiceVat.DInvoiceVatVatDebitCC      = <M-43 RoundSCAmount  (input  DInvoiceVat.DInvoiceVatVatDebitTC      * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>.
        end. /* DInvoiceVat */ 
        
        /* DInvoiceDeduction */       
        for each DInvoiceDeduction of DInvoice exclusive-lock:
            assign DInvoiceDeduction.DInvoiceDeductionCC = <M-2 RoundSCAmount  (input  DInvoiceDeduction.DInvoiceDeductionTC * vdRate * vdScale (idUnroundedAmount)) in TSetStatutoryCurrency>.
        end. /* DInvoiceDeduction */
        
    end. /* DInvoice */ 
end. /* STATCURRDETBLOCK */

assign oiReturnStatus = viLocalReturnStatus.