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