From ffa07b2a8c4e06a1fdc7c38c1c88f85845ff83cb Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期六, 11 十一月 2023 14:20:16 +0800
Subject: [PATCH] 添加订单&对应面板分配分析

---
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ProductID.qbl                                                                                  |    7 
 _Main/BL/Type_ModulePanelCorrespondence/StaticMethod_DeleteModule.qbl                                                                                    |    4 
 _Main/BL/Type_RunStatus/StaticMethod_OnRun.qbl                                                                                                           |    5 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnCancel_OnClick.def                            |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule116.def                                                         |   10 
 _Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentQuantity.qbl                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pLeft.def                                                     |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModuleCorrespondence.def                                               |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bPullCapacityAllocationRule_OnClick.def                      |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModulePanelCorrespondence#1.def                           |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/_ROOT_Component_FormModulePanelCorrespondence.def                                    |    5 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_GetPanelAllocationQuantity.qbl                                                            |    3 
 _Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationInOrder_S.qbl                                                      |   23 
 _Main/UI/MacroPlannerWebApp/Views/模组_面板关系.vw                                                                                                             |   53 +
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_listContextMenuPeggingProductInSalesDemandBase.def                                     |   11 
 _Main/BL/Type_ModulePanelCorrespondence/StaticMethod_AutoGenerateBigRelation.qbl                                                                         |   17 
 _Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentProductID.qbl                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_bStatisticalSelectionVersion_OnClick.def                   |   18 
 _Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationFromScena.qbl                                                      |   23 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ID.qbl                                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Response_ListRunStatus_mModifySuccessStatus_OnClick.def                                              |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_Panel655.def                                                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage134.def                                      |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pUp.def                                                       |   62 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnOk_OnClick.def                                |   29 
 _Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listActionBarPageRunStatus.def                                                             |   10 
 _Main/BL/Type_SalesVolumePanelAllocationBusiness/Attribute_Name.qbl                                                                                      |    7 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Quantity.qbl                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_cmTestAttempt_mnSalesVolumePanelAllocation_OnClick.def              |   16 
 _Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/_ROOT_Type_SalesVolumePanelAllocationOrderAnalyse.qbl                                               |    9 
 _Main/BL/Type_SalesVolumePanelAllocationOrgan/_ROOT_Type_SalesVolumePanelAllocationOrgan.qbl                                                             |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_ListModulePanelCorrespondence_119_MenuSelectAll_OnClick.def                 |   17 
 _Main/BL/Type_ModulePanelCorrespondenceRule/_ROOT_Type_ModulePanelCorrespondenceRule.qbl                                                                 |    9 
 _Main/UI/MacroPlannerWebApp/Views/Pegging分析.vw                                                                                                           |   18 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Method_New.def                                                       |   10 
 _Main/BL/Relations/Relation_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationFromSce.qbl                                                      |   23 
 _Main/BL/Type_ModulePanelCorrespondence/Attribute_PanelOrganCode.qbl                                                                                     |    7 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_BusinessType.qbl                                                                               |    7 
 _Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationInOrde.qbl                                                      |   23 
 _Main/BL/Type_PanelAllocationFromScenario/Attribute_ScenarioName.qbl                                                                                     |    7 
 _Main/BL/Type_PeggingProductInSalesDemandBase/StaticMethod_TestSetBusinessType.qbl                                                                       |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingProductInSalesDemandBase.def                                                |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModuleCorrespondence.def                                  |   10 
 _Main/BL/Relations/Relation_SalesVolumePanelAllocationOrderAnalyse_SalesVolumePanelAllocationIn.qbl                                                      |   23 
 _Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentDate.qbl                                                                         |    7 
 _Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_ModulePanelCorrespondence_ModulePanel.qbl                                                      |   23 
 _Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_OrderID.qbl                                                                                      |    7 
 _Main/BL/Type_PanelAllocationFromScenario/StaticMethod_StatisticalSalesVolumeAndPanelAllocation.qbl                                                      |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu287.def                                        |    8 
 _Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_Name.qbl                                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/_ROOT_Component_DialogCreateEditModulePanelCorrespondenceRule.def    |   21 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_CreatePanelAllocationDataForScenario.qbl                                                  |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPageSalesVolumePanelAllocationFromScenario.def   |   10 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/StaticMethod_CreateData.qbl                                                                              |   28 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationOrgan.qbl                                     |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bPullDataLakeCapacityAllocationRule_OnClick.def                     |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bAddModule_OnClick.def                                       |    6 
 _Main/Sys/ImgAttr/RunStatus.dme                                                                                                                          |   25 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlContent.def                                             |   24 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List989.def                                                   |   60 +
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_List135.def                                                                |   74 +
 _var/_Main/ProjSettings/MacroPlanner/Views/X_分析视图_[414702.1.50321581].vw                                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List989_MenuSelectionAll1_OnClick.def                          |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_DataHolderRunStatus_OnDataChanged.def                      |   26 
 _Main/BL/Type_ModulePanelCorrespondenceRule/Attribute_Name.qbl                                                                                           |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenu208.def                                                     |   35 
 _Main/BL/Relations/Relation_SalesVolumePanelAllocationFromScenario_GlobalOTDSOP_GlobalOTDSOP_Sa.qbl                                                      |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_ListSalesVolumePanelAllocationFromScenario.def                |   60 +
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mNew_OnClick#670.def                                                |   19 
 _Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/StaticMethod_Create.qbl                                                                             |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelContent#679.def                                                       |   16 
 _Main/UI/MacroPlannerWebApp/Views/销售额_面板分配统计.vw                                                                                                          |  246 +++++
 _Main/BL/Type_PanelAllocationFromScenario/StaticMethod_Create.qbl                                                                                        |   21 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage974.def                                      |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPage354.def                                                   |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mDelete_OnClick.def                                                 |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pDown.def                                                     |   58 +
 _Main/BL/Type_ModulePanelCorrespondence/Attribute_ModuleOrganCode.qbl                                                                                    |    7 
 _Main/BL/Type_ModulePanelCorrespondence/StaticMethod_PullCapacityAllocationRule.qbl                                                                      |   17 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Price.qbl                                                                                      |    7 
 _Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentStockingPointID.qbl                                                              |    7 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StockingPointID.qbl                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listContextMenuRunStatus.def                                                               |   24 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pRight.def                                                    |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pDown.def                                                                  |   15 
 _Main/BL/Type_SalesVolumePanelAllocationBusiness/StaticMethod_CreateData.qbl                                                                             |   20 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationBusiness.qbl                                  |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pUP.def                                                                    |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bDeleteModule_OnClick.def                                    |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List392_MenuSelectionAll_OnClick.def                           |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List912.def                                                   |   42 +
 _Main/BL/Type_ModulePanelCorrespondence/StaticMethod_CreatePanel.qbl                                                                                     |    3 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlActions.def                                             |   40 
 _Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_UnitOfMeasurementName.qbl                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def                                                                |   11 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule.def                                                            |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage504.def                                      |   10 
 _Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_GlobalOTDSOP_GlobalOTDSOP_ModulePanel.qbl                                                      |   23 
 _Main/BL/Type_PanelAllocationFromScenario/StaticMethod_AsyncStatisticalSalesVolumeAndPanelAllocation.qbl                                                 |   13 
 _Main/BL/Type_PanelAllocationFromScenario/StaticMethod_SetSuccessRunStatus.qbl                                                                           |    6 
 _Main/BL/Type_SalesVolumePanelAllocationOrgan/StaticMethod_CreateData.qbl                                                                                |   20 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelButton#780.def                                                        |   37 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_ListSalesVolumePanelAllocationFromScenario_mDelete_OnClick.def |   19 
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Response_ListPeggingProductInSalesDemandBase_mSetBusiness_OnClick.def                            |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelPanel.def                                                             |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenuSalesVolumePanelAllocationFromScenario.def     |   24 
 _Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_ID.qbl                                                                                           |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormRunStatus/_ROOT_Component_FormRunStatus.def                                                                    |   17 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_OrderID.qbl                                                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu890.def                                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence#1.def                             |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage191.def                                      |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModulePanelCorrespondence#119.def                                      |   27 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List706.def                                                   |   41 
 _Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationFromSc.qbl                                                      |   23 
 _Main/BL/Type_PeggingProduct_MP/StaticMethod_CreateDataForSalesDemandBase.qbl                                                                            |    5 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu651.def                                        |   10 
 _Main/BL/Type_PanelAllocationFromScenario/_ROOT_Type_SalesVolumePanelAllocationFromScenario.qbl                                                          |    9 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StartDate.qbl                                                                                  |    7 
 _Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_Price.qbl                                                                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bAutoGenerateBigRelation_OnClick.def                                |   21 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pTwo#1.def                                                    |   15 
 _Main/BL/Type_SalesVolumePanelAllocationInOrder/_ROOT_Type_SalesVolumePanelAllocationInOrder.qbl                                                         |    9 
 _Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_BusinessType.qbl                                                                                 |    7 
 /dev/null                                                                                                                                                |   16 
 _Main/BL/Type_SalesVolumePanelAllocationBusiness/_ROOT_Type_SalesVolumePanelAllocationBusiness.qbl                                                       |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/_ROOT_Component_FormSalesVolumePanelAllocationFromScenario.def          |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_ListRunStatus.def                                                                          |   59 +
 _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModuleCorrespondence.def                                    |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu670.def                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pOne#675.def                                                  |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List392.def                                                   |   60 +
 132 files changed, 2,402 insertions(+), 87 deletions(-)

diff --git a/_Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_GlobalOTDSOP_GlobalOTDSOP_ModulePanel.qbl b/_Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_GlobalOTDSOP_GlobalOTDSOP_ModulePanel.qbl
new file mode 100644
index 0000000..918ecf4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_GlobalOTDSOP_GlobalOTDSOP_ModulePanel.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ModulePanelCorrespondenceRule_GlobalOTDSOP_GlobalOTDSOP_ModulePanelCorrespondenceRule
+{
+  #keys: '1[414702.1.436555996]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414702.1.436555998][414702.1.436555997][414702.1.436555999]'
+    Cardinality: '0to1'
+    ObjectDefinition: ModulePanelCorrespondenceRule
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide ModulePanelCorrespondenceRule
+  {
+    #keys: '3[414702.1.436556001][414702.1.436556000][414702.1.436556002]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_ModulePanelCorrespondence_ModulePanel.qbl b/_Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_ModulePanelCorrespondence_ModulePanel.qbl
new file mode 100644
index 0000000..48d319d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ModulePanelCorrespondenceRule_ModulePanelCorrespondence_ModulePanel.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ModulePanelCorrespondenceRule_ModulePanelCorrespondence_ModulePanelCorrespondence_ModulePanelCorrespondenceRule
+{
+  #keys: '1[414702.1.436556011]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ModulePanelCorrespondence
+  {
+    #keys: '3[414702.1.436556013][414702.1.436556012][414702.1.436556014]'
+    Cardinality: '1toN'
+    ObjectDefinition: ModulePanelCorrespondenceRule
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide ModulePanelCorrespondenceRule
+  {
+    #keys: '3[414702.1.436556016][414702.1.436556015][414702.1.436556017]'
+    Cardinality: '0to1'
+    ObjectDefinition: ModulePanelCorrespondence
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_ModulePanelCorrespondence_GlobalOTDSOP_GlobalOTDSOP_ModulePanelCorr.qbl b/_Main/BL/Relations/Relation_ModulePanelCorrespondence_GlobalOTDSOP_GlobalOTDSOP_ModulePanelCorr.qbl
deleted file mode 100644
index 58a68fb..0000000
--- a/_Main/BL/Relations/Relation_ModulePanelCorrespondence_GlobalOTDSOP_GlobalOTDSOP_ModulePanelCorr.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation ModulePanelCorrespondence_GlobalOTDSOP_GlobalOTDSOP_ModulePanelCorrespondence
-{
-  #keys: '1[414702.1.376546995]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDSOP
-  {
-    #keys: '3[414702.1.376546997][414702.1.376546996][414702.1.376546998]'
-    Cardinality: '0to1'
-    ObjectDefinition: ModulePanelCorrespondence
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide ModulePanelCorrespondence
-  {
-    #keys: '3[414702.1.376547000][414702.1.376546999][414702.1.376547001]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDSOP
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationFromSc.qbl b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationFromSc.qbl
new file mode 100644
index 0000000..f61a880
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationFromSc.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationFromScenario_SalesVolumePanelAllocationFromScenario_SalesVolumePanelAllocationBusiness
+{
+  #keys: '1[414702.1.436556158]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SalesVolumePanelAllocationFromScenario
+  {
+    #keys: '3[414702.1.436556160][414702.1.436556159][414702.1.436556161]'
+    Cardinality: '0to1'
+    ObjectDefinition: SalesVolumePanelAllocationBusiness
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SalesVolumePanelAllocationBusiness
+  {
+    #keys: '3[414702.1.436556163][414702.1.436556162][414702.1.436556164]'
+    Cardinality: '1toN'
+    ObjectDefinition: SalesVolumePanelAllocationFromScenario
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationInOrde.qbl b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationInOrde.qbl
new file mode 100644
index 0000000..3ca8f18
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationInOrde.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SalesVolumePanelAllocationBusiness_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationBusiness
+{
+  #keys: '1[414702.1.436556142]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SalesVolumePanelAllocationInOrder
+  {
+    #keys: '3[414702.1.436556144][414702.1.436556143][414702.1.436556145]'
+    Cardinality: '1toN'
+    ObjectDefinition: SalesVolumePanelAllocationBusiness
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SalesVolumePanelAllocationBusiness
+  {
+    #keys: '3[414702.1.436556147][414702.1.436556146][414702.1.436556148]'
+    Cardinality: '0to1'
+    ObjectDefinition: SalesVolumePanelAllocationInOrder
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SalesVolumePanelAllocationFromScenario_GlobalOTDSOP_GlobalOTDSOP_Sa.qbl b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationFromScenario_GlobalOTDSOP_GlobalOTDSOP_Sa.qbl
new file mode 100644
index 0000000..6decc04
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationFromScenario_GlobalOTDSOP_GlobalOTDSOP_Sa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SalesVolumePanelAllocationFromScenario_GlobalOTDSOP_GlobalOTDSOP_SalesVolumePanelAllocationFromScenario
+{
+  #keys: '1[414702.1.445395513]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414702.1.445395515][414702.1.445395514][414702.1.445395516]'
+    Cardinality: '0to1'
+    ObjectDefinition: SalesVolumePanelAllocationFromScenario
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SalesVolumePanelAllocationFromScenario
+  {
+    #keys: '3[414702.1.445395518][414702.1.445395517][414702.1.445395519]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationFromSce.qbl b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationFromSce.qbl
new file mode 100644
index 0000000..29ae95c
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationFromSce.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationFromScenario_SalesVolumePanelAllocationFromScenario_SalesVolumePanelAllocationInOrder
+{
+  #keys: '1[414702.1.436751619]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SalesVolumePanelAllocationFromScenario
+  {
+    #keys: '3[414702.1.436751621][414702.1.436751620][414702.1.436751622]'
+    Cardinality: '0to1'
+    ObjectDefinition: SalesVolumePanelAllocationInOrder
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SalesVolumePanelAllocationInOrder
+  {
+    #keys: '3[414702.1.436751624][414702.1.436751623][414702.1.436751625]'
+    Cardinality: '1toN'
+    ObjectDefinition: SalesVolumePanelAllocationFromScenario
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrderAnalyse_SalesVolumePanelAllocationIn.qbl b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrderAnalyse_SalesVolumePanelAllocationIn.qbl
new file mode 100644
index 0000000..cfe42c5
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrderAnalyse_SalesVolumePanelAllocationIn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SalesVolumePanelAllocationOrderAnalyse_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationOrderAnalyse
+{
+  #keys: '1[414702.1.461773130]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SalesVolumePanelAllocationInOrder
+  {
+    #keys: '3[414702.1.461773132][414702.1.461773131][414702.1.461773133]'
+    Cardinality: '0to1'
+    ObjectDefinition: SalesVolumePanelAllocationOrderAnalyse
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SalesVolumePanelAllocationOrderAnalyse
+  {
+    #keys: '3[414702.1.461773135][414702.1.461773134][414702.1.461773136]'
+    Cardinality: '1toN'
+    ObjectDefinition: SalesVolumePanelAllocationInOrder
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationFromScena.qbl b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationFromScena.qbl
new file mode 100644
index 0000000..89bc5ac
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationFromScena.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationFromScenario_SalesVolumePanelAllocationFromScenario_SalesVolumePanelAllocationOrgan
+{
+  #keys: '1[414702.1.436556207]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SalesVolumePanelAllocationFromScenario
+  {
+    #keys: '3[414702.1.436556209][414702.1.436556208][414702.1.436556210]'
+    Cardinality: '0to1'
+    ObjectDefinition: SalesVolumePanelAllocationOrgan
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SalesVolumePanelAllocationOrgan
+  {
+    #keys: '3[414702.1.436556212][414702.1.436556211][414702.1.436556213]'
+    Cardinality: '1toN'
+    ObjectDefinition: SalesVolumePanelAllocationFromScenario
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationInOrder_S.qbl b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationInOrder_S.qbl
new file mode 100644
index 0000000..05aeb6c
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationInOrder_S.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SalesVolumePanelAllocationOrgan_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationInOrder_SalesVolumePanelAllocationOrgan
+{
+  #keys: '1[414702.1.436556191]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SalesVolumePanelAllocationInOrder
+  {
+    #keys: '3[414702.1.436556193][414702.1.436556192][414702.1.436556194]'
+    Cardinality: '1toN'
+    ObjectDefinition: SalesVolumePanelAllocationOrgan
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SalesVolumePanelAllocationOrgan
+  {
+    #keys: '3[414702.1.436556196][414702.1.436556195][414702.1.436556197]'
+    Cardinality: '0to1'
+    ObjectDefinition: SalesVolumePanelAllocationInOrder
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_CreatePanelAllocationDataForScenario.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_CreatePanelAllocationDataForScenario.qbl
index d64a23a..4c82bc8 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_CreatePanelAllocationDataForScenario.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_CreatePanelAllocationDataForScenario.qbl
@@ -19,7 +19,7 @@
             columnMonth      := this.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnMonthName, ColumnNo := columnNo, Year := y.YearNo(), Month := m.MonthNo(), ColumnType := "PanelAllocation", ScenarioName := mp.ScenarioName() );
             traverse ( this, CapacityAndSaleBudgeCompareItemRow, casbcir ) {
               productIDs := selectuniquevalues( casbcir, CapacityAndSaleBudgeCompareItemRowProduct, tempCASBCIRP, true, tempCASBCIRP.ProductCode() );
-              total      := CapacityAndSaleBudgeCompareItemCell::GetPanelAllocationQuantity( this, productIDs, y.YearNo(), m.MonthNo() );
+              total      := CapacityAndSaleBudgeCompareItemCell::GetPanelAllocationQuantity( this, null( ModulePanelCorrespondenceRule ), productIDs, y.YearNo(), m.MonthNo() );
               cellMonth  := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]total );
               cellMonth.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
               columnNo++;
@@ -30,7 +30,7 @@
           columnYear       := this.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnMonthName, ColumnNo := columnNo, Year := y.YearNo(), ColumnType := "PanelAllocation", ScenarioName := mp.ScenarioName() );
           traverse ( this, CapacityAndSaleBudgeCompareItemRow, casbcir ) {
             productIDs := selectuniquevalues( casbcir, CapacityAndSaleBudgeCompareItemRowProduct, tempCASBCIRP, true, tempCASBCIRP.ProductCode() );
-            total      := CapacityAndSaleBudgeCompareItemCell::GetPanelAllocationQuantity( this, productIDs, y.YearNo(), 0 );
+            total      := CapacityAndSaleBudgeCompareItemCell::GetPanelAllocationQuantity( this, null( ModulePanelCorrespondenceRule), productIDs, y.YearNo(), 0 );
             cellYear := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]total );
             cellYear.CapacityAndSaleBudgeCompareItemRow( relset, casbcir );
           }
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_GetPanelAllocationQuantity.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_GetPanelAllocationQuantity.qbl
index 58dc15c..6056f3e 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_GetPanelAllocationQuantity.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/StaticMethod_GetPanelAllocationQuantity.qbl
@@ -2,6 +2,7 @@
 #parent: #root
 StaticMethod GetPanelAllocationQuantity (
   GlobalOTDSOP globalOTDSOP,
+  ModulePanelCorrespondenceRule modulePanelCorrespondenceRule,
   Strings productIDs,
   Number year,
   Number month
@@ -17,7 +18,7 @@
                                     tempPRPISPMP.NumberOfPlies() = 0 );                         
       total := total + 
                sum( targetPRPISPMPs, Elements.AllChild, tempAC, 
-                    exists( globalOTDSOP, ModulePanelCorrespondence.Panel, tempP, 
+                    exists( modulePanelCorrespondenceRule, ModulePanelCorrespondence.Panel, tempP, 
                             tempP.Module().ModuleProductID() = pid and
                             tempP.PanelProductID() = tempAC.ProductID() ) and
                     tempAC.StartDate().Year() = year and
diff --git a/_Main/BL/Type_ModulePanelCorrespondence/Attribute_ModuleOrganCode.qbl b/_Main/BL/Type_ModulePanelCorrespondence/Attribute_ModuleOrganCode.qbl
new file mode 100644
index 0000000..b4b1f8b
--- /dev/null
+++ b/_Main/BL/Type_ModulePanelCorrespondence/Attribute_ModuleOrganCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ModuleOrganCode
+{
+  #keys: '3[414702.1.436751525][414702.1.436751524][414702.1.436751526]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ModulePanelCorrespondence/Attribute_PanelOrganCode.qbl b/_Main/BL/Type_ModulePanelCorrespondence/Attribute_PanelOrganCode.qbl
new file mode 100644
index 0000000..11aeac0
--- /dev/null
+++ b/_Main/BL/Type_ModulePanelCorrespondence/Attribute_PanelOrganCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PanelOrganCode
+{
+  #keys: '3[414702.1.436751535][414702.1.436751534][414702.1.436751536]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_AutoGenerateRelation.qbl b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_AutoGenerateBigRelation.qbl
similarity index 65%
rename from _Main/BL/Type_ModulePanelCorrespondence/StaticMethod_AutoGenerateRelation.qbl
rename to _Main/BL/Type_ModulePanelCorrespondence/StaticMethod_AutoGenerateBigRelation.qbl
index 6f9bedf..e8e8ea1 100644
--- a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_AutoGenerateRelation.qbl
+++ b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_AutoGenerateBigRelation.qbl
@@ -1,13 +1,14 @@
 Quintiq file version 2.0
 #parent: #root
-StaticMethod AutoGenerateRelation (
+StaticMethod AutoGenerateBigRelation (
   GlobalOTDSOP globalOTDSOP,
+  ModulePanelCorrespondenceRule modulePanelCorrespondenceRule,
   Product_MPs panelProduct_MPs
 )
 {
   TextBody:
   [*
-    globalOTDSOP.ModulePanelCorrespondence( relflush );
+    modulePanelCorrespondenceRule.ModulePanelCorrespondence( relflush );
     
     panelProductIDs := selectuniquevalues( panelProduct_MPs, Elements, tempPMP, true, tempPMP.ID() );
     
@@ -19,18 +20,18 @@
           targetNumberOfPliesProductIDs := selectuniquevalues( zpr, AllChild, tempZPR, tempZPR.NumberOfPlies() = i, tempZPR.ProductID() );
           intersectResult := panelProductIDs.Intersect( targetNumberOfPliesProductIDs );
           if ( intersectResult.Size() > 0 ) {
-            targetModulePanelCorrespondence := select( globalOTDSOP, ModulePanelCorrespondence, tempMPC, 
+            targetModulePanelCorrespondence := select( modulePanelCorrespondenceRule, ModulePanelCorrespondence, tempMPC, 
                                                        tempMPC.ModuleProductID() = ppisdb.PeggingProduct_MP().ProductID() and
                                                        tempMPC.ModuleStockingPointID() = ppisdb.StockingPointID() );
             if ( isnull( targetModulePanelCorrespondence ) ) {
-              targetModulePanelCorrespondence := globalOTDSOP.ModulePanelCorrespondence( relnew, 
-                                                                                         ModuleProductID       := ppisdb.PeggingProduct_MP().ProductID(),
-                                                                                         ModuleStockingPointID := ppisdb.StockingPointID(),
-                                                                                         IsModule              := true );
+              targetModulePanelCorrespondence := modulePanelCorrespondenceRule.ModulePanelCorrespondence( relnew, 
+                                                 ModuleProductID       := ppisdb.PeggingProduct_MP().ProductID(),
+                                                 ModuleStockingPointID := ppisdb.StockingPointID(),
+                                                 IsModule              := true );
             }
             traverse ( intersectResult, Elements, ir ) {
               if ( not exists( targetModulePanelCorrespondence, Panel, tempP, tempP.PanelProductID() = ir ) ) {
-                panel := globalOTDSOP.ModulePanelCorrespondence( relnew, PanelProductID := ir );
+                panel := modulePanelCorrespondenceRule.ModulePanelCorrespondence( relnew, PanelProductID := ir );
                 panel.Module( relset, targetModulePanelCorrespondence );
               }
             }
diff --git a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_CreatePanel.qbl b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_CreatePanel.qbl
index e4ab37b..c87a93f 100644
--- a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_CreatePanel.qbl
+++ b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_CreatePanel.qbl
@@ -2,6 +2,7 @@
 #parent: #root
 StaticMethod CreatePanel (
   GlobalOTDSOP globalOTDSOP,
+  ModulePanelCorrespondenceRule modulePanelCorrespondenceRule,
   ModulePanelCorrespondences modulePanelCorrespondences,
   ProductInStockingPoint_MPs pisps
 )
@@ -14,7 +15,7 @@
                                tempP.PanelProductID() = pisp.ProductID() and 
                                tempP.PanelStockingPointID() = pisp.StockingPointID() );
         if ( isnull( targetPanel ) ) {
-          targetPanel := globalOTDSOP.ModulePanelCorrespondence( relnew, PanelProductID := pisp.ProductID(), PanelStockingPointID := pisp.StockingPointID() );
+          targetPanel := modulePanelCorrespondenceRule.ModulePanelCorrespondence( relnew, PanelProductID := pisp.ProductID(), PanelStockingPointID := pisp.StockingPointID() );
           targetPanel.Module( relset, mpc );
         }
       }
diff --git a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_DeleteModule.qbl b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_DeleteModule.qbl
index 22ceadb..9abfe71 100644
--- a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_DeleteModule.qbl
+++ b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_DeleteModule.qbl
@@ -1,14 +1,14 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod DeleteModule (
-  GlobalOTDSOP globalOTDSOP,
+  ModulePanelCorrespondenceRule modulePanelCorrespondenceRule,
   ProductInStockingPoint_MPs pisps
 )
 {
   TextBody:
   [*
     traverse ( pisps, Elements, pisp ) {
-      targetModulePanelCorrespondence := select( globalOTDSOP, ModulePanelCorrespondence, tempMPC,
+      targetModulePanelCorrespondence := select( modulePanelCorrespondenceRule, ModulePanelCorrespondence, tempMPC,
                                                  tempMPC.ModuleProductID() = pisp.ProductID() and
                                                  tempMPC.ModuleStockingPointID() = pisp.StockingPointID() and
                                                  tempMPC.IsModule() );
diff --git a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_PullCapacityAllocationRule.qbl b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_PullCapacityAllocationRule.qbl
index 978a5a5..a88ac03 100644
--- a/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_PullCapacityAllocationRule.qbl
+++ b/_Main/BL/Type_ModulePanelCorrespondence/StaticMethod_PullCapacityAllocationRule.qbl
@@ -1,27 +1,28 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod PullCapacityAllocationRule (
-  GlobalOTDSOP globalOTDSOP
+  GlobalOTDSOP globalOTDSOP,
+  ModulePanelCorrespondenceRule modulePanelCorrespondenceRule
 )
 {
   TextBody:
   [*
-    globalOTDSOP.ModulePanelCorrespondence( relflush );
+    modulePanelCorrespondenceRule.ModulePanelCorrespondence( relflush );
     
     traverse ( globalOTDSOP, CapacityAllocationResultsRuleConfiguration, carrc ) {
-      module := select( globalOTDSOP, ModulePanelCorrespondence, tempMPC, 
+      module := select( modulePanelCorrespondenceRule, ModulePanelCorrespondence, tempMPC, 
                         tempMPC.ModuleProductID() = carrc.ModuleMaterialCode() and 
                         tempMPC.ModuleStockingPointID() = carrc.StockingPointID() );
       if ( isnull( module ) ) {
-        module := globalOTDSOP.ModulePanelCorrespondence( relnew, 
-                                                          ModuleProductID       := carrc.ModuleMaterialCode(),
-                                                          ModuleStockingPointID := carrc.StockingPointID(),
-                                                          IsModule              := true );
+        module := modulePanelCorrespondenceRule.ModulePanelCorrespondence( relnew, 
+                                                                           ModuleProductID       := carrc.ModuleMaterialCode(),
+                                                                           ModuleStockingPointID := carrc.StockingPointID(),
+                                                                           IsModule              := true );
       }
       
       isExists := exists( module, Panel, tempP, tempP.PanelProductID() = carrc.PanelMaterialCode() );
       if ( not isExists ) {
-        panel := globalOTDSOP.ModulePanelCorrespondence( relnew, PanelProductID := carrc.PanelMaterialCode() );
+        panel := modulePanelCorrespondenceRule.ModulePanelCorrespondence( relnew, PanelProductID := carrc.PanelMaterialCode() );
         panel.Module( relset, module );
       }
     }
diff --git a/_Main/BL/Type_ModulePanelCorrespondenceRule/Attribute_Name.qbl b/_Main/BL/Type_ModulePanelCorrespondenceRule/Attribute_Name.qbl
new file mode 100644
index 0000000..9a0377e
--- /dev/null
+++ b/_Main/BL/Type_ModulePanelCorrespondenceRule/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.1.436555987][414702.1.436555986][414702.1.436555988]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ModulePanelCorrespondenceRule/_ROOT_Type_ModulePanelCorrespondenceRule.qbl b/_Main/BL/Type_ModulePanelCorrespondenceRule/_ROOT_Type_ModulePanelCorrespondenceRule.qbl
new file mode 100644
index 0000000..07126b1
--- /dev/null
+++ b/_Main/BL/Type_ModulePanelCorrespondenceRule/_ROOT_Type_ModulePanelCorrespondenceRule.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ModulePanelCorrespondenceRule
+{
+  #keys: '5[414702.1.436555983][414702.1.436555981][0.0.0][414702.1.436555982][414702.1.436555984]'
+  BaseType: Object
+  StructuredName: 'ModulePanelCorrespondenceRules'
+}
diff --git a/_Main/BL/Type_PanelAllocationFromScenario/Attribute_ScenarioName.qbl b/_Main/BL/Type_PanelAllocationFromScenario/Attribute_ScenarioName.qbl
new file mode 100644
index 0000000..2bddc48
--- /dev/null
+++ b/_Main/BL/Type_PanelAllocationFromScenario/Attribute_ScenarioName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ScenarioName
+{
+  #keys: '3[414702.1.445395529][414702.1.445395528][414702.1.445395530]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_AsyncStatisticalSalesVolumeAndPanelAllocation.qbl b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_AsyncStatisticalSalesVolumeAndPanelAllocation.qbl
new file mode 100644
index 0000000..6a95791
--- /dev/null
+++ b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_AsyncStatisticalSalesVolumeAndPanelAllocation.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AsyncStatisticalSalesVolumeAndPanelAllocation (
+  MacroPlan macroPlan,
+  GlobalOTDSOP globalOTDSOP
+)
+{
+  TextBody:
+  [*
+    macroPlan -> SalesVolumePanelAllocationFromScenario::StatisticalSalesVolumeAndPanelAllocation( globalOTDSOP )
+              -> SalesVolumePanelAllocationFromScenario::SetSuccessRunStatus();
+  *]
+}
diff --git a/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_Create.qbl b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_Create.qbl
new file mode 100644
index 0000000..d8bd848
--- /dev/null
+++ b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_Create.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Create (
+  GlobalOTDSOP globalOTDSOP,
+  String scenarioName
+) as SalesVolumePanelAllocationFromScenario
+{
+  TextBody:
+  [*
+    targetSalesVolumePanelAllocationFromScenario := select( globalOTDSOP, SalesVolumePanelAllocationFromScenario, tempSVPAFS, 
+                                                            tempSVPAFS.ScenarioName() = scenarioName );
+    
+    if ( not isnull( targetSalesVolumePanelAllocationFromScenario ) ) { 
+      targetSalesVolumePanelAllocationFromScenario.Delete();
+    }
+    
+    targetSalesVolumePanelAllocationFromScenario := globalOTDSOP.SalesVolumePanelAllocationFromScenario( relnew, ScenarioName := scenarioName );
+    
+    return targetSalesVolumePanelAllocationFromScenario;
+  *]
+}
diff --git a/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_SetSuccessRunStatus.qbl b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_SetSuccessRunStatus.qbl
new file mode 100644
index 0000000..2f13b4d
--- /dev/null
+++ b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_SetSuccessRunStatus.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SetSuccessRunStatus
+{
+  TextBody: 'RunStatus::SetCommonSuccessStatus( "SalesVolumePanelAllocation" );'
+}
diff --git a/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_StatisticalSalesVolumeAndPanelAllocation.qbl b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_StatisticalSalesVolumeAndPanelAllocation.qbl
new file mode 100644
index 0000000..6f2c611
--- /dev/null
+++ b/_Main/BL/Type_PanelAllocationFromScenario/StaticMethod_StatisticalSalesVolumeAndPanelAllocation.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod StatisticalSalesVolumeAndPanelAllocation (
+  MacroPlan macroPlan,
+  GlobalOTDSOP globalOTDSOP
+)
+{
+  TextBody:
+  [*
+    //info( "鐗堟湰鍚嶏細", macroPlan.ScenarioName() );
+    
+    salesVolumePanelAllocationFromScenario := SalesVolumePanelAllocationFromScenario::Create( globalOTDSOP, macroPlan.ScenarioName() );
+    
+    SalesVolumePanelAllocationBusiness::CreateData( globalOTDSOP, salesVolumePanelAllocationFromScenario );
+    SalesVolumePanelAllocationOrgan::CreateData( globalOTDSOP, salesVolumePanelAllocationFromScenario );
+    
+    SalesVolumePanelAllocationInOrder::CreateData( globalOTDSOP, salesVolumePanelAllocationFromScenario );
+  *]
+}
diff --git a/_Main/BL/Type_PanelAllocationFromScenario/_ROOT_Type_SalesVolumePanelAllocationFromScenario.qbl b/_Main/BL/Type_PanelAllocationFromScenario/_ROOT_Type_SalesVolumePanelAllocationFromScenario.qbl
new file mode 100644
index 0000000..8a77d7d
--- /dev/null
+++ b/_Main/BL/Type_PanelAllocationFromScenario/_ROOT_Type_SalesVolumePanelAllocationFromScenario.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SalesVolumePanelAllocationFromScenario
+{
+  #keys: '5[414702.1.445395430][414702.1.445395428][0.0.0][414702.1.445395429][414702.1.445395431]'
+  BaseType: Object
+  StructuredName: 'SalesVolumePanelAllocationFromScenarios'
+}
diff --git a/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_BusinessType.qbl b/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..2cf8267
--- /dev/null
+++ b/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.1.450230839][414702.1.450230838][414702.1.450230840]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_OrderID.qbl b/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_OrderID.qbl
new file mode 100644
index 0000000..2ef5ef1
--- /dev/null
+++ b/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.1.450016133][414702.1.450016132][414702.1.450016134]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_Price.qbl b/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_Price.qbl
new file mode 100644
index 0000000..3e47366
--- /dev/null
+++ b/_Main/BL/Type_PeggingProductInSalesDemandBase/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.1.450219470][414702.1.450219469][414702.1.450219471]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PeggingProductInSalesDemandBase/StaticMethod_TestSetBusinessType.qbl b/_Main/BL/Type_PeggingProductInSalesDemandBase/StaticMethod_TestSetBusinessType.qbl
new file mode 100644
index 0000000..14e87a5
--- /dev/null
+++ b/_Main/BL/Type_PeggingProductInSalesDemandBase/StaticMethod_TestSetBusinessType.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod TestSetBusinessType (
+  PeggingProductInSalesDemandBases peggingProductInSalesDemandBases,
+  const GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    businessTypes := selectuniquevalues( globalOTDTable, Global_MappingCustomOrder, tempGMCO, true, tempGMCO.BusinessType() );
+    
+    traverse ( peggingProductInSalesDemandBases, Elements, ppisdb ) {
+      ppisdb.BusinessType( businessTypes.Element( Number::Random( 0, businessTypes.Size() - 1 ) ) );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PeggingProduct_MP/StaticMethod_CreateDataForSalesDemandBase.qbl b/_Main/BL/Type_PeggingProduct_MP/StaticMethod_CreateDataForSalesDemandBase.qbl
index 96df9b1..a02bcf5 100644
--- a/_Main/BL/Type_PeggingProduct_MP/StaticMethod_CreateDataForSalesDemandBase.qbl
+++ b/_Main/BL/Type_PeggingProduct_MP/StaticMethod_CreateDataForSalesDemandBase.qbl
@@ -14,7 +14,10 @@
                                                                  StockingPointID   := sd.StockingPointID(), 
                                                                  SalesDemandBaseID := sd.ID(),
                                                                  Quantity          := sd.Quantity(),
-                                                                 StartDate         := sd.StartDate() );
+                                                                 StartDate         := sd.StartDate(),
+                                                                 BusinessType      := guard( sd.astype( CustomerOrder ).BusinessType(), "鏃犱簨涓氶儴淇℃伅" ),
+                                                                 Price             := sd.Price(),
+                                                                 OrderID           := guard( sd.astype( CustomerOrder ).OrderID(), "鏃犺鍗旾D淇℃伅" ) );
       }
     }
   *]
diff --git a/_Main/BL/Type_RunStatus/StaticMethod_OnRun.qbl b/_Main/BL/Type_RunStatus/StaticMethod_OnRun.qbl
index 02709ec..ef6c40a 100644
--- a/_Main/BL/Type_RunStatus/StaticMethod_OnRun.qbl
+++ b/_Main/BL/Type_RunStatus/StaticMethod_OnRun.qbl
@@ -8,7 +8,10 @@
   TextBody:
   [*
     targetRunStatus := select( globalOTDLog, RunStatus, tempRS, tempRS.Type() = runType );
-    targetRunStatus.Delete();
+    
+    if ( not isnull( targetRunStatus ) ) {
+      targetRunStatus.Delete();
+    }
     
     globalOTDLog.RunStatus( relnew, Status := 1, Type := runType );
   *]
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationBusiness/Attribute_Name.qbl b/_Main/BL/Type_SalesVolumePanelAllocationBusiness/Attribute_Name.qbl
new file mode 100644
index 0000000..c99980a
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationBusiness/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.1.436556133][414702.1.436556132][414702.1.436556134]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationBusiness/StaticMethod_CreateData.qbl b/_Main/BL/Type_SalesVolumePanelAllocationBusiness/StaticMethod_CreateData.qbl
new file mode 100644
index 0000000..0e40aed
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationBusiness/StaticMethod_CreateData.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateData (
+  GlobalOTDSOP globalOTDSOP,
+  SalesVolumePanelAllocationFromScenario salesVolumePanelAllocationFromScenario
+)
+{
+  TextBody:
+  [*
+    businessTypes := selectuniquevalues( globalOTDSOP, PeggingProduct_MP.PeggingProductInSalesDemandBase, tempPPISDB,
+                                         true,
+                                         tempPPISDB.BusinessType() );
+    
+    salesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationBusiness( relflush );
+    
+    traverse ( businessTypes, Elements, bt, bt <> "" ) {
+      salesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationBusiness( relnew, Name := bt );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationBusiness/_ROOT_Type_SalesVolumePanelAllocationBusiness.qbl b/_Main/BL/Type_SalesVolumePanelAllocationBusiness/_ROOT_Type_SalesVolumePanelAllocationBusiness.qbl
new file mode 100644
index 0000000..76aed97
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationBusiness/_ROOT_Type_SalesVolumePanelAllocationBusiness.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SalesVolumePanelAllocationBusiness
+{
+  #keys: '5[414702.1.436556126][414702.1.436556124][0.0.0][414702.1.436556125][414702.1.436556127]'
+  BaseType: Object
+  StructuredName: 'SalesVolumePanelAllocationBusinesss'
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_BusinessType.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..d44b7a4
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414702.1.436751697][414702.1.436751696][414702.1.436751698]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ID.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ID.qbl
new file mode 100644
index 0000000..a14d727
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.1.436751647][414702.1.436751646][414702.1.436751648]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_OrderID.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_OrderID.qbl
new file mode 100644
index 0000000..e44ead8
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_OrderID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderID
+{
+  #keys: '3[414702.1.436751657][414702.1.436751656][414702.1.436751658]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Price.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Price.qbl
new file mode 100644
index 0000000..fed3e74
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414702.1.450230857][414702.1.450230856][414702.1.450230858]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ProductID.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ProductID.qbl
new file mode 100644
index 0000000..1bec058
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414702.1.436751667][414702.1.436751666][414702.1.436751668]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Quantity.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Quantity.qbl
new file mode 100644
index 0000000..e5c1100
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414702.1.436751687][414702.1.436751686][414702.1.436751688]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StartDate.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StartDate.qbl
new file mode 100644
index 0000000..d8ce63d
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[414702.1.436751677][414702.1.436751676][414702.1.436751678]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StockingPointID.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..8f91ef8
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414702.1.436751774][414702.1.436751773][414702.1.436751775]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationBusiness.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationBusiness.qbl
new file mode 100644
index 0000000..48dc92a
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationBusiness.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+DeclarativeReferenceRelation CalcSalesVolumePanelAllocationBusiness
+{
+  #keys: '1[414702.1.450252414]'
+  Expression:
+  [*
+    targetSalesVolumePanelAllocationBusiness := select( this, SalesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationBusiness, tempSVPAB,
+                                                        tempSVPAB.Name() = this.BusinessType() );
+    
+    return targetSalesVolumePanelAllocationBusiness;
+  *]
+  Relation: SalesVolumePanelAllocationBusiness
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationOrgan.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationOrgan.qbl
new file mode 100644
index 0000000..1468e3a
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/DeclarativeReferenceRelation_CalcSalesVolumePanelAllocationOrgan.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+DeclarativeReferenceRelation CalcSalesVolumePanelAllocationOrgan
+{
+  #keys: '1[414702.1.450252419]'
+  Expression:
+  [*
+    targetSalesVolumePanelAllocationOrgan := select( this, SalesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationOrgan, tempSVPAO,
+                                                     tempSVPAO.ID() = this.StockingPointID() );
+    
+    return targetSalesVolumePanelAllocationOrgan;
+  *]
+  Relation: SalesVolumePanelAllocationOrgan
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/StaticMethod_CreateData.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/StaticMethod_CreateData.qbl
new file mode 100644
index 0000000..1533b73
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/StaticMethod_CreateData.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateData (
+  GlobalOTDSOP globalOTDSOP,
+  SalesVolumePanelAllocationFromScenario salesVolumePanelAllocationFromScenario
+)
+{
+  TextBody:
+  [*
+    salesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationInOrder( relflush );
+    
+    traverse ( globalOTDSOP, PeggingProduct_MP.PeggingProductInSalesDemandBase, ppisdb ) {
+      targetSalesVolumePanelAllocationInOrder := salesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationInOrder( relnew,
+                                                 BusinessType    := ppisdb.BusinessType(),
+                                                 ID              := ppisdb.SalesDemandBaseID(),
+                                                 OrderID         := ppisdb.OrderID(),
+                                                 Price           := ppisdb.Price(),
+                                                 ProductID       := ppisdb.PeggingProduct_MP().ProductID(),
+                                                 Quantity        := ppisdb.Quantity(),
+                                                 StartDate       := ppisdb.StartDate(),
+                                                 StockingPointID := ppisdb.StockingPointID() );
+                                                 
+      traverse ( ppisdb, PeggingResult, pr, pr.NumberOfPlies() = 0 ) {
+        SalesVolumePanelAllocationOrderAnalyse::Create( pr, targetSalesVolumePanelAllocationInOrder );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationInOrder/_ROOT_Type_SalesVolumePanelAllocationInOrder.qbl b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/_ROOT_Type_SalesVolumePanelAllocationInOrder.qbl
new file mode 100644
index 0000000..c8df8fe
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationInOrder/_ROOT_Type_SalesVolumePanelAllocationInOrder.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SalesVolumePanelAllocationInOrder
+{
+  #keys: '5[414702.1.436751616][414702.1.436751614][0.0.0][414702.1.436751615][414702.1.436751617]'
+  BaseType: Object
+  StructuredName: 'SalesVolumePanelAllocationInOrders'
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentDate.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentDate.qbl
new file mode 100644
index 0000000..93ef81f
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DependentDate
+{
+  #keys: '3[414702.1.464873136][414702.1.464873135][414702.1.464873137]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentProductID.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentProductID.qbl
new file mode 100644
index 0000000..6306ee6
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DependentProductID
+{
+  #keys: '3[414702.1.464873126][414702.1.464873125][414702.1.464873127]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentQuantity.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentQuantity.qbl
new file mode 100644
index 0000000..b3437a6
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentQuantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DependentQuantity
+{
+  #keys: '3[414702.1.464873146][414702.1.464873145][414702.1.464873147]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentStockingPointID.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentStockingPointID.qbl
new file mode 100644
index 0000000..5fa87e0
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_DependentStockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DependentStockingPointID
+{
+  #keys: '3[414702.1.465068371][414702.1.465068370][414702.1.465068372]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_UnitOfMeasurementName.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_UnitOfMeasurementName.qbl
new file mode 100644
index 0000000..0e1aa07
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/Attribute_UnitOfMeasurementName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasurementName
+{
+  #keys: '3[414702.1.464750171][414702.1.464750170][414702.1.464750172]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/StaticMethod_Create.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/StaticMethod_Create.qbl
new file mode 100644
index 0000000..3bbeacd
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/StaticMethod_Create.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Create (
+  PeggingResult peggingResult,
+  SalesVolumePanelAllocationInOrder salesVolumePanelAllocationInOrder
+)
+{
+  TextBody:
+  [*
+    if ( peggingResult.SupplyType() = "浜х嚎渚涘簲" ) {
+      salesVolumePanelAllocationInOrder.SalesVolumePanelAllocationOrderAnalyse( relnew, 
+                                                                                DependentProductID       := peggingResult.ProductID(),
+                                                                                DependentStockingPointID := peggingResult.StockingPointID(),
+                                                                                DependentDate            := peggingResult.StartDate(),
+                                                                                DependentQuantity        := peggingResult.FulfillmentQuantity(),
+                                                                                UnitOfMeasurementName    := peggingResult.UnitOfMeasurementName() );
+    }
+    
+    traverse ( peggingResult, Child, cpr ) {
+      SalesVolumePanelAllocationOrderAnalyse::Create( cpr, salesVolumePanelAllocationInOrder );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/_ROOT_Type_SalesVolumePanelAllocationOrderAnalyse.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/_ROOT_Type_SalesVolumePanelAllocationOrderAnalyse.qbl
new file mode 100644
index 0000000..4d56343
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrderAnalyse/_ROOT_Type_SalesVolumePanelAllocationOrderAnalyse.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SalesVolumePanelAllocationOrderAnalyse
+{
+  #keys: '5[414702.1.461773127][414702.1.461773125][0.0.0][414702.1.461773126][414702.1.461773128]'
+  BaseType: Object
+  StructuredName: 'SalesVolumePanelAllocationOrderAnalyses'
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_ID.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_ID.qbl
new file mode 100644
index 0000000..55068ed
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414702.1.436556242][414702.1.436556241][414702.1.436556243]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_Name.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_Name.qbl
new file mode 100644
index 0000000..ee9c3e1
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414702.1.436556182][414702.1.436556181][414702.1.436556183]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrgan/StaticMethod_CreateData.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/StaticMethod_CreateData.qbl
new file mode 100644
index 0000000..b3edd0b
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/StaticMethod_CreateData.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateData (
+  GlobalOTDSOP globalOTDSOP,
+  SalesVolumePanelAllocationFromScenario salesVolumePanelAllocationFromScenario
+)
+{
+  TextBody:
+  [*
+    stockingPointIDs := selectuniquevalues( globalOTDSOP, PeggingProduct_MP.PeggingProductInSalesDemandBase, tempPPISDB,
+                                            true,
+                                            tempPPISDB.StockingPointID() );
+    
+    salesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationOrgan( relflush );
+    
+    traverse ( stockingPointIDs, Elements, spid, spid <> "" ) {
+      salesVolumePanelAllocationFromScenario.SalesVolumePanelAllocationOrgan( relnew, ID := spid );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_SalesVolumePanelAllocationOrgan/_ROOT_Type_SalesVolumePanelAllocationOrgan.qbl b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/_ROOT_Type_SalesVolumePanelAllocationOrgan.qbl
new file mode 100644
index 0000000..e3be2b4
--- /dev/null
+++ b/_Main/BL/Type_SalesVolumePanelAllocationOrgan/_ROOT_Type_SalesVolumePanelAllocationOrgan.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SalesVolumePanelAllocationOrgan
+{
+  #keys: '5[414702.1.436556178][414702.1.436556176][0.0.0][414702.1.436556177][414702.1.436556179]'
+  BaseType: Object
+  StructuredName: 'SalesVolumePanelAllocationOrgans'
+}
diff --git a/_Main/Sys/ImgAttr/RunStatus.dme b/_Main/Sys/ImgAttr/RunStatus.dme
new file mode 100644
index 0000000..3ae7c53
--- /dev/null
+++ b/_Main/Sys/ImgAttr/RunStatus.dme
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+TypeDataInterface RunStatus
+{
+  TypeKey: '[414702.1.428321345]'
+  ImageDataMember ImgRunStatus
+  {
+    #keys: '1[414702.1.469960575]'
+    ImageSpecifications:
+    [
+      ImageDataMemberImageSpecification
+      {
+        Image: 'MEDIA_PLAY_GREEN'
+        Quill: 'object.Status() = 1'
+        Value: 'Run'
+      }
+      ImageDataMemberImageSpecification
+      {
+        Image: 'CHECK'
+        Quill: 'object.Status() = 0'
+        Value: 'Success'
+      }
+    ]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
index a5d6f33..194382e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_cmTestAttempt.def
@@ -114,6 +114,17 @@
         Title: '妯$粍&闈㈡澘鍏崇郴'
       ]
     }
+    Component mnSalesVolumePanelAllocation
+    {
+      #keys: '[414702.1.445670636]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'BANANA'
+        Taborder: 10
+        Title: '閿�鍞&闈㈡澘鍒嗛厤缁熻'
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_cmTestAttempt_mnSalesVolumePanelAllocation_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_cmTestAttempt_mnSalesVolumePanelAllocation_OnClick.def
new file mode 100644
index 0000000..edf4c25
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_cmTestAttempt_mnSalesVolumePanelAllocation_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: cmTestAttempt/mnSalesVolumePanelAllocation
+Response OnClick () id:Response_TIANMA_JITUAN_cmTestAttempt_mnSalesVolumePanelAllocation_OnClick
+{
+  #keys: '[414702.1.445671073]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "閿�鍞_闈㈡澘鍒嗛厤缁熻", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlActions.def
new file mode 100644
index 0000000..0ba6517
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414702.1.443184076]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414702.1.443184080]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414702.1.443184082]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    ExcludeFromActiveComponent: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'footer'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlContent.def
new file mode 100644
index 0000000..a66b7d3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Component_pnlContent.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414702.1.443184074]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component efName
+    {
+      #keys: '[414702.1.443184099]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Label: '瑙勫垯鍚�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Method_New.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Method_New.def
new file mode 100644
index 0000000..332ee84
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Method_New.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method New () id:Method_DialogCreateEditModulePanelCorrespondenceRule_New
+{
+  #keys: '[414702.1.443266994]'
+  Body:
+  [*
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..fd9e39a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+  #keys: '[414702.1.443184086]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..7d45295
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[414702.1.443184085]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    flag := exists( GlobalOTDSOP, ModulePanelCorrespondenceRule, tempMPCR, tempMPCR.Name() = efName.Text() );
+    
+    if ( flag ) {
+      feedback := "瀛樺湪閲嶅鍊硷紒";
+    }
+    
+    return not flag;
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ApplyChanges();
+      
+      GlobalOTDSOP.ModulePanelCorrespondenceRule( relnew, Name := efName.Text() );
+      
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/_ROOT_Component_DialogCreateEditModulePanelCorrespondenceRule.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/_ROOT_Component_DialogCreateEditModulePanelCorrespondenceRule.def
new file mode 100644
index 0000000..05fa097
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditModulePanelCorrespondenceRule/_ROOT_Component_DialogCreateEditModulePanelCorrespondenceRule.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogCreateEditModulePanelCorrespondenceRule
+{
+  #keys: '[414702.1.443184072]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_List135.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_List135.def
new file mode 100644
index 0000000..df153eb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_List135.def
@@ -0,0 +1,74 @@
+Quintiq file version 2.0
+Component List135
+{
+  #keys: '[414702.1.433773661]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor497
+    {
+      #keys: '[414702.1.433773662]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDSOP'
+        Source: 'GlobalOTDSOP'
+        Taborder: 0
+        Transformation: 'ModulePanelCorrespondenceRule'
+      ]
+    }
+    #child: listActionBarPage354
+    Component DataSetLevel981
+    {
+      #keys: '[414702.1.433773667]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu208
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"瑙勫垯鍚嶅瓧","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}}]'
+        ContextMenu: 'listContextMenu208'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_List135_WebMenu_OnClick
+    {
+      #keys: '[414702.1.443148705]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[855.0.17005847]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+    DelegatedResponseDefinition OnClick id:Responsedef_List135_WebButton_OnClick
+    {
+      #keys: '[414702.1.444948703]'
+      Initiator: 'WebButton'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[857.0.7921226]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModuleCorrespondence\043358.def" b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModuleCorrespondence.def
similarity index 68%
rename from "_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModuleCorrespondence\043358.def"
rename to _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModuleCorrespondence.def
index b354c6d..e983785 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModuleCorrespondence\043358.def"
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModuleCorrespondence.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component ListModuleCorrespondence id:ListModuleCorrespondence_358
+Component ListModuleCorrespondence
 {
-  #keys: '[414702.1.424620478]'
+  #keys: '[414702.1.433723180]'
   BaseType: 'WebList'
   Children:
   [
     Component DataExtractorModuleCorrespondence
     {
-      #keys: '[414702.1.424620479]'
+      #keys: '[414702.1.433723181]'
       BaseType: 'WebDataExtractor'
       Properties:
       [
@@ -18,18 +18,18 @@
         Transformation: 'Panel'
       ]
     }
-    #child: listActionBarPageModuleCorrespondence_1
+    #child: listActionBarPageModuleCorrespondence
     Component DataSetLevelModuleCorrespondence
     {
-      #keys: '[414702.1.424620481]'
+      #keys: '[414702.1.433723183]'
       BaseType: 'WebDataSetLevel'
       Children:
       [
-        #child: listContextMenuModuleCorrespondence_1
+        #child: listContextMenuModuleCorrespondence
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelProductID","title":"闈㈡澘浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelStockingPointID","title":"闈㈡澘搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelStockingPointID"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelProductID","title":"闈㈡澘浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelStockingPointID","title":"闈㈡澘搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelStockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelOrganCode","title":"闈㈡澘缁勭粐Code","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelOrganCode"}}]'
         ContextMenu: 'listContextMenuModuleCorrespondence'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModulePanelCorrespondence.def "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModulePanelCorrespondence\043119.def"
similarity index 66%
rename from _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModulePanelCorrespondence.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModulePanelCorrespondence\043119.def"
index 859a0fe..5749ab3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModulePanelCorrespondence.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_ListModulePanelCorrespondence\043119.def"
@@ -1,35 +1,36 @@
 Quintiq file version 2.0
-Component ListModulePanelCorrespondence
+Component ListModulePanelCorrespondence id:ListModulePanelCorrespondence_119
 {
-  #keys: '[414702.1.421613640]'
+  #keys: '[414702.1.433723170]'
   BaseType: 'WebList'
   Children:
   [
     Component DataExtractorModulePanelCorrespondence
     {
-      #keys: '[414702.1.421613641]'
+      #keys: '[414702.1.433723171]'
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDSOP'
+        DataType: 'ModulePanelCorrespondenceRule'
+        ExtractionMode: 'Selected'
         FixedFilter: 'object.IsModule()'
-        Source: 'GlobalOTDSOP'
+        Source: 'FormModulePanelCorrespondence.List135'
         Taborder: 0
         Transformation: 'ModulePanelCorrespondence'
       ]
     }
-    #child: listActionBarPageModulePanelCorrespondence
+    #child: listActionBarPageModulePanelCorrespondence_1
     Component DataSetLevelModulePanelCorrespondence
     {
-      #keys: '[414702.1.421613643]'
+      #keys: '[414702.1.433723173]'
       BaseType: 'WebDataSetLevel'
       Children:
       [
-        #child: listContextMenuModulePanelCorrespondence
+        #child: listContextMenuModulePanelCorrespondence_1
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleProductID","title":"妯$粍浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleStockingPointID","title":"妯$粍搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleStockingPointID"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleProductID","title":"妯$粍浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleStockingPointID","title":"妯$粍搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleStockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleOrganCode","title":"妯$粍缁勭粐Code","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleOrganCode"}}]'
         ContextMenu: 'listContextMenuModulePanelCorrespondence'
         Taborder: 2
       ]
@@ -41,9 +42,9 @@
   ]
   ResponseDefinitions:
   [
-    DelegatedResponseDefinition OnClick id:Responsedef_ListModulePanelCorrespondence_WebButton_OnClick
+    DelegatedResponseDefinition OnClick id:Responsedef_ListModulePanelCorrespondence_119_WebButton_OnClick
     {
-      #keys: '[414702.1.421613630]'
+      #keys: '[414702.1.433723156]'
       Initiator: 'WebButton'
       IsInherited: false
       ResponseType: 'OnClick'
@@ -56,9 +57,9 @@
         }
       ]
     }
-    DelegatedResponseDefinition OnClick id:Responsedef_ListModulePanelCorrespondence_WebMenu_OnClick
+    DelegatedResponseDefinition OnClick id:Responsedef_ListModulePanelCorrespondence_119_WebMenu_OnClick
     {
-      #keys: '[414702.1.421613629]'
+      #keys: '[414702.1.433723155]'
       Initiator: 'WebMenu'
       IsInherited: false
       ResponseType: 'OnClick'
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_Panel655\043129.def" b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_Panel655.def
similarity index 79%
rename from "_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_Panel655\043129.def"
rename to _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_Panel655.def
index 5b81ccf..16b6519 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_Panel655\043129.def"
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_Panel655.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component Panel655 id:Panel655_129
+Component Panel655
 {
-  #keys: '[414702.1.424620483]'
+  #keys: '[414702.1.433723177]'
   BaseType: 'WebPanel'
   Children:
   [
     Component bAddPanel
     {
-      #keys: '[414702.1.424620484]'
+      #keys: '[414702.1.433723178]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -19,7 +19,7 @@
     }
     Component bDeletePanel
     {
-      #keys: '[414702.1.424620485]'
+      #keys: '[414702.1.433723179]'
       BaseType: 'WebButton'
       Properties:
       [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelButton\043780.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelButton\043780.def"
new file mode 100644
index 0000000..1b42220
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelButton\043780.def"
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+Component PanelButton id:PanelButton_780
+{
+  #keys: '[414702.1.433723065]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component bAutoGenerateBigRelation
+    {
+      #keys: '[414702.1.433723066]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'APPLE'
+        Label: '鑷姩鐢熸垚澶у紶瑙勫垯'
+        Taborder: 0
+      ]
+    }
+    Component bPullDataLakeCapacityAllocationRule
+    {
+      #keys: '[414702.1.448821092]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'BANANA'
+        Label: '鎷夊彇鏁版嵁婀栦骇鑳藉垎閰嶈鍒欐柇鐐�'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelButton.def
deleted file mode 100644
index e5e4d68..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelButton.def
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-Component PanelButton
-{
-  #keys: '[414702.1.424795497]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component bAutoGenerateRelation
-    {
-      #keys: '[414702.1.421614203]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Image: 'APPLE'
-        Label: '璁㈠崟妯$粍鐗╂枡鑷姩鐢熸垚闈㈡澘鐗╂枡瀵瑰簲鍏崇郴'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    FixedSize: true
-    Orientation: 'horizontal'
-    Taborder: 0
-  ]
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelContent\043679.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelContent\043679.def"
new file mode 100644
index 0000000..a92169f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelContent\043679.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelContent id:PanelContent_679
+{
+  #keys: '[414702.1.433723164]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelPanel
+    #child: PanelModule
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelContent.def
deleted file mode 100644
index 23aa774..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelContent.def
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-Component PanelContent
-{
-  #keys: '[414702.1.424112406]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    #child: PanelModule_217
-    #child: PanelPanel_211
-  ]
-  Properties:
-  [
-    Orientation: 'horizontal'
-    Taborder: 1
-  ]
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule\043217.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule\043217.def"
deleted file mode 100644
index 43673cc..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule\043217.def"
+++ /dev/null
@@ -1,15 +0,0 @@
-Quintiq file version 2.0
-Component PanelModule id:PanelModule_217
-{
-  #keys: '[414702.1.421613639]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    #child: PanelModule116_568
-    #child: ListModulePanelCorrespondence
-  ]
-  Properties:
-  [
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule.def
new file mode 100644
index 0000000..16735e0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelModule
+{
+  #keys: '[414702.1.433723165]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelModule116
+    #child: ListModulePanelCorrespondence_119
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule116\043568.def" b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule116.def
similarity index 80%
rename from "_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule116\043568.def"
rename to _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule116.def
index b1106db..e5a76c6 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule116\043568.def"
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelModule116.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelModule116 id:PanelModule116_568
+Component PanelModule116
 {
-  #keys: '[414702.1.421613646]'
+  #keys: '[414702.1.433723166]'
   BaseType: 'WebPanel'
   Children:
   [
     Component bAddModule
     {
-      #keys: '[414702.1.421613647]'
+      #keys: '[414702.1.433723167]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -19,7 +19,7 @@
     }
     Component bDeleteModule
     {
-      #keys: '[414702.1.421613648]'
+      #keys: '[414702.1.433723168]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -31,7 +31,7 @@
     }
     Component bPullCapacityAllocationRule
     {
-      #keys: '[414702.1.421613649]'
+      #keys: '[414702.1.433723169]'
       BaseType: 'WebButton'
       Properties:
       [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelPanel\043211.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelPanel\043211.def"
deleted file mode 100644
index 939f20b..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelPanel\043211.def"
+++ /dev/null
@@ -1,15 +0,0 @@
-Quintiq file version 2.0
-Component PanelPanel id:PanelPanel_211
-{
-  #keys: '[414702.1.424620477]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    #child: Panel655_129
-    #child: ListModuleCorrespondence_358
-  ]
-  Properties:
-  [
-    Taborder: 1
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelPanel.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelPanel.def
new file mode 100644
index 0000000..5468d9a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_PanelPanel.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelPanel
+{
+  #keys: '[414702.1.433723176]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: Panel655
+    #child: ListModuleCorrespondence
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPage354.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPage354.def
new file mode 100644
index 0000000..a7cea43
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPage354.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage354
+{
+  #keys: '[414702.1.433773664]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModuleCorrespondence\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModuleCorrespondence\0431.def"
deleted file mode 100644
index cafd677..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModuleCorrespondence\0431.def"
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component listActionBarPageModuleCorrespondence id:listActionBarPageModuleCorrespondence_1
-{
-  #keys: '[414702.1.424620480]'
-  BaseType: 'listActionBarPage'
-  Properties:
-  [
-    Taborder: 1
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModuleCorrespondence.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModuleCorrespondence.def
new file mode 100644
index 0000000..aea9550
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModuleCorrespondence.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageModuleCorrespondence
+{
+  #keys: '[414702.1.433723182]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModulePanelCorrespondence\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModulePanelCorrespondence\0431.def"
new file mode 100644
index 0000000..59620c8
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModulePanelCorrespondence\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageModulePanelCorrespondence id:listActionBarPageModulePanelCorrespondence_1
+{
+  #keys: '[414702.1.433723172]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModulePanelCorrespondence.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModulePanelCorrespondence.def
deleted file mode 100644
index c0e772c..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listActionBarPageModulePanelCorrespondence.def
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component listActionBarPageModulePanelCorrespondence
-{
-  #keys: '[414702.1.421613642]'
-  BaseType: 'listActionBarPage'
-  Properties:
-  [
-    Taborder: 1
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenu208.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenu208.def
new file mode 100644
index 0000000..f8cea22
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenu208.def
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+Component listContextMenu208
+{
+  #keys: '[414702.1.433773669]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component mNew
+    {
+      #keys: '[414702.1.441920622]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'ADD2'
+        Taborder: 3
+        Title: '鏂板'
+      ]
+    }
+    Component mDelete
+    {
+      #keys: '[414702.1.443369649]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Taborder: 4
+        Title: '鍒犻櫎'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModuleCorrespondence\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModuleCorrespondence\0431.def"
deleted file mode 100644
index 9a0d834..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModuleCorrespondence\0431.def"
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component listContextMenuModuleCorrespondence id:listContextMenuModuleCorrespondence_1
-{
-  #keys: '[414702.1.424620482]'
-  BaseType: 'listContextMenu'
-  Properties:
-  [
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModuleCorrespondence.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModuleCorrespondence.def
new file mode 100644
index 0000000..8de358e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModuleCorrespondence.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuModuleCorrespondence
+{
+  #keys: '[414702.1.433723184]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence\0431.def"
similarity index 65%
copy from _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def
copy to "_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence\0431.def"
index 37e88b6..2713a9d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence\0431.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component listContextMenuModulePanelCorrespondence
+Component listContextMenuModulePanelCorrespondence id:listContextMenuModulePanelCorrespondence_1
 {
-  #keys: '[414702.1.421613644]'
+  #keys: '[414702.1.433723174]'
   BaseType: 'listContextMenu'
   Children:
   [
     Component MenuSelectAll
     {
-      #keys: '[414702.1.421613645]'
+      #keys: '[414702.1.433723175]'
       BaseType: 'WebMenu'
       Properties:
       [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pDown.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pDown.def
new file mode 100644
index 0000000..055dcc3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pDown.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component pDown
+{
+  #keys: '[414702.1.433773193]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelButton_780
+    #child: PanelContent_679
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pUP.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pUP.def
new file mode 100644
index 0000000..18ac258
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_pUP.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pUp
+{
+  #keys: '[414702.1.436888414]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: List135
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bAutoGenerateBigRelation_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bAutoGenerateBigRelation_OnClick.def
new file mode 100644
index 0000000..6eae8d0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bAutoGenerateBigRelation_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: List135
+Response OnClick (
+  ModulePanelCorrespondenceRule selection
+) id:Response_List135_bAutoGenerateBigRelation_OnClick
+{
+  #keys: '[414702.1.445106405]'
+  CanBindMultiple: false
+  DefinitionID => /List135/Responsedef_List135_WebButton_OnClick
+  Initiator: 'bAutoGenerateBigRelation'
+  QuillAction
+  {
+    Body:
+    [*
+      ModulePanelCorrespondence::AutoGenerateBigRelation( GlobalOTDSOP, 
+                                                          selection,
+                                                          DataHolderSelectedProduct.Data() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bPullDataLakeCapacityAllocationRule_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bPullDataLakeCapacityAllocationRule_OnClick.def
new file mode 100644
index 0000000..d97b9a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_bPullDataLakeCapacityAllocationRule_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: List135
+Response OnClick (
+  ModulePanelCorrespondenceRule selection
+) id:Response_List135_bPullDataLakeCapacityAllocationRule_OnClick
+{
+  #keys: '[414702.1.449978827]'
+  CanBindMultiple: false
+  DefinitionID => /List135/Responsedef_List135_WebButton_OnClick
+  Initiator: 'bPullDataLakeCapacityAllocationRule'
+  QuillAction
+  {
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mDelete_OnClick.def
new file mode 100644
index 0000000..08e5e72
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mDelete_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: List135
+Response OnClick (
+  ModulePanelCorrespondenceRule selection
+) id:Response_List135_mDelete_OnClick
+{
+  #keys: '[414702.1.441982288]'
+  CanBindMultiple: false
+  DefinitionID => /List135/Responsedef_List135_WebMenu_OnClick
+  Initiator: 'mDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mNew_OnClick\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mNew_OnClick\043670.def"
new file mode 100644
index 0000000..0c66ee7
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_List135_mNew_OnClick\043670.def"
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: List135
+Response OnClick () id:Response_List135_mNew_OnClick_670
+{
+  #keys: '[414702.1.443266934]'
+  CanBindMultiple: false
+  DefinitionID => /List135/Responsedef_List135_WebMenu_OnClick
+  Initiator: 'mNew'
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogCreateEditModulePanelCorrespondenceRule );
+      
+      dlg.New();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_ListModulePanelCorrespondence_119_MenuSelectAll_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_ListModulePanelCorrespondence_119_MenuSelectAll_OnClick.def
new file mode 100644
index 0000000..94c9f93
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_ListModulePanelCorrespondence_119_MenuSelectAll_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListModulePanelCorrespondence_119
+Response OnClick () id:Response_ListModulePanelCorrespondence_119_MenuSelectAll_OnClick
+{
+  #keys: '[414702.1.433723158]'
+  CanBindMultiple: false
+  DefinitionID => /ListModulePanelCorrespondence_119/Responsedef_ListModulePanelCorrespondence_119_WebMenu_OnClick
+  Initiator: 'MenuSelectAll'
+  QuillAction
+  {
+    Body:
+    [*
+      this.SelectAll();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_ListModulePanelCorrespondence_MenuSelectAll_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_ListModulePanelCorrespondence_MenuSelectAll_OnClick.def
deleted file mode 100644
index c178ebb..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_ListModulePanelCorrespondence_MenuSelectAll_OnClick.def
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: ListModulePanelCorrespondence
-Response OnClick () id:Response_ListModulePanelCorrespondence_MenuSelectAll_OnClick
-{
-  #keys: '[414702.1.421613634]'
-  CanBindMultiple: false
-  DefinitionID => /ListModulePanelCorrespondence/Responsedef_ListModulePanelCorrespondence_WebMenu_OnClick
-  Initiator: 'MenuSelectAll'
-  QuillAction
-  {
-    Body:
-    [*
-      this.SelectAll();
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelButton_bAutoGenerateRelation_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelButton_bAutoGenerateRelation_OnClick.def
deleted file mode 100644
index 548fbe3..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelButton_bAutoGenerateRelation_OnClick.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelButton/bAutoGenerateRelation
-Response OnClick () id:Response_PanelButton_bAutoGenerateRelation_OnClick
-{
-  #keys: '[414702.1.424103250]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  Precondition:
-  [*
-    return not isnull( GlobalOTDSOP );
-  *]
-  QuillAction
-  {
-    Body:
-    [*
-      ModulePanelCorrespondence::AutoGenerateRelation( GlobalOTDSOP, DataHolderSelectedProduct.Data() );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bDeleteModule_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bDeleteModule_OnClick.def
deleted file mode 100644
index c5b2d08..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bDeleteModule_OnClick.def
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelModule116_568/bDeleteModule
-Response OnClick () id:Response_PanelModule116_568_bDeleteModule_OnClick
-{
-  #keys: '[414702.1.421613636]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      GlobalOTDSOP.ModulePanelCorrespondence( relflush );
-      //ModulePanelCorrespondence::DeleteModule( GlobalOTDSOP, DataHolderSelectedProductInStocking_MP.Data() );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bPullCapacityAllocationRule_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bPullCapacityAllocationRule_OnClick.def
deleted file mode 100644
index 3ab50e8..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bPullCapacityAllocationRule_OnClick.def
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelModule116_568/bPullCapacityAllocationRule
-Response OnClick () id:Response_PanelModule116_568_bPullCapacityAllocationRule_OnClick
-{
-  #keys: '[414702.1.421613635]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      ModulePanelCorrespondence::PullCapacityAllocationRule( GlobalOTDSOP );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bAddModule_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bAddModule_OnClick.def
similarity index 66%
rename from _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bAddModule_OnClick.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bAddModule_OnClick.def
index c512240..5a197fb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_568_bAddModule_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bAddModule_OnClick.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelModule116_568/bAddModule
-Response OnClick () id:Response_PanelModule116_568_bAddModule_OnClick
+#parent: PanelModule116/bAddModule
+Response OnClick () id:Response_PanelModule116_bAddModule_OnClick
 {
-  #keys: '[414702.1.421613637]'
+  #keys: '[414702.1.433723163]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebButton_OnClick'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bDeleteModule_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bDeleteModule_OnClick.def
new file mode 100644
index 0000000..654f3ff
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bDeleteModule_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelModule116/bDeleteModule
+Response OnClick () id:Response_PanelModule116_bDeleteModule_OnClick
+{
+  #keys: '[414702.1.433723162]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      //GlobalOTDSOP.ModulePanelCorrespondence( relflush );
+      //ModulePanelCorrespondence::DeleteModule( GlobalOTDSOP, DataHolderSelectedProductInStocking_MP.Data() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bPullCapacityAllocationRule_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bPullCapacityAllocationRule_OnClick.def
new file mode 100644
index 0000000..ac508c2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Response_PanelModule116_bPullCapacityAllocationRule_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelModule116/bPullCapacityAllocationRule
+Response OnClick () id:Response_PanelModule116_bPullCapacityAllocationRule_OnClick
+{
+  #keys: '[414702.1.433723161]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      //ModulePanelCorrespondence::PullCapacityAllocationRule( GlobalOTDSOP );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/_ROOT_Component_FormModulePanelCorrespondence.def b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/_ROOT_Component_FormModulePanelCorrespondence.def
index f743b7a..eaabe4e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/_ROOT_Component_FormModulePanelCorrespondence.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/_ROOT_Component_FormModulePanelCorrespondence.def
@@ -33,12 +33,13 @@
         Taborder: 2
       ]
     }
-    #child: PanelContent
-    #child: PanelButton
+    #child: pUp
+    #child: pDown
   ]
   Properties:
   [
     Image: 'BRUSH2'
+    SizeableChildren: true
     Title: '妯$粍&闈㈡澘瀵瑰簲鍏崇郴'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingProductInSalesDemandBase.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingProductInSalesDemandBase.def
index 8e70246..b11e929 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingProductInSalesDemandBase.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingProductInSalesDemandBase.def
@@ -29,7 +29,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesDemandBaseID","title":"璁㈠崟ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesDemandBaseID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesDemandBaseID","title":"璁㈠崟ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesDemandBaseID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"浠锋牸","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}}]'
         ContextMenu: 'listContextMenuPeggingProductInSalesDemandBase'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_listContextMenuPeggingProductInSalesDemandBase.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_listContextMenuPeggingProductInSalesDemandBase.def
index 392a02a..04fd2dc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_listContextMenuPeggingProductInSalesDemandBase.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_listContextMenuPeggingProductInSalesDemandBase.def
@@ -28,6 +28,17 @@
         Title: '鍏ㄩ��'
       ]
     }
+    Component mSetBusiness
+    {
+      #keys: '[414702.1.451880712]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'APPLE'
+        Taborder: 5
+        Title: '娴嬭瘯涓撶敤-璁剧疆闅忔満浜嬩笟閮�'
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Response_ListPeggingProductInSalesDemandBase_mSetBusiness_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Response_ListPeggingProductInSalesDemandBase_mSetBusiness_OnClick.def
new file mode 100644
index 0000000..2b5db21
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Response_ListPeggingProductInSalesDemandBase_mSetBusiness_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListPeggingProductInSalesDemandBase
+Response OnClick (
+  structured[PeggingProductInSalesDemandBase] selection
+) id:Response_ListPeggingProductInSalesDemandBase_mSetBusiness_OnClick
+{
+  #keys: '[414702.1.451840791]'
+  DefinitionID => /ListPeggingProductInSalesDemandBase/Responsedef_ListPeggingProductInSalesDemandBase_WebMenu_OnClick
+  Initiator: 'mSetBusiness'
+  QuillAction
+  {
+    Body:
+    [*
+      PeggingProductInSalesDemandBase::TestSetBusinessType( selection, GlobalOTDTable );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_ListRunStatus.def b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_ListRunStatus.def
new file mode 100644
index 0000000..706cb98
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_ListRunStatus.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListRunStatus
+{
+  #keys: '[414702.1.468042941]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorRunStatus
+    {
+      #keys: '[414702.1.468042942]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDLog'
+        Source: 'GlobalOTDLog'
+        Taborder: 0
+        Transformation: 'RunStatus'
+      ]
+    }
+    #child: listActionBarPageRunStatus
+    Component DataSetLevelRunStatus
+    {
+      #keys: '[414702.1.468042947]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuRunStatus
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgRunStatus","title":"ImgRunStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgRunStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Type","title":"绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Type"}}]'
+        ContextMenu: 'listContextMenuRunStatus'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListRunStatus_WebMenu_OnClick
+    {
+      #keys: '[414702.1.470029805]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[893.0.43812262]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listActionBarPageRunStatus.def b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listActionBarPageRunStatus.def
new file mode 100644
index 0000000..93d4ac7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listActionBarPageRunStatus.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageRunStatus
+{
+  #keys: '[414702.1.468042944]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listContextMenuRunStatus.def b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listContextMenuRunStatus.def
new file mode 100644
index 0000000..15e89d9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Component_listContextMenuRunStatus.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component listContextMenuRunStatus
+{
+  #keys: '[414702.1.468042949]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component mModifySuccessStatus
+    {
+      #keys: '[414702.1.470029932]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'NOTEBOOK_EDIT'
+        Taborder: 3
+        Title: '淇敼涓烘垚鍔熺姸鎬�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Response_ListRunStatus_mModifySuccessStatus_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Response_ListRunStatus_mModifySuccessStatus_OnClick.def
new file mode 100644
index 0000000..f16481f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/Response_ListRunStatus_mModifySuccessStatus_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListRunStatus
+Response OnClick (
+  RunStatus selection
+) id:Response_ListRunStatus_mModifySuccessStatus_OnClick
+{
+  #keys: '[414702.1.470029826]'
+  CanBindMultiple: false
+  DefinitionID => /ListRunStatus/Responsedef_ListRunStatus_WebMenu_OnClick
+  Initiator: 'mModifySuccessStatus'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Status( 0 );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/_ROOT_Component_FormRunStatus.def b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/_ROOT_Component_FormRunStatus.def
new file mode 100644
index 0000000..b6d2025
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormRunStatus/_ROOT_Component_FormRunStatus.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormRunStatus
+{
+  #keys: '[414702.1.469149242]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListRunStatus
+  ]
+  Properties:
+  [
+    Image: 'APPLE'
+    Title: '杩愯鐘舵��'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List392.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List392.def
new file mode 100644
index 0000000..4de603c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List392.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component List392
+{
+  #keys: '[414702.1.448679872]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor613
+    {
+      #keys: '[414702.1.448679873]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'SalesVolumePanelAllocationFromScenario'
+        ExtractionMode: 'Selected'
+        Source: 'ListSalesVolumePanelAllocationFromScenario'
+        Taborder: 0
+        Transformation: 'SalesVolumePanelAllocationBusiness'
+      ]
+    }
+    #child: listActionBarPage134
+    Component DataSetLevel494
+    {
+      #keys: '[414702.1.448679878]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu670
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}}]'
+        ContextMenu: 'listContextMenu670'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_List392_WebMenu_OnClick
+    {
+      #keys: '[414702.1.453352798]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[869.0.7936406]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List706.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List706.def
new file mode 100644
index 0000000..c067389
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List706.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List706
+{
+  #keys: '[414702.1.447174120]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor186
+    {
+      #keys: '[414702.1.447174121]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[SalesVolumePanelAllocationInOrder]'
+        Source: 'dhSalesVolumePanelAllocationInOrder'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage974
+    Component DataSetLevel978
+    {
+      #keys: '[414702.1.447174126]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu890
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"浜嬩笟閮�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"璁㈠崟ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"浠锋牸","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}}]'
+        ContextMenu: 'listContextMenu890'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List912.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List912.def
new file mode 100644
index 0000000..a95252a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List912.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component List912
+{
+  #keys: '[414702.1.458710906]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor713
+    {
+      #keys: '[414702.1.458710907]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'SalesVolumePanelAllocationInOrder'
+        ExtractionMode: 'Selected'
+        Source: 'List706'
+        Taborder: 0
+        Transformation: 'SalesVolumePanelAllocationOrderAnalyse'
+      ]
+    }
+    #child: listActionBarPage504
+    Component DataSetLevel423
+    {
+      #keys: '[414702.1.458710912]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu651
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DependentProductID","title":"渚濊禆浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DependentProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DependentStockingPointID","title":"渚濊禆搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DependentStockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DependentDate","title":"鏃堕棿","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DependentDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DependentQuantity","title":"鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DependentQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasurementName","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasurementName"}}]'
+        ContextMenu: 'listContextMenu651'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List989.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List989.def
new file mode 100644
index 0000000..96de68d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_List989.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component List989
+{
+  #keys: '[414702.1.448710048]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor963
+    {
+      #keys: '[414702.1.448710049]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'SalesVolumePanelAllocationFromScenario'
+        ExtractionMode: 'Selected'
+        Source: 'ListSalesVolumePanelAllocationFromScenario'
+        Taborder: 0
+        Transformation: 'SalesVolumePanelAllocationOrgan'
+      ]
+    }
+    #child: listActionBarPage191
+    Component DataSetLevel687
+    {
+      #keys: '[414702.1.448710054]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu287
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"缁勭粐ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"缁勭粐鍚�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}}]'
+        ContextMenu: 'listContextMenu287'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_List989_WebMenu_OnClick
+    {
+      #keys: '[414702.1.453352826]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[869.0.7937702]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_ListSalesVolumePanelAllocationFromScenario.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_ListSalesVolumePanelAllocationFromScenario.def
new file mode 100644
index 0000000..829443e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_ListSalesVolumePanelAllocationFromScenario.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component ListSalesVolumePanelAllocationFromScenario
+{
+  #keys: '[414702.1.446969577]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorSalesVolumePanelAllocationFromScenario
+    {
+      #keys: '[414702.1.446969578]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDSOP'
+        ExtractionMode: 'Selected'
+        Source: 'GlobalOTDSOP'
+        Taborder: 0
+        Transformation: 'SalesVolumePanelAllocationFromScenario'
+      ]
+    }
+    #child: listActionBarPageSalesVolumePanelAllocationFromScenario
+    Component DataSetLevelSalesVolumePanelAllocationFromScenario
+    {
+      #keys: '[414702.1.446969580]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuSalesVolumePanelAllocationFromScenario
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ScenarioName","title":"鐗堟湰鍚�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ScenarioName"}}]'
+        ContextMenu: 'listContextMenuSalesVolumePanelAllocationFromScenario'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListSalesVolumePanelAllocationFromScenario_WebMenu_OnClick
+    {
+      #keys: '[414702.1.446969573]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[859.0.5657842]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage134.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage134.def
new file mode 100644
index 0000000..44058b8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage134.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage134
+{
+  #keys: '[414702.1.448679875]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage191.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage191.def
new file mode 100644
index 0000000..e8ccb5e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage191.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage191
+{
+  #keys: '[414702.1.448710051]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage504.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage504.def
new file mode 100644
index 0000000..a23401d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage504.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage504
+{
+  #keys: '[414702.1.458710909]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage974.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage974.def
new file mode 100644
index 0000000..2c76af5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPage974.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage974
+{
+  #keys: '[414702.1.447174123]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPageSalesVolumePanelAllocationFromScenario.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPageSalesVolumePanelAllocationFromScenario.def
new file mode 100644
index 0000000..ec519c7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listActionBarPageSalesVolumePanelAllocationFromScenario.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageSalesVolumePanelAllocationFromScenario
+{
+  #keys: '[414702.1.446969579]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu287.def
similarity index 65%
rename from _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu287.def
index 37e88b6..00d0262 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu287.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component listContextMenuModulePanelCorrespondence
+Component listContextMenu287
 {
-  #keys: '[414702.1.421613644]'
+  #keys: '[414702.1.448710056]'
   BaseType: 'listContextMenu'
   Children:
   [
-    Component MenuSelectAll
+    Component MenuSelectionAll1
     {
-      #keys: '[414702.1.421613645]'
+      #keys: '[414702.1.453341212]'
       BaseType: 'WebMenu'
       Properties:
       [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu651.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu651.def
new file mode 100644
index 0000000..59d2c78
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu651.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu651
+{
+  #keys: '[414702.1.458710914]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu670.def
similarity index 65%
copy from _Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu670.def
index 37e88b6..d014963 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormModulePanelCorrespondence/Component_listContextMenuModulePanelCorrespondence.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu670.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component listContextMenuModulePanelCorrespondence
+Component listContextMenu670
 {
-  #keys: '[414702.1.421613644]'
+  #keys: '[414702.1.448679880]'
   BaseType: 'listContextMenu'
   Children:
   [
-    Component MenuSelectAll
+    Component MenuSelectionAll
     {
-      #keys: '[414702.1.421613645]'
+      #keys: '[414702.1.453301869]'
       BaseType: 'WebMenu'
       Properties:
       [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu890.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu890.def
new file mode 100644
index 0000000..d3dd26d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenu890.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu890
+{
+  #keys: '[414702.1.447174128]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenuSalesVolumePanelAllocationFromScenario.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenuSalesVolumePanelAllocationFromScenario.def
new file mode 100644
index 0000000..458c8a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_listContextMenuSalesVolumePanelAllocationFromScenario.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component listContextMenuSalesVolumePanelAllocationFromScenario
+{
+  #keys: '[414702.1.446969581]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component mDelete
+    {
+      #keys: '[414702.1.446969582]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Taborder: 3
+        Title: '鍒犻櫎'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pDown.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pDown.def
new file mode 100644
index 0000000..af0167c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pDown.def
@@ -0,0 +1,58 @@
+Quintiq file version 2.0
+Component pDown
+{
+  #keys: '[414702.1.445613717]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: pLeft
+    #child: pTwo
+    #child: pOne
+    Component dhSalesVolumePanelAllocationInOrder
+    {
+      #keys: '[414702.1.453119507]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[SalesVolumePanelAllocationInOrder]*'
+      Children:
+      [
+        Component deSalesVolumePanelAllocationBusiness
+        {
+          #keys: '[414702.1.451891919]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'SalesVolumePanelAllocationBusiness'
+            ExtractionMode: 'Selected'
+            Source: 'List392'
+            Taborder: 0
+            Transformation: 'SalesVolumePanelAllocationInOrder'
+          ]
+        }
+        Component deSalesVolumePanelAllocationOrgan
+        {
+          #keys: '[414702.1.454516707]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'SalesVolumePanelAllocationOrgan'
+            ExtractionMode: 'Selected'
+            Source: 'List989'
+            Taborder: 1
+            Transformation: 'SalesVolumePanelAllocationInOrder'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 4
+      ]
+    }
+    #child: pRight
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    SizeableChildren: true
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pLeft.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pLeft.def
new file mode 100644
index 0000000..d2b4cb6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pLeft.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component pLeft
+{
+  #keys: '[414702.1.445641549]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListSalesVolumePanelAllocationFromScenario
+  ]
+  Properties:
+  [
+    Border: true
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pOne\043675.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pOne\043675.def"
new file mode 100644
index 0000000..aec8cf8
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pOne\043675.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component pOne
+{
+  #keys: '[414702.1.447580933]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: List392
+    #child: List989
+  ]
+  Properties:
+  [
+    Border: true
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pRight.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pRight.def
new file mode 100644
index 0000000..d73975f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pRight.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pRight
+{
+  #keys: '[414702.1.458721278]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: List912
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pTwo\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pTwo\0431.def"
new file mode 100644
index 0000000..0dc5e73
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pTwo\0431.def"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component pTwo
+{
+  #keys: '[414702.1.447329309]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: List706
+  ]
+  Properties:
+  [
+    Border: true
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pUp.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pUp.def
new file mode 100644
index 0000000..dea06c2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Component_pUp.def
@@ -0,0 +1,62 @@
+Quintiq file version 2.0
+Component pUp
+{
+  #keys: '[414702.1.445613498]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component bStatisticalSelectionVersion
+    {
+      #keys: '[414702.1.446862248]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'APPLE'
+        Label: '缁熻褰撳墠閫変腑鐗堟湰'
+        Taborder: 0
+      ]
+    }
+    Component iRunStatus
+    {
+      #keys: '[414702.1.468050763]'
+      BaseType: 'WebImage'
+      Properties:
+      [
+        Image: 'CHECK'
+        Taborder: 1
+      ]
+    }
+    Component DataHolderRunStatus
+    {
+      #keys: '[414702.1.469178846]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[RunStatus]*'
+      Children:
+      [
+        Component DataExtractorRunStatus
+        {
+          #keys: '[414702.1.469178847]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'GlobalOTDLog'
+            FixedFilter: 'object.Type() = "SalesVolumePanelAllocation"'
+            Source: 'GlobalOTDLog'
+            Taborder: 0
+            Transformation: 'RunStatus'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List392_MenuSelectionAll_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List392_MenuSelectionAll_OnClick.def
new file mode 100644
index 0000000..56db7de
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List392_MenuSelectionAll_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: List392
+Response OnClick () id:Response_List392_MenuSelectionAll_OnClick
+{
+  #keys: '[414702.1.453301939]'
+  CanBindMultiple: false
+  DefinitionID => /List392/Responsedef_List392_WebMenu_OnClick
+  Initiator: 'MenuSelectionAll'
+  QuillAction
+  {
+    Body:
+    [*
+      this.SelectAll();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List989_MenuSelectionAll1_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List989_MenuSelectionAll1_OnClick.def
new file mode 100644
index 0000000..9b5a10b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_List989_MenuSelectionAll1_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: List989
+Response OnClick () id:Response_List989_MenuSelectionAll1_OnClick
+{
+  #keys: '[414702.1.453353489]'
+  CanBindMultiple: false
+  DefinitionID => /List989/Responsedef_List989_WebMenu_OnClick
+  Initiator: 'MenuSelectionAll1'
+  QuillAction
+  {
+    Body:
+    [*
+      this.SelectAll();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_ListSalesVolumePanelAllocationFromScenario_mDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_ListSalesVolumePanelAllocationFromScenario_mDelete_OnClick.def
new file mode 100644
index 0000000..0d5323c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_ListSalesVolumePanelAllocationFromScenario_mDelete_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListSalesVolumePanelAllocationFromScenario
+Response OnClick (
+  SalesVolumePanelAllocationFromScenario selection
+) id:Response_ListSalesVolumePanelAllocationFromScenario_mDelete_OnClick
+{
+  #keys: '[414702.1.446969575]'
+  CanBindMultiple: false
+  DefinitionID => /ListSalesVolumePanelAllocationFromScenario/Responsedef_ListSalesVolumePanelAllocationFromScenario_WebMenu_OnClick
+  Initiator: 'mDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_DataHolderRunStatus_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_DataHolderRunStatus_OnDataChanged.def
new file mode 100644
index 0000000..8e66bbb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_DataHolderRunStatus_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pUp/DataHolderRunStatus
+Response OnDataChanged () id:Response_FormSalesVolumePanelAllocationFromScenario_DataHolderRunStatus_OnDataChanged
+{
+  #keys: '[414702.1.469178844]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      runStatus := guard( this.Data().Element( 0 ), null( RunStatus ) );
+      
+      if ( not isnull( runStatus ) ) {
+        if ( runStatus.Status() = 1 ) {
+          iRunStatus.Image( "MEDIA_PLAY_GREEN" );
+          bStatisticalSelectionVersion.Enabled( false, "姝e湪杩愯涓�" );
+        } else if ( runStatus.Status() = 0 ) {
+          iRunStatus.Image( "CHECK" ); 
+          bStatisticalSelectionVersion.Enabled( true, "" );
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_bStatisticalSelectionVersion_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_bStatisticalSelectionVersion_OnClick.def
new file mode 100644
index 0000000..080797b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/Response_pUp_bStatisticalSelectionVersion_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: pUp/bStatisticalSelectionVersion
+Response OnClick () id:Response_pUp_bStatisticalSelectionVersion_OnClick
+{
+  #keys: '[414702.1.447209948]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      RunStatus::OnRun( GlobalOTDLog, "SalesVolumePanelAllocation" );
+      
+      SalesVolumePanelAllocationFromScenario::AsyncStatisticalSalesVolumeAndPanelAllocation( MacroPlan, GlobalOTDSOP );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/_ROOT_Component_FormSalesVolumePanelAllocationFromScenario.def b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/_ROOT_Component_FormSalesVolumePanelAllocationFromScenario.def
new file mode 100644
index 0000000..3941662
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSalesVolumePanelAllocationFromScenario/_ROOT_Component_FormSalesVolumePanelAllocationFromScenario.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormSalesVolumePanelAllocationFromScenario
+{
+  #keys: '[414702.1.445069486]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pUp
+    #child: pDown
+  ]
+  Properties:
+  [
+    Image: 'COCKTAIL'
+    Title: '閿�鍞&闈㈡澘鍒嗛厤缁熻'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw" "b/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw"
index ce0f22d..f06159a 100644
--- "a/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw"
+++ "b/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw"
@@ -104,6 +104,24 @@
               subtotals: ''
               width: 83
             }
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 109
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 5
+              subtotals: ''
+              width: 64
+            }
           }
           FormPeggingResult_PanelStockingPoint
           {
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\346\250\241\347\273\204_\351\235\242\346\235\277\345\205\263\347\263\273.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\346\250\241\347\273\204_\351\235\242\346\235\277\345\205\263\347\263\273.vw"
index 25e2646..5ac48e5 100644
--- "a/_Main/UI/MacroPlannerWebApp/Views/\346\250\241\347\273\204_\351\235\242\346\235\277\345\205\263\347\263\273.vw"
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\346\250\241\347\273\204_\351\235\242\346\235\277\345\205\263\347\263\273.vw"
@@ -82,6 +82,39 @@
         }
         components
         {
+          FormModulePanelCorrespondence_pUp
+          {
+            sizeRatio: 0.392963729134744
+          }
+          FormModulePanelCorrespondence_List135
+          {
+          }
+          FormModulePanelCorrespondence_DataSetLevel981
+          {
+            groupDepth: -1
+            sort: 'Name'
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 137
+            }
+          }
+          FormModulePanelCorrespondence_pDown
+          {
+            sizeRatio: 1.60703627086526
+          }
+          FormModulePanelCorrespondence_PanelButton
+          {
+            sizeRatio: 1
+          }
+          FormModulePanelCorrespondence_PanelContent
+          {
+            sizeRatio: 1
+          }
           FormModulePanelCorrespondence_PanelModule
           {
             sizeRatio: 1
@@ -96,6 +129,7 @@
           FormModulePanelCorrespondence_DataSetLevelModulePanelCorrespondence
           {
             groupDepth: -1
+            sort: 'ModuleProductID,ModuleStockingPointID'
             column_ModuleProductID
             {
               columnId: 'ModuleProductID'
@@ -114,6 +148,15 @@
               subtotals: ''
               width: 150
             }
+            column_ModuleOrganCode
+            {
+              columnId: 'ModuleOrganCode'
+              dataPath: 'ModuleOrganCode'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
           }
           FormModulePanelCorrespondence_PanelPanel
           {
@@ -129,6 +172,7 @@
           FormModulePanelCorrespondence_DataSetLevelModuleCorrespondence
           {
             groupDepth: -1
+            sort: 'PanelProductID,PanelStockingPointID'
             column_PanelProductID
             {
               columnId: 'PanelProductID'
@@ -147,6 +191,15 @@
               subtotals: ''
               width: 150
             }
+            column_PanelOrganCode
+            {
+              columnId: 'PanelOrganCode'
+              dataPath: 'PanelOrganCode'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
           }
         }
       }
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\351\224\200\345\224\256\351\242\235_\351\235\242\346\235\277\345\210\206\351\205\215\347\273\237\350\256\241.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\351\224\200\345\224\256\351\242\235_\351\235\242\346\235\277\345\210\206\351\205\215\347\273\237\350\256\241.vw"
new file mode 100644
index 0000000..180d485
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\351\224\200\345\224\256\351\242\235_\351\235\242\346\235\277\345\210\206\351\205\215\347\273\237\350\256\241.vw"
@@ -0,0 +1,246 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormSalesVolumePanelAllocationFromScenario
+      {
+        title: 'QTIANMA_JITUAN::FormSalesVolumePanelAllocationFromScenario'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormSalesVolumePanelAllocationFromScenario'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 12
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormSalesVolumePanelAllocationFromScenario_pUp
+          {
+            sizeRatio: 1
+          }
+          FormSalesVolumePanelAllocationFromScenario_pDown
+          {
+            sizeRatio: 1
+          }
+          FormSalesVolumePanelAllocationFromScenario_pLeft
+          {
+            sizeRatio: 0.271970667009875
+          }
+          FormSalesVolumePanelAllocationFromScenario_ListSalesVolumePanelAllocationFromScenario
+          {
+          }
+          FormSalesVolumePanelAllocationFromScenario_DataSetLevelSalesVolumePanelAllocationFromScenario
+          {
+            groupDepth: -1
+            column_ScenarioName
+            {
+              columnId: 'ScenarioName'
+              dataPath: 'ScenarioName'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+          }
+          FormSalesVolumePanelAllocationFromScenario_pOne
+          {
+            sizeRatio: 0.341017249579907
+          }
+          FormSalesVolumePanelAllocationFromScenario_List392
+          {
+          }
+          FormSalesVolumePanelAllocationFromScenario_DataSetLevel494
+          {
+            groupDepth: -1
+            sort: 'Name'
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 127
+            }
+          }
+          FormSalesVolumePanelAllocationFromScenario_List989
+          {
+          }
+          FormSalesVolumePanelAllocationFromScenario_DataSetLevel687
+          {
+            groupDepth: -1
+            sort: 'ID'
+            column_ID
+            {
+              columnId: 'ID'
+              dataPath: 'ID'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 121
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 61
+            }
+          }
+          FormSalesVolumePanelAllocationFromScenario_pTwo
+          {
+            sizeRatio: 2.25431084603236
+          }
+          FormSalesVolumePanelAllocationFromScenario_List706
+          {
+          }
+          FormSalesVolumePanelAllocationFromScenario_DataSetLevel978
+          {
+            groupDepth: -1
+            sort: 'ProductID,StockingPointID,StartDate,BusinessType'
+            column_BusinessType
+            {
+              columnId: 'BusinessType'
+              dataPath: 'BusinessType'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 85
+            }
+            column_ID
+            {
+              columnId: 'ID'
+              dataPath: 'ID'
+              dataType: 'string'
+              index: 1
+              subtotals: 'count'
+              width: 54
+            }
+            column_OrderID
+            {
+              columnId: 'OrderID'
+              dataPath: 'OrderID'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 73
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 151
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 88
+            }
+            column_Price
+            {
+              columnId: 'Price'
+              dataPath: 'Price'
+              dataType: 'real'
+              index: 5
+              subtotals: ''
+              width: 84
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 74
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 7
+              subtotals: ''
+              width: 98
+            }
+          }
+          FormSalesVolumePanelAllocationFromScenario_pRight
+          {
+            sizeRatio: 1.13270123737786
+          }
+          FormSalesVolumePanelAllocationFromScenario_List912
+          {
+          }
+          FormSalesVolumePanelAllocationFromScenario_DataSetLevel423
+          {
+            groupDepth: -1
+            sort: 'DependentProductID,DependentStockingPointID'
+            column_DependentProductID
+            {
+              columnId: 'DependentProductID'
+              dataPath: 'DependentProductID'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 97
+            }
+            column_DependentStockingPointID
+            {
+              columnId: 'DependentStockingPointID'
+              dataPath: 'DependentStockingPointID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 112
+            }
+            column_DependentDate
+            {
+              columnId: 'DependentDate'
+              dataPath: 'DependentDate'
+              dataType: 'date'
+              index: 2
+              subtotals: ''
+              width: 78
+            }
+            column_DependentQuantity
+            {
+              columnId: 'DependentQuantity'
+              dataPath: 'DependentQuantity'
+              dataType: 'real'
+              index: 3
+              subtotals: ''
+              width: 60
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    page: ''
+    group: ''
+    index: 0
+    image: 'CONSTRAINTS'
+    description: ''
+  }
+  formatversion: 2
+  id: '閿�鍞_闈㈡澘鍒嗛厤缁熻'
+  name: '閿�鍞_闈㈡澘鍒嗛厤缁熻'
+  isglobal: false
+  isroot: true
+}
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"
index 2d7dbd9..503968e 100644
--- "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"
@@ -16,7 +16,7 @@
   CREATIONUSER 'quintiq/hongjli'
   UPDATEDATETIME '2023-11-01T11:42:14'
   UPDATEUSER 'quintiq/hongjli'
-  LASTACCESSDATE '2023-11-08'
+  LASTACCESSDATE '2023-11-11'
   VIEWSCOPE 0
 }
 AUTHORIZATIONS

--
Gitblit v1.9.3