lazhen
2024-06-25 43881350a19a4d1f437963875f04f9e0ab42ceb7
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
已添加150个文件
已修改10个文件
已删除2个文件
3331 ■■■■■ 文件已修改
LibMacroPlanner/BL/Type_UnitPeriodTime/Method_OnCreate.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Dataset_RecycleBin/_ROOT_Dataset_RecycleBin.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_Archive_Archive_GeneralExcelI.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_General.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_LocalColumn_LocalCell_LocalCell_LocalColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_LocalColumn_LocalTable_LocalTable_LocalColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_LocalRow_LocalCell_LocalCell_LocalRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_LocalRow_LocalTable_LocalTable_LocalRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_LocalTable_RecycleBin_RecycleBin_LocalTable.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlan.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePR/StaticMethod_FillCells.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePR/StaticMethod_FillRows.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePR/StaticMethod_GenerateColumnIndex.qbl 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLData/Attribute_Priority.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLData/Attribute_XML.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLData/_ROOT_Type_ExportXMLData.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/Attribute_FinalXML.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/Method_Export.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/_ROOT_Type_ExportXMLManager.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell/_ROOT_Type_LocalCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersion.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersionValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersion.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersionValue.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/Attribute_Gap.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/Function_CalcGap.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/Method_GetAttributeByName.qbl 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalColumn/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalColumn/Attribute_IsAttrbuteColumn.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalColumn/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalColumn/_ROOT_Type_LocalColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalRow/Attribute_CustomName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalRow/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalRow/_ROOT_Type_LocalRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTable/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTable/Attribute_RowIndexCache.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTable/Method_GetRowIndexCache.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTable/_ROOT_Type_LocalTable.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityAGW.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityKW.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityPL.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKG.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKM.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Period_MP/_ROOT_Type_Period_MP.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_RecycleBin/StaticMethod_OnLogin.qbl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_RecycleBin/_ROOT_Type_RecycleBin.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Attribute_Color.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Attribute_CustomRemark.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Attribute_EventType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Attribute_Outcome.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Attribute_Remark.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Function_CalcColor.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Function_CalcEventType.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Function_CalcOutcome.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Function_CalcRemark.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Method_CalculateEventType.qbl 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Method_CalculateRemark#503.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Method_GetAttributeByName.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/Method_SetRemark.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/StaticMethod_AsyncExport.qbl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/StaticMethod_Create.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/StaticMethod_GetAttributeNames.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/StaticMethod_GetShiftPlanColumnXML.qbl 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPlan/_ROOT_Type_ShiftPlan.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Test/StaticMethod_Test.qbl 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanCell/Attribute_Value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanCell/_ROOT_Type_TransferPlanCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanColumn/Function_CalcColumnName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanColumn/TypeIndex_TransferPlanColumnTypeIndex.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanColumn/_ROOT_Type_TransferPlanColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/Attribute_ProductID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/Attribute_SourceStockpoingPointID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/Attribute_TargetStockpoingPointID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/TypeIndex_TransferPlanRowTypeIndex.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanRow/_ROOT_Type_TransferPlanRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_UnitPeriodTime/Method_OnCreate.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/Date.qrp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/DateTime.qrp 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/ShiftPlan.qrp 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews#859.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Method_OnCreated.def 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioCo.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnOk_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/_ROOT_Component_DialogUpperLimitOfTransferCapacity.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_MatrixEditorTimeCapacities#656.def 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_PanelMatrix#675.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixEditorActionBarPageTime#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixeditorContextMenuTime#1.def 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_pOperation.def 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_MatrixEditorTimeCapacities_656_OnUpdateValue#317.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bDownload_OnClick.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bExport_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form568/_ROOT_Component_FormShihtPlan#568.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form989/Response_pHeader_bImport_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixEditorActionBarPageDemandComparison.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixeditorContextMenuDemandComparison.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pOperation#715.def 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhComparisonData_OnDataChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged#168.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonCompare_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bDownload_OnClick.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bExport_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Response_pHeader_bImport_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormRoutings/Response_MacroPlanner_ListRoutings_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Response_pHeader_393_bImport_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixEditorActionBarPage493.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixeditorContextMenu367.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pContent.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pHeader.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bGenerateReport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/_ROOT_Component_FormTransferPlan.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/TransferPlan.vw 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Type_UnitPeriodTime/Method_OnCreate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method OnCreate
{
  TextBody:
  [*
    // rislai Jun-18-2024 (created)
  *]
  InterfaceProperties { Accessibility: 'Module' }
}
LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl
@@ -5,6 +5,7 @@
{
  #keys: '2[110880.4.1188154382][110880.4.1188154375]'
  Description: 'MP'
  OnCreate: 'this.OnCreate();'
  Parent: UnitPeriodTimeBase
  StructuredName: 'UnitPeriodTimes'
}
_Main/BL/Dataset_RecycleBin/_ROOT_Dataset_RecycleBin.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Dataset RecycleBin
{
  #keys: '2[412672.0.1084213478][412672.0.1084213477]'
  DefaultMDSName: 'RecycleBin'
  InstanceType: RecycleBin
  WithStorage: false
}
_Main/BL/Relations/Relation_ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData
{
  #keys: '1[412672.0.1084249088]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ExportXMLManager
  {
    #keys: '3[412672.0.1084249090][412672.0.1084249089][412672.0.1084249091]'
    Cardinality: '0to1'
    ObjectDefinition: ExportXMLData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ExportXMLData
  {
    #keys: '3[412672.0.1084249093][412672.0.1084249092][412672.0.1084249094]'
    Cardinality: '1toN'
    ObjectDefinition: ExportXMLManager
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager
{
  #keys: '1[412672.0.1084249075]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide RecycleBin
  {
    #keys: '3[412672.0.1084249077][412672.0.1084249076][412672.0.1084249078]'
    Cardinality: '0to1'
    ObjectDefinition: ExportXMLManager
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ExportXMLManager
  {
    #keys: '3[412672.0.1084249080][412672.0.1084249079][412672.0.1084249081]'
    Cardinality: '1toN'
    ObjectDefinition: RecycleBin
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_Archive_Archive_GeneralExcelI.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_General.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_GeneralExcelImportAndExportDataSource
{
  #keys: '1[412672.0.1087854694]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide RecycleBin
  {
    #keys: '3[412672.0.1087854696][412672.0.1087854695][412672.0.1087854697]'
    Cardinality: '0to1'
    ObjectDefinition: GeneralExcelImportAndExportDataSource
    OwningSide: 'Reference'
  }
  RelationSide.RightSide GeneralExcelImportAndExportDataSource
  {
    #keys: '3[412672.0.1087854699][412672.0.1087854698][412672.0.1087854700]'
    Cardinality: '1toN'
    ObjectDefinition: RecycleBin
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_LocalColumn_LocalCell_LocalCell_LocalColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation LocalColumn_LocalCell_LocalCell_LocalColumn
{
  #keys: '1[412672.0.1084249675]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide LocalCell
  {
    #keys: '3[412672.0.1084249677][412672.0.1084249676][412672.0.1084249678]'
    Cardinality: '1toN'
    ObjectDefinition: LocalColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide LocalColumn
  {
    #keys: '3[412672.0.1084249680][412672.0.1084249679][412672.0.1084249681]'
    Cardinality: '0to1'
    ObjectDefinition: LocalCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_LocalColumn_LocalTable_LocalTable_LocalColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation LocalColumn_LocalTable_LocalTable_LocalColumn
{
  #keys: '1[412672.0.1084249662]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide LocalTable
  {
    #keys: '3[412672.0.1084249664][412672.0.1084249663][412672.0.1084249665]'
    Cardinality: '0to1'
    ObjectDefinition: LocalColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide LocalColumn
  {
    #keys: '3[412672.0.1084249667][412672.0.1084249666][412672.0.1084249668]'
    Cardinality: '1toN'
    ObjectDefinition: LocalTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_LocalRow_LocalCell_LocalCell_LocalRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation LocalRow_LocalCell_LocalCell_LocalRow
{
  #keys: '1[412672.0.1084249636]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide LocalCell
  {
    #keys: '3[412672.0.1084249638][412672.0.1084249637][412672.0.1084249639]'
    Cardinality: '1toN'
    ObjectDefinition: LocalRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide LocalRow
  {
    #keys: '3[412672.0.1084249641][412672.0.1084249640][412672.0.1084249642]'
    Cardinality: '0to1'
    ObjectDefinition: LocalCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_LocalRow_LocalTable_LocalTable_LocalRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation LocalRow_LocalTable_LocalTable_LocalRow
{
  #keys: '1[412672.0.1084249649]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide LocalTable
  {
    #keys: '3[412672.0.1084249651][412672.0.1084249650][412672.0.1084249652]'
    Cardinality: '0to1'
    ObjectDefinition: LocalRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide LocalRow
  {
    #keys: '3[412672.0.1084249654][412672.0.1084249653][412672.0.1084249655]'
    Cardinality: '1toN'
    ObjectDefinition: LocalTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_LocalTable_RecycleBin_RecycleBin_LocalTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation LocalTable_RecycleBin_RecycleBin_LocalTable
{
  #keys: '1[412672.0.1084249623]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide RecycleBin
  {
    #keys: '3[412672.0.1084249625][412672.0.1084249624][412672.0.1084249626]'
    Cardinality: '0to1'
    ObjectDefinition: LocalTable
    OwningSide: 'Reference'
  }
  RelationSide.RightSide LocalTable
  {
    #keys: '3[412672.0.1084249628][412672.0.1084249627][412672.0.1084249629]'
    Cardinality: '1toN'
    ObjectDefinition: RecycleBin
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan
{
  #keys: '1[412672.0.1066680007]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide UnitPeriodTime
  {
    #keys: '3[412672.0.1066680009][412672.0.1066680008][412672.0.1066680010]'
    Cardinality: '0to1'
    ObjectDefinition: ShiftPlan
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ShiftPlan
  {
    #keys: '3[412672.0.1066680012][412672.0.1066680011][412672.0.1066680013]'
    Cardinality: '0to1'
    ObjectDefinition: UnitPeriodTime
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlan.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlanCell
{
  #keys: '1[413988.0.1292031952]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide TransferPlanColumn
  {
    #keys: '3[413988.0.1292031954][413988.0.1292031953][413988.0.1292031955]'
    Cardinality: '0to1'
    ObjectDefinition: TransferPlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide TransferPlanCell
  {
    #keys: '3[413988.0.1292031957][413988.0.1292031956][413988.0.1292031958]'
    Cardinality: '1toN'
    ObjectDefinition: TransferPlanColumn
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell
{
  #keys: '1[413988.0.1292031965]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide TransferPlanRow
  {
    #keys: '3[413988.0.1292031967][413988.0.1292031966][413988.0.1292031968]'
    Cardinality: '0to1'
    ObjectDefinition: TransferPlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide TransferPlanCell
  {
    #keys: '3[413988.0.1292031970][413988.0.1292031969][413988.0.1292031971]'
    Cardinality: '1toN'
    ObjectDefinition: TransferPlanRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn
{
  #keys: '1[413988.0.1292031939]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1292031941][413988.0.1292031940][413988.0.1292031942]'
    Cardinality: '0to1'
    ObjectDefinition: TransferPlanColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide TransferPlanColumn
  {
    #keys: '3[413988.0.1292031944][413988.0.1292031943][413988.0.1292031945]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow
{
  #keys: '1[413988.0.1292031926]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1292031928][413988.0.1292031927][413988.0.1292031929]'
    Cardinality: '0to1'
    ObjectDefinition: TransferPlanRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide TransferPlanRow
  {
    #keys: '3[413988.0.1292031931][413988.0.1292031930][413988.0.1292031932]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Compared (
  RecycleBin recycleBin,
  const ArchivePR baseVersion,
  const ArchivePR compareVersion
) as LocalTable
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    localTable := recycleBin.LocalTable( relnew,Name := baseVersion.Name() + "__" + compareVersion.Name());
    baseVersionFile := OSFile::Construct();
    compareVersionFile := OSFile::Construct();
    try {
      baseVersionFile.Open( baseVersion.FilePath(), "Read", false );
      baseVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, baseVersionFile.ReadBinary(), baseVersion.FilePath() );
      baseVersionDataSource.ReadStructure();
      compareVersionFile.Open( compareVersion.FilePath(), "Read", false );
      compareVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, compareVersionFile.ReadBinary(), compareVersion.FilePath() );
      compareVersionDataSource.ReadStructure();
      baseVersionTable := select( baseVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
      compareVersionTable := select( compareVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
      if( not isnull( baseVersionTable ) and not isnull( compareVersionTable )){
        //生成行数据
        rowKeys := construct( Strings );
        baseVersionRowTree := NamedValueTree::Create();
        baseVersionRows := construct( GeneralExcelImportAndExportDataRows ,constcontent);
        compareVersionRowTree := NamedValueTree::Create();
        compareVersionRows := construct( GeneralExcelImportAndExportDataRows ,constcontent);
        ArchivePR::FillRows( baseVersionTable,rowKeys,baseVersionRowTree,baseVersionRows );
        ArchivePR::FillRows( compareVersionTable,rowKeys,compareVersionRowTree,compareVersionRows );
        // ç”Ÿæˆåˆ—数据
        columnTree := NamedValueTree::Create();
        columns := construct( LocalColumns );
        ArchivePR::GenerateColumnIndex( baseVersionTable,localTable,columnTree,columns );
        ArchivePR::GenerateColumnIndex( compareVersionTable,localTable,columnTree,columns );
        columnNames := selectvalues( columns,Elements,column,true,column.Name() );
        // ç”Ÿæˆæ•°æ®
        for ( rowIndex := 0; rowIndex < rowKeys.Size(); rowIndex++ ) {
          rowKey := rowKeys.Element( rowIndex );
          baseVersionCellTree := NamedValueTree::Create();
          baseVersionCells := construct( GeneralExcelImportAndExportDataCells ,constcontent);
          compareVersionCellTree := NamedValueTree::Create();
          compareVersionCells := construct( GeneralExcelImportAndExportDataCells ,constcontent);
          ArchivePR::FillCells( rowKey,baseVersionRowTree,baseVersionRows,baseVersionCellTree,baseVersionCells );
          ArchivePR::FillCells( rowKey,compareVersionRowTree,compareVersionRows,compareVersionCellTree,compareVersionCells );
          row := localTable.LocalRow( relnew,Index := localTable.GetRowIndexCache()  );
          traverse( columnNames,Elements,columnName ){
            columnHandle := columnTree.GetHandle( columnName );
            columnIndex := columnTree.Root().Child( columnHandle ).GetValueAsNumber();
            column := columns.Element( columnIndex );
            baseVersionCell := constnull( GeneralExcelImportAndExportDataCell );
            baseVersionCellHandle := baseVersionCellTree.GetHandle( columnName );
            try{
              baseVersionCellIndex := baseVersionCellTree.Root().Child( baseVersionCellHandle ).GetValueAsNumber();
              baseVersionCell := baseVersionCells.Element( baseVersionCellIndex );
            }onerror{}
            compareVersionCell := constnull( GeneralExcelImportAndExportDataCell );
            compareVersionCellHandle := compareVersionCellTree.GetHandle( columnName );
            try{
              compareVersionCellIndex := compareVersionCellTree.Root().Child( compareVersionCellHandle ).GetValueAsNumber();
              compareVersionCell := compareVersionCells.Element( compareVersionCellIndex );
            }onerror{}
            if( columnName = "产地" or columnName = "车型" or columnName = "发动机零件号" or columnName = "发动机四位码" ){
              row.LocalCell( relnew,LocalCell_DemandComparison,LocalColumn := column,
                             BaseVersionValue := ifexpr( isnull( baseVersionCell ), "空", baseVersionCell.Value()),
                             CompareVersionValue := ifexpr( isnull( compareVersionCell ),"空",compareVersionCell.Value()));
              column.IsAttrbuteColumn( true );
              if( columnName = "发动机零件号" ){
                row.CustomName( ifexpr( isnull( baseVersionCell ), ifexpr( isnull( compareVersionCell ),"空",compareVersionCell.Value()), baseVersionCell.Value()) );
              }
            }else{
              row.LocalCell( relnew,LocalCell_DemandComparison,LocalColumn := column,
                             BaseVersion := ifexpr( isnull( baseVersionCell ),0,[Real]baseVersionCell.Value()),
                             CompareVersion := ifexpr( isnull( compareVersionCell ), 0 ,[Real]compareVersionCell.Value() ));
            }
          }
        }
      }
      // åŽç»­åˆ é™¤
      baseVersionDataSource.Delete();
      compareVersionDataSource.Delete();
      baseVersionFile.Close();
      compareVersionFile.Close();
    } onerror {
      if( not isnull( baseVersionFile )){
        baseVersionFile.Close();
      }
      if( not isnull( compareVersionFile )){
        compareVersionFile.Close();
      }
      error( e );
    }
    return localTable;
  *]
}
_Main/BL/Type_ArchivePR/StaticMethod_FillCells.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FillCells (
  String rowName,
  NamedValueTree rowTree,
  constcontent GeneralExcelImportAndExportDataRows rows,
  NamedValueTree cellTree,
  constcontent GeneralExcelImportAndExportDataCells cells
)
{
  TextBody:
  [*
    // rislai Jun-22-2024 (created)
    rowHandel := rowTree.GetHandle( rowName );
    try{
      rowIndex := rowTree.Root().Child( rowHandel ).GetValueAsNumber();
      row := rows.Element( rowIndex );
      temp_cells := selectsortedset( row,GeneralExcelImportAndExportDataCell,cell,true,cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() );
      for( i := 0 ; i<temp_cells.Size();i++ ){
        cell := temp_cells.Element( i );
        tempHandle := cellTree.GetHandle( cell.GeneralExcelImportAndExportDataColumn().Name() );
        cells.Add( cell );
        cellTree.Root().AddChild( tempHandle,cells.Size() - 1 );
      }
    }onerror{}
  *]
}
_Main/BL/Type_ArchivePR/StaticMethod_FillRows.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FillRows (
  const GeneralExcelImportAndExportDataTable general,
  Strings rowKeys,
  NamedValueTree rowTree,
  constcontent GeneralExcelImportAndExportDataRows rows
)
{
  TextBody:
  [*
    // rislai Jun-22-2024 (created)
    rowKeyColumn1 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "产地" );
    rowKeyColumn2 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "车型" );
    rowKeyColumn3 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "发动机零件号" );
    rowKeyColumn4 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "发动机四位码" );
    tempRowKeyCells1 := selectset( rowKeyColumn1,GeneralExcelImportAndExportDataCell,cell,true );
    tempRowKeyCells2 := selectset( rowKeyColumn2,GeneralExcelImportAndExportDataCell,cell,true );
    tempRowKeyCells3 := selectset( rowKeyColumn3,GeneralExcelImportAndExportDataCell,cell,true );
    tempRowKeyCells4 := selectset( rowKeyColumn4,GeneralExcelImportAndExportDataCell,cell,true );
    for( i := 0; i< tempRowKeyCells1.Size(); i++ ){
      tempRowKeyCell1 := tempRowKeyCells1.Element( i );
      tempRowKeyCell2 := tempRowKeyCells2.Element( i );
      tempRowKeyCell3 := tempRowKeyCells3.Element( i );
      tempRowKeyCell4 := tempRowKeyCells4.Element( i );
      rowKey := tempRowKeyCell1.Value() + tempRowKeyCell2.Value() + tempRowKeyCell3.Value() + tempRowKeyCell4.Value();
      tempHandle := rowTree.GetHandle( rowKey );
      rowTree.Root().AddChild( tempHandle ,i);
      rows.Add( tempRowKeyCell1.GeneralExcelImportAndExportDataRow());
      rowKeys.Add( rowKey );
    }
  *]
}
_Main/BL/Type_ArchivePR/StaticMethod_GenerateColumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GenerateColumnIndex (
  const GeneralExcelImportAndExportDataTable table,
  LocalTable localTable,
  NamedValueTree columnTree,
  LocalColumns columns
)
{
  TextBody:
  [*
    // rislai Jun-22-2024 (created)
    tableColumns := selectset( table,GeneralExcelImportAndExportDataColumn,column,true );
    for( i := 0; i< tableColumns.Size(); i++ ){
      generalColumn := tableColumns.Element( i );
      tempHandle := columnTree.GetHandle( generalColumn.Name() );
      nameValue := guard( columnTree.Root().Child( tempHandle ),null( NamedValue ));
      if( isnull( nameValue )){
        index := 999;
        if( generalColumn.Name() = "产地" ){
          index := 1;
        }else if( generalColumn.Name() = "车型" ){
          index := 2;
        }else if( generalColumn.Name() = "发动机零件号" ){
          index := 3;
        }else if( generalColumn.Name() = "发动机四位码" ){
          index := 4;
        }else{
          // 2023/01/01
          index := [Number]generalColumn.Name().ReplaceAll( "/", "" );
        }
        column := localTable.LocalColumn( relnew, Name := generalColumn.Name(),Index := index );
        columns.Add( column );
        columnTree.Root().AddChild( tempHandle,columns.Size() - 1 );
      }
    }
  *]
}
_Main/BL/Type_ExportXMLData/Attribute_Priority.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Priority
{
  #keys: '3[412672.0.1084249112][412672.0.1084249111][412672.0.1084249113]'
  ValueType: Number
}
_Main/BL/Type_ExportXMLData/Attribute_XML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute XML
{
  #keys: '3[412672.0.1084249102][412672.0.1084249101][412672.0.1084249103]'
  ValueType: String
}
_Main/BL/Type_ExportXMLData/_ROOT_Type_ExportXMLData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ExportXMLData
{
  #keys: '5[412672.0.1084249058][412672.0.1084249056][0.0.0][412672.0.1084249057][412672.0.1084249059]'
  BaseType: Object
  StructuredName: 'ExportXMLDatas'
}
_Main/BL/Type_ExportXMLManager/Attribute_FinalXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute FinalXML
{
  #keys: '3[412672.0.1084249132][412672.0.1084249131][412672.0.1084249133]'
  ValueType: String
}
_Main/BL/Type_ExportXMLManager/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.0.1084249122][412672.0.1084249121][412672.0.1084249123]'
  ValueType: String
}
_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Function CalcFinalXML
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>'+ this.Name() +'</name>';
    datas := selectsortedset( this,ExportXMLData,data,true,data.Priority() );
    traverse( datas,Elements,data ){
      xmlTemplate := xmlTemplate + data.XML();
    }
    xmlTemplate := xmlTemplate + "</table>";
    this.FinalXML( xmlTemplate );
  *]
}
_Main/BL/Type_ExportXMLManager/Method_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method Export () as BinaryValue
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    tableGroupHandle := TableGroupHandle::Create( "tableGroupHandle" );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( this.FinalXML() ) );
    tableGroupHandle.Add( tableHandle );
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
Quintiq file version 2.0
#parent: #root
StaticMethod AwaitLocalTableXMLData (
  const Strings columnXMLData,
  RecycleBin owner
)
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    manager := select( owner,ExportXMLManager,manager,manager.Name() = "LocalTableXML" );
    if( isnull( manager )){
      manager := owner.ExportXMLManager( relnew,Name := "LocalTableXML" );
    }else{
      manager.ExportXMLData( relflush );
    }
    traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
       data := manager.ExportXMLData( relnew, XML := element);
       if( element.LikeUserLocale( "Product ID" )){
         data.Priority( 1 );
       }else if( element.LikeUserLocale( "Attribute" )){
         data.Priority( 2 );
       }else if( element.LikeUserLocale( "产地" )){
         data.Priority( 3 );
       }else if( element.LikeUserLocale( "车型" )){
         data.Priority( 4 );
       }else if( element.LikeUserLocale( "发动机零件号" )){
         data.Priority( 5 );
       }else if( element.LikeUserLocale( "发动机四位码" )){
         data.Priority( 6 );
       }else{
         data.Priority( [Number]element.SubString( 14,10 ).ReplaceAll( "/","") );
       }
    }
  *]
}
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
#parent: #root
StaticMethod AwaitShiftPlanXMLData (
  const Strings columnXMLData,
  RecycleBin owner
)
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    manager := select( owner,ExportXMLManager,manager,manager.Name() = "ShiftPlanXML" );
    if( isnull( manager )){
      manager := owner.ExportXMLManager( relnew,Name := "ShiftPlanXML" );
    }else{
      manager.ExportXMLData( relflush );
    }
    traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
       data := manager.ExportXMLData( relnew, XML := element);
       if( element.LikeUserLocale( "Unit" )){
         data.Priority( 1 );
       }else if( element.LikeUserLocale( "Attribute" )){
         data.Priority( 2 );
       }else{
         data.Priority( [Number]element.SubString( 14,10 ).ReplaceAll( "-","") );
       }
    }
  *]
}
_Main/BL/Type_ExportXMLManager/_ROOT_Type_ExportXMLManager.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ExportXMLManager
{
  #keys: '5[412672.0.1084249053][412672.0.1084249051][0.0.0][412672.0.1084249052][412672.0.1084249054]'
  BaseType: Object
  StructuredName: 'ExportXMLManagers'
}
_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl
@@ -1,16 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Upload (
  Archive archive,
  RecycleBin recycleBin,
  BinaryValue binaryValue,
  String filePath
) as GeneralExcelImportAndExportDataSource
) const as GeneralExcelImportAndExportDataSource
{
  TextBody:
  [*
    fileName := filePath.Tokenize( "\" ).Element( filePath.Tokenize( "\" ).Size() - 1 );
    
    generalExcelImportAndExportDataSource := archive.GeneralExcelImportAndExportDataSource( relnew,
    generalExcelImportAndExportDataSource := recycleBin.GeneralExcelImportAndExportDataSource( relnew,
                                                                                            FileBinaryValue := binaryValue,
                                                                                            Name            := fileName,
                                                                                            IsXLSX          := fileName.EndsWith( "xlsx" ),
_Main/BL/Type_LocalCell/_ROOT_Type_LocalCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type LocalCell
{
  #keys: '5[412672.0.1084249620][412672.0.1084249618][0.0.0][412672.0.1084249619][412672.0.1084249621]'
  BaseType: Object
  StructuredName: 'LocalCells'
}
_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute BaseVersion
{
  #keys: '3[412672.0.1087844729][412672.0.1087844728][412672.0.1087844730]'
  ValueType: Real
}
_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersionValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute BaseVersionValue
{
  #keys: '3[412672.0.1087874641][412672.0.1087874640][412672.0.1087874642]'
  ValueType: String
}
_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CompareVersion
{
  #keys: '3[412672.0.1087844726][412672.0.1087844725][412672.0.1087844727]'
  ValueType: Real
}
_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersionValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CompareVersionValue
{
  #keys: '3[412672.0.1087874649][412672.0.1087874648][412672.0.1087874650]'
  ValueType: String
}
_Main/BL/Type_LocalCell_DemandComparison/Attribute_Gap.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Gap
{
  #keys: '3[412672.0.1087844732][412672.0.1087844731][412672.0.1087844733]'
  ValueType: Real
}
_Main/BL/Type_LocalCell_DemandComparison/Function_CalcGap.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcGap
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    value := this.BaseVersion() - this.CompareVersion();
    this.Gap( value );
  *]
}
_Main/BL/Type_LocalCell_DemandComparison/Method_GetAttributeByName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
Quintiq file version 2.0
#parent: #root
Method GetAttributeByName (
  String attributeName
) const declarative as String
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    value := "";
    if( attributeName = "BaseVersion" ){
       if( not this.LocalColumn().IsAttrbuteColumn() ){
         value := this.BaseVersion().Format( "N(Dec)" );
       }
    }
    if( attributeName = "CompareVersion" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := this.CompareVersion().Format( "N(Dec)" );
      }
    }
    if( attributeName = "Gap" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := this.Gap().Format( "N(Dec)" );
      }
    }
    if( attributeName = "BaseVersionValue" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := "0";
      }else{
        value := this.BaseVersionValue();
      }
    }
    if( attributeName = "CompareVersionValue" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := "0";
      }else{
        value := this.CompareVersionValue();
      }
    }
    return value;
  *]
}
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#parent: #root
StaticMethod AsyncExport (
  RecycleBin recycleBin,
  const constcontent LocalRows rows,
  const constcontent LocalColumns columns
)
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
    attributeNames := LocalCell_DemandComparison::GetAttributeNames();
    columnstring := emit( "" );
    flag := true;
    traverse( sortColumns,Elements,sortColumn ){
      if( flag ){
        attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute" );
        columnstring := columnstring.Merge( attributeXML )
        flag := false;
      }
      cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data");
      columnstring := columnstring.Merge( cellxml);
    }
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin );
  *]
}
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetAttributeNames () const declarative as owning Strings
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    attributeNames := construct( Strings );
    attributeNames.Add( "BaseVersion" );
    attributeNames.Add( "CompareVersion" );
    attributeNames.Add( "BaseVersionValue" );
    attributeNames.Add( "CompareVersionValue" );
    attributeNames.Add( "Gap" );
    return &attributeNames;
  *]
}
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetColumnXML (
  const constcontent LocalRows rows,
  const LocalColumn column,
  const Strings attributeNames,
  String type
) const as String
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    // rislai Jun-20-2024 (created)
    columnXML := "";
    cells := selectsortedset( column, LocalCell.astype( LocalCell_DemandComparison ), cell,
                                  exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
    if( type = "data" ){
      columnXML := "";
      if( column.IsAttrbuteColumn() ){
        columnXML := "<column><name>" + column.Name() + "</name><type>String</type>";
      }else{
        columnXML := "<column><name>" + column.Name() + "</name><type>Number</type>";
      }
      traverse ( cells, Elements, cell ) {
        traverse( attributeNames ,Elements,e ){
          cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>'
          columnXML := columnXML + cellXML;
        }
      }
      columnXML := columnXML + "</column>";
    }
    if( type = "attribute" ){
      columnXML1 := "<column><name>Product ID</name><type>String</type>";
      columnXML2 := "<column><name>Attribute</name><type>String</type>";
      traverse ( cells, Elements, cell ) {
        flag := true;
        traverse( attributeNames ,Elements,e ){
          if( flag ){
            cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
            columnXML1 := columnXML1 + cellXML;
            flag := false;
          }else{
            cellXML := '<cell value="  "/>'
            columnXML1 := columnXML1 + cellXML;
          }
          cellXML := '<cell value="' + e + '"/>'
          columnXML2 := columnXML2 + cellXML;
        }
      }
      columnXML := columnXML1 + "</column>" + columnXML2 + "</column>";
    }
    return columnXML;
  *]
}
_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization LocalCell_DemandComparison
{
  #keys: '2[412672.0.1087844722][412672.0.1087844717]'
  Parent: LocalCell
  StructuredName: 'LocalCell_DemandComparisons'
}
_Main/BL/Type_LocalColumn/Attribute_Index.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Index
{
  #keys: '3[412672.0.1086931887][412672.0.1086931886][412672.0.1086931888]'
  ValueType: Number
}
_Main/BL/Type_LocalColumn/Attribute_IsAttrbuteColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsAttrbuteColumn
{
  #keys: '3[412672.0.1087874665][412672.0.1087874664][412672.0.1087874666]'
  ValueType: Boolean
}
_Main/BL/Type_LocalColumn/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.0.1086931874][412672.0.1086931873][412672.0.1086931875]'
  ValueType: String
}
_Main/BL/Type_LocalColumn/_ROOT_Type_LocalColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type LocalColumn
{
  #keys: '5[412672.0.1084249599][412672.0.1084249597][0.0.0][412672.0.1084249598][412672.0.1084249600]'
  BaseType: Object
  StructuredName: 'LocalColumns'
}
_Main/BL/Type_LocalRow/Attribute_CustomName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomName
{
  #keys: '3[412672.0.1094515780][412672.0.1094515779][412672.0.1094515781]'
  ValueType: String
}
_Main/BL/Type_LocalRow/Attribute_Index.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Index
{
  #keys: '3[412672.0.1086931843][412672.0.1086931842][412672.0.1086931844]'
  ValueType: Number
}
_Main/BL/Type_LocalRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.0.1087844675][412672.0.1087844674][412672.0.1087844676]'
  ValueType: String
}
_Main/BL/Type_LocalRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // rislai Jun-22-2024 (created)
    value := ifexpr( this.CustomName() = "",[String]this.Index(),this.CustomName() );
    this.Name( value );
  *]
}
_Main/BL/Type_LocalRow/_ROOT_Type_LocalRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type LocalRow
{
  #keys: '5[412672.0.1084249610][412672.0.1084249608][0.0.0][412672.0.1084249609][412672.0.1084249611]'
  BaseType: Object
  StructuredName: 'LocalRows'
}
_Main/BL/Type_LocalTable/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.0.1094514009][412672.0.1094514008][412672.0.1094514010]'
  ValueType: String
}
_Main/BL/Type_LocalTable/Attribute_RowIndexCache.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowIndexCache
{
  #keys: '3[412672.0.1086954704][412672.0.1086954703][412672.0.1086954705]'
  ValueType: Number
}
_Main/BL/Type_LocalTable/Method_GetRowIndexCache.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Method GetRowIndexCache () declarative as Number
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    this.RowIndexCache( this.RowIndexCache() + 1 );
    return this.RowIndexCache();
  *]
}
_Main/BL/Type_LocalTable/_ROOT_Type_LocalTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type LocalTable
{
  #keys: '5[412672.0.1084249615][412672.0.1084249613][0.0.0][412672.0.1084249614][412672.0.1084249616]'
  BaseType: Object
  StructuredName: 'LocalTables'
}
_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
StaticMethod IsAnyDurationContained (
  DateTime start1,
  DateTime end1,
  DateTime start2,
  DateTime end2
) const declarative as Boolean
{
  TextBody:
  [*
    // rislai Jun-19-2024 (created)
    return ( start1 <= start2 and end1 >= end2 ) or ( start2 <= start1 and end2 >= end1 );
  *]
}
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityAGW.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UpperLimitOfTransferCapacityAGW
{
  #keys: '3[413988.0.1291510952][413988.0.1291510951][413988.0.1291510953]'
  ValueType: Number
}
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityKW.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UpperLimitOfTransferCapacityKW
{
  #keys: '3[413988.0.1291510942][413988.0.1291510941][413988.0.1291510943]'
  ValueType: Number
}
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityPL.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UpperLimitOfTransferCapacityPL
{
  #keys: '3[413988.0.1291510932][413988.0.1291510931][413988.0.1291510933]'
  ValueType: Number
}
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKG.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UpperLimitOfTransferCapacityZKG
{
  #keys: '3[413988.0.1291510909][413988.0.1291510908][413988.0.1291510910]'
  ValueType: Number
}
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKM.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UpperLimitOfTransferCapacityZKM
{
  #keys: '3[413988.0.1291510922][413988.0.1291510921][413988.0.1291510923]'
  ValueType: Number
}
_Main/BL/Type_Period_MP/_ROOT_Type_Period_MP.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Period_MP #extension
{
}
_Main/BL/Type_RecycleBin/StaticMethod_OnLogin.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
#parent: #root
StaticMethod OnLogin () as Key
{
  TextBody:
  [*
    // lihongji May-15-2024 (created)
    folder := DomainModel::Domain().MDSFolderDefinitions().FindFolder( "/root" );
    datasetName := typeof( RecycleBin ).Name() + "_" + QuintiqUser::CurrentUser().ShortName();
    oinfo := MDSEditor::Editor().ObjectInfos( typeof( RecycleBin ).Name(), folder.FolderID(), datasetName );
    o := select( oinfo, Elements, o, o.IsLoaded() );
    emptydataset := isnull( o );
    key := Key::ZeroKey();
    if ( emptydataset ) {
      mdsrb := MDSRecycleBin::CreateMDS( datasetName, DMF_Utility::StorageState_MemoryOnly() );
      key   := mdsrb.MDSID();
    } else {
      MDSRecycleBin::LoadMDSAndConvert( o.MDSID(), DMF_Utility::StorageState_MemoryOnly() );
      key   := o.MDSID().MDSKey();
    }
    return key;
  *]
}
_Main/BL/Type_RecycleBin/_ROOT_Type_RecycleBin.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type RecycleBin
{
  #keys: '5[412672.0.1084213474][412672.0.1084213472][0.0.0][412672.0.1084213473][412672.0.1084213475]'
  BaseType: Object
  StructuredName: 'RecycleBins'
}
_Main/BL/Type_ShiftPlan/Attribute_Color.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Color
{
  #keys: '3[412672.0.1082947207][412672.0.1082947206][412672.0.1082947208]'
  ValueType: String
}
_Main/BL/Type_ShiftPlan/Attribute_CustomRemark.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomRemark
{
  #keys: '3[412672.0.1067124406][412672.0.1067124405][412672.0.1067124407]'
  ValueType: String
}
_Main/BL/Type_ShiftPlan/Attribute_EventType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EventType
{
  #keys: '3[412672.0.1082947252][412672.0.1082947251][412672.0.1082947253]'
  ValueType: String
}
_Main/BL/Type_ShiftPlan/Attribute_Outcome.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Outcome
{
  #keys: '3[412672.0.1066680021][412672.0.1066680020][412672.0.1066680022]'
  ValueType: String
}
_Main/BL/Type_ShiftPlan/Attribute_Remark.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Remark
{
  #keys: '3[412672.0.1066680031][412672.0.1066680030][412672.0.1066680032]'
  ValueType: String
}
_Main/BL/Type_ShiftPlan/Function_CalcColor.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
Function CalcColor
{
  TextBody:
  [*
    // rislai Jun-19-2024 (created)
    // Red,Cyan,LightBlue,LightOrange
    // æ³•定节假日,星期六,星期日,调休
    value := "White"
    if( this.EventType() = "周六"){
      value := "Cyan";
    }
    if( this.EventType() = "周日"){
      value := "LightBlue";
    }
    if( this.EventType() = "法定节假日"){
      value := "Red";
    }
    if( this.EventType() = "调休"){
      value := "LightOrange";
    }
    this.Color( value );
  *]
}
_Main/BL/Type_ShiftPlan/Function_CalcEventType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Function CalcEventType
{
  TextBody:
  [*
    // rislai Jun-19-2024 (created)
    value := this.CalculateEventType();
    this.EventType( value );
  *]
}
_Main/BL/Type_ShiftPlan/Function_CalcOutcome.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Function CalcOutcome
{
  TextBody:
  [*
    // rislai Jun-18-2024 (created)
    capacity := ifexpr( this.UnitPeriodTime().IsUtilizationInUOM(), [Real]this.UnitPeriodTime().UsedCapacity().HoursAsReal(),  this.UnitPeriodTime().UtilizationPercentage() * this.UnitPeriodTime().MaximumLoadPercentage() / 100 )
    value := ifexpr( capacity = 0,"", this.UnitPeriodTime().ShiftPatternName());
    this.Outcome( value );
  *]
}
_Main/BL/Type_ShiftPlan/Function_CalcRemark.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcRemark
{
  TextBody:
  [*
    // rislai Jun-18-2024 (created)
    value := ifexpr( this.CustomRemark() = "",this.CalculateRemark( ),this.CustomRemark());
    this.Remark( value );
  *]
}
_Main/BL/Type_ShiftPlan/Method_CalculateEventType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
Quintiq file version 2.0
#parent: #root
Method CalculateEventType () const declarative as String
{
  TextBody:
  [*
    // rislai Jun-19-2024 (created)
    values := construct( Strings );
    traverse( this.UnitPeriodTime().Unit().UnitCalendar(),Participation,participation,participation.Event().Type() = LibCal_Event::TYPE_UNAVAILABLE()){
        event := participation.Event();
        if( this.UnitPeriodTime().Start().Date() >= event.EarliestStart() and this.UnitPeriodTime().End().Date() <= event.LatestEnd() ){
          intervals := selectset( event,LeadingParticipation.ExplicitTimeInterval,interval,LocalTool::IsAnyDurationContained( interval.Start(),interval.End(),this.UnitPeriodTime().Start(),this.UnitPeriodTime().End()));
          traverse( intervals,Elements,interval){
            values.Add( ifexpr( isnull( interval.Participation().Event().EventType().Parent()),interval.Participation().Event().EventType().ID(),interval.Participation().Event().EventType().Parent().ID() ));
          }
        }
    }
    values := selectuniquevalues( values,Elements,value,true,value );
    result := "";
    flag := true;
    traverse( values,Elements,value ,flag){
      if( value = "调休" and result <> "调休"){
        result := "调休";
      }else if( value = "法定节假日" and result <> "法定节假日"){
        result := "法定节假日";
      }else if( value = "周六" and result <> "周六"){
        result := "周六";
      }else if( value = "周日" and result <> "周日"){
        result := "周日";
      }
    }
    return result;
  *]
}
_Main/BL/Type_ShiftPlan/Method_CalculateRemark#503.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: #root
Method CalculateRemark () const declarative as String
{
  TextBody:
  [*
    // rislai Jun-18-2024 (created)
    values := construct( Strings );
    traverse( this.UnitPeriodTime().Unit().UnitCalendar(),Participation,participation,participation.Event().Type() = LibCal_Event::TYPE_UNAVAILABLE()){
        event := participation.Event();
        if( this.UnitPeriodTime().Start().Date() >= event.EarliestStart() and this.UnitPeriodTime().End().Date() <= event.LatestEnd() ){
          intervals := selectset( event,LeadingParticipation.ExplicitTimeInterval,interval,LocalTool::IsAnyDurationContained( interval.Start(),interval.End(),this.UnitPeriodTime().Start(),this.UnitPeriodTime().End()));
          traverse( intervals,Elements,interval){
            values.Add( interval.Participation().Event().Subject() );
          }
        }
    }
    values := selectuniquevalues( values,Elements,value,true,value );
    result := "";
    traverse( values,Elements,value ){
      result := result + value + ";";
    }
    return ifexpr( result = "",result,result.SubString( 0,result.Length() - 1 ) );
  *]
}
_Main/BL/Type_ShiftPlan/Method_GetAttributeByName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method GetAttributeByName (
  String attributeName
) const declarative as String
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    value := "";
    if( attributeName = "Remark" ){
      value := this.Remark();
    }
    if( attributeName = "Outcome" ){
      value := this.Outcome();
    }
    return value;
  *]
}
_Main/BL/Type_ShiftPlan/Method_SetRemark.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Method SetRemark (
  String remark
)
{
  TextBody:
  [*
    // rislai Jun-18-2024 (created)
    this.CustomRemark( remark );
  *]
}
_Main/BL/Type_ShiftPlan/StaticMethod_AsyncExport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#parent: #root
StaticMethod AsyncExport (
  RecycleBin recycleBin,
  const constcontent Units rows,
  const constcontent Period_MPs columns
)
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    sortColumns := selectsortedset( columns,Elements,column,true,column.StartDate());
    attributeNames := ShiftPlan::GetAttributeNames();
    columnstring := emit( "" );
    flag := true;
    traverse( sortColumns,Elements,sortColumn ){
      if( flag ){
        attributeXML := rows -> ShiftPlan::GetShiftPlanColumnXML( sortColumn,attributeNames,"attribute" );
        columnstring := columnstring.Merge( attributeXML )
        flag := false;
      }
      cellxml := rows -> ShiftPlan::GetShiftPlanColumnXML( sortColumn,attributeNames ,"data");
      columnstring := columnstring.Merge( cellxml);
    }
    columnstring -> GroupAll() -> ExportXMLManager::AwaitShiftPlanXMLData( recycleBin );
  *]
}
_Main/BL/Type_ShiftPlan/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  UnitPeriodTime owner
)
{
  TextBody:
  [*
    // rislai Jun-17-2024 (created)
    owner.ShiftPlan( relnew );
  *]
}
_Main/BL/Type_ShiftPlan/StaticMethod_GetAttributeNames.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetAttributeNames () const declarative as owning Strings
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    attributeNames := construct( Strings );
    attributeNames.Add( "Outcome" );
    attributeNames.Add( "Remark" );
    return &attributeNames;
  *]
}
_Main/BL/Type_ShiftPlan/StaticMethod_GetShiftPlanColumnXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetShiftPlanColumnXML (
  const constcontent Units rows,
  const Period_MP column,
  const Strings attributeNames,
  String type
) const as String
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    columnXML := "";
    cells := selectsortedset( column, UnitPeriod.astype( UnitPeriodTime ).ShiftPlan, cell,
                                  exists( rows,Elements,element,element = cell.UnitPeriodTime().Unit()), cell.UnitPeriodTime().Unit().ID());
    if( type = "data" ){
      columnXML := "<column><name>" + column.StartDate().Format( "Y-M2-D2 ")+ "</name><type>String</type>";
      traverse ( cells, Elements, cell ) {
        traverse( attributeNames ,Elements,e ){
          cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>'
          columnXML := columnXML + cellXML;
        }
      }
      columnXML := columnXML + "</column>";
    }
    if( type = "attribute" ){
      columnXML1 := "<column><name>Unit</name><type>String</type>";
      columnXML2 := "<column><name>Attribute</name><type>String</type>";
      traverse ( cells, Elements, cell ) {
        flag := true;
        traverse( attributeNames ,Elements,e ){
          if( flag ){
            cellXML := '<cell value="' + cell.UnitPeriodTime().Unit().ID() + '"/>'
            columnXML1 := columnXML1 + cellXML;
            flag := false;
          }else{
            cellXML := '<cell value="  "/>'
            columnXML1 := columnXML1 + cellXML;
          }
          cellXML := '<cell value="' + e + '"/>'
          columnXML2 := columnXML2 + cellXML;
        }
      }
      columnXML := columnXML1 + "</column>" + columnXML2 + "</column>";
    }
    return columnXML;
  *]
}
_Main/BL/Type_ShiftPlan/_ROOT_Type_ShiftPlan.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ShiftPlan
{
  #keys: '5[412672.0.1057415075][412672.0.1057415073][0.0.0][412672.0.1057415074][412672.0.1057415076]'
  BaseType: Object
  StructuredName: 'ShiftPlans'
}
_Main/BL/Type_Test/StaticMethod_Test.qbl
@@ -3,15 +3,42 @@
StaticMethod Test (
  ScenarioManager scenarioManager,
  MacroPlan macroPlan,
  Archive archive
  Archive archive,
  RecycleBin recycleBin
)
{
  TextBody:
  [*
    // rislai Jun-9-2024 (created)
    baseVersion := select( archive,ArchivePR,pr,true );
    baseVersionFile := OSFile::Construct();
    baseVersionFile.Open( baseVersion.FilePath(), "Read", false );
    baseVersionBinaryData := baseVersionFile.ReadBinary();
    baseVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, baseVersionBinaryData, baseVersion.FilePath() );
    baseVersionDataSource.ReadStructure();
    
    traverse( macroPlan,Routing,rt ){
      rt.UphillRouting( relflush );
    }
    baseVersionTables := selectset( baseVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
    baseVersionTable := baseVersionTables.Element( 0 );
    baseVersionRow := select( baseVersionTable, GeneralExcelImportAndExportDataRow, tempGEIAEDR, tempGEIAEDR.RowNr() = 999 );
    info( isnull( baseVersionRow ));
    //testTree := NamedValueTree::Create();
    //
    //testTreeHandel := testTree.GetHandle( "test1" );
    //testTreeHandel2 := testTree.GetHandle( "test2" );
    //
    //testTree.Root().AddChild( testTreeHandel,1 );
    //
    //info( testTree.Root().Child( testTreeHandel ).GetValueAsNumber() );
    //try{
    //  info( testTree.Root().Child( testTreeHandel2 ).GetValueAsNumber() );
    //}onerror{
    //  testTree.Root().AddChild( testTreeHandel,2 );
    //}
    //info( testTree.Root().Child( testTreeHandel ).GetValueAsNumber() );
  *]
}
_Main/BL/Type_TransferPlanCell/Attribute_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Value
{
  #keys: '3[413988.0.1292032065][413988.0.1292032064][413988.0.1292032066]'
  ValueType: String
}
_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GenerateReport (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    macroPlan.TransferPlanRow( relflush );
    macroPlan.TransferPlanColumn( relflush );
    rowNr := 0;
    // ç”Ÿæˆè°ƒæ‹¨è®¡åˆ’
    traverse ( macroPlan, Unit, u, u.HasCapacityTypeTransportQuantity() ) {
      traverse ( u, Lane.LaneLeg.Trip, t ) {
        traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 ) {
          // æ‰¾è¡Œ
          tpr := TransferPlanRow::FindTransferPlanRowTypeIndex( t.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().Name(),
                                                                t.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().Name(),
                                                                pit.Product_MP().ID() );
          if ( isnull( tpr ) ) {
            tpr := macroPlan.TransferPlanRow( relnew,
                                              RowNr                   := rowNr,
                                              SourceStockpoingPointID := t.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().Name(),
                                              TargetStockpoingPointID := t.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().Name(),
                                              ProductID               := pit.Product_MP().ID() );
          }
          // æ‰¾åˆ—
          tpc := TransferPlanColumn::FindTransferPlanColumnTypeIndex( t.Departure().Date() );
          if ( isnull( tpc ) ) {
            tpc := macroPlan.TransferPlanColumn( relnew,
                                                 ColumnDate := t.Departure().Date() );
          }
          // èµ‹å€¼å•元格
          cell := select( tpc, TransferPlanCell, tempTPC, tempTPC.TransferPlanRow() = tpr );
          if ( isnull( cell ) ) {
            cell := tpc.TransferPlanCell( relnew, Value := [String]pit.Quantity().Round( 0 ) );
            cell.TransferPlanRow( relset, tpr );
          } else {
            cell.Value( [String] ( [Number]cell.Value() + pit.Quantity().Round( 0 ) ) );
          }
        }
      }
    }
    // è¡¥é½ç©ºåˆ—
    indexDate := minselect( macroPlan, TransferPlanColumn, tempTPC, true, tempTPC.ColumnDate() ).ColumnDate();
    endDate   := maxselect( macroPlan, TransferPlanColumn, tempTPC, true, tempTPC.ColumnDate() ).ColumnDate();
    while ( indexDate <= endDate ) {
      if ( isnull( TransferPlanColumn::FindTransferPlanColumnTypeIndex( indexDate ) ) ) {
        macroPlan.TransferPlanColumn( relnew,
                                      ColumnDate := indexDate );
      }
      indexDate := indexDate + 1;
    }
    // ç”Ÿæˆäº§å“åˆ—
    minDateTPC := macroPlan.TransferPlanColumn( relnew,
                                                ColumnDate := Date::MinDate() );
    traverse ( macroPlan, TransferPlanRow, tpr ) {
      productCell := minDateTPC.TransferPlanCell( relnew, Value := tpr.ProductID() );
      productCell.TransferPlanRow( relset, tpr );
    }
    // è°ƒæ‹¨æ•°é‡è°ƒæ•´
  *]
}
_Main/BL/Type_TransferPlanCell/_ROOT_Type_TransferPlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type TransferPlanCell
{
  #keys: '5[413988.0.1292031923][413988.0.1292031921][0.0.0][413988.0.1292031922][413988.0.1292031924]'
  BaseType: Object
  StructuredName: 'TransferPlanCells'
}
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnDate
{
  #keys: '3[413988.0.1292032055][413988.0.1292032054][413988.0.1292032056]'
  IsReadOnly: true
  ValueType: Date
}
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnIndex
{
  #keys: '3[413988.0.1292032025][413988.0.1292032024][413988.0.1292032026]'
  ValueType: Number
}
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnName
{
  #keys: '3[413988.0.1292032045][413988.0.1292032044][413988.0.1292032046]'
  ValueType: String
}
_Main/BL/Type_TransferPlanColumn/Function_CalcColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcColumnName
{
  TextBody:
  [*
    // lihongji Jun-24-2024 (created)
    value := ifexpr( this.ColumnDate().IsMinInfinity(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
    this.ColumnName( value );
  *]
}
_Main/BL/Type_TransferPlanColumn/TypeIndex_TransferPlanColumnTypeIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
TypeIndex TransferPlanColumnTypeIndex
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: ColumnDate
    }
  ]
}
_Main/BL/Type_TransferPlanColumn/_ROOT_Type_TransferPlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type TransferPlanColumn
{
  #keys: '5[413988.0.1292031918][413988.0.1292031916][0.0.0][413988.0.1292031917][413988.0.1292031919]'
  BaseType: Object
  StructuredName: 'TransferPlanColumns'
}
_Main/BL/Type_TransferPlanRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[413988.0.1292032011][413988.0.1292032010][413988.0.1292032012]'
  ValueType: String
}
_Main/BL/Type_TransferPlanRow/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[413988.0.1292031981][413988.0.1292031980][413988.0.1292031982]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_TransferPlanRow/Attribute_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowNr
{
  #keys: '3[413988.0.1292032032][413988.0.1292032031][413988.0.1292032033]'
  ValueType: Number
}
_Main/BL/Type_TransferPlanRow/Attribute_SourceStockpoingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SourceStockpoingPointID
{
  #keys: '3[413988.0.1292031991][413988.0.1292031990][413988.0.1292031992]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_TransferPlanRow/Attribute_TargetStockpoingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TargetStockpoingPointID
{
  #keys: '3[413988.0.1292032001][413988.0.1292032000][413988.0.1292032002]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_TransferPlanRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // lihongji Jun-24-2024 (created)
    value := this.SourceStockpoingPointID() + " to " + this.TargetStockpoingPointID();
    this.Name( value );
  *]
}
_Main/BL/Type_TransferPlanRow/TypeIndex_TransferPlanRowTypeIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
TypeIndex TransferPlanRowTypeIndex
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: SourceStockpoingPointID
    }
    TypeIndexAttribute
    {
      ModelElement: TargetStockpoingPointID
    }
    TypeIndexAttribute
    {
      ModelElement: ProductID
    }
  ]
}
_Main/BL/Type_TransferPlanRow/_ROOT_Type_TransferPlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type TransferPlanRow
{
  #keys: '5[413988.0.1292031913][413988.0.1292031911][0.0.0][413988.0.1292031912][413988.0.1292031914]'
  BaseType: Object
  StructuredName: 'TransferPlanRows'
}
_Main/BL/Type_UnitPeriodTime/Method_OnCreate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method OnCreate #extension
{
  TextBody:
  [*
    // rislai Jun-18-2024 (created)
    ShiftPlan::Create( this );
  *]
}
_Main/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization UnitPeriodTime #extension
{
}
_Main/Sys/Repr/Global/Date.qrp
@@ -8,7 +8,7 @@
  ]
  DataRepresentation.Default
  {
    FormatString: 'D-MM-YOnMax(-)OnMin(-)'
    FormatString: 'Y-M2-D2OnMax(-)OnMin(-)'
    InheritFormatting: false
  }
}
_Main/Sys/Repr/Global/DateTime.qrp
@@ -8,7 +8,7 @@
  ]
  DataRepresentation.Default
  {
    FormatString: 'D-MM-YOnMax(-)OnMin(-)'
    FormatString: 'Y-M2-D2 H2:m:sOnMax(-)OnMin(-)'
    InheritFormatting: false
  }
}
_Main/Sys/Repr/Global/ShiftPlan.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation ShiftPlan
{
  AttributeRepresentation Remark
  {
    AttributeKey: '[412672.0.1066680030]'
    Conditional:
    [
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FFCC99'
        ConditionBody: 'object.Color() = "LightOrange"'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
      DataRepresentation.Conditional
      {
        BackgroundColor: 'Red'
        ConditionBody: 'object.Color() = "Red"'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
      DataRepresentation.Conditional
      {
        BackgroundColor: '$33CCCC'
        ConditionBody: 'object.Color() = "Cyan"'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
      DataRepresentation.Conditional
      {
        BackgroundColor: '$99CCFF'
        ConditionBody: 'object.Color() = "LightBlue"'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
    ]
  }
  RelationRepresentation UnitPeriodTime { RelationKey: '[412672.0.1066680008]' Visibility: 'Normal' }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
Component ActionBarGroupPlanViews #extension
{
  Children:
  [
    Component ButtonShiftPlan
    {
      #keys: '[412672.0.1064451018]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'COMPASSES'
        Label: '班次计划'
        Taborder: 8
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews#859.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
Component ActionBarGroupScenarioComparisonViews #extension
{
  Children:
  [
    Component ButtonScenarioComparisonDemandComparison
    {
      #keys: '[412672.0.1090347286]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EQUALS'
        Label: '需求对比'
        Taborder: 8
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
Component ActionBarPagePlan #extension
{
  Children:
  [
    #child: ActionBarGroupPlanViews
    #child: abgSecondDevelopmentPlan
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
Component ActionBarPageScenarioComparison #extension
{
  Children:
  [
    #child: ActionBarGroupScenarioComparisonViews
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
Component abgSecondDevelopmentPlan
{
  #keys: '[413988.0.1290310419]'
  BaseType: 'WebActionBarGroup'
  Children:
  [
    Component bTransferPlan
    {
      #keys: '[413988.0.1290300652]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'HAND_TRUCK_BOX'
        Label: 'Transfer plan'
        Taborder: 0
      ]
    }
    Component bBlank
    {
      #keys: '[413988.0.1291640400]'
      BaseType: 'WebButton'
      Properties:
      [
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Category: 'Actions-2'
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Method_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
Quintiq file version 2.0
#parent: #root
Method OnCreated () id:Method_ApplicationMacroPlanner_OnCreated #extension
{
  Body:
  [*
    // On created of Application
    // Restore active MacroPlan scenario to DataHolderActiveScenario
    // and Dropdown
    if( not isnull( ScenarioManager ) )
    {
      if( not isnull( MacroPlan ) )
      {
        scenario := select( ScenarioManager, ScenarioMP, sce,
                            sce.DatasetMDSID() = MacroPlan.MDSID() )
        if( not isnull( scenario ) )
        {
          DataHolderActiveScenario.Data( scenario );
          DataHolderMacroPlanner.Data( MacroPlan );
        }
      }
    }
    // Sync user and roles ( sync during fresh startup without scenario creation )
    if( not isnull( SWF_WorkflowDataset ) )
    {
      SWF_WorkflowDataset.OnUserLogin();
    }
    mdsidkey := RecycleBin::OnLogin();
    componentmds := ApplicationScope.ComponentMDS();
    mdsinstance := select( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().MDSKey() = mdsidkey );
    if ( not isnull( mdsinstance ) and not mdsinstance.IsSelected() ) {
      mdsinstance.ComponentMDSKind().SelectInstance( mdsinstance );
      componentmds.Apply();
    }
    DataHolderCurrentUser.Data( QuintiqUser::CurrentUser().ShortName() );
    // Also open a default view
    ApplicationMacroPlanner.OpenView( 'Scenarios', ButtonScenarios1 );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def
@@ -9,7 +9,9 @@
  {
    Body:
    [*
      Test::Test( ScenarioManager,MacroPlan,Archive );
      Test::Test( ScenarioManager,MacroPlan,Archive,RecycleBin );
      WebMessageBox::Success( "Success");
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ActionBarGroupPlanViews/ButtonShiftPlan
Response OnClick () id:Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick
{
  #keys: '[412672.0.1067373094]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationMacroPlanner.OpenView( 'ShiftPlan', this );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioCo.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ActionBarGroupScenarioComparisonViews/ButtonScenarioComparisonDemandComparison
Response OnClick () id:Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioComparisonDemandComparison_OnClick
{
  #keys: '[412672.0.1090347405]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      // Open view
      ApplicationMacroPlanner.OpenView( 'DemandComparison', this );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: abgSecondDevelopmentPlan/bTransferPlan
Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick
{
  #keys: '[413988.0.1290322113]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "TransferPlan", true);
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -18,7 +18,9 @@
        #child: applicationFixedPageActionBarPageDef
        #child: applicationDevelopmentActionBarPageDef_1
        #child: abpAlgorithmPostProcessing
        #child: ActionBarPagePlan
        #child: ActionBarPageReport
        #child: ActionBarPageScenarioComparison
      ]
    }
    Component dhBinaryDataPR id:dhBinaryDataPR_688
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[413988.0.1292313213]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[413988.0.1292313217]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[413988.0.1292313219]'
      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_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[413988.0.1292313211]'
  BaseType: 'WebPanel'
  Children:
  [
    Component npUpperLimitOfTransferCapacityZKG
    {
      #keys: '[413988.0.1292313261]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        Label: 'ZKG(pcs)'
        Taborder: 0
      ]
    }
    Component npUpperLimitOfTransferCapacityZKM
    {
      #keys: '[413988.0.1292313339]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        Label: 'ZKM(pcs)'
        Taborder: 1
      ]
    }
    Component npUpperLimitOfTransferCapacityPL
    {
      #keys: '[413988.0.1292313341]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        Label: 'PL(pcs)'
        Taborder: 2
      ]
    }
    Component npUpperLimitOfTransferCapacityKW
    {
      #keys: '[413988.0.1292313343]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        Label: 'KW(pcs)'
        Taborder: 3
      ]
    }
    Component npUpperLimitOfTransferCapacityAGW
    {
      #keys: '[413988.0.1292313345]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        Label: 'AGW(pcs)'
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/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: '[413988.0.1292313223]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[413988.0.1292313222]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/_ROOT_Component_DialogUpperLimitOfTransferCapacity.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogUpperLimitOfTransferCapacity
{
  #keys: '[413988.0.1292313209]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_MatrixEditorTimeCapacities#656.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
Quintiq file version 2.0
Component MatrixEditorTimeCapacities id:MatrixEditorTimeCapacities_656
{
  #keys: '[412672.0.1064460829]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellUnitPeriodTime
    {
      #keys: '[412672.0.1064460830]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorUnitPeriodTime
        {
          #keys: '[412672.0.1064460831]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Unit]'
            Source: 'ApplicationMacroPlanner.DataHolderUnit'
            Taborder: 0
            Transformation: 'Elements.UnitPeriod.astype(UnitPeriodTime).ShiftPlan'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Outcome;Remark'
        Column: 'UnitPeriodTime.Period_MP'
        Row: 'UnitPeriodTime.Unit'
        Taborder: 0
      ]
    }
    Component MatrixEditorRowsUnit
    {
      #keys: '[412672.0.1064460832]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorUnit
        {
          #keys: '[412672.0.1064460833]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Unit]'
            FixedFilter: 'object.HasCapacityTypeTime()'
            Source: 'ApplicationMacroPlanner.DataHolderUnit'
            Taborder: 0
            Transformation: 'Elements.astype(Unit)'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'DisplayIndex'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumnsPeriod
    {
      #keys: '[412672.0.1064460834]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorPeriod
        {
          #keys: '[412672.0.1064460835]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Period_MP]'
            Source: 'ApplicationMacroPlanner.DataHolderPeriods'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Legend: 'StartDate'
        SortCriteria: 'StartDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageTime_1
    #child: matrixeditorContextMenuTime_1
  ]
  Properties:
  [
    AllowAttributeConfiguration: true
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumnsPeriod'
    ContextMenu: 'matrixeditorContextMenuTime'
    Rows: 'MatrixEditorRowsUnit'
    ShowSingleAttribute: true
    Taborder: 1
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorTimeCapacities_656_WebMenu_OnClick
    {
      #keys: '[412672.0.1064460817]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[4387.0.17266428]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_PanelMatrix#675.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelMatrix id:PanelMatrix_675
{
  #keys: '[412672.0.1064460828]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditorTimeCapacities_656
    #child: pOperation
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixEditorActionBarPageTime#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageTime id:matrixEditorActionBarPageTime_1
{
  #keys: '[412672.0.1064460836]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixeditorContextMenuTime#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
Quintiq file version 2.0
Component matrixeditorContextMenuTime id:matrixeditorContextMenuTime_1
{
  #keys: '[412672.0.1064460837]'
  BaseType: 'matrixeditorContextMenu'
  Children:
  [
    Component MenuCopy
    {
      #keys: '[138034.3.1296123318]'
      BaseType: 'MenuCopy'
      IsDerived: true
      Properties:
      [
        Taborder: 2
      ]
    }
    Component MenuSeparator
    {
      #keys: '[412672.0.1064460838]'
      BaseType: 'WebMenu'
      Properties:
      [
        Separator: true
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_pOperation.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
Quintiq file version 2.0
Component pOperation
{
  #keys: '[412672.0.1084334216]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bExport id:bExport_187
    {
      #keys: '[412672.0.1084305542]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 0
      ]
    }
    Component bDownload id:bDownload_774
    {
      #keys: '[412672.0.1084305565]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOWNLOAD'
        Label: '下载'
        Taborder: 1
      ]
    }
    Component dhXMLDataListener
    {
      #keys: '[412672.0.1084305593]'
      BaseType: 'WebDataHolder'
      Databinding: 'ExportXMLManager'
      Children:
      [
        Component DataExtractor510
        {
          #keys: '[412672.0.1084305608]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'RecycleBin'
            FixedFilter: 'object.Name() = "ShiftPlanXML"'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'ExportXMLManager'
          ]
        }
      ]
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_MatrixEditorTimeCapacities_656_OnUpdateValue#317.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: MatrixEditorTimeCapacities_656
Response OnUpdateValue (
  ShiftPlan cell,
  String value,
  String oldvalue
) id:Response_MatrixEditorTimeCapacities_656_OnUpdateValue_317
{
  #keys: '[412672.0.1064460818]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMatrixEditor_OnUpdateValue'
  QuillAction
  {
    Body:
    [*
      cell.SetRemark( value );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: pOperation/bDownload_774
Response OnClick () id:Response_pOperation_bDownload_OnClick
{
  #keys: '[412672.0.1084305701]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    flag := true;
    feedback := "";
    if( isnull( dhXMLDataListener.Data() )){
      flag := false;
      feedback := "当前无下载数据,点击导出创建下载数据。"
    }
    return flag;
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := dhXMLDataListener.Data( ).Export();
      Application.Download( "班次计划_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
      dhXMLDataListener.Data( ).Delete();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pOperation/bExport_187
Response OnClick () id:Response_pOperation_bExport_OnClick
{
  #keys: '[412672.0.1083032516]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      rows := selectset( DataHolderUnit.Data(),Elements,unit,unit.HasCapacityTypeTime() );
      columns := DataHolderPeriods.Data( );
      ShiftPlan::AsyncExport( RecycleBin, rows, columns );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_Form568/_ROOT_Component_FormShihtPlan#568.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormShihtPlan
{
  #keys: '[412672.0.1064470671]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelMatrix_675
  ]
  Properties:
  [
    Image: 'COMPASSES'
    Title: '班次计划'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form989/Response_pHeader_bImport_OnClick.def
@@ -24,7 +24,7 @@
              
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( Archive, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
Quintiq file version 2.0
Component MatrixEditor
{
  #keys: '[412672.0.1085881196]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell
    {
      #keys: '[412672.0.1085881197]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCells
        {
          #keys: '[412672.0.1085881198]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhComparisonData'
            Taborder: 0
            Transformation: 'LocalRow.LocalCell.astype(LocalCell_DemandComparison)'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'BaseVersionValue;CompareVersionValue;BaseVersion;CompareVersion;Gap'
        Column: 'LocalColumn'
        Row: 'LocalRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows
    {
      #keys: '[412672.0.1085881201]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRows
        {
          #keys: '[412672.0.1085881202]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhComparisonData'
            Taborder: 0
            Transformation: 'LocalRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns
    {
      #keys: '[412672.0.1085881205]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumns
        {
          #keys: '[412672.0.1085881206]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhComparisonData'
            Taborder: 0
            Transformation: 'LocalColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageDemandComparison
    #child: matrixeditorContextMenuDemandComparison
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns'
    ContextMenu: 'matrixeditorContextMenuDemandComparison'
    Rows: 'MatrixEditorRows'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelDemandComparison
{
  #keys: '[412672.0.1085881181]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor
    Component dhComparisonData
    {
      #keys: '[412672.0.1085881305]'
      BaseType: 'WebDataHolder'
      Databinding: 'LocalTable'
      Properties:
      [
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
Component PanelOperation
{
  #keys: '[412672.0.1085881251]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelOperation11
    Component ButtonCompare
    {
      #keys: '[412672.0.1085802121]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '开始对比'
        Taborder: 1
      ]
    }
    #child: pOperation_715
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
Quintiq file version 2.0
Component PanelOperation11
{
  #keys: '[412672.0.1085801711]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DropDownListCompareVersion id:DropDownListCompareVersion_85
    {
      #keys: '[412672.0.1085801792]'
      BaseType: 'WebDropDownList'
      Databinding: 'ArchivePR'
      Children:
      [
        Component DataExtractorOperation876 id:DataExtractorOperation876_293
        {
          #keys: '[412672.0.1085801793]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'Archive'
            FilterArguments: 'baseSelection:QMacroPlanner::FormDemandComparison.dhBaseVersion'
            FixedFilter: 'object <> baseSelection'
            Source: 'Archive'
            Taborder: 0
            Transformation: 'ArchivePR'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'Name'
        Label: '对比需求版本:'
        Taborder: 2
      ]
    }
    Component dhBaseVersion id:dhBaseVersion_357
    {
      #keys: '[412672.0.1085801820]'
      BaseType: 'WebDataHolder'
      Databinding: 'ArchivePR'
      Properties:
      [
        Taborder: 1
      ]
    }
    Component DropDownListBaseVersion id:DropDownListBaseVersion_668
    {
      #keys: '[412672.0.1085801851]'
      BaseType: 'WebDropDownList'
      Databinding: 'ArchivePR'
      Children:
      [
        Component DataExtractorOperation id:DataExtractorOperation_669
        {
          #keys: '[412672.0.1085801852]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'Archive'
            Source: 'Archive'
            Taborder: 0
            Transformation: 'ArchivePR'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'Name'
        Label: '基准需求版本:'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixEditorActionBarPageDemandComparison.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageDemandComparison
{
  #keys: '[412672.0.1085881209]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixeditorContextMenuDemandComparison.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuDemandComparison
{
  #keys: '[412672.0.1085881212]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pOperation#715.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
Quintiq file version 2.0
Component pOperation id:pOperation_715
{
  #keys: '[412672.0.1092111928]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bExport
    {
      #keys: '[412672.0.1092111929]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 0
      ]
    }
    Component bDownload
    {
      #keys: '[412672.0.1092111930]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOWNLOAD'
        Label: '下载'
        Taborder: 1
      ]
    }
    Component dhXMLDataListener
    {
      #keys: '[412672.0.1092111931]'
      BaseType: 'WebDataHolder'
      Databinding: 'ExportXMLManager'
      Children:
      [
        Component DataExtractor510
        {
          #keys: '[412672.0.1092111932]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'RecycleBin'
            FixedFilter: 'object.Name() = "LocalTableXML"'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'ExportXMLManager'
          ]
        }
      ]
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhComparisonData_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelDemandComparison/dhComparisonData
Response OnDataChanged () id:Response_PanelDemandComparison_dhComparisonData_OnDataChanged
{
  #keys: '[412672.0.1093351461]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      PanelDemandComparison.Title( this.Data().Name() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged#168.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelOperation11/DropDownListBaseVersion_668
Response OnSelectionChanged (
  ArchivePR selection
) id:Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged_168
{
  #keys: '[412672.0.1085801849]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDropDownList_OnSelectionChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      dhBaseVersion.Data( selection );
      this.Tooltip( selection.Name() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelOperation11/DropDownListCompareVersion_85
Response OnSelectionChanged (
  ArchivePR selection
) id:Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged
{
  #keys: '[412672.0.1093350988]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDropDownList_OnSelectionChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      this.Tooltip( selection.Name() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonCompare_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: PanelOperation/ButtonCompare
Response OnClick () id:Response_PanelOperation_ButtonCompare_OnClick
{
  #keys: '[412672.0.1085802211]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      table := ArchivePR::Compared( RecycleBin,DropDownListBaseVersion.Data(),DropDownListCompareVersion.Data() );
      dhComparisonData.Data( table );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: pOperation_715/bDownload
Response OnClick () id:Response_pOperation_715_bDownload_OnClick
{
  #keys: '[412672.0.1092111926]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    flag := true;
    feedback := "";
    if( isnull( dhXMLDataListener.Data() )){
      flag := false;
      feedback := "当前无下载数据,点击导出创建下载数据。"
    }
    return flag;
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := dhXMLDataListener.Data( ).Export();
      Application.Download( "需求版本对比_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
      dhXMLDataListener.Data( ).Delete();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pOperation_715/bExport
Response OnClick () id:Response_pOperation_715_bExport_OnClick
{
  #keys: '[412672.0.1092111927]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      rows := selectset( dhComparisonData.Data(),LocalRow,row,true );
      columns := selectset( dhComparisonData.Data( ),LocalColumn,column,true );
      LocalCell_DemandComparison::AsyncExport( RecycleBin, rows, columns );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormDemandComparison
{
  #keys: '[412672.0.1085881113]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelDemandComparison
    #child: PanelOperation
  ]
  Properties:
  [
    Image: 'EQUALS'
    Title: '需求对比'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Response_pHeader_bImport_OnClick.def
@@ -24,7 +24,7 @@
              
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( Archive, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
_Main/UI/MacroPlannerWebApp/Component_FormRoutings/Response_MacroPlanner_ListRoutings_OnClick.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Response_pHeader_393_bImport_OnClick.def
@@ -24,7 +24,7 @@
              
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( Archive, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditor872
{
  #keys: '[413988.0.1290322866]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell590
    {
      #keys: '[413988.0.1290322867]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor862
        {
          #keys: '[413988.0.1290322868]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'TransferPlanColumn.TransferPlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Value'
        Column: 'TransferPlanColumn'
        Row: 'TransferPlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows481
    {
      #keys: '[413988.0.1290322871]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor661
        {
          #keys: '[413988.0.1290322872]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'TransferPlanRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'SourceStockpoingPointID;TargetStockpoingPointID;ProductID'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns681
    {
      #keys: '[413988.0.1290322875]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor445
        {
          #keys: '[413988.0.1290322876]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'TransferPlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'ColumnName'
        SortCriteria: 'ColumnDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage493
    #child: matrixeditorContextMenu367
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumns681'
    ContextMenu: 'matrixeditorContextMenu367'
    Rows: 'MatrixEditorRows481'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixEditorActionBarPage493.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage493
{
  #keys: '[413988.0.1290322879]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixeditorContextMenu367.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu367
{
  #keys: '[413988.0.1290322882]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pContent
{
  #keys: '[413988.0.1290370837]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor872
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.0.1290370823]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bDownload
    {
      #keys: '[413988.0.1290361218]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Download'
        Taborder: 0
      ]
    }
    Component bMaximumDailyTransferCapacity
    {
      #keys: '[413988.0.1290361230]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Maximum daily transfer capacity'
        Taborder: 1
      ]
    }
    Component bGenerateReport
    {
      #keys: '[413988.0.1292223250]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Generate report'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: pHeader/bDownload
Response OnClick () id:Response_pHeader_bDownload_OnClick
{
  #keys: '[413988.0.1292330526]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bGenerateReport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader/bGenerateReport
Response OnClick () id:Response_pHeader_bGenerateReport_OnClick
{
  #keys: '[413988.0.1292330696]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      TransferPlanCell::GenerateReport( MacroPlan );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: pHeader/bMaximumDailyTransferCapacity
Response OnClick () id:Response_pHeader_bMaximumDailyTransferCapacity_OnClick
{
  #keys: '[413988.0.1292330611]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/_ROOT_Component_FormTransferPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormTransferPlan
{
  #keys: '[413988.0.1290321873]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pContent
    #child: pHeader
  ]
  Properties:
  [
    Image: 'HAND_TRUCK_BOX'
    Title: 'Transfer plan'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
{
  viewcontents
  {
    page: ''
    group: ''
    index: 0
    image: 'EQUALS'
    description: ''
  }
  formatversion: 2
  id: 'DemandComparison'
  name: 'DemandComparison'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
{
  viewcontents
  {
    page: ''
    group: ''
    index: 0
    image: 'COMPASSES'
    description: ''
  }
  formatversion: 2
  id: 'ShiftPlan'
  name: 'ShiftPlan'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/TransferPlan.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,146 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormTransferPlan
      {
        title: 'QMacroPlanner::FormTransferPlan'
        shown: true
        componentID: 'QMacroPlanner::FormTransferPlan'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 14
          columnPosition: 1
          columnSpan: 12
        }
        components: null
      }
      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: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 0
    image: 'WALLET_OPEN'
    description: ''
  }
  formatversion: 2
  id: 'TransferPlan'
  name: 'TransferPlan'
  isglobal: false
  isroot: true
}