project QadFinancials > class BBudget > method BudgetWBSCreateGetSequence
Description
This method is the submethod of method Create BudgetWBS because it could not contain all code.
Parameters
icBudgetTcRowid | input | character | icBudgetTcRowid |
iiParentBudgetWBSID | input | integer | ParentBudgetWBSID |
iiNewRecordFDSSeq | input | integer | viNewRecordFDSSeq |
ocNewRecordWBSSeq | output | character | The new sequence |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program6/bbudget.p)
assign oiReturnStatus = -98.
/* ============================================================================ */
/* Get the highest WBSSeq with the same parent as the node that will be created */
/* ============================================================================ */
FOR EACH tBudgetWBS where
tBudgetWBS.tc_ParentRowid = icBudgetTcRowid and
tBudgetWBS.ParentBudgetWBS_ID = iiParentBudgetWBSID and
tBudgetWBS.BudgetFDSSeq = iiNewRecordFDSSeq and
tbudgetWBS.tcBudgetWBSSeqStr >= ocNewRecordWBSSeq and
tbudgetWBS.tc_status <> "D":U
NO-LOCK :
if tbudgetWBS.tcBudgetWBSSeqStr >= ocNewRecordWBSSeq
then ASSIGN vdNewRecordWBSSeq = decimal(tbudgetWBS.tcBudgetWBSSeqStr)
ocNewRecordWBSSeq = tBudgetWBS.tcBudgetWBSSeqStr.
END. /* FOR EACH tBudgetWBS WHERE */
/* ============================================================================= */
/* If the parent hasn't got any childs yet, then we take the parent its sequence */
/* ============================================================================= */
if vdNewRecordWBSSeq = 0
then do :
find tBudgetWBS where
tBudgetWBS.tc_ParentRowid = icBudgetTcRowid and
tBudgetWBS.BudgetWBS_ID = iiParentBudgetWBSID and
tbudgetWBS.tc_status <> "D":U
NO-LOCK no-error.
if available tbudgetWBS
then ASSIGN vdNewRecordWBSSeq = decimal(tbudgetWBS.tcBudgetWBSSeqStr).
end. /* if */
/* ============================================================ */
/* Raise the retrieved sequence by a jump of the correct level */
/* Level1 = Level1-jump */
/* Level2 = Level1-jump / 1000 */
/* Level3 = Level1-jump / 1000000 */
/* ============================================================ */
assign vdJumpCurrentLevel = vdFSDLevelOneJump.
do viCounter = 1 to (iiNewRecordFDSSeq - 1) by 1 :
assign vdJumpCurrentLevel = vdJumpCurrentLevel / 1000.
end. /* do viCounter */
ASSIGN vdNewRecordWBSSeq = vdNewRecordWBSSeq + vdJumpCurrentLevel.
assign ocNewRecordWBSSeq = string(vdNewRecordWBSSeq, "999999999999999999999999999999999999999999999999").
assign oiReturnStatus = 0.