| 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() ); | 
|   *] | 
| } |