| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 | | Quintiq file version 2.0 |  | #parent: #root |  | Method CreateTestData |  | { |  |   Description: 'Create test data in MacroPlan and 2 new optimizer strategies in ScenarioManager' |  |   TextBody: |  |   [* |  |     keys := DatasetController::Find( DatasetFindOptions::Construct( this.GetUTFDatasetname() ) ); |  |     if ( keys.Size() = 0 )      |  |     { |  |        wait := stream[Void]::Wait( Duration::Seconds( 15 ) ); |  |        this->After( wait )->CreateTestData() |  |     } |  |     else |  |     {                              |  |      opt := DatasetFindOptions::Construct( this.GetUTFDatasetname() );                                |  |      mp := MDSMacroPlan::Find( opt );   |  |      mp->( macroplan ) |  |      { |  |         macroplan.PeriodSpecification_MP( relflush ); |  |         uom := macroplan.FindUnitOfMeasure( "Ton" ); |  |         currency := macroplan.FindCurrency( "EUR" ); |  |         sop := macroplan.StartOfPlanning().Date(); |  |         sopyear := sop.Year(); |  |         unitname := "Production"; |  |         spname := "SP"; |  |         isfromdb := false; |  |         jan5Start := Date::Construct( sopyear, 1, 5 ); |  |         jan8Start := Date::Construct( sopyear, 1, 8 ); |  |         priority := "Normal"; |  |         salessegmentname := "All sales segment"; |  |          |  |         gp := macroplan.GlobalParameters_MP(); |  |         gp.IsUsableIfExpiredWithinPeriod( true ); |  |         gp.IsUsableIfMatureWithinPeriod( true ); |  |          |  |         PeriodSpecification_MP::Create( "wk", macroplan, "Week", 1, macroplan.StartOfPlanning(), 2, 6, false, true, isfromdb );  |  |         //Create 2 Products |  |         outputA := Product_MP::Create( macroplan, "Output A","","Output A", uom.Name(), false, "", true, 7.0, false, 0.0, false, false, false, isfromdb ); |  |         outputB := Product_MP::Create( macroplan, "Output B","","Output B", uom.Name(), false, "", true, 7.0, false, 0.0, false, false, false, isfromdb ); |  |         // Create entities ( Unit and Stockingpoint ) |  |         unit := Unit::Create( unitname, macroplan, unitname , uom, null( Unit ), "Infinite", "", null( SupplyChainView ), 0,0, isfromdb ); |  |         sp := StockingPoint_MP::Create( spname, macroplan,unit, spname, "ORANGE SP", uom, currency, false, Date::MinDate(), Date::MaxDate(),null( Group ), "", "", "", "", isfromdb ); |  |         // Create stockingpoint capacity |  |         sp.SetCapacityFromPeriodOnwards( Date::Construct( sopyear -1, 12, 18 ), 100.0 ); |  |          |  |         // Create ActualProductInStockingPointInPeriod |  |         ActualProductInStockingPointInPeriod::Create( macroplan, outputB, sp, Date::Construct( sopyear -1, 12, 26 ), Date::Construct( sopyear -1, 12, 25 ), 100.0, "", isfromdb ); |  |         // Create routing, routingstep, operation and operation cost |  |         routing := Routing::Create( macroplan, unitname, unitname, Date::MinDate(), Date::MaxDate(), true, isfromdb ) |  |         units := construct( Units ); |  |         units.Add( unit); |  |         operations := routing.CreateRoutingStepAndAddUnits( units ); |  |         operation := operations.Element( 0 ); |  |         account := select(  macroplan, Account_MP, acc, acc.Name() = 'Operating cost', true ); |  |         OperationCost::Create( "1", operation, account, "Volume", sop, "Day", 1, 10.0, isfromdb );  |  |         OperationBOM::Create( operation, outputA.ID(), spname, false, 1, false, 1.0, 1.0, 1.0, isfromdb, false ); |  |         OperationBOM::Create( operation, outputB.ID(), spname, false, 1, false, 1.0, 1.0, 1.0, isfromdb, false );  |  |         // Create 3 Forecasts |  |         Forecast::Create( outputA, sp, "1", jan5Start, jan5Start + 1, 100.0, 1000.0, priority, salessegmentname,currency.ID(), uom.Name(),0.0, false, isfromdb ); |  |         Forecast::Create( outputA, sp, "2", jan8Start, jan8Start + 7, 100.0, 1.0, priority, salessegmentname,currency.ID(), uom.Name(),0.0, false, isfromdb ); |  |         Forecast::Create( outputB, sp, "3", sop, jan8Start, 100.0, 1.0, priority, salessegmentname,currency.ID(), uom.Name(),0.0, false, isfromdb ); |  |          |  |         // Create 2 new strategies |  |         scenariomanager := this.GetScenarioManagerStream() |  |         scenariomanager->( sm ) |  |         { |  |          // Copy from default strategy |  |           strategy1 := this->CopyStategy( 'Default', sm, "Early expired 1" ) |  |           strategy := strategy1->( strategy1) |  |           { |  |             // Deactivate all the goals |  |             traverse( strategy1, KPIWeight.KPI, kpi ) |  |             { |  |               this.DeactivateGoal( strategy1, kpi.Name() ); |  |             } |  |             // Only activate the following goals |  |             this.ActivateGoal( strategy1, "Stocking point capacity", 1, 1.0 ); |  |             this.ActivateGoal( strategy1, "Unit capacity", 1, 1.0 ); |  |             this.ActivateGoal( strategy1, "Fulfillment", 2, 1.0 ); |  |             this.ActivateGoal( strategy1, "Inventory holding cost", 3, 1.0 ); |  |             this.ActivateGoal( strategy1, "Operating cost", 3, 1.0 ); |  |             this.ActivateGoal( strategy1, "Sales", 3, 1.0 ); |  |             return strategy1; |  |             |  |           } |  |          strategy->( strategy1) |  |          { |  |             // Copy strategy Early expired 1 into Early expired 2 |  |             strategy2 := this.CopyStategy( "Early expired 1", sm, "Early expired 2" ); |  |             // Activate the following goal on top of goals from Early expired 1 |  |             this.ActivateGoal( strategy2, "Total expired quantity", 1, 1.0 ); |  |          } |  |        } |  |      }  |  |     } |  |   *] |  |   InterfaceProperties { Accessibility: 'Module' } |  | } | 
 |