From 74438a1bb35d23639e050f3afbcaa2199780af5d Mon Sep 17 00:00:00 2001
From: yypsybs <yypsybs@foxmail.com>
Date: 星期五, 13 十月 2023 10:09:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/_ROOT_Component_FormShowInterfaceData.def                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuConversionFactor.def                                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuProduct_MP.def                                                                   |   10 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def                                                                                        |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def                                      |   20 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperationBOM.def                                                               |   10 
 _Main/UI/MacroPlannerWebApp/Views/冲减.vw                                                                                                                               |  900 +++++++
 _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def                                                      |    9 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def                                                                    |    8 
 _Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                   |   31 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def                                                                           |   12 
 _Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                        |   33 
 _Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl                                                                                                         |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def                                                                             |    2 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def                                                                   |   18 
 _Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl                                                                                         |   54 
 _Main/UI/MacroPlannerWebApp/Views/Test.vw                                                                                                                             |  285 --
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelSalesSegment_MP#154.def                                                                    |   15 
 _Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl                                                                   |    8 
 _Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                       |   33 
 _Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                |   31 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def                                                                           |   12 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageProduct_MP.def                                                                 |   10 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def                                                                |    2 
 _Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl                                                                                        |   61 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def                                                                         |    6 
 _Main/UI/MacroPlannerWebApp/Views/面板拉料_各事业部操作.vw                                                                                                                      |    2 
 _Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def                                                                             |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListProduct_MP.def                                                                              |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuEdit_OnClic.def        |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageConversionFactor.def                                                           |   10 
 _Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def                                                                               |   12 
 _Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl                                                                             |   16 
 _Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def                                                                 |   23 
 _Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl                                                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def |   20 
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def                                         |    2 
 _Main/UI/MacroPlannerWebApp/Views/填产.vw                                                                                                                               |  607 ++++
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def                                               |   12 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListConversionFactor.def                                                                        |   41 
 _Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                 |   34 
 _var/_Main/ProjSettings/MacroPlanner/Views/X_分析视图_[414702.1.50321581].vw                                                                                              | 2370 ++++++++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelProduct_MP.def                                                                             |   15 
 _Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders1.qbl                                                                            |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperation.def                                                                              |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def                                                                       |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperation.def                                                                  |   10 
 _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_TIANMA_JITUAN_mbMainMenu_MenuDoSync_OnClick.def                                                   |    2 
 _Main/UI/MacroPlannerWebApp/Views/接口测试.vw                                                                                                                             |  979 +++++++
 _Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl                                                                                                               |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelInterfaceDataDisplayContent.def                                                            |    7 
 _Main/BL/Type_MacroPlan/Attribute_CreatePurchaseSupplyMaterial.qbl                                                                                                    |    7 
 _Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                    |   35 
 _Main/UI/MacroPlannerWebApp/Views/对接ERP进行PR释放.vw                                                                                                                      |   79 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperationBOM.def                                                                 |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick#124.def                                               |    4 
 _Main/UI/MacroPlannerWebApp/Views/订单锁定_解锁.vw                                                                                                                          |  414 +++
 _Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def                                                                               |    6 
 _Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeMacroPlanData.qbl                                                                               |   31 
 _Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                        |   33 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews#633.def                                                              |   15 
 _Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityAllocationResults.qbl                                              |   25 
 _Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialStockingPointID.qbl                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def          |   21 
 _Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def                                     |    1 
 _Main/BL/Type_MacroPlan/Attribute_BusinessType.qbl                                                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListInterfaceDataDisplayContent.def                                                             |   41 
 _Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_ObtainOrganizationCode.qbl                                                                                      |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2.def                                                                           |   12 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageInterfaceDataDisplayContent.def                                                |   10 
 _Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl                                                                                 |   10 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def                                                                             |    2 
 _Main/BL/Type_MacroPlan/Attribute_IsKeyProduct.qbl                                                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupPlanViews_ButtonOrderLockAndUnlock_OnCl.def                        |   16 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupInventoryViews#981.def                                                          |   18 
 _Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                 |   32 
 _Main/BL/Type_MacroPlan/DefaultValue_BusinessType.qbl                                                                                                                 |    6 
 _Main/UI/MacroPlannerWebApp/Views/物料标签_计划策略.vw                                                                                                                        |  262 ++
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelConversionFactor.def                                                                       |   15 
 _Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl                                                                         |   38 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupInventoryViews_ButtonMaterialLabelingPl.def                        |   16 
 _Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_OrganizationInfomation.qbl                                                                               |    8 
 _Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeMacroPlanData.qbl                                                                                      |   33 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonOffsetting_OnClick.def                            |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def                                                                           |   12 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperationBOM.def                                                                           |   15 
 _Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl                                                                                                    |   20 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeMacroPlanData.qbl                                                            |   34 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def                                                             |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperationBOM.def                                                                            |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def                                           |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperation.def                                                                               |   41 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_AutomaticallyGenerate_OnClick.def                  |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperation.def                                                                    |   10 
 _Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl                                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def                        |   16 
 /dev/null                                                                                                                                                             |   17 
 _Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan#127.qbl                                                                                                |  122 
 _Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuInterfaceDataDisplayContent.def                                                  |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455#1.def                                              |   16 
 102 files changed, 7,118 insertions(+), 414 deletions(-)

diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl
new file mode 100644
index 0000000..a3edaf0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration3.qbl
@@ -0,0 +1,54 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod IterativeGeneration3 (
+  Supply_MP smp,
+  Number numberOfPlies,
+  Real fulfillmentQuantity
+)
+{
+  TextBody:
+  [*
+    info( "灞傛暟锛�", numberOfPlies );
+    ontype ( smp ) {
+      NewSupply as ns : {
+        info( "渚涘簲绫诲瀷锛圢ewSupply锛�", "    渚涘簲閲忥細", ns.Quantity(), "    瀹為檯鐢ㄩ噺锛�", fulfillmentQuantity );
+        ontype ( ns.PeriodTask_MP() ) {
+          PeriodTaskOperation as pto : {
+            info( "鎿嶄綔鍛ㄦ湡浠诲姟    ", "渚涘簲鏃堕棿锛�", ns.Start().Format( "Y-M2-D2" ), "    鍛ㄦ湡浠诲姟KEY锛�", pto.Key(), "    ",
+                  ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() );
+            traverse ( pto, DependentDemand, dd, dd.Quantity() > 0 ) {
+              traverse ( dd, Fulfillment, f ) {
+                smp1 := f.Supply_MP();
+                numberOfPlies++;
+                info( "--------------------------------------------------------------" );
+                fulfillmentQuantity := fulfillmentQuantity * ns.ProcessOutput().astype( OperationOutput ).Quantity() *
+                                                             dd.ProcessInput().astype( OperationInput ).Quantity();
+                CapacityAllocationResults::IterativeGeneration3( smp1, numberOfPlies, fulfillmentQuantity );
+                numberOfPlies--;
+              }
+            }
+          }
+           
+          PeriodTaskLaneLeg as ptll : {
+            targetDependentDemand := select( ptll, DependentDemand, dd, dd.ProcessInput().ProductInStockingPoint_MP().ProductID() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() and
+                                             dd.Quantity() = ns.Quantity() );
+            info( "杞﹂亾鍛ㄦ湡浠诲姟    ", "渚涘簲鏃堕棿锛�", ns.Start().Format( "Y-M2-D2" ), "    鍛ㄦ湡浠诲姟KEY锛�", ptll.Key(), "    ", 
+                  targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() );
+            traverse ( targetDependentDemand, Fulfillment, f ) {
+              smp1 := f.Supply_MP();
+              numberOfPlies++;
+              info( "--------------------------------------------------------------" );
+              CapacityAllocationResults::IterativeGeneration3( smp1, numberOfPlies, f.Quantity() );
+              numberOfPlies--;
+            } 
+          }
+        }
+      }
+          
+      InventorySupply as is : {
+        info( "渚涘簲绫诲瀷锛圛nventorySupply锛�    ", "渚涘簲鏃堕棿锛�", is.Date().Format( "Y-M2-D2" ), "    渚涘簲閲忥細", is.Quantity(), 
+              "    瀹為檯鐢ㄩ噺锛�", fulfillmentQuantity, "    ", is.ProductInStockingPoint_MP().Name() );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl
new file mode 100644
index 0000000..7000af7
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Test.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Test (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.ProductID() = "ProXOver 1 D2.6 A"        and 
+                                                                      pisp.StockingPointID() = "Carco Philadelphia" ) {
+      traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ).Supply_MP, smp, 
+               smp.ProductInStockingPointInPeriodPlanning().Start().Date() = Date::Construct( 2020, 4, 7 ) and
+               smp.Quantity() > 0 ) {                                                                  
+        CapacityAllocationResults::IterativeGeneration3( smp, 1, smp.Quantity() );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialStockingPointID.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialStockingPointID.qbl
new file mode 100644
index 0000000..d26fc6e
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialStockingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PanelMaterialStockingPointID
+{
+  #keys: '3[414702.1.15456051][414702.1.15456050][414702.1.15456052]'
+  IsReadOnly: true
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityAllocationResults.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityAllocationResults.qbl
new file mode 100644
index 0000000..494bfc6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateCapacityAllocationResults.qbl
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AutomaticallyGenerateCapacityAllocationResults (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = "ProSports Spider D2.6 M" );
+    
+    period_MPS := null( Period_MPs );
+    traverse ( macroPlan, PeriodSpecification_MP, psmp, psmp.ID() = "Planning periods" ) {
+      period_MPS := selectsortedset( psmp, PeriodSpecificationPeriod.Period_MP, pmp, not pmp.IsHistorical(), pmp.StartDate() );
+    }
+    
+    traverse ( targetProduct_MP, ProductInStockingPoint_MP, pisp ) {
+      traverse ( period_MPS, Elements, pmp, pmp.StartDate() = Date::Construct( 2020, 4, 1 ) ) { 
+        info( pmp.StartDate().Format( "Y-M2-D2" ), "    outputPISP锛�", pisp.Name() );
+        CapacityAllocationResultsRuleConfiguration::RecursiveGeneration( macroPlan, pisp, pisp, pmp.StartDate() );
+        info( "-------------------------------------------------------------------------------------------------------" );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl
new file mode 100644
index 0000000..c2effb5
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_AutomaticallyGenerateRule.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AutomaticallyGenerateRule (
+  MacroPlan macroPlan,
+  GlobalOTDTable globalOTDTable
+)
+{
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl
new file mode 100644
index 0000000..1068c7b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_RecursiveGeneration.qbl
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod RecursiveGeneration (
+  MacroPlan macroPlan,
+  ProductInStockingPoint_MP outputPISP,
+  ProductInStockingPoint_MP firstPISP,
+  Date startDate
+)
+{
+  TextBody:
+  [*
+    traverse ( outputPISP, ProcessOutput.AsProcessOutput, pmp ) {
+      
+      ontype( pmp ) {
+        
+        Operation as o : {  
+          traverse ( o, OperationInput, oi ) {
+            oiPISP := oi.ProductInStockingPoint_MP();
+            CapacityAllocationResultsRuleConfiguration::RecursiveGeneration( macroPlan, oiPISP, firstPISP, startDate );
+            info( "杈撳叆PISP锛�", oiPISP.Name(), "    杈撳嚭PISP锛�", outputPISP.Name(), "    绗竴娆ISP锛�", firstPISP.Name() );
+          }
+        }
+        
+        LaneLeg as ll : {
+          traverse ( ll, LaneLegInput, lli ) {
+            lliPISP := lli.ProductInStockingPoint_MP();
+            if ( lliPISP.ProductID() = outputPISP.ProductID() ) {
+              CapacityAllocationResultsRuleConfiguration::RecursiveGeneration( macroPlan, lliPISP, firstPISP, startDate );
+              info( "杈撳叆PISP锛�", lliPISP.Name(), "    杈撳嚭PISP锛�", outputPISP.Name(), "    绗竴娆ISP锛�", firstPISP.Name() );
+            }
+          }
+        }
+        
+      }
+      
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl
new file mode 100644
index 0000000..dd2083a
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Test.qbl
@@ -0,0 +1,61 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Test (
+  MacroPlan this
+)
+{
+  TextBody:
+  [*
+    pispnames := construct( Strings );
+    
+    traverse( this, SalesDemand.ProductInStockingPoint_MP, pisp )
+    {
+      if( not exists( pisp, ProcessOutput.AsProcessOutput.ProcessInput, processinput, true ) )
+      {
+        pispnames.Add( pisp.Name() );
+      }
+      else
+      {
+        dummyprocesses := selectset( pisp, ProcessOutput.AsProcessOutput, process, true );
+        index := 0;
+        limit := 10000;
+        
+        while( index < dummyprocesses.Size()
+               and index < limit )
+        {
+          dummyprocess := dummyprocesses.Element( index );
+          index++;
+          
+          pisps := construct( ProductInStockingPoint_MPs );
+          
+          if( dummyprocess.istype( Operation ) )
+          {
+            pisps := selectset( dummyprocess, astype( Operation ).RoutingStep.Routing.InputPISPNodeInRouting.ProductInStockingPoint_MP, pisp2,
+                                not pisp2.IsSystem() );
+          }
+          else if( dummyprocess.istype( LaneLeg ) )
+          {
+            pisps := selectset( dummyprocess, astype( LaneLeg ).LaneLegInput.ProductInStockingPoint_MP, pisp2,
+                                pisp2.Product_MP() = pisp.Product_MP() );
+          }
+          
+          traverse( pisps, Elements, pisp2 )
+          {
+            if( not exists( pisp2, ProcessOutput.AsProcessOutput.ProcessInput, processinput, true ) )
+            {
+              pispnames.Add( pisp2.Name() );
+            }
+            else
+            {
+              dummyprocesses2 := selectset( pisp2, ProcessOutput.AsProcessOutput, process, true );
+              dummyprocesses.AddInPlace( dummyprocesses2 );
+            }
+          }
+        }
+      }
+    }
+    
+    pispnames := pispnames.Unique().Sort();
+    info( pispnames.ToString( String::NewLine() ) );
+  *]
+}
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl
index 0f86052..bb13b39 100644
--- a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl
+++ b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl
@@ -1,21 +1,25 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateData (
-  MacroPlan macroPlan
+  MacroPlan macroPlan,
+  Scenario scenario
 )
 {
   TextBody:
   [*
+    macroPlan.CustomerAndForecastOrder( relflush );
+    
     traverse ( macroPlan, SalesDemand.astype( CustomerOrder ), co, true ) {
       macroPlan.CustomerAndForecastOrder( relnew,
-                                          OrderID := co.OrderID(),
-                                          ProductID := co.ProductID(),
-                                          BusinessType := co.BusinessType(),
-                                          Customer := co.CustomerName(),
-                                          CustomerID := co.CustomerID(),
-                                          Quantity := co.Quantity(),
+                                          VerNo             := scenario.Name(),
+                                          OrderID           := co.OrderID(),
+                                          ProductID         := co.ProductID(),
+                                          BusinessType      := co.BusinessType(),
+                                          Customer          := co.CustomerName(),
+                                          CustomerID        := co.CustomerID(),
+                                          Quantity          := co.Quantity(),
                                           UnitOfMeasureName := co.UnitOfMeasureName(),
-                                          DemandDate := co.StartDate()
+                                          DemandDate        := co.StartDate()
                                          );
     }
   *]
diff --git a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
index dc39665..9bc36fc 100644
--- a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
+++ b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateFillingCapacityOrder.qbl
@@ -9,9 +9,9 @@
   [*
     // NBoTk Sep-13-2023 (created)
     
-    owner.FillingCapacityOrder(relnew,ProductID := data.ProductID(),BusinessType := data.BusinessType(),Customer := data.Customer(),CustomerID := data.CustomerID(),
-                                    Quantity := data.Quantity(),UnitOfMeasureName := data.UnitOfMeasureName(),PanelBigSheetQuantity := data.PanelBigSheetQuantity(),SalesAmount := data.SalesAmount(),
-                                    ForecastDemandDate := data.ForecastDemandDate(),DemandDate := data.DemandDate(),VerNo := data.VerNo(),SalesSegmentName := data.SalesSegmentName()
-                                    );
+    //owner.FillingCapacityOrder(relnew,ProductID := data.ProductID(),BusinessType := data.BusinessType(),Customer := data.Customer(),CustomerID := data.CustomerID(),
+    //                                Quantity := data.Quantity(),UnitOfMeasureName := data.UnitOfMeasureName(),PanelBigSheetQuantity := data.PanelBigSheetQuantity(),SalesAmount := data.SalesAmount(),
+    //                                ForecastDemandDate := data.ForecastDemandDate(),DemandDate := data.DemandDate(),VerNo := data.VerNo(),SalesSegmentName := data.SalesSegmentName()
+    //                                );
   *]
 }
diff --git a/_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl b/_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl
index c40a89b..8a20d4c 100644
--- a/_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl
+++ b/_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl
@@ -14,7 +14,7 @@
     targetCustomerOrder := CustomerOrder::Create( targetProduct_MP,
                                                   targetStockingPoint_MP,
                                                   OS::GenerateGUIDAsString(),
-                                                  fillingCapacityOrder.OrderDate(),
+                                                  fillingCapacityOrder.DemandDate(),
                                                   quantity,
                                                   0.0,
                                                   "Normal",
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
index 31f8b7b..8c6686f 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
@@ -89,31 +89,31 @@
     if ( isStockingPoint_MP ) {
       this.Global_MappingStockingPoint_MP( relflush );
       Global_BrokerExecuteLog::CreateInOperation( this, "StockingPoint_MP", executionUser );
-    //  this -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception() -> Global_MappingStockingPoint_MP::OnException( this );
+      this -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception() -> Global_MappingStockingPoint_MP::OnException( this );
     }
     
     if ( isCurrency_MP ) {
       this.Global_MappingCurrency_MP( relflush );
       Global_BrokerExecuteLog::CreateInOperation( this, "Currency_MP", executionUser );
-    //  this -> Global_MappingCurrency_MP::CreateByAPI() -> Exception() -> Global_MappingCurrency_MP::OnException( this );
+      this -> Global_MappingCurrency_MP::CreateByAPI() -> Exception() -> Global_MappingCurrency_MP::OnException( this );
     }
     
     if ( isCurrencyRate_MP ) {
       this.Global_MappingCurrencyRate_MP( relflush );
       Global_BrokerExecuteLog::CreateInOperation( this, "CurrencyRate_MP", executionUser );
-    //  this -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception() -> Global_MappingCurrencyRate_MP::OnException( this );
+      this -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception() -> Global_MappingCurrencyRate_MP::OnException( this );
     }
     
     if ( isLane ) {
       this.Global_MappingLane( relflush );
       Global_BrokerExecuteLog::CreateInOperation( this, "Lane", executionUser );
-    //  this -> Global_MappingLane::CreateByAPI() -> Exception() -> Global_MappingLane::OnException( this );
+      this -> Global_MappingLane::CreateByAPI() -> Exception() -> Global_MappingLane::OnException( this );
     }
     
     if ( isLaneLeg ) {
       this.Global_MappingLaneLeg( relflush );
       Global_BrokerExecuteLog::CreateInOperation( this, "LaneLeg", executionUser );
-    //  this -> Global_MappingLaneLeg::CreateByAPI() -> Exception() -> Global_MappingLaneLeg::OnException( this );
+      this -> Global_MappingLaneLeg::CreateByAPI() -> Exception() -> Global_MappingLaneLeg::OnException( this );
     }
   *]
 }
diff --git "a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan\043127.qbl" "b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan\043127.qbl"
index ff774ec..6d84c07 100644
--- "a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan\043127.qbl"
+++ "b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan\043127.qbl"
@@ -4,11 +4,49 @@
   MacroPlan macroPlan,
   String executionUser,
   Boolean isUnitOfMeasure_MP,
-  Boolean isCustomOrder
+  Boolean isCustomOrder,
+  Boolean isForeacst,
+  Boolean isSalesSegment_MP,
+  Boolean isProduct_MP,
+  Boolean isConversionFactor,
+  Boolean isOperation,
+  Boolean isOperationBOM,
+  Boolean isProductInLane,
+  Boolean isAIPISPIP,
+  Boolean isInventorySupply,
+  Boolean isStockingPointCost,
+  Boolean isOperationCost,
+  Boolean isDOI_DSI,
+  Boolean isCustomerGrade,
+  Boolean isStockingPoint_MP,
+  Boolean isCurrency_MP,
+  Boolean isCurrencyRate_MP,
+  Boolean isLane,
+  Boolean isLaneLeg
 )
 {
   TextBody:
   [*
+    organcodelist := selectvalues( this, Global_MappingOperationBOM, bom,true, bom.OrganCode() );
+    businessTypes := macroPlan.BusinessType().Tokenize( "," );
+    if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) {
+        traverse( businessTypes, Elements, item ) {
+            info( "Business type : " + item )  
+        }
+        organcodelist := selectvalues( this, BusinessType.OrganCode, organ, businessTypes.Find( organ.BusinessType().BusinessTypeName() ) <> -1, organ.OrganCodeName() );
+    }
+    else{
+      if( businessTypes.Size() = 0 ){
+        if( not isnull( selectset( this, BusinessType, b, b.BusinessTypeName() = "" ) ) ){
+          organcodelist := selectvalues( this, BusinessType.OrganCode, organ, organ.BusinessType().BusinessTypeName() = "", organ.OrganCodeName() );
+          }
+        }
+      }
+    
+    if( organcodelist.Size() = 0 ){
+      organcodelist := selectvalues( this, Global_MappingOperationBOM, bom,true, bom.OrganCode() );
+      }
+    
     if ( isUnitOfMeasure_MP ) {
       Global_MappingUnitOfMeasure_MP::SynchronizeMacroPlanData( this, macroPlan );
     }
@@ -16,5 +54,87 @@
     if ( isCustomOrder ) {
       Global_MappingCustomOrder::SynchronizeMacroPlanData( this, macroPlan, executionUser );
     }
+    
+    if ( isForeacst ) {
+      Global_MappingForecast::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist );
+    }
+    
+    if ( isSalesSegment_MP ) {
+      Global_MappingSalesSegment_MP::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes );
+    }
+    
+    if ( isProduct_MP ) {
+      Global_MappingProduct_MP::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, macroPlan.IsKeyProduct() );
+    }
+    
+    if ( isConversionFactor ) {
+      Global_MappingConversionFactor::SynchronizeMacroPlanData( this, macroPlan, executionUser );
+    }
+    
+    if ( isOperation ) {
+      Global_MappingOperation::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist );
+    }
+    
+    if ( isOperationBOM ) {
+      Global_MappingOperationBOM::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist, macroPlan.IsKeyProduct(), macroPlan.CreatePurchaseSupplyMaterial() );
+    }
+    
+    if ( isProductInLane ) {
+      Global_MappingProductInLane::SynchronizeMacroPlanData( this, macroPlan, executionUser );
+    }
+    
+    if ( isAIPISPIP ) {
+      Global_MappingActualProductInStockingPointInPeriod::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist, macroPlan.IsKeyProduct() );
+    }
+    
+    if ( isInventorySupply ) {
+      Global_MappingInventorySupply::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist, macroPlan.IsKeyProduct() );
+    }
+    
+    if ( isStockingPointCost ) {
+      Global_MappingStockingPointCost::SynchronizeMacroPlanData( this, macroPlan, executionUser );
+    }
+    
+    if ( isOperationCost ) {
+      Global_MappingOperationCost::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist );
+    }
+    
+    //if ( isDOI_DSI ) {
+    //  Global_MappingDOI_DSI::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_DOI_DSI" );
+    //}
+    //
+    //if ( isCustomerGrade ) {
+    //  Global_MappingCustomerGrade::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_CustomerGrade" );
+    //}
+    //
+    //if ( isStockingPoint_MP ) {
+    //  this.Global_MappingStockingPoint_MP( relflush );
+    //  Global_BrokerExecuteLog::CreateInOperation( this, "StockingPoint_MP", executionUser );
+    ////  this -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception() -> Global_MappingStockingPoint_MP::OnException( this );
+    //}
+    //
+    //if ( isCurrency_MP ) {
+    //  this.Global_MappingCurrency_MP( relflush );
+    //  Global_BrokerExecuteLog::CreateInOperation( this, "Currency_MP", executionUser );
+    ////  this -> Global_MappingCurrency_MP::CreateByAPI() -> Exception() -> Global_MappingCurrency_MP::OnException( this );
+    //}
+    //
+    //if ( isCurrencyRate_MP ) {
+    //  this.Global_MappingCurrencyRate_MP( relflush );
+    //  Global_BrokerExecuteLog::CreateInOperation( this, "CurrencyRate_MP", executionUser );
+    ////  this -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception() -> Global_MappingCurrencyRate_MP::OnException( this );
+    //}
+    //
+    //if ( isLane ) {
+    //  this.Global_MappingLane( relflush );
+    //  Global_BrokerExecuteLog::CreateInOperation( this, "Lane", executionUser );
+    ////  this -> Global_MappingLane::CreateByAPI() -> Exception() -> Global_MappingLane::OnException( this );
+    //}
+    //
+    //if ( isLaneLeg ) {
+    //  this.Global_MappingLaneLeg( relflush );
+    //  Global_BrokerExecuteLog::CreateInOperation( this, "LaneLeg", executionUser );
+    ////  this -> Global_MappingLaneLeg::CreateByAPI() -> Exception() -> Global_MappingLaneLeg::OnException( this );
+    //}
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..984a0eb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes,
+  Strings organcodelist,
+  Boolean isKeyProduct
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾瀹為檯搴撳瓨鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingActualPISPIPData( businessTypes, globalOTDTable, isKeyProduct, organcodelist );
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..9467117
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾鍗曚綅杞崲鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingBaseConversionFactorData(globalOTDTable);
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..ef72e85
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes,
+  Strings organcodelist
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾棰勬祴鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingForecastData( businessTypes, globalOTDTable, organcodelist );
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..06d00c5
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes,
+  Strings organcodelist,
+  Boolean isKeyProduct
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾鍦ㄩ�斿簱瀛樻暟鎹�",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingExternalSupplyData( businessTypes, isKeyProduct ,globalOTDTable, organcodelist );
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..6a663dd
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes,
+  Strings organcodelist
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾宸ヨ壓璺嚎鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingOperationData( businessTypes ,globalOTDTable, organcodelist );  
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..3198fd5
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes,
+  Strings organcodelist,
+  Boolean isKeyProduct,
+  Boolean createPurchaseSupplyMaterial
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾BOM鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingOperationBOMData( businessTypes, isKeyProduct, createPurchaseSupplyMaterial, globalOTDTable, organcodelist );
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..9e722b5
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾杩愯緭璺嚎浜у搧鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingProductInLaneData(globalOTDTable);
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..8c10d2f
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes,
+  Boolean isKeyProduct
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾浜у搧鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingProductData( businessTypes, globalOTDTable,isKeyProduct );
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..fc881d2
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾閿�鍞儴闂ㄦ暟鎹�",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingSalesSegmentData( businessTypes, globalOTDTable );
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..df0cc31
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾搴撳瓨鎴愭湰鏁版嵁",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingInventoryValueAndCostData(globalOTDTable);
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeMacroPlanData.qbl
new file mode 100644
index 0000000..8f08b84
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeMacroPlanData (
+  GlobalOTDTable globalOTDTable,
+  MacroPlan macroPlan,
+  String executionUser,
+  Strings businessTypes,
+  Strings organcodelist
+)
+{
+  TextBody:
+  [*
+    global_BrokerExecuteLog := globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                                                       Name        := "鍚屾鍒堕�犳垚鏈暟鎹�",
+                                                                       IsSuccess   := true,
+                                                                       ExecuteUser := executionUser
+                                                                      );
+                                            
+      
+    try {
+      macroPlan.MappingOperationCostData( globalOTDTable, businessTypes, organcodelist );
+      
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+      global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+    } onerror {
+      global_BrokerExecuteLog.IsSuccess( false );
+      global_BrokerExecuteLog.ErrorNo( e.ErrorNr() );
+      global_BrokerExecuteLog.ErrorMessage( e.GeneralInformation() );
+      global_BrokerExecuteLog.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+      global_BrokerExecuteLog.ExecutionStatus( "Complete" );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_BusinessType.qbl b/_Main/BL/Type_MacroPlan/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..52c8a46
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[412960.0.300140034][412960.0.300140033][412960.0.300140035]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_CreatePurchaseSupplyMaterial.qbl b/_Main/BL/Type_MacroPlan/Attribute_CreatePurchaseSupplyMaterial.qbl
new file mode 100644
index 0000000..0d3c691
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_CreatePurchaseSupplyMaterial.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CreatePurchaseSupplyMaterial
+{
+  #keys: '3[412960.0.300140031][412960.0.300140030][412960.0.300140032]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_IsKeyProduct.qbl b/_Main/BL/Type_MacroPlan/Attribute_IsKeyProduct.qbl
new file mode 100644
index 0000000..b31aee8
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_IsKeyProduct.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsKeyProduct
+{
+  #keys: '3[412960.0.300140028][412960.0.300140027][412960.0.300140029]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_MacroPlan/DefaultValue_BusinessType.qbl b/_Main/BL/Type_MacroPlan/DefaultValue_BusinessType.qbl
new file mode 100644
index 0000000..1672b03
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/DefaultValue_BusinessType.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: BusinessType
+}
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
index 21238e0..3ef68b5 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
@@ -74,7 +74,7 @@
         op := Operation::FindOperationTypeIndex( operationId );
         if( isnull( op)){
           op := Operation::Create( operationId, unit, operationId, routingStep, 
-                                        Duration::Hours( item.UserLeadTime() ), Duration::Zero(), item.ActualCapacity(), false, 
+                                        Duration::Days( item.UserLeadTime() ), Duration::Zero(), item.ActualCapacity(), false, 
                                         [Real]item.MinimumQuantity(), haveMaxQty, guard( [Real]item.MaximumQuantity(), Real::MaxReal() ), 
                                         0.0, 0.0, false, true );
         }
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl
index 3673ac7..97a091d 100644
--- a/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders.qbl
@@ -1,7 +1,8 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod GenerateAndDistributeWorkOrders (
-  MacroPlan macroPlan
+  MacroPlan macroPlan,
+  GlobalOTDTable globalOTDTable
 )
 {
   TextBody:
@@ -18,17 +19,24 @@
     
     orderNumber := 1;
     
+    organCodes := selectuniquevalues( globalOTDTable, Global_MappingOperation, tempGMO, true, tempGMO.OrganCode() );
+    
     traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ) {
       traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl ) {
-        plannedQuantity := sum( pispippl, NewSupply, ns, guard( not isnull( ns.Process_MP().astype( Operation ) ), false ), ns.Quantity() );
-        if ( plannedQuantity > 0 ) {
+        traverse ( pispippl, NewSupply, ns, ns.Quantity() > 0 ) {
+          organCode := "鏃犵粍缁囦俊鎭�";
+          unit := guard( ns.Process_MP().astype( Operation ).Unit(), null( Unit ) );
+          if ( not isnull( unit ) ){
+            MasterPlanReleaseWorkOrder::ObtainOrganizationCode( unit, organCodes, organCode );
+          }
           newMasterPlanReleaseWorkOrder.MasterPlanReleaseWorkOrderTabulation( relnew,
                                                                               ProductionWorkOrderNumber := universalPrefixForWorkOrderNumber + [String]orderNumber,
                                                                               ProductModel              := pisp.ProductID(),
                                                                               MaterialDescription       := pisp.ProductID(),
                                                                               StartDate                 := pispippl.Start().Date(),
                                                                               EndDate                   := pispippl.End().Date(),
-                                                                              PlannedQuantity           := plannedQuantity
+                                                                              PlannedQuantity           := ns.Quantity(),
+                                                                              OrganizationInfomation    := organCode
                                                                              );
           orderNumber++;
         }
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders1.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders1.qbl
new file mode 100644
index 0000000..b854ffd
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_GenerateAndDistributeWorkOrders1.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateAndDistributeWorkOrders1 (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    macroPlan.MasterPlanReleaseWorkOrder( relflush );
+    
+    newMasterPlanReleaseWorkOrder := macroPlan.MasterPlanReleaseWorkOrder( relnew, IsGenerateAndPublishWorkOrders := true );
+    
+    universalPrefixForWorkOrderNumber := [String]Date::ActualDate().Year() + 
+                                         ifexpr( ( [String]Date::ActualDate().Month() ).Length() = 1, "0" + [String]Date::ActualDate().Month(), [String]Date::ActualDate().Month() )                         +
+                                         ifexpr( ( [String]Date::ActualDate().Day() ).Length() = 1, "0" + [String]Date::ActualDate().Day(), [String]Date::ActualDate().Day() )                               +
+                                         ifexpr( ( [String]DateTime::ActualTime().HourOfDay() ).Length() = 1, "0" + [String]DateTime::ActualTime().HourOfDay(), [String]DateTime::ActualTime().HourOfDay() ) +
+                                         ifexpr( ( [String]DateTime::ActualTime().MinuteOfHour() ).Length() = 1, "0" + [String]DateTime::ActualTime().MinuteOfHour(), [String]DateTime::ActualTime().MinuteOfHour() );
+    
+    orderNumber := 1;
+    
+    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf()       and 
+                                                                      not pisp.IsSystem() ) {   
+      exists( macroPlan, Product_MP.ProductInStockingPoint_MP.ProcessInput.ProductInStockingPoint_MP, tempPISP, 
+                          tempPISP = pisp );                                                                                                                              
+      traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl ) {
+        plannedQuantity := sum( pispippl, NewSupply, ns, guard( not isnull( ns.Process_MP().astype( Operation ) ), false ), ns.Quantity() );
+        if ( plannedQuantity > 0 ) {
+          newMasterPlanReleaseWorkOrder.MasterPlanReleaseWorkOrderTabulation( relnew,
+                                                                              ProductionWorkOrderNumber := universalPrefixForWorkOrderNumber + [String]orderNumber,
+                                                                              ProductModel              := pisp.ProductID(),
+                                                                              MaterialDescription       := pisp.ProductID(),
+                                                                              StartDate                 := pispippl.Start().Date(),
+                                                                              EndDate                   := pispippl.End().Date(),
+                                                                              PlannedQuantity           := plannedQuantity
+                                                                             );
+          orderNumber++;
+        }
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_ObtainOrganizationCode.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_ObtainOrganizationCode.qbl
new file mode 100644
index 0000000..9f14e0d
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrder/StaticMethod_ObtainOrganizationCode.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ObtainOrganizationCode (
+  Unit unit,
+  Strings organCodes,
+  output String organCode
+)
+{
+  TextBody:
+  [*
+    if ( exists( organCodes, Elements, oc, oc = unit.ID() ) ) {
+      organCode := unit.ID();
+    } else {
+      if ( not isnull( unit.Parent() ) ) {
+        MasterPlanReleaseWorkOrder::ObtainOrganizationCode( unit.Parent(), organCodes, organCode );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_OrganizationInfomation.qbl b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_OrganizationInfomation.qbl
new file mode 100644
index 0000000..f8af291
--- /dev/null
+++ b/_Main/BL/Type_MasterPlanReleaseWorkOrderTabulation/Attribute_OrganizationInfomation.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganizationInfomation
+{
+  #keys: '3[414702.1.53467738][414702.1.53467737][414702.1.53467739]'
+  Description: '缁勭粐淇℃伅'
+  ValueType: String
+}
diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_TIANMA_JITUAN_mbMainMenu_MenuDoSync_OnClick.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_TIANMA_JITUAN_mbMainMenu_MenuDoSync_OnClick.def
index 6253182..5009e48 100644
--- a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_TIANMA_JITUAN_mbMainMenu_MenuDoSync_OnClick.def
+++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_TIANMA_JITUAN_mbMainMenu_MenuDoSync_OnClick.def
@@ -5,7 +5,7 @@
   #keys: '[414384.0.605664178]'
   Body:
   [*
-    MacroPlan::DoSync( MacroPlan,false,false);
+    //MacroPlan::DoSync( MacroPlan,false,false);
   *]
   DefinitionID: 'Responsedef_Menu_OnClick'
   Precondition:
diff --git a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
index e164af9..5d184e4 100644
--- a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
+++ b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
@@ -5,7 +5,11 @@
   #keys: '[414702.0.340554926]'
   Body:
   [*
-    CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan, SelectionScenario.Data() );
+    //CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan, SelectionScenario.Data() );
+    
+    //CapacityAllocationResultsRuleConfiguration::AutomaticallyGenerateCapacityRules( GlobalOTDTable, MacroPlan );
+    
+    CapacityAllocationResults::Test( MacroPlan );
   *]
   CanBindMultiple: false
   DefinitionID: 'Responsedef_GUIButtonBase_OnClick'
diff --git a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def
new file mode 100644
index 0000000..c25a822
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button884_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: Button884
+Response OnClick () id:Response_FormTestButtonCollection_Button884_OnClick
+{
+  #keys: '[414702.1.33954101]'
+  Body:
+  [*
+    CapacityAllocationResultsRuleConfiguration::Test( MacroPlan );
+  *]
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_GUIButtonBase_OnClick'
+}
diff --git a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def
index 53a8703..e4d9281 100644
--- a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def
+++ b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/_ROOT_Component_FormTestButtonCollection.def
@@ -11,6 +11,7 @@
     Columns:
     [
       GBFlow.Column { grow: 0 id: 454 parent: 0 }
+      GBFlow.Column { grow: 0 id: 968 parent: 0 }
     ]
     Elements:
     [
@@ -18,6 +19,11 @@
       {
         Component => Button398
         Position { startcolumn: 454 startrow: 649 endcolumn: 454 endrow: 649 }
+      }
+      GBElement
+      {
+        Component => Button884
+        Position { startcolumn: 968 startrow: 649 endcolumn: 968 endrow: 649 }
       }
     ]
     Gaps: [ left: 5 right: 5 top: 5 bottom: 5 inner: 5 ]
@@ -35,7 +41,19 @@
       Properties:
       [
         Image: 'HARDHAT'
+        LayoutGroup: 'Button'
         Text: '鐢熸垚浜ц兘鍒嗛厤缁撴灉鏁版嵁'
+      ]
+    }
+    Component Button884
+    {
+      #keys: '[414702.1.33954049]'
+      BaseType: 'Button'
+      Properties:
+      [
+        Image: 'CAKE_SLICE'
+        LayoutGroup: 'Button'
+        Text: '鏍规嵁鎴愬搧鐢熸垚鐗╂枡'
       ]
     }
   ]
@@ -46,5 +64,10 @@
     IncludeInView: true
     Title: '鍔熻兘娴嬭瘯鎸夐挳'
     Width: 535
+    ModeledStringList ChildOrdering
+    {
+      c: Button398
+      c: Button884
+    }
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupInventoryViews\043981.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupInventoryViews\043981.def"
new file mode 100644
index 0000000..cd385bb
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupInventoryViews\043981.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component ActionBarGroupInventoryViews #extension
+{
+  Children:
+  [
+    Component ButtonMaterialLabelingPlanningStrategy
+    {
+      #keys: '[414702.1.16631997]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'FISH_BOWL'
+        Label: '鐗╂枡鏍囩'
+        Taborder: 4
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def
new file mode 100644
index 0000000..af02447
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component ActionBarGroupPlanViews #extension
+{
+  Children:
+  [
+    Component ButtonOrderLockAndUnlock
+    {
+      #keys: '[414702.1.15778581]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'DOCUMENT_LOCK'
+        Label: '璁㈠崟閿佸畾&瑙i攣'
+        Taborder: 8
+      ]
+    }
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
index b9da9db..71b9352 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews\043633.def"
@@ -7,10 +7,6 @@
     {
       #keys: '[414382.0.436830247]'
       BaseType: 'WebButton'
-      Children:
-      [
-        #child: ContextMenuSalesFillingCapacity
-      ]
       Properties:
       [
         Image: 'BLOT'
@@ -29,5 +25,16 @@
         Taborder: 4
       ]
     }
+    Component ButtonOffsetting
+    {
+      #keys: '[414702.1.20970764]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'PRICE_STICKER'
+        Label: '鍐插噺'
+        Taborder: 5
+      ]
+    }
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def
new file mode 100644
index 0000000..f003691
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component ActionBarPageInventory #extension
+{
+  Children:
+  [
+    #child: ActionBarGroupInventoryViews
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def
new file mode 100644
index 0000000..cde4c13
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component ActionBarPagePlan #extension
+{
+  Children:
+  [
+    #child: ActionBarGroupPlanViews
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
deleted file mode 100644
index 0aae48c..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuSalesFillingCapacity.def
+++ /dev/null
@@ -1,49 +0,0 @@
-Quintiq file version 2.0
-Component ContextMenuSalesFillingCapacity
-{
-  #keys: '[414382.0.437003283]'
-  BaseType: 'WebContextMenu'
-  Children:
-  [
-    Component MenuSalesFillingCapacity
-    {
-      #keys: '[414382.0.437003284]'
-      BaseType: 'WebMenu'
-      Properties:
-      [
-        Image: 'ELEMENT_BLUE'
-        Taborder: 0
-        Title: '澶栧崠CELL'
-        Tooltip: '澶栧崠CELL'
-      ]
-    }
-    Component MenuSalesFillingSchemeDetail
-    {
-      #keys: '[414382.0.436840646]'
-      BaseType: 'WebMenu'
-      Properties:
-      [
-        Image: 'ELEMENT_ORANGE'
-        Taborder: 1
-        Title: '濉骇鏂规鍒楄〃'
-        Tooltip: '濉骇鏂规鍒楄〃'
-      ]
-    }
-    Component MenuSalesFillingSchemeHistorical
-    {
-      #keys: '[414382.0.455751651]'
-      BaseType: 'WebMenu'
-      Properties:
-      [
-        Image: 'ELEMENT_ORANGE'
-        Taborder: 2
-        Title: '濉骇鍘嗗彶璁㈠崟鍒楄〃'
-        Tooltip: '濉骇鍘嗗彶璁㈠崟鍒楄〃'
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
index 4a5d5b5..9dd6fd4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
@@ -13,7 +13,7 @@
       [
         Image: 'WATER_FISH'
         Taborder: 0
-        Title: '浜ц兘鍒嗛厤&濉骇'
+        Title: '浜ц兘鍒嗛厤'
       ]
     }
     Component mnAnnualProductionAndSalesReview
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupInventoryViews_ButtonMaterialLabelingPl.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupInventoryViews_ButtonMaterialLabelingPl.def
new file mode 100644
index 0000000..3422aba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupInventoryViews_ButtonMaterialLabelingPl.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupInventoryViews/ButtonMaterialLabelingPlanningStrategy
+Response OnClick () id:Response_TIANMA_JITUAN_ActionBarGroupInventoryViews_ButtonMaterialLabelingPlanningStrategy_OnClick
+{
+  #keys: '[414702.1.19527712]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "鐗╂枡鏍囩_璁″垝绛栫暐", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupPlanViews_ButtonOrderLockAndUnlock_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupPlanViews_ButtonOrderLockAndUnlock_OnCl.def
new file mode 100644
index 0000000..af7fe50
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupPlanViews_ButtonOrderLockAndUnlock_OnCl.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupPlanViews/ButtonOrderLockAndUnlock
+Response OnClick () id:Response_TIANMA_JITUAN_ActionBarGroupPlanViews_ButtonOrderLockAndUnlock_OnClick
+{
+  #keys: '[414702.1.14334079]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "璁㈠崟閿佸畾_瑙i攣", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonOffsetting_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonOffsetting_OnClick.def
new file mode 100644
index 0000000..5a7dc8d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonOffsetting_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupSalesViews/ButtonOffsetting
+Response OnClick () id:Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonOffsetting_OnClick
+{
+  #keys: '[414702.1.22310683]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "鍐插噺", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def
new file mode 100644
index 0000000..21b1e4c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_O.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupSalesViews/ButtonSalesFillingCapacity
+Response OnClick () id:Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonSalesFillingCapacity_OnClick
+{
+  #keys: '[414702.1.55424758]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "濉骇", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
deleted file mode 100644
index 73a0e05..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapac.def
+++ /dev/null
@@ -1,18 +0,0 @@
-Quintiq file version 2.0
-#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingCapacity
-Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingCapacity_OnClick
-{
-  #keys: '[414382.0.437390498]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebMenu_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      // Open view
-      //ApplicationMacroPlanner.OpenView( 'FillingCapacityOrder', ButtonSalesFillingCapacity );
-      ApplicationScope.ViewManager().ResetUserViewById( "FillingCapacityOrder",true);
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def"
deleted file mode 100644
index 067c423..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingS\043360.def"
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingSchemeHistorical
-Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchemeHistorical_OnClick
-{
-  #keys: '[414382.0.455751650]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebMenu_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      // Open view
-      ApplicationScope.ViewManager().ResetUserViewById( "FillingCapacityOrderHistorical",true);
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
deleted file mode 100644
index 22b6bc7..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchem.def
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: ContextMenuSalesFillingCapacity/MenuSalesFillingSchemeDetail
-Response OnClick () id:Response_TIANMA_JITUAN_ContextMenuSalesFillingCapacity_MenuSalesFillingSchemeDetail_OnClick
-{
-  #keys: '[414382.0.439022595]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebMenu_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      // Open view
-      ApplicationScope.ViewManager().ResetUserViewById( "FillingCapacitySchemeList",true);
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index b0bcb6e..4f48b76 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -12,6 +12,8 @@
         #child: ActionBarPageData
         #child: ActionBarPageSales
         #child: applicationDevelopmentActionBarPageDef_1
+        #child: ActionBarPagePlan
+        #child: ActionBarPageInventory
       ]
     }
     Component DataHolderCapacityAndSaleBudgeFilterItem
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
index c7a866e..d2fe1c9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
@@ -117,6 +117,9 @@
         MacroPlan::DoSync( macroPlanNew, 
                            data.BusinessType(), data.IsKeyProduct(), data.CreatePurchaseSupplyMaterial() ,GlobalOTDTable);
     }
+    macroPlanNew.BusinessType( businesstype );
+    macroPlanNew.IsKeyProduct( data.IsKeyProduct() );
+    macroPlanNew.CreatePurchaseSupplyMaterial( data.CreatePurchaseSupplyMaterial() );
     
     this.Close();
   *]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def
index f2ee867..2d639ef 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Component_pnlContent.def
@@ -277,6 +277,7 @@
       BaseType: 'WebEditField'
       Properties:
       [
+        DataBinding: 'DataHolderFillingCapacityOrder.Data.CustomerID'
         Label: 'Customer ID'
         Taborder: 12
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def
index bf61706..34b2cb2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogFillingCapacityOrder/Response_pnlActions_btnOk_OnClick.def
@@ -30,6 +30,7 @@
                                         SalesSegmentName   := guard( ddlSalesSegment.Data().Name(), "null" ),
                                         StockingPointID    := guard( ddlStockingPoint_MP.Data().ID(), "null" ),
                                         Customer           := efCustomerName.Text(),
+                                        CustomerID         := efCustomID.Text(),
                                         Quantity           := [Real]edtQuantity.Text(),
                                         UnitOfMeasureName  := ddlUnitOfMeasure_MP.Data().Name(),
                                         ForecastDemandDate := dsForecastDemandDate.Date(),
@@ -44,6 +45,7 @@
         data.SalesSegmentName( guard( ddlSalesSegment.Data().Name(), "null" ) );
         data.StockingPointID( guard( ddlStockingPoint_MP.Data().ID(), "null" ) );
         data.Customer( efCustomerName.Text() );
+        data.CustomerID( efCustomID.Text() );
         data.Quantity( [Real]edtQuantity.Text() );
         data.UnitOfMeasureName( ddlUnitOfMeasure_MP.Data().Name() );
         data.ForecastDemandDate( dsForecastDemandDate.Date() );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def
index 367ca52..654b259 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def
@@ -27,6 +27,18 @@
         Taborder: 1
       ]
     }
+    Component AutomaticallyGenerate
+    {
+      #keys: '[414702.1.14342122]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'CAR_CYAN'
+        Label: '鑷姩鐢熸垚瑙勫垯'
+        Taborder: 2
+        Visible: false
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
index 597ad1b..594eaef 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
@@ -51,6 +51,27 @@
         Title: '鍏ㄩ��'
       ]
     }
+    Component Menu666
+    {
+      #keys: '[414702.1.55207187]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Separator: true
+        Taborder: 7
+      ]
+    }
+    Component MenuAutoCreate
+    {
+      #keys: '[414702.1.55207442]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'COMPONENT'
+        Taborder: 8
+        Title: '鑷姩鍒涘缓瑙勫垯'
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_AutomaticallyGenerate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_AutomaticallyGenerate_OnClick.def
new file mode 100644
index 0000000..b8a5c2e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_AutomaticallyGenerate_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelImportAndExport/AutomaticallyGenerate
+Response OnClick () id:Response_PanelImportAndExport_AutomaticallyGenerate_OnClick
+{
+  #keys: '[414702.1.14304989]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAllocationResultsRuleConfiguration::AutomaticallyGenerateCapacityAllocationResults( GlobalOTDTable, MacroPlan );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def
new file mode 100644
index 0000000..c4e09ed
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoC.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: listContextMenuCapacityAllocationResultsRuleConfiguration/MenuAutoCreate
+Response OnClick () id:Response_listContextMenuCapacityAllocationResultsRuleConfiguration_MenuAutoCreate_OnClick
+{
+  #keys: '[414702.1.55268133]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    return not isnull( MacroPlan ) and not isnull( GlobalOTDTable );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      //CapacityAllocationResultsRuleConfiguration::AutomaticallyGenerateRule( MacroPlan, GlobalOTDTable );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def
index 30c3208..fd6d7b1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def
@@ -13,7 +13,14 @@
   {
     Body:
     [*
-      CustomerAndForecastOrder::CreateData( MacroPlan );
+      CustomerAndForecastOrder::CreateData( MacroPlan, DataHolderActiveScenario.Data() );
+      
+      message := "鎬昏鍗曚釜鏁帮細"                                                               + 
+                [String]counter( MacroPlan, SalesDemand.astype( CustomerOrder ), cs, true )  + 
+                 "    鎴愬姛杞崲涓暟锛�"                                                         +
+                 [String]counter( MacroPlan, SalesDemand.astype( CustomerOrder ), cs, true )
+      
+      WebMessageBox::Success( message, true );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def
index b01bde0..5cc2c95 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelInterfaceOption1
 {
-  #keys: '[414702.0.459752107]'
+  #keys: '[414702.1.37166701]'
   BaseType: 'WebPanel'
   Children:
   [
     Component CheckboxCustomOrder
     {
-      #keys: '[414702.0.459786494]'
+      #keys: '[414702.1.37166702]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -17,7 +17,7 @@
     }
     Component CheckboxForecast
     {
-      #keys: '[414702.0.459501981]'
+      #keys: '[414702.1.37166703]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -27,7 +27,7 @@
     }
     Component CheckboxUnitOfMeasure_MP
     {
-      #keys: '[414702.0.500042972]'
+      #keys: '[414702.1.37166704]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -37,7 +37,7 @@
     }
     Component CheckboxSalesSegment_MP
     {
-      #keys: '[414702.0.498882706]'
+      #keys: '[414702.1.37166705]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -47,7 +47,7 @@
     }
     Component CheckboxProduct_MP
     {
-      #keys: '[414702.0.500281942]'
+      #keys: '[414702.1.37166706]'
       BaseType: 'WebCheckbox'
       Properties:
       [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2\043456.def" b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2.def
similarity index 82%
rename from "_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2\043456.def"
rename to _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2.def
index 54c954d..b767aa5 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2\043456.def"
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelInterfaceOption2
 {
-  #keys: '[414702.0.500233382]'
+  #keys: '[414702.1.37166769]'
   BaseType: 'WebPanel'
   Children:
   [
     Component CheckboxConversionFactor
     {
-      #keys: '[414702.0.501770364]'
+      #keys: '[414702.1.37166770]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -17,7 +17,7 @@
     }
     Component CheckboxOperation
     {
-      #keys: '[414702.0.501791718]'
+      #keys: '[414702.1.37166771]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -27,7 +27,7 @@
     }
     Component CheckboxOperationBOM
     {
-      #keys: '[414702.0.501742364]'
+      #keys: '[414702.1.37166772]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -37,7 +37,7 @@
     }
     Component CheckboxProductInLane
     {
-      #keys: '[414702.0.501792106]'
+      #keys: '[414702.1.37166773]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -47,7 +47,7 @@
     }
     Component CheckboxAIPISPIP
     {
-      #keys: '[414702.0.503110868]'
+      #keys: '[414702.1.37166774]'
       BaseType: 'WebCheckbox'
       Properties:
       [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def
index f48dbeb..2ad0d40 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelInterfaceOption3
 {
-  #keys: '[414702.0.501742781]'
+  #keys: '[414702.1.37166837]'
   BaseType: 'WebPanel'
   Children:
   [
     Component CheckboxInventorySupply
     {
-      #keys: '[414702.0.503576372]'
+      #keys: '[414702.1.37166838]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -17,7 +17,7 @@
     }
     Component CheckboxStockingPointCost
     {
-      #keys: '[414702.0.503748797]'
+      #keys: '[414702.1.37166839]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -27,7 +27,7 @@
     }
     Component CheckboxOperationCost
     {
-      #keys: '[414702.0.503158219]'
+      #keys: '[414702.1.37166840]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -37,7 +37,7 @@
     }
     Component CheckboxDOI_DSI
     {
-      #keys: '[414702.0.503158880]'
+      #keys: '[414702.1.37166841]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -47,7 +47,7 @@
     }
     Component CheckboxCustomerGrade
     {
-      #keys: '[414702.0.503159013]'
+      #keys: '[414702.1.37166842]'
       BaseType: 'WebCheckbox'
       Properties:
       [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def
index c32b468..1c15894 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelInterfaceOption4
 {
-  #keys: '[414702.0.504229568]'
+  #keys: '[414702.1.37166905]'
   BaseType: 'WebPanel'
   Children:
   [
     Component CheckboxStockingPoint_MP
     {
-      #keys: '[414702.0.501794917]'
+      #keys: '[414702.1.37166906]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -17,7 +17,7 @@
     }
     Component CheckboxCurrency_MP
     {
-      #keys: '[414702.0.504229987]'
+      #keys: '[414702.1.37166907]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -27,7 +27,7 @@
     }
     Component CheckboxCurrencyRate_MP
     {
-      #keys: '[414702.0.503787453]'
+      #keys: '[414702.1.37166908]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -37,7 +37,7 @@
     }
     Component CheckboxLane
     {
-      #keys: '[414702.0.503787560]'
+      #keys: '[414702.1.37166909]'
       BaseType: 'WebCheckbox'
       Properties:
       [
@@ -47,7 +47,7 @@
     }
     Component CheckboxLaneLeg
     {
-      #keys: '[414702.0.503787710]'
+      #keys: '[414702.1.37166910]'
       BaseType: 'WebCheckbox'
       Properties:
       [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
index 6dfbdbe..94fce67 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
@@ -7,7 +7,13 @@
   DefinitionID: 'Responsedef_WebButton_OnClick'
   Precondition:
   [*
-    return not isnull( GlobalOTDTable );
+    flag := not isnull( GlobalOTDTable );
+    
+    if ( not isnull( GlobalOTDTable ) ) {
+      
+    }
+    
+    return flag;
   *]
   QuillAction
   {
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
index 4596f3c..25b7662 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
@@ -16,7 +16,25 @@
       GlobalOTDTable.SynchronizeDataToMacroPlan( MacroPlan, 
                                                  ApplicationMacroPlanner.GetUserName(),
                                                  CheckboxUnitOfMeasure_MP.Checked(),
-                                                 CheckboxCustomOrder.Checked()
+                                                 CheckboxCustomOrder.Checked(), 
+                                                 CheckboxForecast.Checked(),
+                                                 CheckboxSalesSegment_MP.Checked(),
+                                                 CheckboxProduct_MP.Checked(),
+                                                 CheckboxConversionFactor.Checked(),
+                                                 CheckboxOperation.Checked(),
+                                                 CheckboxOperationBOM.Checked(),
+                                                 CheckboxProductInLane.Checked(),
+                                                 CheckboxAIPISPIP.Checked(),
+                                                 CheckboxInventorySupply.Checked(),
+                                                 CheckboxStockingPointCost.Checked(),
+                                                 CheckboxOperationCost.Checked(),
+                                                 CheckboxDOI_DSI.Checked(),
+                                                 CheckboxCustomerGrade.Checked(),
+                                                 CheckboxStockingPoint_MP.Checked(),
+                                                 CheckboxCurrency_MP.Checked(),
+                                                 CheckboxCurrencyRate_MP.Checked(),
+                                                 CheckboxLane.Checked(),
+                                                 CheckboxLaneLeg.Checked() 
                                                 );
       
       WebMessageBox::Success( "鍚屾鎴愬姛锛�", true );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
index a50ad14..91a9af4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
@@ -7,12 +7,12 @@
   BaseType: 'WebForm'
   Children:
   [
-    #child: PanelInterfaceOption1
     #child: PanelInterfaceTest
     #child: PanelInterfaceGlobal_BrokerExecuteLog
-    #child: PanelInterfaceOption2
-    #child: PanelInterfaceOption3
     #child: PanelInterfaceOption4
+    #child: PanelInterfaceOption3
+    #child: PanelInterfaceOption2
+    #child: PanelInterfaceOption1
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
index c3f47fb..76eb6e7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
@@ -28,7 +28,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionWorkOrderNumber","title":"ProductionWorkOrderNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionWorkOrderNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductModel","title":"Product ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialDescription","title":"MaterialDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"StartDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlannedQuantity","title":"PlannedQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlannedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderType","title":"WorkOrderType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderStatus","title":"WorkOrderStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderStatus"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialDescription","title":"MaterialDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganizationInfomation","title":"OrganizationInfomation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganizationInfomation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlannedQuantity","title":"PlannedQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlannedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionWorkOrderNumber","title":"ProductionWorkOrderNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionWorkOrderNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductModel","title":"ProductModel","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"StartDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderStatus","title":"ReleaseStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderType","title":"WorkOrderType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderType"}}]'
         ContextMenu: 'MenuIssueEdit'
         Taborder: 2
       ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick\043124.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick\043124.def"
index af53e7d..158adbb 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick\043124.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_PanelButton_ButtonGeneratePlannedData_OnClick\043124.def"
@@ -7,13 +7,13 @@
   DefinitionID: 'Responsedef_WebButton_OnClick'
   Precondition:
   [*
-    return not isnull( MacroPlan );
+    return not isnull( MacroPlan ) and not isnull( GlobalOTDTable );
   *]
   QuillAction
   {
     Body:
     [*
-      MasterPlanReleaseWorkOrder::GenerateAndDistributeWorkOrders( MacroPlan );
+      MasterPlanReleaseWorkOrder::GenerateAndDistributeWorkOrders( MacroPlan, GlobalOTDTable );
       
       WebMessageBox::Success( "鐢熸垚鎴愬姛锛�", true );
     *]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def
index 24025d0..1d96926 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/_ROOT_Component_FormIssueWorkOrder.def
@@ -22,7 +22,6 @@
   ]
   Properties:
   [
-    Description: '涓嬪彂宸ュ崟'
     Image: 'TREE'
     Title: '涓嬪彂宸ュ崟'
   ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455\0431.def"
index fe19274..b365975 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455\0431.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Component_listContextMenuMaterial455\0431.def"
@@ -22,7 +22,7 @@
       Properties:
       [
         Image: 'DELETE'
-        Taborder: 3
+        Taborder: 4
         Title: '鍒犻櫎'
       ]
     }
@@ -34,10 +34,22 @@
       [
         Image: 'PIG'
         Shortcut: 'Ctrl+A'
-        Taborder: 4
+        Taborder: 5
         Title: '鍏ㄩ��'
       ]
     }
+    Component MenuEdit
+    {
+      #keys: '[414702.1.37777729]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        BindOnDoubleClick: true
+        Image: 'NOTEBOOK_EDIT'
+        Taborder: 3
+        Title: '缂栬緫'
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuEdit_OnClic.def
similarity index 62%
rename from _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuEdit_OnClic.def
index a91ec9c..35865ff 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialLabelingAndPlanningStrategy/Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuEdit_OnClic.def
@@ -1,12 +1,13 @@
 Quintiq file version 2.0
 #parent: ListMaterialMaterialLabelingAndPlanningStrategy_880
-Response OnDoubleClick (
+Response OnClick (
   MatAttrSettingAndPlanStrategy selection
-) id:Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_OnDoubleClick
+) id:Response_ListMaterialMaterialLabelingAndPlanningStrategy_880_MenuEdit_OnClick
 {
-  #keys: '[414702.0.137732025]'
+  #keys: '[414702.1.36602461]'
   CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebList_OnDoubleClick'
+  DefinitionID => /ListMaterialMaterialLabelingAndPlanningStrategy_880/Responsedef_ListMaterialMaterialLabelingAndPlanningStrategy_880_WebMenu_OnClick
+  Initiator: 'MenuEdit'
   QuillAction
   {
     Body:
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def
index 97a5fce..57fc130 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def
@@ -22,7 +22,7 @@
       pispips := construct( ProductInStockingPointInPeriods );
       macroplan := MacroPlan;
       traverse( checkorders, Elements, order ){
-        pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, true ) );
+        pispips := pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, pispip.SupplyQuantity() > 0 ) );
         }
       
       pispipLeafs := selectset( pispips, 
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def
index 6283853..ecc89f9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def
@@ -23,7 +23,7 @@
       pispips := construct( ProductInStockingPointInPeriods );
       macroplan := MacroPlan;
       traverse( checkorders, Elements, order ){
-        pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, true ) );
+        pispips := pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, pispip.SupplyQuantity() > 0 ) );
         }
       
       pispipLeafs := selectset( pispips, 
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
index 74e4ff6..70bf43d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialSpecializedDisplay/_ROOT_Component_FormPanelMaterialSpecializedDisplay.def
@@ -32,7 +32,6 @@
   ]
   Properties:
   [
-    Description: '涓撴樉'
     Image: 'LAPTOP2'
     Title: '涓撴樉'
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListConversionFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListConversionFactor.def
new file mode 100644
index 0000000..6a4f8cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListConversionFactor.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListConversionFactor
+{
+  #keys: '[414702.1.37735952]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorConversionFactor
+    {
+      #keys: '[414702.1.37735953]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'Global_MappingConversionFactor'
+      ]
+    }
+    #child: listActionBarPageConversionFactor
+    Component DataSetLevelConversionFactor
+    {
+      #keys: '[414702.1.37735958]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuConversionFactor
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Factor","title":"Factor","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Factor"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEnabled","title":"IsEnabled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsEnabled"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SourceUnitOfMeasureName","title":"SourceUnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SourceUnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TargetUnitOfMeasureName","title":"TargetUnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TargetUnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuConversionFactor'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListInterfaceDataDisplayContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListInterfaceDataDisplayContent.def
new file mode 100644
index 0000000..3a540ce
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListInterfaceDataDisplayContent.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListInterfaceDataDisplayContent
+{
+  #keys: '[414702.1.37424868]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorInterfaceDataDisplayContent
+    {
+      #keys: '[414702.1.37424869]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'Global_MappingSalesSegment_MP'
+      ]
+    }
+    #child: listActionBarPageInterfaceDataDisplayContent
+    Component DataSetLevelInterfaceDataDisplayContent
+    {
+      #keys: '[414702.1.37424874]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuInterfaceDataDisplayContent
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayIndex","title":"DisplayIndex","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayIndex"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ParentName","title":"ParentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ParentName"}}]'
+        ContextMenu: 'listContextMenuInterfaceDataDisplayContent'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperation.def
new file mode 100644
index 0000000..923cead
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperation.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListOperation
+{
+  #keys: '[414702.1.37777280]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorOperation
+    {
+      #keys: '[414702.1.37777281]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'Global_MappingOperation'
+      ]
+    }
+    #child: listActionBarPageOperation
+    Component DataSetLevelOperation
+    {
+      #keys: '[414702.1.37777286]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuOperation
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ActualCapacity","title":"ActualCapacity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ActualCapacity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DestinationOrganizationId","title":"DestinationOrganizationId","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DestinationOrganizationId"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLinkedWithFinishedGood","title":"IsLinkedWithFinishedGood","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsLinkedWithFinishedGood"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Line","title":"Line","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Line"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumQuantity","title":"MaximumQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MinimumQuantity","title":"MinimumQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MinimumQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganCode","title":"OrganCode","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"OrganCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganId","title":"OrganId","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganId"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganName","title":"OrganName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrganName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlantName","title":"PlantName","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PlantName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProcessSection","title":"ProcessSection","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProcessSection"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SequenceNumber","title":"SequenceNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SequenceNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UserLeadTime","title":"UserLeadTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UserLeadTime"}}]'
+        ContextMenu: 'listContextMenuOperation'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperationBOM.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperationBOM.def
new file mode 100644
index 0000000..60f0c04
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListOperationBOM.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListOperationBOM
+{
+  #keys: '[414702.1.37625082]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorOperationBOM
+    {
+      #keys: '[414702.1.37625083]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'Global_MappingOperationBOM'
+      ]
+    }
+    #child: listActionBarPageOperationBOM
+    Component DataSetLevelOperationBOM
+    {
+      #keys: '[414702.1.37625088]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuOperationBOM
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AlternativeMaterialCode","title":"AlternativeMaterialCode","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"AlternativeMaterialCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AlternativeMaterialType","title":"AlternativeMaterialType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AlternativeMaterialType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AlternativeMaterialUnit","title":"AlternativeMaterialUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AlternativeMaterialUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AlternativeRate","title":"AlternativeRate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AlternativeRate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ComponentCode","title":"ComponentCode","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ComponentCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ComponentDescription","title":"ComponentDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ComponentDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ComponentOutputRate","title":"ComponentOutputRate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ComponentOutputRate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ComponentType","title":"ComponentType","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ComponentType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ComponentUnit","title":"ComponentUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ComponentUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ComponentUnitDescription","title":"ComponentUnitDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ComponentUnitDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DescriptionOfAlternativeMaterial","title":"DescriptionOfAlternativeMaterial","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DescriptionOfAlternativeMaterial"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DescriptionOfAlternativeMaterialUnits","title":"DescriptionOfAlternativeMaterialUnits","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DescriptionOfAlternativeMaterialUnits"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLinkedWithFinishedGood","title":"IsLinkedWithFinishedGood","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsLinkedWithFinishedGood"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialSystem","title":"MaterialSystem","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialSystem"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrganCode","title":"OrganCode","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"OrganCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProcessSection","title":"ProcessSection","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProcessSection"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductDescribe","title":"ProductDescribe","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductDescribe"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductType","title":"ProductType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductUnitDescription","title":"ProductUnitDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductUnitDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SubstitutionRelationship","title":"SubstitutionRelationship","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SubstitutionRelationship"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitUsageOfComponents","title":"UnitUsageOfComponents","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitUsageOfComponents"}}]'
+        ContextMenu: 'listContextMenuOperationBOM'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListProduct_MP.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListProduct_MP.def
new file mode 100644
index 0000000..c69d8f7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_ListProduct_MP.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListProduct_MP
+{
+  #keys: '[414702.1.36601467]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorProduct_MP
+    {
+      #keys: '[414702.1.36601468]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'Global_MappingProduct_MP'
+      ]
+    }
+    #child: listActionBarPageProduct_MP
+    Component DataSetLevelProduct_MP
+    {
+      #keys: '[414702.1.36601473]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuProduct_MP
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BOMCount","title":"BOMCount","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BOMCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CommonBusiness","title":"CommonBusiness","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CommonBusiness"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCommon","title":"IsCommon","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCommon"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLinkedWithFinishedGood","title":"IsLinkedWithFinishedGood","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsLinkedWithFinishedGood"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KeyProduct","title":"KeyProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"KeyProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductMajorType","title":"ProductMajorType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductMajorType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductSubclassType","title":"ProductSubclassType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductSubclassType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShelfLife","title":"ShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
+        ContextMenu: 'listContextMenuProduct_MP'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelConversionFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelConversionFactor.def
new file mode 100644
index 0000000..0dbd43c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelConversionFactor.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelConversionFactor
+{
+  #keys: '[414702.1.37735912]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListConversionFactor
+  ]
+  Properties:
+  [
+    Taborder: 5
+    Title: 'ConversionFactor'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelInterfaceDataDisplayContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelInterfaceDataDisplayContent.def
index 0746e39..6547519 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelInterfaceDataDisplayContent.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelInterfaceDataDisplayContent.def
@@ -8,10 +8,15 @@
     #child: PanelCustomOrder
     #child: PanelForecast
     #child: PanelUnitOfMeasure_MP
+    #child: PanelSalesSegment_MP
+    #child: PanelProduct_MP
+    #child: PanelConversionFactor
+    #child: PanelOperation
+    #child: PanelOperationBOM
   ]
   Properties:
   [
-    Orientation: 'tab'
+    Orientation: 'accordeon'
     Taborder: 1
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperation.def
new file mode 100644
index 0000000..2c300bc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperation.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelOperation
+{
+  #keys: '[414702.1.37777246]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListOperation
+  ]
+  Properties:
+  [
+    Taborder: 6
+    Title: 'Operation'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperationBOM.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperationBOM.def
new file mode 100644
index 0000000..0753a9e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelOperationBOM.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelOperationBOM
+{
+  #keys: '[414702.1.37625047]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListOperationBOM
+  ]
+  Properties:
+  [
+    Taborder: 7
+    Title: 'OperationBOM'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelProduct_MP.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelProduct_MP.def
new file mode 100644
index 0000000..b2e8ce7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelProduct_MP.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelProduct_MP
+{
+  #keys: '[414702.1.37314548]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListProduct_MP
+  ]
+  Properties:
+  [
+    Taborder: 4
+    Title: 'Product_MP'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelSalesSegment_MP\043154.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelSalesSegment_MP\043154.def"
new file mode 100644
index 0000000..428a969
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_PanelSalesSegment_MP\043154.def"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelSalesSegment_MP
+{
+  #keys: '[414702.1.37488443]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListInterfaceDataDisplayContent
+  ]
+  Properties:
+  [
+    Taborder: 3
+    Title: 'SalesSegment_MP'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageConversionFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageConversionFactor.def
new file mode 100644
index 0000000..ec235e4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageConversionFactor.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageConversionFactor
+{
+  #keys: '[414702.1.37735955]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageInterfaceDataDisplayContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageInterfaceDataDisplayContent.def
new file mode 100644
index 0000000..6898521
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageInterfaceDataDisplayContent.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageInterfaceDataDisplayContent
+{
+  #keys: '[414702.1.37424871]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperation.def
new file mode 100644
index 0000000..4b89c7b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperation.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageOperation
+{
+  #keys: '[414702.1.37777283]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperationBOM.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperationBOM.def
new file mode 100644
index 0000000..bd7e74c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageOperationBOM.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageOperationBOM
+{
+  #keys: '[414702.1.37625085]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageProduct_MP.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageProduct_MP.def
new file mode 100644
index 0000000..fed3da8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listActionBarPageProduct_MP.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageProduct_MP
+{
+  #keys: '[414702.1.36601470]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuConversionFactor.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuConversionFactor.def
new file mode 100644
index 0000000..9ba4218
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuConversionFactor.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuConversionFactor
+{
+  #keys: '[414702.1.37735960]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuInterfaceDataDisplayContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuInterfaceDataDisplayContent.def
new file mode 100644
index 0000000..eccd717
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuInterfaceDataDisplayContent.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuInterfaceDataDisplayContent
+{
+  #keys: '[414702.1.37424876]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperation.def
new file mode 100644
index 0000000..5734507
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperation.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuOperation
+{
+  #keys: '[414702.1.37777288]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperationBOM.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperationBOM.def
new file mode 100644
index 0000000..9e4d0d6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuOperationBOM.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuOperationBOM
+{
+  #keys: '[414702.1.37625090]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuProduct_MP.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuProduct_MP.def
new file mode 100644
index 0000000..0153ccb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_listContextMenuProduct_MP.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuProduct_MP
+{
+  #keys: '[414702.1.36601475]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/_ROOT_Component_FormShowInterfaceData.def b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/_ROOT_Component_FormShowInterfaceData.def
index e3f55d8..ee9220c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/_ROOT_Component_FormShowInterfaceData.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/_ROOT_Component_FormShowInterfaceData.def
@@ -12,7 +12,7 @@
   ]
   Properties:
   [
-    Image: 'PROJECTOR'
+    Image: 'VIEW'
     Title: '鎺ュ彛鏁版嵁鏄剧ず'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Test.vw b/_Main/UI/MacroPlannerWebApp/Views/Test.vw
index 808d3e8..f59a1db 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/Test.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/Test.vw
@@ -159,300 +159,19 @@
           }
         }
       }
-      form_FormCustomerAndForecastOrder
-      {
-        title: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
-        shown: true
-        componentID: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
-        layout
-        {
-          mode: 'open'
-          rowPosition: 16
-          rowSpan: 16
-          columnPosition: 1
-          columnSpan: 4
-        }
-        components
-        {
-          FormCustomerAndForecastOrder_PanelButton
-          {
-            sizeRatio: 1
-          }
-          FormCustomerAndForecastOrder_ListCustomerAndFillingCapacityOrder
-          {
-          }
-          FormCustomerAndForecastOrder_DataSetLevelCustomerAndFillingCapacityOrder
-          {
-            groupDepth: -1
-            column_VerNo
-            {
-              columnId: 'VerNo'
-              dataPath: 'VerNo'
-              dataType: 'string'
-              index: 0
-              subtotals: ''
-              width: 150
-            }
-            column_OrderID
-            {
-              columnId: 'OrderID'
-              dataPath: 'OrderID'
-              dataType: 'string'
-              index: 1
-              subtotals: ''
-              width: 150
-            }
-            column_ProductID
-            {
-              columnId: 'ProductID'
-              dataPath: 'ProductID'
-              dataType: 'string'
-              index: 2
-              subtotals: ''
-              width: 150
-            }
-            column_BusinessType
-            {
-              columnId: 'BusinessType'
-              dataPath: 'BusinessType'
-              dataType: 'string'
-              index: 3
-              subtotals: ''
-              width: 150
-            }
-            column_Customer
-            {
-              columnId: 'Customer'
-              dataPath: 'Customer'
-              dataType: 'string'
-              index: 4
-              subtotals: ''
-              width: 150
-            }
-            column_ServiceType
-            {
-              columnId: 'ServiceType'
-              dataPath: 'ServiceType'
-              dataType: 'string'
-              index: 5
-              subtotals: ''
-              width: 150
-            }
-            column_Quantity
-            {
-              columnId: 'Quantity'
-              dataPath: 'Quantity'
-              dataType: 'real'
-              index: 6
-              subtotals: ''
-              width: 150
-            }
-            column_UnitOfMeasureName
-            {
-              columnId: 'UnitOfMeasureName'
-              dataPath: 'UnitOfMeasureName'
-              dataType: 'string'
-              index: 7
-              subtotals: ''
-              width: 150
-            }
-            column_PanelBigSheetQuantity
-            {
-              columnId: 'PanelBigSheetQuantity'
-              dataPath: 'PanelBigSheetQuantity'
-              dataType: 'real'
-              index: 8
-              subtotals: ''
-              width: 150
-            }
-            column_SalesAmount
-            {
-              columnId: 'SalesAmount'
-              dataPath: 'SalesAmount'
-              dataType: 'number'
-              index: 9
-              subtotals: ''
-              width: 150
-            }
-            column_ForecastDemandDate
-            {
-              columnId: 'ForecastDemandDate'
-              dataPath: 'ForecastDemandDate'
-              dataType: 'date'
-              index: 10
-              subtotals: ''
-              width: 150
-            }
-            column_DemandDate
-            {
-              columnId: 'DemandDate'
-              dataPath: 'DemandDate'
-              dataType: 'date'
-              index: 11
-              subtotals: ''
-              width: 150
-            }
-          }
-        }
-      }
-      form_FormFillingCapacityOrder
-      {
-        title: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
-        shown: true
-        componentID: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
-        layout
-        {
-          mode: 'open'
-          rowPosition: 16
-          rowSpan: 16
-          columnPosition: 5
-          columnSpan: 8
-        }
-        components
-        {
-          FormFillingCapacityOrder_PanelFillingCapacityOrder
-          {
-            sizeRatio: 1
-          }
-          FormFillingCapacityOrder_ListFillingCapacityOrder
-          {
-          }
-          FormFillingCapacityOrder_DataSetLevelFillingCapacityOrder
-          {
-            groupDepth: -1
-            column_VerNo
-            {
-              columnId: 'VerNo'
-              dataPath: 'VerNo'
-              dataType: 'string'
-              index: 0
-              subtotals: ''
-              width: 150
-            }
-            column_ProductID
-            {
-              columnId: 'ProductID'
-              dataPath: 'ProductID'
-              dataType: 'string'
-              index: 1
-              subtotals: ''
-              width: 150
-            }
-            column_BusinessType
-            {
-              columnId: 'BusinessType'
-              dataPath: 'BusinessType'
-              dataType: 'string'
-              index: 2
-              subtotals: ''
-              width: 150
-            }
-            column_SalesSegmentName
-            {
-              columnId: 'SalesSegmentName'
-              dataPath: 'SalesSegmentName'
-              dataType: 'string'
-              index: 3
-              subtotals: ''
-              width: 150
-            }
-            column_StockingPointID
-            {
-              columnId: 'StockingPointID'
-              dataPath: 'StockingPointID'
-              dataType: 'string'
-              index: 4
-              subtotals: ''
-              width: 150
-            }
-            column_Customer
-            {
-              columnId: 'Customer'
-              dataPath: 'Customer'
-              dataType: 'string'
-              index: 5
-              subtotals: ''
-              width: 150
-            }
-            column_Quantity
-            {
-              columnId: 'Quantity'
-              dataPath: 'Quantity'
-              dataType: 'real'
-              index: 6
-              subtotals: ''
-              width: 150
-            }
-            column_UnitOfMeasureName
-            {
-              columnId: 'UnitOfMeasureName'
-              dataPath: 'UnitOfMeasureName'
-              dataType: 'string'
-              index: 7
-              subtotals: ''
-              width: 150
-            }
-            column_PanelBigSheetQuantity
-            {
-              columnId: 'PanelBigSheetQuantity'
-              dataPath: 'PanelBigSheetQuantity'
-              dataType: 'real'
-              index: 8
-              subtotals: ''
-              width: 150
-            }
-            column_SalesAmount
-            {
-              columnId: 'SalesAmount'
-              dataPath: 'SalesAmount'
-              dataType: 'number'
-              index: 9
-              subtotals: ''
-              width: 150
-            }
-            column_ForecastDemandDate
-            {
-              columnId: 'ForecastDemandDate'
-              dataPath: 'ForecastDemandDate'
-              dataType: 'date'
-              index: 10
-              subtotals: ''
-              width: 150
-            }
-            column_DemandDate
-            {
-              columnId: 'DemandDate'
-              dataPath: 'DemandDate'
-              dataType: 'date'
-              index: 11
-              subtotals: ''
-              width: 150
-            }
-            column_OrderType
-            {
-              columnId: 'OrderType'
-              dataPath: 'OrderType'
-              dataType: 'string'
-              index: 12
-              subtotals: ''
-              width: 150
-            }
-          }
-        }
-      }
     }
     userconfigurableinformation
     {
     }
+    image: 'BEAR'
     page: ''
     group: ''
     index: 0
-    image: 'BEAR'
     description: ''
   }
   formatversion: 2
   id: 'Test'
-  name: '浜ц兘鍒嗛厤_濉骇'
+  name: '浜ц兘鍒嗛厤'
   isglobal: false
   isroot: true
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\345\206\262\345\207\217.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\345\206\262\345\207\217.vw"
new file mode 100644
index 0000000..f10513d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\345\206\262\345\207\217.vw"
@@ -0,0 +1,900 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FrmOrderForecast
+      {
+        title: 'QTIANMA_JITUAN::FrmOrderForecast'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FrmOrderForecast'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 15
+          columnPosition: 1
+          columnSpan: 5
+        }
+        components
+        {
+          FrmOrderForecast_Panel961
+          {
+            sizeRatio: 1
+          }
+          FrmOrderForecast_Panel351
+          {
+            sizeRatio: 1
+          }
+          FrmOrderForecast_liH_Forecast
+          {
+          }
+          FrmOrderForecast_DataSetLevel204
+          {
+            groupDepth: -1
+            column_Month
+            {
+              columnId: 'Month'
+              dataPath: 'Month'
+              dataType: 'date'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_CustomName
+            {
+              columnId: 'CustomName'
+              dataPath: 'CustomName'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SKU
+            {
+              columnId: 'SKU'
+              dataPath: 'SKU'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ForecatsRealQty
+            {
+              columnId: 'ForecatsRealQty'
+              dataPath: 'ForecatsRealQty'
+              dataType: 'number'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Unit
+            {
+              columnId: 'Unit'
+              dataPath: 'Unit'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_Department
+            {
+              columnId: 'Department'
+              dataPath: 'Department'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FrmOrderResult
+      {
+        title: 'QTIANMA_JITUAN::FrmOrderResult'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FrmOrderResult'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 15
+          columnPosition: 6
+          columnSpan: 7
+        }
+        components
+        {
+          FrmOrderResult_Panel576
+          {
+            sizeRatio: 1
+          }
+          FrmOrderResult_Panel445
+          {
+            sizeRatio: 1
+          }
+          FrmOrderResult_List782
+          {
+          }
+          FrmOrderResult_DataSetLevel473
+          {
+            groupDepth: -1
+            column_OrderCode
+            {
+              columnId: 'OrderCode'
+              dataPath: 'OrderCode'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_SKU
+            {
+              columnId: 'SKU'
+              dataPath: 'SKU'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_OrderQty
+            {
+              columnId: 'OrderQty'
+              dataPath: 'OrderQty'
+              dataType: 'number'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ReverseQty
+            {
+              columnId: 'ReverseQty'
+              dataPath: 'ReverseQty'
+              dataType: 'number'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_AuthorizeQty
+            {
+              columnId: 'AuthorizeQty'
+              dataPath: 'AuthorizeQty'
+              dataType: 'number'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastQty
+            {
+              columnId: 'ForecastQty'
+              dataPath: 'ForecastQty'
+              dataType: 'number'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastHitQty
+            {
+              columnId: 'ForecastHitQty'
+              dataPath: 'ForecastHitQty'
+              dataType: 'number'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastNoHitQty
+            {
+              columnId: 'ForecastNoHitQty'
+              dataPath: 'ForecastNoHitQty'
+              dataType: 'number'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerName
+            {
+              columnId: 'CustomerName'
+              dataPath: 'CustomerName'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FrmOrderResultEx
+      {
+        title: 'QTIANMA_JITUAN::FrmOrderResultEx'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FrmOrderResultEx'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 16
+          rowSpan: 16
+          columnPosition: 1
+          columnSpan: 5
+        }
+        components
+        {
+          FrmOrderResultEx_Panel650
+          {
+            sizeRatio: 1
+          }
+          FrmOrderResultEx_Panel570
+          {
+            sizeRatio: 1
+          }
+          FrmOrderResultEx_List174
+          {
+          }
+          FrmOrderResultEx_DataSetLevel386
+          {
+            groupDepth: -1
+            column_OrderCode
+            {
+              columnId: 'OrderCode'
+              dataPath: 'OrderCode'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_SKU
+            {
+              columnId: 'SKU'
+              dataPath: 'SKU'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_OrderQty
+            {
+              columnId: 'OrderQty'
+              dataPath: 'OrderQty'
+              dataType: 'number'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_OrderDateTime
+            {
+              columnId: 'OrderDateTime'
+              dataPath: 'OrderDateTime'
+              dataType: 'date'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastHitQty
+            {
+              columnId: 'ForecastHitQty'
+              dataPath: 'ForecastHitQty'
+              dataType: 'number'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastNoHitQty
+            {
+              columnId: 'ForecastNoHitQty'
+              dataPath: 'ForecastNoHitQty'
+              dataType: 'number'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Unit
+            {
+              columnId: 'Unit'
+              dataPath: 'Unit'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerName
+            {
+              columnId: 'CustomerName'
+              dataPath: 'CustomerName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormHedgingOfLog
+      {
+        title: 'QTIANMA_JITUAN::FormHedgingOfLog'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormHedgingOfLog'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 16
+          rowSpan: 8
+          columnPosition: 6
+          columnSpan: 7
+        }
+        components
+        {
+          FormHedgingOfLog_PanelHedgingOfLog221
+          {
+            sizeRatio: 1
+          }
+          FormHedgingOfLog_PanelHedgingOfLog593
+          {
+            sizeRatio: 1
+          }
+          FormHedgingOfLog_PanelHedgingOfLog
+          {
+            sizeRatio: 1
+          }
+          FormHedgingOfLog_ListHedgingOfLog
+          {
+          }
+          FormHedgingOfLog_DataSetLevelHedgingOfLog
+          {
+            groupDepth: -1
+            column_Serial
+            {
+              columnId: 'Serial'
+              dataPath: 'Serial'
+              dataType: 'number'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_SKU
+            {
+              columnId: 'SKU'
+              dataPath: 'SKU'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastQty
+            {
+              columnId: 'ForecastQty'
+              dataPath: 'ForecastQty'
+              dataType: 'number'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ReverseQty
+            {
+              columnId: 'ReverseQty'
+              dataPath: 'ReverseQty'
+              dataType: 'number'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_AuthorizeQty
+            {
+              columnId: 'AuthorizeQty'
+              dataPath: 'AuthorizeQty'
+              dataType: 'number'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_OperateQty
+            {
+              columnId: 'OperateQty'
+              dataPath: 'OperateQty'
+              dataType: 'number'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_OperateType
+            {
+              columnId: 'OperateType'
+              dataPath: 'OperateType'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_Operator
+            {
+              columnId: 'Operator'
+              dataPath: 'Operator'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_OperateTime
+            {
+              columnId: 'OperateTime'
+              dataPath: 'OperateTime'
+              dataType: 'datetime'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FrmRAShow
+      {
+        title: 'QTIANMA_JITUAN::FrmRAShow'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FrmRAShow'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 24
+          rowSpan: 8
+          columnPosition: 6
+          columnSpan: 7
+        }
+        components
+        {
+          FrmRAShow_Panel950
+          {
+            sizeRatio: 1
+          }
+          FrmRAShow_Panel224
+          {
+            sizeRatio: 1
+          }
+          FrmRAShow_List696
+          {
+          }
+          FrmRAShow_DataSetLevel187
+          {
+            groupDepth: -1
+            column_SKU
+            {
+              columnId: 'SKU'
+              dataPath: 'SKU'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_MType
+            {
+              columnId: 'MType'
+              dataPath: 'MType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_ReverseQty
+            {
+              columnId: 'ReverseQty'
+              dataPath: 'ReverseQty'
+              dataType: 'number'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_AuthorizeQty
+            {
+              columnId: 'AuthorizeQty'
+              dataPath: 'AuthorizeQty'
+              dataType: 'number'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Unit
+            {
+              columnId: 'Unit'
+              dataPath: 'Unit'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerName
+            {
+              columnId: 'CustomerName'
+              dataPath: 'CustomerName'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormReleaseRecord
+      {
+        title: 'QTIANMA_JITUAN::FormReleaseRecord'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormReleaseRecord'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 32
+          rowSpan: 9
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormReleaseRecord_PanelReleaseRecord423
+          {
+            sizeRatio: 1
+          }
+          FormReleaseRecord_PanelReleaseRecord
+          {
+            sizeRatio: 1
+          }
+          FormReleaseRecord_PanelReleaseRecord108
+          {
+            sizeRatio: 1
+          }
+          FormReleaseRecord_ListReleaseRecord
+          {
+          }
+          FormReleaseRecord_DataSetLevelReleaseRecord
+          {
+            groupDepth: -1
+            column_Serial
+            {
+              columnId: 'Serial'
+              dataPath: 'Serial'
+              dataType: 'number'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_IssuingDate
+            {
+              columnId: 'IssuingDate'
+              dataPath: 'IssuingDate'
+              dataType: 'datetime'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_FinishDate
+            {
+              columnId: 'FinishDate'
+              dataPath: 'FinishDate'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_Issuer
+            {
+              columnId: 'Issuer'
+              dataPath: 'Issuer'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Status
+            {
+              columnId: 'Status'
+              dataPath: 'Status'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormReleaseRecord_PanelReleaseRecord527
+          {
+            sizeRatio: 1
+          }
+          FormReleaseRecord_ListReleaseRecord243
+          {
+          }
+          FormReleaseRecord_DataSetLevelReleaseRecord707
+          {
+            groupDepth: -1
+            column_SKU
+            {
+              columnId: 'SKU'
+              dataPath: 'SKU'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductSubclassType
+            {
+              columnId: 'ProductSubclassType'
+              dataPath: 'ProductSubclassType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Qty
+            {
+              columnId: 'Qty'
+              dataPath: 'Qty'
+              dataType: 'number'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_Unit
+            {
+              columnId: 'Unit'
+              dataPath: 'Unit'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_OrgCode
+            {
+              columnId: 'OrgCode'
+              dataPath: 'OrgCode'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_WarehouseCode
+            {
+              columnId: 'WarehouseCode'
+              dataPath: 'WarehouseCode'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_DemandTime
+            {
+              columnId: 'DemandTime'
+              dataPath: 'DemandTime'
+              dataType: 'datetime'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_IssuingDate
+            {
+              columnId: 'IssuingDate'
+              dataPath: 'IssuingDate'
+              dataType: 'datetime'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormMaterialPurchase
+      {
+        title: 'QTIANMA_JITUAN::FormMaterialPurchase'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormMaterialPurchase'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 41
+          rowSpan: 9
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormMaterialPurchase_PanelMaterialPurchase354
+          {
+            sizeRatio: 1
+          }
+          FormMaterialPurchase_PanelMaterialPurchase
+          {
+            sizeRatio: 1
+          }
+          FormMaterialPurchase_PanelMaterialPurchase613
+          {
+            sizeRatio: 1
+          }
+          FormMaterialPurchase_ListMaterialPurchase
+          {
+          }
+          FormMaterialPurchase_DataSetLevelMaterialPurchase
+          {
+            groupDepth: -1
+            column_SKU
+            {
+              columnId: 'SKU'
+              dataPath: 'SKU'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductSubclassType
+            {
+              columnId: 'ProductSubclassType'
+              dataPath: 'ProductSubclassType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Qty
+            {
+              columnId: 'Qty'
+              dataPath: 'Qty'
+              dataType: 'number'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_Unit
+            {
+              columnId: 'Unit'
+              dataPath: 'Unit'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_OrgCode
+            {
+              columnId: 'OrgCode'
+              dataPath: 'OrgCode'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_WarehouseCode
+            {
+              columnId: 'WarehouseCode'
+              dataPath: 'WarehouseCode'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_DemandTime
+            {
+              columnId: 'DemandTime'
+              dataPath: 'DemandTime'
+              dataType: 'datetime'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormOptimizerPuzzles
+      {
+        title: 'Optimizer Puzzles'
+        shown: false
+        componentID: 'FormOptimizerPuzzles'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormOptimizerPuzzles_ListOptimizerPuzzles
+          {
+          }
+          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 109
+            }
+            column_Description
+            {
+              columnId: 'Description'
+              dataPath: 'Description'
+              dataType: 'string'
+              title: '鎻忚堪'
+              index: 2
+              subtotals: ''
+              width: 207
+            }
+          }
+        }
+      }
+      form_FormKPI
+      {
+        title: 'KPI Dashboard'
+        shown: true
+        componentID: 'FormKPI'
+        layout
+        {
+          mode: 'dockright'
+          index: 1
+        }
+        components
+        {
+          FormKPI_PanelKPI
+          {
+            sizeRatio: 1
+            activeChild: 'PanelKPISelection'
+          }
+          FormKPI_PanelKPIDashboard
+          {
+            sizeRatio: 1
+          }
+          FormKPI_PanelKPISelection
+          {
+            sizeRatio: 1
+          }
+          FormKPI_ListKPISelection
+          {
+            QuillViewData
+            {
+              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+            }
+          }
+          FormKPI_DataSetLevelKPISelection
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 200
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    page: ''
+    group: ''
+    index: 0
+    image: 'CHART_DONUT'
+    description: ''
+  }
+  formatversion: 2
+  id: '鍐插噺'
+  name: '鍐插噺'
+  isglobal: false
+  isroot: true
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247.vw"
new file mode 100644
index 0000000..12b8317
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\345\241\253\344\272\247.vw"
@@ -0,0 +1,607 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormCustomerAndForecastOrder
+      {
+        title: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 16
+          columnPosition: 1
+          columnSpan: 4
+        }
+        components
+        {
+          FormCustomerAndForecastOrder_PanelButton
+          {
+            sizeRatio: 1
+          }
+          FormCustomerAndForecastOrder_ListCustomerAndFillingCapacityOrder
+          {
+          }
+          FormCustomerAndForecastOrder_DataSetLevelCustomerAndFillingCapacityOrder
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_ServiceType
+            {
+              columnId: 'ServiceType'
+              dataPath: 'ServiceType'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_PanelBigSheetQuantity
+            {
+              columnId: 'PanelBigSheetQuantity'
+              dataPath: 'PanelBigSheetQuantity'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_SalesAmount
+            {
+              columnId: 'SalesAmount'
+              dataPath: 'SalesAmount'
+              dataType: 'number'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastDemandDate
+            {
+              columnId: 'ForecastDemandDate'
+              dataPath: 'ForecastDemandDate'
+              dataType: 'date'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DemandDate
+            {
+              columnId: 'DemandDate'
+              dataPath: 'DemandDate'
+              dataType: 'date'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormFillingCapacityOrder
+      {
+        title: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 16
+          columnPosition: 5
+          columnSpan: 8
+        }
+        components
+        {
+          FormFillingCapacityOrder_PanelFillingCapacityOrder
+          {
+            sizeRatio: 1
+          }
+          FormFillingCapacityOrder_ListFillingCapacityOrder
+          {
+          }
+          FormFillingCapacityOrder_DataSetLevelFillingCapacityOrder
+          {
+            groupDepth: -1
+            column_VerNo
+            {
+              columnId: 'VerNo'
+              dataPath: 'VerNo'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_PanelBigSheetQuantity
+            {
+              columnId: 'PanelBigSheetQuantity'
+              dataPath: 'PanelBigSheetQuantity'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_SalesAmount
+            {
+              columnId: 'SalesAmount'
+              dataPath: 'SalesAmount'
+              dataType: 'number'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ForecastDemandDate
+            {
+              columnId: 'ForecastDemandDate'
+              dataPath: 'ForecastDemandDate'
+              dataType: 'date'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DemandDate
+            {
+              columnId: 'DemandDate'
+              dataPath: 'DemandDate'
+              dataType: 'date'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_OrderType
+            {
+              columnId: 'OrderType'
+              dataPath: 'OrderType'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormCustomerOrders
+      {
+        title: 'QLibMacroPlannerWebUI::FormCustomerOrders'
+        shown: true
+        componentID: 'QLibMacroPlannerWebUI::FormCustomerOrders'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 17
+          rowSpan: 17
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormCustomerOrders_PanelSalesDemands
+          {
+            sizeRatio: 1
+          }
+          FormCustomerOrders_PanelAllSalesDemands
+          {
+            sizeRatio: 2
+          }
+          FormCustomerOrders_ListSalesDemands
+          {
+          }
+          FormCustomerOrders_DataSetLevelSalesDemands
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_StockingPoint_MP_ID
+            {
+              columnId: 'StockingPoint_MP.ID'
+              dataPath: 'StockingPoint_MP.ID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegment_MP_Name
+            {
+              columnId: 'SalesSegment_MP.Name'
+              dataPath: 'SalesSegment_MP.Name'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerName
+            {
+              columnId: 'CustomerName'
+              dataPath: 'CustomerName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerID
+            {
+              columnId: 'CustomerID'
+              dataPath: 'CustomerID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_OrderLineID
+            {
+              columnId: 'OrderLineID'
+              dataPath: 'OrderLineID'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_Product_MP_ID
+            {
+              columnId: 'Product_MP.ID'
+              dataPath: 'Product_MP.ID'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasure_MP_Name
+            {
+              columnId: 'UnitOfMeasure_MP.Name'
+              dataPath: 'UnitOfMeasure_MP.Name'
+              dataType: 'string'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_FulfilledQuantity
+            {
+              columnId: 'FulfilledQuantity'
+              dataPath: 'FulfilledQuantity'
+              dataType: 'real'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_Fulfillment
+            {
+              columnId: 'Fulfillment'
+              dataPath: 'Fulfillment'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_IsFirmed
+            {
+              columnId: 'IsFirmed'
+              dataPath: 'IsFirmed'
+              dataType: 'boolean'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+            column_IsEligibleForNetting
+            {
+              columnId: 'IsEligibleForNetting'
+              dataPath: 'IsEligibleForNetting'
+              dataType: 'boolean'
+              index: 14
+              subtotals: ''
+              width: 150
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 15
+              subtotals: ''
+              width: 150
+            }
+            column_PriceUoM
+            {
+              columnId: 'PriceUoM'
+              dataPath: 'PriceUoM'
+              dataType: 'string'
+              index: 16
+              subtotals: ''
+              width: 150
+            }
+            column_OrderTag
+            {
+              columnId: 'OrderTag'
+              dataPath: 'OrderTag'
+              dataType: 'string'
+              index: 17
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormCustomerOrders_PanelSDIP
+          {
+            sizeRatio: 1
+          }
+          FormCustomerOrders_ListSDIP
+          {
+          }
+          FormCustomerOrders_DataSetLevelSDIP
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_ImgIsRestricted
+            {
+              columnId: 'ImgIsRestricted'
+              dataPath: 'ImgIsRestricted'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_EndDate
+            {
+              columnId: 'EndDate'
+              dataPath: 'EndDate'
+              dataType: 'date'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_MasterSalesDemand_UnitOfMeasureName
+            {
+              columnId: 'MasterSalesDemand.UnitOfMeasureName'
+              dataPath: 'MasterSalesDemand.UnitOfMeasureName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_QuantityInSalesDemandUOM
+            {
+              columnId: 'QuantityInSalesDemandUOM'
+              dataPath: 'QuantityInSalesDemandUOM'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_FulfilledQuantityInSalesDemandUOM
+            {
+              columnId: 'FulfilledQuantityInSalesDemandUOM'
+              dataPath: 'FulfilledQuantityInSalesDemandUOM'
+              dataType: 'real'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_Fulfillment
+            {
+              columnId: 'Fulfillment'
+              dataPath: 'Fulfillment'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: 'BOOK_BLUE_VIEW'
+    page: ''
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: '濉骇'
+  name: '濉骇'
+  isglobal: false
+  isroot: true
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\345\257\271\346\216\245ERP\350\277\233\350\241\214PR\351\207\212\346\224\276.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\345\257\271\346\216\245ERP\350\277\233\350\241\214PR\351\207\212\346\224\276.vw"
index 0811978..bc4d12c 100644
--- "a/_Main/UI/MacroPlannerWebApp/Views/\345\257\271\346\216\245ERP\350\277\233\350\241\214PR\351\207\212\346\224\276.vw"
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\345\257\271\346\216\245ERP\350\277\233\350\241\214PR\351\207\212\346\224\276.vw"
@@ -75,21 +75,12 @@
           FormIssueWorkOrder_DataSetLevelIssueWorkOrder
           {
             groupDepth: -1
-            column_ProductionWorkOrderNumber
+            column_EndDate
             {
-              columnId: 'ProductionWorkOrderNumber'
-              dataPath: 'ProductionWorkOrderNumber'
-              dataType: 'string'
+              columnId: 'EndDate'
+              dataPath: 'EndDate'
+              dataType: 'date'
               index: 0
-              subtotals: ''
-              width: 150
-            }
-            column_ProductModel
-            {
-              columnId: 'ProductModel'
-              dataPath: 'ProductModel'
-              dataType: 'string'
-              index: 1
               subtotals: ''
               width: 150
             }
@@ -98,25 +89,16 @@
               columnId: 'MaterialDescription'
               dataPath: 'MaterialDescription'
               dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_OrganizationInfomation
+            {
+              columnId: 'OrganizationInfomation'
+              dataPath: 'OrganizationInfomation'
+              dataType: 'string'
               index: 2
-              subtotals: ''
-              width: 150
-            }
-            column_StartDate
-            {
-              columnId: 'StartDate'
-              dataPath: 'StartDate'
-              dataType: 'date'
-              index: 3
-              subtotals: ''
-              width: 150
-            }
-            column_EndDate
-            {
-              columnId: 'EndDate'
-              dataPath: 'EndDate'
-              dataType: 'date'
-              index: 4
               subtotals: ''
               width: 150
             }
@@ -125,15 +107,33 @@
               columnId: 'PlannedQuantity'
               dataPath: 'PlannedQuantity'
               dataType: 'real'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_ProductionWorkOrderNumber
+            {
+              columnId: 'ProductionWorkOrderNumber'
+              dataPath: 'ProductionWorkOrderNumber'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_ProductModel
+            {
+              columnId: 'ProductModel'
+              dataPath: 'ProductModel'
+              dataType: 'string'
               index: 5
               subtotals: ''
               width: 150
             }
-            column_WorkOrderType
+            column_StartDate
             {
-              columnId: 'WorkOrderType'
-              dataPath: 'WorkOrderType'
-              dataType: 'string'
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
               index: 6
               subtotals: ''
               width: 150
@@ -147,6 +147,15 @@
               subtotals: ''
               width: 150
             }
+            column_WorkOrderType
+            {
+              columnId: 'WorkOrderType'
+              dataPath: 'WorkOrderType'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
           }
         }
       }
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\346\216\245\345\217\243\346\265\213\350\257\225.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\346\216\245\345\217\243\346\265\213\350\257\225.vw"
index d4e8c6a..31929b6 100644
--- "a/_Main/UI/MacroPlannerWebApp/Views/\346\216\245\345\217\243\346\265\213\350\257\225.vw"
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\346\216\245\345\217\243\346\265\213\350\257\225.vw"
@@ -152,7 +152,7 @@
         {
           mode: 'open'
           rowPosition: 1
-          rowSpan: 16
+          rowSpan: 23
           columnPosition: 7
           columnSpan: 6
         }
@@ -203,16 +203,991 @@
               }
             }
           }
+          FormShowInterfaceData_PanelInterfaceDataDisplayContent
+          {
+            sizeRatio: 1
+            activeChild: 'PanelCustomOrder'
+          }
+          FormShowInterfaceData_PanelCustomOrder
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListCustomOrder
+          {
+          }
+          FormShowInterfaceData_DataSetLevelCustomOrder
+          {
+            groupDepth: -1
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_CurrencyID
+            {
+              columnId: 'CurrencyID'
+              dataPath: 'CurrencyID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Customer
+            {
+              columnId: 'Customer'
+              dataPath: 'Customer'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerID
+            {
+              columnId: 'CustomerID'
+              dataPath: 'CustomerID'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_ID
+            {
+              columnId: 'ID'
+              dataPath: 'ID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_IsAvailable
+            {
+              columnId: 'IsAvailable'
+              dataPath: 'IsAvailable'
+              dataType: 'boolean'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_OrderDate
+            {
+              columnId: 'OrderDate'
+              dataPath: 'OrderDate'
+              dataType: 'date'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_OrderLineID
+            {
+              columnId: 'OrderLineID'
+              dataPath: 'OrderLineID'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_OrderTime
+            {
+              columnId: 'OrderTime'
+              dataPath: 'OrderTime'
+              dataType: 'date'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_OrderType
+            {
+              columnId: 'OrderType'
+              dataPath: 'OrderType'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_PriorityName
+            {
+              columnId: 'PriorityName'
+              dataPath: 'PriorityName'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_ProductGrade
+            {
+              columnId: 'ProductGrade'
+              dataPath: 'ProductGrade'
+              dataType: 'string'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 14
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 15
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 16
+              subtotals: ''
+              width: 150
+            }
+            column_SegmentPriority
+            {
+              columnId: 'SegmentPriority'
+              dataPath: 'SegmentPriority'
+              dataType: 'string'
+              index: 17
+              subtotals: ''
+              width: 150
+            }
+            column_SheetProfitability
+            {
+              columnId: 'SheetProfitability'
+              dataPath: 'SheetProfitability'
+              dataType: 'string'
+              index: 18
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 19
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 20
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormShowInterfaceData_PanelForecast
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListForecast
+          {
+          }
+          FormShowInterfaceData_DataSetLevelForecast
+          {
+            groupDepth: -1
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_CurrencyID
+            {
+              columnId: 'CurrencyID'
+              dataPath: 'CurrencyID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_EndDate
+            {
+              columnId: 'EndDate'
+              dataPath: 'EndDate'
+              dataType: 'date'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ID
+            {
+              columnId: 'ID'
+              dataPath: 'ID'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_PriorityName
+            {
+              columnId: 'PriorityName'
+              dataPath: 'PriorityName'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormShowInterfaceData_PanelUnitOfMeasure_MP
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListUnitOfMeasure_MP
+          {
+          }
+          FormShowInterfaceData_DataSetLevelUnitOfMeasure_MP
+          {
+            groupDepth: -1
+            column_IsDefault
+            {
+              columnId: 'IsDefault'
+              dataPath: 'IsDefault'
+              dataType: 'boolean'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormShowInterfaceData_PanelSalesSegment_MP
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListInterfaceDataDisplayContent
+          {
+          }
+          FormShowInterfaceData_DataSetLevelInterfaceDataDisplayContent
+          {
+            groupDepth: -1
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_DisplayIndex
+            {
+              columnId: 'DisplayIndex'
+              dataPath: 'DisplayIndex'
+              dataType: 'number'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ParentName
+            {
+              columnId: 'ParentName'
+              dataPath: 'ParentName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormShowInterfaceData_PanelProduct_MP
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListProduct_MP
+          {
+          }
+          FormShowInterfaceData_DataSetLevelProduct_MP
+          {
+            groupDepth: -1
+            column_BOMCount
+            {
+              columnId: 'BOMCount'
+              dataPath: 'BOMCount'
+              dataType: 'number'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_CommonBusiness
+            {
+              columnId: 'CommonBusiness'
+              dataPath: 'CommonBusiness'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_EndDate
+            {
+              columnId: 'EndDate'
+              dataPath: 'EndDate'
+              dataType: 'date'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_ID
+            {
+              columnId: 'ID'
+              dataPath: 'ID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_IsCommon
+            {
+              columnId: 'IsCommon'
+              dataPath: 'IsCommon'
+              dataType: 'boolean'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_IsLinkedWithFinishedGood
+            {
+              columnId: 'IsLinkedWithFinishedGood'
+              dataPath: 'IsLinkedWithFinishedGood'
+              dataType: 'boolean'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_KeyProduct
+            {
+              columnId: 'KeyProduct'
+              dataPath: 'KeyProduct'
+              dataType: 'boolean'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_Notes
+            {
+              columnId: 'Notes'
+              dataPath: 'Notes'
+              dataType: 'string'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ProductMajorType
+            {
+              columnId: 'ProductMajorType'
+              dataPath: 'ProductMajorType'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_ProductSubclassType
+            {
+              columnId: 'ProductSubclassType'
+              dataPath: 'ProductSubclassType'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_ShelfLife
+            {
+              columnId: 'ShelfLife'
+              dataPath: 'ShelfLife'
+              dataType: 'real'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormShowInterfaceData_PanelConversionFactor
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListConversionFactor
+          {
+          }
+          FormShowInterfaceData_DataSetLevelConversionFactor
+          {
+            groupDepth: -1
+            column_Factor
+            {
+              columnId: 'Factor'
+              dataPath: 'Factor'
+              dataType: 'real'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_IsEnabled
+            {
+              columnId: 'IsEnabled'
+              dataPath: 'IsEnabled'
+              dataType: 'boolean'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_SourceUnitOfMeasureName
+            {
+              columnId: 'SourceUnitOfMeasureName'
+              dataPath: 'SourceUnitOfMeasureName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_TargetUnitOfMeasureName
+            {
+              columnId: 'TargetUnitOfMeasureName'
+              dataPath: 'TargetUnitOfMeasureName'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormShowInterfaceData_PanelOperation
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListOperation
+          {
+          }
+          FormShowInterfaceData_DataSetLevelOperation
+          {
+            groupDepth: -1
+            column_ActualCapacity
+            {
+              columnId: 'ActualCapacity'
+              dataPath: 'ActualCapacity'
+              dataType: 'real'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_DestinationOrganizationId
+            {
+              columnId: 'DestinationOrganizationId'
+              dataPath: 'DestinationOrganizationId'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_IsLinkedWithFinishedGood
+            {
+              columnId: 'IsLinkedWithFinishedGood'
+              dataPath: 'IsLinkedWithFinishedGood'
+              dataType: 'boolean'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Line
+            {
+              columnId: 'Line'
+              dataPath: 'Line'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_MaximumQuantity
+            {
+              columnId: 'MaximumQuantity'
+              dataPath: 'MaximumQuantity'
+              dataType: 'number'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_MinimumQuantity
+            {
+              columnId: 'MinimumQuantity'
+              dataPath: 'MinimumQuantity'
+              dataType: 'number'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_OrganCode
+            {
+              columnId: 'OrganCode'
+              dataPath: 'OrganCode'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_OrganId
+            {
+              columnId: 'OrganId'
+              dataPath: 'OrganId'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_OrganName
+            {
+              columnId: 'OrganName'
+              dataPath: 'OrganName'
+              dataType: 'string'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_PlantName
+            {
+              columnId: 'PlantName'
+              dataPath: 'PlantName'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_ProcessSection
+            {
+              columnId: 'ProcessSection'
+              dataPath: 'ProcessSection'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_SequenceNumber
+            {
+              columnId: 'SequenceNumber'
+              dataPath: 'SequenceNumber'
+              dataType: 'number'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 14
+              subtotals: ''
+              width: 150
+            }
+            column_UserLeadTime
+            {
+              columnId: 'UserLeadTime'
+              dataPath: 'UserLeadTime'
+              dataType: 'real'
+              index: 15
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormShowInterfaceData_PanelOperationBOM
+          {
+            sizeRatio: 1
+          }
+          FormShowInterfaceData_ListOperationBOM
+          {
+          }
+          FormShowInterfaceData_DataSetLevelOperationBOM
+          {
+            groupDepth: -1
+            column_AlternativeMaterialCode
+            {
+              columnId: 'AlternativeMaterialCode'
+              dataPath: 'AlternativeMaterialCode'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_AlternativeMaterialType
+            {
+              columnId: 'AlternativeMaterialType'
+              dataPath: 'AlternativeMaterialType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_AlternativeMaterialUnit
+            {
+              columnId: 'AlternativeMaterialUnit'
+              dataPath: 'AlternativeMaterialUnit'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_AlternativeRate
+            {
+              columnId: 'AlternativeRate'
+              dataPath: 'AlternativeRate'
+              dataType: 'real'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_ComponentCode
+            {
+              columnId: 'ComponentCode'
+              dataPath: 'ComponentCode'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_ComponentDescription
+            {
+              columnId: 'ComponentDescription'
+              dataPath: 'ComponentDescription'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_ComponentOutputRate
+            {
+              columnId: 'ComponentOutputRate'
+              dataPath: 'ComponentOutputRate'
+              dataType: 'real'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_ComponentType
+            {
+              columnId: 'ComponentType'
+              dataPath: 'ComponentType'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_ComponentUnit
+            {
+              columnId: 'ComponentUnit'
+              dataPath: 'ComponentUnit'
+              dataType: 'string'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ComponentUnitDescription
+            {
+              columnId: 'ComponentUnitDescription'
+              dataPath: 'ComponentUnitDescription'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DescriptionOfAlternativeMaterial
+            {
+              columnId: 'DescriptionOfAlternativeMaterial'
+              dataPath: 'DescriptionOfAlternativeMaterial'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_DescriptionOfAlternativeMaterialUnits
+            {
+              columnId: 'DescriptionOfAlternativeMaterialUnits'
+              dataPath: 'DescriptionOfAlternativeMaterialUnits'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_IsLinkedWithFinishedGood
+            {
+              columnId: 'IsLinkedWithFinishedGood'
+              dataPath: 'IsLinkedWithFinishedGood'
+              dataType: 'boolean'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+            column_MaterialSystem
+            {
+              columnId: 'MaterialSystem'
+              dataPath: 'MaterialSystem'
+              dataType: 'string'
+              index: 14
+              subtotals: ''
+              width: 150
+            }
+            column_OrganCode
+            {
+              columnId: 'OrganCode'
+              dataPath: 'OrganCode'
+              dataType: 'string'
+              index: 15
+              subtotals: ''
+              width: 150
+            }
+            column_ProcessSection
+            {
+              columnId: 'ProcessSection'
+              dataPath: 'ProcessSection'
+              dataType: 'string'
+              index: 16
+              subtotals: ''
+              width: 150
+            }
+            column_ProductCode
+            {
+              columnId: 'ProductCode'
+              dataPath: 'ProductCode'
+              dataType: 'string'
+              index: 17
+              subtotals: ''
+              width: 150
+            }
+            column_ProductDescribe
+            {
+              columnId: 'ProductDescribe'
+              dataPath: 'ProductDescribe'
+              dataType: 'string'
+              index: 18
+              subtotals: ''
+              width: 150
+            }
+            column_ProductType
+            {
+              columnId: 'ProductType'
+              dataPath: 'ProductType'
+              dataType: 'string'
+              index: 19
+              subtotals: ''
+              width: 150
+            }
+            column_ProductUnitDescription
+            {
+              columnId: 'ProductUnitDescription'
+              dataPath: 'ProductUnitDescription'
+              dataType: 'string'
+              index: 20
+              subtotals: ''
+              width: 150
+            }
+            column_SubstitutionRelationship
+            {
+              columnId: 'SubstitutionRelationship'
+              dataPath: 'SubstitutionRelationship'
+              dataType: 'string'
+              index: 21
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 22
+              subtotals: ''
+              width: 150
+            }
+            column_UnitUsageOfComponents
+            {
+              columnId: 'UnitUsageOfComponents'
+              dataPath: 'UnitUsageOfComponents'
+              dataType: 'real'
+              index: 23
+              subtotals: ''
+              width: 150
+            }
+          }
         }
       }
     }
     userconfigurableinformation
     {
     }
-    image: 'SKIN_TIGER'
     page: ''
     group: ''
     index: 0
+    image: 'SKIN_TIGER'
     description: ''
   }
   formatversion: 2
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\347\211\251\346\226\231\346\240\207\347\255\276_\350\256\241\345\210\222\347\255\226\347\225\245.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\347\211\251\346\226\231\346\240\207\347\255\276_\350\256\241\345\210\222\347\255\226\347\225\245.vw"
new file mode 100644
index 0000000..4a663f4
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\347\211\251\346\226\231\346\240\207\347\255\276_\350\256\241\345\210\222\347\255\226\347\225\245.vw"
@@ -0,0 +1,262 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormMaterialLabelingAndPlanningStrategy
+      {
+        title: 'QTIANMA_JITUAN::FormMaterialLabelingAndPlanningStrategy'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormMaterialLabelingAndPlanningStrategy'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 15
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormMaterialLabelingAndPlanningStrategy_PanelMaterialLabelingAndPlanningStrategy
+          {
+            sizeRatio: 1
+          }
+          FormMaterialLabelingAndPlanningStrategy_PanelMaterial
+          {
+            sizeRatio: 1
+          }
+          FormMaterialLabelingAndPlanningStrategy_PanelMaterialOperationButton
+          {
+            sizeRatio: 1
+          }
+          FormMaterialLabelingAndPlanningStrategy_PanelMaterialExportAndImport
+          {
+            sizeRatio: 1
+          }
+          FormMaterialLabelingAndPlanningStrategy_ListMaterialMaterialLabelingAndPlanningStrategy
+          {
+          }
+          FormMaterialLabelingAndPlanningStrategy_DataSetLevelMaterial679
+          {
+            groupDepth: -1
+            column_SerialNumber
+            {
+              columnId: 'SerialNumber'
+              dataPath: 'SerialNumber'
+              dataType: 'number'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_MatCode
+            {
+              columnId: 'MatCode'
+              dataPath: 'MatCode'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_MatName
+            {
+              columnId: 'MatName'
+              dataPath: 'MatName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_MatType
+            {
+              columnId: 'MatType'
+              dataPath: 'MatType'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_MatArrivalLT
+            {
+              columnId: 'MatArrivalLT'
+              dataPath: 'MatArrivalLT'
+              dataType: 'real'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_ProductCount
+            {
+              columnId: 'ProductCount'
+              dataPath: 'ProductCount'
+              dataType: 'number'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_MinProdDeliverLT
+            {
+              columnId: 'MinProdDeliverLT'
+              dataPath: 'MinProdDeliverLT'
+              dataType: 'real'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_FlagLongTerm
+            {
+              columnId: 'FlagLongTerm'
+              dataPath: 'FlagLongTerm'
+              dataType: 'string'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_FlagGeneric
+            {
+              columnId: 'FlagGeneric'
+              dataPath: 'FlagGeneric'
+              dataType: 'string'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_PlanningStrategyAuto
+            {
+              columnId: 'PlanningStrategyAuto'
+              dataPath: 'PlanningStrategyAuto'
+              dataType: 'string'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_PlanningStrategyCustom
+            {
+              columnId: 'PlanningStrategyCustom'
+              dataPath: 'PlanningStrategyCustom'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_UpdateBy
+            {
+              columnId: 'UpdateBy'
+              dataPath: 'UpdateBy'
+              dataType: 'string'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_UpdateTime
+            {
+              columnId: 'UpdateTime'
+              dataPath: 'UpdateTime'
+              dataType: 'datetime'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+            column_MinimumNumberOfDaysInStock
+            {
+              columnId: 'MinimumNumberOfDaysInStock'
+              dataPath: 'MinimumNumberOfDaysInStock'
+              dataType: 'number'
+              index: 14
+              subtotals: ''
+              width: 150
+            }
+            column_MaximumNumberOfDaysInInventory
+            {
+              columnId: 'MaximumNumberOfDaysInInventory'
+              dataPath: 'MaximumNumberOfDaysInInventory'
+              dataType: 'number'
+              index: 15
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormMaterialLabelingAndPlanningStrategy_PanelChildMaterial
+          {
+            sizeRatio: 1
+          }
+          FormMaterialLabelingAndPlanningStrategy_ListChildMaterial
+          {
+          }
+          FormMaterialLabelingAndPlanningStrategy_DataSetLevelChildMaterial
+          {
+            groupDepth: -1
+            column_MatCode
+            {
+              columnId: 'MatCode'
+              dataPath: 'MatCode'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductCode
+            {
+              columnId: 'ProductCode'
+              dataPath: 'ProductCode'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_StandardLT
+            {
+              columnId: 'StandardLT'
+              dataPath: 'StandardLT'
+              dataType: 'real'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_ProductDesc
+            {
+              columnId: 'ProductDesc'
+              dataPath: 'ProductDesc'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_Comment
+            {
+              columnId: 'Comment'
+              dataPath: 'Comment'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: 'GOLDFISH'
+    page: ''
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: '鐗╂枡鏍囩_璁″垝绛栫暐'
+  name: '鐗╂枡鏍囩&璁″垝绛栫暐'
+  isglobal: false
+  isroot: true
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\350\256\242\345\215\225\351\224\201\345\256\232_\350\247\243\351\224\201.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\350\256\242\345\215\225\351\224\201\345\256\232_\350\247\243\351\224\201.vw"
new file mode 100644
index 0000000..86a57f0
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\350\256\242\345\215\225\351\224\201\345\256\232_\350\247\243\351\224\201.vw"
@@ -0,0 +1,414 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormOrderLock
+      {
+        title: 'QTIANMA_JITUAN::FormOrderLock'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormOrderLock'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormOrderLock_PanelOrderLock
+          {
+            sizeRatio: 1
+          }
+          FormOrderLock_PanelOrderLockHeader
+          {
+            sizeRatio: 1
+          }
+          FormOrderLock_PanelOrderLockOrder
+          {
+            sizeRatio: 1
+          }
+          FormOrderLock_ListOrderLock
+          {
+          }
+          FormOrderLock_DataSetLevelOrderLock
+          {
+            groupDepth: -1
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerName
+            {
+              columnId: 'CustomerName'
+              dataPath: 'CustomerName'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_IsLocked
+            {
+              columnId: 'IsLocked'
+              dataPath: 'IsLocked'
+              dataType: 'boolean'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_First_AsPlanningBaseSalesDemandInPeriod_End
+            {
+              columnId: 'First.AsPlanningBaseSalesDemandInPeriod.End'
+              dataPath: 'First.AsPlanningBaseSalesDemandInPeriod.End'
+              dataType: 'datetime'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_LastModify
+            {
+              columnId: 'LastModify'
+              dataPath: 'LastModify'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_LastModifyTime
+            {
+              columnId: 'LastModifyTime'
+              dataPath: 'LastModifyTime'
+              dataType: 'datetime'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormOrderLock_PanelOrderLockPlanning
+          {
+            sizeRatio: 1
+          }
+          FormOrderLock_PanelMatrix
+          {
+            sizeRatio: 1
+          }
+          FormOrderLock_MatrixEditorProductPlanning
+          {
+            gridColor: '#c4c4c4'
+            totalHeaderWidth: 200
+            attributeHeaderWidthRatio: 0.6
+            nameHeaderWidthRatio: 0.4
+            columnWidth: 100
+            horizontalGrid: true
+            verticalGrid: true
+            backendState
+            {
+              componentId: 'QTIANMA_JITUAN::FormOrderLock.MatrixEditorProductPlanning'
+              state
+              {
+                cells
+                {
+                  attributes
+                  {
+                    attribute_DisplaySupplyQuantity
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 0
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'DisplaySupplyQuantity'
+                    }
+                    attribute_DependentDemandAndSalesDemandQuantity
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 1
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'DependentDemandAndSalesDemandQuantity'
+                    }
+                    attribute_TargetInventoryLevel
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 2
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'TargetInventoryLevel'
+                    }
+                    attribute_InventoryLevelEnd
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 3
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'InventoryLevelEnd'
+                    }
+                    attribute_StockLevelInDays
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 4
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'StockLevelInDays'
+                    }
+                  }
+                }
+                columns
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'Start'"
+                  }
+                }
+                rows
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'Product_MP.DisplayIndex';datamember:'Name'"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      form_FormOrderLockLog
+      {
+        title: 'QTIANMA_JITUAN::FormOrderLockLog'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormOrderLockLog'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 9
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormOrderLockLog_PanelOrderLockLog
+          {
+            sizeRatio: 1
+          }
+          FormOrderLockLog_ListOrderLockLog
+          {
+          }
+          FormOrderLockLog_DataSetLevelOrderLockLog
+          {
+            groupDepth: -1
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_SalesSegmentName
+            {
+              columnId: 'SalesSegmentName'
+              dataPath: 'SalesSegmentName'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_CustomerName
+            {
+              columnId: 'CustomerName'
+              dataPath: 'CustomerName'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasureName
+            {
+              columnId: 'UnitOfMeasureName'
+              dataPath: 'UnitOfMeasureName'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_EndDate
+            {
+              columnId: 'EndDate'
+              dataPath: 'EndDate'
+              dataType: 'date'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_IsLocked
+            {
+              columnId: 'IsLocked'
+              dataPath: 'IsLocked'
+              dataType: 'boolean'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_End
+            {
+              columnId: 'End'
+              dataPath: 'End'
+              dataType: 'date'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_LastModify
+            {
+              columnId: 'LastModify'
+              dataPath: 'LastModify'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_LastModifyTime
+            {
+              columnId: 'LastModifyTime'
+              dataPath: 'LastModifyTime'
+              dataType: 'datetime'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_Notes
+            {
+              columnId: 'Notes'
+              dataPath: 'Notes'
+              dataType: 'string'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    page: ''
+    group: ''
+    index: 0
+    image: 'TEXT_LOCK'
+    description: ''
+  }
+  formatversion: 2
+  id: '璁㈠崟閿佸畾_瑙i攣'
+  name: '璁㈠崟閿佸畾&瑙i攣'
+  isglobal: false
+  isroot: true
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\351\235\242\346\235\277\346\213\211\346\226\231_\345\220\204\344\272\213\344\270\232\351\203\250\346\223\215\344\275\234.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\351\235\242\346\235\277\346\213\211\346\226\231_\345\220\204\344\272\213\344\270\232\351\203\250\346\223\215\344\275\234.vw"
index 89c5aa2..ae0a867 100644
--- "a/_Main/UI/MacroPlannerWebApp/Views/\351\235\242\346\235\277\346\213\211\346\226\231_\345\220\204\344\272\213\344\270\232\351\203\250\346\223\215\344\275\234.vw"
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\351\235\242\346\235\277\346\213\211\346\226\231_\345\220\204\344\272\213\344\270\232\351\203\250\346\223\215\344\275\234.vw"
@@ -15,7 +15,7 @@
           rowPosition: 1
           rowSpan: 16
           columnPosition: 1
-          columnSpan: 6
+          columnSpan: 12
         }
         components
         {
diff --git "a/_var/_Main/ProjSettings/MacroPlanner/Views/X_\345\210\206\346\236\220\350\247\206\345\233\276_\133414702.1.50321581\135.vw" "b/_var/_Main/ProjSettings/MacroPlanner/Views/X_\345\210\206\346\236\220\350\247\206\345\233\276_\133414702.1.50321581\135.vw"
new file mode 100644
index 0000000..3693bd3
--- /dev/null
+++ "b/_var/_Main/ProjSettings/MacroPlanner/Views/X_\345\210\206\346\236\220\350\247\206\345\233\276_\133414702.1.50321581\135.vw"
@@ -0,0 +1,2370 @@
+锘�# Quintiq GUI View File
+# Version 3.0
+
+PROPERTIES
+{
+  KEY := [414702.1.50321581]
+  NAME := '9.鍒嗘瀽瑙嗗浘'
+  HELPPAGE := ''
+  PARENTKEY := [119650.0.1615272249]
+  FOCUSED := [514.0.2180]
+  MUSTREADMDSSETTINGS := false
+  ISPERSONAL false
+  OWNERNAME 'quintiq/hongjli'
+  ICONIMAGE 'WINDOWS'
+  CREATIONDATETIME '2023-10-12T10:00:44'
+  CREATIONUSER 'quintiq/hongjli'
+  UPDATEDATETIME '2023-10-12T10:18:13'
+  UPDATEUSER 'quintiq/hongjli'
+  LASTACCESSDATE '2023-10-12'
+  VIEWSCOPE 0
+}
+AUTHORIZATIONS
+{
+  OPEN
+  {
+    AUTHORIZATIONS
+    {
+    }
+  }
+  EDIT
+  {
+    AUTHORIZATIONS
+    {
+    }
+  }
+}
+MDSINFO
+{
+  LOCAL ''
+  GLOBAL ''
+}
+INFOOBJECT
+{
+  KEY [626.0.4514905]
+  OBJECTTYPE Application // ApplicationLibMacroPlanner
+  BASEINFOOBJECTS
+  {
+   BASEINFOOBJECT
+   {
+    KEY [626.0.4514905]
+    OBJECTTYPE GUIComponent // ApplicationLibMacroPlanner
+    CONTENTS
+    {
+     SETTINGS_MDS_WITH_FOLDER
+     {
+       [414702.1.52504981]:LibInt_IntegratorProxy:/root:LibInt_IntegratorProxy
+       [414702.1.52533373]:SWF_CommunicationDataset:/root:SWF_CommunicationDataset
+       [414702.1.52528776]:SWF_WorkflowDataset:/root:SWF_WorkflowDataset
+       [414702.1.52500409]:LibDEF_DataBroker:/root:LibDEF_DataBroker
+       [414702.1.50285849]:LibDEF_DataRepository:/root:LibDEF_DataRepository
+       [414702.1.50276708]:DMF_ConvertorDataset:/root:DMF_ConvertorDataset
+       [414702.1.52542521]:LibMon_Monitor:/root:LibMon_Monitor
+       [414702.1.52537950]:LibUTF:/root:UTF
+       [414702.1.52550001]:Lib3DS_RootDataset:/root:Lib3DS_RootDataset
+       [414702.1.52580001]:KpiTracker:/root:KpiTracker
+       [414702.1.50281280]:MPDomainHandler:/root:MPDomainHandler
+       [414702.1.52560001]:MPSync:/root:MPSync
+       [414702.1.52509550]:ScenarioManager:/root:ScenarioManager
+       [414702.1.52570001]:LibSCIIntegrationInterface:/root:LibSCIIntegrationInterface
+       [414702.1.52519619]:GlobalOTDTable:/root:GlobalOTDTable
+       [414702.1.52585361]:MacroPlan:/root:MacroPlan
+     }
+    }
+   }
+  }
+  INFOOBJECTS
+  {
+   INFOOBJECT
+   {
+    KEY [514.0.2180]
+    OBJECTTYPE Frame // Frame
+    CONTENTS
+    {
+     State := maximized
+     (200,0,1536,809)
+     WorkspaceLocation := 
+    }
+    INFOOBJECTS
+    {
+     INFOOBJECT
+     {
+      KEY [113694.2.1024236755]
+      OBJECTTYPE ValueHolder // ValueHolderViewLayout
+      CONTENTS
+      {
+       Value ''
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [127710.1.721401771]
+      OBJECTTYPE ValueHolder // ValueHolderActiveMacroPlan
+      CONTENTS
+      {
+       Value '[414702.1.52620491]'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [132448.0.224582518]
+      OBJECTTYPE ValueHolder // ValueHolderSetMPDefaultViewForFirstLogin
+      CONTENTS
+      {
+       Value 'false'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [146450.2.1404665746]
+      OBJECTTYPE ValueHolder // vhConfiguration
+      CONTENTS
+      {
+       Value 'false'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [146874.1.233869144]
+      OBJECTTYPE ValueHolder // vhConfigurationMatrix
+      CONTENTS
+      {
+       Value 'false'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [132894.0.1007052496]
+      OBJECTTYPE ValueHolder // ValueHolderSetDataHolderSelectedPISPIPExtractor
+      CONTENTS
+      {
+       Value 'false'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [108684.0.1782661552]
+      OBJECTTYPE ValueHolder // ValueHolderLastSelected3DDriveDirectory
+      CONTENTS
+      {
+       Value ''
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [107654.0.557163713]
+      OBJECTTYPE ValueHolder // ValueHolderUserGroup
+      CONTENTS
+      {
+       Value ';Administrator;Developer;AggregatedPlanning;Blending;CampaignPlanning;CapacitySmoothing;DatabaseIntegration;Development;Feedback;Groups;InventoryMixBalancing;InventorySpecifications;InventorySupplies;LotSizes;OptimizerBenchmarking;Pegging;ProductPlanningGanttChart;SafetyStockCalculation;SalesDemandPostponement;ShelfLife;SupplyChainMap;SupplySpecifications;TransportationPlanning;Workflow;Functionalities;Software;SOP;Cloud;OnPremise;SupplyChainDirector;SupplyPlanner;DemandPlanner;CollaborativeForecasting;SOAPServerUserGroup;Web_SupplyPlanning;Web_SupplyChainData;Web_CampaignPlanning;Web_Sales;Web_Development;Web;Web_ScenariosAndSettings;Web_Blending;Web_DemandPostponement;Web_Allocation;Web_Financials;Web_Feedbacks;Web_InventoryMixBalancing;Web_SafetyStockCalculation;Web_WorkFlowConfiguration;Web_MyActivities;Web_Integration;Web_OptimizerBenchmarking;Web_SupplyDashboard;Web_Optimizer;Web_LotSizes;Web_ShelfLife;Web_CapacitySmoothing;Web_Inventory;Web_SafetyStock;KpiTrackerAdmin;Web_ProductionPlan;Web_PurchasingPlan;Web_TripPlan;Web_Plan;Web_BlendingPlan;BusinessUnitOM;ProductionPlan;MRPPlanning;AppConfigurators;Implementors'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [113694.1.227882923]
+      OBJECTTYPE ValueHolder // ValueHolderShowSanityCheck
+      CONTENTS
+      {
+       Value ''
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [126224.0.581715]
+      OBJECTTYPE ValueHolder // ValueHolder
+      CONTENTS
+      {
+       Value 'Feasible'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [132894.0.388222255]
+      OBJECTTYPE ValueHolder // ValueHolderImportProfileMessage
+      CONTENTS
+      {
+       Value ''
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [127238.1.80067038]
+      OBJECTTYPE ValueHolder // ValueHolderSizing
+      CONTENTS
+      {
+       Value 'true'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [122192.0.103731718]
+      OBJECTTYPE ValueHolder // ValueHolderSanityCheckHighestSeverityMsgCount
+      CONTENTS
+      {
+       Value '39'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [113694.2.1085093394]
+      OBJECTTYPE ValueHolder // ValueHolderIsImportSucceed
+      CONTENTS
+      {
+       Value 'true'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [132448.0.331221783]
+      OBJECTTYPE ValueHolder // ValueHolderScenarioMPSize
+      CONTENTS
+      {
+       Value '1'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [127238.1.502176570]
+      OBJECTTYPE ValueHolder // ValueHolderPeriodRollStatus
+      CONTENTS
+      {
+       Value 'false'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [112884.1.706803944]
+      OBJECTTYPE ValueHolder // ValueHolderSanityCheckHighestSeverity
+      CONTENTS
+      {
+       Value '2'
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [132448.0.662420775]
+      OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel
+      CONTENTS
+      {
+       Columns
+       {
+         Definition := [11122.0.37341573]
+         {
+           [132448.0.662420039]
+         }
+         SubTotals := true
+         Visible
+         {
+           Column internal[DataSetDataColumn] [132448.0.662420039]
+           {
+             Header := 'Name'
+             Width := 100
+             Subtotals := false
+             Specific
+             {
+               DataPath := 'DisplayNameForSelection [132448.0.661217036]'
+             }
+           }
+           Column internal[DataSetImageColumn] [110880.7.47894550]
+           {
+             Header := 'Optimizer status'
+             Width := 100
+             Subtotals := false
+             Specific
+             {
+               DataPath := 'ImgOptimizerStatus [137862.0.1442841447]'
+             }
+           }
+         }
+       }
+       DataMemberSort 'Name [11660.0.899152500]' true true
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [136682.0.314428046]
+      OBJECTTYPE GUIComponent // PTFPanelTestController
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [105690.0.246954464]
+        OBJECTTYPE ValueHolder // vhLogging
+        CONTENTS
+        {
+         Value ''
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [104342.0.773994982]
+        OBJECTTYPE ValueHolder // vhDoActionInfoReturn
+        CONTENTS
+        {
+         Value ''
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [104342.0.867521338]
+        OBJECTTYPE ValueHolder // vhPendingActions
+        CONTENTS
+        {
+         Value ''
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [104342.0.867524820]
+        OBJECTTYPE ValueHolder // vhSharedRepository
+        CONTENTS
+        {
+         Value '\\\\CNLEN1845000693\\PTF_Repository\\'
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [105690.0.892938783]
+        OBJECTTYPE ValueHolder // vhAsyncActionStatus
+        CONTENTS
+        {
+         Value ''
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [105690.0.247211998]
+        OBJECTTYPE ValueHolder // vhResultLogPath
+        CONTENTS
+        {
+         Value ''
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [105690.0.892939622]
+        OBJECTTYPE ValueHolder // vhPTFExecutionStatus
+        CONTENTS
+        {
+         Value 'Inactive'
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [103546.0.81355542]
+        OBJECTTYPE ValueHolder // vhAutoClose
+        CONTENTS
+        {
+         Value ''
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [103546.0.54652306]
+        OBJECTTYPE ValueHolder // vhLogStart
+        CONTENTS
+        {
+         Value ''
+        }
+       }
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [113694.2.1146370710]
+      OBJECTTYPE Toolbar // ToolbarWorkflow
+      CONTENTS
+      {
+       'vertical' '50' '0'
+      }
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [113694.2.1146375645]
+        OBJECTTYPE CustomDrawComponent // SWF_MP_CustomDrawComponentProcessDashboard
+        BASEINFOOBJECTS
+        {
+        }
+        INFOOBJECTS
+        {
+         INFOOBJECT
+         {
+          KEY [132478.0.288924864]
+          OBJECTTYPE ValueHolder // ValueHolderLastSyncDateTime
+          CONTENTS
+          {
+           Value '12-10-2023, 10:01:17'
+          }
+         }
+        }
+       }
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [11660.0.360702312]
+      OBJECTTYPE Toolbar // ToolbarSupplyChainPanel
+      CONTENTS
+      {
+       'horizontal' '50' '336'
+      }
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [113694.2.1070869880]
+        OBJECTTYPE ValueHolder // ValueHolderNavigationPanelState
+        CONTENTS
+        {
+         Value 'true'
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [113694.2.1070870209]
+        OBJECTTYPE ValueHolder // ValueHolderNavigationPanelSize
+        CONTENTS
+        {
+         Value '336'
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [113694.2.1033284312]
+        OBJECTTYPE SplitterWnd // SplitterWnd
+        INFOOBJECTS
+        {
+         INFOOBJECT
+         {
+          KEY [113694.2.1033284313]
+          OBJECTTYPE SplitterPane // SplitterPane
+          CONTENTS
+          {
+           VISIBLE true
+          }
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [127238.0.1883499282]
+            OBJECTTYPE TabComponent // TabComponent
+            CONTENTS
+            {
+             ActivePageIndex 0
+            }
+            INFOOBJECTS
+            {
+             INFOOBJECT
+             {
+              KEY [132448.0.71838188]
+              OBJECTTYPE List // ListNavigationPanelSelection
+              CONTENTS
+              {
+               Quantorrow := false
+              }
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [127238.0.1883514459]
+                OBJECTTYPE ValueHolder // ValueHolderListSelections
+                CONTENTS
+                {
+                 Value 'Stocking points and units'
+                }
+               }
+               INFOOBJECT
+               {
+                KEY [127238.0.1883514458]
+                OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel288
+                CONTENTS
+                {
+                 Columns
+                 {
+                   Definition := [113694.2.1025339746]
+                   {
+                     [113694.2.1025342095]
+                   }
+                   SubTotals := true
+                   Visible
+                   {
+                     Column internal[DataSetDataColumn] [113694.2.1025342095]
+                     {
+                       Width := 100
+                       Subtotals := false
+                       Specific
+                       {
+                         DataPath := 'Name [113694.2.1025096770]'
+                       }
+                     }
+                   }
+                 }
+                 DataMemberSort 'SequenceNr [113694.2.1025096776]' true true
+                }
+               }
+              }
+             }
+             INFOOBJECT
+             {
+              KEY [127238.0.1883516525]
+              OBJECTTYPE SplitterWnd // SplitterWnd516
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [127238.0.1883516526]
+                OBJECTTYPE SplitterPane // SplitterPaneEntities
+                CONTENTS
+                {
+                 Size 100
+                 VISIBLE true
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [127238.0.1883516528]
+                  OBJECTTYPE List // ListEntityTreeInPanel
+                  CONTENTS
+                  {
+                   Quantorrow := false
+                  }
+                  BASEINFOOBJECTS
+                  {
+                  }
+                  INFOOBJECTS
+                  {
+                   INFOOBJECT
+                   {
+                    KEY [113694.2.1026852831]
+                    OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelUnit
+                    CONTENTS
+                    {
+                     Columns
+                     {
+                       Definition := [127710.1.1014097713]
+                       {
+                         [127710.1.1014102531]
+                       }
+                       SubTotals := true
+                       Visible
+                       {
+                         Column internal[DataSetDataColumn] [127710.1.1014102531]
+                         {
+                           Header := 'Name'
+                           Width := 100
+                           Subtotals := false
+                           Specific
+                           {
+                             DataPath := 'DisplayName [127710.1.1013707791]'
+                           }
+                         }
+                       }
+                     }
+                     DataMemberSort 'DefinitionName [1.2.1944]' true true
+                     DataMemberSort 'DisplayIndex [127710.1.1014879496]' true true
+                    }
+                   }
+                  }
+                 }
+                }
+               }
+               INFOOBJECT
+               {
+                KEY [127238.0.1883516541]
+                OBJECTTYPE SplitterPane // SplitterPaneProducts
+                CONTENTS
+                {
+                 Size 0
+                 VISIBLE true
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [127238.0.1883516544]
+                  OBJECTTYPE List // ListProductInPanel
+                  CONTENTS
+                  {
+                   Quantorrow := false
+                  }
+                  BASEINFOOBJECTS
+                  {
+                  }
+                  INFOOBJECTS
+                  {
+                   INFOOBJECT
+                   {
+                    KEY [113694.2.1025678105]
+                    OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelProducts
+                    CONTENTS
+                    {
+                     Columns
+                     {
+                       Definition := [113694.2.1026639210]
+                       {
+                         [113694.2.1026641039]
+                       }
+                       SubTotals := true
+                       Visible
+                       {
+                         Column internal[DataSetDataColumn] [127710.1.791646005]
+                         {
+                           Width := 43
+                           Subtotals := false
+                           Specific
+                           {
+                             DataPath := 'Name [101472.1.1551142288]'
+                           }
+                         }
+                       }
+                     }
+                     DataMemberSort 'DisplayIndex [101472.1.1550630686]' true true
+                    }
+                   }
+                  }
+                 }
+                }
+               }
+               INFOOBJECT
+               {
+                KEY [127238.0.1883516552]
+                OBJECTTYPE SplitterPane // SplitterPaneSalesSegment
+                CONTENTS
+                {
+                 Size 0
+                 VISIBLE true
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [127238.0.1883516554]
+                  OBJECTTYPE List // ListSalesSegmentInPanel
+                  CONTENTS
+                  {
+                   Quantorrow := false
+                  }
+                  BASEINFOOBJECTS
+                  {
+                  }
+                  INFOOBJECTS
+                  {
+                   INFOOBJECT
+                   {
+                    KEY [11660.0.1616690288]
+                    OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSalesSegment
+                    CONTENTS
+                    {
+                     Columns
+                     {
+                       Definition := [113694.2.1026633433]
+                       {
+                         [113694.2.1026637315]
+                       }
+                       SubTotals := true
+                       Visible
+                       {
+                         Column internal[DataSetDataColumn] [127710.1.791646006]
+                         {
+                           Width := 100
+                           Subtotals := false
+                           Specific
+                           {
+                             DataPath := 'Name [101472.1.1552565832]'
+                           }
+                         }
+                       }
+                     }
+                     DataMemberSort 'DisplayIndex [101472.1.1552054710]' true true
+                    }
+                   }
+                  }
+                 }
+                }
+               }
+               INFOOBJECT
+               {
+                KEY [131438.0.356639347]
+                OBJECTTYPE SplitterPane // SplitterPanePeriods
+                CONTENTS
+                {
+                 Size 0
+                 VISIBLE true
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [131438.0.353247249]
+                  OBJECTTYPE List // ListPeriodSpecificationInPanel
+                  CONTENTS
+                  {
+                   Quantorrow := false
+                  }
+                  INFOOBJECTS
+                  {
+                   INFOOBJECT
+                   {
+                    KEY [131438.0.371333408]
+                    OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelPeriodSpecifications
+                    CONTENTS
+                    {
+                     Columns
+                     {
+                       Definition := [131438.0.360617528]
+                       {
+                         [131438.0.360619967]
+                       }
+                       SubTotals := true
+                       Visible
+                       {
+                         Column internal[DataSetDataColumn] [131438.0.360619967]
+                         {
+                           Header := 'Name'
+                           Width := 100
+                           Subtotals := false
+                           Specific
+                           {
+                             DataPath := 'ID [112884.1.819834135]'
+                           }
+                         }
+                       }
+                     }
+                     DataMemberSort 'TimeUnitLevel [110702.1.442080356]' true true
+                     DataMemberSort 'NrOfTimeUnit [113694.2.259953597]' true true
+                    }
+                    INFOOBJECTS
+                    {
+                     INFOOBJECT
+                     {
+                      KEY [131438.0.402834330]
+                      OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelPeriods
+                      CONTENTS
+                      {
+                       Columns
+                       {
+                         Definition := [131438.0.360619043]
+                         {
+                           [131438.0.373648709]
+                           [131438.0.373648710]
+                         }
+                         SubTotals := true
+                         Visible
+                         {
+                           Column internal[DataSetDataColumn] [131438.0.373648709]
+                           {
+                             Header := 'Start'
+                             Width := 100
+                             Subtotals := false
+                             Specific
+                             {
+                               DataPath := 'Period_MP [133004.0.129306565]|StartDate [11660.0.1924712308]'
+                             }
+                           }
+                           Column internal[DataSetDataColumn] [131438.0.373648710]
+                           {
+                             Header := 'End'
+                             Width := 100
+                             Subtotals := false
+                             Specific
+                             {
+                               DataPath := 'Period_MP [133004.0.129306565]|EndDate [11660.0.1924712413]'
+                             }
+                           }
+                         }
+                       }
+                       ColumnSort [131438.0.373648709] true false
+                      }
+                     }
+                    }
+                   }
+                  }
+                 }
+                }
+               }
+              }
+             }
+             INFOOBJECT
+             {
+              KEY [127238.0.1884468404]
+              OBJECTTYPE SplitterWnd // SplitterWnd466
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [127238.0.1884468405]
+                OBJECTTYPE SplitterPane // SplitterPane252
+                CONTENTS
+                {
+                 VISIBLE true
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [127238.0.1884468597]
+                  OBJECTTYPE List // ListBookmarks
+                  CONTENTS
+                  {
+                   Quantorrow := false
+                  }
+                  INFOOBJECTS
+                  {
+                   INFOOBJECT
+                   {
+                    KEY [130238.0.368320209]
+                    OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelBookmarks
+                    CONTENTS
+                    {
+                     Columns
+                     {
+                       Definition := [121072.0.291112455]
+                       {
+                         [121072.0.291113667]
+                       }
+                       SubTotals := true
+                       Visible
+                       {
+                         Column internal[DataSetDataColumn] [121072.0.291113667]
+                         {
+                           Width := 100
+                           Subtotals := false
+                           Specific
+                           {
+                             DataPath := 'Name [121072.0.290461471]'
+                           }
+                         }
+                       }
+                     }
+                     DataMemberSort 'IsFolder [127238.0.1889576073]' false true
+                     ColumnSort [121072.0.291113667] true false
+                    }
+                    INFOOBJECTS
+                    {
+                     INFOOBJECT
+                     {
+                      KEY [130238.0.368320210]
+                      OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelBookmarkChildren
+                      CONTENTS
+                      {
+                       Columns
+                       {
+                         Definition := [121072.0.291112455]
+                         {
+                           [121072.0.291113667]
+                         }
+                         SubTotals := true
+                         Visible
+                         {
+                           Column internal[DataSetDataColumn] [121072.0.291113667]
+                           {
+                             Width := 100
+                             Subtotals := false
+                             Specific
+                             {
+                               DataPath := 'Name [121072.0.290461471]'
+                             }
+                           }
+                         }
+                       }
+                       DataMemberSort 'IsFolder [127238.0.1889576073]' false true
+                       ColumnSort [121072.0.291113667] true false
+                      }
+                     }
+                    }
+                   }
+                  }
+                 }
+                }
+               }
+              }
+             }
+            }
+           }
+          }
+         }
+        }
+       }
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [108486.1.1170974339]
+      SINGLEINSTANCE false
+      ID 'Pegging'
+      PARENTKEY [514.0.2180]
+      OBJECTTYPE Form // FormPegging
+      CREATETYPE FormPegging
+      CONTENTS
+      {
+       State := normal
+       (354,421,990,664)
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5507;]TabIdx[1]Selection[FRONT]
+      }
+      BASEINFOOBJECTS
+      {
+      }
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [108486.1.1171911809]
+        OBJECTTYPE SplitterWnd // SplitterWnd1
+        INFOOBJECTS
+        {
+         INFOOBJECT
+         {
+          KEY [108486.1.1171911810]
+          OBJECTTYPE SplitterPane // SplitterPane
+          CONTENTS
+          {
+           Size 50.132802124834
+           VISIBLE true
+          }
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [108486.1.1171921411]
+            OBJECTTYPE SplitterWnd // SplitterWndDemand_MP_Pegging
+            INFOOBJECTS
+            {
+             INFOOBJECT
+             {
+              KEY [108486.1.1171921412]
+              OBJECTTYPE SplitterPane // SplitterPane2
+              CONTENTS
+              {
+               Size 52.6515151515151
+               VISIBLE true
+              }
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [108486.1.1171921414]
+                OBJECTTYPE List // ListDemand
+                CONTENTS
+                {
+                 Quantorrow := false
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [108486.1.1171924299]
+                  OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelDemand_MP
+                  CONTENTS
+                  {
+                   Columns
+                   {
+                     Definition := [11766.0.1025088210]
+                     {
+                       [11766.1.490215920]
+                     }
+                     SubTotals := true
+                     Visible
+                     {
+                       Column internal[DataSetImageColumn] [108486.1.2111697545]
+                       {
+                         Width := 19
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'DemandType [11660.0.340434965]'
+                         }
+                       }
+                       Column internal[DataSetImageColumn] [108486.2.15728337]
+                       {
+                         Header := 'HasValidPeggedQuantity'
+                         Width := 21
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ImgHasValidPeggedQuantity [108486.2.15494714]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.1139010297]
+                       {
+                         Header := 'Stocking point'
+                         Width := 137
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ProductInStockingPointInPeriodPlanning [134266.1.219045427]|AsPlanningProductInStockingPoint [134266.1.8545642]|StockingPoint_MP [11660.0.488414369]|Name [101472.1.1554218718]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [108486.1.2110122000]
+                       {
+                         Header := 'Product'
+                         Width := 184
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ProductInStockingPointInPeriodPlanning [134266.1.219045427]|ProductInStockingPoint_MP [134266.1.5798354]|Product_MP [11660.0.486228287]|Name [101472.1.1551142288]'
+                         }
+                       }
+                       Column internal[DataSetConfigurableColumn] [108486.1.2112140291]
+                       {
+                         Header := 'Period start'
+                         Width := 115
+                         Subtotals := false
+                         Specific
+                         {
+                           Text := 'VALUE( object.GetPeriodStart() )'
+                           Alignment := ''
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [11766.1.490215920]
+                       {
+                         Width := 80
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'Quantity [101320.0.110374989]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [108486.1.2110122001]
+                       {
+                         Header := 'Fulfilled'
+                         Width := 82
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'FulfilledQuantity [11660.0.157649047]'
+                         }
+                       }
+                       Column internal[DataSetConfigurableColumn] [110880.2.1142677800]
+                       {
+                         Header := 'Available'
+                         Width := 79
+                         Subtotals := false
+                         Specific
+                         {
+                           Text := 'VALUE( object.GetAvailableQuantityForPegging() )'
+                           Alignment := ''
+                         }
+                       }
+                       Column internal[DataSetChartColumn] [108486.1.2112734746]
+                       {
+                         Header := 'Fulfillment'
+                         Width := 104
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           Type := 'Stacked Bar'
+                           Relative := true
+                           Points
+                           {
+                             PointDefinition
+                             {
+                               Text := 'minvalue( object.GetPeggedQuantity(), object.FulfilledQuantity() )'
+                               Color := 'Green'
+                               NegativeColor := 'Red'
+                               Description := 'Fulfilled pegged quantity'
+                             }
+                             PointDefinition
+                             {
+                               Text := 'maxvalue( object.FulfilledQuantity() - object.GetPeggedQuantity(), 0 )'
+                               Color := '$FF9900'
+                               NegativeColor := 'Red'
+                               Description := 'Unpegged quantity'
+                             }
+                             PointDefinition
+                             {
+                               Text := 'maxvalue( object.GetPeggedQuantity() - object.FulfilledQuantity(), 0 )'
+                               Color := 'Red'
+                               NegativeColor := 'Red'
+                               Description := 'Overpegged quantity'
+                             }
+                           }
+                         }
+                       }
+                     }
+                   }
+                   ColumnSort [108486.1.2112140291] true false
+                  }
+                 }
+                }
+               }
+              }
+             }
+             INFOOBJECT
+             {
+              KEY [108486.1.1171921413]
+              OBJECTTYPE SplitterPane // SplitterPane3
+              CONTENTS
+              {
+               Size 47.3484848484849
+               VISIBLE true
+              }
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [113694.0.1490022148]
+                OBJECTTYPE List // ListDemandPegging
+                CONTENTS
+                {
+                 Quantorrow := false
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [113694.0.1490022154]
+                  OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel2
+                  CONTENTS
+                  {
+                   Columns
+                   {
+                     Definition := [108486.1.1171928381]
+                     {
+                       [108486.1.1171960868]
+                       [108486.1.1320715923]
+                     }
+                     SubTotals := true
+                     Visible
+                     {
+                       Column internal[DataSetImageColumn] [135072.0.40676723]
+                       {
+                         Width := 22
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'Supply_MP [134266.1.11843917]|SupplyType [108486.1.1185051348]'
+                         }
+                       }
+                       Column internal[DataSetImageColumn] [110880.9.1181376772]
+                       {
+                         Header := 'HasUserQuantity'
+                         Width := 23
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ImgHasUserQuantity [108486.1.1707654857]'
+                         }
+                       }
+                       Column internal[DataSetImageColumn] [113694.0.1490534244]
+                       {
+                         Width := 21
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ImgHasSupply [108486.2.16148330]'
+                         }
+                       }
+                       Column internal[DataSetConfigurableColumn] [113694.0.1490809329]
+                       {
+                         Header := 'Period start'
+                         Width := 115
+                         Subtotals := false
+                         Specific
+                         {
+                           Text := 'VALUE( object.Supply_MP().GetPeriodStart() )'
+                           Alignment := 'Default'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [113694.0.1490521540]
+                       {
+                         Width := 100
+                         Subtotals := false
+                         Quantor
+                         {
+                           Simple := 'sum' DataMemberString := 'Quantity [134266.1.8545959]'
+                         }
+                         Specific
+                         {
+                           DataPath := 'Quantity [134266.1.8545959]'
+                         }
+                       }
+                       Column internal[DataSetConfigurableColumn] [112884.0.2032524903]
+                       {
+                         Header := 'Cost'
+                         Width := 100
+                         Subtotals := false
+                         Quantor
+                         {
+                           Expression := 'sum' 'object.Supply_MP().GetBaseCostPerQuantity() * object.Quantity()'
+                         }
+                         Specific
+                         {
+                           Text := 'VALUE( object.Supply_MP().GetBaseCostPerQuantity() * object.Quantity() )'
+                           Alignment := 'Default'
+                         }
+                       }
+                     }
+                   }
+                   Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Fulfillment Q134266_1_8545931">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Fulfillment Q134266_1_8545931">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Quantity1" ElementType="Fulfillment Q134266_1_8545931" ValueType="Real">\n        <ColumnID>[112610.0.1005221707]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Quantity1">\n          <ColumnID>[112610.0.1005221707]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@5">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
+                   ColumnSort [113694.0.1490809329] true false
+                   ColumnSort [113694.0.1490521540] true false
+                  }
+                 }
+                }
+               }
+              }
+             }
+            }
+           }
+          }
+         }
+         INFOOBJECT
+         {
+          KEY [108486.1.1171911811]
+          OBJECTTYPE SplitterPane // SplitterPane1
+          CONTENTS
+          {
+           Size 49.867197875166
+           VISIBLE true
+          }
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [108486.1.1175693802]
+            OBJECTTYPE SplitterWnd // SplitterWndSupply_MP_Pegging
+            INFOOBJECTS
+            {
+             INFOOBJECT
+             {
+              KEY [108486.1.1175693803]
+              OBJECTTYPE SplitterPane // SplitterPane4
+              CONTENTS
+              {
+               Size 52.6315789473684
+               VISIBLE true
+              }
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [108486.1.1175693804]
+                OBJECTTYPE List // ListSupply
+                CONTENTS
+                {
+                 Quantorrow := false
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [108486.1.1175693807]
+                  OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSupply_MP
+                  CONTENTS
+                  {
+                   Columns
+                   {
+                     Definition := [108486.1.1175456932]
+                     {
+                       [108486.1.1175896212]
+                     }
+                     SubTotals := true
+                     Visible
+                     {
+                       Column internal[DataSetImageColumn] [108486.1.2113319927]
+                       {
+                         Width := 23
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'SupplyType [108486.1.1185051348]'
+                         }
+                       }
+                       Column internal[DataSetImageColumn] [108486.2.521730743]
+                       {
+                         Header := 'HasValidPegging'
+                         Width := 21
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ImgHasValidPegging [108486.2.479981617]'
+                         }
+                       }
+                       Column internal[DataSetImageColumn] [108486.2.14534947]
+                       {
+                         Header := 'HasValidPeggedQuantity'
+                         Width := 23
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ImgHasValidPeggedQuantity [108486.1.2146810434]'
+                         }
+                       }
+                       Column internal[DataSetConfigurableColumn] [108486.1.2113344305]
+                       {
+                         Header := 'Period start'
+                         Width := 115
+                         Subtotals := false
+                         Specific
+                         {
+                           Text := 'VALUE( object.GetPeriodStart() )'
+                           Alignment := ''
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [108486.1.2110122007]
+                       {
+                         Width := 116
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'Quantity [112884.1.1160030032]'
+                         }
+                       }
+                       Column internal[DataSetChartColumn] [108486.1.2113393570]
+                       {
+                         Header := 'Supply'
+                         Width := 72
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           Type := 'Stacked Bar'
+                           Relative := true
+                           Points
+                           {
+                             PointDefinition
+                             {
+                               Text := 'minvalue( object.GetPeggedQuantity(), object.Quantity() )'
+                               Color := '$CCCCCC'
+                               NegativeColor := 'Red'
+                               Description := 'Used quantity for pegging'
+                             }
+                             PointDefinition
+                             {
+                               Text := 'object.GetAvailableQuantityForPegging()'
+                               Color := 'Green'
+                               NegativeColor := 'Red'
+                               Description := 'Available quantity for pegging'
+                             }
+                             PointDefinition
+                             {
+                               Text := 'maxvalue( object.GetPeggedQuantity() - object.Quantity(), 0 )'
+                               Color := 'Red'
+                               NegativeColor := 'Red'
+                               Description := 'Overused quantity'
+                             }
+                           }
+                         }
+                       }
+                       Column internal[DataSetConfigurableColumn] [110880.2.1142925855]
+                       {
+                         Header := 'Available'
+                         Width := 79
+                         Subtotals := false
+                         Specific
+                         {
+                           Text := 'VALUE( object.GetAvailableQuantityForPegging() )'
+                           Alignment := ''
+                         }
+                       }
+                     }
+                   }
+                   ColumnSort [108486.1.2113344305] true false
+                  }
+                 }
+                }
+               }
+              }
+             }
+             INFOOBJECT
+             {
+              KEY [108486.1.1175693810]
+              OBJECTTYPE SplitterPane // SplitterPane5
+              CONTENTS
+              {
+               Size 47.3684210526316
+               VISIBLE true
+              }
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [108486.1.1175693811]
+                OBJECTTYPE List // ListSupplyPegging
+                CONTENTS
+                {
+                 Quantorrow := false
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [108486.1.1175693814]
+                  OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel4
+                  CONTENTS
+                  {
+                   Columns
+                   {
+                     Definition := [108486.1.1175456935]
+                     {
+                       [108486.1.1175896215]
+                       [108486.1.1320715924]
+                     }
+                     SubTotals := true
+                     Visible
+                     {
+                       Column internal[DataSetImageColumn] [108486.1.2113733284]
+                       {
+                         Header := 'DemandType'
+                         Width := 23
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'Demand_MP [134266.1.16794407]|DemandType [11660.0.340434965]'
+                         }
+                       }
+                       Column internal[DataSetImageColumn] [110880.9.1181425511]
+                       {
+                         Header := 'HasUserQuantity'
+                         Width := 25
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ImgHasUserQuantity [108486.1.1707654857]'
+                         }
+                       }
+                       Column internal[DataSetImageColumn] [113694.0.1488690244]
+                       {
+                         Width := 21
+                         SizedByUser := true
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ImgHasDemand [113694.0.1488476421]'
+                         }
+                       }
+                       Column internal[DataSetConfigurableColumn] [108486.1.2113843687]
+                       {
+                         Header := 'Period start'
+                         Width := 115
+                         Subtotals := false
+                         Specific
+                         {
+                           Text := 'VALUE( object.Demand_MP().GetPeriodStart() )'
+                           Alignment := ''
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [108486.1.2110122012]
+                       {
+                         Width := 100
+                         Subtotals := false
+                         Quantor
+                         {
+                           Simple := 'sum' DataMemberString := 'Quantity [134266.1.8545959]'
+                         }
+                         Specific
+                         {
+                           DataPath := 'Quantity [134266.1.8545959]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [108486.1.2110122013]
+                       {
+                         Header := 'Cost'
+                         Width := 100
+                         Subtotals := false
+                         Quantor
+                         {
+                           Simple := 'sum' DataMemberString := 'BaseCost [134266.1.8545935]'
+                         }
+                         Specific
+                         {
+                           DataPath := 'BaseCost [134266.1.8545935]'
+                         }
+                       }
+                     }
+                   }
+                   ColumnSort [108486.1.2113843687] true false
+                  }
+                 }
+                }
+               }
+              }
+             }
+            }
+           }
+          }
+         }
+        }
+       }
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [127710.1.818301225]
+      SINGLEINSTANCE false
+      ID '浜у搧瑙勫垝鏁版嵁鐭╅樀'
+      PARENTKEY [514.0.2180]
+      OBJECTTYPE Form // FormProductPlanningMatrix
+      CREATETYPE FormProductPlanningMatrix
+      CONTENTS
+      {
+       State := normal
+       (0,0,0,0)
+       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4493;]TabIdx[0]Selection[NONE]
+      }
+      BASEINFOOBJECTS
+      {
+      }
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [127710.1.821866707]
+        OBJECTTYPE CheckBox // CheckBoxFilterByProductLevel
+        CONTENTS
+        {
+         Checkstate 1
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [127710.1.821866918]
+        OBJECTTYPE StringSelection // StringSelectionProductLevel
+        CONTENTS
+        {
+         BoundValue '[Leaf product]'
+        }
+        INFOOBJECTS
+        {
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [127710.1.818312567]
+        OBJECTTYPE MatrixEditor // MatrixEditorProductPlanning
+        CONTENTS
+        {
+         RowHeight 29
+         ColumnWidth 82
+         FirstColumnWidth 433
+         Attributes 'SupplyQuantity;DependentDemandAndSalesDemandQuantity;TargetInventoryLevel;InventoryLevelEnd;StockLevelInDays'
+        }
+        INFOOBJECTS
+        {
+         INFOOBJECT
+         {
+          KEY [127710.1.819572713]
+          OBJECTTYPE GUIScaleView // MatrixEditorColumns
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [127710.1.820829335]
+            OBJECTTYPE UserConfigurableInformation // UserConfigurableInformationPeriod
+            CONTENTS
+            {
+             ObjectText 'VALUE(object.Start())'
+            }
+           }
+          }
+         }
+         INFOOBJECT
+         {
+          KEY [127710.1.819572710]
+          OBJECTTYPE GUIScaleView // MatrixEditorRows
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [127710.1.820300549]
+            OBJECTTYPE UserConfigurableInformation // UserConfigurableInformationPISP
+            CONTENTS
+            {
+             ObjectText 'VALUE( object.Name() ) (VALUE( object.UnitOfMeasureName() ))'
+            }
+           }
+          }
+         }
+        }
+       }
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [107654.0.139602704]
+      SINGLEINSTANCE false
+      ID '閿�鍞渶姹�'
+      PARENTKEY [514.0.2180]
+      OBJECTTYPE Form // FormSalesDemands
+      CREATETYPE FormSalesDemands
+      CONTENTS
+      {
+       State := normal
+       (1344,0,192,928)
+       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4493;]TabIdx[1]Selection[FOCUS]
+      }
+      BASEINFOOBJECTS
+      {
+      }
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [124112.0.87054864]
+        OBJECTTYPE SplitterWnd // SplitterWnd1
+        INFOOBJECTS
+        {
+         INFOOBJECT
+         {
+          KEY [124112.0.87054865]
+          OBJECTTYPE SplitterPane // SplitterPaneSalesDemand
+          CONTENTS
+          {
+           Size 72.2642807983482
+           VISIBLE true
+          }
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [124112.0.87250426]
+            OBJECTTYPE List // ListSalesDemand
+            CONTENTS
+            {
+             Quantorrow := false
+            }
+            INFOOBJECTS
+            {
+             INFOOBJECT
+             {
+              KEY [124112.0.87253131]
+              OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSalesDemand
+              CONTENTS
+              {
+               Columns
+               {
+                 SubTotals := true
+                 Visible
+                 {
+                   Column internal[DataSetDataColumn] [414702.1.48371364]
+                   {
+                     Width := 155
+                     SizedByUser := true
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'StartDate [151892.1.1091152440]'
+                       AttributePathIdentifier := "StartType('external[Forecast]')
+                       Attribute([151892.1.1091152440])"
+                     }
+                   }
+                   Column internal[DataSetImageColumn] [124112.0.127773359]
+                   {
+                     Width := 46
+                     SizedByUser := true
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'ImgNotLinkedToPeriod [11766.1.1447220213]'
+                     }
+                   }
+                   Column internal[DataSetImageColumn] [124112.0.127773360]
+                   {
+                     Width := 20
+                     SizedByUser := true
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'ImgIsPostponed [101472.1.1295487708]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [124112.0.127773361]
+                   {
+                     Header := 'Sales segment'
+                     Width := 136
+                     Subtotals := true
+                     Specific
+                     {
+                       DataPath := 'SalesSegment_MP [124112.0.66357172]|Name [101472.1.1552565832]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [124112.0.127773362]
+                   {
+                     Header := 'Product'
+                     Width := 171
+                     SizedByUser := true
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'ProductInStockingPoint_MP [124112.0.61687182]|Product_MP [11660.0.486228287]|Name [101472.1.1551142288]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [124112.0.127773363]
+                   {
+                     Header := 'Stocking point'
+                     Width := 182
+                     SizedByUser := true
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'ProductInStockingPoint_MP [124112.0.61687182]|StockingPoint_MP [11660.0.488414369]|Name [101472.1.1554218718]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [112610.0.1212432722]
+                   {
+                     Width := 93
+                     Subtotals := false
+                     Quantor
+                     {
+                       Simple := 'sum' DataMemberString := 'Quantity [151892.1.1091152476]'
+                     }
+                     Specific
+                     {
+                       DataPath := 'Quantity [151892.1.1091152476]'
+                     }
+                   }
+                   Column internal[DataSetChartColumn] [112610.0.1108107591]
+                   {
+                     Header := 'Fulfillment'
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       Type := 'Stacked Bar'
+                       Relative := false
+                       Points
+                       {
+                         PointDefinition
+                         {
+                           Text := 'object.FulfilledQuantity() * object.DefaultUOMConversionFactor()'
+                           Color := 'Green'
+                           NegativeColor := 'Red'
+                           Description := ''
+                         }
+                         PointDefinition
+                         {
+                           Text := 'sum( object, SalesDemandInPeriod, sdip, sdip.UnfulfilledQuantity() * object.DefaultUOMConversionFactor() )'
+                           Color := '$FFA300'
+                           NegativeColor := 'Green'
+                           Description := ''
+                         }
+                       }
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [124112.0.127773364]
+                   {
+                     Width := 56
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'Price [151892.1.1091152449]'
+                     }
+                   }
+                 }
+               }
+               Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Forecast Q124112_0_61686821">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Forecast Q124112_0_61686821">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Quantity1" ElementType="Forecast Q124112_0_61686821" ValueType="Real">\n        <ColumnID>[112610.0.1212345820]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@FulfilledQuantity1" ElementType="Forecast Q124112_0_61686821" ValueType="Real">\n        <ColumnID>[112610.0.1212349003]</ColumnID>\n        <BaseName>FulfilledQuantity</BaseName>\n        <Name>FulfilledQuantity</Name>\n        <Title>FulfilledQuantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>FulfilledQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Quantity1">\n          <ColumnID>[112610.0.1212345820]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFilterColumn Key="@5" Column="@FulfilledQuantity1">\n          <ColumnID>[112610.0.1212349003]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@6">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
+               ColumnSort [414702.1.48371364] true false
+              }
+             }
+            }
+           }
+          }
+         }
+         INFOOBJECT
+         {
+          KEY [124112.0.87054866]
+          OBJECTTYPE SplitterPane // SplitterPaneSalesDemandInPeriod
+          CONTENTS
+          {
+           Size 27.7357192016518
+           VISIBLE true
+          }
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [116826.1.6886965]
+            OBJECTTYPE SplitterWnd // SplitterWnd
+            INFOOBJECTS
+            {
+             INFOOBJECT
+             {
+              KEY [116826.1.6886966]
+              OBJECTTYPE SplitterPane // SplitterPane
+              CONTENTS
+              {
+               VISIBLE true
+              }
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [116826.1.6887229]
+                OBJECTTYPE List // ListAggregatedSalesDemandInPeriod
+                CONTENTS
+                {
+                 Quantorrow := false
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [116826.1.6887235]
+                  OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSalesDemandInPeriod
+                  CONTENTS
+                  {
+                   Columns
+                   {
+                     Definition := [11766.0.1025088210]
+                     {
+                       [11766.1.490215920]
+                     }
+                     SubTotals := true
+                     Visible
+                     {
+                       Column internal[DataSetDataColumn] [127710.1.899918256]
+                       {
+                         Header := 'Sales segment'
+                         Width := 120
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'SalesSegmentName [123718.0.362599768]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918258]
+                       {
+                         Header := 'Product'
+                         Width := 103
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ProductID [123718.0.362599725]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918257]
+                       {
+                         Header := 'Stocking point'
+                         Width := 121
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'StockingPointID [123718.0.362599783]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918259]
+                       {
+                         Header := 'Start'
+                         Width := 96
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'StartDate [123718.0.362599776]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918260]
+                       {
+                         Header := 'End'
+                         Width := 98
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'EndDate [123718.0.362599633]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918261]
+                       {
+                         Width := 77
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'Quantity [101320.0.110374989]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918262]
+                       {
+                         Header := 'Fulfilled'
+                         Width := 69
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'FulfilledQuantity [11660.0.157649047]'
+                         }
+                       }
+                     }
+                   }
+                   ColumnSort [127710.1.899918259] true false
+                  }
+                 }
+                }
+               }
+              }
+             }
+             INFOOBJECT
+             {
+              KEY [116826.1.6886967]
+              OBJECTTYPE SplitterPane // SplitterPane552
+              CONTENTS
+              {
+               VISIBLE true
+              }
+              INFOOBJECTS
+              {
+               INFOOBJECT
+               {
+                KEY [116826.1.6889558]
+                OBJECTTYPE List // ListDisaggregatedSalesDemandInPeriod
+                CONTENTS
+                {
+                 Quantorrow := false
+                }
+                INFOOBJECTS
+                {
+                 INFOOBJECT
+                 {
+                  KEY [116826.1.6889563]
+                  OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel
+                  CONTENTS
+                  {
+                   Columns
+                   {
+                     Definition := [11766.0.1025088210]
+                     {
+                       [11766.1.490215920]
+                     }
+                     SubTotals := true
+                     Visible
+                     {
+                       Column internal[DataSetDataColumn] [127710.1.899918256]
+                       {
+                         Header := 'Sales segment'
+                         Width := 212
+                         Subtotals := true
+                         Specific
+                         {
+                           DataPath := 'SalesSegmentName [123718.0.362599768]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918258]
+                       {
+                         Header := 'Product'
+                         Width := 118
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'ProductID [123718.0.362599725]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918257]
+                       {
+                         Header := 'Stocking point'
+                         Width := 124
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'StockingPointID [123718.0.362599783]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918259]
+                       {
+                         Header := 'Start'
+                         Width := 103
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'StartDate [123718.0.362599776]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918260]
+                       {
+                         Header := 'End'
+                         Width := 103
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'EndDate [123718.0.362599633]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918261]
+                       {
+                         Width := 77
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'Quantity [101320.0.110374989]'
+                         }
+                       }
+                       Column internal[DataSetDataColumn] [127710.1.899918262]
+                       {
+                         Header := 'Fulfilled'
+                         Width := 69
+                         Subtotals := false
+                         Specific
+                         {
+                           DataPath := 'FulfilledQuantity [11660.0.157649047]'
+                         }
+                       }
+                     }
+                   }
+                   DataMemberSort 'ProductInStockingPoint_MP [123718.0.362599994]|Product_MP [11660.0.486228287]|Name [101472.1.1551142288]' true true
+                   DataMemberSort 'ProductInStockingPoint_MP [123718.0.362599994]|StockingPoint_MP [11660.0.488414369]|Name [101472.1.1554218718]' true true
+                  }
+                 }
+                }
+               }
+              }
+             }
+            }
+           }
+          }
+         }
+        }
+       }
+      }
+     }
+     INFOOBJECT
+     {
+      KEY [136682.0.365472357]
+      SINGLEINSTANCE false
+      ID '鍔犲伐璺緞'
+      PARENTKEY [514.0.2180]
+      OBJECTTYPE Form // FormRoutings
+      CREATETYPE FormRoutings
+      CONTENTS
+      {
+       State := normal
+       (0,0,0,0)
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5507;]TabIdx[0]Selection[NONE]
+      }
+      BASEINFOOBJECTS
+      {
+      }
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [136682.0.365497231]
+        OBJECTTYPE SplitterWnd // SplitterWnd1
+        INFOOBJECTS
+        {
+         INFOOBJECT
+         {
+          KEY [136682.0.365497232]
+          OBJECTTYPE SplitterPane // SplitterPane
+          CONTENTS
+          {
+           VISIBLE true
+          }
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [136682.0.365497233]
+            OBJECTTYPE List // ListRouting
+            CONTENTS
+            {
+             Quantorrow := false
+            }
+            INFOOBJECTS
+            {
+             INFOOBJECT
+             {
+              KEY [136682.0.365497235]
+              OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelRouting
+              CONTENTS
+              {
+               Columns
+               {
+                 SubTotals := true
+                 Visible
+                 {
+                   Column internal[DataSetDataColumn] [414702.1.14320987]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'AllowWIPInventory [127238.0.1952375105]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320988]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'BackgroundRegionHeight [110994.0.1957900049]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320989]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'BackgroundRegionWidth [110994.0.1957900066]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320990]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'CopyHelper [145808.0.1360181115]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320991]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'End [113694.1.1906651480]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320992]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'HasInputOrOutput [127710.1.662345328]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320993]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'HasNonSystemInputOrOutput [158636.0.308982340]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320994]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'HasStep [127710.1.661407939]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320995]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'ID [113694.1.1906651466]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320996]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'IsEnabled [113694.1.1929700744]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320997]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'IsManuallyConfigured [129442.0.45566327]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320998]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'IsSoftDeleted [124808.0.1333363657]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14320999]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'IsValidData [124808.0.1255490063]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321000]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'LeftRegionHeight [110994.0.1930836805]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321001]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'LeftRegionWidth [110994.0.1921226998]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321002]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'MaxNrOfOperations [110994.0.1912206775]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321003]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'MinXOutputPISP [113694.1.1978168643]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321004]
+                   {
+                     Width := 376
+                     SizedByUser := true
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'Name [113694.1.1906651470]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321005]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'SanityCheckDataMostSevere [122192.0.113673777]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321006]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'SanityCheckDataMostSevereCount [122192.0.113673781]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321007]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'SanityCheckDataTotalViolationCount [122192.0.170828320]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321008]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'Start [113694.1.1906651474]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321009]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'TopRegionHeight [110994.0.1930538690]'
+                     }
+                   }
+                   Column internal[DataSetDataColumn] [414702.1.14321010]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'TopRegionWidth [110994.0.1921955322]'
+                     }
+                   }
+                   Column internal[DataSetImageColumn] [414702.1.14321011]
+                   {
+                     Width := 100
+                     Subtotals := false
+                     Specific
+                     {
+                       DataPath := 'ImgIsEnabled [113694.1.1934081987]'
+                     }
+                   }
+                 }
+               }
+              }
+             }
+            }
+           }
+          }
+         }
+         INFOOBJECT
+         {
+          KEY [136682.0.365497250]
+          OBJECTTYPE SplitterPane // SplitterPane1
+          CONTENTS
+          {
+           VISIBLE true
+          }
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [136682.0.365497251]
+            OBJECTTYPE SplitterWnd // SplitterWnd2
+            INFOOBJECTS
+            {
+             INFOOBJECT
+             {
+              KEY [136682.0.365497252]
+              OBJECTTYPE SplitterPane // SplitterPane2
+              CONTENTS
+              {
+               VISIBLE true
+              }
+              INFOOBJECTS
+              {
+              }
+             }
+            }
+           }
+          }
+         }
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [136682.0.365502343]
+        OBJECTTYPE CheckBox // CheckBoxFilterProduct
+        CONTENTS
+        {
+         Checkstate 1
+        }
+       }
+      }
+     }
+    }
+   }
+  }
+}

--
Gitblit v1.9.3