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
Quintiq file version 2.0
#parent: #root
MethodOverride GetCost (
  const AccountAssignment accountassignment,
  const UnitPeriod unitperiod
) const declarative remote as const AccountCost
{
  TextBody:
  [*
    accountcost := constnull( AccountCost ); 
    lane := this.Lane();
    
    // Refer to lane leg costs when boolean is true, if it does not have cost, then return null account cost
    accountcost := maxselect( this,
                              LaneLegCost,
                              cost,
                              cost.AccountAssignment() = accountassignment
                              and cost.Start() <= unitperiod.StartDate(),
                              cost.Start() );
    
    // If boolean is false, use lane's cost.
    if( isnull( accountcost ) )
    {
      accountcost := maxselect( lane,
                                LaneCost,
                                cost,
                                cost.AccountAssignment() = accountassignment
                                and cost.Start() <= unitperiod.StartDate(),
                                cost.Start() );
    }
    
    return accountcost;
  *]
}