project QadFinancials > class BBudget > method BudgetWBSCreateGetSequence

Description

This method is the submethod of method Create BudgetWBS because it could not contain all code.


Parameters


icBudgetTcRowidinputcharactericBudgetTcRowid
iiParentBudgetWBSIDinputintegerParentBudgetWBSID
iiNewRecordFDSSeqinputintegerviNewRecordFDSSeq
ocNewRecordWBSSeqoutputcharacterThe new sequence
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudget.BudgetWBSCreate


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.