project QadFinancials > class BBudget > method BudgetCheckFDSOverlapSub2

Description

This is the sub-methods (non-api) of method ApiCheckFDSOverlap because the calling method could not contain all the program code


Parameters


iiFDSDepthinputintegerFDSDepth
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudget.BudgetCheckFDSOverlap


program code (program7/bbudget.p)

/* ========================================================================== */
    /* Check tResolvedBudgetWBS for overlap: go through all records of the lowest */
    /* level andcheck if you can find another one that has overlap on all levels  */
    /* ========================================================================== */
    for each tResolvedBudgetWBS where 
             tResolvedBudgetWBS.tiFDSSeq = iiFDSDepth
             no-lock :
        /* Go thourgh all Resolved-recs on the lowest level */
        for each bResolvedBudgetWBS where 
                 bResolvedBudgetWBS.tiFDSSeq  = tResolvedBudgetWBS.tiFDSSeq and 
                 rowid(bResolvedBudgetWBS)   <> rowid(tResolvedBudgetWBS)
                 no-lock :
            /* Reset vcMessage as we have a test on it to check for errors */
            assign vcMessage = "":U.                 
            /* Check level 1 */
            if tResolvedBudgetWBS.tcResolved1 <> "":U and 
               bResolvedBudgetWBS.tcResolved1 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved1) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved1),bResolvedBudgetWBS.tcResolved1) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 2 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-2'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(14438)t-2#,entry(viCounter,tResolvedBudgetWBS.tcResolved1),bResolvedBudgetWBS.tcResolved1)).
            end. /* end-if */
            /* Check level 2 */
            if tResolvedBudgetWBS.tcResolved2 <> "":U and 
               bResolvedBudgetWBS.tcResolved2 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved2) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved2),bResolvedBudgetWBS.tcResolved2) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 3 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-3'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-3#,entry(viCounter,tResolvedBudgetWBS.tcResolved2),bResolvedBudgetWBS.tcResolved2)).
            end. /* end-if */
            /* Check level 3 */
            if tResolvedBudgetWBS.tcResolved3 <> "":U and 
               bResolvedBudgetWBS.tcResolved3 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved3) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved3),bResolvedBudgetWBS.tcResolved3) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 4 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-4'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-4#,entry(viCounter,tResolvedBudgetWBS.tcResolved3),bResolvedBudgetWBS.tcResolved3)).
            end. /* end-if */
            /* Check level 4 */
            if tResolvedBudgetWBS.tcResolved4 <> "":U and 
               bResolvedBudgetWBS.tcResolved4 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved4) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved4),bResolvedBudgetWBS.tcResolved4) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 5 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-5'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-5#,entry(viCounter,tResolvedBudgetWBS.tcResolved4),bResolvedBudgetWBS.tcResolved4)).
            end. /* end-if */
            /* Check level 5 */
            if tResolvedBudgetWBS.tcResolved5 <> "":U and 
               bResolvedBudgetWBS.tcResolved5 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved5) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved5),bResolvedBudgetWBS.tcResolved5) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 6 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-6'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-6#,entry(viCounter,tResolvedBudgetWBS.tcResolved5),bResolvedBudgetWBS.tcResolved5)).
            end. /* end-if */
            /* Check level 6 */
            if tResolvedBudgetWBS.tcResolved6 <> "":U and 
               bResolvedBudgetWBS.tcResolved6 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved6) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved6),bResolvedBudgetWBS.tcResolved6) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 7 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-7'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-7#,entry(viCounter,tResolvedBudgetWBS.tcResolved6),bResolvedBudgetWBS.tcResolved6)).
            end. /* end-if */
            /* Check level 7 */
            if tResolvedBudgetWBS.tcResolved7 <> "":U and 
               bResolvedBudgetWBS.tcResolved7 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved7) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved7),bResolvedBudgetWBS.tcResolved7) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 8 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-8'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-8#,entry(viCounter,tResolvedBudgetWBS.tcResolved7),bResolvedBudgetWBS.tcResolved7)).
            end. /* end-if */
            /* Check level 8 */
            if tResolvedBudgetWBS.tcResolved8 <> "":U and 
               bResolvedBudgetWBS.tcResolved8 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved8) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved8),bResolvedBudgetWBS.tcResolved8) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false or iiFDSDepth < 9 then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-9'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-9#,entry(viCounter,tResolvedBudgetWBS.tcResolved8),bResolvedBudgetWBS.tcResolved8)).
            end. /* end-if */
            /* Check level 9 */
            if tResolvedBudgetWBS.tcResolved9 <> "":U and 
               bResolvedBudgetWBS.tcResolved9 <> "":U 
            then do:
            assign vlMatchFoundForLevel = false.
            do viCounter = num-entries(tResolvedBudgetWBS.tcResolved9) to 1 by -1 :
                if lookup(entry(viCounter,tResolvedBudgetWBS.tcResolved9),bResolvedBudgetWBS.tcResolved9) <> 0
                then do :
                    assign vlMatchFoundForLevel = true.
                    Leave.
                end. /* if can-do */
            end. /* do viCounter */
            if vlMatchFoundForLevel = false then next.
            assign vcMessage = vcMessage + chr(10) + trim(substitute(#T-10'The COA value '&1' of node 1 matches the COA values of node 2 (&2).':255(511)t-10#,entry(viCounter,tResolvedBudgetWBS.tcResolved9),bResolvedBudgetWBS.tcResolved9)).
            end. /* end-if */
            /* Set an error message */
            if vcMessage <> "":U
            then do :
                assign oiReturnStatus = -1
                       vcMessage      = trim(#T-11'An overlap was detected between node 1 and node 2.':255(512)t-11#) + chr(10) + 
                                        trim(substitute(#T-12'Node 1: &1.':255(513)T-12#,tResolvedBudgetWBS.tcFullWBSCode)) + chr(10) + 
                                        trim(substitute(#T-13'Node 2: &1.':255(514)T-13#,bResolvedBudgetWBS.tcFullWBSCode)) + 
                                        vcMessage.
                <M-1 run SetMessage (input  vcMessage (icMessage),
                     input  '':U (icArguments),
                     input  'tBudgetWBS.BudgetWBSCode':U (icFieldName),
                     input  tResolvedBudgetWBS.tcBudgetWBSCode (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  tResolvedBudgetWBS.tcBudgetWBSTcRowid (icRowid),
                     input  'QADFIN-592':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BBudget>
            end. /* if vcMessage <> "":U */
        end. /* for each bResolvedBudgetWBS where */
    end. /* for each tResolvedBudgetWBS where */