yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
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
Quintiq file version 2.0
#parent: #root
Method AddKpiNameValuePairsFromObject (KpiSnapshotData snapshotData, Object kpiHoldingObject)
{
  TextBody:
  [*
    tree       := NamedValueTreeIO::Export( kpiHoldingObject, false );
    typeHandle := tree.GetHandle( kpiHoldingObject.DefinitionName() );
    typeNV     := tree.Root().Child( typeHandle );
    
    traverse( typeNV.Children(), Elements, kpiNV )
    {
      // Get the 'raw' value from the data, because exported Number attributes
      // will fail to be re-imported as 'Real'. So a little help here.
      kpiRaw := kpiNV.GetValue();
      
      // Only create KPIs for Real or Number type attributes
      if( kpiRaw.istype( Real ) or kpiRaw.istype( Number ) )
      {      
        kpiName  := kpiNV.Name();
        kpiValue := 0.0;
        
        if( kpiRaw.istype( Real ) )
        {
          kpiValue := kpiRaw.astype( Real ); 
        }
        else if( kpiRaw.istype( Number ) )
        {
          kpiValue := [Real]( kpiRaw.astype( Number ));  
        }
          
        snapshotData.CreateValue( kpiName, kpiValue );
      }
    }
        
  *]
}