iiParentBudgetWBSID | input | integer | ParentBudgetWBSID |
icParentBudgetWBSCode | input | character | ParentBudgetWBSCode |
iiMaxFDSSequence | input | integer | MaxFDSSequence; the maximum value for FDSSeq; tResolvedBudgetWBS record with field BudgetFDSSeq > iiMaxFDSSequence will not be resolved. Pass a high value (e.g. 99) if you do not want this check |
iiResolveLevel | input | integer | ResolveLevel |
icResolved1 | input | character | Resolved1 |
icResolved2 | input | character | Resolved2 |
icResolved3 | input | character | Resolved3 |
icResolved4 | input | character | Resolved4 |
icResolved5 | input | character | Resolved5 |
icResolved6 | input | character | Resolved6 |
icResolved7 | input | character | Resolved7 |
icResolved8 | input | character | Resolved8 |
icResolved9 | input | character | Resolved9 |
icResolved10 | input | character | |
icResolved11 | input | character | |
icResolved12 | input | character | |
icResolved13 | input | character | |
icResolved14 | input | character | |
icResolved15 | input | character | |
icResolved16 | input | character | |
oiReturnStatus | output | integer | Return status of the method. |
/* ====================================================================================== */ /* Go through all tResolvedBudgetWBS records that have a parent equal the input parameter */ /* ====================================================================================== */ for each tResolvedBudgetWBS where tResolvedBudgetWBS.tiParentBudgetWBSID = iiParentBudgetWBSID and tResolvedBudgetWBS.tiFDSSeq <= iiMaxFDSSequence : /* ====================================================================================== */ /* Skip the total-FDS types, raise the iiResolveLevel in the other case (see further on) */ /* For totals; call this method again */ /* ====================================================================================== */ if tResolvedBudgetWBS.tcFDSType = {&BUDGETFDSTYPE-TOTAL} then do : <M-1 run BudgetCheckFDSOverlapSub1 (input tResolvedBudgetWBS.tiBudgetWBSID (iiParentBudgetWBSID), input icParentBudgetWBSCode (icParentBudgetWBSCode), input iiMaxFDSSequence (iiMaxFDSSequence), input iiResolveLevel (iiResolveLevel), input icResolved1 (icResolved1), input icResolved2 (icResolved2), input icResolved3 (icResolved3), input icResolved4 (icResolved4), input icResolved5 (icResolved5), input icResolved6 (icResolved6), input icResolved7 (icResolved7), input icResolved8 (icResolved8), input icResolved9 (icResolved9), input icResolved10 (icResolved10), input icResolved11 (icResolved11), input icResolved12 (icResolved12), input icResolved13 (icResolved13), input icResolved14 (icResolved14), input icResolved15 (icResolved15), input icResolved16 (icResolved16), output oiReturnStatus (oiReturnStatus)) in BBudget> return. end. /* if tResolvedBudgetWBS.tcFDSType = {&BUDGETFDSTYPE-TOTAL} */ /* =================== */ /* Set the FullWBSCode */ /* =================== */ assign tResolvedBudgetWBS.tcFullWBSCode = icParentBudgetWBSCode + ",":U + tResolvedBudgetWBS.tcBudgetWBSCode. /* =============================================================== */ /* Set the Resolved information of the parent-nodes into this node */ /* =============================================================== */ if iiResolveLevel > 1 then assign tResolvedBudgetWBS.tcResolved1 = icResolved1. if iiResolveLevel > 2 then assign tResolvedBudgetWBS.tcResolved2 = icResolved2. if iiResolveLevel > 3 then assign tResolvedBudgetWBS.tcResolved3 = icResolved3. if iiResolveLevel > 4 then assign tResolvedBudgetWBS.tcResolved4 = icResolved4. if iiResolveLevel > 5 then assign tResolvedBudgetWBS.tcResolved5 = icResolved5. if iiResolveLevel > 6 then assign tResolvedBudgetWBS.tcResolved6 = icResolved6. if iiResolveLevel > 7 then assign tResolvedBudgetWBS.tcResolved7 = icResolved7. if iiResolveLevel > 8 then assign tResolvedBudgetWBS.tcResolved8 = icResolved8. if iiResolveLevel > 9 then assign tResolvedBudgetWBS.tcResolved9 = icResolved9. if iiResolveLevel > 10 then assign tResolvedBudgetWBS.tcResolved10 = icResolved10. if iiResolveLevel > 11 then assign tResolvedBudgetWBS.tcResolved11 = icResolved11. if iiResolveLevel > 12 then assign tResolvedBudgetWBS.tcResolved12 = icResolved12. if iiResolveLevel > 13 then assign tResolvedBudgetWBS.tcResolved13 = icResolved13. if iiResolveLevel > 14 then assign tResolvedBudgetWBS.tcResolved14 = icResolved14. if iiResolveLevel > 15 then assign tResolvedBudgetWBS.tcResolved15 = icResolved15. /* ================================================== */ /* Resolve the info for the current level of the node */ /* ================================================== */ if tResolvedBudgetWBS.tcFDSCode = "#":U then assign vcResolved = "":U. else do : if tResolvedBudgetWBS.tcFDSList <> "":U and tResolvedBudgetWBS.tcFDSList <> ? then do : if tResolvedBudgetWBS.tcFDSType = {&BUDGETFDSTYPE-SAF} then do : <Q-9 run SafConceptPrim (all) (Read) (NoCache) (input tResolvedBudgetWBS.tiSafConceptID, (SafConceptID) input ?, (SafConceptCode) output dataset tqSafConceptPrim) in BSafConcept > find first tqSafConceptPrim no-lock no-error. if available tqSafConceptPrim then do : assign vcResolved = "":U. do viCounter = num-entries(tResolvedBudgetWBS.tcFDSList) to 1 by -1 : assign vcResolved = vcResolved + ",":U + entry(viCounter,tResolvedBudgetWBS.tcFDSList) + "(":U + trim(tqSafConceptPrim.tcSafConceptCode) + ")":U. end. /* do viCounter */ if vcResolved <> "":U then assign vcResolved = substring(vcResolved,2,-1,"CHARACTER":U) no-error. end. /* if available tqSafConceptPrim */ end. /* when {&BUDGETFDSTYPE-SAF} */ else assign vcResolved = tResolvedBudgetWBS.tcFDSList. end. /* if tResolvedBudgetWBS.tcFDSList <> "":U and tResolvedBudgetWBS.tcFDSList <> ? */ else do: assign vcResolved = "":U. case tResolvedBudgetWBS.tcFDSType : when {&BUDGETFDSTYPE-GL} then do : <Q-3 run GLBySSOthers (all) (Read) (NoCache) (input tResolvedBudgetWBS.tiCompanyId, (CompanyId) input tResolvedBudgetWBS.tcFDSFromCode, (FromGLCode) input tResolvedBudgetWBS.tcFDSToCode, (ToGLCode) input ?, (GLSharedSetID) input tResolvedBudgetWBS.tcFDSCode, (MatchingGLCode) input ?, (GLCode) input tResolvedBudgetWBS.tiBudgetGroupID, (BudgetGroupID) output dataset tqGLBySSOthers) in BGL > for each tqGLBySSOthers no-lock : assign vcResolved = vcResolved + ",":U + tqGLBySSOthers.tcGLCode. end. /* for each tqGLBySSOthers no-lock */ if vcResolved <> "":U then assign vcResolved = substring(vcResolved,2,-1,"CHARACTER":U). end. /* when {&BUDGETFDSTYPE-GL} */ when {&BUDGETFDSTYPE-DIVISION} then do : <Q-4 run DivisionBySSOthers (all) (Read) (NoCache) (input tResolvedBudgetWBS.tiCompanyId, (CompanyId) input ?, (DivisionSharedSetID) input tResolvedBudgetWBS.tcFDSFromCode, (FromDivisionCode) input tResolvedBudgetWBS.tcFDSToCode, (ToDivisionCode) input tResolvedBudgetWBS.tcFDSCode, (MatchingDivisionCode) input ?, (DivisionCode) input tResolvedBudgetWBS.tiBudgetGroupID, (BudgetGroupID) output dataset tqDivisionBySSOthers) in BDivision > for each tqDivisionBySSOthers no-lock : assign vcResolved = vcResolved + ",":U + tqDivisionBySSOthers.tcDivisionCode. end. /* for each tqDivisionBySSOthers no-lock */ if vcResolved <> "":U then assign vcResolved = substring(vcResolved,2,-1,"CHARACTER":U). end. /* when {&BUDGETFDSTYPE-DIVISION} */ when {&BUDGETFDSTYPE-PROJECT} then do : <Q-5 run ProjectBySSOthers (all) (Read) (NoCache) (input tResolvedBudgetWBS.tiCompanyId, (CompanyId) input ?, (ProjectSharedSetID) input tResolvedBudgetWBS.tcFDSFromCode, (FromProjectCode) input tResolvedBudgetWBS.tcFDSToCode, (ToProjectCode) input tResolvedBudgetWBS.tcFDSCode, (MatchingProjectCode) input ?, (ProjectCode) input tResolvedBudgetWBS.tiBudgetGroupID, (BudgetGroupID) output dataset tqProjectBySSOthers) in BProject > for each tqProjectBySSOthers no-lock : assign vcResolved = vcResolved + ",":U + tqProjectBySSOthers.tcProjectCode. end. /* for each tqProjectBySSOthers no-lock */ if vcResolved <> "":U then assign vcResolved = substring(vcResolved,2,-1,"CHARACTER":U). end. /* when {&BUDGETFDSTYPE-PROJECT} */ when {&BUDGETFDSTYPE-COSTCENTRE} then do : <Q-6 run CostCentreBySSOthers (all) (Read) (NoCache) (input tResolvedBudgetWBS.tiCompanyId, (CompanyId) input ?, (CostCentreSharedSetID) input tResolvedBudgetWBS.tcFDSFromCode, (FromCostCentreCode) input tResolvedBudgetWBS.tcFDSToCode, (ToCostCentreCode) input tResolvedBudgetWBS.tcFDSCode, (MatchingCostCentreCode) input ?, (CostCentreCode) input tResolvedBudgetWBS.tiBudgetGroupID, (BudgetGroupID) output dataset tqCostCentreBySSOthers) in BCostCentre > for each tqCostCentreBySSOthers no-lock : assign vcResolved = vcResolved + ",":U + tqCostCentreBySSOthers.tcCostCentreCode. end. /* for each tqCostCentreBySSOthers no-lock */ if vcResolved <> "":U then assign vcResolved = substring(vcResolved,2,-1,"CHARACTER":U). end. /* when {&BUDGETFDSTYPE-COSTCENTRE}} */ when {&BUDGETFDSTYPE-SAF} then do : <Q-7 run SafBySSOthers (all) (Read) (NoCache) (input tResolvedBudgetWBS.tcFDSFromCode, (FromSafCode) input tResolvedBudgetWBS.tcFDSToCode, (ToSafCode) input ?, (SafConceptCode) input tResolvedBudgetWBS.tiSafConceptID, (SafConceptID) input tResolvedBudgetWBS.tcFDSCode, (MatchingSafCode) input ?, (SafCode) input tResolvedBudgetWBS.tiBudgetGroupID, (BudgetGroupID) output dataset tqSafBySSOthers) in BSaf > for each tqSafBySSOthers no-lock : assign vcResolved = vcResolved + ",":U + tqSafBySSOthers.tcSafCode + "(":U + trim(tqSafBySSOthers.tcSafConceptCode) + ")":U . end. /* for each tqSafBySSOthers no-lock */ if vcResolved <> "":U then assign vcResolved = substring(vcResolved,2,-1,"CHARACTER":U). end. /* when {&BUDGETFDSTYPE-SAF} */ end case. end. /* NOT if tResolvedBudgetWBS.tcFDSList <> "":U and tResolvedBudgetWBS.tcFDSList <> ? */ end. /* NOT if tResolvedBudgetWBS.tcFDSCode = "#":U */ case iiResolveLevel : when 1 then assign tResolvedBudgetWBS.tcResolved1 = vcResolved. when 2 then assign tResolvedBudgetWBS.tcResolved2 = vcResolved. when 3 then assign tResolvedBudgetWBS.tcResolved3 = vcResolved. when 4 then assign tResolvedBudgetWBS.tcResolved4 = vcResolved. when 5 then assign tResolvedBudgetWBS.tcResolved5 = vcResolved. when 6 then assign tResolvedBudgetWBS.tcResolved6 = vcResolved. when 7 then assign tResolvedBudgetWBS.tcResolved7 = vcResolved. when 8 then assign tResolvedBudgetWBS.tcResolved8 = vcResolved. when 9 then assign tResolvedBudgetWBS.tcResolved9 = vcResolved. when 10 then assign tResolvedBudgetWBS.tcResolved10 = vcResolved. when 11 then assign tResolvedBudgetWBS.tcResolved11 = vcResolved. when 12 then assign tResolvedBudgetWBS.tcResolved12 = vcResolved. when 13 then assign tResolvedBudgetWBS.tcResolved13 = vcResolved. when 14 then assign tResolvedBudgetWBS.tcResolved14 = vcResolved. when 15 then assign tResolvedBudgetWBS.tcResolved15 = vcResolved. when 16 then assign tResolvedBudgetWBS.tcResolved15 = vcResolved. end case. /* iiResolveLevel */ /* ===================================== */ /* Call this method again for all childs */ /* ===================================== */ <M-2 run BudgetCheckFDSOverlapSub1 (input tResolvedBudgetWBS.tiBudgetWBSID (iiParentBudgetWBSID), input tResolvedBudgetWBS.tcBudgetWBSCode (icParentBudgetWBSCode), input iiMaxFDSSequence (iiMaxFDSSequence), input iiResolveLevel + 1 (iiResolveLevel), input tResolvedBudgetWBS.tcResolved1 (icResolved1), input tResolvedBudgetWBS.tcResolved2 (icResolved2), input tResolvedBudgetWBS.tcResolved3 (icResolved3), input tResolvedBudgetWBS.tcResolved4 (icResolved4), input tResolvedBudgetWBS.tcResolved5 (icResolved5), input tResolvedBudgetWBS.tcResolved6 (icResolved6), input tResolvedBudgetWBS.tcResolved7 (icResolved7), input tResolvedBudgetWBS.tcResolved8 (icResolved8), input tResolvedBudgetWBS.tcResolved9 (icResolved9), input tResolvedBudgetWBS.tcResolved10 (icResolved10), input tResolvedBudgetWBS.tcResolved11 (icResolved11), input tResolvedBudgetWBS.tcResolved12 (icResolved12), input tResolvedBudgetWBS.tcResolved13 (icResolved13), input tResolvedBudgetWBS.tcResolved14 (icResolved14), input tResolvedBudgetWBS.tcResolved15 (icResolved15), input tResolvedBudgetWBS.tcResolved16 (icResolved16), output oiReturnStatus (oiReturnStatus)) in BBudget> end. /* for each tResolvedBudgetWBS where */