project QadFinancials > class BBudget > method ApiGetBudgetWBSDelete

Description

This method will delete Budget WBS records.

If ilSkipDraftNodes or ilSkipJointOperResNodes or ilSkipOverheadNodes is true, then delete some tViewBudgetWBS and tViewBudgetWBSFigures records In case a delete of a record is needed, then following actions should be done:
1. Delete the child record of the current tViewBudgetWBS record and their linked tViewBudgetWBSFigures records.
2. Decrease the amounts of the parent tViewBudgetWBSFigures records .
3. Delete the current tViewBudgetWBS record.


Parameters


ilSkipJointOperResNodesinputlogicalSkipJointOperResNodes
ilSkipOverheadNodesinputlogicalSkipOverheadNodes
ilSkipDraftNodesinputlogicalSkipDraftNodes
ilSkipPureRevenueNodesinputlogicalSkipPureRevenueNodes
ilSkipPureCostNodesinputlogicalSkipPureCostNodes
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudget.ApiGetBudgetWBS
method BBudget.ApiGetBudgetWBSWithFigures


program code (program9/bbudget.p)

/* ============================================================================== */
    /* If ilSkipDraftNodes or ilSkipJointOperResNodes or ilSkipOverheadNodes is true, */
    /* then delete some tViewBudgetWBS and tViewBudgetWBSFigures records              */
    /* In case a delete of a record is needed, then following actions should be done: */
    /*   1. Delete the child record of the current tViewBudgetWBS record and          */
    /*      their linked tViewBudgetWBSFigures records                                */
    /*   2. Decrease the amounts of the parent tViewBudgetWBSFigures records          */
    /*   3. Delete the current tViewBudgetWBS record                                  */
    /* ============================================================================== */
    for each tViewBudgetWBS no-lock : 
        
        /* ===================================== */
        /* Check if the node needs to be removed */
        /* ===================================== */
        if (tViewBudgetWBS.tcBudgetWBSStatus      = {&BUDGETWBSSTATUS-DRAFT} and
            ilSkipDraftNodes                      = true) or
           (tViewBudgetWBS.tcBudgetWBSCostType    = {&BUDGETWBSCOSTTYPE-JOR} and 
            ilSkipJointOperResNodes               = true) or
           (tViewBudgetWBS.tcBudgetWBSCostType    = {&BUDGETWBSCOSTTYPE-OVERHEAD} and 
            ilSkipOverheadNodes                   = true) or
           (tViewBudgetWBS.tcBudgetWBSCostRevenue = {&BUDGETWBSCOSTREVENUE-REVENUE} and 
            ilSkipPureRevenueNodes                = true) or
           (tViewBudgetWBS.tcBudgetWBSCostRevenue = {&BUDGETWBSCOSTREVENUE-COST} and 
            ilSkipPureCostNodes                   = true)
        then do :
            
            /* ============================================ */
            /* Go through all figures-records of the node   */
            /* ============================================ */
            for each tViewBudgetWBSFigures where 
                     tViewBudgetWBSFigures.tiBudgetWBSID = tViewBudgetWBS.tiBudgetWBSID : 
                
                /* ================================================== */
                /* Subtract all (Budget-)figures of the parent-nodes  */
                /* ================================================== */
                assign viParentBudgetWBSIDForReset = tViewBudgetWBSFigures.tiParentBudgetWBSID.
                repeat :
                    find btViewBudgetWBSFigures where
                         btViewBudgetWBSFigures.tiBudgetWBSID = viParentBudgetWBSIDForReset 
                         no-error.
                    if not available btViewBudgetWBSFigures
                    then leave.
                    assign viParentBudgetWBSIDForReset               = btViewBudgetWBSFigures.tiParentBudgetWBSID 
                           btViewBudgetWBSFigures.tdBudgetCostTC     = btViewBudgetWBSFigures.tdBudgetCostTC     - tViewBudgetWBSFigures.tdBudgetCostTC
                           btViewBudgetWBSFigures.tdBudgetRevenueTC  = btViewBudgetWBSFigures.tdBudgetRevenueTC  - tViewBudgetWBSFigures.tdBudgetRevenueTC
                           btViewBudgetWBSFigures.tdBudgetQTY        = btViewBudgetWBSFigures.tdBudgetQTY        - tViewBudgetWBSFigures.tdBudgetQTY
                           btViewBudgetWBSFigures.tdPMCostTC         = btViewBudgetWBSFigures.tdPMCostTC         - tViewBudgetWBSFigures.tdPMCostTC
                           btViewBudgetWBSFigures.tdPMRevenueTC      = btViewBudgetWBSFigures.tdPMRevenueTC      - tViewBudgetWBSFigures.tdPMRevenueTC
                           btViewBudgetWBSFigures.tdPMQTY            = btViewBudgetWBSFigures.tdPMQTY            - tViewBudgetWBSFigures.tdPMQTY
                           btViewBudgetWBSFigures.tdControlCostTC    = btViewBudgetWBSFigures.tdControlCostTC    - tViewBudgetWBSFigures.tdControlCostTC
                           btViewBudgetWBSFigures.tdControlRevenueTC = btViewBudgetWBSFigures.tdControlRevenueTC - tViewBudgetWBSFigures.tdControlRevenueTC
                           btViewBudgetWBSFigures.tdControlQTY       = btViewBudgetWBSFigures.tdControlQTY       - tViewBudgetWBSFigures.tdControlQTY.
                    if viParentBudgetWBSIDForReset = 0 or
                       viParentBudgetWBSIDForReset = ?
                    then leave.
                end. /* repeat */
                
                /* ================================================== */
                /* Delete the figures of the nodes                    */
                /* ================================================== */
                delete tViewBudgetWBSFigures.
                
            end. /* for each tViewBudgetWBSFigures where */
            
            /* ========================================= */
            /* Recursively delete all childs of the node */
            /* ========================================= */
            <M-1 run ApiGetBudgetWBSDeleteChilds
          (input  tViewBudgetWBS.tiBudgetWBSID (iiParentBudgetWBSID), 
           output viFcReturnSuper (oiReturnStatus)) in BBudget>
            if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
            if oiReturnStatus < 0 then return.
            
            /* ====================== */
            /* Delete the node itself */
            /* ====================== */
            delete tViewBudgetWBS.
            
        end. /* if */
     end. /* for each */