project QadFinancials > class BQBudgetActual > method AdditonalUpdatesDeleteSub

Description

AdditonalUpdatesDeleteSub; Submethod of AdditionalUpdatesDelete because it could not haold all the data


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BQBudgetActual.AdditonalUpdatesDelete


program code (program6/bqbudgetactual.p)

assign viBudgetLinkAcc    = 1
           viBudgetLinkAccDet = 1.
    
    <Q-18 run CurrencyByCode (all) (Read) (NoCache)
          (input ?, (CurrencyCode)
           output dataset tqCurrencyByCode) in BCurrency >
    <Q-24 run PostingLineByLineID  (Start) in BPosting >
    <Q-28 run BudgetFDSByBudgetIDPropAlloc  (Start) in BBudget >
                                     
    /* ================================================================================= */
    /* Go through all tBudgetCheckInfoWBSQBA-record (returned by the resolving)          */
    /* Note that the currency of the Q-record amy differ from the Budget-currency        */
    /* A by on Jrnls is added to improve the performance on db-reads using queries       */
    /* ================================================================================= */
    for each tQBudgetLinkActual where 
             tQBudgetLinkActual.tc_Status = "D":U ,
        each tBudgetCheckInfoQBA where  
             tBudgetCheckInfoQBA.tcParentTcRowid = string(rowid(tQBudgetLinkActual)) ,
        each tBudgetCheckInfoWBSQBA where 
             tBudgetCheckInfoWBSQBA.tiBudgetCheckInfoID = tBudgetCheckInfoQBA.tiBudgetCheckInfoID
        break by tQBudgetLinkActual.Journal_ID :
        
        /* ======================================= */
        /* State the QTY and TC (Sales of Cost)    */
        /* ======================================= */
        
        /* ======================================= */
        /* Create the new BudgetLinkActual-records */
        /* ======================================= */
        create tNewBudgetLinkActualFromBQ.
        assign tNewBudgetLinkActualFromBQ.Budget_ID                   = tBudgetCheckInfoWBSQBA.tiBudgetID
               tNewBudgetLinkActualFromBQ.BudgetPeriod_ID             = tBudgetCheckInfoWBSQBA.tiBudgetPeriodID
               tNewBudgetLinkActualFromBQ.BudgetWBS_ID                = tBudgetCheckInfoWBSQBA.tiBudgetWBSID
               tNewBudgetLinkActualFromBQ.PostingLine_ID              = tQBudgetLinkActual.PostingLine_ID
               tNewBudgetLinkActualFromBQ.Company_ID                  = tQBudgetLinkActual.Company_ID
               tNewBudgetLinkActualFromBQ.Journal_ID                  = tQBudgetLinkActual.Journal_ID
               tNewBudgetLinkActualFromBQ.Layer_ID                    = tQBudgetLinkActual.Layer_ID
               tNewBudgetLinkActualFromBQ.LayerTypeCode               = tQBudgetLinkActual.LayerTypeCode
               tNewBudgetLinkActualFromBQ.BudgetLinkActualDate        = tQBudgetLinkActual.BudgetLinkActualDate
               tNewBudgetLinkActualFromBQ.BudgetLinkActualInfo        = tQBudgetLinkActual.BudgetLinkActualInfo
               tNewBudgetLinkActualFromBQ.BudgetLinkActualDivCode     = tQBudgetLinkActual.BudgetLinkActualDivCode
               tNewBudgetLinkActualFromBQ.BudgetLinkActualGLCode      = tQBudgetLinkActual.BudgetLinkActualGLCode
               tNewBudgetLinkActualFromBQ.BudgetLinkActualPrjCode     = tQBudgetLinkActual.BudgetLinkActualPrjCode
               tNewBudgetLinkActualFromBQ.BudgetLinkActualCCCode      = tQBudgetLinkActual.BudgetLinkActualCCCode
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSafStruct   = tQBudgetLinkActual.BudgetLinkActualSafStruct
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf1Code    = tQBudgetLinkActual.budgetlinkactualSaf1Code
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf2Code    = tQBudgetLinkActual.budgetlinkactualSaf2Code
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf3Code    = tQBudgetLinkActual.budgetlinkactualSaf3Code
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf4Code    = tQBudgetLinkActual.BudgetLinkActualSaf4Code
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf5Code    = tQBudgetLinkActual.budgetlinkactualSaf5Code
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf1Concpt = tQBudgetLinkActual.BudgetLinkActualSaf1Concpt
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf2Concpt = tQBudgetLinkActual.BudgetLinkActualSaf2Concpt
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf3Concpt = tQBudgetLinkActual.BudgetLinkActualSaf3Concpt
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf4Concpt = tQBudgetLinkActual.BudgetLinkActualSaf4Concpt
               tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf5Concpt = tQBudgetLinkActual.BudgetLinkActualSaf5Concpt
               tNewBudgetLinkActualFromBQ.tc_Rowid                    = string(rowid(tBudgetCheckInfoWBSQBA)).  

        /* ======================================= */
        /* Create the new BudgetLinkAcc-   records */
        /* ======================================= */
         
            <Q-22 run PostingLineByLineID (all) (Read) (NoCache)
               (input ?, (CompanyId)
                input tQBudgetLinkActual.PostingLine_ID, (PostingLine_ID)
                output dataset tqPostingLineByLineID) in BPosting>
            find first tqPostingLineByLineID where 
                       tqPostingLineByLineID.tipostingline_id = tQBudgetLinkActual.PostingLine_ID  
                       no-error.
            if available tqPostingLineByLineID and tBudgetCheckInfoWBSQBA.tlBudgetIsUsedForAllocation
            then do:
               
                create tApiBudgetLinkAccFromBQ.
                assign tApiBudgetLinkAccFromBQ.BudgetLinkAcc_ID = viBudgetLinkAcc
                       tApiBudgetLinkAccFromBQ.Budget_ID        = tBudgetCheckInfoWBSQBA.tiBudgetID
                       tApiBudgetLinkAccFromBQ.BudgetWBS_ID     = tBudgetCheckInfoWBSQBA.tiBudgetWBSID
                       tApiBudgetLinkAccFromBQ.Layer_ID         = tQBudgetLinkActual.Layer_ID
                       tApiBudgetLinkAccFromBQ.tc_Rowid         = string(rowid(tBudgetCheckInfoWBSQBA))
                       tApiBudgetLinkAccFromBQ.BudgetLinkAccQTY = tqPostingLineByLineID.tdPostingLineQTY
                       tApiBudgetLinkAccFromBQ.Period_ID        = tqPostingLineByLineID.tiPeriod_ID
                       viBudgetLinkAcc                          = viBudgetLinkAcc + 1. 
                 
                /* Initial posting creation */
                if tQBudgetLinkActual.BudgetLinkActualTC = tqPostingLineByLineID.tdPostingLineDebitTC - tqPostingLineByLineID.tdPostingLineCreditTC
                then do:
                    assign tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditLC = tqPostingLineByLineID.tdPostingLineCreditLC
                           tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitLC  = tqPostingLineByLineID.tdPostingLineDebitLC
                           tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditCC = tqPostingLineByLineID.tdPostingLineCreditCC
                           tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitCC  = tqPostingLineByLineID.tdPostingLineDebitCC.
                 end.
                 /* Update or posting delete */
                 else do:
                     if tQBudgetLinkActual.BudgetLinkActualTC < 0  
                     then assign tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditLC = 0
                                 tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitLC  = tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineExchangeRate * tqPostingLineByLineID.tdPostingLineRateScale 
                                 tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditCC = 0
                                 tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitCC  = tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineCCRate * tqPostingLineByLineID.tdPostingLineCCScale.
                     else assign tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitLC  = 0
                                 tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditLC = - tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineExchangeRate * tqPostingLineByLineID.tdPostingLineRateScale  
                                 tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitCC  = 0 
                                 tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditCC = - tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineCCRate * tqPostingLineByLineID.tdPostingLineCCScale.
                 end.
            end.

        /* ========================================= */
        /* Create the new BudgetLinkAccDet - records */
        /* ========================================= */
        if tBudgetCheckInfoWBSQBA.tlBudgetIsUsedForAllocation
        then do:
            /* ============================================================= */
            /* Find FDS level of the budget used for proportional allocation */
            /* ============================================================= */
            <Q-26 run BudgetFDSByBudgetIDPropAlloc (all) (Read) (NoCache)
          (input tBudgetCheckInfoWBSQBA.tiBudgetID, (BudgetID)
           output dataset tqBudgetFDSByBudgetIDPropAlloc) in BBudget >
            
            find first tqBudgetFDSByBudgetIDPropAlloc no-lock no-error.
            if available tqBudgetFDSByBudgetIDPropAlloc
            then do:
                create tApiBudgetLinkAccDetFromBQ.
                assign tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDet_ID = viBudgetLinkAccDet
                       tApiBudgetLinkAccDetFromBQ.Budget_ID           = tBudgetCheckInfoWBSQBA.tiBudgetID
                       tApiBudgetLinkAccDetFromBQ.BudgetWBS_ID        = tBudgetCheckInfoWBSQBA.tiBudgetWBSID
                       tApiBudgetLinkAccdetFromBQ.Layer_ID            = tQBudgetLinkActual.Layer_ID
                       tApiBudgetLinkAccDetFromBQ.tc_Rowid            = string(rowid(tBudgetCheckInfoWBSQBA)).
                assign viBudgetLinkAccDet = viBudgetLinkAccDet + 1.

                /* store values to be added to the summary record */
                if available tqPostingLineByLineID
                then assign tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDetCreditLC = tqPostingLineByLineID.tdPostingLineCreditLC
                            tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDetDebitLC  = tqPostingLineByLineID.tdPostingLineDebitLC
                            tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDetQTY      = tqPostingLineByLineID.tdPostingLineQTY
                            tApiBudgetLinkAccDetFromBQ.Period_ID                = tqPostingLineByLineID.tiPeriod_ID.

                /* get relavant FDS element by which value is cumulated */
                assign tApiBudgetLinkAccDetFromBQ.tiBudgetFDS_ID   = tqBudgetFDSByBudgetIDPropAlloc.tiBudgetFDS_ID
                       tApiBudgetLinkAccDetFromBQ.tcBudgetFDSType  = tqBudgetFDSByBudgetIDPropAlloc.tcBudgetFDSType
                       tApiBudgetLinkAccDetFromBQ.Division_ID      = tqPostingLineByLineID.tiDivision_ID
                       tApiBudgetLinkAccDetFromBQ.CostCentre_ID    = tqPostingLineByLineID.tiCostCentre_ID
                       tApiBudgetLinkAccDetFromBQ.Project_ID       = tqPostingLineByLineID.tiProject_ID
                       tApiBudgetLinkAccDetFromBQ.tiSafConcept1_ID = tBudgetCheckInfoQBA.tiSafConcept1ID
                       tApiBudgetLinkAccDetFromBQ.tiSafConcept2_ID = tBudgetCheckInfoQBA.tiSafConcept2ID
                       tApiBudgetLinkAccDetFromBQ.tiSafConcept3_ID = tBudgetCheckInfoQBA.tiSafConcept3ID
                       tApiBudgetLinkAccDetFromBQ.tiSafConcept4_ID = tBudgetCheckInfoQBA.tiSafConcept4ID
                       tApiBudgetLinkAccDetFromBQ.tiSafConcept5_ID = tBudgetCheckInfoQBA.tiSafConcept5ID
                       tApiBudgetLinkAccDetFromBQ.tcSaf1_Code      = tBudgetCheckInfoQBA.tcSaf1Code
                       tApiBudgetLinkAccDetFromBQ.tcSaf2_Code      = tBudgetCheckInfoQBA.tcSaf2Code
                       tApiBudgetLinkAccDetFromBQ.tcSaf3_Code      = tBudgetCheckInfoQBA.tcSaf3Code
                       tApiBudgetLinkAccDetFromBQ.tcSaf4_Code      = tBudgetCheckInfoQBA.tcSaf4Code
                       tApiBudgetLinkAccDetFromBQ.tcSaf5_Code      = tBudgetCheckInfoQBA.tcSaf5Code.
            end.
        end.

        /* ======================================= */
        /* State the QTY and TC (Sales of Cost)    */
        /* ======================================= */
        case tQBudgetLinkActual.JournalTypeCode  :
            when {&JOURNALTYPE-CREDITORADJUSTMENT} or
            when {&JOURNALTYPE-CREDITORCREDITNOTE} or
            when {&JOURNALTYPE-CREDITORINVOICE}    or
            when {&JOURNALTYPE-CREDITORPAYMENT}
            then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC          = tQBudgetLinkActual.BudgetLinkActualTC 
                        tNewBudgetLinkActualFromBQ.BudgetLinkActualQTY         = (if tQBudgetLinkActual.Unit_ID = tBudgetCheckInfoWBSQBA.tiUnitID then tQBudgetLinkActual.BudgetLinkActualQTY else 0)
                        tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC     = 0
                        tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesQTY    = 0.
            when {&JOURNALTYPE-DEBTORADJUSTMENT} or
            when {&JOURNALTYPE-DEBTORCREDITNOTE} or
            when {&JOURNALTYPE-DEBTORINVOICE}    or
            when {&JOURNALTYPE-DEBTORPAYMENT} 
            then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC          = 0
                        tNewBudgetLinkActualFromBQ.BudgetLinkActualQTY         = 0
                        tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC     = tQBudgetLinkActual.BudgetLinkActualTC  * -1
                        tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesQTY    = (if tQBudgetLinkActual.Unit_ID = tBudgetCheckInfoWBSQBA.tiUnitID then tQBudgetLinkActual.BudgetLinkActualQTY * -1 else 0).
            otherwise assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC          = tQBudgetLinkActual.BudgetLinkActualTC 
                             tNewBudgetLinkActualFromBQ.BudgetLinkActualQTY         = (if tQBudgetLinkActual.Unit_ID = tBudgetCheckInfoWBSQBA.tiUnitID then tQBudgetLinkActual.BudgetLinkActualQTY else 0)
                             tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC     = 0
                             tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesQTY    = 0.
        end case.
        
        /* ===================================== */ 
        /* Get the exchange-rate (if applicable) */
        /* ===================================== */
        if tQBudgetLinkActual.Currency_ID /* PO currency */ <> tBudgetCheckInfoWBSQBA.tiCurrencyID /* Budget-currency */ 
        then do :
            <M-39 run GetExchangeRate
               (input  ? (iiCompanyID), 
                input  tQBudgetLinkActual.Currency_ID (iiFromCurrencyID), 
                input  ? (icFromCurrencyCode), 
                input  tBudgetCheckInfoWBSQBA.tiCurrencyID (iiToCurrencyID), 
                input  ? (icToCurrencyCode), 
                input  ? (iiExchangeRateTypeID), 
                input  {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateTypeCode), 
                input  tQBudgetLinkActual.BudgetLinkActualDate (itValidityDate), 
                output vdExchangeRate (odExchangeRate), 
                output vdExchangeRateScale (odExchangeScaleFactor), 
                output viFcReturnSuper (oiReturnStatus)) in BQBudgetActual>
            if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
            if oiReturnStatus < 0 then Return.
            if vdExchangeRate <> 1
            then do :
                assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC      = tNewBudgetLinkActualFromBQ.BudgetLinkActualTC * vdExchangeRate * vdExchangeRateScale
                       tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC * vdExchangeRate * vdExchangeRateScale.
                if tBudgetCheckInfoWBSQBA.tiCurrencyID = viCompanyLCId
                then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC      = <M-30 RoundAmount
                                                                                    (input  tNewBudgetLinkActualFromBQ.BudgetLinkActualTC (idUnroundedAmount), 
                                                                                     input  viCompanyLCId (iiCurrencyID), 
                                                                                     input  '':U (icCurrencyCode)) in business>
                    /* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualTC,viCompanyLCDec) */
                            tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = <M-31 RoundAmount
                                                                                    (input  tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC (idUnroundedAmount), 
                                                                                     input  viCompanyLCId (iiCurrencyID), 
                                                                                     input  '':U (icCurrencyCode)) in business>.
                    /* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC,viCompanyLCDec). */
                else if tBudgetCheckInfoWBSQBA.tiCurrencyID = viCompanyCCId
                     then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC      = <M-32 RoundAmount
                                                                                         (input  tNewBudgetLinkActualFromBQ.BudgetLinkActualTC (idUnroundedAmount), 
                                                                                          input  viCompanyCCId (iiCurrencyID), 
                                                                                          input  '':U (icCurrencyCode)) in business> 
                    /* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualTC,viCompanyCCDec) */
                                 tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = <M-33 RoundAmount
                                                                                         (input  tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC (idUnroundedAmount), 
                                                                                          input  viCompanyCCId (iiCurrencyID), 
                                                                                          input  '':U (icCurrencyCode)) in business>.
                    /* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC,viCompanyCCDec). */
                     else do :
                        find first tqCurrencyByCode where 
                                   tqCurrencyByCode.tiCurrency_ID = tBudgetCheckInfoWBSQBA.tiCurrencyID
                                   no-lock no-error.
                        if available tqCurrencyByCode
                        then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC      = <M-34 RoundAmount
                                                                                            (input  tNewBudgetLinkActualFromBQ.BudgetLinkActualTC (idUnroundedAmount), 
                                                                                             input  tQBudgetLinkActual.Currency_ID (iiCurrencyID), 
                                                                                             input  '':U (icCurrencyCode)) in business>
                                    tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC =  <M-35 RoundAmount
                                                                                             (input  tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC (idUnroundedAmount), 
                                                                                              input  tQBudgetLinkActual.Currency_ID (iiCurrencyID), 
                                                                                              input  '':U (icCurrencyCode)) in business>.
                    end. /* if tBudgetCheckInfoWBSQBA.tiCurrencyID <> viCompanyCCId */
            end. /* if vdExchangeRate <> 1 */
        end. /* if tQBudgetLinkCommit.Currency_ID  <> tBudgetCheckInfoWBSQBA.tiCurrencyID */
        
    end. /* for each tBudgetCheckInfoQBA */
                      
    /* ============ */
    /* Stop Queries */
    /* ============ */
    <Q-23 run PostingLineByLineID  (Stop) in BPosting >
    <Q-29 run BudgetFDSByBudgetIDPropAlloc  (Stop) in BBudget >