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
| ilSkipJointOperResNodes | input | logical | SkipJointOperResNodes |
| ilSkipOverheadNodes | input | logical | SkipOverheadNodes |
| ilSkipDraftNodes | input | logical | SkipDraftNodes |
| ilSkipPureRevenueNodes | input | logical | SkipPureRevenueNodes |
| ilSkipPureCostNodes | input | logical | SkipPureCostNodes |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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 */