From adbdf611b2caed7ff62031e0c606b6c1724af1f1 Mon Sep 17 00:00:00 2001
From: yypsybs <yypsybs@foxmail.com>
Date: 星期一, 18 九月 2023 17:01:25 +0800
Subject: [PATCH] 年度产销预算暂存

---
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl                                                                           |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl                                                                  |   18 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl                                                                                     |    7 
 _Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl                                                                               |   20 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl                                                                              |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl                                                                                           |    7 
 _Main/BL/Type_SaleBudget/Attribute_Specs.qbl                                                                                                        |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def                         |   43 +
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def                           |   42 +
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl                                                                                |    8 
 _Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl                                                                           |   23 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl                                            |    9 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl                                                  |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def                                         |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl                                                                           |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl                                                                                       |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl                                                                                |    8 
 _Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl                                                                           |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def                           |   43 +
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def              |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl                                                                                 |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl                                                                                   |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl                                                                     |    8 
 _Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl                                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl                                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def                                                               |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl                                                                              |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl                                                                             |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl                                                                        |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl                                                                                  |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def                   |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def                |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl                                                                              |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl                                                           |   17 
 _var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw                                                                           |  205 +++++
 _Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl                                                        |    9 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl                                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl                                                                         |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl                                                                                   |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def                           |   25 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl                                                                             |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl                                                                              |   10 
 _Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl                                                                                   |    7 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl                                                                                        |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl                                                                                            |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def                                                    |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl                                                                                       |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl                                                                              |   19 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl                                                                              |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl                                                                                        |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl                                                |    9 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl                                                                            |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl                                                                                        |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl                                                                           |    8 
 _Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl                                                                                    |    7 
 _Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl                                                                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def              |   10 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def                                    |   10 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl                                                                   |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl                                                          |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl                                                                                |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl                                                                              |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl                                                                               |   14 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl                                                                                       |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl                                    |    9 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl                                                                              |    8 
 _Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl                                                                                                          |    6 
 _Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl                                                                                            |   24 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI#81.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl                                                                               |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl                                                 |   23 
 _Main/BL/Relations/Relation_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def                                                     |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def                |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def     |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl                                                                           |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl                                                                      |   17 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def       |   16 
 _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl                                                                                |  185 +++++
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def                     |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def                     |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl                                                                                         |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl                                                                             |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl                                                                            |    8 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl                                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def                                           |   30 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl                                                               |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def            |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def                                               |   42 +
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl                                                 |   23 
 _Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl                                                 |   23 
 _Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl                                                                              |    7 
 _Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl                                                                                                |   48 +
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged#316.def   |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def       |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def                        |   21 
 _Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl                                                                                                  |   10 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged#608.def |   18 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl                                                                                    |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl                                                                              |   13 
 _Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def                                  |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged#364.def   |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def                                                     |   16 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl                                                                              |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl                                                                                 |    8 
 _Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl                                                                            |    8 
 _Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl                                                          |   10 
 133 files changed, 2,072 insertions(+), 0 deletions(-)

diff --git "a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI\04381.qbl" "b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI\04381.qbl"
new file mode 100644
index 0000000..ae35b49
--- /dev/null
+++ "b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareI\04381.qbl"
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItemColumn_CapacityAndSaleBudgeCompareItemColumn_CapacityAndSaleBudgeCompareItemCell
+{
+  #keys: '1[414384.0.816630984]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide CapacityAndSaleBudgeCompareItemColumn
+  {
+    #keys: '3[414384.0.816630986][414384.0.816630985][414384.0.816630987]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemCell
+  {
+    #keys: '3[414384.0.816630989][414384.0.816630988][414384.0.816630990]'
+    Cardinality: '1toN'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl
new file mode 100644
index 0000000..11c02e3
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItem.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemCell_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemCell
+{
+  #keys: '1[414384.0.816631000]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide CapacityAndSaleBudgeCompareItemRow
+  {
+    #keys: '3[414384.0.816631002][414384.0.816631001][414384.0.816631003]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemCell
+  {
+    #keys: '3[414384.0.816631005][414384.0.816631004][414384.0.816631006]'
+    Cardinality: '1toN'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
new file mode 100644
index 0000000..a2327e4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeCompareItemColumn
+{
+  #keys: '1[414384.0.816631032]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631034][414384.0.816631033][414384.0.816631035]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemColumn
+  {
+    #keys: '3[414384.0.816631037][414384.0.816631036][414384.0.816631038]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl
new file mode 100644
index 0000000..01ffa5f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemRowProduct_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemRow_CapacityAndSaleBudgeCompareItemRowProduct
+{
+  #keys: '1[414384.0.819696587]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide CapacityAndSaleBudgeCompareItemRow
+  {
+    #keys: '3[414384.0.819696589][414384.0.819696588][414384.0.819696590]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRowProduct
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRowProduct
+  {
+    #keys: '3[414384.0.819696592][414384.0.819696591][414384.0.819696593]'
+    Cardinality: '1toN'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl
new file mode 100644
index 0000000..59829f6
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeCompareItemRow
+{
+  #keys: '1[414384.0.816631016]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631018][414384.0.816631017][414384.0.816631019]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRow
+  {
+    #keys: '3[414384.0.816631021][414384.0.816631020][414384.0.816631022]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl
new file mode 100644
index 0000000..041c7c2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeFilterItem
+{
+  #keys: '1[414384.0.816665103]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816665105][414384.0.816665104][414384.0.816665106]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterItem
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterItem
+  {
+    #keys: '3[414384.0.816665108][414384.0.816665107][414384.0.816665109]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl
new file mode 100644
index 0000000..cc133c7
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeFilterMonth
+{
+  #keys: '1[414384.0.816631074]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631076][414384.0.816631075][414384.0.816631077]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterMonth
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterMonth
+  {
+    #keys: '3[414384.0.816631079][414384.0.816631078][414384.0.816631080]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl
new file mode 100644
index 0000000..5fb08a4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_CapacityAndSaleBudgeFilterYear
+{
+  #keys: '1[414384.0.816631057]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ScenarioManager
+  {
+    #keys: '3[414384.0.816631059][414384.0.816631058][414384.0.816631060]'
+    Cardinality: '0to1'
+    ObjectDefinition: CapacityAndSaleBudgeFilterYear
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide CapacityAndSaleBudgeFilterYear
+  {
+    #keys: '3[414384.0.816631062][414384.0.816631061][414384.0.816631063]'
+    Cardinality: '1toN'
+    ObjectDefinition: ScenarioManager
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl b/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl
new file mode 100644
index 0000000..f900aee
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAndSaleBudge_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleB.qbl
@@ -0,0 +1,23 @@
+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_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl b/_Main/BL/Relations/Relation_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl
new file mode 100644
index 0000000..37b5f68
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBud.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MappingCapacityAndSaleBudge_MPSync_MPSync_MappingCapacityAndSaleBudge
+{
+  #keys: '1[414384.0.803580112]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MPSync
+  {
+    #keys: '3[414384.0.803580114][414384.0.803580113][414384.0.803580115]'
+    Cardinality: '0to1'
+    ObjectDefinition: MappingCapacityAndSaleBudge
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide MappingCapacityAndSaleBudge
+  {
+    #keys: '3[414384.0.803580117][414384.0.803580116][414384.0.803580118]'
+    Cardinality: '1toN'
+    ObjectDefinition: MPSync
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl b/_Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl
new file mode 100644
index 0000000..88e07e5
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SaleBudgetItem_SaleBudget_SaleBudget_SaleBudgetItem
+{
+  #keys: '1[414384.0.803544596]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide SaleBudget
+  {
+    #keys: '3[414384.0.803544598][414384.0.803544597][414384.0.803544599]'
+    Cardinality: '0to1'
+    ObjectDefinition: SaleBudgetItem
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SaleBudgetItem
+  {
+    #keys: '3[414384.0.803544601][414384.0.803544600][414384.0.803544602]'
+    Cardinality: '1toN'
+    ObjectDefinition: SaleBudget
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl b/_Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl
new file mode 100644
index 0000000..f9e8261
--- /dev/null
+++ b/_Main/BL/Relations/Relation_SaleBudget_MacroPlan_MacroPlan_SaleBudget.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation SaleBudget_MacroPlan_MacroPlan_SaleBudget
+{
+  #keys: '1[414384.0.803544612]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414384.0.803544614][414384.0.803544613][414384.0.803544615]'
+    Cardinality: '0to1'
+    ObjectDefinition: SaleBudget
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide SaleBudget
+  {
+    #keys: '3[414384.0.803544617][414384.0.803544616][414384.0.803544618]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..63bb032
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..119a291
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityEquivalent.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..c8e3695
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth1.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..62d88ee
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth10.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..ea88f28
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth11.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..6e299ff
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth12.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..650954b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth2.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..be704be
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth3.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..2f36f6d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth4.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..1839d8f
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth5.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..a6f3dd4
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth6.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..44b13ba
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth7.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..2f1152c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth8.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..5eb6d08
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSInMonth9.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..c299a64
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInPCSTotal.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..92e048b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth1.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..b3cf0ce
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth10.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..2c3252d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth11.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..fbfb32a
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth12.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..b4caec2
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth2.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..c2b8d77
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth3.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..40591a6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth4.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..2910ff3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth5.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..350f3f0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth6.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..efe11d8
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth7.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..2deff94
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth8.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..1da1c48
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetInMonth9.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..fd6f847
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_CapacityInSheetTotal.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..f3217fc
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Deleted.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..ed65a10
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_DisplayTechnology.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..cfd9d06
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_LineAndSpec.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..67da312
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfCut.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..c7fcdef
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_NumberOfMask.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..38f5383
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_OrgCode.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..eb76c2b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfArray.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..077836e
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_PlaceOfProductionOfEvaporation.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..65504ec
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ProductCode.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..24dc3a6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_Resolution.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..8095702
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth1.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..061f898
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth10.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..e5b0339
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth11.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..1891382
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth12.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..9affb8b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth2.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..73de89c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth3.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..2c0a7b3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth4.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..cd253f3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth5.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..47c19c1
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth6.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..b10a2cb
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth7.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..12afc72
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth8.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..7359c75
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountInMonth9.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..c01058f
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_SaleAmountTotal.qbl
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 0000000..7a1c0ff
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/Attribute_ShippingForm.qbl
@@ -0,0 +1,8 @@
+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/_ROOT_Type_CapacityAndSaleBudge.qbl b/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
new file mode 100644
index 0000000..19c5d54
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudge/_ROOT_Type_CapacityAndSaleBudge.qbl
@@ -0,0 +1,10 @@
+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_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl
new file mode 100644
index 0000000..a94ab5d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/Attribute_cellContent.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CellContent
+{
+  #keys: '3[414384.0.819696550][414384.0.819696549][414384.0.819696551]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl
new file mode 100644
index 0000000..adcfec6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemCell/_ROOT_Type_CapacityAndSaleBudgeCompareItemCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemCell
+{
+  #keys: '5[414384.0.816630948][414384.0.816630946][0.0.0][414384.0.816630947][414384.0.816630949]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemCells'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl
new file mode 100644
index 0000000..4a7e7fe
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/Attribute_ColumnName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnName
+{
+  #keys: '3[414384.0.816630975][414384.0.816630974][414384.0.816630976]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..1e42b21
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  ScenarioManager manager,
+  String columnName
+) as CapacityAndSaleBudgeCompareItemColumn
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( manager, CapacityAndSaleBudgeCompareItemColumn, item, item.ColumnName() = columnName );
+    if( isnull( value ) ) {
+      value := manager.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnName );  
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl
new file mode 100644
index 0000000..5a16ed0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/_ROOT_Type_CapacityAndSaleBudgeCompareItemColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemColumn
+{
+  #keys: '5[414384.0.816630971][414384.0.816630969][0.0.0][414384.0.816630970][414384.0.816630972]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemColumns'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..cd7c424
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_BusinessType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.819696515][414384.0.819696514][414384.0.819696516]'
+  Description: '浜嬩笟閮�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl
new file mode 100644
index 0000000..3329fb9
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_OrgCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrgCode
+{
+  #keys: '3[414384.0.822962978][414384.0.822962977][414384.0.822962979]'
+  Description: '缁勭粐缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl
new file mode 100644
index 0000000..296ffa6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/Attribute_RowName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowName
+{
+  #keys: '3[414384.0.816630960][414384.0.816630959][414384.0.816630961]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..8d6c215
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  ScenarioManager scenarioManager,
+  String businessType,
+  String orgCode
+) as CapacityAndSaleBudgeCompareItemRow
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( scenarioManager, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.OrgCode() = orgCode );
+    if( isnull( value ) ) {
+      value := scenarioManager.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, OrgCode := orgCode );  
+    } 
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl
new file mode 100644
index 0000000..b73e2b9
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/_ROOT_Type_CapacityAndSaleBudgeCompareItemRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemRow
+{
+  #keys: '5[414384.0.816630956][414384.0.816630954][0.0.0][414384.0.816630955][414384.0.816630957]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemRows'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..9392fdc
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/Attribute_ProductCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductCode
+{
+  #keys: '3[414384.0.819696604][414384.0.819696603][414384.0.819696605]'
+  Description: '浜у搧缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..aae08c5
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  CapacityAndSaleBudgeCompareItemRow parent,
+  String productCode
+) as CapacityAndSaleBudgeCompareItemRowProduct
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( parent, CapacityAndSaleBudgeCompareItemRowProduct, item, item.ProductCode() = productCode );
+    if( isnull( value ) ) {
+      parent.CapacityAndSaleBudgeCompareItemRowProduct( relnew, ProductCode := productCode );
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl
new file mode 100644
index 0000000..e8ad3fa
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeCompareItemRowProduct/_ROOT_Type_CapacityAndSaleBudgeCompareItemRowProduct.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeCompareItemRowProduct
+{
+  #keys: '5[414384.0.819696584][414384.0.819696582][0.0.0][414384.0.819696583][414384.0.819696585]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeCompareItemRowProducts'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl
new file mode 100644
index 0000000..1487ed7
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/Attribute_ItemName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ItemName
+{
+  #keys: '3[414384.0.810464940][414384.0.810464939][414384.0.810464941]'
+  Description: '瀵规瘮椤瑰悕绉�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl
new file mode 100644
index 0000000..7d9a8aa
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Contains.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Contains (
+  CapacityAndSaleBudgeFilterItems list,
+  String item
+) as Boolean
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    return not isnull( select( list, Elements, one, one.ItemName() = item ) );
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
new file mode 100644
index 0000000..02b6d70
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateIfNotExist (
+  ScenarioManager parent,
+  String itemName
+)
+{
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    old := select( parent, CapacityAndSaleBudgeFilterItem, item, item.ItemName() = itemName );
+    if( isnull( old ) ) {
+      parent.CapacityAndSaleBudgeFilterItem( relnew, 
+                                             ItemName := itemName );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
new file mode 100644
index 0000000..1e15a86
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initial (
+  ScenarioManager parent
+)
+{
+  Description: '鍒濆鍖栧姣旈」'
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    CapacityAndSaleBudgeFilterItem::CreateIfNotExist( parent, "闈㈡澘鍒嗛厤閲�" );
+    CapacityAndSaleBudgeFilterItem::CreateIfNotExist( parent, "閿�鍞" );
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl
new file mode 100644
index 0000000..837786c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterItem/_ROOT_Type_CapacityAndSaleBudgeFilterItem.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeFilterItem
+{
+  #keys: '5[414384.0.810500195][414384.0.810500193][0.0.0][414384.0.810500194][414384.0.810500196]'
+  BaseType: Object
+  Description: '瀵规瘮椤�'
+  StructuredName: 'CapacityAndSaleBudgeFilterItems'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl
new file mode 100644
index 0000000..cfe9222
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/Attribute_MonthNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MonthNo
+{
+  #keys: '3[414384.0.810464902][414384.0.810464901][414384.0.810464903]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
new file mode 100644
index 0000000..a977b0a
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initial (
+  ScenarioManager parent
+)
+{
+  Description: '鍒濆鍖栨湀浠�'
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    existList := selectuniquevalues( parent, CapacityAndSaleBudgeFilterMonth, item, item.MonthNo() );
+    for( i := 1; i <= 12; i++ ) {
+      if( existList.Find( i ) = -1 ) {
+        parent.CapacityAndSaleBudgeFilterMonth( relnew, 
+                                                MonthNo := i );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl
new file mode 100644
index 0000000..697862e
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/_ROOT_Type_CapacityAndSaleBudgeFilterMonth.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeFilterMonth
+{
+  #keys: '5[414384.0.810500205][414384.0.810500203][0.0.0][414384.0.810500204][414384.0.810500206]'
+  BaseType: Object
+  StructuredName: 'CapacityAndSaleBudgeFilterMonths'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl
new file mode 100644
index 0000000..ee59dbf
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/Attribute_yearNo.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute YearNo
+{
+  #keys: '3[414384.0.810464920][414384.0.810464919][414384.0.810464921]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
new file mode 100644
index 0000000..c0ddc68
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Initial (
+  ScenarioManager parent
+)
+{
+  Description: '鍒濆鍖栧勾浠�'
+  TextBody:
+  [*
+    // yypsybs Sep-15-2023 (created)
+    existList := selectuniquevalues( parent, CapacityAndSaleBudgeFilterYear, item, item.YearNo() );
+    nowYear := Date::Today().Year();
+    for( i := nowYear; i <= nowYear + 10; i++ ) {
+      if( existList.Find( i ) = -1 ) {
+        parent.CapacityAndSaleBudgeFilterYear( relnew, 
+                                               YearNo := i );
+      }  
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl
new file mode 100644
index 0000000..2d3bc34
--- /dev/null
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/_ROOT_Type_CapacityAndSaleBudgeFilterYear.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAndSaleBudgeFilterYear
+{
+  #keys: '5[414384.0.810500200][414384.0.810500198][0.0.0][414384.0.810500199][414384.0.810500201]'
+  BaseType: Object
+  Description: '瀵规瘮骞翠唤'
+  StructuredName: 'CapacityAndSaleBudgeFilterYears'
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl b/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
index 6f10cf9..4c169d3 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_InitTestData.qbl
@@ -7,6 +7,7 @@
     //this.MatAttrSettingAndPlanStrategy( relflush );
     
     // yypsybs Sep-8-2023 (created)
+    info( "CapacityAndSaleBudge::InitTestData" )
     mat1 := MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 1, "鎵嬫満浜嬩笟閮�", "MAT_1", "MAT_1", "TYPE_1", 233.0, "閫氱敤", "闀垮懆鏈�" );
     MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat1, "PROD_1", 666.0, "PROD_1_DESC" );
     MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat1, "PROD_2", 777.0, "PROD_2_DESC" );
@@ -15,5 +16,52 @@
     MatAttrSettingAndPlanStrategyDetail::CreateIfNotExist( mat2, "PROD_2", 1777.0, "PROD_2_DESC" );
     MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 3, "鎵嬫満浜嬩笟閮�", "MAT_3", "MAT_3", "TYPE_1", 233.0, "閫氱敤", "鐭懆鏈�" );
     MatAttrSettingAndPlanStrategy::CreateIfNotExist( this, 4, "鎵嬫満浜嬩笟閮�", "MAT_4", "MAT_4", "TYPE_2", 233.0, "涓撶敤", "鐭懆鏈�" );
+    
+    
+    // yypsybs Sep-15-2023 (created)
+    info( "CapacityAndSaleBudge::InitTestData" )
+    this.CapacityAndSaleBudge( relflush );
+    for( i := 1; i < 100; i := i + 1 ) {
+      this.CapacityAndSaleBudge( relnew, 
+                                 PlaceOfProductionOfArray := "闈㈡澘鍩哄湴" + [String]Number::Random( 1, 10 ), 
+                                 OrgCode := "浜嬩笟閮�" + [String]Number::Random( 1, 10 ), 
+                                 CapacityInPCSInMonth1 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth2 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth3 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth4 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth5 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth6 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth7 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth8 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth9 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth10 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth11 := Number::Random( 1, 10000 ),  
+                                 CapacityInPCSInMonth12 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth1 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth2 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth3 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth4 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth5 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth6 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth7 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth8 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth9 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth10 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth11 := Number::Random( 1, 10000 ),  
+                                 CapacityInSheetInMonth12 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth1 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth2 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth3 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth4 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth5 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth6 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth7 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth8 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth9 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth10 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth11 := Number::Random( 1, 10000 ),
+                                 SaleAmountInMonth12 := Number::Random( 1, 10000 ) 
+                               );
+    }
   *]
 }
diff --git a/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl b/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl
new file mode 100644
index 0000000..2e63828
--- /dev/null
+++ b/_Main/BL/Type_MPSync/_ROOT_Type_MPSync.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MPSync #extension
+{
+}
diff --git a/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl b/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl
new file mode 100644
index 0000000..2c92dc7
--- /dev/null
+++ b/_Main/BL/Type_MappingBOM/StaticMethod_CreateTestData.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateTestData (
+  MacroPlan parent,
+  String businessType,
+  String orgCode
+) as MappingBOM
+{
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    value := select( parent, MappingBOM, bom, bom.BusinessType() = businessType and bom.OrganCode() = orgCode );
+    if( isnull( value ) ) {
+      value := parent.MappingBOM( relnew, 
+                                  BusinessType := businessType,
+                                  OrganCode := orgCode,
+                                  ProcessSection := "", 
+                                  ProductCode := "", 
+                                  ComponentCode := "", 
+                                  AlternativeMaterialCode := "" );
+    }
+    return value;
+  *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..ebf044f
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_BusinessType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+  #keys: '3[414384.0.803580072][414384.0.803580071][414384.0.803580073]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl
new file mode 100644
index 0000000..acb1511
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInPCSInJan.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInPCSInJan
+{
+  #keys: '3[414384.0.803580132][414384.0.803580131][414384.0.803580133]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl
new file mode 100644
index 0000000..b063ea3
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_CapacityInSheetInJan.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CapacityInSheetInJan
+{
+  #keys: '3[414384.0.803580142][414384.0.803580141][414384.0.803580143]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl
new file mode 100644
index 0000000..e4a3e37
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_LineAndSpecification.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineAndSpecification
+{
+  #keys: '3[414384.0.803580092][414384.0.803580091][414384.0.803580093]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl
new file mode 100644
index 0000000..7ef3454
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_ProductCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductCode
+{
+  #keys: '3[414384.0.803580103][414384.0.803580102][414384.0.803580104]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl b/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl
new file mode 100644
index 0000000..97fa1b8
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/Attribute_SalesAmountInWInJan.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesAmountInWInJan
+{
+  #keys: '3[414384.0.803580152][414384.0.803580151][414384.0.803580153]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl b/_Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl
new file mode 100644
index 0000000..bdacc1f
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/_ROOT_Type_MappingCapacityAndSaleBudge.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MappingCapacityAndSaleBudge
+{
+  #keys: '5[414384.0.803580058][414384.0.803580056][0.0.0][414384.0.803580057][414384.0.803580059]'
+  BaseType: Object
+  Description: '骞村害浜ч攢棰勭畻鏁版嵁'
+  StructuredName: 'MappingCapacityAndSaleBudges'
+}
diff --git a/_Main/BL/Type_SaleBudget/Attribute_Specs.qbl b/_Main/BL/Type_SaleBudget/Attribute_Specs.qbl
new file mode 100644
index 0000000..d5c7a95
--- /dev/null
+++ b/_Main/BL/Type_SaleBudget/Attribute_Specs.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Specs
+{
+  #keys: '3[414384.0.803580062][414384.0.803580061][414384.0.803580063]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl b/_Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl
new file mode 100644
index 0000000..4ffd0db
--- /dev/null
+++ b/_Main/BL/Type_SaleBudget/_ROOT_Type_SaleBudget.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SaleBudget
+{
+  #keys: '5[414384.0.803544585][414384.0.803544583][0.0.0][414384.0.803544584][414384.0.803544586]'
+  BaseType: Object
+  Description: '閿�鍞绠�'
+  StructuredName: 'SaleBudgets'
+}
diff --git a/_Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl b/_Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl
new file mode 100644
index 0000000..e9287e9
--- /dev/null
+++ b/_Main/BL/Type_SaleBudgetItem/_ROOT_Type_SaleBudgetItem.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type SaleBudgetItem
+{
+  #keys: '5[414384.0.803544590][414384.0.803544588][0.0.0][414384.0.803544589][414384.0.803544591]'
+  BaseType: Object
+  Description: '閿�鍞绠楁槑缁�'
+  StructuredName: 'SaleBudgetItems'
+}
diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
new file mode 100644
index 0000000..1c3a3e5
--- /dev/null
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
@@ -0,0 +1,185 @@
+Quintiq file version 2.0
+#parent: #root
+Method CapacityAndSaleBudgeCompare (
+  MacroPlans macroPlans,
+  CapacityAndSaleBudgeFilterItems items,
+  CapacityAndSaleBudgeFilterYears years,
+  CapacityAndSaleBudgeFilterMonths months,
+  MPSync mpSync,
+  MacroPlan mappingParent
+)
+{
+  Description: 'todo : mappingParent鏀逛负mpSync'
+  TextBody:
+  [*
+    // yypsybs Sep-18-2023 (created)
+    // ====涓嶉�夋椂榛樿鍏ㄩ��====
+    if( years.Size() = 0 ) {
+      years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, item.YearNo() );
+    }
+    if( months.Size() = 0 ) {
+      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, item.MonthNo() );
+    }
+    traverse( macroPlans, Elements, item ) {
+      info( "scenario : " + item.ScenarioName() );
+    }
+    traverse( items, Elements, item ) {
+      info( "item : " + item.ItemName() );
+    }
+    traverse( years, Elements, item ) {
+      info( "year : " + [String]item.YearNo() );
+    }
+    traverse( months, Elements, item ) {
+      info( "month : " + [String]item.MonthNo() );
+    }
+    // ====娓呯悊鏃ф暟鎹�====
+    this.CapacityAndSaleBudgeCompareItemRow( relflush );
+    this.CapacityAndSaleBudgeCompareItemColumn( relflush );
+    // ====姹囨�绘墍鏈夊嚭鐜扮殑浜у搧====
+    productCodeList := construct( Strings );
+    historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
+    traverse( historyData, Elements, one ) {
+      productCodeList.Add( one.ProductCode() );
+    }
+    traverse( macroPlans, Elements, macroPlan ) {
+      traverse( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip ) {
+        productCodeList.Add( pispip.ProductInStockingPoint_MP().Product_MP().ID() );
+      }
+    }
+    productCodeList := selectuniquevalues( productCodeList, Elements, item, item );
+    info( "product count : " + [String]productCodeList.Size() )
+    // ====鏍规嵁浜у搧鏌ヤ簨涓氶儴鍜岀粍缁囩紪鐮侊紝鐒跺悗鎸変簨涓氶儴鍜岀粍缁囩紪鐮佹眹鎬�====
+    traverse( productCodeList, Elements, productCode ) {
+      bom := MappingBOM::CreateTestData( mappingParent, [String](productCode.Length() mod 3), [String](productCode.Length() mod 4) );
+    //  bom := select( mappingParent, MappingBOM, bom, bom.ProductCode() = productCode );
+      if( not isnull( bom ) ) {
+        businessType := bom.BusinessType();
+        orgCode := bom.OrganCode();
+        row := CapacityAndSaleBudgeCompareItemRow::CreateIfNotExist( this, businessType, orgCode );
+        // 璁板綍姣忚鍖呭惈鍝簺product
+        CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode );
+      }
+    }
+    // ====浠庡乏鍚戝彸鐢熸垚鍒楀ご涓庡唴瀹�====
+    // 浜嬩笟閮紝缁勭粐
+    info( "dealing businessType and orgCode" )
+    columnBusinessType := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜嬩笟閮�" );
+    columnOrgCode := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "缁勭粐缂栫爜" );
+    traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+      cell := columnBusinessType.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.BusinessType() );
+      cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      cell := columnOrgCode.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := row.OrgCode() );
+      cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+    }
+    // 闈㈡澘鍒嗛厤閲� - 骞村害棰勭畻 
+    // 鏍煎紡锛� 闈㈡澘鍒嗛厤閲� - 骞� - 鏈堬紙1-12 & total锛� - 骞村害棰勭畻/scenarioName
+    info( "dealing 闈㈡澘鍒嗛厤閲�" )
+    if( CapacityAndSaleBudgeFilterItem::Contains( items, "闈㈡澘鍒嗛厤閲�" ) ) {
+      // 鍘嗗彶鏁版嵁
+      traverse( months, Elements, month ) {
+        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + "-" + [String]month.MonthNo() + "-骞村害棰勭畻" );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "闈㈡澘鍒嗛厤閲�-" + "-total-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( years, Elements, year ) {
+        traverse( macroPlans, Elements, macroPlan ) {
+          traverse( months, Elements, month ) {
+            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, 
+                                                                                    "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "-" + [String]month.MonthNo() + "-" + macroPlan.ScenarioName() );
+            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+            }
+          }
+          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, 
+                                                                                 "闈㈡澘鍒嗛厤閲�-" + [String]year.YearNo() + "-total-" + macroPlan.ScenarioName() );
+          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+          }
+        }
+      }
+    }
+    // 骞村害閿�鍞
+    info( "dealing 閿�鍞" )
+    if( CapacityAndSaleBudgeFilterItem::Contains( items, "閿�鍞" ) ) {
+      // 鍘嗗彶鏁版嵁
+      traverse( months, Elements, month ) {
+        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + "-" + [String]month.MonthNo() + "-骞村害棰勭畻" );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + "-total-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( years, Elements, year ) {
+        traverse( macroPlans, Elements, macroPlan ) {
+          traverse( months, Elements, month ) {
+            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "-" + [String]month.MonthNo() + "-" + macroPlan.ScenarioName() );
+            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+            }
+          }
+          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "瀵瑰閿�鍞-" + [String]year.YearNo() + "-total-" + macroPlan.ScenarioName() );
+          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+          }
+        }
+      }
+    }
+    // 澶у紶鐩堝埄棰�
+    info( "dealing 澶у紶鐩堝埄棰�" )
+    traverse( years, Elements, year ) {
+      // 鍘嗗彶鏁版嵁
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( macroPlans, Elements, macroPlan ) {
+        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "澶у紶鐩堝埄棰�-" + [String]year.YearNo() );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+    }
+    // 浜у搧鐩堝埄棰�
+    info( "dealing 浜у搧鐩堝埄棰�" )
+    traverse( years, Elements, year ) {
+      // 鍘嗗彶鏁版嵁
+      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-骞村害棰勭畻" );
+      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+      }
+      // S&OP鏁版嵁
+      traverse( macroPlans, Elements, macroPlan ) {
+        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "浜у搧鐩堝埄棰�-" + [String]year.YearNo() );
+        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
+          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 100 ) );
+          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
+        }
+      }
+    }
+    
+    
+    info( "done" );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index 719ed35..0b3ed2a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -12,5 +12,35 @@
         #child: ActionBarPageData
       ]
     }
+    Component DataHolderCapacityAndSaleBudgeFilterItem
+    {
+      #keys: '[414384.0.814451217]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[CapacityAndSaleBudgeFilterItem]*'
+      Properties:
+      [
+        Taborder: 40
+      ]
+    }
+    Component DataHolderCapacityAndSaleBudgeFilterMonth
+    {
+      #keys: '[414384.0.814441070]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[CapacityAndSaleBudgeFilterMonth]*'
+      Properties:
+      [
+        Taborder: 41
+      ]
+    }
+    Component DataHolderCapacityAndSaleBudgeFilterYear
+    {
+      #keys: '[414384.0.814441076]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[CapacityAndSaleBudgeFilterYear]*'
+      Properties:
+      [
+        Taborder: 42
+      ]
+    }
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
new file mode 100644
index 0000000..93bc5b0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudge
+{
+  #keys: '[414384.0.813011646]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudge
+    {
+      #keys: '[414384.0.813011647]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudge'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudge
+    Component DataSetLevelCapacityAndSaleBudge
+    {
+      #keys: '[414384.0.813011652]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudge
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Deleted","title":"Deleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Deleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrgCode","title":"OrgCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrgCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayTechnology","title":"DisplayTechnology","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DisplayTechnology"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineAndSpec","title":"LineAndSpec","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpec"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductCode","title":"ProductCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfEvaporation","title":"PlaceOfProductionOfEvaporation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfEvaporation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Resolution","title":"Resolution","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Resolution"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShippingForm","title":"ShippingForm","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShippingForm"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfCut","title":"NumberOfCut","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfCut"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityEquivalent","title":"CapacityEquivalent","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityEquivalent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfMask","title":"NumberOfMask","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfMask"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth1","title":"CapacityInPCSInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth2","title":"CapacityInPCSInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSTotal","title":"CapacityInPCSTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth1","title":"CapacityInSheetInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth2","title":"CapacityInSheetInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetTotal","title":"CapacityInSheetTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth1","title":"SaleAmountInMonth1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth1"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth2","title":"SaleAmountInMonth2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth2"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountTotal","title":"SaleAmountTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountTotal"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudge'
+        SortCriteria: 'BusinessType;OrgCode;ProductCode'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def
new file mode 100644
index 0000000..4362de8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listActionBarPageCapacityAndSaleBudge.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudge
+{
+  #keys: '[414384.0.813011649]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def
new file mode 100644
index 0000000..73bbf94
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_listContextMenuCapacityAndSaleBudge.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudge
+{
+  #keys: '[414384.0.813011654]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
new file mode 100644
index 0000000..99ec0c4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudge_OnCreated
+{
+  #keys: '[414384.0.813000551]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      GlobalOTDTable.InitTestData();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
new file mode 100644
index 0000000..b3e0a3c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudge
+{
+  #keys: '[414384.0.811822656]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudge
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
new file mode 100644
index 0000000..1309dca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ButtonCapacityAndSaleBudgeCompare
+Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonCapacityAndSaleBudgeCompare_OnClick
+{
+  #keys: '[414384.0.818241703]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ScenarioManager.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(), 
+                                                   DataHolderCapacityAndSaleBudgeFilterItem.Data(), 
+                                                   DataHolderCapacityAndSaleBudgeFilterYear.Data(), 
+                                                   DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
+                                                   MPSync, 
+                                                   MacroPlan );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
new file mode 100644
index 0000000..499f57c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeCompare
+{
+  #keys: '[414384.0.818241648]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component ButtonCapacityAndSaleBudgeCompare
+    {
+      #keys: '[414384.0.818241675]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: '鍒锋柊'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..84bcffe
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814422398]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudgeFilterItem
+    {
+      #keys: '[414384.0.814422399]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'ScenarioManager'
+        Source: 'ScenarioManager'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudgeFilterItem'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudgeFilterItem
+    Component DataSetLevelCapacityAndSaleBudgeFilterItem
+    {
+      #keys: '[414384.0.814422404]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudgeFilterItem
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ItemName","title":"ItemName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ItemName"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterItem'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..b8d3d7e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listActionBarPageCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814422401]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..2ac7d83
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_listContextMenuCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814422406]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged\043364.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged\043364.def"
new file mode 100644
index 0000000..8dd9009
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged\043364.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterItem
+Response OnUserCheckedChanged (
+  structured[CapacityAndSaleBudgeFilterItem] checkeditems
+) id:Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged_364
+{
+  #keys: '[414384.0.814442050]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterItem.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def
new file mode 100644
index 0000000..d8fc395
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterItem
+Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterItem_OnUserCheckedChanged
+{
+  #keys: '[414384.0.814441975]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterItem.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def
new file mode 100644
index 0000000..c5f4133
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudgeFilterItem_OnCreated
+{
+  #keys: '[414384.0.813090410]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeFilterItem::Initial( ScenarioManager );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def
new file mode 100644
index 0000000..407564c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeFilterItem
+{
+  #keys: '[414384.0.814110958]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudgeFilterItem
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮椤圭瓫閫�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..13a9e02
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814421655]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudgeFilterMonth
+    {
+      #keys: '[414384.0.814421656]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'ScenarioManager'
+        Source: 'ScenarioManager'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudgeFilterMonth'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudgeFilterMonth
+    Component DataSetLevelCapacityAndSaleBudgeFilterMonth
+    {
+      #keys: '[414384.0.814421661]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudgeFilterMonth
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MonthNo","title":"MonthNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MonthNo"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterMonth'
+        SortCriteria: 'MonthNo'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..18b4412
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listActionBarPageCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814421658]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..61a19a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_listContextMenuCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814421663]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged\043608.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged\043608.def"
new file mode 100644
index 0000000..2d0371a
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged\043608.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterMonth
+Response OnUserCheckedChanged (
+  structured[CapacityAndSaleBudgeFilterMonth] checkeditems
+) id:Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged_608
+{
+  #keys: '[414384.0.814441861]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterMonth.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def
new file mode 100644
index 0000000..dd5e9e0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterMonth
+Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterMonth_OnUserCheckedChanged
+{
+  #keys: '[414384.0.814441723]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterMonth.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def
new file mode 100644
index 0000000..46cc025
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudgeFilterMonth_OnCreated
+{
+  #keys: '[414384.0.813021080]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeFilterMonth::Initial( ScenarioManager );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def
new file mode 100644
index 0000000..8328a22
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeFilterMonth
+{
+  #keys: '[414384.0.814110924]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudgeFilterMonth
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮鏈堜唤绛涢��'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..f51357d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+Component ListCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814421895]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorCapacityAndSaleBudgeFilterYear
+    {
+      #keys: '[414384.0.814421896]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'ScenarioManager'
+        Source: 'ScenarioManager'
+        Taborder: 0
+        Transformation: 'CapacityAndSaleBudgeFilterYear'
+      ]
+    }
+    #child: listActionBarPageCapacityAndSaleBudgeFilterYear
+    Component DataSetLevelCapacityAndSaleBudgeFilterYear
+    {
+      #keys: '[414384.0.814421901]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuCapacityAndSaleBudgeFilterYear
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"YearNo","title":"YearNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"YearNo"}}]'
+        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterYear'
+        SortCriteria: 'YearNo'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    SelectionCheckboxes: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..517785d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listActionBarPageCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814421898]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..063e725
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_listContextMenuCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814421903]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged\043316.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged\043316.def"
new file mode 100644
index 0000000..7f76b04
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged\043316.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterYear
+Response OnUserCheckedChanged (
+  structured[CapacityAndSaleBudgeFilterYear] checkeditems
+) id:Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged_316
+{
+  #keys: '[414384.0.814441614]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterYear.Data( checkeditems.Copy() );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def
new file mode 100644
index 0000000..ca51e21
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ListCapacityAndSaleBudgeFilterYear
+Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterYear_OnUserCheckedChanged
+{
+  #keys: '[414384.0.814441542]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      DataHolderCapacityAndSaleBudgeFilterYear.Data().Flush();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def
new file mode 100644
index 0000000..6c61e95
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormCapacityAndSaleBudgeFilterYear_OnCreated
+{
+  #keys: '[414384.0.814422656]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      CapacityAndSaleBudgeFilterYear::Initial( ScenarioManager );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def
new file mode 100644
index 0000000..54553b8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAndSaleBudgeFilterYear
+{
+  #keys: '[414384.0.814110885]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListCapacityAndSaleBudgeFilterYear
+  ]
+  Properties:
+  [
+    Title: '浜ч攢棰勭畻瀵规瘮骞翠唤绛涢��'
+  ]
+}
diff --git a/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw
new file mode 100644
index 0000000..c31c665
--- /dev/null
+++ b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Capacity___sale_budge.vw
@@ -0,0 +1,205 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_legacy_1
+      {
+        title: 'Scenario manager'
+        shown: true
+        componentID: 'FormScenarioManager'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 8
+          columnPosition: 1
+          columnSpan: 5
+        }
+        components
+        {
+          FormScenarioManager_ListScenario
+          {
+          }
+          FormScenarioManager_DataSetLevelScenario
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 90
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 197
+            }
+            column_ChangedBy
+            {
+              columnId: 'ChangedBy'
+              dataPath: 'ChangedBy'
+              dataType: 'string'
+              title: 'Changed by'
+              index: 2
+              subtotals: ''
+              width: 91
+            }
+            column_ChangedOn
+            {
+              columnId: 'ChangedOn'
+              dataPath: 'ChangedOn'
+              dataType: 'datetime'
+              title: 'Changed on'
+              index: 3
+              subtotals: ''
+              width: 99
+            }
+            column_StorageMode
+            {
+              columnId: 'StorageMode'
+              dataPath: 'StorageMode'
+              dataType: 'string'
+              title: 'StorageMode'
+              index: 4
+              subtotals: ''
+              width: 40
+            }
+          }
+        }
+      }
+      form_FormOptimizerPuzzles
+      {
+        title: 'Optimizer Puzzles'
+        shown: false
+        componentID: 'FormOptimizerPuzzles'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormOptimizerPuzzles_ListOptimizerPuzzles
+          {
+          }
+          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 109
+            }
+            column_Description
+            {
+              columnId: 'Description'
+              dataPath: 'Description'
+              dataType: 'string'
+              title: '鎻忚堪'
+              index: 2
+              subtotals: ''
+              width: 207
+            }
+          }
+        }
+      }
+      form_FormKPI
+      {
+        title: 'KPI Dashboard'
+        shown: true
+        componentID: 'FormKPI'
+        layout
+        {
+          mode: 'dockright'
+          index: 1
+        }
+        components
+        {
+          FormKPI_PanelKPI
+          {
+            sizeRatio: 1
+            activeChild: 'PanelKPISelection'
+          }
+          FormKPI_PanelKPIDashboard
+          {
+            sizeRatio: 1
+          }
+          FormKPI_PanelKPISelection
+          {
+            sizeRatio: 1
+          }
+          FormKPI_ListKPISelection
+          {
+            QuillViewData
+            {
+              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+            }
+          }
+          FormKPI_DataSetLevelKPISelection
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: '鍚嶇О'
+              index: 1
+              subtotals: ''
+              width: 200
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: 'CHART_HI_LO'
+    page: 'ActionBarPageScenarioComparison'
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: 'Capacity___sale_budge'
+  name: 'Capacity & sale budge'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3