project QadFinancials > class BBudget > method AdditionalUpdValBudgetVersion
Description
This method will check the content of the Version records.
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program4/bbudget.p)
/* ===================================================================== */
/* Remove all BudgetVersionFigures that are linked to a non-existing WBS */
/* ===================================================================== */
for each tBudgetVersionFig where
tBudgetVersionFig.tc_Status <> "D":U :
find tBudgetWBS where
tBudgetWBS.BudgetWBS_ID = tBudgetVersionFig.BudgetWBS_ID
no-lock no-error.
if not available tBudgetWBS
then if tBudgetVersionFig.tc_Status = "N":U
then delete tBudgetVersionFig.
else assign tBudgetVersionFig.tc_Status = "D":U.
end. /* for each */
for each tBudgetVersionGLFig where
tBudgetVersionGLFig.tc_Status <> "D":U :
find tBudgetWBS where
tBudgetWBS.BudgetWBS_ID = tBudgetVersionGLFig.BudgetWBS_ID
no-lock no-error.
if not available tBudgetWBS
then if tBudgetVersionGLFig.tc_Status = "N":U
then delete tBudgetVersionGLFig.
else assign tBudgetVersionGLFig.tc_Status = "D":U.
end. /* for each */
/* ============================================================================== */
/* A budget can only have 1 active version */
/* State field budget.BudgetIsCompanyDependent based on the budgetcompany records */
/* The ReportPeriod on the Version should be unique within the budget */
/* ============================================================================== */
for each tBudget where
tBudget.tc_Status <> "D":U
no-lock :
/* ============================================================================== */
/* State field budget.BudgetIsCompanyDependent based on the budgetcompany records */
/* ============================================================================== */
assign viNewBudgetCompanyCounter = 0.
for each tBudgetCompany where
tBudgetCompany.tc_ParentRowid = tBudget.tc_Rowid and
tBudgetCompany.tc_Status <> "D":U
no-lock :
assign viNewBudgetCompanyCounter = viNewBudgetCompanyCounter + 1.
end. /* for each tNewBudgetCompany no-lock */
if (viNewBudgetCompanyCounter = 1 and
tBudget.BudgetIsCompanyDependent <> true) or
(viNewBudgetCompanyCounter > 1 and
tBudget.BudgetIsCompanyDependent <> false)
then assign tBudget.BudgetIsCompanyDependent = (viNewBudgetCompanyCounter = 1)
tBudget.tc_Status = (if tBudget.tc_Status = "":U then "C":U else tBudget.tc_Status).
/* ================================================================== */
/* The ReportPeriod on the Version should be unique within the budget */
/* ================================================================== */
assign viCounter = 0
vcListReportPeriodIDs = "":U.
for each tBudgetVersion where
tBudgetVersion.tc_Status <> "D":U and
tBudgetVersion.tc_ParentRowid = tBudget.tc_Rowid
no-lock :
if tBudgetVersion.BudgetVersionIsActive = true
then assign viCounter = viCounter + 1.
if lookup(string(tBudgetVersion.ReportPeriod_ID),vcListReportPeriodIDs,",":U) > 1
then do :
assign oiReturnStatus = -1
vcMessage = trim(substitute(#T-4'Reporting period (&1/&2) must be unique over all versions (&3) of the budget (&4).':255(630)t-4#,string(tBudgetVersion.tiReportPeriodYear),string(tBudgetVersion.tiReportPeriodPeriod),tBudgetVersion.BudgetVersionCode,tBudget.BudgetCode)).
<M-2 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input 'tBudgetVersion.tiReportPeriodYear':U (icFieldName),
input string(tBudgetVersion.tiReportPeriodYear) (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tBudgetVersion.tc_Rowid (icRowid),
input 'QADFIN-1094':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBudget>
end. /* if lookup(string(tBudgetVersion.ReportPeriod_ID),vcListReportPeriodIDs,",":U) > 1 */
assign vcListReportPeriodIDs = vcListReportPeriodIDs + ",":U + string(tBudgetVersion.ReportPeriod_ID).
end. /* for each tBudgetVersion where */
/* ======================================= */
/* A budget can only have 1 active version */
/* ======================================= */
if viCounter > 1
then do :
assign oiReturnStatus = -1
vcMessage = trim(substitute(#T-5'A budget (&1) can only have one active version.':255(631)T-5#,tBudget.BudgetCode)).
<M-1 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input 'tBudget.BudgetCode':U (icFieldName),
input tBudget.BudgetCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tBudget.tc_Rowid (icRowid),
input 'QADFIN-1093':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBudget>
end. /* if viCounter > 1 */
else
if viCounter = 0 and
tBudget.BudgetStatus = {&BUDGETSTATUS-OPERATIONAL}
then do :
assign oiReturnStatus = -1
vcMessage = trim(substitute(#T-6'An operational budget (&1) can only have one active version.':255(632)t-6#,tBudget.BudgetCode)).
<M-3 run SetMessage (input vcMessage (icMessage),
input '':U (icArguments),
input 'tBudget.BudgetCode':U (icFieldName),
input tBudget.BudgetCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tBudget.tc_Rowid (icRowid),
input 'QADFIN-2872':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBudget>
end. /* if viCounter = 1 and */
end. /* for each tBudget */
if oiReturnStatus < 0 then return.