admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
Quintiq file version 2.0
#parent: #root
StaticMethod UpdateKPITotalValue (
  KPIValue kpivalue,
  MacroPlan macroplan
)
{
  Description:
  [*
    Update the total kpi value.
    Called to get the total value directly because not all kpis can retrieve calculation from KPIValueInPeriod
  *]
  TextBody:
  [*
    kpiname := kpivalue.KPI().Name();
    
    // non financial kpis
    // Target inventory level KPI
    if( kpiname = Translations::MP_GlobalParameters_KPISafetyStock() )
    {
      kpivalue.Value( macroplan.GetKPITargetInventoryLevel() );
      kpivalue.Percentage( macroplan.GetKPITargetInventoryLevelInPecentage() );
    }
    // Fulfillment KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIFulfillmentName() )
    {
      kpivalue.Value( macroplan.GetKPIFulfillment() );
      kpivalue.Percentage( macroplan.GetKPIFulfillmentInPercentage() );
    }
    // Sales demand priority KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPISalesDemandPriorityName() )
    {
      kpivalue.Value( macroplan.GetKPISalesDemandPriority() );
    }
    // Minimum unit capacity KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIMinimumUnitCapacityName() )
    {
      kpivalue.Value( macroplan.GetKPIMinimumUnitCapacity() );
    }
    // Fulfillment target KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIFulfillmentTargetName() )
    {
      kpivalue.Value( macroplan.GetKPIFulfillmentTarget() );
      kpivalue.Percentage( macroplan.GetKPIFulfillmentTargetPercentage() );
    }
    // Volume KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIVolumeName() )
    {
      kpivalue.Value( macroplan.GetKPIVolume() );
    }
    // Unit capacity KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIUnitCapacityName() )
    {
      kpivalue.Value( macroplan.GetKPIUnitCapacity() );
    }
    // Stocking point capacity KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIStockingPointCapacityName() )
    {
      kpivalue.Value( macroplan.GetKPIStockingPointCapacity() );
    }
    // Postponement penalty KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIPostponementPenaltyName() )
    {
      kpivalue.Value( macroplan.GetKPIPostponementPenalty() )
    }
    // On time fulfillment KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIOnTimeFulfillmentName() )
    {
      kpivalue.Value( macroplan.GetKPIOnTimeFulfillment() );
      kpivalue.Percentage( macroplan.GetKPIOnTimeFulfillmentInPercentage() );
    }
    // On time in full KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIOnTimeInFullName() )
    {
      kpivalue.Value( macroplan.GetKPIOnTimeInFull() );
      kpivalue.Percentage( macroplan.GetKPIOnTimeInFullInPercentage() );
    }
    // Inventory turns KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIInventoryTurnsName() )
    {
      kpivalue.Value( macroplan.GetKPIInventoryTurns() );
    }
    // Supply target KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPISupplyTargetName() )
    {
      kpivalue.Value( macroplan.GetKPISupplyTarget() );
      kpivalue.Percentage( macroplan.GetKPISupplyTargetInPercentage() );
    }
    // Minimum inventory KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIMinimumInventoryLevelName() )
    {
      kpivalue.Value( macroplan.GetKPIMinimumInventoryLevel() );
    }
    // Maximum inventory KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIMaximumInventoryLevelName() )
    {
      kpivalue.Value( macroplan.GetKPIMaximumInventoryLevel() );
    }
    // Campaign KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPICampaignName() )
    {
      kpivalue.Value( macroplan.GetKPICampaign() );
    }
    // Lot size KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPILotSizeName() )
    {
      kpivalue.Value( macroplan.GetKPILotSize() );
    }
    // Process minimum quantity KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIProcessMinimumQuantity() )
    {
      kpivalue.Value( macroplan.GetKPIProcessMinimumQuantity() );
    }
    // Process maximum quantity KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIProcessMaximumQuantity() )
    {
      kpivalue.Value( macroplan.GetKPIProcessMaximumQuantity() );
    }
    // Minimum supply KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIMinimumSupplyName() )
    {
      kpivalue.Value( macroplan.GetKPIMinimumSupply() );
    }
    // Maximum supply KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIMaximumSupplyName() )
    {
      kpivalue.Value( macroplan.GetKPIMaximumSupply() );
    }
    // Total expired quantity KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPITotalExpiredQuantity() )
    {
      kpivalue.Value( macroplan.GetKPITotalExpiredQuantity() );
    }
    // Number of shelf-life violation KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPINumberOfShelfLifeViolation() )
    {
      kpivalue.Value( macroplan.GetKPINumberOfShelfLifeViolation() );
    }
    // Sustainability - CO2 emission
    else if(  kpiname = Translations::MP_GlobalParameters_KPICO2Emission() )
    {
      kpivalue.Value( macroplan.GetKPICO2Emission() );
    }
    // Shift pattern changes penalty KPI
    else if( kpiname = Translations::MP_GlobalParameters_KPIShiftPatternChangesPenalty() )
    {
      kpivalue.Value( macroplan.GetKPIShiftPatternChangesPenalty() );
    }
    
    // account kpis
    else if( kpivalue.KPI().IsAccount() )
    {
      account := select( macroplan, Account_MP, a, a.Name() = kpiname );
      kpivalue.Value( guard( account.ValueWithinKPIHorizon(), 0.0 ) );
    }
  *]
}