yanweiyuan3
2023-10-07 b18e4004f21e9ec18e2984630888f6626befeb55
Merge branch 'dev' into dev_yy
已重命名5个文件
已复制1个文件
已修改62个文件
已添加139个文件
已删除16个文件
7749 ■■■■■ 文件已修改
LibMacroPlanner/BL/Relations/Relation_MPSync_ImportExcel_ImportExcel_MPSync.qbl 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Type_UnitPeriodTimeBase/Function_CalcTotalAvailableCapacity.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibSOPImportExport/BL/Type_LibSOPImpExp_DataSource/Method_HasAllRequiredFilesForImport#522.qbl 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibSOPImportExport/BL/Type_LibSOPImpExp_DataSource/Method_HasAllRequiredFilesForImport.qbl 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibSOPImportExport/BL/Type_LibSOPImpExp_ImportExcel/Method_CanImport#382.qbl 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibSOPImportExport/metadata.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_GlobalOTDTable_CustomerGrade.qbl 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_GlobalOTDTable_DOI_DSI.qbl 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/KnowledgeBaseDomain_MacroPlanner/KnowledgeBase_Knowledge_MP/_ROOT_KnowledgeBase_Knowledge_MP.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_Capa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_Capacity.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_Ca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTabl.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSal.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_Capaci.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_Capac.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_G.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_Ca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_Capaci.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_GlobalOTDTable_Global_ShowCell_Global_ShowCell_GlobalOTDTable.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_GlobalOTDTable_Global_ShowColumn_Global_ShowColumn_GlobalOTDTable.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_GlobalOTDTable_Global_ShowRow_Global_ShowRow_GlobalOTDTable.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_Ma.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingD.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_ShowColumn_Global_ShowCell_Global_ShowCell_Global_ShowColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_ShowRow_Global_ShowCell_Global_ShowCell_Global_ShowRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_YuxTest_MPSync_MPSync_YuxTest.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerOrderID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_RefreshData.qbl 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_CustomerPolicy.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_IsAvailable.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_OrderTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_OrderType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_ProductGrade.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_SegmentPriority.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_SheetProfitability.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart#156.qbl 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart.qbl 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompare.qbl 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompareExport.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_SetIsLinkedWithFinishedGoodAttributes.qbl 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_Test.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderTime.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType#905.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductGrade.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomOrder/Attribute_SegmentPriority.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomOrder/Attribute_SheetProfitability.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_BusinessType.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_Customer.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_CustomerGrade.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomerGrade/TypeIndex_Global_MappingCustomerGradeTypeIndex.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCustomerGrade/_ROOT_Type_Global_MappingCustomerGrade.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DOI.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DSI.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_OrganCode.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_ProductID.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingDOI_DSI/TypeIndex_Global_MappingDOI_DSITypeIndex.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingDOI_DSI/_ROOT_Type_Global_MappingDOI_DSI.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/Attribute_BOMCount.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/Method_SetIsLinkedWithFinishedGoodAttributes_Recursive.qbl 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowCell/Attribute_Value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowCell/StaticMethod_ShowData.qbl 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowCell/_ROOT_Type_Global_ShowCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowColumn/Attribute_ColumnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowColumn/Attribute_ColumnName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowColumn/_ROOT_Type_Global_ShowColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ShowRow/_ROOT_Type_Global_ShowRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ImportExcel/Method_Execute.qbl 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ImportExcel/_ROOT_Type_ImportExcel.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibSOPImpExp_ExportExcel/StaticMethod_IsDataSourceIncluded_Tianma.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibSOPImpExp_ExportExcel/_ROOT_Type_LibSOPImpExp_ExportExcel.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_ImportExcels_Tianma.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter#323.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter0.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_ImportExcels_Tianma.qbl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityFactor/Attribute_ReflectionAttribute.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityFactor/Attribute_ReflectionType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/Attribute_CustomerOrderID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/FunctionOverride_CalcStockLevelInDays.qbl 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScenarioManager/Method_ImportExcels_Tianma.qbl 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestBoolean.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestDateTime.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestReal.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestString.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/StaticMethod_Export.qbl 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/StaticMethod_ExportTest#887.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/_ROOT_Type_YuxTest.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_TIANMA_JITUAN_mbMainMenu_MenuGlobalOTDTableTest_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews#633.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInterfaceTest.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef#1.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonPriority_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlContent.def 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_CalculatePriorityResult.def 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_OpenChoose.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/_ROOT_Component_DialogChoosePriorityPolicy.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Component_pnlActions.def 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Component_pnlContent.def 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Method_ClickBynOk.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Method_EditCustomerOrderPriority.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Response_pnlActions_btnApply_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Response_pnlActions_btnOk_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/_ROOT_Component_DialogEditCustomerOrderPriority.def 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportTest_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC#663.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_listContextMenuSD.def 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuEditCustomerOrderPriority_OnClic.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuPriorityResult_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_PanelButton.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuDelete_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuSelectAll_OnClick.def 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listActionBarPageInterfaceTest.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuCreateShowData_OnClick.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_DataHolderPriorityFactorBusinessType_OnCreated.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_DataHolderPriorityFactorBusinessType_OnDataChanged.def 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_DropDownStringListBusinessType_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/_ROOT_Component_FormPriorityFactor.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Component_PanelPriorityPolicyOperationButton#713.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyBusinessType_OnCreated.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyBusinessType_OnDataChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyFactor_OnCreated.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyFactor_OnDataChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_PanelPriorityPolicyOperationButton_DropDownStringList_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_PriorityPolicyBusinessType_OnSelectionChanged.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/_ROOT_Component_FormPriorityPolicy.def 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_MatrixEditorShowInterfaceData.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_matrixEditorActionBarPageShowInterfaceData.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_matrixeditorContextMenuShowInterfaceData.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/_ROOT_Component_FormShowInterfaceData.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/PriorityTest.vw 2745 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Test.vw 794 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/接口测试.vw 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Relations/Relation_MPSync_ImportExcel_ImportExcel_MPSync.qbl
@@ -12,7 +12,6 @@
    Cardinality: '1toN'
    ObjectDefinition: MPSync
    OwningSide: 'Owned'
    InterfaceProperties { Accessibility: 'Module' }
  }
  RelationSide.RightSide MPSync
  {
@@ -20,6 +19,5 @@
    Cardinality: '0to1'
    ObjectDefinition: ImportExcel
    OwningSide: 'Reference'
    InterfaceProperties { Accessibility: 'Module' }
  }
}
LibMacroPlanner/BL/Type_UnitPeriodTimeBase/Function_CalcTotalAvailableCapacity.qbl
@@ -16,7 +16,8 @@
                               
      if( not isnull( planningup ) )
      {
         value := planningup.BaseAvailableCapacity().HoursAsReal() * planningup.MaximumLoadPercentage() / 100;
         value := planningup.BaseAvailableCapacity().HoursAsReal() * planningup.MaximumLoadPercentage() / 100
                  * this.PlanningSystemRatio(); // Tianma fix 20230926
      }
    }
    else
LibSOPImportExport/BL/Type_LibSOPImpExp_DataSource/Method_HasAllRequiredFilesForImport#522.qbl
@@ -1,6 +1,9 @@
Quintiq file version 2.0
#parent: #root
Method HasAllRequiredFilesForImport (output Strings missingFiles_o, Boolean needUserUploadAllFiles) as Boolean
Method HasAllRequiredFilesForImport (
  output Strings missingFiles_o,
  Boolean needUserUploadAllFiles
) remote as Boolean
{
  TextBody:
  [*
LibSOPImportExport/BL/Type_LibSOPImpExp_DataSource/Method_HasAllRequiredFilesForImport.qbl
@@ -1,6 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method HasAllRequiredFilesForImport (output Strings missingFiles_o) as Boolean
Method HasAllRequiredFilesForImport (
  output Strings missingFiles_o
) remote as Boolean
{
  TextBody:
  [*
LibSOPImportExport/BL/Type_LibSOPImpExp_ImportExcel/Method_CanImport#382.qbl
@@ -1,6 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method CanImport (output Strings missingFiles_o) as Boolean
Method CanImport (
  output Strings missingFiles_o
) remote as Boolean
{
  Description: 'Checks if necessary files are sufficent before starting import.'
  TextBody:
LibSOPImportExport/metadata.properties
@@ -5,4 +5,4 @@
system=false
version.component=2022.3.0.0
version.fileformat=2
version.quintiq=6.3.3.0 NightlyBuild 247983, build 247983
version.quintiq=6.3.3.0 , build 248673
_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
@@ -21,12 +21,16 @@
      EDIMLColumn OrderDate { Attribute: OrderDate ValueType: Date }
      EDIMLColumn OrderID { Attribute: OrderID ValueType: String }
      EDIMLColumn OrderLineID { Attribute: OrderLineID ValueType: String }
      EDIMLColumn OrderTime { Attribute: OrderTime ValueType: Date }
      EDIMLColumn OrderType { Attribute: OrderType ValueType: String }
      EDIMLColumn Price { Attribute: Price ValueType: Real }
      EDIMLColumn PriorityName { Attribute: PriorityName ValueType: String }
      EDIMLColumn ProductGrade { Attribute: ProductGrade ValueType: String }
      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
      EDIMLColumn Quantity { Attribute: Quantity ValueType: Real }
      EDIMLColumn SalesSegmentName { Attribute: SalesSegmentName ValueType: String }
      EDIMLColumn SegmentPriority { Attribute: SegmentPriority ValueType: String }
      EDIMLColumn SheetProfitability { Attribute: SheetProfitability ValueType: String }
      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
    }
@@ -93,7 +97,7 @@
      EDIODBCLinkColumn ORDERTIME
      {
        OthersMayUpdateColumn: true
        ValueType: String
        ValueType: DateTime
      }
      EDIODBCLinkColumn ORDERTYPE
      {
@@ -184,12 +188,33 @@
      }
      EDIColumnMatch { InputColumn: ORDERID OutputColumn: OrderID }
      EDIColumnMatch { InputColumn: ORDERLINEID OutputColumn: OrderLineID }
      EDIColumnMatch { InputColumn: ORDERTIME OutputColumn: OrderType }
      EDIColumnMatch
      {
        InputColumn: ORDERTIME
        OutputColumn: OrderTime
        Converter
        {
          XMLDefinition:
          [*
            <?xml version="1.0" encoding="UTF-16"?>
            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
              <IsStandard>true</IsStandard>
              <IsISO>false</IsISO>
              <IsCustom>false</IsCustom>
              <ConversionType>0</ConversionType>
            </DateTimeToDate>
          *]
        }
      }
      EDIColumnMatch { InputColumn: ORDERTYPE OutputColumn: OrderType }
      EDIColumnMatch { InputColumn: PRICE OutputColumn: Price }
      EDIColumnMatch { InputColumn: PRIORITYNAME OutputColumn: PriorityName }
      EDIColumnMatch { InputColumn: PRODUCTGRADE OutputColumn: ProductGrade }
      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
      EDIColumnMatch { InputColumn: QUANTITY OutputColumn: Quantity }
      EDIColumnMatch { InputColumn: SALESEGMENTNAME OutputColumn: SalesSegmentName }
      EDIColumnMatch { InputColumn: SEGMENTPRIORITY OutputColumn: SegmentPriority }
      EDIColumnMatch { InputColumn: SHEETPROFITABILITY OutputColumn: SheetProfitability }
      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
    }
_Main/BL/EDI/Broker_GlobalOTDTable_CustomerGrade.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
Quintiq file version 2.0
#parent: #root
EDIBroker GlobalOTDTable_CustomerGrade
{
  MDSDefinition: GlobalOTDTable
  TimeZone: 'ACT'
  UseOSTimeZone: false
  EDIModelLink.Destination Destination16
  {
    EDIMLTable Global_MappingCustomerGrade
    {
      PrimaryKeyColumns: BusinessType
      PrimaryKeyColumns: Customer
      PrimaryKeyColumns: CustomerGrade
      TargetType: Global_MappingCustomerGrade
      TypeIndex: Global_MappingCustomerGradeTypeIndex
      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
      EDIMLColumn Customer { Attribute: Customer ValueType: String }
      EDIMLColumn CustomerGrade { Attribute: CustomerGrade ValueType: String }
    }
  }
  EDIODBCLink.Source Source15
  {
    DataIntegrityStrategy: 'Disabled'
    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
    EDIODBCLinkTable MID_CUSTOMERGRADE
    {
      OthersMayCreateTable: true
      OthersMayDeleteRow: true
      OthersMayDropTable: true
      OthersMayFlushTable: true
      OthersMayInsertRow: true
      Parameters: '/owner="OTD"'
      PrimaryKeyColumns: CUSTOMER
      RecordModificationHintStrategy: 'None'
      EDIODBCLinkColumn BUSINESSTYPE
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn CUSTOMER
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn CUSTOMERGRADE
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
    }
  }
  EDITransformation.Transformation Transformation15
  {
    EDITableTransformation
    {
      InputTable: MID_CUSTOMERGRADE
      OutputTable: Global_MappingCustomerGrade
      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
      EDIColumnMatch { InputColumn: CUSTOMER OutputColumn: Customer }
      EDIColumnMatch { InputColumn: CUSTOMERGRADE OutputColumn: CustomerGrade }
    }
  }
}
_Main/BL/EDI/Broker_GlobalOTDTable_DOI_DSI.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
Quintiq file version 2.0
#parent: #root
EDIBroker GlobalOTDTable_DOI_DSI
{
  MDSDefinition: GlobalOTDTable
  TimeZone: 'ACT'
  UseOSTimeZone: false
  EDIModelLink.Destination Destination15
  {
    EDIMLTable Global_MappingDOI_DSI
    {
      PrimaryKeyColumns: OrganCode
      PrimaryKeyColumns: ProductID
      TargetType: Global_MappingDOI_DSI
      TypeIndex: Global_MappingDOI_DSITypeIndex
      EDIMLColumn DOI { Attribute: DOI ValueType: String }
      EDIMLColumn DSI { Attribute: DSI ValueType: String }
      EDIMLColumn OrganCode { Attribute: OrganCode ValueType: String }
      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
    }
  }
  EDIODBCLink.Source Source14
  {
    DataIntegrityStrategy: 'Disabled'
    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
    EDIODBCLinkTable MID_DOI_DSI
    {
      OthersMayCreateTable: true
      OthersMayDeleteRow: true
      OthersMayDropTable: true
      OthersMayFlushTable: true
      OthersMayInsertRow: true
      Parameters: '/owner="OTD"'
      PrimaryKeyColumns: ORGANCODE
      PrimaryKeyColumns: PRODUCTID
      RecordModificationHintStrategy: 'None'
      EDIODBCLinkColumn DOI
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn DSI
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn ORGANCODE
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn PRODUCTID
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
    }
  }
  EDITransformation.Transformation Transformation14
  {
    EDITableTransformation
    {
      InputTable: MID_DOI_DSI
      OutputTable: Global_MappingDOI_DSI
      EDIColumnMatch { InputColumn: DOI OutputColumn: DOI }
      EDIColumnMatch { InputColumn: DSI OutputColumn: DSI }
      EDIColumnMatch { InputColumn: ORGANCODE OutputColumn: OrganCode }
      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
    }
  }
}
_Main/BL/KnowledgeBaseDomain_MacroPlanner/KnowledgeBase_Knowledge_MP/_ROOT_KnowledgeBase_Knowledge_MP.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #root
KnowledgeBase Knowledge_MP #extension
{
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_Capa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeChartElement
{
  #keys: '1[414384.0.921264786]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264788][414384.0.921264787][414384.0.921264789]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeChartElement
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeChartElement
  {
    #keys: '3[414384.0.921264791][414384.0.921264790][414384.0.921264792]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_Capacity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeChartRow
{
  #keys: '1[414384.0.921264769]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264771][414384.0.921264770][414384.0.921264772]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeChartRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeChartRow
  {
    #keys: '3[414384.0.921264774][414384.0.921264773][414384.0.921264775]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeCompareItemColumn
{
  #keys: '1[414384.0.921264730]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][414384.0.921264749][414384.0.921264743][414384.0.921264750][414384.0.921264744][414384.0.921264751][414384.0.921264745][414384.0.921264752][414384.0.921264746][414384.0.921264753][414384.0.921264747][414384.0.921264754][414384.0.921264748]'
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264732][414384.0.921264731][414384.0.921264733]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeCompareItemColumn
  {
    #keys: '3[414384.0.921264735][414384.0.921264734][414384.0.921264736]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_Ca.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeCompareItemRow
{
  #keys: '1[414384.0.921264713]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264715][414384.0.921264714][414384.0.921264716]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRow
  {
    #keys: '3[414384.0.921264718][414384.0.921264717][414384.0.921264719]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTabl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterBusinessType
{
  #keys: '1[414384.0.921264696]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264698][414384.0.921264697][414384.0.921264699]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterBusinessType
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterBusinessType
  {
    #keys: '3[414384.0.921264701][414384.0.921264700][414384.0.921264702]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSal.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterItem
{
  #keys: '1[414384.0.921264679]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264681][414384.0.921264680][414384.0.921264682]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterItem
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterItem
  {
    #keys: '3[414384.0.921264684][414384.0.921264683][414384.0.921264685]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_Capac.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterMonth
{
  #keys: '1[414384.0.921264662]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264664][414384.0.921264663][414384.0.921264665]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterMonth
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterMonth
  {
    #keys: '3[414384.0.921264667][414384.0.921264666][414384.0.921264668]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_G.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
{
  #keys: '1[414384.0.921264645]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264647][414384.0.921264646][414384.0.921264648]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
  {
    #keys: '3[414384.0.921264650][414384.0.921264649][414384.0.921264651]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_Ca.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterYear
{
  #keys: '1[414384.0.921264628]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264630][414384.0.921264629][414384.0.921264631]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterYear
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterYear
  {
    #keys: '3[414384.0.921264633][414384.0.921264632][414384.0.921264634]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_GlobalOTDTable_Global_ShowCell_Global_ShowCell_GlobalOTDTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation GlobalOTDTable_Global_ShowCell_Global_ShowCell_GlobalOTDTable
{
  #keys: '1[414702.0.483720679]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_ShowCell
  {
    #keys: '3[414702.0.483720681][414702.0.483720680][414702.0.483720682]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide GlobalOTDTable
  {
    #keys: '3[414702.0.483720684][414702.0.483720683][414702.0.483720685]'
    Cardinality: '0to1'
    ObjectDefinition: Global_ShowCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_GlobalOTDTable_Global_ShowColumn_Global_ShowColumn_GlobalOTDTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation GlobalOTDTable_Global_ShowColumn_Global_ShowColumn_GlobalOTDTable
{
  #keys: '1[414702.0.483720692]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_ShowColumn
  {
    #keys: '3[414702.0.483720694][414702.0.483720693][414702.0.483720695]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide GlobalOTDTable
  {
    #keys: '3[414702.0.483720697][414702.0.483720696][414702.0.483720698]'
    Cardinality: '0to1'
    ObjectDefinition: Global_ShowColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_GlobalOTDTable_Global_ShowRow_Global_ShowRow_GlobalOTDTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation GlobalOTDTable_Global_ShowRow_Global_ShowRow_GlobalOTDTable
{
  #keys: '1[414702.0.483720663]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_ShowRow
  {
    #keys: '3[414702.0.483720665][414702.0.483720664][414702.0.483720666]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
  RelationSide.RightSide GlobalOTDTable
  {
    #keys: '3[414702.0.483720668][414702.0.483720667][414702.0.483720669]'
    Cardinality: '0to1'
    ObjectDefinition: Global_ShowRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_Ma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_MappingCustomerGrade
{
  #keys: '1[414702.0.445485678]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414702.0.445485680][414702.0.445485679][414702.0.445485681]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingCustomerGrade
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_MappingCustomerGrade
  {
    #keys: '3[414702.0.445485683][414702.0.445485682][414702.0.445485684]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingD.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingDOI_DSI
{
  #keys: '1[414702.0.445364657]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414702.0.445364659][414702.0.445364658][414702.0.445364660]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingDOI_DSI
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_MappingDOI_DSI
  {
    #keys: '3[414702.0.445364662][414702.0.445364661][414702.0.445364663]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_Global_ShowColumn_Global_ShowCell_Global_ShowCell_Global_ShowColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_ShowColumn_Global_ShowCell_Global_ShowCell_Global_ShowColumn
{
  #keys: '1[414702.0.483720723]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_ShowCell
  {
    #keys: '3[414702.0.483720725][414702.0.483720724][414702.0.483720726]'
    Cardinality: '1toN'
    ObjectDefinition: Global_ShowColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_ShowColumn
  {
    #keys: '3[414702.0.483720728][414702.0.483720727][414702.0.483720729]'
    Cardinality: '0to1'
    ObjectDefinition: Global_ShowCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_ShowRow_Global_ShowCell_Global_ShowCell_Global_ShowRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_ShowRow_Global_ShowCell_Global_ShowCell_Global_ShowRow
{
  #keys: '1[414702.0.483720707]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_ShowCell
  {
    #keys: '3[414702.0.483720709][414702.0.483720708][414702.0.483720710]'
    Cardinality: '1toN'
    ObjectDefinition: Global_ShowRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_ShowRow
  {
    #keys: '3[414702.0.483720712][414702.0.483720711][414702.0.483720713]'
    Cardinality: '0to1'
    ObjectDefinition: Global_ShowCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_YuxTest_MPSync_MPSync_YuxTest.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation YuxTest_MPSync_MPSync_YuxTest
{
  #keys: '1[414384.0.915854641]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MPSync
  {
    #keys: '3[414384.0.915854643][414384.0.915854642][414384.0.915854644]'
    Cardinality: '0to1'
    ObjectDefinition: YuxTest
    OwningSide: 'Reference'
  }
  RelationSide.RightSide YuxTest
  {
    #keys: '3[414384.0.915854646][414384.0.915854645][414384.0.915854647]'
    Cardinality: '1toN'
    ObjectDefinition: MPSync
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_BusinessType/StaticMethod_GetBusinessNameStr.qbl
@@ -7,7 +7,6 @@
  TextBody:
  [*
    // NBoTk Sep-7-2023 (created)
    // èŽ·å–businessType é›†åˆ
    result := "";
    businessTypeList := construct( structured[String]);
_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod TestData (
  ScenarioManager scenarioManager
  GlobalOTDTable parent
)
{
  Description: '生成测试数据'
@@ -11,7 +11,7 @@
    
    info( "生成年度产销预算报表测试数据" )
    
    scenarioManager.CapacityAndSaleBudgeChartElement( relflush );
    parent.CapacityAndSaleBudgeChartElement( relflush );
    
    for( sc := 0; sc < 4; sc := sc + 1 ) {
      scenarioName := "SC" + [String]sc;
@@ -19,7 +19,7 @@
        businessTypeString := "BT" + [String]i;
        for( j := 1; j <= 12; j := j + 1 ) {
          monthString := "MONTH" + ifexpr( j < 10, "0" + [String]j, [String]j );
          scenarioManager.CapacityAndSaleBudgeChartElement( relnew,
          parent.CapacityAndSaleBudgeChartElement( relnew,
                                                            BusinessTypeOrPlaceOfProductionOfArray := businessTypeString, 
                                                            TimeStringAndScenarioName := monthString + " - " + scenarioName, 
                                                            Quantity := Real::Random( 20.0, 30.0 ) );
_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager scenarioManager,
  GlobalOTDTable parent,
  String businessType,
  String placeOfProductionOfArray
) as CapacityAndSaleBudgeChartRow
@@ -9,9 +9,9 @@
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    value := select( scenarioManager, CapacityAndSaleBudgeChartRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    value := select( parent, CapacityAndSaleBudgeChartRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    if( isnull( value ) ) {
      value := scenarioManager.CapacityAndSaleBudgeChartRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
      value := parent.CapacityAndSaleBudgeChartRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
    } 
    return value;
  *]
_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
@@ -1,16 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager manager,
  GlobalOTDTable parent,
  String columnName
) as CapacityAndSaleBudgeCompareItemColumn
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    value := select( manager, CapacityAndSaleBudgeCompareItemColumn, item, item.ColumnName() = columnName );
    value := select( parent, CapacityAndSaleBudgeCompareItemColumn, item, item.ColumnName() = columnName );
    if( isnull( value ) ) {
      value := manager.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnName );
      value := parent.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnName );
    }
    return value;
  *]
_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager scenarioManager,
  GlobalOTDTable parent,
  String businessType,
  String placeOfProductionOfArray
) as CapacityAndSaleBudgeCompareItemRow
@@ -9,9 +9,9 @@
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    value := select( scenarioManager, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    value := select( parent, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    if( isnull( value ) ) {
      value := scenarioManager.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
      value := parent.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
    } 
    return value;
  *]
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  MPSync parent,
  GlobalOTDTable parent,
  String value
)
{
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager parent,
  GlobalOTDTable parent,
  String itemName
)
{
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initial (
  ScenarioManager parent
  GlobalOTDTable parent
)
{
  Description: '初始化对比项'
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initial (
  ScenarioManager parent
  GlobalOTDTable parent
)
{
  Description: '初始化年份'
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  MPSync parent,
  GlobalOTDTable parent,
  String value
)
{
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initial (
  ScenarioManager parent
  GlobalOTDTable parent
)
{
  Description: '初始化年份'
_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerOrderID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomerOrderID
{
  #keys: '3[414382.0.554303146][414382.0.554303145][414382.0.554303147]'
  ValueType: String
}
_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ForecastID
{
  #keys: '3[414382.0.554303156][414382.0.554303155][414382.0.554303157]'
  ValueType: String
}
_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_CreateData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateData (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    traverse ( macroPlan, SalesDemand.astype( CustomerOrder ), co, true ) {
      macroPlan.CustomerAndForecastOrder( relnew,
                                          OrderID := co.OrderID(),
                                          ProductID := co.ProductID(),
                                          BusinessType := co.BusinessType(),
                                          Customer := co.CustomerName(),
                                          CustomerID := co.CustomerID(),
                                          Quantity := co.Quantity(),
                                          UnitOfMeasureName := co.UnitOfMeasureName(),
                                          DemandDate := co.StartDate()
                                         );
    }
  *]
}
_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_RefreshData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
Quintiq file version 2.0
#parent: #root
StaticMethod RefreshData (
  MacroPlan owner,
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    // NBoTk Sep-26-2023 (created)
    // èŽ·å–å·²ç»å­˜åœ¨ customerOrderID å’ŒforecastID
    customerOrderIDs := selectvalues( owner,CustomerAndForecastOrder,c,
                                      c.CustomerOrderID() <> '',
                                      c.CustomerID()
                                      );
    forecastIDs := selectvalues( owner,CustomerAndForecastOrder,c,
                                      c.ForecastID() <> '',
                                      c.ForecastID()
                                      );
    // ä»Žæ•°æ®æ¹– Global_MappingCustomerOrder Global_MappingForecast ä¸­èŽ·å–æ–°çš„è®¢å•æ•°æ®
    traverse( globalOTDTable,Global_MappingCustomOrder,cus)
    {
        if ( customerOrderIDs.Find( cus.ID() ) = -1 ) {
             owner.CustomerAndForecastOrder( relnew,
                                             OrderID := cus.OrderID(),
                                             ProductID := cus.ProductID(),
                                             BusinessType := cus.BusinessType(),
                                             Customer := cus.Customer(),
                                             CustomerID := cus.CustomerID(),
                                             Quantity := cus.Quantity(),
                                             UnitOfMeasureName := cus.UnitOfMeasureName(),
                                             DemandDate := cus.OrderDate()
                                            );
        }
    }
    traverse( globalOTDTable,Global_MappingForecast,forecast)
    {
        if(forecastIDs.Find( forecast.ID() ) = -1 ) {
             owner.CustomerAndForecastOrder( relnew,
                                             ProductID := forecast.ProductID(),
                                             BusinessType := forecast.BusinessType(),
                                             Quantity := forecast.Quantity(),
                                             UnitOfMeasureName := forecast.UnitOfMeasureName(),
                                             DemandDate := forecast.EndDate()
                                            );
        }
    }
  *]
}
_Main/BL/Type_CustomerOrder/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[414382.0.554303217][414382.0.554303216][414382.0.554303218]'
  Description: '事业部'
  ValueType: String
}
_Main/BL/Type_CustomerOrder/Attribute_CustomerPolicy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomerPolicy
{
  #keys: '3[414382.0.554014841][414382.0.554014840][414382.0.554014842]'
  Description: '客户策略'
  ValueType: String
}
_Main/BL/Type_CustomerOrder/Attribute_IsAvailable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute IsAvailable
{
  #keys: '3[414382.0.554303237][414382.0.554303236][414382.0.554303238]'
  Description: '订单是否参与计划'
  ValueType: Boolean
}
_Main/BL/Type_CustomerOrder/Attribute_OrderTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderTime
{
  #keys: '3[414382.0.554303277][414382.0.554303276][414382.0.554303278]'
  Description: '订单下单时间'
  ValueType: Date
}
_Main/BL/Type_CustomerOrder/Attribute_OrderType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderType
{
  #keys: '3[414382.0.554303227][414382.0.554303226][414382.0.554303228]'
  Description: '订单类型'
  ValueType: String
}
_Main/BL/Type_CustomerOrder/Attribute_ProductGrade.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductGrade
{
  #keys: '3[414382.0.554303247][414382.0.554303246][414382.0.554303248]'
  Description: '产品等级'
  ValueType: String
}
_Main/BL/Type_CustomerOrder/Attribute_SegmentPriority.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SegmentPriority
{
  #keys: '3[414382.0.554303257][414382.0.554303256][414382.0.554303258]'
  Description: '细分市场优先级'
  ValueType: String
}
_Main/BL/Type_CustomerOrder/Attribute_SheetProfitability.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SheetProfitability
{
  #keys: '3[414382.0.554303267][414382.0.554303266][414382.0.554303268]'
  Description: '大张盈利水平'
  ValueType: String
}
_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl
@@ -34,8 +34,7 @@
    salesSegmentName := salesSegmentNameList.Concatenate( ",")
    
    schemeDate := Date::Today();
    filllingCapacityOrderScheme := owner.FilllingCapacityOrderScheme(relnew,SchemeName := schemeName,SchemeDate := schemeDate,BusinessType := businessType,Customer := customer,CustomerID := customerID,
    owner.FilllingCapacityOrderScheme(relnew,SchemeName := schemeName,SchemeDate := schemeDate,BusinessType := businessType,Customer := customer,CustomerID := customerID,
                                                                      SalesSegmentName := salesSegmentName);
    
    
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart#156.qbl
ÎļþÃû´Ó _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart#95.qbl ÐÞ¸Ä
@@ -25,27 +25,27 @@
    // é¢æ¿åŸºåœ°;事业部
    info( byBusinessTypeOrByOrgCode );
    traverse( businessTypes, Elements, businessType ) {
      info( "businessType : " + businessType.BusinessType() );
      debuginfo( "businessType : " + businessType.BusinessType() );
    }
    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
      info( "placeOfProductionOfArray : " + placeOfProductionOfArray.PlaceOfProductionOfArray() );
      debuginfo( "placeOfProductionOfArray : " + placeOfProductionOfArray.PlaceOfProductionOfArray() );
    }
    traverse( macroPlans, Elements, macroPlan ) {
      info( "macroPlan : " + macroPlan.ScenarioName() );
      debuginfo( "macroPlan : " + macroPlan.ScenarioName() );
    }
    // å¹´ä»½ä¸é€‰æ—¶å…¨é€‰
    if( years.Size() = 0 ) {
      years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, true, item.YearNo() );
    }
    traverse( years, Elements, year ) {
      info( "yearNo : " + [String]year.YearNo() );
      debuginfo( "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() );
      debuginfo( "monthNo : " + [String]month.MonthNo() );
    }
    
    // ====清理旧数据====
@@ -74,7 +74,7 @@
    businessTypeList := selectuniquevalues( historyData, Elements, item, item.BusinessType() );
    // ç”Ÿæˆå›¾è¡¨å…ƒç´ 
    traverse( years, Elements, year ) {
      info( "process year start : " + [String]year.YearNo() );
      debuginfo( "process year start : " + [String]year.YearNo() );
      if( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "å¹´" ) {
        // ç›®æ ‡
        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
@@ -232,7 +232,7 @@
      }
      if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "季度" ) {
        for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) {
          info( "process season start : " + [String]seasonNo );
          debuginfo( "process season start : " + [String]seasonNo );
          traverse( businessTypeList, Elements, businessType ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
            this.CapacityAndSaleBudgeChartElement( relnew, 
@@ -259,7 +259,7 @@
      }
      if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "月" ) {
        traverse( months, Elements, month ) {
          info( "process month start : " + [String]month.MonthNo() );
          debuginfo( "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 );
@@ -282,10 +282,10 @@
                                                     ); 
            }            
          }
          info( "process month end : " + [String]month.MonthNo() );
          debuginfo( "process month end : " + [String]month.MonthNo() );
        }
      }
      info( "process year end : " + [String]year.YearNo() )
      debuginfo( "process year end : " + [String]year.YearNo() )
    }
    //info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() );
    //traverse( this, CapacityAndSaleBudgeChartRow, row ) {
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart.qbl
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompare.qbl
ÎļþÃû´Ó _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl ÐÞ¸Ä
@@ -22,23 +22,23 @@
      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, item.MonthNo() );
    }
    traverse( macroPlans, Elements, item ) {
      info( "scenario : " + item.ScenarioName() );
      debuginfo( "scenario : " + item.ScenarioName() );
    }
    traverse( items, Elements, item ) {
      info( "item : " + item.ItemName() );
      debuginfo( "item : " + item.ItemName() );
    }
    traverse( years, Elements, item ) {
      info( "year : " + [String]item.YearNo() );
      debuginfo( "year : " + [String]item.YearNo() );
    }
    traverse( months, Elements, item ) {
      info( "month : " + [String]item.MonthNo() );
      debuginfo( "month : " + [String]item.MonthNo() );
    }
    // ====清理旧数据====
    this.CapacityAndSaleBudgeCompareItemRow( relflush );
    this.CapacityAndSaleBudgeCompareItemColumn( relflush );
    // ====汇总所有出现的产品====
    historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
    info( "historyData : " + [String]historyData.Size() )
    debuginfo( "historyData : " + [String]historyData.Size() )
    traverse( historyData, Elements, one ) {
      productCode := one.ProductCode();
      MappingBOM::CreateTestData( mappingParent, "事业部" + [String](productCode.Length() mod 3), [String](productCode.Length() mod 4), productCode );
@@ -52,13 +52,13 @@
        // è®°å½•每行包含哪些product
        CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode );
      } else {
        info( "no boms for product : " + productCode );
        debuginfo( "no boms for product : " + productCode );
      }
    }
    info( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() );
    debuginfo( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() );
    // ====从左向右生成列头与内容====
    // äº‹ä¸šéƒ¨ï¼Œç»„织
    info( "dealing businessType and placeOfProductionOfArray" )
    debuginfo( "dealing businessType and placeOfProductionOfArray" )
    columnBusinessType := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "事业部" );
    columnPlaceOfProductionOfArray := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板基地" );
    traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -72,9 +72,9 @@
    info( "dealing é¢æ¿åˆ†é…é‡" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "面板分配量" ) ) {
      traverse( years, Elements, year ) {
        info( "面板分配量" + [String]year.YearNo() + "å¹´" );
        debuginfo( "面板分配量" + [String]year.YearNo() + "å¹´" );
        // åŽ†å²æ•°æ®
        info( "面板分配量" + [String]year.YearNo() + "年历史数据" );
        debuginfo( "面板分配量" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -89,7 +89,7 @@
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        info( "面板分配量" + [String]year.YearNo() + "å¹´S&OP数据" );
        debuginfo( "面板分配量" + [String]year.YearNo() + "å¹´S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
@@ -112,12 +112,12 @@
      }
    }
    // å¹´åº¦é”€å”®é¢
    info( "dealing é”€å”®é¢" )
    debuginfo( "dealing é”€å”®é¢" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "销售额" ) ) {
      traverse( years, Elements, year ) {
        info( "销售额" + [String]year.YearNo() + "å¹´" );
        debuginfo( "销售额" + [String]year.YearNo() + "å¹´" );
        // åŽ†å²æ•°æ®
        info( "销售额" + [String]year.YearNo() + "年历史数据" );
        debuginfo( "销售额" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -132,7 +132,7 @@
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        info( "销售额" + [String]year.YearNo() + "年历史数据S&OP数据" );
        debuginfo( "销售额" + [String]year.YearNo() + "年历史数据S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
@@ -154,7 +154,7 @@
      }
    }
    // å¤§å¼ ç›ˆåˆ©é¢
    info( "dealing å¤§å¼ ç›ˆåˆ©é¢" )
    debuginfo( "dealing å¤§å¼ ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
@@ -174,7 +174,7 @@
      }
    }
    // äº§å“ç›ˆåˆ©é¢
    info( "dealing äº§å“ç›ˆåˆ©é¢" )
    debuginfo( "dealing äº§å“ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
@@ -195,7 +195,7 @@
    }
    
    // è®¾ç½®rowNo和columnNo
    info( "set rowNo and columnNo" );
    debuginfo( "set rowNo and columnNo" );
    rowNo := 1;
    rowSorted := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, item, item.PlaceOfProductionOfArray() + "_" + item.BusinessType() );
    traverse( rowSorted, Elements, item ) {
@@ -207,6 +207,6 @@
      item.ColumnNo( columnNo );
      columnNo := columnNo + 1;
    }
    info( "done" );
    debuginfo( "done" );
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompareExport.qbl
ÎļþÃû´Ó _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl ÐÞ¸Ä
@@ -13,7 +13,7 @@
    // å¤„理column <column><name>物料编码</name><type>String</type></column>
    columnXml := ""
    traverse( this, CapacityAndSaleBudgeCompareItemColumn, column ) {
      info( "columnName : " + column.ColumnName() );
      debuginfo( "columnName : " + column.ColumnName() );
      columnXml := columnXml + "<column><name>" + column.ColumnName() + "</name><type>String</type></column>";
    }
    text := text + columnXml + "</table>"
@@ -24,7 +24,7 @@
    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
    rows := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, row, row.PlaceOfProductionOfArray() + "_" + row.BusinessType() );
    traverse ( rows, Elements, row ) {
      info( "rowNo : " + [String]row.RowNo() );
      debuginfo( "rowNo : " + [String]row.RowNo() );
      traverse( row, CapacityAndSaleBudgeCompareItemCell, cell ) {
        ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, cell.CellContent(), cell.CapacityAndSaleBudgeCompareItemColumn().ColumnName() );  
      }
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade (
  Number errorNo,
  String errorMessage
)
{
  TextBody:
  [*
    this.Global_BrokerExecuteLog( relnew,
                                  BrokerName    := "GlobalOTDTable_CustomerGrade",
                                  ElementTotal  := 0,
                                  ErrorMessage  := errorMessage,
                                  IsSuccess     := false,
                                  Name          := "客户等级数据",
                                  ErrorNo       := errorNo,
                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
                                 );
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI (
  Number errorNo,
  String errorMessage
)
{
  TextBody:
  [*
    this.Global_BrokerExecuteLog( relnew,
                                  BrokerName    := "GlobalOTDTable_DOI_DSI",
                                  ElementTotal  := 0,
                                  ErrorMessage  := errorMessage,
                                  IsSuccess     := false,
                                  Name          := "DOI_DSI数据",
                                  ErrorNo       := errorNo,
                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
                                 );
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method OnAsyncExecute_GlobalOTDTable_CustomerGrade
{
  TextBody:
  [*
    this.Global_BrokerExecuteLog( relnew,
                                  BrokerName      := "GlobalOTDTable_CustomerGrade",
                                  ElementTotal    := this.Global_MappingCustomerGrade( relsize ),
                                  ErrorMessage    := "",
                                  IsSuccess       := true,
                                  Name            := "客户等级数据",
                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
                                  ErrorNo         := 0
                                 );
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method OnAsyncExecute_GlobalOTDTable_DOI_DSI
{
  TextBody:
  [*
    this.Global_BrokerExecuteLog( relnew,
                                  BrokerName      := "GlobalOTDTable_DOI_DSI",
                                  ElementTotal    := this.Global_MappingDOI_DSI( relsize ),
                                  ErrorMessage    := "",
                                  IsSuccess       := true,
                                  Name            := "DOI_DSI数据",
                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
                                  ErrorNo         := 0
                                 );
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_SetIsLinkedWithFinishedGoodAttributes.qbl
@@ -30,12 +30,16 @@
    traverse( this, Global_MappingProduct_MP, product,
              product.ProductMajorType() = "成品" )
    {
      uniquebomids := construct( Strings );
      product.IsLinkedWithFinishedGood( false );
      product.SetIsLinkedWithFinishedGoodAttributes_Recursive( 0, // depth
                                                               100, // maxdepth
                                                               productspool,
                                                               operationspool,
                                                               operationbomspool );
                                                               operationbomspool,
                                                               uniquebomids );
      uniquebomids := uniquebomids.Unique();
      product.BOMCount( uniquebomids.Size() );
    }
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method SynchronizationAllMappingBrokerAndAPIByOption (
  Boolean isCustomOrder,
  Boolean isForeacst
)
{
  TextBody:
  [*
    if ( isCustomOrder ) {
      this.Global_MappingCustomOrder( relflush );
      this.GlobalOTDTable_CustomOrder().AsyncExecute();
    }
    if ( isForeacst ) {
      this.Global_MappingForecast( relflush );
      this.GlobalOTDTable_Forecast().AsyncExecute();
    }
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method SynchronizeDataToMacroPlan (
  MacroPlan macroPlan,
  Strings businessTypes,
  Boolean isCustomOrder,
  Boolean isForecast
)
{
  TextBody:
  [*
    if ( isCustomOrder ) {
      macroPlan.MappingCustomerOrderData( businessTypes, this );
    }
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_Test.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Method Test
{
  TextBody:
  [*
    // KKO2 Sep-27-2023 (created)
  *]
}
_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
@@ -25,6 +25,8 @@
    globalOTDTable.Global_MappingOperationCost( relflush );
    globalOTDTable.Global_MappingForecast( relflush );
    globalOTDTable.Global_MappingCustomOrder( relflush );
    globalOTDTable.Global_MappingDOI_DSI( relflush );
    globalOTDTable.Global_MappingCustomerGrade( relflush );
    
    globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
    globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
@@ -44,5 +46,7 @@
    globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();
    globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();
    globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
    globalOTDTable.GlobalOTDTable_DOI_DSI().AsyncExecute();
    globalOTDTable.GlobalOTDTable_CustomerGrade().AsyncExecute();
  *]
}
_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderTime
{
  #keys: '3[414702.0.462647536][414702.0.462647535][414702.0.462647537]'
  ValueType: Date
}
_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType#905.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderType
{
  #keys: '3[414702.0.462647526][414702.0.462647525][414702.0.462647527]'
  ValueType: String
}
_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductGrade.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductGrade
{
  #keys: '3[414702.0.462647546][414702.0.462647545][414702.0.462647547]'
  ValueType: String
}
_Main/BL/Type_Global_MappingCustomOrder/Attribute_SegmentPriority.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute SegmentPriority
{
  #keys: '3[414702.0.462647556][414702.0.462647555][414702.0.462647557]'
  ValueType: String
}
_Main/BL/Type_Global_MappingCustomOrder/Attribute_SheetProfitability.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute SheetProfitability
{
  #keys: '3[414702.0.462647566][414702.0.462647565][414702.0.462647567]'
  ValueType: String
}
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[414702.0.445738362][414702.0.445738361][414702.0.445738363]'
  Description: '事业部'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_Customer.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute Customer
{
  #keys: '3[414702.0.445738352][414702.0.445738351][414702.0.445738353]'
  Description: '客户名称'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_CustomerGrade.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomerGrade
{
  #keys: '3[414702.0.445738372][414702.0.445738371][414702.0.445738373]'
  Description: '客户等级'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_Global_MappingCustomerGrade/TypeIndex_Global_MappingCustomerGradeTypeIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
TypeIndex Global_MappingCustomerGradeTypeIndex
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: BusinessType
    }
    TypeIndexAttribute
    {
      ModelElement: Customer
    }
    TypeIndexAttribute
    {
      ModelElement: CustomerGrade
    }
  ]
}
_Main/BL/Type_Global_MappingCustomerGrade/_ROOT_Type_Global_MappingCustomerGrade.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_MappingCustomerGrade
{
  #keys: '5[414702.0.445485672][414702.0.445485670][0.0.0][414702.0.445485671][414702.0.445485673]'
  BaseType: Object
  StructuredName: 'Global_MappingCustomerGrades'
}
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DOI.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DOI
{
  #keys: '3[414702.0.445364709][414702.0.445364708][414702.0.445364710]'
  Description: '库存周转天数'
  ValueType: String
}
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DSI.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DSI
{
  #keys: '3[414702.0.445364719][414702.0.445364718][414702.0.445364720]'
  Description: '库存可售天数'
  ValueType: String
}
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_OrganCode.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute OrganCode
{
  #keys: '3[414702.0.445364699][414702.0.445364698][414702.0.445364700]'
  Description: '组织编码'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[414702.0.445364677][414702.0.445364676][414702.0.445364678]'
  Description: '物料编码'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_Global_MappingDOI_DSI/TypeIndex_Global_MappingDOI_DSITypeIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
TypeIndex Global_MappingDOI_DSITypeIndex
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: ProductID
    }
    TypeIndexAttribute
    {
      ModelElement: OrganCode
    }
  ]
}
_Main/BL/Type_Global_MappingDOI_DSI/_ROOT_Type_Global_MappingDOI_DSI.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_MappingDOI_DSI
{
  #keys: '5[414702.0.445364654][414702.0.445364652][0.0.0][414702.0.445364653][414702.0.445364655]'
  BaseType: Object
  StructuredName: 'Global_MappingDOI_DSIs'
}
_Main/BL/Type_Global_MappingProduct_MP/Attribute_BOMCount.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BOMCount
{
  #keys: '3[157968.0.1161166085][157968.0.1161166084][157968.0.1161166086]'
  Description: 'Number of unique BOM used to produce this finished good.'
  ValueType: Number
}
_Main/BL/Type_Global_MappingProduct_MP/Method_SetIsLinkedWithFinishedGoodAttributes_Recursive.qbl
@@ -5,7 +5,8 @@
  Number maxdepth,
  Global_MappingProduct_MPs productspool,
  Global_MappingOperations operationspool,
  Global_MappingOperationBOMs operationbomspool
  Global_MappingOperationBOMs operationbomspool,
  output Strings uniquebomids_o
)
{
  Description: 'Method to traverse the supply chain recursively to determine if there are any products that are not used to produce finished goods.'
@@ -13,6 +14,11 @@
  [*
    if( not this.IsLinkedWithFinishedGood() )
    {
      if( this.ProductMajorType() <> "成品" )
      {
        uniquebomids_o.Add( this.ID() );
      }
      depth := depth + 1;
      this.IsLinkedWithFinishedGood( true );
      
@@ -50,7 +56,8 @@
                                                                                maxdepth,
                                                                                productspool,
                                                                                operationspool,
                                                                                operationbomspool );
                                                                                operationbomspool,
                                                                                uniquebomids_o );
            }
            
            if( operationbom.AlternativeMaterialCode() <> ""
@@ -66,7 +73,8 @@
                                                                                    maxdepth,
                                                                                    productspool,
                                                                                    operationspool,
                                                                                    operationbomspool );
                                                                                    operationbomspool,
                                                                                    uniquebomids_o );
              }
            }
          }
_Main/BL/Type_Global_ShowCell/Attribute_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Value
{
  #keys: '3[414702.0.483720762][414702.0.483720761][414702.0.483720763]'
  ValueType: String
}
_Main/BL/Type_Global_ShowCell/StaticMethod_ShowData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ShowData (
  GlobalOTDTable globalOTDTable,
  Global_BrokerExecuteLog global_BrokerExecuteLog
)
{
  TextBody:
  [*
    if ( global_BrokerExecuteLog.BrokerName() = "GlobalOTDTable_CustomOrder" ) {
      businessTypeColumn       := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 0, ColumnName := "事业部" );
      currencyIDColumn         := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 1, ColumnName := "货币" );
      customerColumn           := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 2, ColumnName := "客户名称" );
      customerIDColumn         := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 3, ColumnName := "客户ID" );
      idColumn                 := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 4, ColumnName := "唯一标识" );
      orderDateColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 5, ColumnName := "订单日期" );
      orderIDColumn            := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 6, ColumnName := "订单号" );
      orderLineIDColumn        := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 7, ColumnName := "订单行号" );
      priceColumn              := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 8, ColumnName := "单价" );
      priorityNameColumn       := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 9, ColumnName := "优先级名称" );
      productIDColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 10, ColumnName := "产品编码" );
      stockingPointIDColumn    := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 11, ColumnName := "库存点编码" );
      salesegmentNameColumn    :=globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 12, ColumnName := "销售部门名称" );
      quantityColumn           := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 13, ColumnName := "数量" );
      unitofmeasureNameColumn  := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 14, ColumnName := "单位" );
      orderTypeColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 15, ColumnName := "订单类型" );
      isAvailableColumn        := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 16, ColumnName := "是否可用" );
      productGradeColumn       := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 17, ColumnName := "产品等级" );
      segmentPriorityColumn    := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 18, ColumnName := "细分市场优先级" );
      sheetProfitabilityColumn := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 19, ColumnName := "大张盈利" );
      orderTimeColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 20, ColumnName := "订单下单时间" );
      i := 1;
      traverse ( globalOTDTable, Global_MappingCustomOrder, gmco ) {
        gloabal_ShowRow := globalOTDTable.Global_ShowRow( relnew, RowNr := i );
        businessTypeCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.BusinessType() );
        businessTypeCell.Global_ShowColumn( relset, businessTypeColumn );
        businessTypeCell.Global_ShowRow( relset, gloabal_ShowRow );
        currencyIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.CurrencyID() );
        currencyIDCell.Global_ShowColumn( relset, currencyIDColumn );
        currencyIDCell.Global_ShowRow( relset, gloabal_ShowRow );
        customerCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.Customer() );
        customerCell.Global_ShowColumn( relset, customerColumn );
        customerCell.Global_ShowRow( relset, gloabal_ShowRow );
        customerIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.CustomerID() );
        customerIDCell.Global_ShowColumn( relset, customerIDColumn );
        customerIDCell.Global_ShowRow( relset, gloabal_ShowRow );
        idCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.ID() );
        idCell.Global_ShowColumn( relset, idColumn );
        idCell.Global_ShowRow( relset, gloabal_ShowRow );
        orderDateCell := globalOTDTable.Global_ShowCell( relnew, Value := guard( gmco.OrderDate().Format( "Y-M2-D2" ), "时间格式错误" ) );
        orderDateCell.Global_ShowColumn( relset, orderDateColumn );
        orderDateCell.Global_ShowRow( relset, gloabal_ShowRow );
        orderIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.OrderID() );
        orderIDCell.Global_ShowColumn( relset, orderIDColumn );
        orderIDCell.Global_ShowRow( relset, gloabal_ShowRow );
        orderLineIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.OrderLineID() );
        orderLineIDCell.Global_ShowColumn( relset, orderLineIDColumn );
        orderLineIDCell.Global_ShowRow( relset, gloabal_ShowRow );
        priceCell := globalOTDTable.Global_ShowCell( relnew, Value := [String]gmco.Price() );
        priceCell.Global_ShowColumn( relset, priceColumn );
        priceCell.Global_ShowRow( relset, gloabal_ShowRow );
        priorityNameCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.PriorityName() );
        priorityNameCell.Global_ShowColumn( relset, priorityNameColumn );
        priorityNameCell.Global_ShowRow( relset, gloabal_ShowRow );
        productIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.ProductID() );
        productIDCell.Global_ShowColumn( relset, productIDColumn );
        productIDCell.Global_ShowRow( relset, gloabal_ShowRow );
        stockingPointIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.StockingPointID() );
        stockingPointIDCell.Global_ShowColumn( relset, stockingPointIDColumn );
        stockingPointIDCell.Global_ShowRow( relset, gloabal_ShowRow );
        salesegmentNameCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.SalesSegmentName() );
        salesegmentNameCell.Global_ShowColumn( relset, salesegmentNameColumn );
        salesegmentNameCell.Global_ShowRow( relset, gloabal_ShowRow );
        quantityCell := globalOTDTable.Global_ShowCell( relnew, Value := [String]gmco.Quantity() );
        quantityCell.Global_ShowColumn( relset, quantityColumn );
        quantityCell.Global_ShowRow( relset, gloabal_ShowRow );
        unitofmeasureNameCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.UnitOfMeasureName() );
        unitofmeasureNameCell.Global_ShowColumn( relset, unitofmeasureNameColumn );
        unitofmeasureNameCell.Global_ShowRow( relset, gloabal_ShowRow );
        orderTypeCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.OrderType() );
        orderTypeCell.Global_ShowColumn( relset, orderTypeColumn );
        orderTypeCell.Global_ShowRow( relset, gloabal_ShowRow );
        isAvailableCell := globalOTDTable.Global_ShowCell( relnew, Value := [String]gmco.IsAvailable() );
        isAvailableCell.Global_ShowColumn( relset, isAvailableColumn );
        isAvailableCell.Global_ShowRow( relset, gloabal_ShowRow );
        productGradeCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.ProductGrade() );
        productGradeCell.Global_ShowColumn( relset, productGradeColumn );
        productGradeCell.Global_ShowRow( relset, gloabal_ShowRow );
        segmentPriorityCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.SegmentPriority() );
        segmentPriorityCell.Global_ShowColumn( relset, segmentPriorityColumn );
        segmentPriorityCell.Global_ShowRow( relset, gloabal_ShowRow );
        sheetProfitabilityCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.SheetProfitability() );
        sheetProfitabilityCell.Global_ShowColumn( relset, sheetProfitabilityColumn );
        sheetProfitabilityCell.Global_ShowRow( relset, gloabal_ShowRow );
        orderTimeCell := globalOTDTable.Global_ShowCell( relnew, Value := guard( gmco.OrderTime().Format( "Y-M2-D2" ), "时间格式错误" ) );
        orderTimeCell.Global_ShowColumn( relset, orderTimeColumn );
        orderTimeCell.Global_ShowRow( relset, gloabal_ShowRow );
        i++;
      }
    }
  *]
}
_Main/BL/Type_Global_ShowCell/_ROOT_Type_Global_ShowCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_ShowCell
{
  #keys: '5[414702.0.483720658][414702.0.483720656][0.0.0][414702.0.483720657][414702.0.483720659]'
  BaseType: Object
  StructuredName: 'Global_ShowCells'
}
_Main/BL/Type_Global_ShowColumn/Attribute_ColumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnIndex
{
  #keys: '3[414702.0.487974706][414702.0.487974705][414702.0.487974707]'
  ValueType: Number
}
_Main/BL/Type_Global_ShowColumn/Attribute_ColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnName
{
  #keys: '3[414702.0.483720752][414702.0.483720751][414702.0.483720753]'
  ValueType: String
}
_Main/BL/Type_Global_ShowColumn/_ROOT_Type_Global_ShowColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_ShowColumn
{
  #keys: '5[414702.0.483720653][414702.0.483720651][0.0.0][414702.0.483720652][414702.0.483720654]'
  BaseType: Object
  StructuredName: 'Global_ShowColumns'
}
_Main/BL/Type_Global_ShowRow/Attribute_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowNr
{
  #keys: '3[414702.0.483720742][414702.0.483720741][414702.0.483720743]'
  ValueType: Number
}
_Main/BL/Type_Global_ShowRow/_ROOT_Type_Global_ShowRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_ShowRow
{
  #keys: '5[414702.0.483720648][414702.0.483720646][0.0.0][414702.0.483720647][414702.0.483720649]'
  BaseType: Object
  StructuredName: 'Global_ShowRows'
}
_Main/BL/Type_ImportExcel/Method_Execute.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
#parent: #root
MethodOverride Execute #extension
{
  TextBody:
  [*
    opt := DatasetFindOptions::Construct( this.MacroPlanDatasetName() );
    mp := MDSMacroPlan::Find( opt );
    opt := DatasetFindOptions::Construct();
    scenarioManager := MDSScenarioManager::Find( opt );
    // Only get data source which has all required files uploaded
    dummyMissingFiles := construct( Strings );
    needUserUploadAllFiles := true;
    validUploadedFiles := selectset( this, LibSOPImpExp_DataSourceChildren, ds,
                                     ds.HasAllRequiredFilesForImport( dummyMissingFiles, needUserUploadAllFiles ) );
    traverse( validUploadedFiles, Elements, file )
    {
      this.LibSOPImpExp_UserInput( relnew, Value := file.Name() );
    }
    binaryValues := selectvalues( validUploadedFiles, Elements.LibSOPImpExp_DataSourceFile.LibSOPImpExp_ImportUploadedFile, file, true, file.DataAsBinary() );
    brokerNames := selectvalues( validUploadedFiles, Elements.LibSOPImpExp_DataSourceFile, file, true, file.BrokerName() );
    userinputvalues := selectuniquevalues( this, LibSOPImpExp_UserInput, userinput,
                                           true,
                                           userinput.Value() );
    mpsync := this.MPSync();
    // Reactive way to import
    o := this
    ->SetStatusInProgress()
    ->|mp->ImportExcels_Tianma( userinputvalues, binaryValues.Copy(), brokerNames )
    ->|scenarioManager->ImportExcels_Tianma( userinputvalues, binaryValues.Copy(), brokerNames )
    ->|mpsync->ImportExcels_Tianma( userinputvalues, binaryValues.Copy(), brokerNames )
    ->|this->SetStatusDone()
    ->|mp->SetLastImportTime()
    ->Exception();
    this->OnException(o);
  *]
}
_Main/BL/Type_ImportExcel/_ROOT_Type_ImportExcel.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization ImportExcel #extension
{
}
_Main/BL/Type_LibSOPImpExp_ExportExcel/StaticMethod_IsDataSourceIncluded_Tianma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod IsDataSourceIncluded_Tianma (
  Strings userinputvalues,
  String datasource_i
) remote as Boolean
{
  Description: 'If data source selected by user to export'
  TextBody: 'return exists( userinputvalues, Elements, input, input = datasource_i );'
}
_Main/BL/Type_LibSOPImpExp_ExportExcel/_ROOT_Type_LibSOPImpExp_ExportExcel.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization LibSOPImpExp_ExportExcel #extension
{
}
_Main/BL/Type_MPSync/Method_ImportExcels_Tianma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
Method ImportExcels_Tianma (
  Strings userinputvalues,
  BinaryValues mpBinaryValues_i,
  Strings mpBrokers_i
)
{
  Description: 'Import from Excel, used by web app.'
  TextBody:
  [*
    // @userInput_i - Array of data group that user imports
    // @mpBinaryValues_i - Array of uploaded Excels in binary value. Binary at position x matches @mpBrokers_i at same position
    // @mpBrokers_i - Array of uploaded Excels' broker name
    is3DDrive := false;
    // Check if each data group has files uploaded by user for import
    this.Import( LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_ImportProfiles() ),
                 mpBinaryValues_i, mpBrokers_i, is3DDrive, construct( FileItems), construct( Strings ) );
  *]
}
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter#323.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter.qbl
@@ -1,6 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method RefreshCapacityAndSaleBudgeFilter
Method RefreshCapacityAndSaleBudgeFilter (
  GlobalOTDTable globalOtdTable
)
{
  TextBody:
  [*
@@ -9,12 +11,12 @@
    businessTypes := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.BusinessType() );
    info( [String]businessTypes.Size() );
    traverse( businessTypes, Elements, businessType ) {
      CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( this, businessType );
      CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( globalOtdTable, businessType );
    }
    placeOfProductionOfArrays := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.PlaceOfProductionOfArray() );
    info( [String]placeOfProductionOfArrays.Size() );
    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( this, placeOfProductionOfArray );
      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( globalOtdTable, placeOfProductionOfArray );
    }
  *]
}
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method RefreshCapacityAndSaleBudgeFilter (
  Boolean deleteBeforeCreate,
  GlobalOTDTable globalOtdTable
)
{
  TextBody:
  [*
    if( deleteBeforeCreate ) {
      globalOtdTable.CapacityAndSaleBudgeFilterBusinessType( relflush );
      globalOtdTable.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relflush );
    }
    this.RefreshCapacityAndSaleBudgeFilter( globalOtdTable );
  *]
}
_Main/BL/Type_MacroPlan/Method_ImportExcels_Tianma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
Quintiq file version 2.0
#parent: #root
Method ImportExcels_Tianma (
  Strings userinputvalues,
  BinaryValues mpBinaryValues_i,
  Strings mpBrokers_i
)
{
  Description: 'Import from Excel, used by web app.'
  TextBody:
  [*
    // @userinputvalues - Array of data group that user imports
    // @mpBinaryValues_i - Array of uploaded Excels in binary value. Binary at position x matches @mpBrokers_i at same position
    // @mpBrokers_i - Array of uploaded Excels' broker name
    is3DDrive := false;
    // Check if each data group has files uploaded by user for import
    this.Synchronize( LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_SupplyChainParameters() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_GlobalParameters() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Periods() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MP_Functionality_InventorySpecifications() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MP_Functionality_InventorySupplies() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Products() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Forecasts() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_ServiceLevels() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Campaigns() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Entities() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Costs() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Lanes() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Routings() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Capacities() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MP_Functionality_SupplySpecifications() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Recipes() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MP_Designer_Actuals() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MP_GlobalParameters_KPIFeedbackName() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_OptimizerPuzzles() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_PostponementSpecAndFulfillmentRestriction() ),
                      LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_CustomerOrder() ),
                      false, /* isImportBinary */
                      mpBinaryValues_i,
                      mpBrokers_i,
                      is3DDrive,
                      construct( FileItems ), /* 3ddrive, ignore */
                      construct( Strings ) /* 3ddrive, ignore */ );
  *]
}
_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
@@ -38,12 +38,18 @@
        }
    //  if( not isnull( Product_MP::FindById( this, item.ProductID() ) ) ){
    //    info( item.ProductID().AsQUILL() );
      CustomerOrder::CreateOrUpdate( this, item.CurrencyID(), item.Customer(), item.CustomerID(), item.ID(),
                                     item.OrderDate(), item.OrderID(), item.OrderLineID(), item.Price(),
                                     priorityName, item.ProductID(),
                                     item.StockingPointID(),
                                     item.SalesSegmentName(),
                                     item.Quantity(), item.UnitOfMeasureName(), item.OrderType(), item.IsAvailable());
      customOrder := CustomerOrder::CreateOrUpdate( this, item.CurrencyID(), item.Customer(), item.CustomerID(), item.ID(),
                                                    item.OrderDate(), item.OrderID(), item.OrderLineID(), item.Price(),
                                                    priorityName, item.ProductID(),
                                                    item.StockingPointID(),
                                                    item.SalesSegmentName(),
                                                    item.Quantity(), item.UnitOfMeasureName(), item.OrderType(), item.IsAvailable());
      customOrder.BusinessType( item.BusinessType() );
      customOrder.OrderType( item.OrderType() );
      customOrder.OrderTime( item.OrderTime() );
      customOrder.ProductGrade( item.ProductGrade() );
      customOrder.SegmentPriority( item.SegmentPriority() );
      customOrder.SheetProfitability( item.SheetProfitability() );
    //  }else{
    //    info( "invaild product: " + item.ProductID().AsQUILL() );
    //    }
_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
@@ -10,7 +10,6 @@
  TextBody:
  [*
    // yypsybs Aug-21-2023 (created)
    keyProductList := construct( Strings );
    if( isKeyProduct ) {
        keyProductList := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, item, item.ProductMajorType()="成品" or item.ProductMajorType()="半成品", item.ID() );
@@ -61,6 +60,7 @@
                  // ========分组处理输入========
                  
                }
                if( not isnull( stockingPoint)){
                  if( isKeyProduct){
                      keyRows := selectset( routingRows,Elements,routingrow,keyProductList.Find( routingrow.ComponentCode())>=0);
@@ -83,5 +83,78 @@
            this.MappingOperationBOMDataSupplyPurchase( bom.OrganCode(), bom.ComponentCode(), bom.ComponentType());
        }
    }
    //
    //keyProductList := construct( Strings );
    //if( isKeyProduct ) {
    //    keyProductList := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, item, item.ProductMajorType()="成品" or item.ProductMajorType()="半成品", item.ID() );
    //}
    //bomList := selectsortedset(  globalOTDTable, Global_MappingOperationBOM, item,
    //                             ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0,
    //                                     true,
    ////                                     businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 )
    //                                     businessTypes.Find( item.BusinessType() ) >= 0 )
    ////                             and ifexpr( isKeyProduct,
    ////                                         keyProductList.Size() > 0 and keyProductList.Find( item.ComponentCode() ) >= 0,
    ////                                         true )
    //                             ,
    //                             item.OrganCode() + "_" + item.ProductCode() + "_" + item.ProcessSection() );
    //// æŒ‰routing及routingStep分组
    //routingIds := selectuniquevalues( bomList, Elements, item, true, item.OrganCode() + "_" + item.ProductCode() );
    //traverse( routingIds, Elements, routingId ) {
    //    routingRows := selectset( bomList, Elements, item, true, routingId = item.OrganCode() + "_" + item.ProductCode() );
    //    if( routingRows.Size() > 0 ) {
    //        firstRow := routingRows.Element( 0 );
    ////        stockingPointId := firstRow.OrganCode()  + "_" + firstRow.ProductType() + "_Stock";
    ////        inputStockingPointId := firstRow.OrganCode()  + "_" + firstRow.ComponentType() + "_Stock";
    //        stockingPointId := firstRow.OrganCode()  + "_Stock";
    //
    //        // ========检查========
    //        product := Product_MP::FindProductTypeIndex( firstRow.ProductCode() );
    //        if( not isnull( product ) ) {
    ////              error( "product : " + firstRow.ProductCode() + " not found" );
    //          stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( stockingPointId );
    //
    ////          info( stockingPointId.AsQUILL() );
    //  //        if( isnull( stockingPoint ) ) {
    //  //            error( "stockingPoint : " + stockingPointId + " not found" );
    //  //        }
    //          routing := Routing::FindRoutingTypeIndex(  routingId );
    //          if( not isnull( routing ) ) {
    ////              error( "routing : " + routingId + " not found" );
    //            // ========处理输出========
    //            if( not isnull( stockingPoint ) ) {
    ////              info( 1 );
    //              operationsInLastSteps := Operation::FindFinalOperationsByRoutingId( this, routingId );
    //              traverse( operationsInLastSteps, Elements, operationsInLastStep ) {
    //                  operationsInLastStep.CreateOperationBOM( product, stockingPoint, false, true );
    //                  operationsInLastStep.GetOperationBOM( product.ID(), stockingPoint.ID(), false ).Quantity( 1 );
    //              }
    //              // ========分组处理输入========
    //
    //            }
    //            if( not isnull( stockingPoint)){
    //              if( isKeyProduct){
    //                  keyRows := selectset( routingRows,Elements,routingrow,keyProductList.Find( routingrow.ComponentCode())>=0);
    //                  this.MappingOperationBOMDataRouting( routing,globalOTDTable,keyRows);
    //                }else{
    //                  this.MappingOperationBOMDataRouting( routing,globalOTDTable,routingRows);
    //                }
    //
    //            }
    //          }
    //       }
    //    }
    //}
    //if( createPurchaseSupplyMaterial ) {
    //    toCreateBomList := selectuniquevalues( bomList, Elements, item,
    //                                           item.ComponentType() = "P", item.OrganCode() + item.ComponentCode());
    //    traverse( toCreateBomList, Elements, key ) {
    //        boms := selectset( bomList, Elements, item, item.ComponentType() = "P" and item.OrganCode() + item.ComponentCode() = key );
    //        bom := boms.First();
    //        this.MappingOperationBOMDataSupplyPurchase( bom.OrganCode(), bom.ComponentCode(), bom.ComponentType());
    //    }
    //}
  *]
}
_Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl
@@ -61,7 +61,7 @@
    }
    //---------------------------------------------------------------------------------------------
    xmlTemplate := xmlTemplate + "</table>";
    info( xmlTemplate );
    //info( xmlTemplate );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
    XLS::SaveTable( tableHandle, OS::TempPath() + "MappingCapacityAndSaleBudge.xlsx" );
    file := OSFile::Construct();
_Main/BL/Type_PriorityFactor/Attribute_ReflectionAttribute.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ReflectionAttribute
{
  #keys: '3[414382.0.554303396][414382.0.554303395][414382.0.554303397]'
  ValueType: String
}
_Main/BL/Type_PriorityFactor/Attribute_ReflectionType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ReflectionType
{
  #keys: '3[414382.0.554014806][414382.0.554014805][414382.0.554014807]'
  ValueType: String
}
_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl
@@ -15,15 +15,88 @@
        isBusinessType := true; 
    }
    
    priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
    if( priorityFactor.Name() = "大张盈利水平" )
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "大盈",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                            IsRange := false,GradingName := "小盈",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 0,
                                            IsRange := false,GradingName := "持平",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -3,
                                            IsRange := false,GradingName := "小亏",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -5,
                                            IsRange := false,GradingName := "大亏",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "小盈",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 0,
                                                IsRange := false,GradingName := "持平",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -3,
                                                IsRange := false,GradingName := "小亏",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -5,
                                                IsRange := false,GradingName := "大亏",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
    if( priorityFactor.Name() = "客户策略" )
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "81%≤X≤100%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 4,
                                                IsRange := false,GradingName := "61%≤X≤80%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "41%≤X≤60%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 2,
                                                IsRange := false,GradingName := "21%≤X≤40%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "1%≤X≤20%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
    if( priorityFactor.Name() = "细分市场等级" )
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "战略",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "重点",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "潜力",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
    if( priorityFactor.Name() = "订单下单时间" )
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "120",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 4,
                                                IsRange := false,GradingName := "90",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "60",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 2,
                                                IsRange := false,GradingName := "30",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "0",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
    if( priorityFactor.Name() = "需求类型" )
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "有预测",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "无预测",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "纯预测",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
    if( priorityFactor.Name() = "客户等级" )
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "战略",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "重点",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "潜力",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
    if( priorityFactor.Name() = "DOI" or priorityFactor.Name() = "DSI")
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "<7",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "<15",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "<30",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := ">30",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
  *]
}
_Main/BL/Type_PriorityResult/Attribute_CustomerOrderID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomerOrderID
{
  #keys: '3[414382.0.554015006][414382.0.554015005][414382.0.554015007]'
  ValueType: String
}
_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CalculateBracketScore (
  String calcStr,
  CustomerOrder customerOrder,
  String businessType,
  MacroPlan macroPlan,
  GlobalOTDTable globalOTDTable
) as Real
{
  Description: '计算公式中括号内的数据'
  TextBody:
  [*
    // NBoTk Sep-26-2023 (created)
    return PriorityResult::CalculateScore( calcStr,customerOrder,businessType,macroPlan,0.0,globalOTDTable);
  *]
}
_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CalculateScore (
  String formula,
  CustomerOrder customerOrder,
  String businessType,
  MacroPlan macroPlan,
  Real lastScore,
  GlobalOTDTable globalOTDTable
) as Real
{
  TextBody:
  [*
    // NBoTk Sep-26-2023 (created)
    score := 0.0;
    remindFormula := formula;
    // éåŽ†ä¼˜å…ˆçº§å› å­é…ç½®
    if( not remindFormula = '' )
    {
            // ä»Žèµ·å§‹ä½ç½®å¼€å§‹åŒ¹é…
            if(remindFormula.StartsWith( "+" ))
            {
                remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1);
                score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable);
                score := lastScore + score;
                // æˆªå–掉已经计算的优先级因子 é€’归计算
                remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan);
                PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable);
            }
            else if( remindFormula.StartsWith( "-" ))
            {
                remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1);
                score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable);
                score := lastScore - score;
                // æˆªå–掉已经计算的优先级因子 é€’归计算
                remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan);
                PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable);
            }
            else if( remindFormula.StartsWith( "*" ) )
            {
                remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1);
                score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable);
                score := lastScore * score;
                // æˆªå–掉已经计算的优先级因子 é€’归计算
                remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan);
                PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable);
            }
            else if( remindFormula.StartsWith( "/" ) )
            {
                remindFormula := remindFormula.SubString( 1,remindFormula.Length()-1);
                score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable);
                score := lastScore / score;
                // æˆªå–掉已经计算的优先级因子 é€’归计算
                remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan);
                PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable);
            }
            else if( remindFormula.StartsWith( "(" ) )
            {
                // æ‰¾åˆ°ç¬¬ä¸€ä¸ªç»“束的 )
                // è®¡ç®—括号中的内容
                rightBracket := remindFormula.FindString( ")",0);
                calcStr := remindFormula.SubString( 1,rightBracket);
                PriorityResult::CalculateBracketScore(calcStr,customerOrder,businessType,macroPlan,globalOTDTable);
                // æˆªå– ) åŽçš„字符继续进行计算
                remindFormula := remindFormula.SubString( rightBracket,remindFormula.Length());
            }
            else
            {
                // ä¸æ˜¯ç¬¦å· ç›´æŽ¥èŽ·å–è®¡ç®—åŽçš„æ•°å€¼
                score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable);
                // æˆªå–掉已经计算的优先级因子 é€’归计算
                remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan);
                PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable);
            }
    }
    // æ²¡æœ‰åŒ¹é… å…¬å¼è®¡ç®—完成
    return lastScore;
  *]
}
_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDetailsValue (
  CustomerOrder customerOrder,
  String formula,
  MacroPlan macroPlan,
  GlobalOTDTable globalOTDTable
) as Real
{
  TextBody:
  [*
    // NBoTk Sep-26-2023 (created)
    // å½“前计算优先级因子细分 å¦‚果获取不到全部先默认为1
    value := 0.0;
    priorityFactor := null( PriorityFactor);
    traverse( macroPlan,PriorityFactor,p)
    {
         if( formula.StartsWith( p.Name()) )
         {
            priorityFactor := p;
         }
    }
    if(isnull( priorityFactor) )
    {
        value := 1.0;
    }
    else
    {
            if( "客户策略" =  priorityFactor.Name())
            {
                 obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "客户策略" and p.GradingName() = customerOrder.CustomerPolicy());
                 gradeTarget := 1.0;
                 if( not isnull( obj ) )
                 {
                      gradeTarget := obj.GradeTarget();
                 }
                 value := priorityFactor.Coefficient() * gradeTarget;
            }
            if( "大张盈利水平" =  priorityFactor.Name())
            {
                 obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "大张盈利水平" and  p.GradingName() = customerOrder.SheetProfitability());
                 gradeTarget := 1.0;
                 if( not isnull( obj ) )
                 {
                      gradeTarget := obj.GradeTarget();
                 }
                 value := priorityFactor.Coefficient() * gradeTarget;
            }
            if( "DOI" =  priorityFactor.Name())
            {
                 // DOI数据
                 obj := selectobject( globalOTDTable,Global_MappingDOI_DSI,doi,doi.ProductID() = customerOrder.ProductID())
                 doi := 1.0;
                 if( not isnull( obj ) )
                 {
                      doi := [Real]obj.DOI();
                 }
                 value := priorityFactor.Coefficient() * doi;
            }
            if( "DSI" =  priorityFactor.Name())
            {
                 // DOI数据
                 obj := selectobject( globalOTDTable,Global_MappingDOI_DSI,doi,doi.ProductID() = customerOrder.ProductID())
                 dsi := 1.0;
                 if( not isnull( obj ) )
                 {
                      dsi := [Real]obj.DSI();
                 }
                 value := priorityFactor.Coefficient() * dsi;
            }
            if( "细分市场等级" =  priorityFactor.Name())
            {
                 obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "细分市场等级" and p.GradingName() = customerOrder.SegmentPriority());
                 gradeTarget := 1.0;
                 if( not isnull( obj ) )
                 {
                      gradeTarget := obj.GradeTarget();
                 }
                 value := priorityFactor.Coefficient() * gradeTarget;
            }
            if( "需求类型" =  priorityFactor.Name())
            {
                // æœ‰é¢„测 æ— é¢„测 çº¯é¢„测
                 obj := selectobject( priorityFactor,PriorityFactorDetails,p,p.GradingName() = customerOrder.OrderType());
                 gradeTarget := 1.0;
                 if( not isnull( obj ) )
                 {
                      gradeTarget := obj.GradeTarget();
                 }
                 value := priorityFactor.Coefficient() * gradeTarget;
            }
            if( "客户等级" =  priorityFactor.Name())
            {
                 // é€šè¿‡æ•°æ®æ¹–计算客户等级
                 obj := selectobject( globalOTDTable,Global_MappingCustomerGrade,doi,doi.BusinessType() = customerOrder.BusinessType() and doi.Customer() = customerOrder.CustomerName())
                 customerGrade := 1.0;
                 if( not isnull( obj ) )
                 {
                      customerGrade := [Real]obj.CustomerGrade();
                 }
                 value := priorityFactor.Coefficient() * customerGrade;
            }
            if( "订单下单时间" =  priorityFactor.Name())
            {
                 // ä¸‹å•æ—¶é—´
                 orderTime := customerOrder.OrderTime();
                 days := orderTime.TotalInDays() - customerOrder.EndDate().TotalInDays();
                 obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "订单下单时间" and days >= [Number]p.GradingName());
                 value := priorityFactor.Coefficient() * obj.GradeTarget();
            }
    }
    return value;
  *]
}
_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetRemindFormula (
  String formula,
  MacroPlan macroPlan
) as String
{
  TextBody:
  [*
    // NBoTk Sep-26-2023 (created)
    str := "";
    traverse( macroPlan,PriorityFactor,p)
    {
         if( formula.StartsWith( p.Name()) )
         {
              // åˆ¤æ–­å‰©ä½™å­—符长度
              if( p.Name().Length() = formula.Length() )
              {
                 str := ""
              }
              else
              {
                str := formula.SubString( p.Name().Length(),formula.Length() - p.Name().Length());
              }
         }
    }
    info( "remindStr = " + str );
    return str;
  *]
}
_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CalculatePriorityResult (
  String priorityPolicyName,
  MacroPlan macroPlan,
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    // NBoTk Sep-26-2023 (created)
    // è®¡ç®—客户订单的优先级得分 å›žå¡«æƒé‡æ•°æ® ç”Ÿæˆæ–°çš„Priority明细数据
    traverse( macroPlan,SalesDemand.astype( CustomerOrder ),e)
    {
         // äº‹ä¸šéƒ¨ä¿¡æ¯
         businessType := e.BusinessType();
         //businessType :=  "手机事业部";
         // èŽ·å–å¯¹åº”äº‹ä¸šéƒ¨è®¡ç®—å…¬å¼
         priorityPolicys := selectobject( macroPlan,PriorityPolicy,p,p.BusinessType() = businessType and p.Name() = priorityPolicyName);
         formula := priorityPolicys.Formula();
         // é€’归处理计算公式 èŽ·å–å½“å‰è®¢å•çš„å¾—åˆ†
         value := PriorityResult::CalculateScore( formula,e,businessType,macroPlan,0.0,globalOTDTable);
         // ç”Ÿæˆä¼˜å…ˆçº§å› å­è·‘分结果
         priorityResult := macroPlan.PriorityResult(relnew,CustomerOrderID := e.ID(),BusinessType := businessType,Customer := e.CustomerName(),CustomerID := e.CustomerID(),
                                                     DemandDate := e.EndDate(),ProductID := e.ProductID(),Quantity := e.Quantity(),SalesSegmentName := e.SalesSegmentName(),
                                                     StockingPointID := e.StockingPointID(),UnitOfMeasureName := e.UnitOfMeasureName()
                                                     );
         // åˆ¤æ–­æ˜¯é›†å›¢ è¿˜æ˜¯äº‹ä¸šéƒ¨
         if( businessType.FindString( "集团",0 ) <> -1)
         {
              priorityResult.PriorityResultGroupDetail( relnew,BusinessType := businessType,Customer := e.CustomerName(),CustomerID := e.CustomerID(),
                                                        DemandDate := e.EndDate(),PriorityPolicyName := priorityPolicyName,PriorityResultScore := value,
                                                        Quantity := e.Quantity(),SalesSegmentName := e.SalesSegmentName(),StockingPointID := e.StockingPointID(),
                                                        UnitOfMeasureName := e.UnitOfMeasureName(),PriorityTotalScore := value
                                                        );
         }
         else
         {
               priorityResult.PriorityResultBusinessTypeDetail( relnew,BusinessType := businessType,Customer := e.CustomerName(),CustomerID := e.CustomerID(),
                                                                DemandDate := e.EndDate(),PriorityPolicyName := priorityPolicyName,PriorityResultScore := value,
                                                                Quantity := e.Quantity(),SalesSegmentName := e.SalesSegmentName(),StockingPointID := e.StockingPointID(),
                                                                UnitOfMeasureName := e.UnitOfMeasureName(),PriorityTotalScore := value
                                                                );
         }
    }
    // ä¼˜å…ˆçº§å› å­å¤„理完成后 æŽ’序回填数据
    resultList := selectsortedset( macroPlan,PriorityResult,result,
                                   true,
                                   result.PriorityResultScore()
                                   )
    priorityValue := 1;
    traverse( resultList,Elements,e)
    {
        obj := selectobject( macroPlan,SalesDemand.astype( CustomerOrder ),order,
                             order.ID() = e.CustomerOrderID()
                             );
        // è®¢å•数据不为空再做处理
        if( not isnull( obj ) )
        {
              obj.PriorityName([String]priorityValue);
              // åˆ›å»ºä¼˜å…ˆçº§æ•°æ® éœ€è¦å…ˆæ¸…除上一次的计算结果
              // åˆ¤æ–­å½“前customerOrder是否存在
              oldPriority := selectobject( macroPlan,Priority,p,p.Name() = obj.OrderID());
              if(not isnull( oldPriority ) )
              {
                    macroPlan.Priority(reldelete, oldPriority);
              }
              macroPlan.Priority(relnew,Weight := priorityValue,Name := obj.OrderID());
              priorityValue := priorityValue + 1;
        }
    }
  *]
}
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/FunctionOverride_CalcStockLevelInDays.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
Quintiq file version 2.0
#parent: #root
FunctionOverride CalcStockLevelInDays #extension
{
  TextBody:
  [*
    totalDays := 0.0;
    if( not this.Period_MP().MacroPlan().IsMetaOptimizerRunning() )
    {
      balanceInv := this.InventoryLevelEnd();
      if( balanceInv > 0 )
      {
        // Calculate stock level in days
        futureperiods := selectsortedset( this, ProductInStockingPoint_MP.ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), p,
                                          p.Start() >= this.End(), p.Start() );
        product := this.ProductInStockingPoint_MP().Product_MP();
        shelflife := this.ShelfLife();
        hasshelflife := product.HasShelfLife() and not isnull( shelflife );
        agevector := RealVector::Construct();
        quantityvector := RealVector::Construct();
        // Modified logic to consider shelf-life for stock level in days
        if( hasshelflife )
        {
          // Get the age and quantity vector of remaining product stock at the end of period
          agevector := RealVector::Construct( shelflife.ShelfLifeEndAgeVectorAsBinaryValue() );
          quantityvector := RealVector::Construct( shelflife.ShelfLifeEndQuantityVectorAsBinaryValue() );
        }
        /*
          Track if consecutive future periods has 0 demand (although we have balance supply, but if remaining future periods has 0 demand not consider as coverable).
          Accumulate the coverable days and only add to total days if manage to find a subsequent period with demand.
        */
        traverse( futureperiods, Elements, pispip,
                  // Terminate calculation once remaining supply is 0
                  balanceInv > 0 )
        {
          if( balanceInv > 0 )
          {
            demandQty := pispip.DependentDemandAndSalesDemandQuantity();
            // Include expired quantity as demand to determine stock level in days
            if( hasshelflife )
            {
              isexpiredinperiodvector := BooleanVector::Construct();
              traverse( agevector.AsValues(), Elements, age )
              {
                isexpiredinperiod := not product.GetIsUsableInTargetPeriod( [Real] age, pispip.Start(), pispip.Period_MP() );
                isexpiredinperiodvector.Append( isexpiredinperiod );
                agevector.Add( pispip.Period_MP().GetDurationInDaysForShelfLife(), false );
              }
              // Sum of all elements in the quantity vector that corresponds to element = true in the boolean vector
              expiredinventoryqty := quantityvector.GetSelection( isexpiredinperiodvector ).Sum();
              demandQty := demandQty + expiredinventoryqty; // Reduce inventory as expired
            }
            if( balanceInv > demandQty ) // Remaining supply can cover demand in period
            {
              totalDays := totalDays + pispip.Period_MP().DurationInDays();
              balanceInv := balanceInv - demandQty;
            }
            else // Remaining supply partially cover the demand in period
            {
              // Main calc logic
              totalDays := totalDays + ( balanceInv / demandQty * pispip.Period_MP().DurationInDays() );
              balanceInv := 0.0;
            }
          }
        }
      }
    }
    this.StockLevelInDays( totalDays );
  *]
}
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization ProductInStockingPointInPeriodPlanningLeaf #extension
{
}
_Main/BL/Type_ScenarioManager/Method_ImportExcels_Tianma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
#parent: #root
Method ImportExcels_Tianma (
  Strings userinputvalues,
  BinaryValues mpBinaryValues_i,
  Strings mpBrokers_i
)
{
  Description: 'Import from Excel, used by web app.'
  TextBody:
  [*
    // @userinputvalues - Array of data group that user imports
    // @mpBinaryValues_i - Array of uploaded Excels in binary value. Binary at position x matches @mpBrokers_i at same position
    // @mpBrokers_i - Array of uploaded Excels' broker name
    is3DDrive := false;
    // Check if each data group has files uploaded by user for import
    this.Import( LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Strategies() ),
                 LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Accounts() ),
                 LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_Bookmarks() ),
                 LibSOPImpExp_ExportExcel::IsDataSourceIncluded_Tianma( userinputvalues, Translations::MPSync_ObjectGroup_KPISetting() ),
                 mpBinaryValues_i.Copy(),
                 mpBrokers_i,
                 is3DDrive,
                 construct( FileItems ), /* 3ddrive, ignore */
                 construct( Strings ) /* 3ddrive, ignore */ );
  *]
}
_Main/BL/Type_YuxTest/Attribute_TestBoolean.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestBoolean
{
  #keys: '3[414384.0.915854691][414384.0.915854690][414384.0.915854692]'
  ValueType: Boolean
}
_Main/BL/Type_YuxTest/Attribute_TestDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestDate
{
  #keys: '3[414384.0.915854704][414384.0.915854703][414384.0.915854705]'
  ValueType: Date
}
_Main/BL/Type_YuxTest/Attribute_TestDateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestDateTime
{
  #keys: '3[414384.0.915854714][414384.0.915854713][414384.0.915854715]'
  ValueType: DateTime
}
_Main/BL/Type_YuxTest/Attribute_TestNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestNumber
{
  #keys: '3[414384.0.915854681][414384.0.915854680][414384.0.915854682]'
  ValueType: Number
}
_Main/BL/Type_YuxTest/Attribute_TestReal.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestReal
{
  #keys: '3[414384.0.915854668][414384.0.915854667][414384.0.915854669]'
  ValueType: Real
}
_Main/BL/Type_YuxTest/Attribute_TestString.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestString
{
  #keys: '3[414384.0.915854658][414384.0.915854657][414384.0.915854659]'
  ValueType: String
}
_Main/BL/Type_YuxTest/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  YuxTests toExportList
) as String
{
  TextBody:
  [*
    // generate by generate_export_method.py
    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?>
    <table>
      <name>YuxTest</name>
    ';
    convDateToString := DateToString::StandardConverter();
    convDateToString.SetCustomConversion();
    convDateToString.CustomFormatString( 'yyyy-MM-dd' );
    convDateTimeToString := DateTimeToString::StandardConverter();
    convDateTimeToString.SetCustomConversion();
    convDateTimeToString.CustomFormatString( 'yyyy-MM-dd HH:mm:ss' );
    info( "export start" );
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试数字</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testNumber := toExportItem.TestNumber();
      cellStr := '<cell value="' + [String]testNumber + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试小数</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testReal := toExportItem.TestReal();
      cellStr := '<cell value="' + [String]testReal + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试字符串</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testString := toExportItem.TestString();
      cellStr := '<cell value="' + testString + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试布尔</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testBoolean := toExportItem.TestBoolean();
      cellStr := '<cell value="' + [String]testBoolean + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试日期</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testDate := toExportItem.TestDate();
      cellStr := '<cell value="' + ifexpr( testDate = Date::MinDate(), "", convDateToString.Convert( testDate )) + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试日期时间</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testDateTime := toExportItem.TestDateTime();
      cellStr := '<cell value="' + ifexpr( testDateTime = DateTime::MinDateTime(), "", convDateTimeToString.Convert( testDateTime )) + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    xmlTemplate := xmlTemplate + "</table>";
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
    XLS::SaveTable( tableHandle, OS::TempPath() + "YuxTest.xlsx" );
    file := OSFile::Construct();
    file.Open( OS::TempPath() + "YuxTest.xlsx", "Read", true );
    data := file.ReadBinary()
    info( "export end" );
    return data.AsBase64EncodedString();
  *]
}
_Main/BL/Type_YuxTest/StaticMethod_ExportTest#887.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ExportTest (
  MPSync parent
) as String
{
  TextBody:
  [*
    // yypsybs Sep-25-2023 (created)
    list := selectset( parent, YuxTest, item, true );
    if( list.Size() = 0 ) {
      for( i := 0; i < 100; i := i + 1 ) {
        parent.YuxTest( relnew,
                        TestBoolean := ifexpr( Number::Random( 0, 1 ) = 1, true, false ),
                        TestDate :=   ifexpr( Number::Random( 0, 1 ) = 1, Date::MinDate(), Date::ActualDate() ),
                        TestDateTime :=   ifexpr( Number::Random( 0, 1 ) = 1,DateTime::MinDateTime(), DateTime::ActualTime() ),
                        TestNumber :=  Number::Random( 100, 200 ),
                        TestReal := Real::Random( 10.0, 20.0 ),
                        TestString := [String]Number::Random( 1000, 2000 )
                        );
      }
    }
    list := selectset( parent, YuxTest, item, true );
    return YuxTest::Export( list );
  *]
}
_Main/BL/Type_YuxTest/_ROOT_Type_YuxTest.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type YuxTest
{
  #keys: '5[414384.0.915854638][414384.0.915854636][0.0.0][414384.0.915854637][414384.0.915854639]'
  BaseType: Object
  StructuredName: 'YuxTests'
}
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
@@ -13,6 +13,10 @@
          [
            Component MenuSpecial #extension
            {
              Children:
              [
                Component MenuGlobalOTDTableTest { #keys: '[157968.0.1170224128]' BaseType: 'Menu' Properties: [ Image: 'DUDE2' Text: 'GlobalOTDTable Test' ] }
              ]
              Properties:
              [
                ModeledStringList ChildOrdering
@@ -30,6 +34,7 @@
                  c: MenuTest
                  c: MenuScenarioManagerTest
                  c: MenuMPDomainHandlerTest
                  c: MenuGlobalOTDTableTest
                  c: MenuRemoveHistory
                  c: Menu46
                  c: MenuRefresh
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Response_TIANMA_JITUAN_mbMainMenu_MenuGlobalOTDTableTest_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: mbMainMenu/MenuGlobalOTDTableTest
Response OnClick () id:Response_TIANMA_JITUAN_mbMainMenu_MenuGlobalOTDTableTest_OnClick
{
  #keys: '[157968.0.1170224134]'
  Body:
  [*
    // Run GlobalOTDTable test method
    GlobalOTDTable.Test();
  *]
  DefinitionID: 'Responsedef_Menu_OnClick'
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupSalesViews#633.def
@@ -18,5 +18,16 @@
        Taborder: 3
      ]
    }
    Component ButtonPriority
    {
      #keys: '[414382.0.587601840]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'QUEUE'
        Label: '优先级因子'
        Taborder: 4
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInterfaceTest.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component abgInterfaceTest
{
  #keys: '[414702.0.457001887]'
  BaseType: 'WebActionBarGroup'
  Children:
  [
    Component btnInterfaceTest
    {
      #keys: '[414702.0.459575623]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'BEAR'
        Label: '接口测试'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Taborder: 5
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef#1.def
@@ -4,5 +4,6 @@
  Children:
  [
    #child: abgTest
    #child: abgInterfaceTest
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonPriority_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ActionBarGroupSalesViews/ButtonPriority
Response OnClick () id:Response_TIANMA_JITUAN_ActionBarGroupSalesViews_ButtonPriority_OnClick
{
  #keys: '[414382.0.587601951]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "PriorityTest",true);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: abgInterfaceTest/btnInterfaceTest
Response OnClick () id:Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick
{
  #keys: '[414702.0.459575742]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "接口测试", true );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def
@@ -15,7 +15,7 @@
    businessType := DataHolderBusinessType.Data().BusinessTypeName();
    DataHolderBusinessType.Data().Commit();
    
    // PriorityFactor
    PriorityFactor::InitData( MacroPlan,businessType);
    
    this.Close();
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[414382.0.563131222]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[414382.0.563131226]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[414382.0.563131228]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[414382.0.563131220]'
  BaseType: 'WebPanel'
  Children:
  [
    Component PriorityPolicyStringList
    {
      #keys: '[414382.0.563131262]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        Taborder: 0
      ]
    }
    Component DataHolderChoosePriorityPolicy
    {
      #keys: '[414382.0.563131279]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[PriorityPolicy]*'
      Properties:
      [
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_CalculatePriorityResult.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Method CalculatePriorityResult (
  String name
) id:Method_DialogChoosePriorityPolicy_CalculatePriorityResult
{
  #keys: '[414382.0.577602130]'
  Body:
  [*
    PriorityResult::CalculatePriorityResult(name,MacroPlan,GlobalOTDTable);
    this.Close();
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_OpenChoose.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method OpenChoose () id:Method_DialogChoosePriorityPolicy_OpenChoose
{
  #keys: '[414382.0.563950563]'
  Body:
  [*
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[414382.0.563131232]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[414382.0.563131231]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      name := PriorityPolicyStringList.Text();
      dlg := construct( DialogChoosePriorityPolicy );
      dlg.CalculatePriorityResult(name);
      dlg.Close();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pnlContent/DataHolderChoosePriorityPolicy
Response OnCreated () id:Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated
{
  #keys: '[414382.0.563131469]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      dataList := selectuniquevalues(  MacroPlan,PriorityPolicy,p,p.Name());
      strings := dataList.Concatenate( ";");
      PriorityPolicyStringList.Strings(strings);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pnlContent/DataHolderChoosePriorityPolicy
Response OnDataChanged () id:Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged
{
  #keys: '[414382.0.563131545]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      dataList := selectuniquevalues(  MacroPlan,PriorityPolicy,p,p.Name());
      strings := dataList.Concatenate( ";");
      PriorityPolicyStringList.Strings(strings);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/_ROOT_Component_DialogChoosePriorityPolicy.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogChoosePriorityPolicy
{
  #keys: '[414382.0.563131218]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
    Title: '选择优先级策略'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[414382.0.579140304]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnApply
    {
      #keys: '[414382.0.579140306]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Apply'
        Taborder: 0
      ]
    }
    Component btnOk
    {
      #keys: '[414382.0.579140308]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 1
      ]
    }
    Component btnCancel
    {
      #keys: '[414382.0.579140310]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[414382.0.579140302]'
  BaseType: 'WebPanel'
  Children:
  [
    Component EditBusinessType
    {
      #keys: '[414382.0.581576821]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderSelectCustomerOrder.Data.BusinessType'
        Label: '事业部'
        Taborder: 0
      ]
    }
    Component EditCustomerPolicy
    {
      #keys: '[414382.0.581576840]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderSelectCustomerOrder.Data.CustomerPolicy'
        Label: '客户策略'
        Taborder: 1
      ]
    }
    Component EditOrderType
    {
      #keys: '[414382.0.581576842]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderSelectCustomerOrder.Data.OrderType'
        Label: '订单类型'
        Taborder: 2
      ]
    }
    Component EditProductGrade
    {
      #keys: '[414382.0.581576844]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderSelectCustomerOrder.Data.ProductGrade'
        Label: '产品等级'
        Taborder: 4
      ]
    }
    Component EditSegmentPriority
    {
      #keys: '[414382.0.581576846]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderSelectCustomerOrder.Data.SegmentPriority'
        Label: '细分市场优先级'
        Taborder: 5
      ]
    }
    Component EditOrderTime
    {
      #keys: '[414382.0.581576988]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DataBinding: 'DataHolderSelectCustomerOrder.Data.OrderTime'
        Label: '订单下单时间'
        Taborder: 3
      ]
    }
    Component EditSheetProfitability
    {
      #keys: '[414382.0.581577181]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderSelectCustomerOrder.Data.SheetProfitability'
        Label: '大张盈利水平'
        Taborder: 6
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Method_ClickBynOk.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method ClickBynOk () id:Method_DialogEditCustomerOrderPriority_ClickBynOk
{
  #keys: '[414382.0.581577357]'
  Body:
  [*
    // Disabled button to prevent the possibility of multiple firing
    btnOk.Enabled(false,'');
    // OnOk
    this.ApplyChanges();
    DataHolderSelectCustomerOrder.Data().Commit();
    this.Close();
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Method_EditCustomerOrderPriority.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method EditCustomerOrderPriority (
  CustomerOrder selection
) id:Method_DialogEditCustomerOrderPriority_EditCustomerOrderPriority
{
  #keys: '[414382.0.581575991]'
  Body:
  [*
    // Edits assumption
    data := shadow( selection );
    DataHolderSelectCustomerOrder.Data( &data );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Response_pnlActions_btnApply_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: pnlActions/btnApply
Response OnClick () id:Response_pnlActions_btnApply_OnClick
{
  #keys: '[414382.0.579140312]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  Precondition:
  [*
    return Form.HasChanges();
  *]
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[414382.0.579140314]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[414382.0.579140313]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Form.ClickBynOk();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogEditCustomerOrderPriority/_ROOT_Component_DialogEditCustomerOrderPriority.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogEditCustomerOrderPriority
{
  #keys: '[414382.0.579140300]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
    Component DataHolderSelectCustomerOrder
    {
      #keys: '[414382.0.581575244]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[CustomerOrder]*'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
    Title: '修改订单优先级因子信息'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -38,6 +38,6 @@
  ]
  Properties:
  [
    Taborder: 1
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportTest_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ButtonExportTest
Response OnClick () id:Response_FormCapacityAndSaleBudge_ButtonExportTest_OnClick
{
  #keys: '[414384.0.914711825]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MPSync );
  *]
  QuillAction
  {
    Body:
    [*
      base64 := YuxTest::ExportTest( MPSync );
      Application.Download( "result.xlsx", base64 );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
@@ -12,7 +12,7 @@
    [*
      MPSync::TestData( MPSync, MacroPlan );
      GlobalOTDTable.InitTestData();
      MPSync.RefreshCapacityAndSaleBudgeFilter();
      MPSync.RefreshCapacityAndSaleBudgeFilter( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -19,6 +19,18 @@
        Taborder: 0
      ]
    }
    Component ButtonExportTest
    {
      #keys: '[414384.0.914711826]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出测试'
        Taborder: 1
        Visible: false
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
@@ -17,8 +17,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeChartElement'
          ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
@@ -10,19 +10,19 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeChartElement::TestData( ScenarioManager );
      CapacityAndSaleBudgeChartElement::TestData( GlobalOTDTable );
      
      ScenarioManager.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(),
                                                 DropDownSaleOrCapacity.Text(),
                                                 DropDownTimeGroup.Text(),
                                                 DropDownByBusinessTypeOrByOrgCode.Text(),
                                                 DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(),
                                                 DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data(),
                                                 DataHolderCapacityAndSaleBudgeFilterYear.Data(),
                                                 DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                                 MPSync,
                                                 GlobalOTDTable,
                                                 MacroPlan );
      GlobalOTDTable.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(),
                                                DropDownSaleOrCapacity.Text(),
                                                DropDownTimeGroup.Text(),
                                                DropDownByBusinessTypeOrByOrgCode.Text(),
                                                DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(),
                                                DataHolderCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.Data(),
                                                DataHolderCapacityAndSaleBudgeFilterYear.Data(),
                                                DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                                MPSync,
                                                GlobalOTDTable,
                                                MacroPlan );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -17,8 +17,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeCompareItemColumn.CapacityAndSaleBudgeCompareItemCell'
          ]
@@ -44,8 +44,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeCompareItemRow'
          ]
@@ -70,8 +70,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeCompareItemColumn'
          ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
@@ -14,13 +14,13 @@
      info( DataHolderCapacityAndSaleBudgeFilterItem.Data().Size() );
      info( DataHolderCapacityAndSaleBudgeFilterYear.Data().Size() );
      info( DataHolderCapacityAndSaleBudgeFilterMonth.Data().Size() );
      ScenarioManager.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(),
                                                   DataHolderCapacityAndSaleBudgeFilterItem.Data(),
                                                   DataHolderCapacityAndSaleBudgeFilterYear.Data(),
                                                   DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                                   MPSync,
                                                   GlobalOTDTable,
                                                   MacroPlan );
      GlobalOTDTable.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(),
                                                  DataHolderCapacityAndSaleBudgeFilterItem.Data(),
                                                  DataHolderCapacityAndSaleBudgeFilterYear.Data(),
                                                  DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
                                                  MPSync,
                                                  GlobalOTDTable,
                                                  MacroPlan );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
@@ -13,7 +13,7 @@
  {
    Body:
    [*
      tableBinaryData := ScenarioManager.CapacityAndSaleBudgeCompareExport().AsBinaryData();
      tableBinaryData := GlobalOTDTable.CapacityAndSaleBudgeCompareExport().AsBinaryData();
      Application.Download( "年度产销预算对比.xlsx", tableBinaryData );
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MPSync'
        Source: 'MPSync'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterBusinessType'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      MPSync.RefreshCapacityAndSaleBudgeFilter();
      MPSync.RefreshCapacityAndSaleBudgeFilter( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'ScenarioManager'
        Source: 'ScenarioManager'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterItem'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeFilterItem::Initial( ScenarioManager );
      CapacityAndSaleBudgeFilterItem::Initial( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'ScenarioManager'
        Source: 'ScenarioManager'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterMonth'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeFilterMonth::Initial( ScenarioManager );
      CapacityAndSaleBudgeFilterMonth::Initial( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MPSync'
        Source: 'MPSync'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterPlaceOfProductionOfArray'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC#663.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      MPSync.RefreshCapacityAndSaleBudgeFilter();
      MPSync.RefreshCapacityAndSaleBudgeFilter( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'ScenarioManager'
        Source: 'ScenarioManager'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterYear'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeFilterYear::Initial( ScenarioManager );
      CapacityAndSaleBudgeFilterYear::Initial( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def
@@ -5,6 +5,10 @@
  [
    Component DataSetLevelSalesDemands #extension
    {
      Children:
      [
        #child: listContextMenuSD
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"Customer name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"Customer ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"Order ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"Order line ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Order date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue( object.Quantity() - object.FulfilledQuantity(), 0.0).Round( 2)"}},{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfilled demand","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round( 2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"Is firmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"Is eligible for netting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderTag","title":"订单标签","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderTag"}}]'
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_listContextMenuSD.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
Component listContextMenuSD #extension
{
  Children:
  [
    Component MenuPriorityResult
    {
      #keys: '[414382.0.562012014]'
      BaseType: 'WebMenu'
      Properties:
      [
        Taborder: 10
        Title: '事业部优先级计算'
      ]
    }
    Component MenuEditCustomerOrderPriority
    {
      #keys: '[414382.0.581575364]'
      BaseType: 'WebMenu'
      Properties:
      [
        Taborder: 11
        Title: '修改客户订单优先级因子信息'
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuEditCustomerOrderPriority_OnClic.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ListSalesDemands
Response OnClick (
  SalesDemandBase selection
) id:Response_ListSalesDemands_MenuEditCustomerOrderPriority_OnClick
{
  #keys: '[414382.0.581575400]'
  CanBindMultiple: false
  DefinitionID => //FormSalesDemands/ListSalesDemands/Responsedef_ListSalesDemands_WebMenu_OnClick
  Initiator: 'MenuEditCustomerOrderPriority'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogEditCustomerOrderPriority );
      data := selection.astype( CustomerOrder );
      dlg.EditCustomerOrderPriority( data);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuPriorityResult_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListSalesDemands
Response OnClick () id:Response_ListSalesDemands_MenuPriorityResult_OnClick
{
  #keys: '[414382.0.563130924]'
  CanBindMultiple: false
  DefinitionID => //FormSalesDemands/ListSalesDemands/Responsedef_ListSalesDemands_WebMenu_OnClick
  Initiator: 'MenuPriorityResult'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogChoosePriorityPolicy );
      dlg.OpenChoose();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_ListCustomerAndFillingCapacityOrder.def
@@ -36,7 +36,7 @@
  ]
  Properties:
  [
    Taborder: 0
    Taborder: 1
  ]
  ResponseDefinitions:
  [
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_PanelButton.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
Component PanelButton
{
  #keys: '[414702.0.454190771]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonTransform
    {
      #keys: '[414702.0.454190800]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'BARRIER_CLOSED'
        Label: '转换'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def
@@ -11,20 +11,43 @@
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Image: 'JERRYCAN'
        Taborder: 3
        Title: 'Filling'
        Title: '填产'
      ]
    }
    Component MenuTest
    Component MenuRefresh
    {
      #keys: '[414382.0.415603149]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Image: 'EDITOR_HAS_DECLARATIVE_DEFINITION'
        Taborder: 4
        Title: 'Test'
        Title: '创建测试数据'
      ]
    }
    Component MenuDelete
    {
      #keys: '[414702.0.472081906]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 5
        Title: '删除'
      ]
    }
    Component MenuSelectAll
    {
      #keys: '[414702.0.472012591]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DOCUMENT_SELECTION'
        Shortcut: 'Ctrl+A'
        Taborder: 6
        Title: '全选'
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuDelete_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListCustomerAndFillingCapacityOrder
Response OnClick (
  CustomerAndForecastOrder selection
) id:Response_ListCustomerAndFillingCapacityOrder_MenuDelete_OnClick
{
  #keys: '[414702.0.472032713]'
  DefinitionID => /ListCustomerAndFillingCapacityOrder/Responsedef_ListCustomerAndFillingCapacityOrder_WebMenu_OnClick
  Initiator: 'MenuDelete'
  QuillAction
  {
    Body:
    [*
      selection.Delete();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def ÐÞ¸Ä
@@ -1,17 +1,17 @@
Quintiq file version 2.0
#parent: ListCustomerAndFillingCapacityOrder
Response OnClick () id:Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick
Response OnClick () id:Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick
{
  #keys: '[414382.0.415724061]'
  CanBindMultiple: false
  DefinitionID => /ListCustomerAndFillingCapacityOrder/Responsedef_ListCustomerAndFillingCapacityOrder_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuTest'
  Initiator: 'MenuRefresh'
  QuillAction
  {
    Body:
    [*
      CustomerAndForecastOrder::CreateTestData( MacroPlan);
      CustomerAndForecastOrder::RefreshData(  MacroPlan,GlobalOTDTable);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuSelectAll_OnClick.def
copy from _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def copy to _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuSelectAll_OnClick.def
Îļþ´Ó _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def ¸´ÖÆ
@@ -1,17 +1,17 @@
Quintiq file version 2.0
#parent: ListCustomerAndFillingCapacityOrder
Response OnClick () id:Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick
Response OnClick () id:Response_ListCustomerAndFillingCapacityOrder_MenuSelectAll_OnClick
{
  #keys: '[414382.0.415724061]'
  #keys: '[414702.0.474548365]'
  CanBindMultiple: false
  DefinitionID => /ListCustomerAndFillingCapacityOrder/Responsedef_ListCustomerAndFillingCapacityOrder_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuTest'
  Initiator: 'MenuSelectAll'
  QuillAction
  {
    Body:
    [*
      CustomerAndForecastOrder::CreateTestData( MacroPlan);
      this.SelectAll();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_PanelButton_ButtonTransform_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelButton/ButtonTransform
Response OnClick () id:Response_PanelButton_ButtonTransform_OnClick
{
  #keys: '[414702.0.454181189]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      CustomerAndForecastOrder::CreateData( MacroPlan );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/_ROOT_Component_FormCustomerAndForecastOrder.def
@@ -8,6 +8,7 @@
  Children:
  [
    #child: ListCustomerAndFillingCapacityOrder
    #child: PanelButton
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component ListInterfaceTest
{
  #keys: '[414702.0.459846558]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorInterfaceTest
    {
      #keys: '[414702.0.459846559]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'Global_BrokerExecuteLog'
      ]
    }
    #child: listActionBarPageInterfaceTest
    Component DataSetLevelInterfaceTest
    {
      #keys: '[414702.0.459846564]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuInterfaceTest
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BrokerName","title":"BrokerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BrokerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ElementTotal","title":"ElementTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ElementTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorDateTime","title":"ErrorDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorMessage","title":"ErrorMessage","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorMessage"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorNo","title":"ErrorNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSuccess","title":"IsSuccess","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSuccess"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SuccessDateTime","title":"SuccessDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SuccessDateTime"}}]'
        ContextMenu: 'listContextMenuInterfaceTest'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListInterfaceTest_WebMenu_OnClick
    {
      #keys: '[414702.0.488307130]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[1041.0.20211517]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
Quintiq file version 2.0
Component PanelInterfaceOptions
{
  #keys: '[414702.0.459752107]'
  BaseType: 'WebPanel'
  Children:
  [
    Component CheckboxCustomOrder
    {
      #keys: '[414702.0.459786494]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Label: 'CustomOrder'
        Taborder: 0
      ]
    }
    Component CheckboxForecast
    {
      #keys: '[414702.0.459501981]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Label: 'Forecast'
        Taborder: 1
      ]
    }
    Component DropDownListBusinessType
    {
      #keys: '[414702.0.465923773]'
      BaseType: 'WebDropDownList'
      Databinding: 'BusinessType'
      Children:
      [
        Component DataExtractorInterfaceOptions
        {
          #keys: '[414702.0.465923775]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'BusinessType'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'BusinessTypeName'
        Label: '事业部'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
Component PanelInterfaceTest
{
  #keys: '[414702.0.459815967]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonPullInterfaceDataToIntermediateTable
    {
      #keys: '[414702.0.457042579]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'WINE'
        Label: '拉取接口数据到中间表'
        Taborder: 0
      ]
    }
    Component ButtonSynchronizeDataToMacroPlan
    {
      #keys: '[414702.0.461471389]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'COFFEE_MACHINE'
        Label: '同步数据到MacroPlan'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelInterfaceTest981
{
  #keys: '[414702.0.459917264]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListInterfaceTest
  ]
  Properties:
  [
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listActionBarPageInterfaceTest.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageInterfaceTest
{
  #keys: '[414702.0.459846561]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component listContextMenuInterfaceTest
{
  #keys: '[414702.0.459846566]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuCreateShowData
    {
      #keys: '[414702.0.488246034]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'VIEW'
        Taborder: 3
        Title: '显示数据'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuCreateShowData_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: ListInterfaceTest
Response OnClick (
  Global_BrokerExecuteLog selection
) id:Response_ListInterfaceTest_MenuCreateShowData_OnClick
{
  #keys: '[414702.0.488307153]'
  CanBindMultiple: false
  DefinitionID => /ListInterfaceTest/Responsedef_ListInterfaceTest_WebMenu_OnClick
  Initiator: 'MenuCreateShowData'
  QuillAction
  {
    Body:
    [*
      GlobalOTDTable.Global_ShowRow( relflush );
      GlobalOTDTable.Global_ShowColumn( relflush );
      GlobalOTDTable.Global_ShowCell( relflush );
      Global_ShowCell::ShowData( GlobalOTDTable, selection );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: PanelInterfaceTest/ButtonPullInterfaceDataToIntermediateTable
Response OnClick () id:Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnClick
{
  #keys: '[414702.0.459947783]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( GlobalOTDTable );
  *]
  QuillAction
  {
    Body:
    [*
      GlobalOTDTable.SynchronizationAllMappingBrokerAndAPIByOption( CheckboxCustomOrder.Checked(),
                                                                    CheckboxForecast.Checked() );
      WebMessageBox::Success( "拉取成功!", true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
#parent: PanelInterfaceTest/ButtonSynchronizeDataToMacroPlan
Response OnClick () id:Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick
{
  #keys: '[414702.0.465857875]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( GlobalOTDTable ) and not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      businessTypes := construct( Strings );
      businessTypes.Add( DropDownListBusinessType.Data().BusinessTypeName() );
      GlobalOTDTable.SynchronizeDataToMacroPlan( MacroPlan,
                                                 businessTypes,
                                                 CheckboxCustomOrder.Checked(),
                                                 CheckboxForecast.Checked()
                                                );
      WebMessageBox::Success( "同步成功!", true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormInterfaceTest
{
  #keys: '[414702.0.459670964]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelInterfaceOptions
    #child: PanelInterfaceTest
    #child: PanelInterfaceTest981
  ]
  Properties:
  [
    Image: 'BACON'
    Title: '接口测试'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/Component_PanelKpiMatrixButton.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormKpiMatrix/_ROOT_Component_FormKpiMatrix.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_DataHolderPriorityFactorBusinessType_OnCreated.def
@@ -9,8 +9,12 @@
  {
    Body:
    [*
      businessTypeList := selectset( GlobalOTDTable,BusinessType,b,true);
      this.Data(&businessTypeList);
      //businessTypeList := selectset( GlobalOTDTable,BusinessType,b,true);
      //this.Data(&businessTypeList);
      list := this.Data();
      strings := selectuniquevalues( list,Elements,e,e.BusinessTypeName()).Concatenate( ";" );
      DropDownStringListBusinessType.Strings(strings);
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_DataHolderPriorityFactorBusinessType_OnDataChanged.def
@@ -9,9 +9,12 @@
  {
    Body:
    [*
      businessTypeList := selectset( GlobalOTDTable,BusinessType,b,true);
      this.Data(&businessTypeList);
      strings := BusinessType::GetBusinessNameStr( GlobalOTDTable );
      //businessTypeList := selectset( GlobalOTDTable,BusinessType,b,true);
      //this.Data(&businessTypeList);
      //strings := BusinessType::GetBusinessNameStr( GlobalOTDTable );
      //DropDownStringListBusinessType.Strings(strings);
      list := this.Data();
      strings := selectuniquevalues( list,Elements,e,e.BusinessTypeName()).Concatenate( ";" );
      DropDownStringListBusinessType.Strings(strings);
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/Response_DropDownStringListBusinessType_OnCreated.def
@@ -9,8 +9,8 @@
  {
    Body:
    [*
      strings := BusinessType::GetBusinessNameStr( GlobalOTDTable );
      this.Strings(strings);
      //strings := BusinessType::GetBusinessNameStr( GlobalOTDTable );
      //this.Strings(strings);
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormPriorityFactor/_ROOT_Component_FormPriorityFactor.def
@@ -43,6 +43,21 @@
      #keys: '[414382.0.539205233]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[BusinessType]*'
      Children:
      [
        Component DataExtractorPriorityFactorBusinessType
        {
          #keys: '[414382.0.584060499]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'BusinessType'
          ]
        }
      ]
      Properties:
      [
        Taborder: 4
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Component_PanelPriorityPolicyOperationButton#713.def
@@ -31,7 +31,7 @@
      BaseType: 'WebButton'
      Properties:
      [
        Label: '*'
        Label: '-'
        Taborder: 3
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyBusinessType_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: DataHolderPriorityPolicyBusinessType
Response OnCreated () id:Response_FormPriorityPolicy_DataHolderPriorityPolicyBusinessType_OnCreated
{
  #keys: '[414382.0.585796031]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      list := this.Data();
      strings := selectuniquevalues( list,Elements,e,e.BusinessTypeName()).Concatenate( ";" );
      PriorityPolicyBusinessType.Strings(strings);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyBusinessType_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: DataHolderPriorityPolicyBusinessType
Response OnDataChanged () id:Response_FormPriorityPolicy_DataHolderPriorityPolicyBusinessType_OnDataChanged
{
  #keys: '[414382.0.585796110]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      list := this.Data();
      strings := selectuniquevalues( list,Elements,e,e.BusinessTypeName()).Concatenate( ";" );
      PriorityPolicyBusinessType.Strings(strings);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyFactor_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: DataHolderPriorityPolicyFactor
Response OnCreated () id:Response_FormPriorityPolicy_DataHolderPriorityPolicyFactor_OnCreated
{
  #keys: '[414382.0.586001511]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      list := this.Data();
      strings := selectuniquevalues( list,Elements,e,e.Name()).Concatenate( ";" );
      DropDownStringList.Strings(strings);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_DataHolderPriorityPolicyFactor_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: DataHolderPriorityPolicyFactor
Response OnDataChanged () id:Response_FormPriorityPolicy_DataHolderPriorityPolicyFactor_OnDataChanged
{
  #keys: '[414382.0.585931640]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      list := this.Data();
      strings := selectuniquevalues( list,Elements,e,e.Name()).Concatenate( ";" );
      DropDownStringList.Strings(strings);
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_PanelPriorityPolicyOperationButton_DropDownStringList_OnCreated.def
@@ -9,8 +9,8 @@
  {
    Body:
    [*
      strs := PriorityFactor::GetNameList( MacroPlan,DropDownStringList.Text());
      this.Strings(strs);
      //strs := PriorityFactor::GetNameList( MacroPlan,DropDownStringList.Text());
      //this.Strings(strs);
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Response_PriorityPolicyBusinessType_OnSelectionChanged.def
@@ -9,8 +9,8 @@
  {
    Body:
    [*
      list := PriorityPolicy::GetDataByBusinessType( MacroPlan, PriorityPolicyBusinessType.Text());
      DataHolderPriorityPolicy.Data(&list);
      //list := PriorityPolicy::GetDataByBusinessType( MacroPlan, PriorityPolicyBusinessType.Text());
      //DataHolderPriorityPolicy.Data(&list);
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/_ROOT_Component_FormPriorityPolicy.def
@@ -39,6 +39,56 @@
        Taborder: 4
      ]
    }
    Component DataHolderPriorityPolicyBusinessType
    {
      #keys: '[414382.0.585736261]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[BusinessType]*'
      Children:
      [
        Component DataExtractorPriorityPolicyBusinessType
        {
          #keys: '[414382.0.585207663]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'BusinessType'
          ]
        }
      ]
      Properties:
      [
        Taborder: 5
      ]
    }
    Component DataHolderPriorityPolicyFactor
    {
      #keys: '[414382.0.585208237]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[PriorityFactor]*'
      Children:
      [
        Component DataExtractorPriorityPolicyFactor
        {
          #keys: '[414382.0.585705356]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'PriorityFactor'
          ]
        }
      ]
      Properties:
      [
        Taborder: 6
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_MatrixEditorShowInterfaceData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditorShowInterfaceData
{
  #keys: '[414702.0.491402111]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellShowInterfaceData
    {
      #keys: '[414702.0.491402112]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorShowInterfaceData
        {
          #keys: '[414702.0.491402113]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'Global_ShowCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Value'
        Column: 'Global_ShowColumn'
        Row: 'Global_ShowRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRowsShowInterfaceData
    {
      #keys: '[414702.0.491402116]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor703
        {
          #keys: '[414702.0.491402117]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'Global_ShowRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'RowNr'
        SortCriteria: 'RowNr'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumnsShowInterfaceData
    {
      #keys: '[414702.0.491402120]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor253
        {
          #keys: '[414702.0.491402121]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'Global_ShowColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'ColumnName'
        SortCriteria: 'ColumnIndex'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageShowInterfaceData
    #child: matrixeditorContextMenuShowInterfaceData
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumnsShowInterfaceData'
    ContextMenu: 'matrixeditorContextMenuShowInterfaceData'
    Rows: 'MatrixEditorRowsShowInterfaceData'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_matrixEditorActionBarPageShowInterfaceData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageShowInterfaceData
{
  #keys: '[414702.0.491402124]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/Component_matrixeditorContextMenuShowInterfaceData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuShowInterfaceData
{
  #keys: '[414702.0.491402127]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormShowInterfaceData/_ROOT_Component_FormShowInterfaceData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormShowInterfaceData
{
  #keys: '[414702.0.484442828]'
  BaseType: 'WebForm'
  Children:
  [
    #child: MatrixEditorShowInterfaceData
  ]
  Properties:
  [
    Image: 'PROJECTOR'
    Title: '接口数据显示'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/Component_pnlContent.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_SWF_DialogCeateNextStepDefinitionDependency/_ROOT_Component_SWF_DialogCeateNextStepDefinitionDependency.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Views/PriorityTest.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2745 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormBusinessType
      {
        title: 'QTIANMA_JITUAN::FormBusinessType'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormBusinessType'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 11
          columnPosition: 9
          columnSpan: 4
        }
        components
        {
          FormBusinessType_ListBusinessType
          {
          }
          FormBusinessType_DataSetLevelBusinessType
          {
            groupDepth: -1
            column_BusinessTypeName
            {
              columnId: 'BusinessTypeName'
              dataPath: 'BusinessTypeName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPriorityResult
      {
        title: 'QTIANMA_JITUAN::FormPriorityResult'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityResult'
        layout
        {
          mode: 'open'
          rowPosition: 13
          rowSpan: 11
          columnPosition: 1
          columnSpan: 4
        }
        components
        {
          FormPriorityResult_PanelPriorityResult
          {
            sizeRatio: 1
          }
          FormPriorityResult_ListPriorityResult
          {
          }
          FormPriorityResult_DataSetLevelPriorityResult
          {
            groupDepth: -1
            column_SalesSegmentName
            {
              columnId: 'SalesSegmentName'
              dataPath: 'SalesSegmentName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_ProductID
            {
              columnId: 'ProductID'
              dataPath: 'ProductID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 4
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 5
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 6
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PriorityResultScore
            {
              columnId: 'PriorityResultScore'
              dataPath: 'PriorityResultScore'
              dataType: 'real'
              index: 8
              subtotals: ''
              width: 150
            }
          }
          FormPriorityResult_PanelPriorityResultDetails
          {
            sizeRatio: 1
          }
          FormPriorityResult_ListPriorityResultBusinessTypeDetails
          {
          }
          FormPriorityResult_DataSetLevelPriorityResultDetails
          {
            groupDepth: -1
            column_SalesSegmentName
            {
              columnId: 'SalesSegmentName'
              dataPath: 'SalesSegmentName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 4
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 5
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 6
              subtotals: ''
              width: 150
            }
            column_PriorityResultScore
            {
              columnId: 'PriorityResultScore'
              dataPath: 'PriorityResultScore'
              dataType: 'real'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PriorityPolicyName
            {
              columnId: 'PriorityPolicyName'
              dataPath: 'PriorityPolicyName'
              dataType: 'string'
              index: 8
              subtotals: ''
              width: 150
            }
            column_PriorityFactorName
            {
              columnId: 'PriorityFactorName'
              dataPath: 'PriorityFactorName'
              dataType: 'string'
              index: 9
              subtotals: ''
              width: 150
            }
            column_PriorityFactorGradingName
            {
              columnId: 'PriorityFactorGradingName'
              dataPath: 'PriorityFactorGradingName'
              dataType: 'string'
              index: 10
              subtotals: ''
              width: 150
            }
            column_PriorityTotalScore
            {
              columnId: 'PriorityTotalScore'
              dataPath: 'PriorityTotalScore'
              dataType: 'real'
              index: 11
              subtotals: ''
              width: 150
            }
          }
          FormPriorityResult_ListPriorityResultGroupDetails
          {
          }
          FormPriorityResult_DataSetLevelPriorityResultDetails872
          {
            groupDepth: -1
            column_SalesSegmentName
            {
              columnId: 'SalesSegmentName'
              dataPath: 'SalesSegmentName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 4
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 5
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 6
              subtotals: ''
              width: 150
            }
            column_PriorityResultScore
            {
              columnId: 'PriorityResultScore'
              dataPath: 'PriorityResultScore'
              dataType: 'real'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PriorityPolicyName
            {
              columnId: 'PriorityPolicyName'
              dataPath: 'PriorityPolicyName'
              dataType: 'string'
              index: 8
              subtotals: ''
              width: 150
            }
            column_PriorityFactorName
            {
              columnId: 'PriorityFactorName'
              dataPath: 'PriorityFactorName'
              dataType: 'string'
              index: 9
              subtotals: ''
              width: 150
            }
            column_PriorityFactorGradingName
            {
              columnId: 'PriorityFactorGradingName'
              dataPath: 'PriorityFactorGradingName'
              dataType: 'string'
              index: 10
              subtotals: ''
              width: 150
            }
            column_PriorityTotalScore
            {
              columnId: 'PriorityTotalScore'
              dataPath: 'PriorityTotalScore'
              dataType: 'real'
              index: 11
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPriorityFactor
      {
        title: 'QTIANMA_JITUAN::FormPriorityFactor'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityFactor'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 12
          columnPosition: 1
          columnSpan: 4
        }
        components
        {
          FormPriorityFactor_ListPriorityFactor
          {
          }
          FormPriorityFactor_DataSetLevelPriorityFactor
          {
            groupDepth: -1
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_Coefficient
            {
              columnId: 'Coefficient'
              dataPath: 'Coefficient'
              dataType: 'real'
              index: 1
              subtotals: ''
              width: 496
            }
            column_Desc
            {
              columnId: 'Desc'
              dataPath: 'Desc'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPriorityFactorGrading
      {
        title: 'QTIANMA_JITUAN::FormPriorityFactorGrading'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityFactorGrading'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 11
          columnPosition: 5
          columnSpan: 4
        }
        components
        {
          FormPriorityFactorGrading_ListPriorityFactorGrading
          {
          }
          FormPriorityFactorGrading_DataSetLevelPriorityFactorGrading
          {
            groupDepth: -1
            column_GradingName
            {
              columnId: 'GradingName'
              dataPath: 'GradingName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_GradeValueStr
            {
              columnId: 'GradeValueStr'
              dataPath: 'GradeValueStr'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_GradeDesc
            {
              columnId: 'GradeDesc'
              dataPath: 'GradeDesc'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPriorityPolicy
      {
        title: 'QTIANMA_JITUAN::FormPriorityPolicy'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityPolicy'
        layout
        {
          mode: 'open'
          rowPosition: 12
          rowSpan: 14
          columnPosition: 5
          columnSpan: 7
        }
        components
        {
          FormPriorityPolicy_ListPriorityPolicy
          {
          }
          FormPriorityPolicy_DataSetLevelPriorityPolicy
          {
            groupDepth: -1
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_Formula
            {
              columnId: 'Formula'
              dataPath: 'Formula'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 433
            }
            column_CalculateValue
            {
              columnId: 'CalculateValue'
              dataPath: 'CalculateValue'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 644
            }
            column_Desc
            {
              columnId: 'Desc'
              dataPath: 'Desc'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
          }
          FormPriorityPolicy_PanelPriorityPolicyOperation
          {
            sizeRatio: 1
          }
          FormPriorityPolicy_PanelPriorityPolicyOperationButton
          {
            sizeRatio: 1
          }
          FormPriorityPolicy_PanelPriorityPolicyCoefficient
          {
            sizeRatio: 1
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_1
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 2
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_1
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 3
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_2
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 4
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_2
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 5
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_3
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 6
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_3
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 7
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_4
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 8
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_4
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 9
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_5
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 10
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_5
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 11
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_6
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 12
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_6
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 13
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_7
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 14
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_7
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 15
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormSanityCheck
      {
        title: 'Sanity Check'
        shown: false
        componentID: 'FormSanityCheck'
        layout
        {
          mode: 'dockright'
          index: 16
        }
        components
        {
          FormSanityCheck_PanelSanityCheckToolbar
          {
            sizeRatio: 1
          }
          FormSanityCheck_PanelSanityCheckContent
          {
            sizeRatio: 1
          }
          FormSanityCheck_PanelSanityCheckGroup
          {
            sizeRatio: 4
          }
          FormSanityCheck_ListSanityCheckGroup
          {
          }
          FormSanityCheck_DataSetLevelSanityCheckGroup
          {
            groupDepth: -1
            sort: 'DESC:IsShown,DESC:SanityCheckHighestCategory,DESC:_Expr3'
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Show
            {
              columnId: 'Show'
              dataPath: 'Show'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 32
            }
            column_Group
            {
              columnId: 'Group'
              dataPath: 'Group'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 270
            }
            column__Expr3
            {
              columnId: '_Expr3'
              dataPath: '_Expr3'
              dataType: 'number'
              index: 4
              subtotals: ''
              width: 95
            }
          }
          FormSanityCheck_PanelSanityCheckMessage
          {
            sizeRatio: 5
          }
          FormSanityCheck_ListSanityCheckMessage
          {
          }
          FormSanityCheck_DataSetLevelSanityCheckMessage
          {
            groupDepth: -1
            sort: 'DESC:IsShown,SanityCheckGroup.Type,SanityCheckGroup.Group,Description'
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Show
            {
              columnId: 'Show'
              dataPath: 'Show'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 32
            }
            column_Messages
            {
              columnId: 'Messages'
              dataPath: 'Messages'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 32
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              index: 4
              subtotals: ''
              width: 585
            }
          }
        }
      }
      form_FormOptimizerPuzzles_8
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 17
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_8
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 18
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_9
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 19
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_9
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 20
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_10
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 21
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_10
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 22
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_11
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 23
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_11
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 24
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_12
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 25
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_12
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 26
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_13
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 27
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_13
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 28
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_14
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 29
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_14
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 30
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormOptimizerPuzzles_15
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 31
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI_15
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 32
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormSanityCheck_1
      {
        title: 'Sanity Check'
        shown: false
        componentID: 'FormSanityCheck'
        layout
        {
          mode: 'dockright'
          index: 33
        }
        components
        {
          FormSanityCheck_PanelSanityCheckToolbar
          {
            sizeRatio: 1
          }
          FormSanityCheck_PanelSanityCheckContent
          {
            sizeRatio: 1
          }
          FormSanityCheck_PanelSanityCheckGroup
          {
            sizeRatio: 4
          }
          FormSanityCheck_ListSanityCheckGroup
          {
          }
          FormSanityCheck_DataSetLevelSanityCheckGroup
          {
            groupDepth: -1
            sort: 'DESC:IsShown,DESC:SanityCheckHighestCategory,DESC:_Expr3'
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Show
            {
              columnId: 'Show'
              dataPath: 'Show'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 32
            }
            column_Group
            {
              columnId: 'Group'
              dataPath: 'Group'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 270
            }
            column__Expr3
            {
              columnId: '_Expr3'
              dataPath: '_Expr3'
              dataType: 'number'
              index: 4
              subtotals: ''
              width: 95
            }
          }
          FormSanityCheck_PanelSanityCheckMessage
          {
            sizeRatio: 5
          }
          FormSanityCheck_ListSanityCheckMessage
          {
          }
          FormSanityCheck_DataSetLevelSanityCheckMessage
          {
            groupDepth: -1
            sort: 'DESC:IsShown,SanityCheckGroup.Type,SanityCheckGroup.Group,Description'
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Show
            {
              columnId: 'Show'
              dataPath: 'Show'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 32
            }
            column_Messages
            {
              columnId: 'Messages'
              dataPath: 'Messages'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 32
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              index: 4
              subtotals: ''
              width: 585
            }
          }
        }
      }
      form_FormKPI_16
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 34
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Metals_KPISetting: 'Fulfillment;Fulfillment target;On time fulfillment;On time in full;Sales'
              Food_KPISetting: 'Fulfillment;Fulfillment target;On time fulfillment;On time in full;Sales'
              Empty_KPISetting: 'Fulfillment;Fulfillment target;On time fulfillment;On time in full;Sales'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 0
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormKPI_17
      {
        title: 'KPI Dashboard'
        shown: false
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 35
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPIDashboard'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Metals_KPISetting: 'Fulfillment;Fulfillment target;On time fulfillment;On time in full;Sales'
              Food_KPISetting: 'Fulfillment;Fulfillment target;On time fulfillment;On time in full;Sales'
              Empty_KPISetting: 'Fulfillment;Fulfillment target;On time fulfillment;On time in full;Sales'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 0
              subtotals: ''
              width: 200
            }
          }
        }
      }
      form_FormPriorities
      {
        title: 'Priorities'
        shown: true
        componentID: 'FormPriorities'
        layout
        {
          mode: 'dockright'
          index: 36
        }
        components
        {
          FormPriorities_ListPriority
          {
          }
          FormPriorities_DataSetLevelPriority
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 32
            }
            column_ImgHasSalesDemand
            {
              columnId: 'ImgHasSalesDemand'
              dataPath: 'ImgHasSalesDemand'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 30
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 95
            }
            column_Weight
            {
              columnId: 'Weight'
              dataPath: 'Weight'
              dataType: 'real'
              index: 3
              subtotals: ''
              width: 95
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 15
    image: ''
    description: ''
  }
  formatversion: 2
  id: 'PriorityTest'
  name: 'PriorityTest'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/Test.vw
@@ -159,6 +159,800 @@
          }
        }
      }
      form_FormCustomerAndForecastOrder
      {
        title: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormCustomerAndForecastOrder'
        layout
        {
          mode: 'open'
          rowPosition: 16
          rowSpan: 16
          columnPosition: 1
          columnSpan: 4
        }
        components
        {
          FormCustomerAndForecastOrder_PanelButton
          {
            sizeRatio: 1
          }
          FormCustomerAndForecastOrder_ListCustomerAndFillingCapacityOrder
          {
          }
          FormCustomerAndForecastOrder_DataSetLevelCustomerAndFillingCapacityOrder
          {
            groupDepth: -1
            column_VerNo
            {
              columnId: 'VerNo'
              dataPath: 'VerNo'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_OrderID
            {
              columnId: 'OrderID'
              dataPath: 'OrderID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_ProductID
            {
              columnId: 'ProductID'
              dataPath: 'ProductID'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 4
              subtotals: ''
              width: 150
            }
            column_ServiceType
            {
              columnId: 'ServiceType'
              dataPath: 'ServiceType'
              dataType: 'string'
              index: 5
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 6
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PanelBigSheetQuantity
            {
              columnId: 'PanelBigSheetQuantity'
              dataPath: 'PanelBigSheetQuantity'
              dataType: 'real'
              index: 8
              subtotals: ''
              width: 150
            }
            column_SalesAmount
            {
              columnId: 'SalesAmount'
              dataPath: 'SalesAmount'
              dataType: 'number'
              index: 9
              subtotals: ''
              width: 150
            }
            column_ForecastDemandDate
            {
              columnId: 'ForecastDemandDate'
              dataPath: 'ForecastDemandDate'
              dataType: 'date'
              index: 10
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 11
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormFillingCapacityOrder
      {
        title: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormFillingCapacityOrder'
        layout
        {
          mode: 'open'
          rowPosition: 16
          rowSpan: 16
          columnPosition: 5
          columnSpan: 8
        }
        components
        {
          FormFillingCapacityOrder_ListFillingCapacityOrder
          {
          }
          FormFillingCapacityOrder_DataSetLevelFillingCapacityOrder
          {
            groupDepth: -1
            column_VerNo
            {
              columnId: 'VerNo'
              dataPath: 'VerNo'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_ProductID
            {
              columnId: 'ProductID'
              dataPath: 'ProductID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_SalesSegmentName
            {
              columnId: 'SalesSegmentName'
              dataPath: 'SalesSegmentName'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 4
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 5
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 6
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PanelBigSheetQuantity
            {
              columnId: 'PanelBigSheetQuantity'
              dataPath: 'PanelBigSheetQuantity'
              dataType: 'real'
              index: 8
              subtotals: ''
              width: 150
            }
            column_SalesAmount
            {
              columnId: 'SalesAmount'
              dataPath: 'SalesAmount'
              dataType: 'number'
              index: 9
              subtotals: ''
              width: 150
            }
            column_ForecastDemandDate
            {
              columnId: 'ForecastDemandDate'
              dataPath: 'ForecastDemandDate'
              dataType: 'date'
              index: 10
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 11
              subtotals: ''
              width: 150
            }
            column_OrderType
            {
              columnId: 'OrderType'
              dataPath: 'OrderType'
              dataType: 'string'
              index: 12
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPriorityPolicy
      {
        title: 'QTIANMA_JITUAN::FormPriorityPolicy'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityPolicy'
        layout
        {
          mode: 'open'
          rowPosition: 32
          rowSpan: 13
          columnPosition: 5
          columnSpan: 8
        }
        components
        {
          FormPriorityPolicy_ListPriorityPolicy
          {
          }
          FormPriorityPolicy_DataSetLevelPriorityPolicy
          {
            groupDepth: -1
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_Formula
            {
              columnId: 'Formula'
              dataPath: 'Formula'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_CalculateValue
            {
              columnId: 'CalculateValue'
              dataPath: 'CalculateValue'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_Desc
            {
              columnId: 'Desc'
              dataPath: 'Desc'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
          }
          FormPriorityPolicy_PanelPriorityPolicyOperation
          {
            sizeRatio: 1
          }
          FormPriorityPolicy_PanelPriorityPolicyOperationButton
          {
            sizeRatio: 1
          }
          FormPriorityPolicy_PanelPriorityPolicyCoefficient
          {
            sizeRatio: 1
          }
        }
      }
      form_FormPriorityResult
      {
        title: 'QTIANMA_JITUAN::FormPriorityResult'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityResult'
        layout
        {
          mode: 'open'
          rowPosition: 45
          rowSpan: 17
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormPriorityResult_PanelPriorityResult
          {
            sizeRatio: 1
          }
          FormPriorityResult_ListPriorityResult
          {
          }
          FormPriorityResult_DataSetLevelPriorityResult
          {
            groupDepth: -1
            column_SalesSegmentName
            {
              columnId: 'SalesSegmentName'
              dataPath: 'SalesSegmentName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_ProductID
            {
              columnId: 'ProductID'
              dataPath: 'ProductID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 4
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 5
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 6
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PriorityResultScore
            {
              columnId: 'PriorityResultScore'
              dataPath: 'PriorityResultScore'
              dataType: 'real'
              index: 8
              subtotals: ''
              width: 150
            }
          }
          FormPriorityResult_PanelPriorityResultDetails
          {
            sizeRatio: 1
          }
          FormPriorityResult_ListPriorityResultBusinessTypeDetails
          {
          }
          FormPriorityResult_DataSetLevelPriorityResultDetails
          {
            groupDepth: -1
            column_SalesSegmentName
            {
              columnId: 'SalesSegmentName'
              dataPath: 'SalesSegmentName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 4
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 5
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 6
              subtotals: ''
              width: 150
            }
            column_PriorityResultScore
            {
              columnId: 'PriorityResultScore'
              dataPath: 'PriorityResultScore'
              dataType: 'real'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PriorityPolicyName
            {
              columnId: 'PriorityPolicyName'
              dataPath: 'PriorityPolicyName'
              dataType: 'string'
              index: 8
              subtotals: ''
              width: 150
            }
            column_PriorityFactorName
            {
              columnId: 'PriorityFactorName'
              dataPath: 'PriorityFactorName'
              dataType: 'string'
              index: 9
              subtotals: ''
              width: 150
            }
            column_PriorityFactorGradingName
            {
              columnId: 'PriorityFactorGradingName'
              dataPath: 'PriorityFactorGradingName'
              dataType: 'string'
              index: 10
              subtotals: ''
              width: 150
            }
            column_PriorityTotalScore
            {
              columnId: 'PriorityTotalScore'
              dataPath: 'PriorityTotalScore'
              dataType: 'real'
              index: 11
              subtotals: ''
              width: 150
            }
          }
          FormPriorityResult_ListPriorityResultGroupDetails
          {
          }
          FormPriorityResult_DataSetLevelPriorityResultDetails872
          {
            groupDepth: -1
            column_SalesSegmentName
            {
              columnId: 'SalesSegmentName'
              dataPath: 'SalesSegmentName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_StockingPointID
            {
              columnId: 'StockingPointID'
              dataPath: 'StockingPointID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_Customer
            {
              columnId: 'Customer'
              dataPath: 'Customer'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_BusinessType
            {
              columnId: 'BusinessType'
              dataPath: 'BusinessType'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 4
              subtotals: ''
              width: 150
            }
            column_UnitOfMeasureName
            {
              columnId: 'UnitOfMeasureName'
              dataPath: 'UnitOfMeasureName'
              dataType: 'string'
              index: 5
              subtotals: ''
              width: 150
            }
            column_DemandDate
            {
              columnId: 'DemandDate'
              dataPath: 'DemandDate'
              dataType: 'date'
              index: 6
              subtotals: ''
              width: 150
            }
            column_PriorityResultScore
            {
              columnId: 'PriorityResultScore'
              dataPath: 'PriorityResultScore'
              dataType: 'real'
              index: 7
              subtotals: ''
              width: 150
            }
            column_PriorityPolicyName
            {
              columnId: 'PriorityPolicyName'
              dataPath: 'PriorityPolicyName'
              dataType: 'string'
              index: 8
              subtotals: ''
              width: 150
            }
            column_PriorityFactorName
            {
              columnId: 'PriorityFactorName'
              dataPath: 'PriorityFactorName'
              dataType: 'string'
              index: 9
              subtotals: ''
              width: 150
            }
            column_PriorityFactorGradingName
            {
              columnId: 'PriorityFactorGradingName'
              dataPath: 'PriorityFactorGradingName'
              dataType: 'string'
              index: 10
              subtotals: ''
              width: 150
            }
            column_PriorityTotalScore
            {
              columnId: 'PriorityTotalScore'
              dataPath: 'PriorityTotalScore'
              dataType: 'real'
              index: 11
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPriorityFactor
      {
        title: 'QTIANMA_JITUAN::FormPriorityFactor'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityFactor'
        layout
        {
          mode: 'open'
          rowPosition: 37
          rowSpan: 8
          columnPosition: 1
          columnSpan: 4
        }
        components
        {
          FormPriorityFactor_ListPriorityFactor
          {
          }
          FormPriorityFactor_DataSetLevelPriorityFactor
          {
            groupDepth: -1
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_Coefficient
            {
              columnId: 'Coefficient'
              dataPath: 'Coefficient'
              dataType: 'real'
              index: 1
              subtotals: ''
              width: 150
            }
            column_Desc
            {
              columnId: 'Desc'
              dataPath: 'Desc'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormPriorityFactorGrading
      {
        title: 'QTIANMA_JITUAN::FormPriorityFactorGrading'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormPriorityFactorGrading'
        layout
        {
          mode: 'open'
          rowPosition: 32
          rowSpan: 5
          columnPosition: 1
          columnSpan: 4
        }
        components
        {
          FormPriorityFactorGrading_ListPriorityFactorGrading
          {
          }
          FormPriorityFactorGrading_DataSetLevelPriorityFactorGrading
          {
            groupDepth: -1
            column_GradingName
            {
              columnId: 'GradingName'
              dataPath: 'GradingName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_GradeValueStr
            {
              columnId: 'GradeValueStr'
              dataPath: 'GradeValueStr'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_GradeDesc
            {
              columnId: 'GradeDesc'
              dataPath: 'GradeDesc'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
_Main/UI/MacroPlannerWebApp/Views/½Ó¿Ú²âÊÔ.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormInterfaceTest
      {
        title: 'QTIANMA_JITUAN::FormInterfaceTest'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormInterfaceTest'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 10
          columnPosition: 1
          columnSpan: 6
        }
        components
        {
          FormInterfaceTest_PanelInterfaceOptions
          {
            sizeRatio: 1
          }
          FormInterfaceTest_PanelInterfaceTest
          {
            sizeRatio: 1
          }
          FormInterfaceTest_PanelInterfaceTest981
          {
            sizeRatio: 1
          }
          FormInterfaceTest_ListInterfaceTest
          {
          }
          FormInterfaceTest_DataSetLevelInterfaceTest
          {
            groupDepth: -1
            column_BrokerName
            {
              columnId: 'BrokerName'
              dataPath: 'BrokerName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_ElementTotal
            {
              columnId: 'ElementTotal'
              dataPath: 'ElementTotal'
              dataType: 'number'
              index: 1
              subtotals: ''
              width: 150
            }
            column_ErrorDateTime
            {
              columnId: 'ErrorDateTime'
              dataPath: 'ErrorDateTime'
              dataType: 'string'
              index: 2
              subtotals: ''
              width: 150
            }
            column_ErrorMessage
            {
              columnId: 'ErrorMessage'
              dataPath: 'ErrorMessage'
              dataType: 'string'
              index: 3
              subtotals: ''
              width: 150
            }
            column_ErrorNo
            {
              columnId: 'ErrorNo'
              dataPath: 'ErrorNo'
              dataType: 'number'
              index: 4
              subtotals: ''
              width: 150
            }
            column_IsSuccess
            {
              columnId: 'IsSuccess'
              dataPath: 'IsSuccess'
              dataType: 'boolean'
              index: 5
              subtotals: ''
              width: 150
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              index: 6
              subtotals: ''
              width: 150
            }
            column_SuccessDateTime
            {
              columnId: 'SuccessDateTime'
              dataPath: 'SuccessDateTime'
              dataType: 'string'
              index: 7
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormBusinessType
      {
        title: 'QTIANMA_JITUAN::FormBusinessType'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormBusinessType'
        layout
        {
          mode: 'open'
          rowPosition: 11
          rowSpan: 6
          columnPosition: 1
          columnSpan: 6
        }
        components
        {
          FormBusinessType_ListBusinessType
          {
          }
          FormBusinessType_DataSetLevelBusinessType
          {
            groupDepth: -1
            column_BusinessTypeName
            {
              columnId: 'BusinessTypeName'
              dataPath: 'BusinessTypeName'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormShowInterfaceData
      {
        title: 'QTIANMA_JITUAN::FormShowInterfaceData'
        shown: true
        componentID: 'QTIANMA_JITUAN::FormShowInterfaceData'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 16
          columnPosition: 7
          columnSpan: 6
        }
        components: null
      }
    }
    userconfigurableinformation
    {
    }
    image: 'SKIN_TIGER'
    page: ''
    group: ''
    index: 0
    description: ''
  }
  formatversion: 2
  id: '接口测试'
  name: '接口测试'
  isglobal: false
  isroot: true
}