project QadFinancials > class BBudget > method AdditionalUpdValBudgetVersion

Description

This method will check the content of the Version records.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudget.AdditionalUpdates


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.