yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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;
  *]
}