| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetCumulativeProduction ( | 
|   const IncomingShelfLifeDay itday | 
| ) const as Real | 
| { | 
|   TextBody: | 
|   [* | 
|     // compute cumulative production for pispip when restricted to 'itday'  | 
|      | 
|     value := 0.0;  | 
|     productintrips := this.GetIncomingProductInTrips( itday); // incoming trips to pispip.ProductInStockingPoint, that add itday to shelf life, and that depart in period pispip.Period | 
|     value := value + sum( productintrips, Elements, pit, true, pit.Quantity()) ;  | 
|      | 
|     // New supply, inventory supply and actual goes into itday with 0 lead time | 
|     if ( itday.ShelfLifeDays() = 0 )  | 
|     { | 
|       supplynontrip := sum( this, Supply_MP.astype( NewSupply ), ns, not ns.IsNewSupplyOfTrip(), ns.Quantity() );  | 
|       value := value + supplynontrip   | 
|       value := value - sum( productintrips, Elements, pit, true, pit.Quantity() );  | 
|       // inventory supply in future period with manufacture date = current period start is considered production for the current period | 
|       nextpsipipstoconsider := this.GetNextPISPIPWithinShelfLife( DateTime::MaxDateTime() );  | 
|       traverse( nextpsipipstoconsider, Elements.Supply_MP.astype( InventorySupply ), invsup, invsup.GetManufacturingPISPIP() = this )  | 
|       { | 
|         value := value + invsup.Quantity();  | 
|       } | 
|        | 
|       //contributions: inventory actual'; | 
|       lastpispipwithactual := this.ProductInStockingPoint_MP().LastPlanningPISPIPWithActual();  | 
|       if ( this.IsPeriodFrozen() and not isnull( lastpispipwithactual ) )  | 
|       { | 
|         value := 0.0;  | 
|         actualtoconsider := selectset( lastpispipwithactual, ActualProductInStockingPointInPeriod, a, true, true );  | 
|         traverse( actualtoconsider, Elements, actualpispip, actualpispip.GetManufacturingPISPIP() = this  )  | 
|         { | 
|           value := value + actualpispip.ActualInventoryLevelEnd();  | 
|         } | 
|       }   | 
|     } | 
|      | 
|     value := value +  guard( this.PreviousPlanningPISPIP().GetCumulativeProduction( itday ), 0.0 );  | 
|      | 
|     return value; | 
|   *] | 
| } |