project QadFinancials > class BBudget > method ApiCheckBudgetGetFigures

Description

This method is the submethod of ApiCheckBudget because it could not contain all the program-code.
NOTE: this method should be in the same segment as the calling method


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudget.ApiCheckBudget


program code (program8/bbudget.p)

/* =============================================== */
    /* Prerequisites :                                 */
    /*  Available records: tBudgetCheckInfoWBS         */
    /*  Existing records: tqBudgetPeriodByBudgetIDDate */
    /* =============================================== */
    
    
        
    /* =========================== */
    /* Set retun-value = default   */
    /* =========================== */
    assign oiReturnStatus = -98.
        
    /* =============================== */
    /* Get the Actuals and Commitments */
    /* =============================== */
    <Q-1 run BudgetLinkByBudgetPerWBS (all) (Read) (NoCache)
          (input ?, (BudgetLinkID)
           input tBudgetCheckInfoWBS.tiBudgetID, (BudgetID)
           input tBudgetCheckInfoWBS.tiBudgetWBSID, (BudgetWBSID)
           input ?, (FromBudgetPeriodID)
           input ?, (ToBudgetPeriodID)
           output dataset tqBudgetLinkByBudgetPerWBS) in BBudgetLink >
    if tBudgetCheckInfoWBS.tcBudgetWBSOverrunTotal = {&BUDGETOVERRUN-NONE}
    then assign tBudgetCheckInfoWBS.tdAmountActualLTE = 0
                tBudgetCheckInfoWBS.tdAmountCommitLTE = 0
                tBudgetCheckInfoWBS.tdQtyActualLTE    = 0
                tBudgetCheckInfoWBS.tdQtyCommitLTE    = 0.
    else for each tqBudgetLinkByBudgetPerWBS : 
            assign tBudgetCheckInfoWBS.tdAmountActualLTE = tBudgetCheckInfoWBS.tdAmountActualLTE + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkActualTC
                   tBudgetCheckInfoWBS.tdAmountCommitLTE = tBudgetCheckInfoWBS.tdAmountCommitLTE + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkCommitTC
                   tBudgetCheckInfoWBS.tdQtyActualLTE    = tBudgetCheckInfoWBS.tdQtyActualLTE    + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkActualQTY
                   tBudgetCheckInfoWBS.tdQtyCommitLTE    = tBudgetCheckInfoWBS.tdQtyActualLTE    + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkCommitQTY.
         end. /* for each tqBudgetLinkByBudgetPerWBS */
    if tBudgetCheckInfoWBS.tcBudgetWBSOverrunYTD = {&BUDGETOVERRUN-NONE}
    then assign tBudgetCheckInfoWBS.tdAmountActualLTD = 0
                tBudgetCheckInfoWBS.tdAmountCommitLTD = 0
                tBudgetCheckInfoWBS.tdQtyActualLTD    = 0
                tBudgetCheckInfoWBS.tdQtyCommitLTD    = 0.
    else for each tqBudgetLinkByBudgetPerWBS,
             each tqBudgetPeriodByBudgetIDDate where 
                  tqBudgetPeriodByBudgetIDDate.tiBudgetPeriod_ID  = tqBudgetLinkByBudgetPerWBS.tiBudgetPeriod_ID and 
                  tqBudgetPeriodByBudgetIDDate.tiBudgetPeriodSeq <= tBudgetCheckInfoWBS.tiBudgetPeriodSeq : 
            assign tBudgetCheckInfoWBS.tdAmountActualLTD = tBudgetCheckInfoWBS.tdAmountActualLTD + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkActualTC
                   tBudgetCheckInfoWBS.tdAmountCommitLTD = tBudgetCheckInfoWBS.tdAmountCommitLTD + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkCommitTC
                   tBudgetCheckInfoWBS.tdQtyActualLTD    = tBudgetCheckInfoWBS.tdQtyActualLTD    + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkActualQTY
                   tBudgetCheckInfoWBS.tdQtyCommitLTD    = tBudgetCheckInfoWBS.tdQtyActualLTD    + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkCommitQTY.
         end. /* for each tqBudgetLinkByBudgetPerWBS */
    if tBudgetCheckInfoWBS.tcBudgetWBSOverrunPeriod = {&BUDGETOVERRUN-NONE}
    then assign tBudgetCheckInfoWBS.tdAmountActualPeriod = 0
                tBudgetCheckInfoWBS.tdAmountCommitPeriod = 0
                tBudgetCheckInfoWBS.tdQtyActualPeriod    = 0
                tBudgetCheckInfoWBS.tdQtyCommitPeriod    = 0.
    else for each tqBudgetLinkByBudgetPerWBS where 
                  tqBudgetLinkByBudgetPerWBS.tiBudgetPeriod_ID   = tqBudgetLinkByBudgetPerWBS.tiBudgetPeriod_ID,
             each tqBudgetPeriodByBudgetIDDate where
                  tqBudgetPeriodByBudgetIDDate.tiBudgetPeriod_ID  = tqBudgetLinkByBudgetPerWBS.tiBudgetPeriod_ID and
                  tqBudgetPeriodByBudgetIDDate.tiBudgetPeriodSeq  = tBudgetCheckInfoWBS.tiBudgetPeriodSeq :
                  
                 assign tBudgetCheckInfoWBS.tdAmountActualPeriod = tBudgetCheckInfoWBS.tdAmountActualPeriod + (tqBudgetLinkByBudgetPerWBS.tdBudgetLinkActualTC - tqBudgetLinkByBudgetPerWBS.tdBudgetLinkActualSalesTC)
                        tBudgetCheckInfoWBS.tdAmountCommitPeriod = tBudgetCheckInfoWBS.tdAmountCommitPeriod + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkCommitTC
                        tBudgetCheckInfoWBS.tdQtyActualPeriod    = tBudgetCheckInfoWBS.tdQtyActualPeriod    + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkActualQTY
                        tBudgetCheckInfoWBS.tdQtyCommitPeriod    = tBudgetCheckInfoWBS.tdQtyActualPeriod    + tqBudgetLinkByBudgetPerWBS.tdBudgetLinkCommitQTY.
         end. /* for each tqBudgetLinkByBudgetPerWBS */    
    /* =============================== */
    /* Get the Budget-Figures          */
    /* =============================== */
    if (tBudgetCheckInfoWBS.tcCostCentreCode <> "":U and 
        tBudgetCheckInfoWBS.tcCostCentreCode <> ?) or
       (tBudgetCheckInfoWBS.tcProjectCode <> "":U and 
        tBudgetCheckInfoWBS.tcProjectCode <> ?) 
    then do :
        /* =================================================== */
        /* Get the Budget-Figures (Project/CostCentre budgets) */
        /* =================================================== */
        <Q-2 run BudgetVersionFigureByWBSVers (all) (Read) (NoCache)
          (input tBudgetCheckInfoWBS.tiBudgetWBSID, (BudgetWBSID)
           input tBudgetCheckInfoWBS.tiBudgetVersionID, (BudgetVersionID)
           input tBudgetCheckInfoWBS.tiBudgetID, (BudgetID)
           output dataset tqBudgetVersionFigureByWBSVers) in BBudget >
        find tqBudgetVersionFigureByWBSVers no-lock no-error.
        if not available tqBudgetVersionFigureByWBSVers
        then do :
            assign oiReturnStatus = -3
                   vcMessage = trim(substitute(#T-7'Internal error. The system is to find the budget figures for a project or cost center budget (&1).':255(569)T-7#,tBudgetCheckInfoWBS.tcBudgetCode)) + chr(10) + 
                               trim(substitute(#T-8'Budget ID: &1.':255(570)T-8#,string(tBudgetCheckInfoWBS.tiBudgetID))) + chr(10) + 
                               trim(substitute(#T-9'Budget WBS ID: &1.':255(550)T-9#,string(tBudgetCheckInfoWBS.tiBudgetWBSID))) + chr(10) + 
                               trim(substitute(#T-10'Budget version: &1.':255(571)T-10#,string(tBudgetCheckInfoWBS.tiBudgetVersionID))).
            <M-3 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  '':U (icRowid),
                     input  'QADFIN-2040':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
            if oiReturnStatus < 0 then return.
        end. /* if not available tqBudgetVersionFigureByWBSVers */
        if tBudgetCheckInfoWBS.tcBudgetWBSOverrunTotal = {&BUDGETOVERRUN-NONE}
        then assign tBudgetCheckInfoWBS.tdAmountBudgetLTD = 999999999999
                    tBudgetCheckInfoWBS.tdQtyBudgetLTD    = 999999999999.
        else do :
            assign viStartPeriodSeq = 1
                   viEndPeriodSeq   = 24
                   vhTable          = buffer tqBudgetVersionFigureByWBSVers:handle. 
            do viCounter = viEndPeriodSeq to viStartPeriodSeq by -1 :
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionFigure":U + string(viCounter,"99":U) + "TC":U)
                       tBudgetCheckInfoWBS.tdAmountBudgetLTE = tBudgetCheckInfoWBS.tdAmountBudgetLTE + vhField:buffer-value
                       vhField                               = vhTable:buffer-field("tdBudgetVersionFigure":U + string(viCounter,"99":U) + "QTY":U)
                       tBudgetCheckInfoWBS.tdQtyBudgetLTE    = tBudgetCheckInfoWBS.tdQtyBudgetLTE + vhField:buffer-value.
            end. /* do viCounter */
        end. /* if tBudgetCheckInfoWBS.tcBudgetWBSOverrunTotal <> {&BUDGETOVERRUN-NONE} */
        if tBudgetCheckInfoWBS.tcBudgetWBSOverrunYTD = {&BUDGETOVERRUN-NONE}
        then assign tBudgetCheckInfoWBS.tdAmountBudgetLTD = 999999999999
                    tBudgetCheckInfoWBS.tdQtyBudgetLTD    = 999999999999.
        else do :
            assign viStartPeriodSeq = 1
                   viEndPeriodSeq   = tBudgetCheckInfoWBS.tiBudgetPeriodSeq
                   vhTable          = buffer tqBudgetVersionFigureByWBSVers:handle.
            do viCounter = viEndPeriodSeq to viStartPeriodSeq by -1 :
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionFigure":U + string(viCounter,"99":U) + "TC":U)
                       tBudgetCheckInfoWBS.tdAmountBudgetLTD = tBudgetCheckInfoWBS.tdAmountBudgetLTD + vhField:buffer-value
                       vhField                               = vhTable:buffer-field("tdBudgetVersionFigure":U + string(viCounter,"99":U) + "QTY":U)
                       tBudgetCheckInfoWBS.tdQtyBudgetLTD    = tBudgetCheckInfoWBS.tdQtyBudgetLTD + vhField:buffer-value.
            end. /* do viCounter */
        end. /* if tBudgetCheckInfoWBS.tcBudgetWBSOverrunYTD = {&BUDGETOVERRUN-NONE} */
        if tBudgetCheckInfoWBS.tcBudgetWBSOverrunPeriod = {&BUDGETOVERRUN-NONE}
        then assign tBudgetCheckInfoWBS.tdAmountBudgetPeriod = 999999999999
                    tBudgetCheckInfoWBS.tdQtyBudgetPeriod    = 999999999999.
        else do :
            assign viStartPeriodSeq = tBudgetCheckInfoWBS.tiBudgetPeriodSeq
                   viEndPeriodSeq   = tBudgetCheckInfoWBS.tiBudgetPeriodSeq
                   vhTable          = buffer tqBudgetVersionFigureByWBSVers:handle.
            do viCounter = viEndPeriodSeq to viStartPeriodSeq by -1 :
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionFigure":U + string(viCounter,"99":U) + "TC":U)
                       tBudgetCheckInfoWBS.tdAmountBudgetPeriod = tBudgetCheckInfoWBS.tdAmountBudgetPeriod + vhField:buffer-value
                       vhField                               = vhTable:buffer-field("tdBudgetVersionFigure":U + string(viCounter,"99":U) + "QTY":U)
                       tBudgetCheckInfoWBS.tdQtyBudgetPeriod    = tBudgetCheckInfoWBS.tdQtyBudgetPeriod + vhField:buffer-value.
            end. /* do viCounter */
        end. /* if tBudgetCheckInfoWBS.tcBudgetWBSOverrunPeriod = {&BUDGETOVERRUN-NONE} */
    end. /* if tBudgetCheckInfoWBS.tcCostCentreCode <> "":U */
    else do :
        /* =================================================== */
        /* Get the Budget-Figures (G/L budgets)                */
        /* =================================================== */
        <Q-6 run BudgetVersionGLFigByWBSVers (all) (Read) (NoCache)
          (input tBudgetCheckInfoWBS.tiBudgetWBSID, (BudgetWBSID)
           input tBudgetCheckInfoWBS.tiBudgetVersionID, (BudgetVersionID)
           input tBudgetCheckInfoWBS.tiBudgetID, (BudgetID)
           output dataset tqBudgetVersionGLFigByWBSVers) in BBudget >                                    
        find tqBudgetVersionGLFigByWBSVers no-lock no-error.
        if not available tqBudgetVersionGLFigByWBSVers
        then do :
            assign oiReturnStatus = -3
                   vcMessage = trim(substitute(#T-11'Internal error. The system is to find the budget figures for a project or cost center budget (&1).':255(569)T-11#,tBudgetCheckInfoWBS.tcBudgetCode)) + chr(10) + 
                               trim(substitute(#T-12'Budget ID: &1.':255(570)T-12#,string(tBudgetCheckInfoWBS.tiBudgetID))) + chr(10) + 
                               trim(substitute(#T-13'Budget WBS ID: &1.':255(550)T-13#,string(tBudgetCheckInfoWBS.tiBudgetWBSID))) + chr(10) + 
                               trim(substitute(#T-14'Budget version: &1.':255(571)T-14#,string(tBudgetCheckInfoWBS.tiBudgetVersionID))).
            <M-5 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  '':U (icRowid),
                     input  'QADFIN-2041':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
            if oiReturnStatus < 0 then return.
        end. /* if not available tqBudgetVersionGLFigByWBSVers */
        if tBudgetCheckInfoWBS.tcBudgetWBSOverrunTotal = {&BUDGETOVERRUN-NONE}
        then assign tBudgetCheckInfoWBS.tdAmountBudgetLTD = 999999999999
                    tBudgetCheckInfoWBS.tdQtyBudgetLTD    = 999999999999.
        else do :
            assign viStartPeriodSeq = 1
                   viEndPeriodSeq   = 54
                   vhTable          = buffer tqBudgetVersionGLFigByWBSVers:handle. 
            do viCounter = viEndPeriodSeq to viStartPeriodSeq by -1 :
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionGLFig":U + string(viCounter,"99":U) + "TC":U)
                       tBudgetCheckInfoWBS.tdAmountBudgetLTE = tBudgetCheckInfoWBS.tdAmountBudgetLTE + vhField:buffer-value.
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionGLFig":U + string(viCounter,"99":U) + "QTY":U)
                       tBudgetCheckInfoWBS.tdQtyBudgetLTE    = tBudgetCheckInfoWBS.tdQtyBudgetLTE + vhField:buffer-value.
            end. /* do viCounter */
        end. /* if tBudgetCheckInfoWBS.tcBudgetWBSOverrunTotal <> {&BUDGETOVERRUN-NONE} */
        if tBudgetCheckInfoWBS.tcBudgetWBSOverrunYTD = {&BUDGETOVERRUN-NONE}
        then assign tBudgetCheckInfoWBS.tdAmountBudgetLTD = 999999999999
                    tBudgetCheckInfoWBS.tdQtyBudgetLTD    = 999999999999.
        else do :
            assign viStartPeriodSeq = 1
                   viEndPeriodSeq   = tBudgetCheckInfoWBS.tiBudgetPeriodSeq
                   vhTable          = buffer tqBudgetVersionGLFigByWBSVers:handle.
            do viCounter = viEndPeriodSeq to viStartPeriodSeq by -1 :
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionGLFig":U + string(viCounter,"99":U) + "TC":U)
                       tBudgetCheckInfoWBS.tdAmountBudgetLTD = tBudgetCheckInfoWBS.tdAmountBudgetLTD + vhField:buffer-value.
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionGLFig":U + string(viCounter,"99":U) + "QTY":U)
                       tBudgetCheckInfoWBS.tdQtyBudgetLTD    = tBudgetCheckInfoWBS.tdQtyBudgetLTD + vhField:buffer-value.
            end. /* do viCounter */
        end. /* if tBudgetCheckInfoWBS.tcBudgetWBSOverrunYTD = {&BUDGETOVERRUN-NONE} */
        if tBudgetCheckInfoWBS.tcBudgetWBSOverrunPeriod = {&BUDGETOVERRUN-NONE}
        then assign tBudgetCheckInfoWBS.tdAmountBudgetPeriod = 999999999999
                    tBudgetCheckInfoWBS.tdQtyBudgetPeriod    = 999999999999.
        else do :
            assign viStartPeriodSeq = tBudgetCheckInfoWBS.tiBudgetPeriodSeq
                   viEndPeriodSeq   = tBudgetCheckInfoWBS.tiBudgetPeriodSeq
                   vhTable          = buffer tqBudgetVersionGLFigByWBSVers:handle.
            do viCounter = viEndPeriodSeq to viStartPeriodSeq by -1 :
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionGLFig":U + string(viCounter,"99":U) + "TC":U)
                       tBudgetCheckInfoWBS.tdAmountBudgetPeriod = tBudgetCheckInfoWBS.tdAmountBudgetPeriod + vhField:buffer-value.
                assign vhField                               = vhTable:buffer-field("tdBudgetVersionGLFig":U + string(viCounter,"99":U) + "QTY":U)
                       tBudgetCheckInfoWBS.tdQtyBudgetPeriod    = tBudgetCheckInfoWBS.tdQtyBudgetPeriod + vhField:buffer-value.
            end. /* do viCounter */
        end. /* if tBudgetCheckInfoWBS.tcBudgetWBSOverrunPeriod = {&BUDGETOVERRUN-NONE} */
    end. /* not if tBudgetCheckInfoWBS.tcCostCentreCode <> "":U */
    
    /* ======================= */
    /* Set retun-value = OK    */
    /* ======================= */
    if valid-handle(vhTable) then delete object vhTable.
    if valid-handle(vhField) then delete object vhField.
        
    /* ======================= */
    /* Set retun-value = OK    */
    /* ======================= */
    if oiReturnStatus = -98
    then assign oiReturnStatus = 0.