Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Function CalcShelfLifeEndAgeAndQuantityVectorAsBinaryValue 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Get the shelf life supply vectors 
 | 
    quantityvector := RealVector::Construct( this.ShelfLifePlannedEndQuantityVectorAsBinaryValue() ); 
 | 
    agevector := RealVector::Construct( this.ShelfLifePlannedEndAgeVectorAsBinaryValue() ); 
 | 
    pispippl := this.ProductInStockingPointInPeriodPlanningLeaf(); 
 | 
     
 | 
    // Check if the product has shelf life or maturation 
 | 
    // Also check if this PISPIP has actuals, if it has, inventory end will use the value from actuals instead 
 | 
    if( guard( pispippl.ProductInStockingPoint_MP().Product_MP().HasShelfLifeOrMaturation(), 
 | 
               false ) 
 | 
        and pispippl.Period_MP().IsHistorical()  
 | 
        and pispippl.GetHasActual() ) 
 | 
    { 
 | 
      quantityvector.Resize( 0 ); 
 | 
      agevector.Resize( 0 ); 
 | 
       
 | 
      traverse( pispippl, ActualProductInStockingPointInPeriod, actualpispip, 
 | 
                actualpispip.ActualInventoryLevelEnd() > 0 ) 
 | 
      { 
 | 
        agevector.Append( actualpispip.Age() ); 
 | 
        quantityvector.Append( actualpispip.ActualInventoryLevelEnd() ); 
 | 
      } 
 | 
       
 | 
      ShelfLife::MergeVectorAccordingToAgeAndExpiration( quantityvector, agevector, pispippl, pispippl.End() ); 
 | 
    } 
 | 
     
 | 
    this.ShelfLifeEndAgeVectorAsBinaryValue( agevector.AsBinaryValue() ); 
 | 
    this.ShelfLifeEndQuantityVectorAsBinaryValue( quantityvector.AsBinaryValue() ); 
 | 
  *] 
 | 
} 
 |