project QadFinancials > class BBudget > method BudgetCheckFDSOverlapSub1

Description

This method will update the content of table tResolvedBudgetWBS in a recursive way (iiParentBudgetID).


Parameters


iiParentBudgetWBSIDinputintegerParentBudgetWBSID
icParentBudgetWBSCodeinputcharacterParentBudgetWBSCode
iiMaxFDSSequenceinputintegerMaxFDSSequence; 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
iiResolveLevelinputintegerResolveLevel
icResolved1inputcharacterResolved1
icResolved2inputcharacterResolved2
icResolved3inputcharacterResolved3
icResolved4inputcharacterResolved4
icResolved5inputcharacterResolved5
icResolved6inputcharacterResolved6
icResolved7inputcharacterResolved7
icResolved8inputcharacterResolved8
icResolved9inputcharacterResolved9
icResolved10inputcharacter
icResolved11inputcharacter
icResolved12inputcharacter
icResolved13inputcharacter
icResolved14inputcharacter
icResolved15inputcharacter
icResolved16inputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudget.BudgetCheckFDSOverlap
method BBudget.BudgetCheckFDSOverlapSub1


program code (program7/bbudget.p)

/* ====================================================================================== */
/* 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 */