| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SetMessageBenchmarking ( | 
|   RunContextForCapacityPlanning runcontext | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     if ( runcontext.IsOTS() )  | 
|     { | 
|       mp := this.MacroPlan();  | 
|        | 
|       pispip := counter( mp, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriodPlanning, p, true );  | 
|       sdipcount := counter( mp, SalesSegment_MP.SalesDemandInPeriod, sdip, true, true);  | 
|       pit := counter( mp, Unit.Lane.LaneLeg.Trip.ProductInTrip, pit, true, true ) | 
|        | 
|       ptocount := counter( mp, Unit.Operation.PeriodTaskOperation, pto, true, true )  | 
|       triplot := counter(  mp, Unit.Lane.LaneLeg.Trip, trip, true, trip.HasLotSize() ) | 
|       ptolot := counter( mp, Unit.Operation.PeriodTaskOperation, pto, true, pto.Operation().HasLotSize() ) | 
|       ptoonetime := counter( mp, Unit.Operation.PeriodTaskOperation, pto, true, pto.Operation().HasOneTimeCost() );  | 
|       inputlot := counter(  mp, Unit.Operation.PeriodTaskOperation.DependentDemand, dd, dd.ProductInStockingPointInPeriodPlanning().ProductInStockingPoint_MP().HasInputLotSize() )  | 
|       ptominqty := counter( mp, Unit.Operation.PeriodTaskOperation, pto, true, pto.Operation().HasMinimumQuantity() );  | 
|       hassmooth := exists( mp, StrategyMacroPlan.StrategyLevelMacroPlan.KPIWeightMacroPlan, k, true, k.KPIName() ~ 'mooth' ) | 
|       hasblend := exists( mp, StrategyMacroPlan.StrategyLevelMacroPlan.KPIWeightMacroPlan, k, true, k.KPIName() ~ 'lending' ) | 
|       hasmix := exists( mp, StrategyMacroPlan.StrategyLevelMacroPlan.KPIWeightMacroPlan, k, true, k.KPIName() ~ 'mix' )  | 
|       postponenr := sum( mp, SalesSegment_MP.SalesDemandInPeriod, sdip, sdip.CanBePostponed(), sdip.PostponementSpecification().MaxPostponementPeriod() )  | 
|       nrlevel := mp.StrategyMacroPlan().MaxActiveLevel();  | 
|       periods := counter( mp, PlanningPeriod, p, true, not p.IsHistorical() ) | 
|       products := counter( mp, Product_MP, p, true, true ) | 
|       spoints := counter( mp, StockingPoint_MP, s, true, true );  | 
|       pisp := counter(  mp, Product_MP.ProductInStockingPoint_MP, pisp, true, true )  | 
|       up := counter( mp, Unit.PlanningUnitPeriod, up, true, true ) | 
|        | 
|       sep := '_';  | 
|       msg := 'pispip:' + [String]pispip + sep + | 
|              'sdip:' + [String] sdipcount + sep +  | 
|              'pit:' + [String] pit + sep +  | 
|       'ptocount:' + [String]ptocount + sep +   | 
|       'triplot:' + [String]triplot + sep + | 
|       'ptolot:' + [String]ptolot + sep + | 
|       'ptoonetime:' + [String]ptoonetime + sep + | 
|       'inputlot:' + [String]inputlot + sep + | 
|       'ptominqty:' + [String]ptominqty + sep + | 
|       'hassmooth:' + ifexpr( hassmooth, 'true', 'false' ) + sep + | 
|       'hasblend:' + ifexpr( hasblend, 'true', 'false' ) + sep + | 
|       'hasmix:' + ifexpr( hasmix, 'true', 'false' ) + sep + | 
|       'postponenr:' + [String]postponenr + sep + | 
|       'nrlevel:' + [String]nrlevel + sep + | 
|       'periods:' + [String]periods + sep + | 
|       'products:' + [String]products + sep + | 
|       'sp:' + [String]spoints + sep + | 
|       'pisp:' + [String]pisp + sep + | 
|       'up:' + [String]up + sep | 
|        | 
|       runcontext.Run().Comment( msg );  | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |