| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod GetProcessQuantity ( | 
|   Period_MP period, | 
|   Operations operations, | 
|   ProductInStockingPoint_MPs pisps, | 
|   Boolean isdependentdemand, | 
|   output String tooltip | 
| ) declarative remote as Real | 
| { | 
|   Description: 'Return quantities of operations to pisps in a period or pisp to operations in a period' | 
|   TextBody: | 
|   [* | 
|     value := 0.0; | 
|      | 
|     // Insert table tag for tooltip | 
|     // Routing step name | 
|     routingstep := select( operations, Elements.RoutingStep, rs, true ); | 
|     tooltip := "<table>"; | 
|     tooltip := tooltip + '<tr><td><b>Routing step: </b></td><td>'  | 
|                + routingstep.Name() + '</td></tr>'; | 
|      | 
|     // Routing name | 
|     tooltip := tooltip + '<tr><td><b>Routing: </b></td><td>'  | 
|                + routingstep.Routing().Name() + '</td></tr>'; | 
|      | 
|     // Period | 
|     tooltip := tooltip + '<tr><td><b>Period: </b></td><td>'  | 
|                + period.StartDate().Format( 'D-MM-Y' ) + ' until ' + period.EndDate().Format( 'D-MM-Y' ) + '</td></tr>';  | 
|      | 
|     // A separating line | 
|     tooltip := tooltip + '</table><hr>'; | 
|      | 
|     // Units and products headers | 
|     tooltip := tooltip + '<table><tr><td><b>Unit:</b></td><td><b>'  | 
|                + select( operations, Elements.OperationOutput, e, true ).ProductInStockingPoint_MP().Product_MP().Name() + ' quantity: </b></td></tr>'; | 
|      | 
|     if( isdependentdemand ) | 
|     { | 
|       traverse( operations, Elements.PeriodTask_MP.DependentDemand, dd,  | 
|                 exists( pisps, Elements, e, e = dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP() ) | 
|                 and dd.Start() >= period.Start() | 
|                 and dd.End() <= period.End() ) | 
|                 { | 
|                     value := value + dd.Quantity(); | 
|                     tooltip := tooltip + '<tr><td>' + dd.PeriodTask_MP().Process_MP().Name() + '</td><td>'  | 
|                                + dd.Quantity().AsQUILL() + '</td></tr>';               | 
|                 } | 
|     } | 
|     else | 
|     { | 
|       traverse(  operations, Elements.PeriodTask_MP.NewSupply, ns,  | 
|                  exists( pisps, Elements, e, e = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP() ) | 
|                  and ns.Start() >= period.Start() | 
|                  and ns.End() <= period.End() ) | 
|                  { | 
|                     value := value + ns.Quantity(); | 
|                     tooltip := tooltip + '<tr><td>' + ns.PeriodTask_MP().Process_MP().Name() + '</td><td>'  | 
|                                + ns.Quantity().AsQUILL() + '</td></tr>';                 | 
|                  }   | 
|     } | 
|      | 
|     // Sum for multi operation routing step | 
|     if( operations.Size() > 1 ) | 
|     { | 
|       tooltip := tooltip + '<tr><td><b>All</td><td>' + value.AsQUILL() + '</td></tr></table>'; | 
|     } | 
|      | 
|     return value; | 
|   *] | 
| } |