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
iiFDSDepth | input | integer | FDSDepth |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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 */