Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcAge 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    value := 0.0; 
 | 
    pispip := this.ProductInStockingPointInPeriod(); 
 | 
     
 | 
    /* End age of actual is the duration between manufactured date to period end date 
 | 
       rounded up to the multiple of period's duration. 
 | 
      e.g. actual in W2, manufactured on 3-Jan, assuming W1: 1 Jan to 8 Jan, W2: 8 Jan to 15 Jan 
 | 
      age = 15-3 rounded up to multiple of 7 = 14 
 | 
    */ 
 | 
    if ( not isnull( pispip ) and this.ProductInStockingPoint_MP().Product_MP().HasShelfLifeOrMaturation() ) 
 | 
    { 
 | 
      manufaturedate := this.ManufacturedDate(); 
 | 
      date := pispip.End(); 
 | 
      period := pispip.Period_MP(); 
 | 
       
 | 
      value := ifexpr( manufaturedate.IsFinite() and date.IsFinite(), 
 | 
                       ShelfLife::GetSupplyAge( manufaturedate, date.Date(), period ), 0.0  ); 
 | 
    }   
 | 
     
 | 
    this.Age( value ); 
 | 
  *] 
 | 
} 
 |