Now with added FM Call Register section.
[capital-apms-progress.git] / trigger / wrvarflw.p
blobc2fbac3bef853272115ce42e10dd5d9d7e1f45fc
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 ).
6 ELSE
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.
23 ELSE
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.
41 END.
42 AccountBalance.RevisedBudget = AccountBalance.RevisedBudget + amount .
43 FIND CURRENT AccountBalance NO-LOCK.
45 END PROCEDURE.