Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod GetProcessQuantity ( 
 | 
  Period_MP period, 
 | 
  Lane lane, 
 | 
  ProductInStockingPoint_MPs pisps, 
 | 
  ProductInStockingPoint_MP targetpisp, 
 | 
  Boolean isdependentdemand, 
 | 
  Boolean isupstream, 
 | 
  output String tooltip 
 | 
) declarative remote as Real 
 | 
{ 
 | 
  Description: 'Return quantities of a lane to pisps in a period or pisp to a lane in a period' 
 | 
  TextBody: 
 | 
  [* 
 | 
    value := 0.0; 
 | 
     
 | 
    // Insert table tag for tooltip 
 | 
    // Lane name 
 | 
    tooltip := "<table>"; 
 | 
    tooltip := tooltip + '<tr><td><b>Lane: </b></td><td>'  
 | 
               + lane.Name() + '</td></tr>'; 
 | 
     
 | 
    // Unit name 
 | 
    tooltip := tooltip + '<tr><td><b>Unit: </b></td><td>'  
 | 
               + lane.Unit().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>'; 
 | 
     
 | 
    // Lanelegs and products headers 
 | 
    tooltip := tooltip + '<table><tr><td><b>Lane leg:</b></td><td><b>'  
 | 
               + select( pisps, Elements, e, true ).Product_MP().Name() + ' quantity: </b></td></tr>'; 
 | 
     
 | 
    if( isdependentdemand ) 
 | 
    { 
 | 
      if( not isupstream ) 
 | 
      { 
 | 
        traverse( lane, LaneLeg.Trip.PeriodTaskLaneLeg.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 
 | 
      { 
 | 
        lanelegs := selectset( lane, LaneLeg, ll, 
 | 
                               ll.AsDestinationStockingPointLeg().StockingPoint_MP() = targetpisp.StockingPoint_MP() ); 
 | 
     
 | 
        traverse( lanelegs, Elements.Trip.PeriodTaskLaneLeg.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 
 | 
    { 
 | 
      if( isupstream ) 
 | 
      { 
 | 
        traverse( lane, LaneLeg.Trip.PeriodTaskLaneLeg.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>'; 
 | 
                  } 
 | 
      } 
 | 
      else 
 | 
      { 
 | 
        lanelegs := selectset( lane, LaneLeg, ll, 
 | 
                               ll.AsOriginStockingPointLeg().StockingPoint_MP() = targetpisp.StockingPoint_MP() ); 
 | 
         
 | 
        traverse( lanelegs, Elements.Trip.PeriodTaskLaneLeg.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>';                
 | 
                  } 
 | 
      } 
 | 
    }  
 | 
     
 | 
    tooltip := tooltip + '</table>'; 
 | 
     
 | 
    return value; 
 | 
  *] 
 | 
} 
 |