project QadFinancials > class BBudget > method BudgetWBSRename

Description

This method will rename single budgetWBS-record and all its related BudgetVersionFigure records. This is done based on the input information.
It will also return temp-tables that contain the records that are renamed.


Parameters


icBudgetTcRowidinputcharacterBudgetTcRowid
icBudgetWBSTcRowidinputcharacterBudgetWBSTcRowid
icNewBudgetWBSCodeinputcharacterNewBudgetWBSCode; new value for field tBudgetWBS.BudgetWBSCode
iiNewBudgetWBSLineNumberinputintegerNewBudgetWBSLineNumber
tNewBudgetWBSoutputtemp-tableTemp-table containing the BudgetWBS-records wherefor the status has been set to "C":U and the WBSCode has been updated.
tNewBudgetVersionFigureoutputtemp-tableTemp-table containing the BudgetVersionFigure-records wherefor the status has been set to "C":U and the WBSCode has been updated.
tNewBudgetVersionGLFigoutputtemp-tableTemp-table containing the BudgetVersionGLFig-records wherefor the status has been set to "C":U and the WBSCode has been updated.
icNewBudgetWBSTopicDescriptioninputcharacterBudgetWBSTopicDescription
ilNewBudgetWBSIsPrintDescinputlogicalBudgetWBSIsPrintDesc
icNewBudgetGroupCodeinputcharacterBudget Group Code
icNewAltCOAGroupCodeinputcharacterAlt COA Group Code
icNewBudgetWBSFDSLinkinputcharacterBudgetWBSFDSLink
icNewBudgetWBSCategoryinputcharacterBudgetWBSCategory
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program6/bbudget.p)

    /* ========================================================================== */
    /* Validate input parameters                                                  */
    /* ========================================================================== */
    if icBudgetTcRowid = ? then assign icBudgetTcRowid = "":U.
    if icBudgetWBSTcRowid = ? then assign icBudgetWBSTcRowid = "":U.
    if icBudgetTcRowid = "":U 
    then do :
        assign oiReturnStatus = -3
               vcMessage      = trim(#T-6'You must enter the budget identification (row ID) when renaming of budget topics.':255(447)t-6#).
        <M-1 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-486':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if icBudgetTcRowid  = ? */
    else do :
        find tBudget where 
             tBudget.tc_Rowid   = icBudgetTcRowid and 
             tBudget.tc_Status <> "D":U
             no-lock no-error.
        if not available tBudget
        then do :
            assign oiReturnStatus = -3
                   vcMessage      = trim(substitute(#T-7'Cannot find the budget based on its row ID (&1).':255(448)t-7#,string(icBudgetTcRowid))).
            <M-2 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-487':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
            Return.
        end. /* if not available tBudget */
    end. /* not if icBudgetTcRowid  = ? */
    if icBudgetWBSTcRowid = "":U 
    then do :
        assign oiReturnStatus = -3
               vcMessage      = trim(#T-8'You must enter the budget topic identification (row ID) when renaming budget topics.':255(449)t-8#).
        <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-488':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if icBudgetWBSTcRowid = "":U */
    else do :
        find tBudgetWBS where 
             tBudgetWBS.tc_ParentRowid  = tBudget.tc_Rowid   and 
             tBudgetWBS.tc_Rowid        = icBudgetWBSTcRowid and 
             tBudgetWBS.tc_Status      <> "D":U
             no-lock no-error.
        if not available tBudgetWBS
        then do :
            assign oiReturnStatus = -3
                   vcMessage      = trim(substitute(#T-9'Cannot find the current budget WBS topic based on its row ID &1.':255(450)t-9#,string(icBudgetWBSTcRowid))).
            <M-4 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-489':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
            Return.
        end. /* if not available tBudgetWBS */
    end. /* if icBudgetWBSTcRowid = "":U */
    
    /* ==================================================== */
    /* No action allowed if the budget is not yet validated */
    /* ==================================================== */
    if tBudget.BudgetStatus = {&BUDGETSTATUS-INITIAL}
    then do :
        assign oiReturnStatus = -3
               vcMessage      = trim(#T-10'You must validate the budget structure before maintaining the WBS.':255(451)t-10#).
        <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-496':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if tBudget.BudgetStatus = {&BUDGETSTATUS-INITIAL} */

    /* ========================================== */
    /* If no changes are done, then simply return */
    /* ========================================== */
    if tBudgetWBS.BudgetWBSCode = icNewBudgetWBSCode and tBudgetWBS.BudgetWBSLineNumber = iiNewBudgetWBSLineNumber and
       tBudgetWBS.BudgetWBSTopicDescription = icNewBudgetWBSTopicDescription and tBudgetWBS.BudgetWBSIsPrintDesc = ilNewBudgetWBSIsPrintDesc and
       tBudgetWBS.tcBudgetGroupCode = icNewBudgetGroupCode and tBudgetWBS.tcAltCOAGroupCode = icNewAltCOAGroupCode and
       tBudgetWBS.BudgetWBSFDSLink = icNewBudgetWBSFDSLink and tBudgetWBS.BudgetWBSCategory = icNewBudgetWBSCategory
    then return.

    /* ========================================================================== */
    /* Reset the output temp-tables                                               */
    /* ========================================================================== */
    empty temp-table tNewBudgetWBS.
    empty temp-table tNewBudgetVersionFigure.
    empty temp-table tNewBudgetVersionGLFig.
    
    /* ==================================================================== */
    /* Change the WBSCode, set the BudgetWBS-record as changed and create a */  
    /* a corresponding output record and mark it as chaged as well          */
    /* ==================================================================== */
    assign tBudgetWBS.tc_Status     = (if tBudgetWBS.tc_Status = "":U then "C":U else tBudgetWBS.tc_Status)
           tBudgetWBS.BudgetWBSCode = icNewBudgetWBSCode
           tBudgetWBS.BudgetWBSLineNumber       = iiNewBudgetWBSLineNumber
           tBudgetWBS.BudgetWBSTopicDescription = icNewBudgetWBSTopicDescription
           tBudgetWBS.BudgetWBSIsPrintDesc      = ilNewBudgetWBSIsPrintDesc
           tBudgetWBS.tcBudgetGroupCode         = icNewBudgetGroupCode
           tBudgetWBS.tcAltCOAGroupCode         = icNewAltCOAGroupCode
           tBudgetWBS.BudgetWBSFDSLink          = icNewBudgetWBSFDSLink
           tBudgetWBS.BudgetWBSCategory         = if icNewBudgetWBSCategory = "" or icNewBudgetWBSCategory = ?
                                                  then {&BUDGETWBSCATEGORY-ASSET}
                                                  else icNewBudgetWBSCategory.

    assign vcBudgetWBSFDSCodeFrom = "":U
           vcBudgetWBSFDSCodeTo   = "":U
           vcBudgetWBSFDSCode     = "":U
           vcBudgetWBSFDSList     = "":U.
    <M-12 run InterpretFDSLink
       (input  icNewBudgetWBSFDSLink (icBudgetFDSLink), 
        output vcBudgetWBSFDSCodeFrom (ocBudgetWBSFDSCodeFrom), 
        output vcBudgetWBSFDSCodeTo (ocBudgetWBSFDSCodeTo), 
        output vcBudgetWBSFDSCode (ocBudgetWBSFDSCode), 
        output vcBudgetWBSFDSList (ocBudgetWBSFDSList), 
        output viFcReturnSuper (oiReturnStatus)) in BBudget>
    assign tBudgetWBS.BudgetWBSFDSFromCode = vcBudgetWBSFDSCodeFrom
           tBudgetWBS.BudgetWBSFDSToCode   = vcBudgetWBSFDSCodeTo
           tBudgetWBS.BudgetWBSFDSCode     = vcBudgetWBSFDSCode
           tBudgetWBS.BudgetWBSFDSList     = vcBudgetWBSFDSList.
           
    create tNewBudgetWBS.
    buffer-copy tBudgetWBS except BudgetWBSSeq to tNewBudgetWBS.
    
    /* =========================================================================== */
    /* Mark the corresponding VersionFigure-records as changed and set the WBSCode */
    /* Create a corresponding output record an mark it as changed as well          */
    /* =========================================================================== */
    for each tBudgetVersion where 
             tBudgetVersion.tc_ParentRowid  = tBudget.tc_Rowid and 
             tBudgetVersion.tc_Status      <> "D":U :
        for each tBudgetVersionFig where 
                 tBudgetVersionFig.tc_ParentRowid  = tBudgetVersion.tc_Rowid and 
                 tBudgetVersionFig.BudgetWBS_ID    = tBudgetWBS.BudgetWBS_ID and 
                 tBudgetVersionFig.tc_Status      <> "D":U :
            assign tBudgetVersionFig.tc_Status       = (if tBudgetVersionFig.tc_Status = "":U then "C":U else tBudgetVersionFig.tc_Status)
                   tBudgetVersionFig.tcBudgetWBSCode = icNewBudgetWBSCode.
            create tNewBudgetVersionFigure.
            buffer-copy tBudgetVersionFig to tNewBudgetVersionFigure.
        end. /* for each tBudgetVersionFig where  */
        for each tBudgetVersionGLFig where 
                 tBudgetVersionGLFig.tc_ParentRowid  = tBudgetVersion.tc_Rowid and 
                 tBudgetVersionGLFig.BudgetWBS_ID    = tBudgetWBS.BudgetWBS_ID and 
                 tBudgetVersionGLFig.tc_Status      <> "D":U :
            assign tBudgetVersionGLFig.tc_Status       = (if tBudgetVersionGLFig.tc_Status = "":U then "C":U else tBudgetVersionGLFig.tc_Status)
                   tBudgetVersionGLFig.tcBudgetWBSCode = icNewBudgetWBSCode
                   tBudgetVersionGLFig.tiBudgetWBSLineNumber       = iiNewBudgetWBSLineNumber
                   tBudgetVersionGLFig.tcBudgetWBSTopicDescription = icNewBudgetWBSTopicDescription
                   tBudgetVersionGLFig.tlBudgetWBSIsPrintDesc      = ilNewBudgetWBSIsPrintDesc
                   tBudgetVersionGLFig.tcBudgetGroupCode           = icNewBudgetGroupCode
                   tBudgetVersionGLFig.tcAltCOAGroupCode           = icNewAltCOAGroupCode
                   tBudgetVersionGLFig.tcBudgetWBSFDSLink          = icNewBudgetWBSFDSLink
                   tBudgetVersionGLFig.tcBudgetWBSCategory         = if icNewBudgetWBSCategory = "" or icNewBudgetWBSCategory = ?
                                                                     then {&BUDGETWBSCATEGORY-ASSET}
                                                                     else icNewBudgetWBSCategory.
            create tNewBudgetVersionGLFig.
            buffer-copy tBudgetVersionGLFig to tNewBudgetVersionGLFig.
        end. /* for each tBudgetVersionFig where  */
    end. /* for each tBudgetVersion, each tBudgetVersionFig of tBudgetVersion */