project QadFinancials > class BBudget > method ValidateComponentBudgetWBSDef

Description

This method is the submethod of validateComponentBudgetWBS because it could not contain all the code.


Parameters


iiBudgetCompanyIDinputintegerBudgetCompanyID
icBudgetWBSTcRowidinputcharacterBudgetWBSTcRowid
icBudgetWBSCodeinputcharacterBudgetWBSCode
icBudgetWBSFDSTypeinputcharacterBudgetWBSFDSType
icBudgetWBSFDSCodeinputcharacterBudgetWBSFDSCode
icBudgetWBSFDSListinputcharacterBudgetWBSFDSList
icBudgetWBSFDSFromCodeinputcharacterBudgetWBSFDSFromCode
icBudgetWBSFDSToCodeinputcharacterBudgetWBSFDSToCode
icBudgetWBSFDSDefaultinputcharacterBudgetWBSFDSDefault
icSafConceptCodeinputcharacterSAF Concept Code
icBudgetGroupCodeinputcharacterBudgetGroupCode
icBudgetProjectCodeinputcharacterBudgetProjectCode
icBudgetCostCentreCodeinputcharacterCost Center Code
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudget.ValidateComponentBudgetWBS


program code (program5/bbudget.p)

/* ============================================================================================== */
    /* Check the FDS-Default (submethod);                                                             */
    /*  - it is only accesible for type SAF                                                           */
    /*  - it is mandatory for type SAF when working with a project-budget                             */
    /*  - the value should follow the saf-concept of the Wbs-node                                     */
    /*  - if the budgetgroup of the node is filled then the budgetgroup of the saf should be the same */
    /*  - if from/to, list or wildcard are filled then the saf-code should fit these criteria         */
    /* ============================================================================================== */
    if icBudgetWBSFDSDefault <>  "":U 
    then do :
        if (icBudgetProjectCode    = "":U or icBudgetProjectCode    = ?)    and 
           (icBudgetCostCentreCode = "":U or icBudgetCostCentreCode = ?)
        then do :
            assign oiReturnStatus = -1
                   vcMessage      = trim(substitute(#T-11'WBS node &1. You can only define a COA default for project and cost center budgets.':255(633)t-11#,icBudgetWBSCode)).
            <M-9 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-1100':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
            Return.
        end. /* if icBudgetProjectCode <> "":U and  */
        else return.
    end.
    /* it is only accesible for type SAF */
    if icBudgetWBSFDSType <> {&BUDGETFDSTYPE-SAF}
    then do :
        assign oiReturnStatus = -1
               vcMessage      = trim(substitute(#T-12'WBS node &1. You can only define a COA default for COA type &2.':255(634)t-12#,icBudgetWBSCode,{&BUDGETFDSTYPE-SAF-TR})).
        <M-1 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  '':U (icFieldName),
                     input  '':U (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-545':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if icBudgetWBSFDSType <> {&BUDGETFDSTYPE-SAF} */
    
    /* the value should follow the saf-concept of the Wbs-node */
    <Q-4 run SafByCodeIDActiveConcept (all) (Read) (NoCache)
          (input icBudgetWBSFDSDefault, (SafCode)
           input icSafConceptCode, (SafConceptCode)
           input ?, (SafID)
           input ?, (SafIsActive)
           input ?, (SafConceptID)
           input ?, (BudgetGroupID)
           input ?, (BudgetGroupCode)
           output dataset tqSafByCodeIDActiveConcept) in BSaf >
    find first tqSafByCodeIDActiveConcept where 
               tqSafByCodeIDActiveConcept.tcSafCode        = icBudgetWBSFDSDefault and 
               tqSafByCodeIDActiveConcept.tcSafConceptCode = icSafConceptCode
               no-lock no-error.
    if not available tqSafByCodeIDActiveConcept
    then do :
        assign oiReturnStatus = -1
               vcMessage      = trim(substitute(#T-13'WBS node &1. The default posting value &2 is not a SAF value of concept &3.':255(635)t-13#,icBudgetWBSCode,icBudgetWBSFDSDefault,icSafConceptCode)).
        <M-5 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  'tBudgetWBS.BudgetWBSFDSDefault':U (icFieldName),
                     input  icBudgetWBSFDSDefault (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-547':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if not available tqSafByCodeIDActiveConcept */
    
    /* if the budgetgroup of the node is filled then the budgetgroup of the saf should be the same */
    if icBudgetGroupCode <> "":U and
       tqSafByCodeIDActiveConcept.tcBudgetGroupCode <> icBudgetGroupCode
    then do :
        if vlFcQueryRecordsAvailable = false
        then do :
            assign oiReturnStatus = -1
                   vcMessage      = trim(substitute(#T-14'WBS node &1. The budget group (&2) of the posting default (&3) must match the budget group of the WBS node (&4).':255(636)t-14#,icBudgetWBSCode,if tqSafByCodeIDActiveConcept.tcBudgetGroupCode = ? then "?":U else tqSafByCodeIDActiveConcept.tcBudgetGroupCode,icBudgetWBSFDSDefault,icBudgetGroupCode)).
            <M-3 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  'tBudgetWBS.BudgetWBSFDSDefault':U (icFieldName),
                     input  icBudgetWBSFDSDefault (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-546':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
            Return.
        end. /* if vlFcQueryRecordsAvailable = false */
    end. /* if icBudgetGroupCode <> "":U and */
    
    /* if from/to is filled then the saf-code should fit these criteria */
    if icBudgetWBSFDSFromCode <> "":U and 
       icBudgetWBSFDSToCode   <> "":U and 
       (icBudgetWBSFDSFromCode > icBudgetWBSFDSDefault or
        icBudgetWBSFDSToCode   < icBudgetWBSFDSDefault)
    then do :
        assign oiReturnStatus = -1
               vcMessage      = trim(substitute(#T-15'WBS node &1. The posting default (&2) must be within the specified range (&3 - &4).':255(637)t-15#,icBudgetWBSCode,icBudgetWBSFDSDefault,icBudgetWBSFDSFromCode,icBudgetWBSFDSToCode)).
        <M-6 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  'tBudgetWBS.BudgetWBSFDSDefault':U (icFieldName),
                     input  icBudgetWBSFDSDefault (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-548':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if icBudgetWBSFDSFromCode <> "":U and */
    
    /* if List is filled then the saf-code should fit these criteria */
    if icBudgetWBSFDSList <> "":U and 
       LOOKUP(icBudgetWBSFDSDefault,icBudgetWBSFDSList,",":U) = 0
    then do :
        assign oiReturnStatus = -1
               vcMessage      = trim(substitute(#T-16'WBS node &1. The posting default (&2) must be in the list of valid values (&3).':255(638)t-16#,icBudgetWBSCode,icBudgetWBSFDSDefault,icBudgetWBSFDSList)).
        <M-7 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  'tBudgetWBS.BudgetWBSFDSDefault':U (icFieldName),
                     input  icBudgetWBSFDSDefault (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-549':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if icBudgetWBSFDSList <> "":U and */
    
    /* if Code (wild-card) filled then the saf-code should fit these criteria */
    if icBudgetWBSFDSCode <> "":U and 
       icBudgetWBSFDSCode <> "#":U and 
       not icBudgetWBSFDSDefault matches icBudgetWBSFDSList 
    then do :
        assign oiReturnStatus = -1
               vcMessage      = trim(substitute(#T-17'WBS node &1. The posting default (&2) must match the wildcard (&3).':255(639)t-17#,icBudgetWBSCode,icBudgetWBSFDSDefault,icBudgetWBSFDSCode)).
        <M-8 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  'tBudgetWBS.BudgetWBSFDSDefault':U (icFieldName),
                     input  icBudgetWBSFDSDefault (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-550':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if icBudgetWBSFDSCode <> "":U and */
    
    /* if Code (wild-card) filled then the saf-code should fit these criteria */
    if icBudgetWBSFDSCode = "#":U and 
       (icBudgetWBSFDSType = {&BUDGETFDSTYPE-SAF} or
        icBudgetWBSFDSType = {&BUDGETFDSTYPE-GL})
    then do :
        assign oiReturnStatus = -1
               vcMessage      = trim(substitute(#T-18'WBS node &1. The indication of empty nodes (&2) is not allowed for type &3 and &4.':255(640)T-18#,icBudgetWBSCode,trim("#":U),trim({&BUDGETFDSTYPE-SAF-TR}),trim({&BUDGETFDSTYPE-GL-TR}))).
        <M-10 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  'tBudgetWBS.BudgetWBSFDSDefault':U (icFieldName),
                     input  icBudgetWBSFDSDefault (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  icBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-1378':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
        Return.
    end. /* if icBudgetWBSFDSCode = "#":U and */