1 TRIGGER PROCEDURE FOR WRITE OF VariationFlow
OLD BUFFER old-VFL.
3 FIND Variation
OF VariationFlow
NO-LOCK.
4 IF NEW(VariationFlow
) THEN
5 RUN update-project
( VariationFlow.ProjectCode
, VariationFlow.AccountCode
, VariationFlow.MonthCode
, VariationFlow.Amount
).
7 RUN update-project
( old-VFL.ProjectCode
, old-VFL.AccountCode
, old-VFL.MonthCode
, VariationFlow.Amount
- old-VFL.Amount
).
10 PROCEDURE update-project
:
11 DEF INPUT PARAMETER ec
AS INT NO-UNDO.
12 DEF INPUT PARAMETER ac
AS DEC NO-UNDO.
13 DEF INPUT PARAMETER month-code
AS INT NO-UNDO.
14 DEF INPUT PARAMETER amount
AS DEC NO-UNDO.
16 IF amount
= 0 THEN RETURN.
18 /* First update the adjustment
/variation fields on the project budget
*/
19 FIND ProjectBudget
WHERE ProjectBudget.ProjectCode
= ec
20 AND ProjectBudget.AccountCode
= ac.
21 IF SUBSTRING(Variation.VariationType
,1,1) = "V" THEN
22 ProjectBudget.AgreedVariation
= ProjectBudget.AgreedVariation
+ amount.
24 ProjectBudget.Adjustment
= ProjectBudget.Adjustment
+ amount.
26 /* next
, update the revised budget for the specific month involved
*/
27 FIND AccountBalance
WHERE AccountBalance.EntityType
= "J"
28 AND AccountBalance.EntityCode
= ec
29 AND AccountBalance.AccountCode
= ac
30 AND AccountBalance.MonthCode
= month-code
31 EXCLUSIVE-LOCK NO-ERROR.
32 IF NOT AVAILABLE(AccountBalance
) THEN DO:
33 CREATE AccountBalance.
34 ASSIGN AccountBalance.EntityType
= "J"
35 AccountBalance.EntityCode
= ec
36 AccountBalance.AccountCode
= ac
37 AccountBalance.MonthCode
= month-code
38 AccountBalance.Balance
= 0
39 AccountBalance.Budget
= 0
40 AccountBalance.RevisedBudget
= 0.
42 AccountBalance.RevisedBudget
= AccountBalance.RevisedBudget
+ amount .
43 FIND CURRENT AccountBalance
NO-LOCK.