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 := ""; tooltip := tooltip + ''; // Routing name tooltip := tooltip + ''; // Period tooltip := tooltip + ''; // A separating line tooltip := tooltip + '
Routing step: ' + routingstep.Name() + '
Routing: ' + routingstep.Routing().Name() + '
Period: ' + period.StartDate().Format( 'D-MM-Y' ) + ' until ' + period.EndDate().Format( 'D-MM-Y' ) + '

'; // Units and products headers tooltip := tooltip + ''; 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 + ''; } } 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 + ''; } } // Sum for multi operation routing step if( operations.Size() > 1 ) { tooltip := tooltip + '
Unit:' + select( operations, Elements.OperationOutput, e, true ).ProductInStockingPoint_MP().Product_MP().Name() + ' quantity:
' + dd.PeriodTask_MP().Process_MP().Name() + '' + dd.Quantity().AsQUILL() + '
' + ns.PeriodTask_MP().Process_MP().Name() + '' + ns.Quantity().AsQUILL() + '
All' + value.AsQUILL() + '
'; } return value; *] }