yypsybs
2023-09-21 f6d33f5430e3c12423daeaf44dac7f88bd61cf81
Merge branch 'dev_yx' into dev
已重命名2个文件
已添加83个文件
已修改27个文件
1779 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSal.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_Ca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MappingAnnualBudget_MPSync_MPSync_MappingAnnualBudget.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrPlaceOfProductionOfArray.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/Attribute_BusinessType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/_ROOT_Type_CapacityAndSaleBudgeFilterBusinessType.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Attribute_PlaceOfProductionOfArray.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/_ROOT_Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/StaticMethod_CapacityAndSaleBudgeYearsString.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/StaticMethod_TestData.qbl 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity1.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity10.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity11.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity12.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity2.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity3.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity4.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity5.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity6.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity7.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity8.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity9.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales1.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales10.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales11.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales12.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales2.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales3.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales4.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales5.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales6.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales7.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales8.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales9.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity1.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity10.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity11.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity12.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity2.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity3.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity4.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity5.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity6.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity7.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity8.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity9.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_ProductId.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Attribute_yearNo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/DefaultValue_BusinessType.qbl 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInPCSInYear.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInSheetInHalfYear.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInSheetInSeason.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInSheetInYear.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/Method_GetSaleAmountInYear.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSaleByMonth.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSaleByYear.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetByHalfYear.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetByMonth.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetBySeason.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetByYear.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingAnnualBudget/_ROOT_Type_MappingAnnualBudget.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyByHalfYear.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyByMonth.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyBySeason.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyByYear.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/Attribute_YearNo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByMonth.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByYear.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByHalfYear.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByMonth.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetBySeason.qbl 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByYear.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PRData/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream.qbl 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PRHistoryData/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart#95.qbl 301 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_OnCreated.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_listActionBarPageCapacityAndSaleBudgeFilterBusinessType.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_listContextMenuCapacityAndSaleBudgeFilterYear#1.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged#670.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/_ROOT_Component_FormCapacityAndSaleBudgeFilterBusinessType.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_listActionBarPageCapacityAndSaleBudgeFilterPlaceOfProductionOfArra.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_listContextMenuCapacityAndSaleBudgeFilterYear#1.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCh#171.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserChecke.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC#663.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/_ROOT_Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSal.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSaleBudgeFilterBusinessType
{
  #keys: '1[414384.0.873958122]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MPSync
  {
    #keys: '3[414384.0.873958124][414384.0.873958123][414384.0.873958125]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterBusinessType
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterBusinessType
  {
    #keys: '3[414384.0.873958127][414384.0.873958126][414384.0.873958128]'
    Cardinality: '1toN'
    ObjectDefinition: MPSync
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_Ca.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
{
  #keys: '1[414384.0.873958138]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MPSync
  {
    #keys: '3[414384.0.873958140][414384.0.873958139][414384.0.873958141]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
  {
    #keys: '3[414384.0.873958143][414384.0.873958142][414384.0.873958144]'
    Cardinality: '1toN'
    ObjectDefinition: MPSync
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MappingAnnualBudget_MPSync_MPSync_MappingAnnualBudget.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MappingAnnualBudget_MPSync_MPSync_MappingAnnualBudget
{
  #keys: '1[414384.0.874289921]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MPSync
  {
    #keys: '3[414384.0.874289923][414384.0.874289922][414384.0.874289924]'
    Cardinality: '0to1'
    ObjectDefinition: MappingAnnualBudget
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MappingAnnualBudget
  {
    #keys: '3[414384.0.874289926][414384.0.874289925][414384.0.874289927]'
    Cardinality: '1toN'
    ObjectDefinition: MPSync
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_CapacityAndSaleBudge/Attribute_BusinessType.qbl
@@ -3,6 +3,6 @@
Attribute BusinessType
{
  #keys: '3[414384.0.810464687][414384.0.810464686][414384.0.810464688]'
  Description: '业务类型'
  Description: '业务类型(事业部)'
  ValueType: String
}
_Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrPlaceOfProductionOfArray.qbl
ÎļþÃû´Ó _Main/BL/Type_CapacityAndSaleBudgeChartElement/Attribute_BusinessTypeOrOrgCode.qbl ÐÞ¸Ä
@@ -1,6 +1,6 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessTypeOrOrgCode
Attribute BusinessTypeOrPlaceOfProductionOfArray
{
  #keys: '3[414384.0.852466562][414384.0.852466561][414384.0.852466563]'
  Description: '事业部/面板基地'
_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
@@ -20,7 +20,7 @@
        for( j := 1; j <= 12; j := j + 1 ) {
          monthString := "MONTH" + ifexpr( j < 10, "0" + [String]j, [String]j );
          scenarioManager.CapacityAndSaleBudgeChartElement( relnew, 
                                                            BusinessTypeOrOrgCode := businessTypeString,
                                                            BusinessTypeOrPlaceOfProductionOfArray := businessTypeString,
                                                            TimeStringAndScenarioName := monthString + " - " + scenarioName, 
                                                            Quantity := Real::Random( 20.0, 30.0 ) );
        }
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[414384.0.874249290][414384.0.874249289][414384.0.874249291]'
  ValueType: String
}
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  MPSync parent,
  String value
)
{
  TextBody:
  [*
    // yypsybs Sep-15-2023 (created)
    old := select( parent, CapacityAndSaleBudgeFilterBusinessType, item, item.BusinessType() = value );
    if( isnull( old ) ) {
      parent.CapacityAndSaleBudgeFilterBusinessType( relnew,
                                                     BusinessType := value );
    }
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/_ROOT_Type_CapacityAndSaleBudgeFilterBusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type CapacityAndSaleBudgeFilterBusinessType
{
  #keys: '5[414384.0.874249287][414384.0.874249285][0.0.0][414384.0.874249286][414384.0.874249288]'
  BaseType: Object
  Description: '对比事业部'
  StructuredName: 'CapacityAndSaleBudgeFilterBusinessTypes'
}
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
@@ -4,7 +4,7 @@
  ScenarioManager parent
)
{
  Description: '初始化月份'
  Description: '初始化年份'
  TextBody:
  [*
    // yypsybs Sep-15-2023 (created)
@@ -13,7 +13,7 @@
      if( existList.Find( i ) = -1 ) {
        parent.CapacityAndSaleBudgeFilterMonth( relnew, 
                                                MonthNo := i );
      }
      }
    }
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Attribute_PlaceOfProductionOfArray.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute PlaceOfProductionOfArray
{
  #keys: '3[414384.0.873958113][414384.0.873958112][414384.0.873958114]'
  ValueType: String
}
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  MPSync parent,
  String value
)
{
  TextBody:
  [*
    // yypsybs Sep-15-2023 (created)
    old := select( parent, CapacityAndSaleBudgeFilterPlaceOfProductionOfArray, item, item.PlaceOfProductionOfArray() = value );
    if( isnull( old ) ) {
      parent.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relnew,
                                                                 PlaceOfProductionOfArray := value );
    }
  *]
}
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/_ROOT_Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
{
  #keys: '5[414384.0.873958110][414384.0.873958108][0.0.0][414384.0.873958109][414384.0.873958111]'
  BaseType: Object
  Description: '对比事业部'
  StructuredName: 'CapacityAndSaleBudgeFilterPlaceOfProductionOfArrays'
}
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
@@ -10,7 +10,7 @@
    // yypsybs Sep-15-2023 (created)
    existList := selectuniquevalues( parent, CapacityAndSaleBudgeFilterYear, item, item.YearNo() );
    nowYear := Date::Today().Year();
    for( i := nowYear; i <= nowYear + 10; i++ ) {
    for( i := nowYear - 10; i <= nowYear; i++ ) {
      if( existList.Find( i ) = -1 ) {
        parent.CapacityAndSaleBudgeFilterYear( relnew, 
                                               YearNo := i );
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method RefreshCapacityAndSaleBudgeFilter
{
  TextBody:
  [*
    // yypsybs Sep-21-2023 (created)
    info( "=====RefreshCapacityAndSaleBudgeFilter====" );
    businessTypes := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.BusinessType() );
    info( [String]businessTypes.Size() );
    traverse( businessTypes, Elements, businessType ) {
      CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( this, businessType );
    }
    placeOfProductionOfArrays := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.PlaceOfProductionOfArray() );
    info( [String]placeOfProductionOfArrays.Size() );
    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( this, placeOfProductionOfArray );
    }
  *]
}
_Main/BL/Type_MPSync/StaticMethod_CapacityAndSaleBudgeYearsString.qbl
@@ -6,7 +6,7 @@
  [*
    // yypsybs Sep-19-2023 (created)
    years := construct( Strings );;
    for( i := Date::ActualDate().Year(); i < Date::ActualDate().Year() + 10; i := i + 1 ) {
    for( i := Date::ActualDate().Year() - 10; i <= Date::ActualDate().Year(); i := i + 1 ) {
      years.Add( [String]i );
    }
    return ifexpr( years.Size() > 0, years.Concatenate( ";" ), "" );
_Main/BL/Type_MPSync/StaticMethod_TestData.qbl
@@ -12,32 +12,53 @@
    info( "MPSync::TestData" );
    
    productCodeList := selectuniquevalues( macroPlan, Product_MP, item, item.ID() );
    info( "productCodeList : " + [String]productCodeList.Size() );
    
    mpSync.MappingCapacityAndSaleBudge( relflush );
    for( i := 1; i <= productCodeList.Size(); i := i + 1 ) {
      productCode := productCodeList.Element( i - 1 );
      mappingCapacityAndSaleBudge := mpSync.MappingCapacityAndSaleBudge( relnew,
                                                                         ProductCode := productCode,
                                                                         BusinessType := "事业部" + [String](productCode.Length() mod 3 + 1),
                                                                         PlaceOfProductionOfArray := "面板基地" + [String](productCode.Length() mod 4 + 1)
                                                                          );
      for( month := 1; month <= 12; month := month + 1 ) {
        field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInPCSInMonth" + [String]month );
        field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) );
        field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]month );
        field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) );
        field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "SaleAmountInMonth" + [String]month );
        field.Set( mappingCapacityAndSaleBudge, Real::Random( 20.0, 30.0 ) );
    for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year(); year := year + 1 ) {
      for( i := 1; i <= productCodeList.Size(); i := i + 1 ) {
        productCode := productCodeList.Element( i - 1 );
        mappingCapacityAndSaleBudge := mpSync.MappingCapacityAndSaleBudge( relnew,
                                                                           YearNo := year,
                                                                           ProductCode := productCode,
                                                                           BusinessType := "事业部" + [String](productCode.Length() mod 3 + 1),
                                                                           PlaceOfProductionOfArray := "面板基地" + [String](productCode.Length() mod 4 + 1)
                                                                            );
        for( month := 1; month <= 12; month := month + 1 ) {
          field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInPCSInMonth" + [String]month );
          field.Set( mappingCapacityAndSaleBudge, Real::Random( 20000.0, 30000.0 ) );
          field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "CapacityInSheetInMonth" + [String]month );
          field.Set( mappingCapacityAndSaleBudge, Real::Random( 20000.0, 30000.0 ) );
          field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", "SaleAmountInMonth" + [String]month );
          field.Set( mappingCapacityAndSaleBudge, Real::Random( 20000.0, 30000.0 ) );
        }
        mappingCapacityAndSaleBudge.CapacityInPCSTotal( mappingCapacityAndSaleBudge.GetCapacityInPCSInYear() );
        mappingCapacityAndSaleBudge.CapacityInSheetTotal( mappingCapacityAndSaleBudge.GetCapacityInSheetInYear() );
        mappingCapacityAndSaleBudge.SaleAmountTotal( mappingCapacityAndSaleBudge.GetSaleAmountInYear() );
      }
      mappingCapacityAndSaleBudge.CapacityInPCSTotal( mappingCapacityAndSaleBudge.GetCapacityInPCSInYear() );
      mappingCapacityAndSaleBudge.CapacityInSheetTotal( mappingCapacityAndSaleBudge.GetCapacityInSheetInYear() );
      mappingCapacityAndSaleBudge.SaleAmountTotal( mappingCapacityAndSaleBudge.GetSaleAmountInYear() );
    }
    result1 := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
    info( "test MappingCapacityAndSaleBudge size : " + [String]result1.Size() );
    
    result := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
    info( "MappingCapacityAndSaleBudge size : " + [String]result.Size() );
    mpSync.MappingAnnualBudget( relflush );
    for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year(); year := year + 1 ) {
      for( i := 1; i <= productCodeList.Size(); i := i + 1 ) {
        productCode := productCodeList.Element( i - 1 );
        mappingAnnualBudget := mpSync.MappingAnnualBudget( relnew,
                                                           YearNo := year,
                                                           ProductId := productCode
                                                            );
        for( month := 1; month <= 12; month := month + 1 ) {
          field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlyModCapacity" + [String]month );
          field.Set( mappingAnnualBudget, Real::Random( 20000.0, 30000.0 ) );
          field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]month );
          field.Set( mappingAnnualBudget, Real::Random( 20000.0, 30000.0 ) );
          field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySales" + [String]month );
          field.Set( mappingAnnualBudget, Real::Random( 20000.0, 30000.0 ) );
        }
      }
    }
    result2 := selectset( mpSync, MappingAnnualBudget, item, true );
    info( "test MappingAnnualBudget size : " + [String]result2.Size() );
  *]
}
_Main/BL/Type_MappingAnnualBudget/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[414384.0.874289974][414384.0.874289973][414384.0.874289975]'
  Description: '业务类型'
  ValueType: String
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity1.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity1
{
  #keys: '3[414384.0.874289977][414384.0.874289976][414384.0.874289978]'
  Description: '1月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity10.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity10
{
  #keys: '3[414384.0.874290004][414384.0.874290003][414384.0.874290005]'
  Description: '10月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity11.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity11
{
  #keys: '3[414384.0.874290007][414384.0.874290006][414384.0.874290008]'
  Description: '11月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity12.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity12
{
  #keys: '3[414384.0.874290010][414384.0.874290009][414384.0.874290011]'
  Description: '12月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity2.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity2
{
  #keys: '3[414384.0.874289980][414384.0.874289979][414384.0.874289981]'
  Description: '2月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity3.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity3
{
  #keys: '3[414384.0.874289983][414384.0.874289982][414384.0.874289984]'
  Description: '3月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity4.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity4
{
  #keys: '3[414384.0.874289986][414384.0.874289985][414384.0.874289987]'
  Description: '4月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity5.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity5
{
  #keys: '3[414384.0.874289989][414384.0.874289988][414384.0.874289990]'
  Description: '5月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity6.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity6
{
  #keys: '3[414384.0.874289992][414384.0.874289991][414384.0.874289993]'
  Description: '6月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity7.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity7
{
  #keys: '3[414384.0.874289995][414384.0.874289994][414384.0.874289996]'
  Description: '7月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity8.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity8
{
  #keys: '3[414384.0.874289998][414384.0.874289997][414384.0.874289999]'
  Description: '8月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlyModCapacity9.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlyModCapacity9
{
  #keys: '3[414384.0.874290001][414384.0.874290000][414384.0.874290002]'
  Description: '9月模组产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales1.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales1
{
  #keys: '3[414384.0.874290049][414384.0.874290048][414384.0.874290050]'
  Description: '1月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales10.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales10
{
  #keys: '3[414384.0.874290076][414384.0.874290075][414384.0.874290077]'
  Description: '10月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales11.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales11
{
  #keys: '3[414384.0.874290079][414384.0.874290078][414384.0.874290080]'
  Description: '11月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales12.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales12
{
  #keys: '3[414384.0.874290082][414384.0.874290081][414384.0.874290083]'
  Description: '12月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales2.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales2
{
  #keys: '3[414384.0.874290052][414384.0.874290051][414384.0.874290053]'
  Description: '2月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales3.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales3
{
  #keys: '3[414384.0.874290055][414384.0.874290054][414384.0.874290056]'
  Description: '3月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales4.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales4
{
  #keys: '3[414384.0.874290058][414384.0.874290057][414384.0.874290059]'
  Description: '4月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales5.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales5
{
  #keys: '3[414384.0.874290061][414384.0.874290060][414384.0.874290062]'
  Description: '5月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales6.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales6
{
  #keys: '3[414384.0.874290064][414384.0.874290063][414384.0.874290065]'
  Description: '6月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales7.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales7
{
  #keys: '3[414384.0.874290067][414384.0.874290066][414384.0.874290068]'
  Description: '7月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales8.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales8
{
  #keys: '3[414384.0.874290070][414384.0.874290069][414384.0.874290071]'
  Description: '8月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySales9.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySales9
{
  #keys: '3[414384.0.874290073][414384.0.874290072][414384.0.874290074]'
  Description: '9月销售额'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity1.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity1
{
  #keys: '3[414384.0.874290013][414384.0.874290012][414384.0.874290014]'
  Description: '1月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity10.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity10
{
  #keys: '3[414384.0.874290040][414384.0.874290039][414384.0.874290041]'
  Description: '10月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity11.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity11
{
  #keys: '3[414384.0.874290043][414384.0.874290042][414384.0.874290044]'
  Description: '11月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity12.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity12
{
  #keys: '3[414384.0.874290046][414384.0.874290045][414384.0.874290047]'
  Description: '12月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity2.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity2
{
  #keys: '3[414384.0.874290016][414384.0.874290015][414384.0.874290017]'
  Description: '2月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity3.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity3
{
  #keys: '3[414384.0.874290019][414384.0.874290018][414384.0.874290020]'
  Description: '3月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity4.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity4
{
  #keys: '3[414384.0.874290022][414384.0.874290021][414384.0.874290023]'
  Description: '4月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity5.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity5
{
  #keys: '3[414384.0.874290025][414384.0.874290024][414384.0.874290026]'
  Description: '5月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity6.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity6
{
  #keys: '3[414384.0.874290028][414384.0.874290027][414384.0.874290029]'
  Description: '6月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity7.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity7
{
  #keys: '3[414384.0.874290031][414384.0.874290030][414384.0.874290032]'
  Description: '7月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity8.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity8
{
  #keys: '3[414384.0.874290034][414384.0.874290033][414384.0.874290035]'
  Description: '8月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_MonthlySheetCapacity9.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute MonthlySheetCapacity9
{
  #keys: '3[414384.0.874290037][414384.0.874290036][414384.0.874290038]'
  Description: '9月实数大张产能'
  ValueType: Real
}
_Main/BL/Type_MappingAnnualBudget/Attribute_ProductId.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductId
{
  #keys: '3[414384.0.874289946][414384.0.874289945][414384.0.874289947]'
  ValueType: String
}
_Main/BL/Type_MappingAnnualBudget/Attribute_yearNo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute YearNo
{
  #keys: '3[414384.0.874290125][414384.0.874290124][414384.0.874290126]'
  ValueType: Number
}
_Main/BL/Type_MappingAnnualBudget/DefaultValue_BusinessType.qbl
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInPCSInYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method GetCapacityInPCSInYear () as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := 0.0;
    for( i := 1; i <= 12; i := i + 1 ) {
      field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlyModCapacity" + [String]i );
      result := result + field.GetReal( this );
    }
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInSheetInHalfYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method GetCapacityInSheetInHalfYear (
  Number halfNo
) as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := 0.0;
    fromMonth := 1 + ( halfNo - 1 ) * 6;
    toMonth := 6 + ( halfNo - 1 ) * 6;
    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
      field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]i );
      result := result + field.GetReal( this );
    }
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInSheetInSeason.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method GetCapacityInSheetInSeason (
  Number seasonNo
) as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := 0.0;
    fromMonth := 1 + ( seasonNo - 1 ) * 3;
    toMonth := 3 + ( seasonNo - 1 ) * 3;
    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
      field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]i );
      result := result + field.GetReal( this );
    }
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/Method_GetCapacityInSheetInYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method GetCapacityInSheetInYear () as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := 0.0;
    for( i := 1; i <= 12; i := i + 1 ) {
      field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]i );
      result := result + field.GetReal( this );
    }
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/Method_GetSaleAmountInYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method GetSaleAmountInYear () as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := 0.0;
    for( i := 1; i <= 12; i := i + 1 ) {
      field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySales" + [String]i );
      result := result + field.GetReal( this );
    }
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSaleByMonth.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSaleByMonth (
  Strings productNo,
  MPSync parent,
  Number yearNo,
  Number monthNo
) as Real
{
  Description: '销售额(W)'
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySales" + [String]monthNo );
    value := sum( parent,
                  MappingAnnualBudget,
                  item,
                  item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1,
                  field.GetReal( item ) );
    return value;
  *]
}
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSaleByYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSaleByYear (
  Strings productNo,
  MPSync parent,
  Number yearNo
) as Real
{
  Description: '销售额(W)'
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := sum( parent,
                   MappingAnnualBudget,
                   item,
                   item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1,
                   item.GetSaleAmountInYear() );
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetByHalfYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSheetByHalfYear (
  Strings productNo,
  MPSync parent,
  Number yearNo,
  Number halfNo
) as Real
{
  Description: '产能 - å®žæ•°å¤§å¼ '
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := sum( parent,
                   MappingAnnualBudget,
                   item,
                   item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1,
                   item.GetCapacityInSheetInHalfYear( halfNo ) );
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetByMonth.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSheetByMonth (
  Strings productNo,
  MPSync parent,
  Number yearNo,
  Number monthNo
) as Real
{
  Description: '产能-实数大张'
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    field := Reflection::FindAttribute( "MappingAnnualBudget", "MonthlySheetCapacity" + [String]monthNo );
    value := sum( parent,
                  MappingAnnualBudget,
                  item,
                  item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1,
                  field.GetReal( item ) );
    return value;
  *]
}
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetBySeason.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSheetBySeason (
  Strings productNo,
  MPSync parent,
  Number yearNo,
  Number seasonNo
) as Real
{
  Description: '产能 - å®žæ•°å¤§å¼ '
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := sum( parent,
                   MappingAnnualBudget,
                   item,
                   item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1,
                   item.GetCapacityInSheetInSeason( seasonNo ) );
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/StaticMethod_GetSheetByYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetSheetByYear (
  Strings productNo,
  MPSync parent,
  Number yearNo
) as Real
{
  Description: '产能 - å®žæ•°å¤§å¼ '
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := sum( parent,
                   MappingAnnualBudget,
                   item,
                   item.YearNo() = yearNo and productNo.Find( item.ProductId() ) > -1,
                   item.GetCapacityInSheetInYear() );
    return result;
  *]
}
_Main/BL/Type_MappingAnnualBudget/_ROOT_Type_MappingAnnualBudget.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MappingAnnualBudget
{
  #keys: '5[414384.0.874289918][414384.0.874289916][0.0.0][414384.0.874289917][414384.0.874289919]'
  BaseType: Object
  Description: '年度预算数据'
  StructuredName: 'MappingAnnualBudgets'
}
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyByHalfYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetNewSupplyByHalfYear (
  Strings productNo,
  MacroPlan macroPlan,
  Number yearNo,
  Number halfNo
) as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    fromMonth := 1 + ( halfNo - 1 ) * 6;
    toMonth := 6 + ( halfNo - 1 ) * 6;
    result := 0.0;
    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
      result := result + MappingCustomerOrder::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i );
    }
    return result;
  *]
}
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyByMonth.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetNewSupplyByMonth (
  Strings productNo,
  MacroPlan macroPlan,
  Number yearNo,
  Number monthNo
) as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    result := sum( macroPlan,
                   MappingCustomerOrder,
                   item,
                   productNo.Find( item.ProductID() ) > -1
                   and item.OrderDate().Year() = yearNo
                   and item.OrderDate().Month() = monthNo,
                   item.Quantity() * item.Price() );
    return result;
  *]
}
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyBySeason.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetNewSupplyBySeason (
  Strings productNo,
  MacroPlan macroPlan,
  Number yearNo,
  Number seasonNo
) as Real
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    fromMonth := 1 + ( seasonNo - 1 ) * 3;
    toMonth := 3 + ( seasonNo - 1 ) * 3;
    result := 0.0;
    for( i := fromMonth; i <= toMonth; i := i + 1 ) {
      result := result + MappingCustomerOrder::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i );
    }
    return result;
  *]
}
_Main/BL/Type_MappingCustomerOrder/StaticMethod_GetNewSupplyByYear.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetNewSupplyByYear (
  Strings productNo,
  MacroPlan macroPlan,
  Number yearNo
) as Real
{
  TextBody:
  [*
    // yypsybs Sep-21-2023 (created)
    result := 0.0;
    for( i := 1; i <= 12; i := i + 1 ) {
      result := result + MappingCustomerOrder::GetNewSupplyByMonth( productNo, macroPlan, yearNo, i );
    }
    return result;
  *]
}
_Main/BL/Type_MappingSaleBudge/Attribute_YearNo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute YearNo
{
  #keys: '3[414384.0.874271421][414384.0.874271420][414384.0.874271422]'
  ValueType: Number
}
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByMonth.qbl
@@ -15,7 +15,7 @@
    value := sum( parent, 
                  MappingCapacityAndSaleBudge, 
                  item, 
                  productNo.Find( item.ProductCode() ) > -1,
                  item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1,
                  field.GetReal( item ) );
    return value;
  *]
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSaleByYear.qbl
@@ -13,7 +13,7 @@
    result := sum( parent, 
                   MappingCapacityAndSaleBudge, 
                   item, 
                   productNo.Find( item.ProductCode() ) > -1,
                   item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1,
                   item.GetSaleAmountInYear() );
    return result;
  *]
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByHalfYear.qbl
@@ -14,7 +14,7 @@
    result := sum( parent, 
                   MappingCapacityAndSaleBudge, 
                   item, 
                   productNo.Find( item.ProductCode() ) > -1,
                   item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1,
                   item.GetCapacityInSheetInHalfYear( halfNo ) );
    return result;
  *]
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByMonth.qbl
@@ -15,7 +15,7 @@
    value := sum( parent, 
                  MappingCapacityAndSaleBudge, 
                  item, 
                  productNo.Find( item.ProductCode() ) > -1,
                  item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1,
                  field.GetReal( item ) );
    return value;
  *]
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetBySeason.qbl
@@ -11,15 +11,10 @@
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    list := selectset( parent,
                       MappingCapacityAndSaleBudge,
                       item,
                       productNo.Find( item.ProductCode() ) > -1 );
    result := sum( parent, 
                   MappingCapacityAndSaleBudge, 
                   item, 
                   productNo.Find( item.ProductCode() ) > -1,
                   item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1,
                   item.GetCapacityInSheetInSeason( seasonNo ) );
    return result;
  *]
_Main/BL/Type_MappingSaleBudge/StaticMethod_GetSheetByYear.qbl
@@ -13,7 +13,7 @@
    result := sum( parent, 
                   MappingCapacityAndSaleBudge, 
                   item, 
                   productNo.Find( item.ProductCode() ) > -1,
                   item.YearNo() = yearNo and productNo.Find( item.ProductCode() ) > -1,
                   item.GetCapacityInSheetInYear() );
    return result;
  *]
_Main/BL/Type_PRData/StaticMethod_ExportTheFileStream.qbl
@@ -43,26 +43,26 @@
    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
    
    traverse ( toExportList, Elements, toExport ) {
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "物料编码" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "物料名称" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsPanelMaterial(), "面板物料标识" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "交货日期" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.PRSuggestionDate() = Date::MinDate(), "", dateToString.Convert( toExport.PRSuggestionDate() ) ), "PR建议日期" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "交货数量" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计算版本号" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "业务类型" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "组织编码" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsLongLeadItem(), "是否长周期" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsGenericMaterial(), "是否专用料" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MaterialMRPType(), "物料计划策略" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.LeadTime(), "提前期" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "供应商代码" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "供应商名称" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "收货库存点" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计量单位" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PR数据发送状态" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "发送时间" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendBy(), "发送人" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "物料编码" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "物料名称" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsPanelMaterial(), "面板物料标识" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "交货日期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.PRSuggestionDate() = Date::MinDate(), "", dateToString.Convert( toExport.PRSuggestionDate() ) ), "PR建议日期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "交货数量" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计算版本号" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "业务类型" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "组织编码" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsLongLeadItem(), "是否长周期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.IsGenericMaterial(), "是否专用料" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MaterialMRPType(), "物料计划策略" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.LeadTime(), "提前期" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "供应商代码" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "供应商名称" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "收货库存点" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计量单位" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PR数据发送状态" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "发送时间" );
      PRData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendBy(), "发送人" );
    }
    
    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
_Main/BL/Type_PRData/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GeneratesTheSpecifiedXMLColumn (
  XMLDOMDocument xmlDOMDocument,
  XMLDOMElement tableElement,
  String value,
  String columnName
)
{
  TextBody:
  [*
    columnElements := tableElement.GetElementsByTagName( "column" );
    traverse ( columnElements, Elements, ce ) {
      nameElement := ce.GetElementByTagName( "name", 0 );
      if ( nameElement.TextContent() = columnName ) {
        cell := xmlDOMDocument.CreateElement( "cell" );
        cell.SetAttribute( "value", value );
        ce.AppendChild( cell );
      }
    }
  *]
}
_Main/BL/Type_PRHistoryData/StaticMethod_ExportTheFileStream.qbl
@@ -40,23 +40,23 @@
    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
    
    traverse ( toExportList, Elements, toExport ) {
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "零件号" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "零件名称" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "交货日期" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "需求数量" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计算版本号" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "事业部" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "组织编码" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "供应商代码" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "供应商名称" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "收货库存点" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计量单位" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PR数据发送状态" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "发送时间" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReleaseBy(), "发送人" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveTimeString(), "ERP接收时间" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveStatus(), "ERP接收状态" );
      MatAttrSettingAndPlanStrategy::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveError(), "错误信息描述" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductID(), "零件号" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductName(), "零件名称" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.ProduceRequiredDate() = Date::MinDate(), "", dateToString.Convert( toExport.ProduceRequiredDate() ) ), "交货日期" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.Quantity(), "需求数量" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.MRPCalverNo(), "MRP计算版本号" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "事业部" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrganCode(), "组织编码" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderCode(), "供应商代码" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProviderName(), "供应商名称" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.StockingPointID(), "收货库存点" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.UnitOfMeasure(), "计量单位" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendStatus(), "PR数据发送状态" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.SendTimeString(), "发送时间" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReleaseBy(), "发送人" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveTimeString(), "ERP接收时间" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveStatus(), "ERP接收状态" );
      PRHistoryData::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ReceiveError(), "错误信息描述" );
    }
    
    xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
_Main/BL/Type_PRHistoryData/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GeneratesTheSpecifiedXMLColumn (
  XMLDOMDocument xmlDOMDocument,
  XMLDOMElement tableElement,
  String value,
  String columnName
)
{
  TextBody:
  [*
    columnElements := tableElement.GetElementsByTagName( "column" );
    traverse ( columnElements, Elements, ce ) {
      nameElement := ce.GetElementByTagName( "name", 0 );
      if ( nameElement.TextContent() = columnName ) {
        cell := xmlDOMDocument.CreateElement( "cell" );
        cell.SetAttribute( "value", value );
        ce.AppendChild( cell );
      }
    }
  *]
}
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart#95.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,301 @@
Quintiq file version 2.0
#parent: #root
Method CapacityAndSaleBudgeChart (
  MacroPlans macroPlans,
  Boolean isCapacity,
  String groupBy,
  String byBusinessTypeOrByOrgCode,
  CapacityAndSaleBudgeFilterBusinessTypes businessTypes,
  CapacityAndSaleBudgeFilterPlaceOfProductionOfArrays placeOfProductionOfArrays,
  CapacityAndSaleBudgeFilterYears years,
  CapacityAndSaleBudgeFilterMonths months,
  MPSync mpSync,
  GlobalOTDTable otdTable,
  MacroPlan mappingParent
)
{
  Description: '按入参处理数据,产生需要的CapacityAndSaleBudgeChartElement'
  TextBody:
  [*
    // yypsybs Sep-19-2023 (created)
    // true, false
    info( isCapacity );
    // æœˆ;季度;半年;å¹´
    info( groupBy );
    // é¢æ¿åŸºåœ°;事业部
    info( byBusinessTypeOrByOrgCode );
    traverse( businessTypes, Elements, businessType ) {
      info( "businessType : " + businessType.BusinessType() );
    }
    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
      info( "placeOfProductionOfArray : " + placeOfProductionOfArray.PlaceOfProductionOfArray() );
    }
    traverse( macroPlans, Elements, macroPlan ) {
      info( "macroPlan : " + macroPlan.ScenarioName() );
    }
    // å¹´ä»½ä¸é€‰æ—¶å…¨é€‰
    if( years.Size() = 0 ) {
      years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, true, item.YearNo() );
    }
    traverse( years, Elements, year ) {
      info( "yearNo : " + [String]year.YearNo() );
    }
    // æœˆä»½ä¸é€‰æ—¶å…¨é€‰
    if( months.Size() = 0 ) {
      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, true, item.MonthNo() );
    }
    traverse( months, Elements, month ) {
      info( "monthNo : " + [String]month.MonthNo() );
    }
    // ====清理旧数据====
    this.CapacityAndSaleBudgeChartRow( relflush );
    this.CapacityAndSaleBudgeChartElement( relflush );
    // ====按面板基地和事业部对产品进行筛选分组====
    historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
    if( businessTypes.Size() > 0 ) {
      businessTypeStrings := selectuniquevalues( businessTypes, Elements, item, true, item.BusinessType() );
      historyData := selectset( historyData, Elements, item, businessTypeStrings.Find( item.BusinessType() ) > -1 );
    }
    if( placeOfProductionOfArrays.Size() > 0 ) {
      placeOfProductionOfArrayStrings := selectuniquevalues( placeOfProductionOfArrays, Elements, item, true, item.PlaceOfProductionOfArray() );
      historyData := selectset( historyData, Elements, item, placeOfProductionOfArrayStrings.Find( item.PlaceOfProductionOfArray() ) > -1 );
    }
    //info( "historyData : " + [String]historyData.Size() );
    traverse( historyData, Elements, item ) {
      row := CapacityAndSaleBudgeChartRow::CreateIfNotExist( this, item.BusinessType(), item.PlaceOfProductionOfArray() );
      // è®°å½•每行包含哪些product
      CapacityAndSaleBudgeChartRowProduct::CreateIfNotExist( row, item.ProductCode() );
    }
    rows := selectset( this, CapacityAndSaleBudgeChartRow, item, true );
    //info( "rows : " + [String]rows.Size() );
    placeOfProductionOfArrayList := selectuniquevalues( historyData, Elements, item, item.PlaceOfProductionOfArray() );
    businessTypeList := selectuniquevalues( historyData, Elements, item, item.BusinessType() );
    // ç”Ÿæˆå›¾è¡¨å…ƒç´ 
    traverse( years, Elements, year ) {
      info( "process year start : " + [String]year.YearNo() );
      if( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "å¹´" ) {
        // ç›®æ ‡
        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
          this.CapacityAndSaleBudgeChartElement( relnew,
                                                 TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-目标",
                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ),
                                                                     MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) )
                                                 );
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ),
                                                                       MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )
                                                                       )
                                                   );
          }
        }
      }
      if ( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "半年" ) {
        for( halfNo := 1; halfNo <= 2; halfNo := halfNo + 1 ) {
          traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-目标",
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                   Quantity := ifexpr( isCapacity,
                                                                       MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ),
                                                                       MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) )
                                                   );
            // S&OP
            traverse( macroPlans, Elements, macroPlan ) {
              this.CapacityAndSaleBudgeChartElement( relnew,
                                                     TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-" + macroPlan.ScenarioName(),
                                                     BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                     Quantity := ifexpr( isCapacity,
                                                                         Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ),
                                                                         MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )
                                                                         )
                                                     );
            }
          }
        }
      }
      if ( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "季度" ) {
        for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) {
          traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
      //      info( "productCodeList : " + [String]productCodeList.Size() );
      //      info( "MappingCapacityAndSaleBudge::GetSheetBySeason : " + [String]MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) );
      //      info( "seasonNo : " + [String]seasonNo );
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "季度-目标",
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                   Quantity := ifexpr( isCapacity,
                                                                       MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ),
                                                                       MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) )
                                                   );
      //      info( "productCodeList : " + [String]productCodeList.Size() );
            // S&OP
            traverse( macroPlans, Elements, macroPlan ) {
              this.CapacityAndSaleBudgeChartElement( relnew,
                                                     TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "季度-" + macroPlan.ScenarioName(),
                                                     BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                     Quantity := ifexpr( isCapacity,
                                                                         Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ),
                                                                         MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )
                                                                         )
                                                     );
            }
          }
        }
      }
      if ( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "月" ) {
        traverse( months, Elements, month ) {
          info( "process month start : " + [String]month.MonthNo() );
          monthNoString := ifexpr( month.MonthNo() <= 9, "0" + [String]month.MonthNo(), [String]month.MonthNo() );
          traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "月-目标",
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                   Quantity := ifexpr( isCapacity,
                                                                       MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ),
                                                                       MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) )
                                                   );
            // S&OP
            traverse( macroPlans, Elements, macroPlan ) {
              this.CapacityAndSaleBudgeChartElement( relnew,
                                                     TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "月-" + macroPlan.ScenarioName(),
                                                     BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                     Quantity := ifexpr( isCapacity,
                                                                         Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ),
                                                                         MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )
                                                                         )
                                                     );
            }
          }
          info( "process month end : " + [String]month.MonthNo() );
        }
      }
      if( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "å¹´" ) {
        // ç›®æ ‡
        traverse( businessTypeList, Elements, businessType ) {
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
          this.CapacityAndSaleBudgeChartElement( relnew,
                                                 TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-目标",
                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ),
                                                                     MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) )
                                                 );
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ),
                                                                       MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )
                                                                       )
                                                   );
          }
        }
      }
      if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "半年" ) {
        for( halfNo := 1; halfNo <= 2; halfNo := halfNo + 1 ) {
          traverse( businessTypeList, Elements, businessType ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-目标",
                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                   Quantity := ifexpr( isCapacity,
                                                                       MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ),
                                                                       MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) )
                                                   );
            // S&OP
            traverse( macroPlans, Elements, macroPlan ) {
              this.CapacityAndSaleBudgeChartElement( relnew,
                                                     TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-" + macroPlan.ScenarioName(),
                                                     BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                     Quantity := ifexpr( isCapacity,
                                                                         Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ),
                                                                         MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )
                                                                         )
                                                     );
            }
          }
        }
      }
      if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "季度" ) {
        for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) {
          info( "process season start : " + [String]seasonNo );
          traverse( businessTypeList, Elements, businessType ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "季度-目标",
                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                   Quantity := ifexpr( isCapacity,
                                                                       MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ),
                                                                       MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) )
                                                   );
            // S&OP
            traverse( macroPlans, Elements, macroPlan ) {
              this.CapacityAndSaleBudgeChartElement( relnew,
                                                     TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + [String]seasonNo + "季度-" + macroPlan.ScenarioName(),
                                                     BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                     Quantity := ifexpr( isCapacity,
                                                                         Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ),
                                                                         MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )
                                                                         )
                                                     );
            }
          }
          info( "process season end : " + [String]seasonNo );
        }
      }
      if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "月" ) {
        traverse( months, Elements, month ) {
          info( "process month start : " + [String]month.MonthNo() );
          monthNoString := ifexpr( month.MonthNo() <= 9, "0" + [String]month.MonthNo(), [String]month.MonthNo() );
          traverse( businessTypeList, Elements, businessType ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
            this.CapacityAndSaleBudgeChartElement( relnew,
                                                   TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "月-目标",
                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                   Quantity := ifexpr( isCapacity,
                                                                       MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ),
                                                                       MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) )
                                                   );
            // S&OP
            traverse( macroPlans, Elements, macroPlan ) {
              this.CapacityAndSaleBudgeChartElement( relnew,
                                                     TimeStringAndScenarioName := [String]year.YearNo() + "å¹´-第" + monthNoString + "月-" + macroPlan.ScenarioName(),
                                                     BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                     Quantity := ifexpr( isCapacity,
                                                                         Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ),
                                                                         MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )
                                                                         )
                                                     );
            }
          }
          info( "process month end : " + [String]month.MonthNo() );
        }
      }
      info( "process year end : " + [String]year.YearNo() )
    }
    //info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() );
    //traverse( this, CapacityAndSaleBudgeChartRow, row ) {
    //  info( "==↓==" );
    //  info( row.BusinessType() );
    //  info( row.PlaceOfProductionOfArray() );
    //  elements := selectset( row, CapacityAndSaleBudgeChartRowProduct, cell, true );
    //  info( elements.Size() );
    //  info( row.GetProductCodes().Concatenate( " | " ) );
    //  info( "==↑==" );
    //}
  *]
}
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
@@ -13,7 +13,11 @@
  MacroPlan mappingParent
)
{
  Description: '按入参处理数据,产生需要的CapacityAndSaleBudgeChartElement'
  Description:
  [*
    æŒ‰å…¥å‚处理数据,产生需要的CapacityAndSaleBudgeChartElement
    ï¼ï¼ï¼ï¼åºŸå¼ƒï¼ï¼ï¼ï¼
  *]
  TextBody:
  [*
    // yypsybs Sep-19-2023 (created)
@@ -56,18 +60,20 @@
        productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
        this.CapacityAndSaleBudgeChartElement( relnew, 
                                               TimeStringAndScenarioName := [String]year + "å¹´-目标",
                                               BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                               BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                               Quantity := ifexpr( isCapacity,
                                                                   MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
                                                                   MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) )
                                                                   // todo QID 23
                                                                   MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
                                               );  
        // S&OP
        traverse( macroPlans, Elements, macroPlan ) {
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-" + macroPlan.ScenarioName(),
                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                 Quantity := ifexpr( isCapacity,
                                                                     Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
                                                                     // todo
                                                                     0.0 )
                                                 ); 
        }                    
@@ -79,16 +85,16 @@
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-目标",
                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
                                                                     MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) )
                                                                     MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
                                                 );  
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew, 
                                                   TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
                                                                       0.0 )
@@ -106,17 +112,17 @@
    //      info( "seasonNo : " + [String]seasonNo );
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "季度-目标",
                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
                                                                     MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) )
                                                                     MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
                                                 );  
    //      info( "productCodeList : " + [String]productCodeList.Size() );
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew, 
                                                   TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "季度-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
                                                                       0.0 )
@@ -127,20 +133,21 @@
    }
    if ( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "月" ) {
      for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) {
        monthNoString := ifexpr( monthNo <= 9, "0" + [String]monthNo, [String]monthNo );
        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByPlaceOfProductionOfArray( rows, placeOfProductionOfArray );
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "月-目标",
                                                 BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                                 TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "月-目标",
                                                 BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
                                                                     MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) )
                                                                     MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
                                                 );  
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew, 
                                                   TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "月-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrOrgCode := placeOfProductionOfArray,
                                                   TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "月-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
                                                                       0.0 )
@@ -155,16 +162,16 @@
        productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
        this.CapacityAndSaleBudgeChartElement( relnew, 
                                               TimeStringAndScenarioName := [String]year + "å¹´-目标",
                                               BusinessTypeOrOrgCode := businessType,
                                               BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                               Quantity := ifexpr( isCapacity,
                                                                   MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
                                                                   MappingForecast::GetQuantityByYear( productCodeList, mappingParent, [Number]year ) )
                                                                   MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
                                               );  
        // S&OP
        traverse( macroPlans, Elements, macroPlan ) {
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-" + macroPlan.ScenarioName(),
                                                 BusinessTypeOrOrgCode := businessType,
                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                 Quantity := ifexpr( isCapacity,
                                                                     Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
                                                                     0.0 )
@@ -178,16 +185,16 @@
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-目标",
                                                 BusinessTypeOrOrgCode := businessType,
                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
                                                                     MappingForecast::GetQuantityByHalfYear( productCodeList, mappingParent, [Number]year, halfNo ) )
                                                                     MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
                                                 );  
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew, 
                                                   TimeStringAndScenarioName := [String]year + "å¹´-" + ifexpr( halfNo = 1, "上", "下" ) + "半年-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrOrgCode := businessType,
                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
                                                                       0.0 )
@@ -202,16 +209,16 @@
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "季度-目标",
                                                 BusinessTypeOrOrgCode := businessType,
                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
                                                                     MappingForecast::GetQuantityBySeason( productCodeList, mappingParent, [Number]year, seasonNo ) )
                                                                     MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
                                                 );  
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew, 
                                                   TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]seasonNo + "季度-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrOrgCode := businessType,
                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
                                                                       0.0 )
@@ -222,20 +229,21 @@
    }
    if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "月" ) {
      for( monthNo := 1; monthNo <= 12; monthNo := monthNo + 1 ) {
        monthNoString := ifexpr( monthNo <= 9, "0" + [String]monthNo, [String]monthNo );
        traverse( businessTypeList, Elements, businessType ) {
          productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
          this.CapacityAndSaleBudgeChartElement( relnew, 
                                                 TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "月-目标",
                                                 BusinessTypeOrOrgCode := businessType,
                                                 TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "月-目标",
                                                 BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                 Quantity := ifexpr( isCapacity,
                                                                     MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
                                                                     MappingForecast::GetQuantityByMonth( productCodeList, mappingParent, [Number]year, monthNo ) )
                                                                     MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
                                                 );  
          // S&OP
          traverse( macroPlans, Elements, macroPlan ) {
            this.CapacityAndSaleBudgeChartElement( relnew, 
                                                   TimeStringAndScenarioName := [String]year + "å¹´-第" + [String]monthNo + "月-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrOrgCode := businessType,
                                                   TimeStringAndScenarioName := [String]year + "å¹´-第" + monthNoString + "月-" + macroPlan.ScenarioName(),
                                                   BusinessTypeOrPlaceOfProductionOfArray := businessType,
                                                   Quantity := ifexpr( isCapacity,
                                                                       Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
                                                                       0.0 )
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
@@ -52,7 +52,7 @@
        // è®°å½•每行包含哪些product
        CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode );
      } else {
    //    info( "111111" );
        info( "no boms for product : " + productCode );
      }
    }
    info( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() );
@@ -71,32 +71,29 @@
    // æ ¼å¼ï¼š é¢æ¿åˆ†é…é‡ - å¹´ - æœˆï¼ˆ1-12 & total) - å¹´åº¦é¢„ç®—/scenarioName
    info( "dealing é¢æ¿åˆ†é…é‡" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "面板分配量" ) ) {
      // åŽ†å²æ•°æ®
      traverse( months, Elements, month ) {
        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]month.MonthNo() + "月-年度预算" );
      traverse( years, Elements, year ) {
        // åŽ†å²æ•°æ®
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            cellReal := MappingCapacityAndSaleBudge::GetSheetByMonth( row.GetProductCodes(), mpSync, DateTime::Now().Year(), month.MonthNo() );
            cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
          }
        }
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-total-年度预算" );
        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
          cellReal := MappingCapacityAndSaleBudge::GetSheetByMonth( row.GetProductCodes(), mpSync, DateTime::Now().Year(), month.MonthNo() );
    //      cellReal := Real::Random( 1.0, 999.0 );
          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cellReal := MappingCapacityAndSaleBudge::GetSheetByYear( row.GetProductCodes(), mpSync, year.YearNo() );
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
      }
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-total-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        cellReal := MappingCapacityAndSaleBudge::GetSheetByYear( row.GetProductCodes(), mpSync, DateTime::Now().Year() );
    //    cellReal := Real::Random( 1.0, 999.0 );
        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
      }
      // S&OP数据
      traverse( years, Elements, year ) {
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, 
                                                                                    "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-" + macroPlan.ScenarioName() );
            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
              cellReal := Product_MP::GetNewSupplyByMonth( row.GetProductCodes(), macroPlan, year.YearNo(), month.MonthNo() );
    //          cellReal := Real::Random( 1.0, 999.0 );
              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
            }
@@ -105,7 +102,6 @@
                                                                                 "面板分配量-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            cellReal := Product_MP::GetNewSupplyByYear( row.GetProductCodes(), macroPlan, year.YearNo() );
    //        cellReal := Real::Random( 1.0, 999.0 );
            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
          }
@@ -115,37 +111,36 @@
    // å¹´åº¦é”€å”®é¢
    info( "dealing é”€å”®é¢" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "销售额" ) ) {
      // åŽ†å²æ•°æ®
      traverse( months, Elements, month ) {
        columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + "-" + [String]month.MonthNo() + "月-年度预算" );
      traverse( years, Elements, year ) {
        // åŽ†å²æ•°æ®
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            cellReal := MappingCapacityAndSaleBudge::GetSaleByMonth( row.GetProductCodes(), mpSync, year.YearNo(), month.MonthNo() );
            cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
          }
        }
        columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-年度预算" );
        traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
          cellReal := MappingCapacityAndSaleBudge::GetSaleByMonth( row.GetProductCodes(), mpSync, DateTime::Now().Year(), month.MonthNo() );
    //      cellReal := Real::Random( 1.0, 999.0 );
          cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cellReal := MappingCapacityAndSaleBudge::GetSaleByYear( row.GetProductCodes(), mpSync, year.YearNo() );
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
      }
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-total-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        cellReal := MappingCapacityAndSaleBudge::GetSaleByYear( row.GetProductCodes(), mpSync, DateTime::Now().Year() );
    //    cellReal := Real::Random( 1.0, 999.0 );
        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
      }
      // S&OP数据
      traverse( years, Elements, year ) {
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
            columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-" + macroPlan.ScenarioName() );
            traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
              cellReal := MappingForecast::GetBalanceByMonth( row.GetProductCodes(), mappingParent, year.YearNo(), month.MonthNo() );
              cellReal := MappingAnnualBudget::GetSaleByMonth( row.GetProductCodes(), mpSync, year.YearNo(), month.MonthNo() );
              cell := columnMonth.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
              cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
            }
          }
          columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-total-" + macroPlan.ScenarioName() );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
            cellReal := MappingForecast::GetBalanceByYear( row.GetProductCodes(), mappingParent, year.YearNo() );
            // QID 23
            cellReal := MappingAnnualBudget::GetSaleByYear( row.GetProductCodes(), mpSync, year.YearNo() );
            cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
            cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
          }
@@ -158,7 +153,8 @@
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        // todo
        // todo
        // QID 23
        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
      }
@@ -178,6 +174,7 @@
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-年度预算" );
      traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
        // todo
        // QID 23
        cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) );
        cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
      }
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -43,5 +43,25 @@
        Taborder: 42
      ]
    }
    Component DataHolderCapacityAndSaleBudgeFilterBusinessType
    {
      #keys: '[414384.0.874472860]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[CapacityAndSaleBudgeFilterBusinessType]*'
      Properties:
      [
        Taborder: 43
      ]
    }
    Component DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
    {
      #keys: '[414384.0.874472866]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[CapacityAndSaleBudgeFilterPlaceOfProductionOfArray]*'
      Properties:
      [
        Taborder: 44
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -12,6 +12,7 @@
      Properties:
      [
        DataType: 'MPSync'
        FixedFilter: 'object.YearNo() = Date::ActualDate().Year()'
        Source: 'MPSync'
        Taborder: 0
        Transformation: 'MappingCapacityAndSaleBudge'
@@ -28,7 +29,7 @@
      ]
      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":"LineAndSpecification","title":"LineAndSpecification","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpecification"}},{"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":"CapacityInPCSInMonth3","title":"CapacityInPCSInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth4","title":"CapacityInPCSInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth5","title":"CapacityInPCSInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth6","title":"CapacityInPCSInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth7","title":"CapacityInPCSInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth8","title":"CapacityInPCSInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth9","title":"CapacityInPCSInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth10","title":"CapacityInPCSInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth11","title":"CapacityInPCSInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth12","title":"CapacityInPCSInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth12"}},{"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":"CapacityInSheetInMonth3","title":"CapacityInSheetInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth4","title":"CapacityInSheetInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth5","title":"CapacityInSheetInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth6","title":"CapacityInSheetInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth7","title":"CapacityInSheetInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth8","title":"CapacityInSheetInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth9","title":"CapacityInSheetInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth10","title":"CapacityInSheetInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth11","title":"CapacityInSheetInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth12","title":"CapacityInSheetInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth12"}},{"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":"SaleAmountInMonth3","title":"SaleAmountInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth5","title":"SaleAmountInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth4","title":"SaleAmountInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth6","title":"SaleAmountInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth7","title":"SaleAmountInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth8","title":"SaleAmountInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth9","title":"SaleAmountInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth10","title":"SaleAmountInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth11","title":"SaleAmountInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth12","title":"SaleAmountInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth12"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountTotal","title":"SaleAmountTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountTotal"}}]'
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Deleted","title":"Deleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Deleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"YearNo","title":"YearNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"YearNo"}},{"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":"LineAndSpecification","title":"LineAndSpecification","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineAndSpecification"}},{"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":"CapacityInPCSInMonth3","title":"CapacityInPCSInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth4","title":"CapacityInPCSInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth5","title":"CapacityInPCSInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth6","title":"CapacityInPCSInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth7","title":"CapacityInPCSInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth8","title":"CapacityInPCSInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth9","title":"CapacityInPCSInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth10","title":"CapacityInPCSInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth11","title":"CapacityInPCSInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInPCSInMonth12","title":"CapacityInPCSInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInPCSInMonth12"}},{"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":"CapacityInSheetInMonth3","title":"CapacityInSheetInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth4","title":"CapacityInSheetInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth5","title":"CapacityInSheetInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth6","title":"CapacityInSheetInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth7","title":"CapacityInSheetInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth8","title":"CapacityInSheetInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth9","title":"CapacityInSheetInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth10","title":"CapacityInSheetInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth11","title":"CapacityInSheetInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CapacityInSheetInMonth12","title":"CapacityInSheetInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CapacityInSheetInMonth12"}},{"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":"SaleAmountInMonth3","title":"SaleAmountInMonth3","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth3"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth5","title":"SaleAmountInMonth5","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth5"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth4","title":"SaleAmountInMonth4","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth4"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth6","title":"SaleAmountInMonth6","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth6"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth7","title":"SaleAmountInMonth7","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth7"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth8","title":"SaleAmountInMonth8","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth8"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth9","title":"SaleAmountInMonth9","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth9"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth10","title":"SaleAmountInMonth10","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth10"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth11","title":"SaleAmountInMonth11","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth11"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SaleAmountInMonth12","title":"SaleAmountInMonth12","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SaleAmountInMonth12"}},{"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
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -11,6 +11,7 @@
  ]
  Properties:
  [
    Title: '产销预算'
    Description: '年度产销预算'
    Title: '年度产销预算'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
@@ -47,7 +47,7 @@
            }
            WebChartConfigGroup
            {
              Label: 'BusinessTypeOrOrgCode'
              Label: 'BusinessTypeOrPlaceOfProductionOfArray'
              SequenceNr: 1
            }
          }
@@ -62,7 +62,7 @@
            }
            WebChartConfigGroup
            {
              Label: 'BusinessTypeOrOrgCode'
              Label: 'BusinessTypeOrPlaceOfProductionOfArray'
              SequenceNr: 1
            }
            Default: 'Stacked bar'
@@ -70,7 +70,7 @@
            MergeStackedBars: true
          }
        *]
        Groups: 'TimeStringAndScenarioName,BusinessTypeOrOrgCode'
        Groups: 'TimeStringAndScenarioName,BusinessTypeOrPlaceOfProductionOfArray'
        Taborder: 0
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
@@ -16,9 +16,10 @@
                                                 CheckboxIsCapacity.Checked(),
                                                 DropDownTimeGroup.Text(),
                                                 DropDownByBusinessTypeOrByOrgCode.Text(),
                                                 DropDownBusinessTypes.Text(),
                                                 DropDownPlaceOfProductionOfArrays.Text(),
                                                 DropDownYears.Text(),
                                                 DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(),
                                                 DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data(),
                                                 DataHolderCapacityAndSaleBudgeFilterYear.Data(),
                                                 DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                                 MPSync, 
                                                 GlobalOTDTable, 
                                                 MacroPlan );
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_OnCreated.def
@@ -9,11 +9,7 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeChartElement::TestData( ScenarioManager );
      DropDownBusinessTypes.Strings( MPSync.CapacityAndSaleBudgeBusinessTypeString() );
      DropDownPlaceOfProductionOfArrays.Strings( MPSync.CapacityAndSaleBudgePlaceOfProductionOfArrayString() );
      DropDownYears.Strings( MPSync::CapacityAndSaleBudgeYearsString() );
      //CapacityAndSaleBudgeChartElement::TestData( ScenarioManager );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def
@@ -26,6 +26,7 @@
      [
        Label: '年份'
        Taborder: 2
        Visible: false
      ]
    }
    Component DropDownBusinessTypes
@@ -37,6 +38,7 @@
        AllowEmpty: true
        Label: '事业部'
        Taborder: 3
        Visible: false
      ]
    }
    Component DropDownPlaceOfProductionOfArrays
@@ -48,6 +50,7 @@
        AllowEmpty: true
        Label: '面板基地'
        Taborder: 4
        Visible: false
      ]
    }
    Component CheckboxIsCapacity
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -21,6 +21,7 @@
  ]
  Properties:
  [
    Title: '产销预算对比'
    Description: '年度产销预算对比'
    Title: '年度产销预算对比'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
Component ListCapacityAndSaleBudgeFilterBusinessType
{
  #keys: '[414384.0.875704540]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorCapacityAndSaleBudgeFilterBusinessType
    {
      #keys: '[414384.0.875704541]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MPSync'
        Source: 'MPSync'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterBusinessType'
      ]
    }
    #child: listActionBarPageCapacityAndSaleBudgeFilterBusinessType
    Component DataSetLevelCapacityAndSaleBudgeFilterBusinessType
    {
      #keys: '[414384.0.875704543]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuCapacityAndSaleBudgeFilterYear_1
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}}]'
        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterYear'
        SortCriteria: 'YearNo'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    SelectionCheckboxes: true
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_listActionBarPageCapacityAndSaleBudgeFilterBusinessType.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageCapacityAndSaleBudgeFilterBusinessType
{
  #keys: '[414384.0.875704542]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_listContextMenuCapacityAndSaleBudgeFilterYear#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
Component listContextMenuCapacityAndSaleBudgeFilterYear id:listContextMenuCapacityAndSaleBudgeFilterYear_1
{
  #keys: '[414384.0.875704544]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuRefresh
    {
      #keys: '[414384.0.875575024]'
      BaseType: 'WebMenu'
      Properties:
      [
        Description: 'Refresh'
        Image: 'ARROW_CIRCLE2'
        Taborder: 3
        Title: 'Refresh'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged#670.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ListCapacityAndSaleBudgeFilterBusinessType
Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged_670
{
  #keys: '[414384.0.875704537]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      DataHolderCapacityAndSaleBudgeFilterBusinessType.Data().Flush();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListCapacityAndSaleBudgeFilterBusinessType
Response OnUserCheckedChanged (
  structured[CapacityAndSaleBudgeFilterBusinessType] checkeditems
) id:Response_ListCapacityAndSaleBudgeFilterBusinessType_OnUserCheckedChanged
{
  #keys: '[414384.0.875704536]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      DataHolderCapacityAndSaleBudgeFilterBusinessType.Data( checkeditems.Copy() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: listContextMenuCapacityAndSaleBudgeFilterYear_1/MenuRefresh
Response OnClick () id:Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick
{
  #keys: '[414384.0.875575116]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      MPSync.RefreshCapacityAndSaleBudgeFilter();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/_ROOT_Component_FormCapacityAndSaleBudgeFilterBusinessType.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormCapacityAndSaleBudgeFilterBusinessType
{
  #keys: '[414384.0.875704417]'
  BaseType: 'WebForm'
  Children:
  [
    #child: ListCapacityAndSaleBudgeFilterBusinessType
  ]
  Properties:
  [
    Description: '年度产销预算事业部筛选'
    Title: '年度产销预算事业部筛选'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/_ROOT_Component_FormCapacityAndSaleBudgeFilterItem.def
@@ -11,6 +11,7 @@
  ]
  Properties:
  [
    Title: '产销预算对比项筛选'
    Description: '年度产销预算对比项'
    Title: '年度产销预算对比项'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/_ROOT_Component_FormCapacityAndSaleBudgeFilterMonth.def
@@ -11,6 +11,7 @@
  ]
  Properties:
  [
    Title: '产销预算对比月份筛选'
    Description: '年度产销预算月份筛选'
    Title: '年度产销预算月份筛选'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
Component ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
{
  #keys: '[414384.0.875704517]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
    {
      #keys: '[414384.0.875704518]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MPSync'
        Source: 'MPSync'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterPlaceOfProductionOfArray'
      ]
    }
    #child: listActionBarPageCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
    Component DataSetLevelCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
    {
      #keys: '[414384.0.875704520]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuCapacityAndSaleBudgeFilterYear_1
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlaceOfProductionOfArray","title":"PlaceOfProductionOfArray","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlaceOfProductionOfArray"}}]'
        ContextMenu: 'listContextMenuCapacityAndSaleBudgeFilterYear'
        SortCriteria: 'YearNo'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    SelectionCheckboxes: true
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_listActionBarPageCapacityAndSaleBudgeFilterPlaceOfProductionOfArra.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
{
  #keys: '[414384.0.875704519]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_listContextMenuCapacityAndSaleBudgeFilterYear#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
Component listContextMenuCapacityAndSaleBudgeFilterYear id:listContextMenuCapacityAndSaleBudgeFilterYear_1
{
  #keys: '[414384.0.875704521]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuRefresh id:MenuRefresh_332
    {
      #keys: '[414384.0.875925487]'
      BaseType: 'WebMenu'
      Properties:
      [
        Description: 'Refresh'
        Image: 'ARROW_CIRCLE2'
        Taborder: 3
        Title: 'Refresh'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCh#171.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
Response OnUserCheckedChanged () id:Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCheckedChanged_171
{
  #keys: '[414384.0.875704514]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      DataHolderCapacityAndSaleBudgeFilterYear.Data().Flush();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserChecke.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
Response OnUserCheckedChanged (
  structured[CapacityAndSaleBudgeFilterYear] checkeditems
) id:Response_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray_OnUserCheckedChanged
{
  #keys: '[414384.0.875704513]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserCheckedChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      DataHolderCapacityAndSaleBudgeFilterYear.Data( checkeditems.Copy() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC#663.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: listContextMenuCapacityAndSaleBudgeFilterYear_1/MenuRefresh_332
Response OnClick () id:Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick_663
{
  #keys: '[414384.0.875925486]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      MPSync.RefreshCapacityAndSaleBudgeFilter();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/_ROOT_Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
{
  #keys: '[414384.0.875704457]'
  BaseType: 'WebForm'
  Children:
  [
    #child: ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray
  ]
  Properties:
  [
    Description: '年度产销预算面板基地筛选'
    Title: '年度产销预算面板基地筛选'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/_ROOT_Component_FormCapacityAndSaleBudgeFilterYear.def
@@ -11,6 +11,7 @@
  ]
  Properties:
  [
    Title: '产销预算对比年份筛选'
    Description: '年度产销预算年份筛选'
    Title: '年度产销预算年份筛选'
  ]
}