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
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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.