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