lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
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
Quintiq file version 2.0
#parent: #root
MethodOverride GetVolumeAccountValueInPeriod (
  Period_MP period
) declarative remote as Real
{
  TextBody:
  [*
    /* For the sum, we need to compare the number of period.UnitPeriod and 
     the number of UnitAccount.UnitAccountInPeriodForVolume, we use the traverse with the lowest
     number to have the fastest calculation time.
    
     Example : period.UnitPeriod = 6343 and UA.UAIPFV = 7
     The total time is 95000 if using first sum and 19000 if using second sum */
    
    value := 0.0;
    
    if( period.UnitPeriod( relsize ) * this.Unit().UnitAccount( relsize ) < this.UnitAccountInPeriodForVolume( relsize ) )
    {
      value := sum( period, UnitPeriod.UnitAccountInPeriodForVolume, uaip,
                    guard( uaip.UnitAccount() = this, false ),
                    uaip.TotalBaseCost() );
    }
    else
    {
      value := sum( this, UnitAccountInPeriodForVolume, uaipv,
                    uaipv.UnitPeriod().Period_MP() = period ,
                    uaipv.TotalBaseCost() );
    }
    return value;
  *]
}