1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| Quintiq file version 2.0
| #parent: #root
| Method UpdateKPIValue (
| MacroPlan macroplan,
| Boolean issmartplan
| ) as Boolean
| {
| Description:
| [*
| Update value of kpi
| Called by job JobUpdateDefaultStrategyValue
| *]
| TextBody:
| [*
| isupdated := false;
| scenario := select( this, ScenarioMP, s,
| not s.IsDeleted(),
| s.DatasetMDSID() = macroplan.MDSID() );
|
| if( not isnull( scenario ) )
| {
| this.UpdateUnitOfMeasurement( macroplan, scenario );
|
| //smartplanstart := guard ( lastalgorithmrun.FirstPeriodInOptimizerRun().Start(), macroplan.Start() );
|
| traverse( scenario, KPIValue, kpivalue )
| {
| if( not issmartplan )
| {
| kpivalue.DeleteKPIValueInPeriod(); // Delete all kpi value in periods
| }
| else
| {
| kpivalueinperiod := selectset ( kpivalue, KPIValueInPeriod, p, p.End() >= macroplan.SmartPlanStartForUpdateKPI() );
| MacroPlan::DeleteObjects( kpivalueinperiod );
| }
|
| ScenarioManager::UpdateKPITotalValue( kpivalue, macroplan ); // Get kpi total value
| }
|
| // Sort account kpis decendingly such that the higher level account with children can get the value from its children
| accountkpis := selectsortedset( scenario, KPIValue, kpivalue, kpivalue.KPI().IsAccount(), -kpivalue.KPI().astype( Account ).Level() );
| otherkpis := selectset( scenario, KPIValue, kpivalue, not kpivalue.KPI().IsAccount() );
|
| // Update kpi value per period
|
|
| traverse( macroplan,
| PeriodKPI,
| period,
| not issmartplan
| or period.End() >= macroplan.SmartPlanStartForUpdateKPI() )
| {
| start := period.Start();
| end := period.End();
| ScenarioManager::UpdateAccountKPIValueInPeriod( accountkpis, period, start, end, scenario );
| ScenarioManager::UpdateNonFinancialKPIValueInPeriod( otherkpis, period, start, end, scenario );
| }
| }
| isupdated := true;
| //to be used for chain in reactive quill code
| return isupdated;
| *]
| }
|
|