| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetNextPISPIPWithinShelfLife ( | 
|   DateTime lastpispipstart | 
| ) const as constcontent owning ProductInStockingPointInPeriodPlannings | 
| { | 
|   TextBody: | 
|   [* | 
|     shelflife := this.ProductInStockingPoint_MP().Product_MP().ShelfLife(); | 
|     pispips := construct( ProductInStockingPointInPeriodPlannings, constcontent ); | 
|     current := this;  | 
|     repeat | 
|     { | 
|       pispips.Add( current );  | 
|       shelflife := shelflife - current.Period_MP().DurationInDays();  | 
|       current := current.NextPlanningPISPIP();  | 
|     } | 
|     until ( shelflife < 0 or isnull( current ) or current.Start() > lastpispipstart ) | 
|     if ( not isnull( current ) and not isnull( current.NextPlanningPISPIP() ) and current.NextPlanningPISPIP().Start() <= lastpispipstart )  | 
|     { | 
|       pispips.Add( current ); // add one more because we can compose trips near end and beginning of periods | 
|     } | 
|      | 
|     return &pispips; | 
|   *] | 
| } |