| Quintiq file version 2.0 | 
| #parent: #root | 
| Method DisplayGoalValue ( | 
|   CapacityPlanningSuboptimizer_CapacityPlanningAlgorithm program, | 
|   const RunContextForCapacityPlanning runcontext | 
| ) | 
| { | 
|   Description: 'Display goal values' | 
|   TextBody: | 
|   [* | 
|     slmp := this.CurrentSubOptimizerLevel().GetStrategyLevelMacroPlan();  | 
|      | 
|     info( Translations::Algorithm_MP_InfoGoalValuesForExecution( [String]this.CurrentSubOptimizerLevel().LevelNumber() ) ); | 
|     info( Translations::Algorithm_MP_InfoScalingFactors( [String]runcontext.MassScalingFactor(), [String]runcontext.MonetaryScalingFactor() ) ); | 
|     info( Translations::Algorithm_MP_InfoGoalScalingFactorForLevel( [String] slmp.GoalScaling() ) ); | 
|     info( Translations::Algorithm_MP_InfoRelativeGoalSlackForLevel( [String] slmp.RelativeGoalSlack() ) ); | 
|      | 
|     weightlevels := runcontext.WeightLevelNonFinancial();  | 
|      | 
|     traverse( this, MacroPlan.StrategyMacroPlan.StrategyLevelMacroPlan, sl )  | 
|     { | 
|       if( weightlevels.SlackLevel() = sl.Level() and weightlevels.SlackWeight() > 0.0 ) | 
|       { | 
|          info( this.GetPrefix( program, weightlevels.SlackLevel() ) | 
|               + Translations::Algorithm_MP_InfoTotalSlack( [String]program.TotalSlackVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.StockingPointCapacityLevel() = sl.Level() and weightlevels.StockingPointCapacityWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.StockingPointCapacityLevel() ) | 
|               + Translations::Algorithm_MP_InfoStockingPointCapacity( [String]program.TotalStockingPointCapacityVariables().Get().OptimalValue() ) ); | 
|       } | 
|        | 
|       if( runcontext.UseBlending() and weightlevels.BlendingLevel() = sl.Level() ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.BlendingLevel() ) | 
|               + Translations::Algorithm_MP_InfoBlending( [String]program.TotalBlendingVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.CampaignLevel() = sl.Level() and weightlevels.CampaignWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.CampaignLevel() ) | 
|               + Translations::Algorithm_MP_InfoCampaign( [String]program.TotalCampaignVariables().Get().OptimalValue() ) ); | 
|       } | 
|        | 
|       if( weightlevels.UnitCapacityLevel() = sl.Level() and weightlevels.UnitCapacityWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.UnitCapacityLevel() ) | 
|               + Translations::Algorithm_MP_InfoUnitCapacity( [String]program.TotalUnitCapacityVariables().Get().OptimalValue() ) ); | 
|          | 
|         info( this.GetPrefix( program, weightlevels.UnitCapacityLevel() ) | 
|               + Translations::Algorithm_MP_InfoUnitSecondaryCapacity( [String]program.TotalUnitSecondaryCapacityVariables().Get().OptimalValue() ) ); | 
|       } | 
|        | 
|       if( weightlevels.InventoryMixBalancingLevel() = sl.Level() and weightlevels.InventoryMixBalancingWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.InventoryMixBalancingLevel() ) | 
|               + Translations::Algorithm_MP_InfoInventoryMixBalancing( [String]program.TotalInventoryMixBalancingVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.LotSizeLevel() = sl.Level() and weightlevels.LotSizeWeight() > 0.0 ) | 
|       { | 
|        info( this.GetPrefix( program, weightlevels.LotSizeLevel() ) | 
|               + Translations::Algorithm_MP_InfoLotSize( [String]program.TotalLotSizeVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.MaximumInventoryLevel() = sl.Level() and weightlevels.MaximumInventoryLevelWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.MaximumInventoryLevel() ) | 
|               + Translations::Algorithm_MP_InfoMaximumInventoryLevel( [String]program.TotalMaximumInventoryLevelVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.MinimumInventoryLevel() = sl.Level() and weightlevels.MinimumInventoryLevelWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.MinimumInventoryLevel() ) | 
|               + Translations::Algorithm_MP_InfoMinimumInventoryLevel( [String]program.TotalMinimumInventoryLevelVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.MaximumSupplyLevel() = sl.Level() and weightlevels.MaximumSupplyWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.MaximumSupplyLevel() ) | 
|               + Translations::Algorithm_MP_InfoMaximumSupply( [String]program.TotalMaximumSupplyVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.MinimumSupplyLevel() = sl.Level() and weightlevels.MinimumSupplyWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.MinimumSupplyLevel() ) | 
|               + Translations::Algorithm_MP_InfoMinimumSupply( [String]program.TotalMinimumSupplyVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.MinimumUnitCapacityLevel() = sl.Level() and weightlevels.MinimumUnitCapacityWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.MinimumUnitCapacityLevel() ) | 
|               + Translations::Algorithm_MP_InfoMinimumUnitCapacity( [String]program.TotalMinimumUnitCapacityVariables().Get().OptimalValue() ) ); | 
|                | 
|         info( this.GetPrefix( program, weightlevels.MinimumUnitCapacityLevel() ) | 
|               + Translations::Algorithm_MP_InfoMinimumUnitSecondaryCapacity( [String]program.TotalMinimumUnitSecondaryCapacityVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.PostponementPenaltyLevel() = sl.Level() and weightlevels.PostponementPenaltyWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.PostponementPenaltyLevel() ) | 
|               + Translations::Algorithm_MP_InfoPostponementPenalty( [String]program.TotalPostponementPenaltyVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.ProcessMaximumQuantityLevel() = sl.Level() and weightlevels.ProcessMaximumQuantityWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.ProcessMaximumQuantityLevel() ) | 
|               + Translations::Algorithm_MP_InfoProcessMaximumQuantity( [String]program.TotalProcessMaximumQuantityVariables().Get().OptimalValue() ) ); | 
|       } | 
|        | 
|       if( weightlevels.SalesDemandPriorityLevel() = sl.Level() and weightlevels.SalesDemandPriorityWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.SalesDemandPriorityLevel() ) | 
|               + Translations::Algorithm_MP_InfoSalesDemandPriority( [String]program.TotalSalesDemandPriorityVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.FulfillmentTargetLevel() = sl.Level() and weightlevels.FulfillmentTargetWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.FulfillmentTargetLevel() ) | 
|               + Translations::Algorithm_MP_InfoFulfillmentTarget( [String]program.TotalFulfillmentTargetVariables().Get().OptimalValue() ) ); | 
|       } | 
|        | 
|       if( weightlevels.FulfillmentLevel() = sl.Level() and weightlevels.FulfillmentWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.FulfillmentLevel() ) | 
|               + Translations::Algorithm_MP_InfoFulfillment( [String]program.TotalFulfillmentVariables().Get().OptimalValue() ) ); | 
|       } | 
|        | 
|       if( weightlevels.ServiceLevelLevel() = sl.Level() and weightlevels.ServiceLevelWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.ServiceLevelLevel() ) | 
|               + Translations::Algorithm_MP_InfoServiceLevel( [String]program.TotalServiceLevelVariables().Get().OptimalValue() ) ); | 
|       } | 
|        | 
|       if( weightlevels.SupplyTargetLevel() = sl.Level() and weightlevels.SupplyTargetWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.SupplyTargetLevel() ) | 
|               + Translations::Algorithm_MP_InfoSupplyTarget( [String]program.TotalSupplyTargetVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.TargetInventoryLevel() = sl.Level() and weightlevels.TargetInventoryLevelWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.TargetInventoryLevel() ) | 
|               + Translations::Algorithm_MP_InfoTargetInventoryLevel( [String]program.TotalTargetInvLevelVariables().Get().OptimalValue() ) ); | 
|       } | 
|            | 
|       if( runcontext.UseExpiredQty() and weightlevels.ExpiredQtyLevel() = sl.Level() ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.ExpiredQtyLevel() ) | 
|               + Translations::Algorithm_MP_InfoTotalExpiredQty( [String] program.TotalExpiredQtyVariables().Get().OptimalValue() )); | 
|       } | 
|        | 
|       if( weightlevels.CO2EmissionLevel() = sl.Level() and weightlevels.CO2EmissionWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.CO2EmissionLevel() ) | 
|               + Translations::Algorithm_MP_InfoCO2Emission( [String]program.TotalCO2EmissionVariables().Get().OptimalValue() ) ); | 
|       } | 
|       if( weightlevels.ShiftPatternChangesPenaltyLevel() = sl.Level() and weightlevels.ShiftPatternChangesPenaltyWeight() > 0.0 ) | 
|       { | 
|         info( this.GetPrefix( program, weightlevels.ShiftPatternChangesPenaltyLevel() ) | 
|               + Translations::Algorithm_MP_InfoShiftPatternChangesPenalty( [String] program.TotalShiftPatternChangesPenaltyVariables().Get().OptimalValue() ) ); | 
|       } | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |