From 6a58456625b8ff9b895f87f3d5a5965ab574f87a Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期二, 17 十月 2023 15:20:24 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lhj

---
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl                                                                                            |    2 
 _Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeChart.qbl                                                                                                               |    0 
 _Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl                                                                                                         |    2 
 _Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInHalfYear.qbl                                                                                          |   22 +
 _Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl                                                                                                        |    2 
 _Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl                                                                                                                      |    5 
 _Main/BL/Type_PRHistoryData/Method_Recall.qbl                                                                                                                                 |    2 
 _Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl                                                                                                           |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def                                                   |    4 
 _Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl                                                                                        |    2 
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByMonth.qbl                                                                                                  |   95 +++++
 _Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl                                                                                                  |    2 
 _Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl                                                                                                      |    9 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def                                                                               |    2 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDSOP_Glo.qbl                                                                           |   23 +
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def                                                     |    4 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl                                                                           |   23 +
 _Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByYear.qbl                                                                                                       |    3 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def                                                                             |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData#844.def                                                                                   |    4 
 _Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInHalfYear.qbl                                                                                               |   22 +
 _Main/BL/Relations/Relation_PRHistoryData_GlobalOTDSOP_GlobalOTDSOP_PRHistoryData.qbl                                                                                         |   23 +
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetBySeason.qbl                                                                                                |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def                                                       |    2 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl                                                                                                         |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonGenerateTestData_OnClick.def                                                                    |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDSOP_GlobalOTDSOP_CapacityA.qbl                                                                           |   23 +
 _Main/BL/Type_Global_MappingProviderCapacity/StaticMethod_GetByProductId.qbl                                                                                                  |    7 
 _Main/BL/Type_PRData/StaticMethod_DoCall.qbl                                                                                                                                  |    5 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def                                                                   |   14 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDSOP_GlobalOTDSOP_Ca.qbl                                                                           |   23 +
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def                                                              |    4 
 _Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl                                                                                                                  |    2 
 _Main/BL/Type_PRHistoryData/Method_PrintCall.qbl                                                                                                                              |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def                                                                |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def                                                     |    4 
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByYear.qbl                                                                                                  |    2 
 _Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompareExport.qbl                                                                                                       |    0 
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByHalfYear.qbl                                                                                               |    2 
 _Main/BL/Type_PRData/Method_PrintCall.qbl                                                                                                                                     |    5 
 _Main/BL/Type_PRHistoryData/StaticMethod_Export.qbl                                                                                                                           |    2 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl                                                                                                |    2 
 _Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByMonth.qbl                                                                                                      |    2 
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByYear.qbl                                                                                                   |    4 
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleBySeason.qbl                                                                                                 |    2 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDSOP_GlobalOTDSOP_Capacity.qbl                                                                           |   23 +
 _Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GetByMatCode.qbl                                                                                                 |   15 +
 _Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInSeason#000.qbl                                                                                             |   26 +
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDSOP_GlobalOTDSOP_Cap.qbl                                                                           |   24 +
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def                                                   |   12 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl                                                                           |   23 +
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByHalfYear.qbl                                                                                              |    2 
 _Main/BL/Type_GlobalOTDSOP/StaticMethod_RefreshCapacityAndSaleBudgeFilter.qbl                                                                                                 |   29 +
 _Main/BL/Type_Global_MappingProduct_MP/StaticMethod_GetByProductId.qbl                                                                                                        |    4 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDSOP_GlobalOTDSOP_Capaci.qbl                                                                           |   23 +
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl                                                                                         |    2 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick#623.def                                                                        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def             |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def                                                  |   18 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDSOP_GlobalOTDSOP_CapacityAndS.qbl                                                                           |   23 +
 _Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByMonth.qbl                                                                                                 |   93 +++++
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def                                                                         |    2 
 _Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInYear.qbl                                                                                                   |   18 
 _Main/BL/Type_Global_MappingOperation/StaticMethod_GetByProductId.qbl                                                                                                         |    4 
 _Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInYear.qbl                                                                                              |   18 
 _Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInSeason.qbl                                                                                            |   26 +
 _Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning#662.qbl                                                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def                                                  |   10 
 _Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompare.qbl                                                                                                             |   12 
 /dev/null                                                                                                                                                                     |   21 -
 _Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl                                                                            |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def                                     |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC#663.def |    2 
 _Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl                                                                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def             |    2 
 _Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInPCSInYear.qbl                                                                                                |   18 
 _Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def                                                                                    |    4 
 _Main/BL/Type_PRData/Method_DoCall.qbl                                                                                                                                        |    5 
 78 files changed, 668 insertions(+), 191 deletions(-)

diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDSOP_GlobalOTDSOP_Capacity.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDSOP_GlobalOTDSOP_Capacity.qbl
new file mode 100644
index 0000000..9b5d714
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDSOP_GlobalOTDSOP_Capacity.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeChartElement_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeChartElement
+{
+  #keys: '1[414384.0.999194645]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.999194647][414384.0.999194646][414384.0.999194648]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeChartElement
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeChartElement
+  {
+    #keys: '3[414384.0.999194650][414384.0.999194649][414384.0.999194651]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_Capa.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_Capa.qbl
deleted file mode 100644
index 2d5380f..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_Capa.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeChartElement
-{
-  #keys: '1[414384.0.921264786]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264788][414384.0.921264787][414384.0.921264789]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeChartElement
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeChartElement
-  {
-    #keys: '3[414384.0.921264791][414384.0.921264790][414384.0.921264792]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDSOP_GlobalOTDSOP_CapacityAndS.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDSOP_GlobalOTDSOP_CapacityAndS.qbl
new file mode 100644
index 0000000..98fd182
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDSOP_GlobalOTDSOP_CapacityAndS.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeChartRow_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeChartRow
+{
+  #keys: '1[414384.0.996881297]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881299][414384.0.996881298][414384.0.996881300]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeChartRow
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeChartRow
+  {
+    #keys: '3[414384.0.996881302][414384.0.996881301][414384.0.996881303]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_Capacity.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_Capacity.qbl
deleted file mode 100644
index a5fe974..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_Capacity.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeChartRow
-{
-  #keys: '1[414384.0.921264769]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264771][414384.0.921264770][414384.0.921264772]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeChartRow
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeChartRow
-  {
-    #keys: '3[414384.0.921264774][414384.0.921264773][414384.0.921264775]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDSOP_GlobalOTDSOP_Cap.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDSOP_GlobalOTDSOP_Cap.qbl
new file mode 100644
index 0000000..bb2e1ee
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDSOP_GlobalOTDSOP_Cap.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemColumn_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeCompareItemColumn
+{
+  #keys: '1[414384.0.996881443]'
+  ProceduralSequenceRelationStrategy
+  {
+    #keys: '13[0.0.0][414384.0.996881465][414384.0.996881459][414384.0.996881466][414384.0.996881460][414384.0.996881467][414384.0.996881461][414384.0.996881468][414384.0.996881462][414384.0.996881469][414384.0.996881463][414384.0.996881470][414384.0.996881464]'
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881445][414384.0.996881444][414384.0.996881446]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemColumn
+  {
+    #keys: '3[414384.0.996881448][414384.0.996881447][414384.0.996881449]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable.qbl
deleted file mode 100644
index 132284d..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable.qbl
+++ /dev/null
@@ -1,24 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeCompareItemColumn
-{
-  #keys: '1[414384.0.921264730]'
-  ProceduralSequenceRelationStrategy
-  {
-    #keys: '13[0.0.0][414384.0.921264749][414384.0.921264743][414384.0.921264750][414384.0.921264744][414384.0.921264751][414384.0.921264745][414384.0.921264752][414384.0.921264746][414384.0.921264753][414384.0.921264747][414384.0.921264754][414384.0.921264748]'
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264732][414384.0.921264731][414384.0.921264733]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeCompareItemColumn
-  {
-    #keys: '3[414384.0.921264735][414384.0.921264734][414384.0.921264736]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDSOP_GlobalOTDSOP_Capaci.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDSOP_GlobalOTDSOP_Capaci.qbl
new file mode 100644
index 0000000..9fb092c
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDSOP_GlobalOTDSOP_Capaci.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemRow_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeCompareItemRow
+{
+  #keys: '1[414384.0.996881317]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881319][414384.0.996881318][414384.0.996881320]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRow
+  {
+    #keys: '3[414384.0.996881322][414384.0.996881321][414384.0.996881323]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_Ca.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_Ca.qbl
deleted file mode 100644
index d33c56f..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_Ca.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeCompareItemRow
-{
-  #keys: '1[414384.0.921264713]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264715][414384.0.921264714][414384.0.921264716]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRow
-  {
-    #keys: '3[414384.0.921264718][414384.0.921264717][414384.0.921264719]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDSOP_GlobalOTDSOP_Ca.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDSOP_GlobalOTDSOP_Ca.qbl
new file mode 100644
index 0000000..8e2a345
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDSOP_GlobalOTDSOP_Ca.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterBusinessType_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeFilterBusinessType
+{
+  #keys: '1[414384.0.996881340]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881342][414384.0.996881341][414384.0.996881343]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterBusinessType
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterBusinessType
+  {
+    #keys: '3[414384.0.996881345][414384.0.996881344][414384.0.996881346]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTabl.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTabl.qbl
deleted file mode 100644
index f0b0349..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTabl.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterBusinessType
-{
-  #keys: '1[414384.0.921264696]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264698][414384.0.921264697][414384.0.921264699]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeFilterBusinessType
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeFilterBusinessType
-  {
-    #keys: '3[414384.0.921264701][414384.0.921264700][414384.0.921264702]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl
new file mode 100644
index 0000000..d2d3db4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterItem_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeFilterItem
+{
+  #keys: '1[414384.0.996881358]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881360][414384.0.996881359][414384.0.996881361]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterItem
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterItem
+  {
+    #keys: '3[414384.0.996881363][414384.0.996881362][414384.0.996881364]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_Capaci.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
deleted file mode 100644
index 7933192..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterItem
-{
-  #keys: '1[414384.0.921264679]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264681][414384.0.921264680][414384.0.921264682]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeFilterItem
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeFilterItem
-  {
-    #keys: '3[414384.0.921264684][414384.0.921264683][414384.0.921264685]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDSOP_GlobalOTDSOP_CapacityA.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDSOP_GlobalOTDSOP_CapacityA.qbl
new file mode 100644
index 0000000..5dcd675
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDSOP_GlobalOTDSOP_CapacityA.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterMonth_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeFilterMonth
+{
+  #keys: '1[414384.0.996881381]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881383][414384.0.996881382][414384.0.996881384]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterMonth
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterMonth
+  {
+    #keys: '3[414384.0.996881386][414384.0.996881385][414384.0.996881387]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_Capac.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_Capac.qbl
deleted file mode 100644
index d8b447f..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_Capac.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterMonth
-{
-  #keys: '1[414384.0.921264662]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264664][414384.0.921264663][414384.0.921264665]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeFilterMonth
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeFilterMonth
-  {
-    #keys: '3[414384.0.921264667][414384.0.921264666][414384.0.921264668]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDSOP_Glo.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDSOP_Glo.qbl
new file mode 100644
index 0000000..2a10a12
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDSOP_Glo.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
+{
+  #keys: '1[414384.0.996881401]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881403][414384.0.996881402][414384.0.996881404]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
+  {
+    #keys: '3[414384.0.996881406][414384.0.996881405][414384.0.996881407]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_G.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_G.qbl
deleted file mode 100644
index e10c202..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_G.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
-{
-  #keys: '1[414384.0.921264645]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264647][414384.0.921264646][414384.0.921264648]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
-  {
-    #keys: '3[414384.0.921264650][414384.0.921264649][414384.0.921264651]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl
new file mode 100644
index 0000000..74e2009
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDSOP_GlobalOTDSOP_CapacityAn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterYear_GlobalOTDSOP_GlobalOTDSOP_CapacityAndSaleBudgeFilterYear
+{
+  #keys: '1[414384.0.996881421]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.996881423][414384.0.996881422][414384.0.996881424]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterYear
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterYear
+  {
+    #keys: '3[414384.0.996881426][414384.0.996881425][414384.0.996881427]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_Capaci.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
deleted file mode 100644
index 8df8fb7..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterYear
-{
-  #keys: '1[414384.0.921264628]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.921264630][414384.0.921264629][414384.0.921264631]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudgeFilterYear
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudgeFilterYear
-  {
-    #keys: '3[414384.0.921264633][414384.0.921264632][414384.0.921264634]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl
deleted file mode 100644
index f900aee..0000000
--- a/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudge
-{
-  #keys: '1[414384.0.810464642]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.810464644][414384.0.810464643][414384.0.810464645]'
-    Cardinality: '0to1'
-    ObjectDefinition: CapacityAndSaleBudge
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide CapacityAndSaleBudge
-  {
-    #keys: '3[414384.0.810464647][414384.0.810464646][414384.0.810464648]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDSOP_GlobalOTDSOP_PRHistoryData.qbl b/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDSOP_GlobalOTDSOP_PRHistoryData.qbl
new file mode 100644
index 0000000..cdcda63
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDSOP_GlobalOTDSOP_PRHistoryData.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PRHistoryData_GlobalOTDSOP_GlobalOTDSOP_PRHistoryData
+{
+  #keys: '1[414384.0.999194777]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide GlobalOTDSOP
+  {
+    #keys: '3[414384.0.999194779][414384.0.999194778][414384.0.999194780]'
+    Cardinality: '0to1'
+    ObjectDefinition: PRHistoryData
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide PRHistoryData
+  {
+    #keys: '3[414384.0.999194782][414384.0.999194781][414384.0.999194783]'
+    Cardinality: '1toN'
+    ObjectDefinition: GlobalOTDSOP
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData.qbl b/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData.qbl
deleted file mode 100644
index f5e24f8..0000000
--- a/_Main/BL/Relations/Relation_PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation PRHistoryData_GlobalOTDTable_GlobalOTDTable_PRHistoryData
-{
-  #keys: '1[414384.0.789498541]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide GlobalOTDTable
-  {
-    #keys: '3[414384.0.789498543][414384.0.789498542][414384.0.789498544]'
-    Cardinality: '0to1'
-    ObjectDefinition: PRHistoryData
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide PRHistoryData
-  {
-    #keys: '3[414384.0.789498546][414384.0.789498545][414384.0.789498547]'
-    Cardinality: '1toN'
-    ObjectDefinition: GlobalOTDTable
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_YuxTest_MPSync_MPSync_YuxTest.qbl b/_Main/BL/Relations/Relation_YuxTest_MPSync_MPSync_YuxTest.qbl
deleted file mode 100644
index 743c739..0000000
--- a/_Main/BL/Relations/Relation_YuxTest_MPSync_MPSync_YuxTest.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation YuxTest_MPSync_MPSync_YuxTest
-{
-  #keys: '1[414384.0.915854641]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide MPSync
-  {
-    #keys: '3[414384.0.915854643][414384.0.915854642][414384.0.915854644]'
-    Cardinality: '0to1'
-    ObjectDefinition: YuxTest
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide YuxTest
-  {
-    #keys: '3[414384.0.915854646][414384.0.915854645][414384.0.915854647]'
-    Cardinality: '1toN'
-    ObjectDefinition: MPSync
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl
deleted file mode 100644
index a8afdb0..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute BusinessType
-{
-  #keys: '3[414384.0.810464687][414384.0.810464686][414384.0.810464688]'
-  Description: '涓氬姟绫诲瀷(浜嬩笟閮�)'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl
deleted file mode 100644
index 119a291..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityEquivalent
-{
-  #keys: '3[414384.0.810464711][414384.0.810464710][414384.0.810464712]'
-  Description: '浜ц兘褰撻噺'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl
deleted file mode 100644
index c8e3695..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth1
-{
-  #keys: '3[414384.0.810464717][414384.0.810464716][414384.0.810464718]'
-  Description: '1鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl
deleted file mode 100644
index 62d88ee..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth10
-{
-  #keys: '3[414384.0.810464744][414384.0.810464743][414384.0.810464745]'
-  Description: '10鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl
deleted file mode 100644
index ea88f28..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth11
-{
-  #keys: '3[414384.0.810464747][414384.0.810464746][414384.0.810464748]'
-  Description: '11鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl
deleted file mode 100644
index 6e299ff..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth12
-{
-  #keys: '3[414384.0.810464750][414384.0.810464749][414384.0.810464751]'
-  Description: '12鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl
deleted file mode 100644
index 650954b..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth2
-{
-  #keys: '3[414384.0.810464720][414384.0.810464719][414384.0.810464721]'
-  Description: '2鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl
deleted file mode 100644
index be704be..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth3
-{
-  #keys: '3[414384.0.810464723][414384.0.810464722][414384.0.810464724]'
-  Description: '3鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl
deleted file mode 100644
index 2f36f6d..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth4
-{
-  #keys: '3[414384.0.810464726][414384.0.810464725][414384.0.810464727]'
-  Description: '4鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl
deleted file mode 100644
index 1839d8f..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth5
-{
-  #keys: '3[414384.0.810464729][414384.0.810464728][414384.0.810464730]'
-  Description: '5鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl
deleted file mode 100644
index a6f3dd4..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth6
-{
-  #keys: '3[414384.0.810464732][414384.0.810464731][414384.0.810464733]'
-  Description: '6鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl
deleted file mode 100644
index 44b13ba..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth7
-{
-  #keys: '3[414384.0.810464735][414384.0.810464734][414384.0.810464736]'
-  Description: '7鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl
deleted file mode 100644
index 2f1152c..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth8
-{
-  #keys: '3[414384.0.810464738][414384.0.810464737][414384.0.810464739]'
-  Description: '8鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl
deleted file mode 100644
index 5eb6d08..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSInMonth9
-{
-  #keys: '3[414384.0.810464741][414384.0.810464740][414384.0.810464742]'
-  Description: '9鏈堜骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl
deleted file mode 100644
index c299a64..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInPCSTotal
-{
-  #keys: '3[414384.0.810464866][414384.0.810464865][414384.0.810464867]'
-  Description: '骞翠骇鑳斤紙PCS锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl
deleted file mode 100644
index 92e048b..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth1
-{
-  #keys: '3[414384.0.810464753][414384.0.810464752][414384.0.810464754]'
-  Description: '1鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl
deleted file mode 100644
index b3cf0ce..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth10
-{
-  #keys: '3[414384.0.810464780][414384.0.810464779][414384.0.810464781]'
-  Description: '10鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl
deleted file mode 100644
index 2c3252d..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth11
-{
-  #keys: '3[414384.0.810464783][414384.0.810464782][414384.0.810464784]'
-  Description: '11鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl
deleted file mode 100644
index fbfb32a..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth12
-{
-  #keys: '3[414384.0.810464786][414384.0.810464785][414384.0.810464787]'
-  Description: '12鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl
deleted file mode 100644
index b4caec2..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth2
-{
-  #keys: '3[414384.0.810464756][414384.0.810464755][414384.0.810464757]'
-  Description: '2鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl
deleted file mode 100644
index c2b8d77..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth3
-{
-  #keys: '3[414384.0.810464759][414384.0.810464758][414384.0.810464760]'
-  Description: '3鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl
deleted file mode 100644
index 40591a6..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth4
-{
-  #keys: '3[414384.0.810464762][414384.0.810464761][414384.0.810464763]'
-  Description: '4鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl
deleted file mode 100644
index 2910ff3..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth5
-{
-  #keys: '3[414384.0.810464765][414384.0.810464764][414384.0.810464766]'
-  Description: '5鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl
deleted file mode 100644
index 350f3f0..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth6
-{
-  #keys: '3[414384.0.810464768][414384.0.810464767][414384.0.810464769]'
-  Description: '6鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl
deleted file mode 100644
index efe11d8..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth7
-{
-  #keys: '3[414384.0.810464771][414384.0.810464770][414384.0.810464772]'
-  Description: '7鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl
deleted file mode 100644
index 2deff94..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth8
-{
-  #keys: '3[414384.0.810464774][414384.0.810464773][414384.0.810464775]'
-  Description: '8鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl
deleted file mode 100644
index 1da1c48..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetInMonth9
-{
-  #keys: '3[414384.0.810464777][414384.0.810464776][414384.0.810464778]'
-  Description: '9鏈堜骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl
deleted file mode 100644
index fd6f847..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CapacityInSheetTotal
-{
-  #keys: '3[414384.0.810464850][414384.0.810464849][414384.0.810464851]'
-  Description: '骞翠骇鑳斤紙Sheet锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl
deleted file mode 100644
index f3217fc..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute Deleted
-{
-  #keys: '3[414384.0.810464681][414384.0.810464680][414384.0.810464682]'
-  Description: '宸插垹闄�'
-  ValueType: Boolean
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl
deleted file mode 100644
index ed65a10..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute DisplayTechnology
-{
-  #keys: '3[414384.0.810464684][414384.0.810464683][414384.0.810464685]'
-  Description: '鏄剧ず鎶�鏈垎绫�'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl
deleted file mode 100644
index cfd9d06..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute LineAndSpec
-{
-  #keys: '3[414384.0.810464690][414384.0.810464689][414384.0.810464691]'
-  Description: '浜у搧绾�/浜у搧瑙勬牸'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl
deleted file mode 100644
index 67da312..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute NumberOfCut
-{
-  #keys: '3[414384.0.810464708][414384.0.810464707][414384.0.810464709]'
-  Description: '鍒囧壊鏁�'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl
deleted file mode 100644
index c7fcdef..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute NumberOfMask
-{
-  #keys: '3[414384.0.810464714][414384.0.810464713][414384.0.810464715]'
-  Description: 'mask鏁�'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl
deleted file mode 100644
index 38f5383..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute OrgCode
-{
-  #keys: '3[414384.0.810464668][414384.0.810464667][414384.0.810464669]'
-  Description: '涓氬姟閮ㄩ棬'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl
deleted file mode 100644
index eb76c2b..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute PlaceOfProductionOfArray
-{
-  #keys: '3[414384.0.810464696][414384.0.810464695][414384.0.810464697]'
-  Description: 'Array浜у湴锛堥潰鏉垮熀鍦帮級'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl
deleted file mode 100644
index 077836e..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute PlaceOfProductionOfEvaporation
-{
-  #keys: '3[414384.0.810464699][414384.0.810464698][414384.0.810464700]'
-  Description: '钂搁晙浜у湴'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl
deleted file mode 100644
index 65504ec..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute ProductCode
-{
-  #keys: '3[414384.0.810464693][414384.0.810464692][414384.0.810464694]'
-  Description: '浜у搧鏂欏彿'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl
deleted file mode 100644
index 24dc3a6..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute Resolution
-{
-  #keys: '3[414384.0.810464702][414384.0.810464701][414384.0.810464703]'
-  Description: '鍒嗚鲸鐜�'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl
deleted file mode 100644
index 8095702..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth1
-{
-  #keys: '3[414384.0.810464789][414384.0.810464788][414384.0.810464790]'
-  Description: '1鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl
deleted file mode 100644
index 061f898..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth10
-{
-  #keys: '3[414384.0.810464816][414384.0.810464815][414384.0.810464817]'
-  Description: '10鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl
deleted file mode 100644
index e5b0339..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth11
-{
-  #keys: '3[414384.0.810464819][414384.0.810464818][414384.0.810464820]'
-  Description: '11鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl
deleted file mode 100644
index 1891382..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth12
-{
-  #keys: '3[414384.0.810464822][414384.0.810464821][414384.0.810464823]'
-  Description: '12鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl
deleted file mode 100644
index 9affb8b..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth2
-{
-  #keys: '3[414384.0.810464792][414384.0.810464791][414384.0.810464793]'
-  Description: '2鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl
deleted file mode 100644
index 73de89c..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth3
-{
-  #keys: '3[414384.0.810464795][414384.0.810464794][414384.0.810464796]'
-  Description: '3鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl
deleted file mode 100644
index 2c0a7b3..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth4
-{
-  #keys: '3[414384.0.810464798][414384.0.810464797][414384.0.810464799]'
-  Description: '4鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl
deleted file mode 100644
index cd253f3..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth5
-{
-  #keys: '3[414384.0.810464801][414384.0.810464800][414384.0.810464802]'
-  Description: '5鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl
deleted file mode 100644
index 47c19c1..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth6
-{
-  #keys: '3[414384.0.810464804][414384.0.810464803][414384.0.810464805]'
-  Description: '6鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl
deleted file mode 100644
index b10a2cb..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth7
-{
-  #keys: '3[414384.0.810464807][414384.0.810464806][414384.0.810464808]'
-  Description: '7鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl
deleted file mode 100644
index 12afc72..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth8
-{
-  #keys: '3[414384.0.810464810][414384.0.810464809][414384.0.810464811]'
-  Description: '8鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl
deleted file mode 100644
index 7359c75..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountInMonth9
-{
-  #keys: '3[414384.0.810464813][414384.0.810464812][414384.0.810464814]'
-  Description: '9鏈堥攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl
deleted file mode 100644
index c01058f..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute SaleAmountTotal
-{
-  #keys: '3[414384.0.810464840][414384.0.810464839][414384.0.810464841]'
-  Description: '骞撮攢鍞锛堜竾锛�'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl
deleted file mode 100644
index 7a1c0ff..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute ShippingForm
-{
-  #keys: '3[414384.0.810464705][414384.0.810464704][414384.0.810464706]'
-  Description: '鍑鸿揣褰㈡��'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInPCSInYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInPCSInYear.qbl
deleted file mode 100644
index 8e5ce5e..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInPCSInYear.qbl
+++ /dev/null
@@ -1,15 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method GetCapacityInPCSInYear () as Real
-{
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := 0.0;
-    for( i := 1; i <= 12; i := i + 1 ) {
-      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInPCSInMonth" + [String]i );
-      result := result + field.GetReal( this );
-    }
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl
deleted file mode 100644
index 54eecdf..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInHalfYear.qbl
+++ /dev/null
@@ -1,19 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method GetCapacityInSheetInHalfYear (
-  Number halfNo
-) as Real
-{
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := 0.0;
-    fromMonth := 1 + ( halfNo - 1 ) * 6;
-    toMonth := 6 + ( halfNo - 1 ) * 6;
-    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
-      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
-      result := result + field.GetReal( this );
-    }
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInSeason.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInSeason.qbl
deleted file mode 100644
index 5af224d..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInSeason.qbl
+++ /dev/null
@@ -1,19 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method GetCapacityInSheetInSeason (
-  Number seasonNo
-) as Real
-{
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := 0.0;
-    fromMonth := 1 + ( seasonNo - 1 ) * 3;
-    toMonth := 3 + ( seasonNo - 1 ) * 3;
-    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
-      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
-      result := result + field.GetReal( this );
-    }
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInYear.qbl
deleted file mode 100644
index 561b9d9..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetCapacityInSheetInYear.qbl
+++ /dev/null
@@ -1,15 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method GetCapacityInSheetInYear () as Real
-{
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := 0.0;
-    for( i := 1; i <= 12; i := i + 1 ) {
-      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]i );
-      result := result + field.GetReal( this );
-    }
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetSaleAmountInYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Method_GetSaleAmountInYear.qbl
deleted file mode 100644
index 04efa9c..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/Method_GetSaleAmountInYear.qbl
+++ /dev/null
@@ -1,15 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method GetSaleAmountInYear () as Real
-{
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := 0.0;
-    for( i := 1; i <= 12; i := i + 1 ) {
-      field := Reflection::FindAttribute( "CapacityAndSaleBudge", "SaleAmountInMonth" + [String]i );
-      result := result + field.GetReal( this );
-    }
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByMonth.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByMonth.qbl
deleted file mode 100644
index be9cd98..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByMonth.qbl
+++ /dev/null
@@ -1,22 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod GetSaleByMonth (
-  Strings productNo,
-  GlobalOTDTable parent,
-  Number yearNo,
-  Number monthNo
-) as Real
-{
-  Description: '閿�鍞锛圵锛�'
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    field := Reflection::FindAttribute( "CapacityAndSaleBudge", "SaleAmountInMonth" + [String]monthNo );
-    value := sum( parent, 
-                  CapacityAndSaleBudge, 
-                  item, 
-                  productNo.Find( item.ProductCode() ) > -1,
-                  field.GetReal( item ) );
-    return value;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByYear.qbl
deleted file mode 100644
index ef150ed..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSaleByYear.qbl
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod GetSaleByYear (
-  Strings productNo,
-  GlobalOTDTable parent,
-  Number yearNo
-) as Real
-{
-  Description: '閿�鍞锛圵锛�'
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := sum( parent, 
-                   CapacityAndSaleBudge, 
-                   item, 
-                   productNo.Find( item.ProductCode() ) > -1,
-                   item.GetSaleAmountInYear() );
-    return result;
-  *]
-}
diff --git "a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByHalfYear\0431.qbl" "b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByHalfYear\0431.qbl"
deleted file mode 100644
index 7f929c7..0000000
--- "a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByHalfYear\0431.qbl"
+++ /dev/null
@@ -1,21 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod GetSheetByHalfYear (
-  Strings productNo,
-  GlobalOTDTable parent,
-  Number yearNo,
-  Number halfNo
-) as Real
-{
-  Description: '浜ц兘 - 瀹炴暟澶у紶'
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := sum( parent, 
-                   CapacityAndSaleBudge, 
-                   item, 
-                   productNo.Find( item.ProductCode() ) > -1,
-                   item.GetCapacityInSheetInHalfYear( halfNo ) );
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByMonth.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByMonth.qbl
deleted file mode 100644
index 35ab669..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByMonth.qbl
+++ /dev/null
@@ -1,22 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod GetSheetByMonth (
-  Strings productNo,
-  GlobalOTDTable parent,
-  Number yearNo,
-  Number monthNo
-) as Real
-{
-  Description: '浜ц兘-瀹炴暟澶у紶'
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    field := Reflection::FindAttribute( "CapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]monthNo );
-    value := sum( parent, 
-                  CapacityAndSaleBudge, 
-                  item, 
-                  productNo.Find( item.ProductCode() ) > -1,
-                  field.GetReal( item ) );
-    return value;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetBySeason.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetBySeason.qbl
deleted file mode 100644
index a0193ae..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetBySeason.qbl
+++ /dev/null
@@ -1,21 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod GetSheetBySeason (
-  Strings productNo,
-  GlobalOTDTable parent,
-  Number yearNo,
-  Number seasonNo
-) as Real
-{
-  Description: '浜ц兘 - 瀹炴暟澶у紶'
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := sum( parent, 
-                   CapacityAndSaleBudge, 
-                   item, 
-                   productNo.Find( item.ProductCode() ) > -1,
-                   item.GetCapacityInSheetInSeason( seasonNo ) );
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByYear.qbl b/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByYear.qbl
deleted file mode 100644
index 997d801..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/StaticMethod_GetSheetByYear.qbl
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod GetSheetByYear (
-  Strings productNo,
-  GlobalOTDTable parent,
-  Number yearNo
-) as Real
-{
-  Description: '浜ц兘 - 瀹炴暟澶у紶'
-  TextBody:
-  [*
-    // yypsybs Sep-18-2023 (created)
-    result := sum( parent, 
-                   CapacityAndSaleBudge, 
-                   item, 
-                   productNo.Find( item.ProductCode() ) > -1,
-                   item.GetCapacityInSheetInYear() );
-    return result;
-  *]
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl b/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
deleted file mode 100644
index 650ea87..0000000
--- a/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-#root
-#parent: #DomainModel
-Type CapacityAndSaleBudge
-{
-  #keys: '5[414384.0.810464639][414384.0.810464637][0.0.0][414384.0.810464638][414384.0.810464640]'
-  BaseType: Object
-  Description: '浜ч攢棰勭畻 锛侊紒锛佸純鐢紒锛侊紒'
-  StructuredName: 'CapacityAndSaleBudges'
-}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
index 3d1269f..db5dca4 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod TestData (
-  GlobalOTDTable parent
+  GlobalOTDSOP parent
 )
 {
   Description: '鐢熸垚娴嬭瘯鏁版嵁'
@@ -12,7 +12,6 @@
     info( "鐢熸垚骞村害浜ч攢棰勭畻鎶ヨ〃娴嬭瘯鏁版嵁" )
     
     parent.CapacityAndSaleBudgeChartElement( relflush );
-    
     for( sc := 0; sc < 4; sc := sc + 1 ) {
       scenarioName := "SC" + [String]sc;
       for( i := 0; i < 4; i := i + 1 ) {
@@ -20,9 +19,9 @@
         for( j := 1; j <= 12; j := j + 1 ) {
           monthString := "MONTH" + ifexpr( j < 10, "0" + [String]j, [String]j );
           parent.CapacityAndSaleBudgeChartElement( relnew, 
-                                                            BusinessTypeOrPlaceOfProductionOfArray := businessTypeString, 
-                                                            TimeStringAndScenarioName := monthString + " - " + scenarioName, 
-                                                            Quantity := Real::Random( 20.0, 30.0 ) );
+                                                   BusinessTypeOrPlaceOfProductionOfArray := businessTypeString, 
+                                                   TimeStringAndScenarioName := monthString + " - " + scenarioName, 
+                                                   Quantity := Real::Random( 20.0, 30.0 ) );
         }
       }
     }
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl
index 76a61fb..920eb5b 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateIfNotExist (
-  GlobalOTDTable parent,
+  GlobalOTDSOP parent,
   String businessType,
   String placeOfProductionOfArray
 ) as CapacityAndSaleBudgeChartRow
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
index 77bfe99..7caa364 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateIfNotExist (
-  GlobalOTDTable parent,
+  GlobalOTDSOP parent,
   String columnName
 ) as CapacityAndSaleBudgeCompareItemColumn
 {
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
index 7a485f5..230f93e 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateIfNotExist (
-  GlobalOTDTable parent,
+  GlobalOTDSOP parent,
   String businessType,
   String placeOfProductionOfArray
 ) as CapacityAndSaleBudgeCompareItemRow
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl
index 33a800b..08b6273 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateIfNotExist (
-  GlobalOTDTable parent,
+  GlobalOTDSOP parent,
   String value
 )
 {
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
index e05188e..b012fc8 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateIfNotExist (
-  GlobalOTDTable parent,
+  GlobalOTDSOP parent,
   String itemName
 )
 {
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
index 14b634a..3601509 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod Initial (
-  GlobalOTDTable parent
+  GlobalOTDSOP parent
 )
 {
   Description: '鍒濆鍖栧姣旈」'
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
index f14808d..8159900 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod Initial (
-  GlobalOTDTable parent
+  GlobalOTDSOP parent
 )
 {
   Description: '鍒濆鍖栧勾浠�'
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl
index 3e96143..f8c8fc9 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod CreateIfNotExist (
-  GlobalOTDTable parent,
+  GlobalOTDSOP parent,
   String value
 )
 {
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
index dc5898d..72badb3 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod Initial (
-  GlobalOTDTable parent
+  GlobalOTDSOP parent
 )
 {
   Description: '鍒濆鍖栧勾浠�'
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_RefreshCapacityAndSaleBudgeFilter.qbl b/_Main/BL/Type_GlobalDTOTable/Method_RefreshCapacityAndSaleBudgeFilter.qbl
deleted file mode 100644
index 15f1b3b..0000000
--- a/_Main/BL/Type_GlobalDTOTable/Method_RefreshCapacityAndSaleBudgeFilter.qbl
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method RefreshCapacityAndSaleBudgeFilter (
-  Boolean deleteBeforeCreate
-)
-{
-  TextBody:
-  [*
-    if( deleteBeforeCreate ) {
-      this.CapacityAndSaleBudgeFilterBusinessType( relflush );
-      this.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relflush );  
-    }
-    // yypsybs Sep-21-2023 (created)
-    debuginfo( "=====RefreshCapacityAndSaleBudgeFilter====" );
-    businessTypes := selectuniquevalues( this, Global_MappingAnnualBudgetData, item, item.BusinessType() );
-    debuginfo( [String]businessTypes.Size() );
-    traverse( businessTypes, Elements, businessType ) {
-      CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( this, businessType );
-    }
-    placeOfProductionOfArrays := selectuniquevalues( this, Global_MappingAnnualBudgetData, item, item.OrgCodeFromBom() );
-    debuginfo( [String]placeOfProductionOfArrays.Size() );
-    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
-      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( this, placeOfProductionOfArray );
-    }
-  *]
-}
diff --git "a/_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart\043156.qbl" b/_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeChart.qbl
similarity index 100%
rename from "_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart\043156.qbl"
rename to _Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeChart.qbl
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompare.qbl b/_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompare.qbl
similarity index 96%
rename from _Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompare.qbl
rename to _Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompare.qbl
index 6937389..64a208a 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompare.qbl
+++ b/_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompare.qbl
@@ -5,7 +5,7 @@
   CapacityAndSaleBudgeFilterItems items,
   CapacityAndSaleBudgeFilterYears years,
   CapacityAndSaleBudgeFilterMonths months,
-  GlobalOTDTable otdTable
+  const GlobalOTDTable otdTable
 )
 {
   Description: 'todo : mappingParent鏀逛负mpSync, random鍒犱簡'
@@ -35,7 +35,7 @@
     this.CapacityAndSaleBudgeCompareItemRow( relflush );
     this.CapacityAndSaleBudgeCompareItemColumn( relflush );
     // ====姹囨�绘墍鏈夊嚭鐜扮殑浜у搧====
-    historyData := selectset( this, Global_MappingAnnualBudgetData, item, true );
+    historyData := selectset( otdTable, Global_MappingAnnualBudgetData, item, true );
     debuginfo( "historyData : " + [String]historyData.Size() );
     
     traverse( historyData, Elements, one ) {
@@ -77,14 +77,14 @@
         traverse( months, Elements, month ) {
           columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "骞�-" + [String]month.MonthNo() + "鏈�-骞村害棰勭畻" );
           traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-            cellReal := Global_MappingForecast::GetQuantityByMonth( row.GetProductCodes(), this, DateTime::Now().Year(), month.MonthNo() );
+            cellReal := Global_MappingForecast::GetQuantityByMonth( row.GetProductCodes(), otdTable, DateTime::Now().Year(), month.MonthNo() );
             cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
             cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
           }
         }
         columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "骞�-total-骞村害棰勭畻" );
         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-          cellReal := Global_MappingForecast::GetQuantityByYear( row.GetProductCodes(), this, year.YearNo() );
+          cellReal := Global_MappingForecast::GetQuantityByYear( row.GetProductCodes(), otdTable, year.YearNo() );
           cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
           cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
         }
@@ -120,14 +120,14 @@
         traverse( months, Elements, month ) {
           columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "骞�-" + [String]month.MonthNo() + "鏈�-骞村害棰勭畻" );
           traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-            cellReal := Global_MappingAnnualBudgetData::GetSaleByMonth( row.GetProductCodes(), this, year.YearNo(), month.MonthNo() );
+            cellReal := Global_MappingAnnualBudgetData::GetSaleByMonth( row.GetProductCodes(), otdTable, year.YearNo(), month.MonthNo() );
             cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
             cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
           }
         }
         columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "骞�-骞村害棰勭畻" );
         traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
-          cellReal := Global_MappingAnnualBudgetData::GetSaleByYear( row.GetProductCodes(), this, year.YearNo() );
+          cellReal := Global_MappingAnnualBudgetData::GetSaleByYear( row.GetProductCodes(), otdTable, year.YearNo() );
           cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
           cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
         }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompareExport.qbl b/_Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompareExport.qbl
similarity index 100%
rename from _Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompareExport.qbl
rename to _Main/BL/Type_GlobalOTDSOP/Method_CapacityAndSaleBudgeCompareExport.qbl
diff --git a/_Main/BL/Type_GlobalOTDSOP/StaticMethod_RefreshCapacityAndSaleBudgeFilter.qbl b/_Main/BL/Type_GlobalOTDSOP/StaticMethod_RefreshCapacityAndSaleBudgeFilter.qbl
new file mode 100644
index 0000000..cda1cca
--- /dev/null
+++ b/_Main/BL/Type_GlobalOTDSOP/StaticMethod_RefreshCapacityAndSaleBudgeFilter.qbl
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod RefreshCapacityAndSaleBudgeFilter (
+  Boolean deleteBeforeCreate,
+  const GlobalOTDTable otdTable,
+  GlobalOTDSOP otdSop
+)
+{
+  TextBody:
+  [*
+    // yypsybs Oct-17-2023 (created)
+    if( deleteBeforeCreate ) {
+      otdSop.CapacityAndSaleBudgeFilterBusinessType( relflush );
+      otdSop.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relflush );  
+    }
+    // yypsybs Sep-21-2023 (created)
+    debuginfo( "=====RefreshCapacityAndSaleBudgeFilter====" );
+    businessTypes := selectuniquevalues( otdTable, Global_MappingAnnualBudgetData, item, item.BusinessType() );
+    debuginfo( [String]businessTypes.Size() );
+    traverse( businessTypes, Elements, businessType ) {
+      CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( otdSop, businessType );
+    }
+    placeOfProductionOfArrays := selectuniquevalues( otdTable, Global_MappingAnnualBudgetData, item, item.OrgCodeFromBom() );
+    debuginfo( [String]placeOfProductionOfArrays.Size() );
+    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
+      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( otdSop, placeOfProductionOfArray );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInPCSInYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInPCSInYear.qbl
index 947ff12..68956ea 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInPCSInYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInPCSInYear.qbl
@@ -1,15 +1,23 @@
 Quintiq file version 2.0
 #parent: #root
-Method GetCapacityInPCSInYear () as Real
+Method GetCapacityInPCSInYear () const as Real
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
     result := 0.0;
-    for( i := 1; i <= 12; i := i + 1 ) {
-      field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlyModCapacity" + [String]i );
-      result := result + [Real]field.GetString( this );
-    }
+    result := result + [Real]this.MonthlyModCapacity1();
+    result := result + [Real]this.MonthlyModCapacity2();
+    result := result + [Real]this.MonthlyModCapacity3();
+    result := result + [Real]this.MonthlyModCapacity4();
+    result := result + [Real]this.MonthlyModCapacity5();
+    result := result + [Real]this.MonthlyModCapacity6();
+    result := result + [Real]this.MonthlyModCapacity7();
+    result := result + [Real]this.MonthlyModCapacity8();
+    result := result + [Real]this.MonthlyModCapacity9();
+    result := result + [Real]this.MonthlyModCapacity10();
+    result := result + [Real]this.MonthlyModCapacity11();
+    result := result + [Real]this.MonthlyModCapacity12();
     return result;
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInHalfYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInHalfYear.qbl
index cfe0c10..a9c7789 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInHalfYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInHalfYear.qbl
@@ -2,17 +2,27 @@
 #parent: #root
 Method GetCapacityInSheetInHalfYear (
   Number halfNo
-) as Real
+) const as Real
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
     result := 0.0;
-    fromMonth := 1 + ( halfNo - 1 ) * 6;
-    toMonth := 6 + ( halfNo - 1 ) * 6;
-    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
-      field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySheetCapacity" + [String]i );
-      result := result + [Real]field.GetString( this );
+    if( halfNo = 1 ) {
+      result := result + [Real]this.MonthlySheetCapacity1();
+      result := result + [Real]this.MonthlySheetCapacity2();
+      result := result + [Real]this.MonthlySheetCapacity3();
+      result := result + [Real]this.MonthlySheetCapacity4();
+      result := result + [Real]this.MonthlySheetCapacity5();
+      result := result + [Real]this.MonthlySheetCapacity6();
+    }
+    if( halfNo = 2 ) {
+      result := result + [Real]this.MonthlySheetCapacity7();
+      result := result + [Real]this.MonthlySheetCapacity8();
+      result := result + [Real]this.MonthlySheetCapacity9();
+      result := result + [Real]this.MonthlySheetCapacity10();
+      result := result + [Real]this.MonthlySheetCapacity11();
+      result := result + [Real]this.MonthlySheetCapacity12();
     }
     return result;
   *]
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInSeason.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInSeason.qbl
index 7da4592..66432bd 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInSeason.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInSeason.qbl
@@ -2,17 +2,31 @@
 #parent: #root
 Method GetCapacityInSheetInSeason (
   Number seasonNo
-) as Real
+) const as Real
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
     result := 0.0;
-    fromMonth := 1 + ( seasonNo - 1 ) * 3;
-    toMonth := 3 + ( seasonNo - 1 ) * 3;
-    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
-      field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySheetCapacity" + [String]i );
-      result := result + [Real]field.GetString( this );
+    if( seasonNo = 1 ) {
+      result := result + [Real]this.MonthlySheetCapacity1();
+      result := result + [Real]this.MonthlySheetCapacity2();
+      result := result + [Real]this.MonthlySheetCapacity3();
+    }
+    if( seasonNo = 2 ) {
+      result := result + [Real]this.MonthlySheetCapacity4();
+      result := result + [Real]this.MonthlySheetCapacity5();
+      result := result + [Real]this.MonthlySheetCapacity6();
+    }
+    if( seasonNo = 3 ) {
+      result := result + [Real]this.MonthlySheetCapacity7();
+      result := result + [Real]this.MonthlySheetCapacity8();
+      result := result + [Real]this.MonthlySheetCapacity9();
+    }
+    if( seasonNo = 4 ) {
+      result := result + [Real]this.MonthlySheetCapacity10();
+      result := result + [Real]this.MonthlySheetCapacity11();
+      result := result + [Real]this.MonthlySheetCapacity12();
     }
     return result;
   *]
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInYear.qbl
index d044dac..e4e1ff1 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetCapacityInSheetInYear.qbl
@@ -1,15 +1,23 @@
 Quintiq file version 2.0
 #parent: #root
-Method GetCapacityInSheetInYear () as Real
+Method GetCapacityInSheetInYear () const as Real
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
     result := 0.0;
-    for( i := 1; i <= 12; i := i + 1 ) {
-      field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySheetCapacity" + [String]i );
-      result := result + [Real]field.GetString( this );
-    }
+    result := result + [Real]this.MonthlySheetCapacity1();
+    result := result + [Real]this.MonthlySheetCapacity2();
+    result := result + [Real]this.MonthlySheetCapacity3();
+    result := result + [Real]this.MonthlySheetCapacity4();
+    result := result + [Real]this.MonthlySheetCapacity5();
+    result := result + [Real]this.MonthlySheetCapacity6();
+    result := result + [Real]this.MonthlySheetCapacity7();
+    result := result + [Real]this.MonthlySheetCapacity8();
+    result := result + [Real]this.MonthlySheetCapacity9();
+    result := result + [Real]this.MonthlySheetCapacity10();
+    result := result + [Real]this.MonthlySheetCapacity11();
+    result := result + [Real]this.MonthlySheetCapacity12();
     return result;
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInHalfYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInHalfYear.qbl
index d882fef..bbddd8b 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInHalfYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInHalfYear.qbl
@@ -2,17 +2,27 @@
 #parent: #root
 Method GetSaleAmountInHalfYear (
   Number halfNo
-) as Real
+) const as Real
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
     result := 0.0;
-    fromMonth := 1 + ( halfNo - 1 ) * 6;
-    toMonth := 6 + ( halfNo - 1 ) * 6;
-    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
-      field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySales" + [String]i );
-      result := result + [Real]field.GetString( this );
+    if( halfNo = 1 ) {
+      result := result + [Real]this.MonthlySales1();
+      result := result + [Real]this.MonthlySales2();
+      result := result + [Real]this.MonthlySales3();
+      result := result + [Real]this.MonthlySales4();
+      result := result + [Real]this.MonthlySales5();
+      result := result + [Real]this.MonthlySales6();
+    }
+    if( halfNo = 2 ) {
+      result := result + [Real]this.MonthlySales7();
+      result := result + [Real]this.MonthlySales8();
+      result := result + [Real]this.MonthlySales9();
+      result := result + [Real]this.MonthlySales10();
+      result := result + [Real]this.MonthlySales11();
+      result := result + [Real]this.MonthlySales12();
     }
     return result;
   *]
diff --git "a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInSeason\043000.qbl" "b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInSeason\043000.qbl"
index c35dd6e..767082c 100644
--- "a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInSeason\043000.qbl"
+++ "b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInSeason\043000.qbl"
@@ -2,17 +2,31 @@
 #parent: #root
 Method GetSaleAmountInSeason (
   Number seasonNo
-) as Real
+) const as Real
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
     result := 0.0;
-    fromMonth := 1 + ( seasonNo - 1 ) * 3;
-    toMonth := 3 + ( seasonNo - 1 ) * 3;
-    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
-      field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySales" + [String]i );
-      result := result + [Real]field.GetString( this );
+    if( seasonNo = 1 ) {
+      result := result + [Real]this.MonthlySales1();
+      result := result + [Real]this.MonthlySales2();
+      result := result + [Real]this.MonthlySales3();
+    }
+    if( seasonNo = 2 ) {
+      result := result + [Real]this.MonthlySales4();
+      result := result + [Real]this.MonthlySales5();
+      result := result + [Real]this.MonthlySales6();
+    }
+    if( seasonNo = 3 ) {
+      result := result + [Real]this.MonthlySales7();
+      result := result + [Real]this.MonthlySales8();
+      result := result + [Real]this.MonthlySales9();
+    }
+    if( seasonNo = 4 ) {
+      result := result + [Real]this.MonthlySales10();
+      result := result + [Real]this.MonthlySales11();
+      result := result + [Real]this.MonthlySales12();
     }
     return result;
   *]
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInYear.qbl
index 0b05b26..1ac640e 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/Method_GetSaleAmountInYear.qbl
@@ -1,15 +1,23 @@
 Quintiq file version 2.0
 #parent: #root
-Method GetSaleAmountInYear () as Real
+Method GetSaleAmountInYear () const as Real
 {
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
     result := 0.0;
-    for( i := 1; i <= 12; i := i + 1 ) {
-      field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySales" + [String]i );
-      result := result + [Real]field.GetString( this );
-    }
+    result := result + [Real]this.MonthlySales1();
+    result := result + [Real]this.MonthlySales2();
+    result := result + [Real]this.MonthlySales3();
+    result := result + [Real]this.MonthlySales4();
+    result := result + [Real]this.MonthlySales5();
+    result := result + [Real]this.MonthlySales6();
+    result := result + [Real]this.MonthlySales7();
+    result := result + [Real]this.MonthlySales8();
+    result := result + [Real]this.MonthlySales9();
+    result := result + [Real]this.MonthlySales10();
+    result := result + [Real]this.MonthlySales11();
+    result := result + [Real]this.MonthlySales12();
     return result;
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByHalfYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByHalfYear.qbl
index a73decb..949e701 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByHalfYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByHalfYear.qbl
@@ -5,7 +5,7 @@
   GlobalOTDTable parent,
   Number yearNo,
   Number halfNo
-) as Real
+) const as Real
 {
   Description: '浜ц兘 - 瀹炴暟澶у紶'
   TextBody:
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByMonth.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByMonth.qbl
index 287c1d6..64a2694 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByMonth.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByMonth.qbl
@@ -2,21 +2,100 @@
 #parent: #root
 StaticMethod GetSaleByMonth (
   Strings productNo,
-  GlobalOTDTable parent,
+  const GlobalOTDTable parent,
   Number yearNo,
   Number monthNo
-) as Real
+) const as Real
 {
   Description: '閿�鍞锛圵锛�'
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
-    field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySales" + [String]monthNo );
-    value := sum( parent, 
-                  Global_MappingAnnualBudgetData, 
-                  item, 
-                  item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
-                  [Real]field.GetString( item ) );
+    value := 0.0;
+    if( monthNo = 1 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales1() );
+    }
+    if( monthNo = 2 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales2() );
+    }
+    if( monthNo = 3 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales3() );
+    }
+    if( monthNo = 4 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales4() );
+    }
+    if( monthNo = 5 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales5() );
+    }
+    if( monthNo = 6 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales6() );
+    }
+    if( monthNo = 7 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales7() );
+    }
+    if( monthNo = 8 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales8() );
+    }
+    if( monthNo = 9 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales9() );
+    }
+    if( monthNo = 10 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales10() );
+    }
+    if( monthNo = 11 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales11() );
+    }
+    if( monthNo = 12 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySales12() );
+    }
     return value;
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleBySeason.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleBySeason.qbl
index e7f39db..2f2c0b8 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleBySeason.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleBySeason.qbl
@@ -5,7 +5,7 @@
   GlobalOTDTable parent,
   Number yearNo,
   Number seasonNo
-) as Real
+) const as Real
 {
   Description: '浜ц兘 - 瀹炴暟澶у紶'
   TextBody:
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByYear.qbl
index 5377001..5084897 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSaleByYear.qbl
@@ -2,9 +2,9 @@
 #parent: #root
 StaticMethod GetSaleByYear (
   Strings productNo,
-  GlobalOTDTable parent,
+  const GlobalOTDTable parent,
   Number yearNo
-) as Real
+) const as Real
 {
   Description: '閿�鍞锛圵锛�'
   TextBody:
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByHalfYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByHalfYear.qbl
index d356e4c..75c58df 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByHalfYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByHalfYear.qbl
@@ -5,7 +5,7 @@
   GlobalOTDTable parent,
   Number yearNo,
   Number halfNo
-) as Real
+) const as Real
 {
   Description: '浜ц兘 - 瀹炴暟澶у紶'
   TextBody:
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByMonth.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByMonth.qbl
index 86986c8..f8ea529 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByMonth.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByMonth.qbl
@@ -5,18 +5,97 @@
   GlobalOTDTable parent,
   Number yearNo,
   Number monthNo
-) as Real
+) const as Real
 {
   Description: '浜ц兘-瀹炴暟澶у紶'
   TextBody:
   [*
     // yypsybs Sep-18-2023 (created)
-    field := Reflection::FindAttribute( "Global_MappingAnnualBudgetData", "MonthlySheetCapacity" + [String]monthNo );
-    value := sum( parent, 
-                  Global_MappingAnnualBudgetData, 
-                  item, 
-                  item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
-                  [Real]field.GetString( item ) );
+    value := 0.0;
+    if( monthNo = 1 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity1() );
+    }
+    if( monthNo = 2 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity2() );
+    }
+    if( monthNo = 3 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity3() );
+    }
+    if( monthNo = 4 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity4() );
+    }
+    if( monthNo = 5 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity5() );
+    }
+    if( monthNo = 6 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity6() );
+    }
+    if( monthNo = 7 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity7() );
+    }
+    if( monthNo = 8 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity8() );
+    }
+    if( monthNo = 9 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity9() );
+    }
+    if( monthNo = 10 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity10() );
+    }
+    if( monthNo = 11 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity11() );
+    }
+    if( monthNo = 12 ) {
+      value := sum( parent, 
+                    Global_MappingAnnualBudgetData, 
+                    item, 
+                    item.YearNo() = [String]yearNo and productNo.Find( item.ProductID() ) > -1,
+                    [Real]item.MonthlySheetCapacity12() );
+    }
     return value;
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetBySeason.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetBySeason.qbl
index 4b9775a..0825f00 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetBySeason.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetBySeason.qbl
@@ -5,7 +5,7 @@
   GlobalOTDTable parent,
   Number yearNo,
   Number seasonNo
-) as Real
+) const as Real
 {
   Description: '浜ц兘 - 瀹炴暟澶у紶'
   TextBody:
diff --git a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByYear.qbl b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByYear.qbl
index a98de35..d09d253 100644
--- a/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByYear.qbl
+++ b/_Main/BL/Type_Global_MappingAnnualBudgetData/StaticMethod_GetSheetByYear.qbl
@@ -4,7 +4,7 @@
   Strings productNo,
   GlobalOTDTable parent,
   Number yearNo
-) as Real
+) const as Real
 {
   Description: '浜ц兘 - 瀹炴暟澶у紶'
   TextBody:
diff --git a/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByMonth.qbl b/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByMonth.qbl
index 8b16514..d4be7f7 100644
--- a/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByMonth.qbl
+++ b/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByMonth.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 StaticMethod GetQuantityByMonth (
   Strings productCodes,
-  GlobalOTDTable parent,
+  const GlobalOTDTable parent,
   Number yearNo,
   Number monthNo
 ) as Real
diff --git a/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByYear.qbl b/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByYear.qbl
index f922dcf..a0df7e4 100644
--- a/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByYear.qbl
+++ b/_Main/BL/Type_Global_MappingForecast/StaticMethod_GetQuantityByYear.qbl
@@ -2,11 +2,10 @@
 #parent: #root
 StaticMethod GetQuantityByYear (
   Strings productCodes,
-  GlobalOTDTable parent,
+  const GlobalOTDTable parent,
   Number yearNo
 ) as Real
 {
-  Description: ''
   TextBody:
   [*
     // yypsybs Sep-19-2023 (created)
diff --git a/_Main/BL/Type_Global_MappingOperation/StaticMethod_GetByProductId.qbl b/_Main/BL/Type_Global_MappingOperation/StaticMethod_GetByProductId.qbl
index 314d139..e11666f 100644
--- a/_Main/BL/Type_Global_MappingOperation/StaticMethod_GetByProductId.qbl
+++ b/_Main/BL/Type_Global_MappingOperation/StaticMethod_GetByProductId.qbl
@@ -1,9 +1,9 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod GetByProductId (
-  GlobalOTDTable otdTable,
+  const GlobalOTDTable otdTable,
   String productId
-) as Global_MappingOperation
+) as const Global_MappingOperation
 {
   TextBody:
   [*
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_GetByProductId.qbl b/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_GetByProductId.qbl
index ef81738..6dcd0ec 100644
--- a/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_GetByProductId.qbl
+++ b/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_GetByProductId.qbl
@@ -1,9 +1,9 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod GetByProductId (
-  GlobalOTDTable parent,
+  const GlobalOTDTable parent,
   String productId
-) as Global_MappingProduct_MP
+) as const Global_MappingProduct_MP
 {
   Description: '鏍规嵁鏂欏彿鏌ヨ褰�'
   TextBody:
diff --git a/_Main/BL/Type_Global_MappingProviderCapacity/StaticMethod_GetByProductId.qbl b/_Main/BL/Type_Global_MappingProviderCapacity/StaticMethod_GetByProductId.qbl
index 9038655..074991b 100644
--- a/_Main/BL/Type_Global_MappingProviderCapacity/StaticMethod_GetByProductId.qbl
+++ b/_Main/BL/Type_Global_MappingProviderCapacity/StaticMethod_GetByProductId.qbl
@@ -1,13 +1,14 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod GetByProductId (
-  GlobalOTDTable parent,
+  const GlobalOTDTable parent,
   String productId
-) as Global_MappingProviderCapacity
+) as const Global_MappingProviderCapacity
 {
   TextBody:
   [*
     // yypsybs Oct-10-2023 (created)
-    return select( parent, Global_MappingProviderCapacity, item, item.ProductID() = productId );
+    value := select( parent, Global_MappingProviderCapacity, item, item.ProductID() = productId )
+    return value;
   *]
 }
diff --git a/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GetByMatCode.qbl b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GetByMatCode.qbl
new file mode 100644
index 0000000..4b01b8e
--- /dev/null
+++ b/_Main/BL/Type_MatAttrSettingAndPlanningStrategy/StaticMethod_GetByMatCode.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetByMatCode (
+  const GlobalOTDSOP parent,
+  String matCode
+) as const MatAttrSettingAndPlanStrategy
+{
+  Description: '鑾峰彇鏃犳硶淇敼鐨�'
+  TextBody:
+  [*
+    // yypsybs Oct-17-2023 (created)
+    value := select( parent, MatAttrSettingAndPlanStrategy, item, true, matCode = item.MatCode() );
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_PRData/Method_DoCall.qbl b/_Main/BL/Type_PRData/Method_DoCall.qbl
index 3e8d9b5..13f4f7c 100644
--- a/_Main/BL/Type_PRData/Method_DoCall.qbl
+++ b/_Main/BL/Type_PRData/Method_DoCall.qbl
@@ -1,7 +1,8 @@
 Quintiq file version 2.0
 #parent: #root
 Method DoCall (
-  GlobalOTDTable globalData,
+  const GlobalOTDTable globalData,
+  GlobalOTDSOP otdSop,
   String callBy
 ) as PRHistoryData
 {
@@ -9,7 +10,7 @@
   TextBody:
   [*
     // yypsybs Sep-11-2023 (created)
-    result := globalData.PRHistoryData( relnew );
+    result := otdSop.PRHistoryData( relnew );
     
     // 鐓ф惉閮ㄥ垎
     result.AuthorizationStatus( this.AuthorizationStatus() );
diff --git a/_Main/BL/Type_PRData/Method_PrintCall.qbl b/_Main/BL/Type_PRData/Method_PrintCall.qbl
index 180f056..33b1ac8 100644
--- a/_Main/BL/Type_PRData/Method_PrintCall.qbl
+++ b/_Main/BL/Type_PRData/Method_PrintCall.qbl
@@ -1,14 +1,15 @@
 Quintiq file version 2.0
 #parent: #root
 Method PrintCall (
-  GlobalOTDTable globalData,
+  const GlobalOTDTable globalData,
+  GlobalOTDSOP otdSop,
   String callBy
 ) as String
 {
   TextBody:
   [*
     // yypsybs Sep-11-2023 (created)
-    result := globalData.PRHistoryData( relnew );
+    result := otdSop.PRHistoryData( relnew );
     
     // 鐓ф惉閮ㄥ垎
     result.AuthorizationStatus( this.AuthorizationStatus() );
diff --git a/_Main/BL/Type_PRData/StaticMethod_DoCall.qbl b/_Main/BL/Type_PRData/StaticMethod_DoCall.qbl
index 6de8c17..63825e9 100644
--- a/_Main/BL/Type_PRData/StaticMethod_DoCall.qbl
+++ b/_Main/BL/Type_PRData/StaticMethod_DoCall.qbl
@@ -1,7 +1,8 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod DoCall (
-  GlobalOTDTable globalData,
+  const GlobalOTDTable globalData,
+  GlobalOTDSOP otdSop,
   PRDatas toCalls,
   String callBy
 )
@@ -13,7 +14,7 @@
     nowNo := 1;
     traverse( toCalls, Elements, toCall, toCall.PRReleaseStatus() = "" ) {
       info ( "DoCall " + [String]nowNo + "/" + [String]toCalls.Size() + " PR" );
-      toCall.DoCall( globalData, callBy );  
+      toCall.DoCall( globalData, otdSop, callBy );  
       nowNo := nowNo + 1;
     }
   *]
diff --git "a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl" "b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
index 8bdc755..4443fed 100644
--- "a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
+++ "b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning\043662.qbl"
@@ -1,7 +1,8 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod FromSupplyPlanning (
-  GlobalOTDTable otdTable,
+  const GlobalOTDTable otdTable,
+  const GlobalOTDSOP otdSop,
   MacroPlan macroPlan,
   ProductInStockingPointInPeriod pispip,
   String userId
@@ -22,7 +23,9 @@
     mappingOperation := Global_MappingOperation::GetByProductId( otdTable, product.ID() );
     // QID15
     mappingProviderCapacity := Global_MappingProviderCapacity::GetByProductId( otdTable, product.ID() );
-    matAttrSetting := null( MatAttrSettingAndPlanStrategy )/*MatAttrSettingAndPlanStrategy::GetExistByMatCode( otdTable, product.ID() )*/;
+    
+    // 鐗╂枡鏍囩灞炴��
+    matAttrSetting := MatAttrSettingAndPlanStrategy::GetByMatCode( otdSop, product.ID() )
     
     // 鏍规嵁pispip
     result.MRPCalverNo( ifexpr( pispip.MRPCalverNo() = "", "鏆傛棤", pispip.MRPCalverNo() ) );
diff --git a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
index dff5567..a25f329 100644
--- a/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
+++ b/_Main/BL/Type_PRData/StaticMethod_FromSupplyPlanning.qbl
@@ -1,7 +1,8 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod FromSupplyPlanning (
-  GlobalOTDTable otdTable,
+  const GlobalOTDTable otdTable,
+  const GlobalOTDSOP otdSop,
   MacroPlan macroPlan,
   String mrpCalverNo,
   String userId
@@ -18,7 +19,7 @@
     if( isnull( oldRecords ) or oldRecords.Size() = 0 ) {
       pispips := ProductInStockingPointInPeriod::GetByMRPCalverNo( macroPlan, mrpCalverNo );
       traverse( pispips, Elements, item, item.NewSupplyQuantity() > 0 ) {
-        PRData::FromSupplyPlanning( otdTable, macroPlan, item, userId );
+        PRData::FromSupplyPlanning( otdTable, otdSop, macroPlan, item, userId );
         nowNo := nowNo + 1;
         if( nowNo mod 1000 = 0 ) {
           info( "SupplyPlanning to prData : " + [String]nowNo );
diff --git a/_Main/BL/Type_PRHistoryData/Method_PrintCall.qbl b/_Main/BL/Type_PRHistoryData/Method_PrintCall.qbl
index 736d231..4446b4d 100644
--- a/_Main/BL/Type_PRHistoryData/Method_PrintCall.qbl
+++ b/_Main/BL/Type_PRHistoryData/Method_PrintCall.qbl
@@ -7,7 +7,7 @@
   TextBody:
   [*
     // yypsybs Sep-20-2023 (created)
-    result := this.GlobalOTDTable().PRHistoryData( relcopy, this );
+    result := this.GlobalOTDSOP().PRHistoryData( relcopy, this );
     
     // 鏇存柊閮ㄥ垎
     result.PRDataReleaseDate( Date::Today() );
diff --git a/_Main/BL/Type_PRHistoryData/Method_Recall.qbl b/_Main/BL/Type_PRHistoryData/Method_Recall.qbl
index 065fdb0..6640bef 100644
--- a/_Main/BL/Type_PRHistoryData/Method_Recall.qbl
+++ b/_Main/BL/Type_PRHistoryData/Method_Recall.qbl
@@ -8,7 +8,7 @@
   TextBody:
   [*
     // yypsybs Sep-11-2023 (created)
-    result := this.GlobalOTDTable().PRHistoryData( relcopy, this );
+    result := this.GlobalOTDSOP().PRHistoryData( relcopy, this );
     
     // 鏇存柊閮ㄥ垎
     result.PRDataReleaseDate( Date::Today() );
diff --git a/_Main/BL/Type_PRHistoryData/StaticMethod_Export.qbl b/_Main/BL/Type_PRHistoryData/StaticMethod_Export.qbl
index 132c301..02ee2f6 100644
--- a/_Main/BL/Type_PRHistoryData/StaticMethod_Export.qbl
+++ b/_Main/BL/Type_PRHistoryData/StaticMethod_Export.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod Export (
-  GlobalOTDTable parent
+  GlobalOTDSOP parent
 ) as String
 {
   TextBody:
diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl
index 962e51e..09d43bc 100644
--- a/_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl
+++ b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl
@@ -5,7 +5,7 @@
   CustomerOrder customerOrder,
   String businessType,
   MacroPlan macroPlan,
-  GlobalOTDTable globalOTDTable
+  const GlobalOTDTable globalOTDTable
 ) as Real
 {
   Description: '璁$畻鍏紡涓嫭鍙峰唴鐨勬暟鎹�'
diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl
index 7b59176..2f7e3cb 100644
--- a/_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl
+++ b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl
@@ -6,7 +6,7 @@
   String businessType,
   MacroPlan macroPlan,
   Real lastScore,
-  GlobalOTDTable globalOTDTable
+  const GlobalOTDTable globalOTDTable
 ) as Real
 {
   TextBody:
diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl
index 78c3611..4555573 100644
--- a/_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl
+++ b/_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl
@@ -4,7 +4,7 @@
   CustomerOrder customerOrder,
   String formula,
   MacroPlan macroPlan,
-  GlobalOTDTable globalOTDTable
+  const GlobalOTDTable globalOTDTable
 ) as Real
 {
   TextBody:
diff --git a/_Main/BL/Type_YuxTest/Attribute_TestBoolean.qbl b/_Main/BL/Type_YuxTest/Attribute_TestBoolean.qbl
deleted file mode 100644
index 7a1e8b7..0000000
--- a/_Main/BL/Type_YuxTest/Attribute_TestBoolean.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TestBoolean
-{
-  #keys: '3[414384.0.915854691][414384.0.915854690][414384.0.915854692]'
-  ValueType: Boolean
-}
diff --git a/_Main/BL/Type_YuxTest/Attribute_TestDate.qbl b/_Main/BL/Type_YuxTest/Attribute_TestDate.qbl
deleted file mode 100644
index f96d5cd..0000000
--- a/_Main/BL/Type_YuxTest/Attribute_TestDate.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TestDate
-{
-  #keys: '3[414384.0.915854704][414384.0.915854703][414384.0.915854705]'
-  ValueType: Date
-}
diff --git a/_Main/BL/Type_YuxTest/Attribute_TestDateTime.qbl b/_Main/BL/Type_YuxTest/Attribute_TestDateTime.qbl
deleted file mode 100644
index 4ebf668..0000000
--- a/_Main/BL/Type_YuxTest/Attribute_TestDateTime.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TestDateTime
-{
-  #keys: '3[414384.0.915854714][414384.0.915854713][414384.0.915854715]'
-  ValueType: DateTime
-}
diff --git a/_Main/BL/Type_YuxTest/Attribute_TestNumber.qbl b/_Main/BL/Type_YuxTest/Attribute_TestNumber.qbl
deleted file mode 100644
index 95e5da0..0000000
--- a/_Main/BL/Type_YuxTest/Attribute_TestNumber.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TestNumber
-{
-  #keys: '3[414384.0.915854681][414384.0.915854680][414384.0.915854682]'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_YuxTest/Attribute_TestReal.qbl b/_Main/BL/Type_YuxTest/Attribute_TestReal.qbl
deleted file mode 100644
index 1852888..0000000
--- a/_Main/BL/Type_YuxTest/Attribute_TestReal.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TestReal
-{
-  #keys: '3[414384.0.915854668][414384.0.915854667][414384.0.915854669]'
-  ValueType: Real
-}
diff --git a/_Main/BL/Type_YuxTest/Attribute_TestString.qbl b/_Main/BL/Type_YuxTest/Attribute_TestString.qbl
deleted file mode 100644
index 5965156..0000000
--- a/_Main/BL/Type_YuxTest/Attribute_TestString.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TestString
-{
-  #keys: '3[414384.0.915854658][414384.0.915854657][414384.0.915854659]'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_YuxTest/StaticMethod_Export.qbl b/_Main/BL/Type_YuxTest/StaticMethod_Export.qbl
deleted file mode 100644
index d6f5aaf..0000000
--- a/_Main/BL/Type_YuxTest/StaticMethod_Export.qbl
+++ /dev/null
@@ -1,85 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod Export (
-  YuxTests toExportList
-) as String
-{
-  TextBody:
-  [*
-    // generate by generate_export_method.py
-    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?>
-    <table>
-      <name>YuxTest</name>
-    ';
-    convDateToString := DateToString::StandardConverter();
-    convDateToString.SetCustomConversion();
-    convDateToString.CustomFormatString( 'yyyy-MM-dd' );
-    convDateTimeToString := DateTimeToString::StandardConverter();
-    convDateTimeToString.SetCustomConversion();
-    convDateTimeToString.CustomFormatString( 'yyyy-MM-dd HH:mm:ss' );
-    info( "export start" );
-    //---------------------------------------------------------------------------------------------
-    columnStr := "<column><name>娴嬭瘯鏁板瓧</name><type>String</type>";
-    traverse( toExportList, Elements, toExportItem ) {
-      testNumber := toExportItem.TestNumber();
-      cellStr := '<cell value="' + [String]testNumber + '"/>';
-      columnStr := columnStr + cellStr;
-    }
-    columnStr := columnStr + "</column>";
-    xmlTemplate := xmlTemplate + columnStr;
-    //---------------------------------------------------------------------------------------------
-    columnStr := "<column><name>娴嬭瘯灏忔暟</name><type>String</type>";
-    traverse( toExportList, Elements, toExportItem ) {
-      testReal := toExportItem.TestReal();
-      cellStr := '<cell value="' + [String]testReal + '"/>';
-      columnStr := columnStr + cellStr;
-    }
-    columnStr := columnStr + "</column>";
-    xmlTemplate := xmlTemplate + columnStr;
-    //---------------------------------------------------------------------------------------------
-    columnStr := "<column><name>娴嬭瘯瀛楃涓�</name><type>String</type>";
-    traverse( toExportList, Elements, toExportItem ) {
-      testString := toExportItem.TestString();
-      cellStr := '<cell value="' + testString + '"/>';
-      columnStr := columnStr + cellStr;
-    }
-    columnStr := columnStr + "</column>";
-    xmlTemplate := xmlTemplate + columnStr;
-    //---------------------------------------------------------------------------------------------
-    columnStr := "<column><name>娴嬭瘯甯冨皵</name><type>String</type>";
-    traverse( toExportList, Elements, toExportItem ) {
-      testBoolean := toExportItem.TestBoolean();
-      cellStr := '<cell value="' + [String]testBoolean + '"/>';
-      columnStr := columnStr + cellStr;
-    }
-    columnStr := columnStr + "</column>";
-    xmlTemplate := xmlTemplate + columnStr;
-    //---------------------------------------------------------------------------------------------
-    columnStr := "<column><name>娴嬭瘯鏃ユ湡</name><type>String</type>";
-    traverse( toExportList, Elements, toExportItem ) {
-      testDate := toExportItem.TestDate();
-      cellStr := '<cell value="' + ifexpr( testDate = Date::MinDate(), "", convDateToString.Convert( testDate )) + '"/>';
-      columnStr := columnStr + cellStr;
-    }
-    columnStr := columnStr + "</column>";
-    xmlTemplate := xmlTemplate + columnStr;
-    //---------------------------------------------------------------------------------------------
-    columnStr := "<column><name>娴嬭瘯鏃ユ湡鏃堕棿</name><type>String</type>";
-    traverse( toExportList, Elements, toExportItem ) {
-      testDateTime := toExportItem.TestDateTime();
-      cellStr := '<cell value="' + ifexpr( testDateTime = DateTime::MinDateTime(), "", convDateTimeToString.Convert( testDateTime )) + '"/>';
-      columnStr := columnStr + cellStr;
-    }
-    columnStr := columnStr + "</column>";
-    xmlTemplate := xmlTemplate + columnStr;
-    //---------------------------------------------------------------------------------------------
-    xmlTemplate := xmlTemplate + "</table>";
-    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
-    XLS::SaveTable( tableHandle, OS::TempPath() + "YuxTest.xlsx" );
-    file := OSFile::Construct();
-    file.Open( OS::TempPath() + "YuxTest.xlsx", "Read", true );
-    data := file.ReadBinary()
-    info( "export end" );
-    return data.AsBase64EncodedString();
-  *]
-}
diff --git "a/_Main/BL/Type_YuxTest/StaticMethod_ExportTest\043887.qbl" "b/_Main/BL/Type_YuxTest/StaticMethod_ExportTest\043887.qbl"
deleted file mode 100644
index f77f7ce..0000000
--- "a/_Main/BL/Type_YuxTest/StaticMethod_ExportTest\043887.qbl"
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod ExportTest (
-  MPSync parent
-) as String
-{
-  TextBody:
-  [*
-    // yypsybs Sep-25-2023 (created)
-    list := selectset( parent, YuxTest, item, true );
-    if( list.Size() = 0 ) {
-      for( i := 0; i < 100; i := i + 1 ) {
-        parent.YuxTest( relnew, 
-                        TestBoolean := ifexpr( Number::Random( 0, 1 ) = 1, true, false ), 
-                        TestDate :=   ifexpr( Number::Random( 0, 1 ) = 1, Date::MinDate(), Date::ActualDate() ), 
-                        TestDateTime :=   ifexpr( Number::Random( 0, 1 ) = 1,DateTime::MinDateTime(), DateTime::ActualTime() ),
-                        TestNumber :=  Number::Random( 100, 200 ),
-                        TestReal := Real::Random( 10.0, 20.0 ), 
-                        TestString := [String]Number::Random( 1000, 2000 ) 
-                        );
-      }
-    }
-    list := selectset( parent, YuxTest, item, true );
-    return YuxTest::Export( list );
-  *]
-}
diff --git a/_Main/BL/Type_YuxTest/_ROOT_Type_YuxTest.qbl b/_Main/BL/Type_YuxTest/_ROOT_Type_YuxTest.qbl
deleted file mode 100644
index 13ff536..0000000
--- a/_Main/BL/Type_YuxTest/_ROOT_Type_YuxTest.qbl
+++ /dev/null
@@ -1,9 +0,0 @@
-Quintiq file version 2.0
-#root
-#parent: #DomainModel
-Type YuxTest
-{
-  #keys: '5[414384.0.915854638][414384.0.915854636][0.0.0][414384.0.915854637][414384.0.915854639]'
-  BaseType: Object
-  StructuredName: 'YuxTests'
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def
index 8411a9a..30d9313 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuCall_OnClick.def
@@ -19,10 +19,10 @@
       productIdsOver14Days := PRData::ProductIdOver14Days( selection );
       if( productIdsOver14Days <> "" ) {
         if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁鐜板湪閲婃斁锛燂紙宸查噴鏀剧殑灏嗚璺宠繃锛�" ) = 0 ) {
-          PRData::DoCall( GlobalOTDTable, selection, ApplicationMacroPlanner.GetUserName() );
+          PRData::DoCall( GlobalOTDTable, GlobalOTDSOP, selection, ApplicationMacroPlanner.GetUserName() );
         }
       } else if( WebMessageBox::Question( "鏄惁鍙戦�侀�変腑鐨勬暟鎹紵锛堝凡閲婃斁鐨勫皢琚烦杩囷級" ) = 0 ) {
-        PRData::DoCall( GlobalOTDTable, selection, ApplicationMacroPlanner.GetUserName() );
+        PRData::DoCall( GlobalOTDTable, GlobalOTDSOP, selection, ApplicationMacroPlanner.GetUserName() );
       }
     *]
     GroupServerCalls: false
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick\043623.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick\043623.def"
index 6e0a043..99a850c 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick\043623.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_ListPRData_844_MenuPrintRequest_OnClick\043623.def"
@@ -12,7 +12,7 @@
   {
     Body:
     [*
-      info( selection.PrintCall( GlobalOTDTable, ApplicationMacroPlanner.GetUserName() ) )
+      info( selection.PrintCall( GlobalOTDTable, GlobalOTDSOP, ApplicationMacroPlanner.GetUserName() ) )
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def
index 7962175..d3a5dda 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonLoad_OnClick.def
@@ -14,7 +14,7 @@
     Body:
     [*
       MacroPlan.PRData( relflush );
-      PRData::FromSupplyPlanning( GlobalOTDTable, MacroPlan, "", ApplicationMacroPlanner.GetUserName() );
+      PRData::FromSupplyPlanning( GlobalOTDTable, GlobalOTDSOP, MacroPlan, "", ApplicationMacroPlanner.GetUserName() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def
index c885be4..a3ef10a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form633/Response_PanelPRDataButton_ButtonSendPR_OnClick.def
@@ -16,10 +16,10 @@
       productIdsOver14Days := PRData::ProductIdOver14Days( DataHolderChecked.Data() );
       if( productIdsOver14Days <> "" ) {
         if( WebMessageBox::Question( "璇ユ壒娆′腑鐨勭墿鏂欏彿" + productIdsOver14Days + "璁㈠崟搴旇鍦�2鍛ㄥ悗閲婃斁锛岃纭鏄惁鐜板湪閲婃斁锛燂紙宸查噴鏀剧殑灏嗚璺宠繃锛�" ) = 0 ) {
-          PRData::DoCall( GlobalOTDTable, DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+          PRData::DoCall( GlobalOTDTable, GlobalOTDSOP, DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
         }
       } else if( WebMessageBox::Question( "鏄惁鍙戦�侀�変腑鐨勬暟鎹紵锛堝凡閲婃斁鐨勫皢琚烦杩囷級" ) = 0 ) {
-        PRData::DoCall( GlobalOTDTable, DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
+        PRData::DoCall( GlobalOTDTable, GlobalOTDSOP, DataHolderChecked.Data(), ApplicationMacroPlanner.GetUserName() );
       }
     *]
     GroupServerCalls: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
index a0f1d91..4af954a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -38,6 +38,6 @@
   ]
   Properties:
   [
-    Taborder: 3
+    Taborder: 2
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportTest_OnClick.def
deleted file mode 100644
index 990eb11..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportTest_OnClick.def
+++ /dev/null
@@ -1,21 +0,0 @@
-Quintiq file version 2.0
-#parent: ButtonExportTest
-Response OnClick () id:Response_FormCapacityAndSaleBudge_ButtonExportTest_OnClick
-{
-  #keys: '[414384.0.914711825]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  Precondition:
-  [*
-    return not isnull( MPSync );
-  *]
-  QuillAction
-  {
-    Body:
-    [*
-      base64 := YuxTest::ExportTest( MPSync );
-      Application.Download( "result.xlsx", base64 );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonGenerateTestData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonGenerateTestData_OnClick.def
index e7dcebd..7b8522f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonGenerateTestData_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonGenerateTestData_OnClick.def
@@ -15,10 +15,10 @@
     [*
       GlobalOTDTable.InitTestDataByYear( MacroPlan, DataHolderCapacityAndSaleBudgeFilterYear.Data() );
       Global_MappingAnnualBudgetData::SetOrgCodeFromForecast( GlobalOTDTable );
-      GlobalOTDTable.RefreshCapacityAndSaleBudgeFilter( true );
-      CapacityAndSaleBudgeFilterItem::Initial( GlobalOTDTable );
-      CapacityAndSaleBudgeFilterYear::Initial( GlobalOTDTable );
-      CapacityAndSaleBudgeFilterMonth::Initial( GlobalOTDTable );
+      GlobalOTDSOP::RefreshCapacityAndSaleBudgeFilter( true, GlobalOTDTable, GlobalOTDSOP );
+      CapacityAndSaleBudgeFilterItem::Initial( GlobalOTDSOP );
+      CapacityAndSaleBudgeFilterYear::Initial( GlobalOTDSOP );
+      CapacityAndSaleBudgeFilterMonth::Initial( GlobalOTDSOP );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
index 995281a..7c799db 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -19,18 +19,6 @@
         Taborder: 1
       ]
     }
-    Component ButtonExportTest
-    {
-      #keys: '[414384.0.914711826]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Image: 'EXPORT1'
-        Label: '瀵煎嚭娴嬭瘯'
-        Taborder: 2
-        Visible: false
-      ]
-    }
     Component ButtonGenerateTestData
     {
       #keys: '[414384.0.971540693]'
@@ -38,7 +26,7 @@
       Properties:
       [
         Image: 'IMPORT1'
-        Label: '鏍规嵁绛涢�夋湀浠界敓鎴愭祴璇曟暟鎹�'
+        Label: '鏍规嵁绛涢�夊勾浠界敓鎴愭祴璇曟暟鎹�'
         Taborder: 0
       ]
     }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
index 71754e3..8c71c5c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
@@ -17,8 +17,8 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'GlobalOTDTable'
-            Source: 'GlobalOTDTable'
+            DataType: 'GlobalOTDSOP'
+            Source: 'GlobalOTDSOP'
             Taborder: 0
             Transformation: 'CapacityAndSaleBudgeChartElement'
           ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
index 692a6ad..cbd7ff2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
@@ -12,15 +12,15 @@
     [*
       //CapacityAndSaleBudgeChartElement::TestData( GlobalOTDTable );
       
-      GlobalOTDTable.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(), 
-                                                DropDownSaleOrCapacity.Text(),
-                                                DropDownTimeGroup.Text(),
-                                                DropDownByBusinessTypeOrByOrgCode.Text(),
-                                                DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(),
-                                                DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data(),
-                                                DataHolderCapacityAndSaleBudgeFilterYear.Data(),
-                                                DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
-                                                GlobalOTDTable );
+      GlobalOTDSOP.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(), 
+                                              DropDownSaleOrCapacity.Text(),
+                                              DropDownTimeGroup.Text(),
+                                              DropDownByBusinessTypeOrByOrgCode.Text(),
+                                              DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(),
+                                              DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data(),
+                                              DataHolderCapacityAndSaleBudgeFilterYear.Data(),
+                                              DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
+                                              GlobalOTDTable );
     *]
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
index 5dd68bd..d59a144 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -17,8 +17,8 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'GlobalOTDTable'
-            Source: 'GlobalOTDTable'
+            DataType: 'GlobalOTDSOP'
+            Source: 'GlobalOTDSOP'
             Taborder: 0
             Transformation: 'CapacityAndSaleBudgeCompareItemColumn.CapacityAndSaleBudgeCompareItemCell'
           ]
@@ -44,8 +44,8 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'GlobalOTDTable'
-            Source: 'GlobalOTDTable'
+            DataType: 'GlobalOTDSOP'
+            Source: 'GlobalOTDSOP'
             Taborder: 0
             Transformation: 'CapacityAndSaleBudgeCompareItemRow'
           ]
@@ -70,8 +70,8 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'GlobalOTDTable'
-            Source: 'GlobalOTDTable'
+            DataType: 'GlobalOTDSOP'
+            Source: 'GlobalOTDSOP'
             Taborder: 0
             Transformation: 'CapacityAndSaleBudgeCompareItemColumn'
           ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
index 872c802..7f559d2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
@@ -14,11 +14,11 @@
       info( DataHolderCapacityAndSaleBudgeFilterItem.Data().Size() );
       info( DataHolderCapacityAndSaleBudgeFilterYear.Data().Size() );
       info( DataHolderCapacityAndSaleBudgeFilterMonth.Data().Size() );
-      GlobalOTDTable.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(), 
-                                                  DataHolderCapacityAndSaleBudgeFilterItem.Data(), 
-                                                  DataHolderCapacityAndSaleBudgeFilterYear.Data(), 
-                                                  DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
-                                                  GlobalOTDTable );
+      GlobalOTDSOP.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(), 
+                                                DataHolderCapacityAndSaleBudgeFilterItem.Data(), 
+                                                DataHolderCapacityAndSaleBudgeFilterYear.Data(), 
+                                                DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
+                                                GlobalOTDTable );
     *]
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
index a01173d..f98be27 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
@@ -13,8 +13,7 @@
   {
     Body:
     [*
-      tableBinaryData := GlobalOTDTable.CapacityAndSaleBudgeCompareExport().AsBinaryData();
-      Application.Download( "骞村害浜ч攢棰勭畻瀵规瘮.xlsx", tableBinaryData );
+      Application.Download( "骞村害浜ч攢棰勭畻瀵规瘮.xlsx", GlobalOTDSOP.CapacityAndSaleBudgeCompareExport().AsBinaryData() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def
index cbe6b9e..e04971e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def
@@ -11,8 +11,8 @@
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDTable'
-        Source: 'GlobalOTDTable'
+        DataType: 'GlobalOTDSOP'
+        Source: 'GlobalOTDSOP'
         Taborder: 0
         Transformation: 'CapacityAndSaleBudgeFilterBusinessType'
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def
index c240052..a9b41c6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def
@@ -10,7 +10,7 @@
   {
     Body:
     [*
-      GlobalOTDTable.RefreshCapacityAndSaleBudgeFilter( true );
+      GlobalOTDSOP::RefreshCapacityAndSaleBudgeFilter( true, GlobalOTDTable, GlobalOTDSOP );
     *]
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
index ea63655..0ca80fc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
@@ -11,8 +11,8 @@
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDTable'
-        Source: 'GlobalOTDTable'
+        DataType: 'GlobalOTDSOP'
+        Source: 'GlobalOTDSOP'
         Taborder: 0
         Transformation: 'CapacityAndSaleBudgeFilterItem'
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
index 577ebb4..e56959a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
@@ -11,8 +11,8 @@
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDTable'
-        Source: 'GlobalOTDTable'
+        DataType: 'GlobalOTDSOP'
+        Source: 'GlobalOTDSOP'
         Taborder: 0
         Transformation: 'CapacityAndSaleBudgeFilterMonth'
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def
index ae0a48a..bc46349 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def
@@ -11,8 +11,8 @@
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDTable'
-        Source: 'GlobalOTDTable'
+        DataType: 'GlobalOTDSOP'
+        Source: 'GlobalOTDSOP'
         Taborder: 0
         Transformation: 'CapacityAndSaleBudgeFilterPlaceOfProductionOfArray'
       ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC\043663.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC\043663.def"
index 7b8154d..4ea2f47 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC\043663.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC\043663.def"
@@ -10,7 +10,7 @@
   {
     Body:
     [*
-      GlobalOTDTable.RefreshCapacityAndSaleBudgeFilter( true );
+      GlobalOTDSOP::RefreshCapacityAndSaleBudgeFilter( true, GlobalOTDTable, GlobalOTDSOP );
     *]
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
index c89499c..3bb5087 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
@@ -11,8 +11,8 @@
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDTable'
-        Source: 'GlobalOTDTable'
+        DataType: 'GlobalOTDSOP'
+        Source: 'GlobalOTDSOP'
         Taborder: 0
         Transformation: 'CapacityAndSaleBudgeFilterYear'
       ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
index fe57fb1..a0e1f6e 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Component_ListPRHistoryData\043844.def"
@@ -11,8 +11,8 @@
       BaseType: 'WebDataExtractor'
       Properties:
       [
-        DataType: 'GlobalOTDTable'
-        Source: 'GlobalOTDTable'
+        DataType: 'GlobalOTDSOP'
+        Source: 'GlobalOTDSOP'
         Taborder: 0
         Transformation: 'PRHistoryData'
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def
index e83383e..3b3157a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPRHistoryData/Response_PanelPRHistoryButton_ButtonExportPRHistory_OnClick.def
@@ -13,7 +13,7 @@
   {
     Body:
     [*
-      Application.Download( "PRHistoryData.xlsx", PRHistoryData::Export( GlobalOTDTable ) );
+      Application.Download( "PRHistoryData.xlsx", PRHistoryData::Export( GlobalOTDSOP ) );
     *]
     GroupServerCalls: false
   }

--
Gitblit v1.9.3