| Quintiq file version 2.0 | 
| #parent: #root | 
| Function CalcShelfLifeAgeAndQuantityVectorAsBinaryValue | 
| { | 
|   TextBody: | 
|   [* | 
|     // Get the destination PISPIPPL and Product | 
|     destination_pispippl := this.ProductInStockingPointInPeriodPlanningLeaf(); | 
|     destination_product_mp := destination_pispippl.ProductInStockingPoint_MP().Product_MP(); | 
|      | 
|     // Check if destination product has shelf life or maturation | 
|     if( guard( destination_product_mp.HasShelfLifeOrMaturation(), | 
|                false ) ) | 
|     { | 
|       quantityvector := RealVector::Construct(); | 
|       agevector := RealVector::Construct(); | 
|      | 
|      | 
|       // Check if this supply is created due to laneleg or routing operation | 
|       if( this.PeriodTask_MP().istype( PeriodTaskLaneLeg ) ) | 
|       {  | 
|         // If this new supply is being transported with trip, | 
|         // We will not track the age of product at the origin stocking point. E.g out of 100 NS, 20 is 1 day old, 80 is 2 days old. | 
|         // So it's sufficient to just set all of their age to the leadtime. E.g. all 100 NS are 3 days old when leadtime is 3 days. | 
|         age := this.PeriodTask_MP().astype( PeriodTaskLaneLeg ).Trip().GetShelfLifeAgeToAdd(); | 
|         quantityvector.Append( this.Quantity() ); | 
|         agevector.Append( age ); | 
|       } | 
|       else | 
|       { | 
|         // If this new supply is created using routing operation | 
|         // We assume that the output is a different product altogether | 
|         // therefore, the age of the product is 0 | 
|         quantityvector.Append( this.Quantity() ); | 
|         agevector.Append( 0.0 ); | 
|       } | 
|        | 
|       // Merge the vectors | 
|       ShelfLife::MergeVectorAccordingToAgeAndExpiration( quantityvector, agevector, | 
|                                                          destination_pispippl, | 
|                                                          destination_pispippl.Start() ); | 
|      | 
|       this.ShelfLifeQuantityVectorAsBinaryValue( quantityvector.AsBinaryValue() ); | 
|       this.ShelfLifeAgeVectorAsBinaryValue( agevector.AsBinaryValue() ); | 
|     } | 
|   *] | 
| } |