yanweiyuan3
2023-09-21 a43f01cebe400883d31dbd3a1f1b593c61aa2a0d
Merge branch 'dev_yy' into dev
已修改11个文件
已添加145个文件
4137 ■■■■■ 文件已修改
.gitignore 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/InfoMessages.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Type_Scenario/Attribute_IsReleased.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Type_Scenario/Method_CanSelect.qbl 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Type_Scenario/Method_SetReleased.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LibMacroPlanner/BL/Type_ScenarioMP/Method_SetReleased.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_Broker_OTD_VersionControl.qbl 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_Broker_OTD_VersionControlToDB.qbl 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/InfoMessages.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MappingVersionControl_GlobalOTDTable_GlobalOTDTable_MappingVersionC.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OrderLockLog_MacroPlan_MacroPlan_OrderLockLog.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_VersionControl_GlobalOTDTable_GlobalOTDTable_VersionControl.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_VersionStatusDetail_VersionStatus_VersionStatus_VersionStatusDetail.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_VersionStatus_GlobalOTDTable_GlobalOTDTable_VersionStatus.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_LastModify.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_LastModifyTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetBusinessTypeName.qbl 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetNextCalType.qbl 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetOutputVersionData.qbl 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetVersionData.qbl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_CreateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_DataFrom.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_DataTo.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_EndTime.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_ProductID.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_Qty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_ReleaseTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_StartTime.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_StockingPointID.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_User.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_VersionID.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/Attribute_VersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/TypeIndex_TypeIndexVersionControl.qbl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingVersionControl/_ROOT_Type_MappingVersionControl.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_CustomerName#23.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_End.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_IsFirmed#2.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_LastModify.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_LastModifyTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_OrderID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_Price.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_Quantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_SalesSegmentName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_StockingPointID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_UnitOfMeasureName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/DefaultValue_LastModify.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/_ROOT_Type_OrderLockLog.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Scenario/Attribute_IsCreateNewVersion.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Scenario/Attribute_IsOrderLocked.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Scenario/Attribute_VersionID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Scenario/DefaultValue_VersionID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Scenario/Method_SetReleased.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_CalType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_CreateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_IsReleased.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_LongVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_Notes.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_ReleaseTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_SingleVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_User.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/Attribute_VersionID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_CopyVersion.qbl 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_Create.qbl 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_CreateNewSceneVersion.qbl 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_CreateNewVersion.qbl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_FindByFullVersionID.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_FindLatestUpdateVersion.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_FindLatestVersion.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_FindReleasedVersions.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_GetVersionInfo.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_ReleaseLatestVersion.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/StaticMethod_ReleaseNewVersion.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionControl/_ROOT_Type_VersionControl.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_BusinessName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_LastReleaseTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_LastUser.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_LastVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_Notes.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/Attribute_SortNumber.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/StaticMethod_CreateOrUpdate.qbl 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/StaticMethod_FindLatestStatus.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/StaticMethod_GetBusinessTypeStatus.qbl 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatus/_ROOT_Type_VersionStatus.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_CreateTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_Notes.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_ReleaseTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_SingleVersionName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_SortNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_User.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/Attribute_VersionID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/DefaultValue_Notes.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/DefaultValue_SingleVersionName.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/DefaultValue_User.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/StaticMethod_CreateOrUpdate.qbl 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/StaticMethod_FindStatus.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/StaticMethod_GetFullVersionID.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_VersionStatusDetail/_ROOT_Type_VersionStatusDetail.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Component_PanelGeneral#549.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Component_pnlActions.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_NewScenario#549.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_NewScenario.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Response_pnlActions_btnOk_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/_ROOT_Component_DialogCreateEditScenario.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlActions.def 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlContent.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Method_JustShow.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnApply_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnOk_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/_ROOT_Component_DialogVersionIDCopy.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock#844.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_MatrixEditorProductPlanning#679.def 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelMatrix#780.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLock.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockHeader#545.def 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockOrder.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockPlanning.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listActionBarPageOrderLock#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listContextMenuOrderLock#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixEditorActionBarPageProductPlanning#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixeditorContextMenuProductPlanning#1.def 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuLock_OnClick.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuUnlock_OnClick.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnCheckEditability.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnUserSelectionChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderClear_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeader_OnClick.def 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderCustomerOrder_O.def 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderPlanDeliver_OnC.def 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/_ROOT_Component_FormOrderLock.def 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Component_ListScenario.def 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Response_ListScenario_MenuCopyScenario_OnClick.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Response_TIANMA_JITUAN_ListScenario_MenuRelaeaseNewVersion_OnClick.def 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Response_TIANMA_JITUAN_ListScenario_MenuSaveNewVersion_OnClick.def 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOP.def 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOPDetails.def 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOP.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPDetails.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPHeader.def 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOP.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOPDetails.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOP.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOPDetails.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderCopy_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderFresh_OnClick.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderRelease_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/_ROOT_Component_FormVersionOfSOP.def 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/OrderLock.vw 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -23,3 +23,5 @@
**/LibUserSettings/**
/.idea
_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
*.properties
LibMacroPlanner/BL/InfoMessages.qbl
@@ -529,6 +529,10 @@
  {
    DefaultText: 'Revert'
  }
  InfoMessage Scenario_General_IsReleased
  {
    DefaultText: 'Not allowed on a released scenario'
  }
  InfoMessage Strategy_CampaignOptimizer_DisableTooltip
  {
    DefaultText: 'When disabled, the optimizer is only allowed to replan the quantities of the campaigns based on the constraints of the campaigns created manually.'
LibMacroPlanner/BL/Type_Scenario/Attribute_IsReleased.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute IsReleased
{
  #keys: '3[412960.0.172790038][412960.0.172790037][412960.0.172790039]'
  Description: '该版本是否已发布'
  ValueType: Boolean
  InterfaceProperties { Accessibility: 'Module' }
}
LibMacroPlanner/BL/Type_Scenario/Method_CanSelect.qbl
@@ -32,6 +32,9 @@
    {
      feedback_o := Translations::Scenario_General_IsDeleted();
    }
    else if( this.IsReleased() ){
      feedback_o := Translations::Scenario_General_IsReleased();
      }
    
    return feedback_o = '';
  *]
LibMacroPlanner/BL/Type_Scenario/Method_SetReleased.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Method SetReleased
{
  Description: '设置某场景的发布状态'
  IsAbstract: true
  TextBody:
  [*
    // Administrator Sep-15-2023 (created)
    this.IsReleased( true );
  *]
}
LibMacroPlanner/BL/Type_ScenarioMP/Method_SetReleased.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
MethodOverride SetReleased
{
  TextBody: 'this.IsReleased( true );'
}
_Main/BL/EDI/Broker_Broker_OTD_VersionControl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
Quintiq file version 2.0
#parent: #root
EDIBroker Broker_OTD_VersionControl
{
  MDSDefinition: GlobalOTDTable
  TimeZone: 'ACT'
  UseOSTimeZone: false
  EDIModelLink.Destination MappingVersionControl
  {
    EDIMLTable MappingVersionControl
    {
      PrimaryKeyColumns: EndTime
      PrimaryKeyColumns: ProductID
      PrimaryKeyColumns: StartTime
      PrimaryKeyColumns: StockingPointID
      PrimaryKeyColumns: VersionID
      TargetType: MappingVersionControl
      TypeIndex: TypeIndexVersionControl
      EDIMLColumn CreateTime { Attribute: CreateTime ValueType: DateTime }
      EDIMLColumn DataFrom { Attribute: DataFrom ValueType: String }
      EDIMLColumn DataTo { Attribute: DataTo ValueType: String }
      EDIMLColumn EndTime { Attribute: EndTime ValueType: DateTime }
      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
      EDIMLColumn Qty { Attribute: Qty ValueType: Real }
      EDIMLColumn ReleaseTime { Attribute: ReleaseTime ValueType: DateTime }
      EDIMLColumn StartTime { Attribute: StartTime ValueType: DateTime }
      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
      EDIMLColumn User { Attribute: User ValueType: String }
      EDIMLColumn VersionID { Attribute: VersionID ValueType: String }
      EDIMLColumn VersionName { Attribute: VersionName ValueType: String }
    }
  }
  EDIODBCLink.Source MID_VERSIONCONTROL
  {
    DataIntegrityStrategy: 'Disabled'
    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle'
    EDIODBCLinkTable MID_VERSIONCONTROL
    {
      OthersMayCreateTable: true
      OthersMayDeleteRow: true
      OthersMayDropTable: true
      OthersMayFlushTable: true
      OthersMayInsertRow: true
      Parameters: '/owner="TIANMA"'
      PrimaryKeyColumns: ENDTIME
      PrimaryKeyColumns: ID
      PrimaryKeyColumns: PRODUCTID
      PrimaryKeyColumns: STARTTIME
      PrimaryKeyColumns: STOCKINGPOINTID
      RecordModificationHintStrategy: 'None'
      EDIODBCLinkColumn CREATETIME
      {
        OthersMayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn DATAFROM
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn DATATO
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn ENDTIME
      {
        OthersMayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn ID
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn NAME
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn PRODUCTID
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn QTY
      {
        OthersMayUpdateColumn: true
        ValueType: Real
      }
      EDIODBCLinkColumn RELEASETIME
      {
        OthersMayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn STARTTIME
      {
        OthersMayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn STOCKINGPOINTID
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn USER
      {
        OthersMayUpdateColumn: true
        ValueType: String
      }
    }
  }
  EDITransformation.Transformation TransformationVersionControl
  {
    EDITableTransformation
    {
      InputTable: MID_VERSIONCONTROL
      OutputTable: MappingVersionControl
      EDIColumnMatch { InputColumn: CREATETIME OutputColumn: CreateTime }
      EDIColumnMatch { InputColumn: DATAFROM OutputColumn: DataFrom }
      EDIColumnMatch { InputColumn: DATATO OutputColumn: DataTo }
      EDIColumnMatch { InputColumn: ENDTIME OutputColumn: EndTime }
      EDIColumnMatch { InputColumn: ID OutputColumn: VersionID }
      EDIColumnMatch { InputColumn: NAME OutputColumn: VersionName }
      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
      EDIColumnMatch { InputColumn: QTY OutputColumn: Qty }
      EDIColumnMatch { InputColumn: RELEASETIME OutputColumn: ReleaseTime }
      EDIColumnMatch { InputColumn: STARTTIME OutputColumn: StartTime }
      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
      EDIColumnMatch { InputColumn: USER OutputColumn: User }
    }
  }
}
_Main/BL/EDI/Broker_Broker_OTD_VersionControlToDB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
Quintiq file version 2.0
#parent: #root
EDIBroker Broker_OTD_VersionControlToDB
{
  MDSDefinition: GlobalOTDTable
  TimeZone: 'ACT'
  UseOSTimeZone: false
  EDIModelLink.Source MappingVersionControlToDB
  {
    EDIMLTable MappingVersionControl
    {
      PrimaryKeyColumns: EndTime
      PrimaryKeyColumns: ProductID
      PrimaryKeyColumns: StartTime
      PrimaryKeyColumns: StockingPointID
      PrimaryKeyColumns: VersionID
      TargetType: MappingVersionControl
      TypeIndex: TypeIndexVersionControl
      EDIMLColumn CreateTime { Attribute: CreateTime ValueType: DateTime }
      EDIMLColumn DataFrom { Attribute: DataFrom ValueType: String }
      EDIMLColumn DataTo { Attribute: DataTo ValueType: String }
      EDIMLColumn EndTime { Attribute: EndTime ValueType: DateTime }
      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
      EDIMLColumn Qty { Attribute: Qty ValueType: Real }
      EDIMLColumn ReleaseTime { Attribute: ReleaseTime ValueType: DateTime }
      EDIMLColumn StartTime { Attribute: StartTime ValueType: DateTime }
      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
      EDIMLColumn User { Attribute: User ValueType: String }
      EDIMLColumn VersionID { Attribute: VersionID ValueType: String }
      EDIMLColumn VersionName { Attribute: VersionName ValueType: String }
    }
  }
  EDIODBCLink.Destination MID_VERSIONCONTROLTODB
  {
    DataIntegrityStrategy: 'Disabled'
    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle'
    EDIODBCLinkTable MID_VERSIONCONTROL
    {
      MayCreateTable: true
      MayDeleteRow: true
      MayDropTable: true
      MayFlushTable: true
      MayInsertRow: true
      Parameters: '/owner="TIANMA"'
      PrimaryKeyColumns: ENDTIME
      PrimaryKeyColumns: ID
      PrimaryKeyColumns: PRODUCTID
      PrimaryKeyColumns: STARTTIME
      PrimaryKeyColumns: STOCKINGPOINTID
      RecordModificationHintStrategy: 'None'
      EDIODBCLinkColumn CREATETIME
      {
        MayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn DATAFROM
      {
        MayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn DATATO
      {
        MayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn ENDTIME
      {
        MayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn ID
      {
        MayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn NAME
      {
        MayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn PRODUCTID
      {
        MayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn QTY
      {
        MayUpdateColumn: true
        ValueType: Real
      }
      EDIODBCLinkColumn RELEASETIME
      {
        MayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn STARTTIME
      {
        MayUpdateColumn: true
        ValueType: DateTime
      }
      EDIODBCLinkColumn STOCKINGPOINTID
      {
        MayUpdateColumn: true
        ValueType: String
      }
      EDIODBCLinkColumn USER
      {
        MayUpdateColumn: true
        ValueType: String
      }
    }
  }
  EDITransformation.Transformation TransformationVersionControlToDB
  {
    EDITableTransformation
    {
      InputTable: MappingVersionControl
      OutputTable: MID_VERSIONCONTROL
      EDIColumnMatch { InputColumn: CreateTime OutputColumn: CREATETIME }
      EDIColumnMatch { InputColumn: DataFrom OutputColumn: DATAFROM }
      EDIColumnMatch { InputColumn: DataTo OutputColumn: DATATO }
      EDIColumnMatch { InputColumn: EndTime OutputColumn: ENDTIME }
      EDIColumnMatch { InputColumn: ProductID OutputColumn: PRODUCTID }
      EDIColumnMatch { InputColumn: Qty OutputColumn: QTY }
      EDIColumnMatch { InputColumn: ReleaseTime OutputColumn: RELEASETIME }
      EDIColumnMatch { InputColumn: StartTime OutputColumn: STARTTIME }
      EDIColumnMatch { InputColumn: StockingPointID OutputColumn: STOCKINGPOINTID }
      EDIColumnMatch { InputColumn: User OutputColumn: USER }
      EDIColumnMatch { InputColumn: VersionID OutputColumn: ID }
      EDIColumnMatch { InputColumn: VersionName OutputColumn: NAME }
    }
  }
}
_Main/BL/InfoMessages.qbl
@@ -10,4 +10,4 @@
  {
    DefaultText: 'Please input validate value !'
  }
}
}
_Main/BL/Relations/Relation_MappingVersionControl_GlobalOTDTable_GlobalOTDTable_MappingVersionC.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MappingVersionControl_GlobalOTDTable_GlobalOTDTable_MappingVersionControl
{
  #keys: '1[412960.0.150120043]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[412960.0.150120045][412960.0.150120044][412960.0.150120046]'
    Cardinality: '0to1'
    ObjectDefinition: MappingVersionControl
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MappingVersionControl
  {
    #keys: '3[412960.0.150120048][412960.0.150120047][412960.0.150120049]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OrderLockLog_MacroPlan_MacroPlan_OrderLockLog.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OrderLockLog_MacroPlan_MacroPlan_OrderLockLog
{
  #keys: '1[412960.0.217504333]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[412960.0.217504335][412960.0.217504334][412960.0.217504336]'
    Cardinality: '0to1'
    ObjectDefinition: OrderLockLog
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OrderLockLog
  {
    #keys: '3[412960.0.217504338][412960.0.217504337][412960.0.217504339]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_VersionControl_GlobalOTDTable_GlobalOTDTable_VersionControl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation VersionControl_GlobalOTDTable_GlobalOTDTable_VersionControl
{
  #keys: '1[412960.0.134860006]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[412960.0.134860008][412960.0.134860007][412960.0.134860009]'
    Cardinality: '0to1'
    ObjectDefinition: VersionControl
    OwningSide: 'Reference'
  }
  RelationSide.RightSide VersionControl
  {
    #keys: '3[412960.0.134860011][412960.0.134860010][412960.0.134860012]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_VersionStatusDetail_VersionStatus_VersionStatus_VersionStatusDetail.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation VersionStatusDetail_VersionStatus_VersionStatus_VersionStatusDetail
{
  #keys: '1[412960.0.143214355]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide VersionStatus
  {
    #keys: '3[412960.0.143214357][412960.0.143214356][412960.0.143214358]'
    Cardinality: '0to1'
    ObjectDefinition: VersionStatusDetail
    OwningSide: 'Reference'
  }
  RelationSide.RightSide VersionStatusDetail
  {
    #keys: '3[412960.0.143214360][412960.0.143214359][412960.0.143214361]'
    Cardinality: '1toN'
    ObjectDefinition: VersionStatus
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_VersionStatus_GlobalOTDTable_GlobalOTDTable_VersionStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation VersionStatus_GlobalOTDTable_GlobalOTDTable_VersionStatus
{
  #keys: '1[412960.0.134830056]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[412960.0.134830058][412960.0.134830057][412960.0.134830059]'
    Cardinality: '0to1'
    ObjectDefinition: VersionStatus
    OwningSide: 'Reference'
  }
  RelationSide.RightSide VersionStatus
  {
    #keys: '3[412960.0.134830061][412960.0.134830060][412960.0.134830062]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_CustomerOrder/Attribute_LastModify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModify
{
  #keys: '3[412960.0.217504307][412960.0.217504306][412960.0.217504308]'
  Description: '最后修改人'
  ValueType: String
}
_Main/BL/Type_CustomerOrder/Attribute_LastModifyTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModifyTime
{
  #keys: '3[412960.0.217504317][412960.0.217504316][412960.0.217504318]'
  Description: '最后操作时间'
  ValueType: DateTime
}
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetBusinessTypeName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetBusinessTypeName (
  String name
) as String
{
  Description: '从事业部中文名称到缩写的转换'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    result := "";
    if( name = "集团" ){
      result := "TM";
      }else if( name = "手机事业部" ){
        result := "SJ";
        }else if( name = "IT事业部" ){
        result := "IT";
        }else if( name = "车载事业部" ){
        result := "CZ";
        }else if( name = "汽车电子事业部" ){
        result := "QD";
        }else if( name = "专显事业部" ){
        result := "ZX";
        }else if( name = "穿戴事业部" ){
        result := "CD";
        }else if( name = "面板" ){
        result := "MB";
        }
    return result;
  *]
}
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetNextCalType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetNextCalType (
  String latestcaltype,
  String businesstype
) as String
{
  Description: '获取下一个计算步骤'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    result := "";
    if( businesstype = "TM"){
      if( latestcaltype = "" ){
        result := "SCENE";
        }else if( latestcaltype = "SCENE" ){
          result := "TM_SOP_R1";
          }else if( latestcaltype = "TM_SOP_R1" ){
          result := "TM_SOP_R2";
          }else if( latestcaltype = "TM_SOP_R2" ){
          error( "This version is ended" );
          }
      }else{
      if( latestcaltype = "TM_SOP_R1" ){
        result := businesstype + "_SOP_R1";
        }else if( latestcaltype = "TM_SOP_R2" ){
          result := businesstype + "_MPS_R1";
          }else if( latestcaltype = businesstype + "_MPS_R1" ){
          result := businesstype + "_MRP_R1";
          }else if( latestcaltype = businesstype + "_MRP_R1" ){
          result := businesstype + "_MPS_R2";
          }else if( latestcaltype = businesstype + "_MPS_R2" ){
          result := businesstype + "_MRP_R2";
          }else if( latestcaltype = businesstype + "_MRP_R2" ){
          error( "This version is ended" );
        }
    }
    return result;
  *]
}
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetOutputVersionData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetOutputVersionData (
  GlobalOTDTable owner,
  MacroPlan macroplan,
  String businessname
)
{
  Description: '形成并发送版本数据'
  TextBody:
  [*
    // Administrator Sep-14-2023 (created)
    businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
    // Clean exist data
    traverse( owner, MappingVersionControl, mpc, true ){
      mpc.Delete();
    }
    // Get Latest version
    latestversion := VersionControl::FindLatestUpdateVersion( owner, businesstype );
    createtime := latestversion.CreateTime();
    datafrom := businesstype;
    releasetime := latestversion.ReleaseTime();
    versionid := latestversion.VersionID() + "-" + latestversion.CalType();
    info( versionid );
    versionname := latestversion.LongVersionName();
    user := latestversion.User();
    // Get Data list to deal
    listtodeal := selectset( macroplan,
                              Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod,
                              pispip,
                              pispip.SalesDemandQuantity() > 0 );
    if( latestversion.CalType() = "TM_SOP_R1" ){
      listtodeal := selectset( macroplan,
                               Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod,
                               pispip,
                               pispip.ProductInStockingPoint_MP().ProductID().StartsWith( "C1" ) );
      }
    traverse( listtodeal, Elements, item, true ){
      endtime := item.End();
      productid := item.ProductInStockingPoint_MP().ProductID();
      qty := item.SalesDemandQuantity();
      starttime := item.Start();
      stockingpointid := item.StockingPointInPeriod().StockingPointID();
      datato := "TM";
      if( businesstype <> "TM" ){
        datato := "TM";
        }
      owner.MappingVersionControl( relnew,
                                   CreateTime := createtime,
                                   DataFrom := datafrom,
                                   DataTo := datato,
                                   EndTime := endtime,
                                   ProductID := productid,
                                   Qty := qty,
                                   ReleaseTime := releasetime,
                                   StartTime := starttime,
                                   StockingPointID := stockingpointid,
                                   User := user,
                                   VersionID := versionid,
                                   VersionName := versionname )
      }
    // Send Data To DB
    owner.Broker_OTD_VersionControlToDB().Execute();
  *]
}
_Main/BL/Type_GlobalDTOTable/StaticMethod_GetVersionData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetVersionData (
  GlobalOTDTable owner,
  String businessname
)
{
  Description: '抽取并处理版本数据'
  TextBody:
  [*
    // Administrator Sep-14-2023 (created)
    businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
    releasetime := DateTime::ActualTime();
    // Clean exist data
    traverse( owner, MappingVersionControl, mpc, true ){
      mpc.Delete();
    }
    // Get Data From DB
    owner.Broker_OTD_VersionControl().Execute();
    // Get Data list to deal
    listtodeal := selectset( owner, MappingVersionControl, item, item.DataTo() = businesstype );
    traverse( listtodeal, Elements, item, true ){
      versionid := item.VersionID();
      existversion := VersionControl::FindByFullVersionID( owner, versionid );
      if( isnull( existversion ) ){
        longversionname := item.VersionName();
        longversionnamelist := longversionname.Tokenize( "-" );
        shortversionname := longversionnamelist.Element( longversionnamelist.Size() - 1 );
        caltype := shortversionname.SubString( 0, 10 );
        shortversionid := versionid.ReplaceAll( "-" + caltype, "" );
        newversioncontrol := VersionControl::Create( owner,
                                                     item.DataFrom(),
                                                     caltype,
                                                     item.CreateTime(),
                                                     shortversionid,
                                                     longversionname,
                                                     shortversionname,
                                                     item.User() );
        newversioncontrol.IsReleased( true );
        newversioncontrol.ReleaseTime( releasetime );
        }
      }
  *]
}
_Main/BL/Type_MappingVersionControl/Attribute_CreateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CreateTime
{
  #keys: '3[412960.0.150120147][412960.0.150120146][412960.0.150120148]'
  Description: '创建时间'
  ValueType: DateTime
}
_Main/BL/Type_MappingVersionControl/Attribute_DataFrom.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DataFrom
{
  #keys: '3[412960.0.150120067][412960.0.150120066][412960.0.150120068]'
  Description: '数据发出的部门名称'
  ValueType: String
}
_Main/BL/Type_MappingVersionControl/Attribute_DataTo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DataTo
{
  #keys: '3[412960.0.150120077][412960.0.150120076][412960.0.150120078]'
  Description: '接收数据的部门名称'
  ValueType: String
}
_Main/BL/Type_MappingVersionControl/Attribute_EndTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute EndTime
{
  #keys: '3[412960.0.150120127][412960.0.150120126][412960.0.150120128]'
  Description: '结束时间'
  IsReadOnly: true
  ValueType: DateTime
}
_Main/BL/Type_MappingVersionControl/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[412960.0.150120087][412960.0.150120086][412960.0.150120088]'
  Description: '物料编码'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_MappingVersionControl/Attribute_Qty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Qty
{
  #keys: '3[412960.0.150120097][412960.0.150120096][412960.0.150120098]'
  Description: '数量'
  ValueType: Real
}
_Main/BL/Type_MappingVersionControl/Attribute_ReleaseTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ReleaseTime
{
  #keys: '3[412960.0.150120157][412960.0.150120156][412960.0.150120158]'
  Description: '发布时间'
  ValueType: DateTime
}
_Main/BL/Type_MappingVersionControl/Attribute_StartTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute StartTime
{
  #keys: '3[412960.0.150120117][412960.0.150120116][412960.0.150120118]'
  Description: '开始时间'
  IsReadOnly: true
  ValueType: DateTime
}
_Main/BL/Type_MappingVersionControl/Attribute_StockingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute StockingPointID
{
  #keys: '3[412960.0.150120107][412960.0.150120106][412960.0.150120108]'
  Description: '库存点编码'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_MappingVersionControl/Attribute_User.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute User
{
  #keys: '3[412960.0.150120137][412960.0.150120136][412960.0.150120138]'
  Description: '用户名称'
  ValueType: String
}
_Main/BL/Type_MappingVersionControl/Attribute_VersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionID
{
  #keys: '3[412960.0.150120057][412960.0.150120056][412960.0.150120058]'
  Description: '数据库抽取的全量版本号'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_MappingVersionControl/Attribute_VersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionName
{
  #keys: '3[412960.0.150124918][412960.0.150124917][412960.0.150124919]'
  Description: '版本名称'
  ValueType: String
}
_Main/BL/Type_MappingVersionControl/TypeIndex_TypeIndexVersionControl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
#parent: #root
TypeIndex TypeIndexVersionControl
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: VersionID
    }
    TypeIndexAttribute
    {
      ModelElement: EndTime
    }
    TypeIndexAttribute
    {
      ModelElement: StockingPointID
    }
    TypeIndexAttribute
    {
      ModelElement: StartTime
    }
    TypeIndexAttribute
    {
      ModelElement: ProductID
    }
  ]
}
_Main/BL/Type_MappingVersionControl/_ROOT_Type_MappingVersionControl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MappingVersionControl
{
  #keys: '5[412960.0.150120040][412960.0.150120038][0.0.0][412960.0.150120039][412960.0.150120041]'
  BaseType: Object
  Description: '版本控制中间表'
  StructuredName: 'MappingVersionControls'
}
_Main/BL/Type_OrderLockLog/Attribute_CustomerName#23.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomerName
{
  #keys: '3[412960.0.217504426][412960.0.217504425][412960.0.217504427]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_End.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute End
{
  #keys: '3[412960.0.217504488][412960.0.217504487][412960.0.217504489]'
  ValueType: Date
}
_Main/BL/Type_OrderLockLog/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[412960.0.217504467][412960.0.217504466][412960.0.217504468]'
  ValueType: Date
}
_Main/BL/Type_OrderLockLog/Attribute_IsFirmed#2.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsFirmed
{
  #keys: '3[412960.0.217504477][412960.0.217504476][412960.0.217504478]'
  ValueType: Boolean
}
_Main/BL/Type_OrderLockLog/Attribute_LastModify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModify
{
  #keys: '3[412960.0.217504501][412960.0.217504500][412960.0.217504502]'
  Description: '最后修改人'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_LastModifyTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModifyTime
{
  #keys: '3[412960.0.217504498][412960.0.217504497][412960.0.217504499]'
  Description: '最后操作时间'
  ValueType: DateTime
}
_Main/BL/Type_OrderLockLog/Attribute_OrderID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderID
{
  #keys: '3[412960.0.217504386][412960.0.217504385][412960.0.217504387]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_Price.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Price
{
  #keys: '3[412960.0.217504457][412960.0.217504456][412960.0.217504458]'
  ValueType: Real
}
_Main/BL/Type_OrderLockLog/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[412960.0.217504396][412960.0.217504395][412960.0.217504397]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[412960.0.217504437][412960.0.217504436][412960.0.217504438]'
  ValueType: Real
}
_Main/BL/Type_OrderLockLog/Attribute_SalesSegmentName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute SalesSegmentName
{
  #keys: '3[412960.0.217504406][412960.0.217504405][412960.0.217504407]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_StockingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StockingPointID
{
  #keys: '3[412960.0.217504416][412960.0.217504415][412960.0.217504417]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_UnitOfMeasureName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UnitOfMeasureName
{
  #keys: '3[412960.0.217504447][412960.0.217504446][412960.0.217504448]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/DefaultValue_LastModify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: LastModify
}
_Main/BL/Type_OrderLockLog/_ROOT_Type_OrderLockLog.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OrderLockLog
{
  #keys: '5[412960.0.217504330][412960.0.217504328][0.0.0][412960.0.217504329][412960.0.217504331]'
  BaseType: Object
  Description: '订单锁定操作日志'
  StructuredName: 'OrderLockLogs'
}
_Main/BL/Type_Scenario/Attribute_IsCreateNewVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute IsCreateNewVersion
{
  #keys: '3[412960.0.155630021][412960.0.155630020][412960.0.155630022]'
  Description: '是否创建从集团SOP开始的全新版本'
  ValueType: Boolean
}
_Main/BL/Type_Scenario/Attribute_IsOrderLocked.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute IsOrderLocked
{
  #keys: '3[412960.0.212420059][412960.0.212420058][412960.0.212420060]'
  Description: '订单锁定的是否锁定筛选条件'
  ValueType: String
}
_Main/BL/Type_Scenario/Attribute_VersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionID
{
  #keys: '3[412960.0.150120035][412960.0.150120034][412960.0.150120036]'
  Description: '当前场景对应的版本号,于创建版本时确定'
  ValueType: String
}
_Main/BL/Type_Scenario/DefaultValue_VersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: VersionID
}
_Main/BL/Type_Scenario/Method_SetReleased.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
Quintiq file version 2.0
#parent: #root
Method SetReleased #extension
{
}
_Main/BL/Type_VersionControl/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[412960.0.134860020][412960.0.134860019][412960.0.134860021]'
  Description: '发出该版本的事业部,用于识别和校验是否所有事业部均有回传数据,目前取值范围为[ é›†å›¢(TM),手机事业部(SJ),IT事业部(IT),车载事业部(CZ),汽车电子事业部(QD),专显事业部(ZX),穿戴事业部(CD)] ã€‚'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_CalType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CalType
{
  #keys: '3[412960.0.136134246][412960.0.136134245][412960.0.136134247]'
  Description: '计算类型,用于标注为哪一步计算生成的该版本,如SOP_R1'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_CreateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CreateTime
{
  #keys: '3[412960.0.136134256][412960.0.136134255][412960.0.136134257]'
  Description: '创建该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionControl/Attribute_IsReleased.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsReleased
{
  #keys: '3[412960.0.134830023][412960.0.134830022][412960.0.134830024]'
  ValueType: Boolean
}
_Main/BL/Type_VersionControl/Attribute_LongVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LongVersionName
{
  #keys: '3[412960.0.136134236][412960.0.136134235][412960.0.136134237]'
  Description: '该版本号对应的版本名称,名称为用于前端展示的格式,如SCENE(2023-09-06 15:06:57)'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Notes
{
  #keys: '3[412960.0.136138830][412960.0.136138829][412960.0.136138831]'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_ReleaseTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ReleaseTime
{
  #keys: '3[412960.0.136134266][412960.0.136134265][412960.0.136134267]'
  Description: '发布该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionControl/Attribute_SingleVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SingleVersionName
{
  #keys: '3[412960.0.136138782][412960.0.136138781][412960.0.136138783]'
  Description: '单个版本的名字,即小版本名'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_User.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute User
{
  #keys: '3[412960.0.134830093][412960.0.134830092][412960.0.134830094]'
  Description: '创建该版本的用户'
  ValueType: String
}
_Main/BL/Type_VersionControl/Attribute_VersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionID
{
  #keys: '3[412960.0.134860030][412960.0.134860029][412960.0.134860031]'
  Description: '11位数的时间戳拼接而成的文本,仅包含数字部分'
  ValueType: String
}
_Main/BL/Type_VersionControl/StaticMethod_CopyVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CopyVersion (
  GlobalOTDTable owner,
  String businessname
) as VersionControl
{
  Description: '复制当前版本并更新版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    createtime := DateTime::ActualTime();
    user := QuintiqUser::CurrentUser().Username();
    starttime := DateTime::Construct(1970,1,1,0,0,0);
    // Get the local scenario businesstype
    businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
    // Get the older version info
    oldversionid := "";
    oldversionname := "";
    latestversion := VersionControl::FindLatestUpdateVersion( owner, businesstype );
    copyversionid := latestversion.VersionID();
    info( copyversionid );
    if( copyversionid.FindString( "-", 0 ) > 0 ){
      latestversionlist := copyversionid.Tokenize( "-" );
      latestversionnamelist := latestversion.LongVersionName().Tokenize( "-" );
      for( i := 0; i < latestversionlist.Size() - 1; i := i + 1 ){
        if( oldversionid = "" ){
          oldversionid := latestversionlist.Element( i );
          oldversionname := latestversionnamelist.Element( i );
          }else{
            oldversionid := oldversionid + "-" + latestversionlist.Element( i );
            oldversionname := oldversionname + "-" + latestversionnamelist.Element( i );
            }
        info( oldversionid );
        }
      if( oldversionid <> "" ){
        oldversionid := oldversionid + "-";
        oldversionname := oldversionname + "-";
        }
      info( oldversionid );
      }
    // Calculate new version info
    additionversionid := ( createtime.MinutesAsReal( starttime ) * 60 * 10 + createtime.SecondOfMinute() ).Round( 0 );
    newversionid := oldversionid + [String]additionversionid;
    newcaltype := latestversion.CalType();
    newsingleversionname := newcaltype + "(" + createtime.Format( "Y/M2/D2 H:m:s" ) + ")";
    newversionname := oldversionname + newsingleversionname;
    info( newversionid );
    // Create new version
    newversion := VersionControl::Create( owner, businesstype, newcaltype, createtime, newversionid, newversionname, newsingleversionname, user );
    return newversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  GlobalOTDTable owner,
  String businesstype,
  String caltype,
  DateTime createtime,
  String versionid,
  String versionname,
  String singleversionname,
  String user
) as VersionControl
{
  Description: '创建版本'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    newversion := owner.VersionControl( relnew,
                                        BusinessType := businesstype,
                                        CalType := caltype,
                                        CreateTime := createtime,
                                        VersionID := versionid,
                                        LongVersionName := versionname,
                                        SingleVersionName := singleversionname,
                                        User := user );
    return newversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_CreateNewSceneVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateNewSceneVersion (
  GlobalOTDTable owner,
  String businessname
) as VersionControl
{
  Description: '随创建场景进行版本创建'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    createtime := DateTime::ActualTime();
    user := QuintiqUser::CurrentUser().Username();
    starttime := DateTime::Construct(1970,1,1,0,0,0);
    // Get the local scenario businesstype
    businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
    // Get the older version info
    oldversion_id := "";
    oldversion_name := "";
    oldcaltype := "";
    // Calculate new version info
    additionversionid := ( createtime.MinutesAsReal( starttime ) * 60 * 10 + createtime.SecondOfMinute() ).Round( 0 );
    newversionid := oldversion_id + [String]additionversionid;
    newcaltype := GlobalOTDTable::GetNextCalType( oldcaltype, businesstype );
    newsingleversionname := newcaltype + "(" + createtime.Format( "Y/M2/D2 H:m:s" ) + ")";
    newversionname := oldversion_name + newsingleversionname;
    // Create new version
    newversion := VersionControl::Create( owner, businesstype, newcaltype, createtime, newversionid, newversionname, newsingleversionname, user );
    newversion.IsReleased( true );
    newversion.ReleaseTime( createtime );
    return newversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_CreateNewVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateNewVersion (
  GlobalOTDTable owner,
  String businessname
) as VersionControl
{
  Description: '在上一版本后添加新版本号并生成新版本'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    createtime := DateTime::ActualTime();
    user := QuintiqUser::CurrentUser().Username();
    starttime := DateTime::Construct(1970,1,1,0,0,0);
    // Get the local scenario businesstype
    businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
    // Get the older version info
    oldversion_id := "";
    oldversion_name := "";
    oldcaltype := "";
    latestversion := VersionControl::FindLatestUpdateVersion( owner, businesstype );
    if( isnull( latestversion ) and not businesstype = "TM" ){
      error( "Can't find last version in " + businesstype.AsQUILL() );
      }
    else if( not isnull( latestversion ) ){
      oldversion_id := latestversion.VersionID() + "-";
      oldversion_name := latestversion.LongVersionName() + "-";
      oldcaltype := latestversion.CalType();
      }
    // Calculate new version info
    additionversionid := ( createtime.MinutesAsReal( starttime ) * 60 * 10 + createtime.SecondOfMinute() ).Round( 0 );
    newversionid := oldversion_id + [String]additionversionid;
    newcaltype := GlobalOTDTable::GetNextCalType( oldcaltype, businesstype );
    newsingleversionname := newcaltype + "(" + createtime.Format( "Y/M2/D2 H:m:s" ) + ")";
    newversionname := oldversion_name + newsingleversionname;
    // Create new version
    newversion := VersionControl::Create( owner, businesstype, newcaltype, createtime, newversionid, newversionname, newsingleversionname, user );
    return newversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_FindByFullVersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindByFullVersionID (
  GlobalOTDTable owner,
  String versionid
) as VersionControl
{
  Description: '通过全量版本号进行查找'
  TextBody:
  [*
    // Administrator Sep-14-2023 (created)
    // Get the version data
    resultversion :=  select( owner, VersionControl, version, version.VersionID() + "-" + version.CalType() = versionid );
    return resultversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_FindLatestUpdateVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindLatestUpdateVersion (
  GlobalOTDTable globalotdtable,
  String businesstype
) as VersionControl
{
  Description: '获取某事业部目前最新的版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    latestversion := maxselect( globalotdtable,
                                VersionControl,
                                version,
                                version.BusinessType()=businesstype and version.IsReleased()=true,
                                version.CreateTime() );
    return latestversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_FindLatestVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindLatestVersion (
  GlobalOTDTable globalotdtable,
  String businesstype
) as VersionControl
{
  Description: '获取某事业部目前最新的版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    latestversion := maxselect( globalotdtable,
                                VersionControl,
                                version,
                                version.BusinessType()=businesstype,
                                version.CreateTime() );
    return latestversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_FindReleasedVersions.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindReleasedVersions (
  GlobalOTDTable globalotdtable,
  String businesstype,
  String versionid
) as owning VersionControls
{
  Description: '获取某事业部目前最新的版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    latestversion := selectset( globalotdtable, VersionControl, version, version.BusinessType()=businesstype and version.IsReleased()=true and version.VersionID().FindString( versionid, 0 ) = 0 );
    return &latestversion;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_GetVersionInfo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetVersionInfo (
  GlobalOTDTable owner,
  String businessname
) as owning Strings
{
  Description: '获取大版本版本号及版本名称'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    businesstyoe := GlobalOTDTable::GetBusinessTypeName( businessname );
    result := construct( Strings );
    rootversion := VersionControl::FindLatestVersion( owner, businesstyoe );
    if( not isnull( rootversion ) ){
      result.Add( rootversion.VersionID() );
      result.Add( rootversion.LongVersionName() );
      result.Add( rootversion.VersionID() + "-" + rootversion.CalType() );
      result.Add( rootversion.SingleVersionName() );
      }else{
        result.Add( "" );
        result.Add( "" );
        result.Add( "" );
        result.Add( "" );
        }
    return &result;
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_ReleaseLatestVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ReleaseLatestVersion
{
  Description: '发布当前版本,待编写'
  TextBody:
  [*
    // Administrator Sep-14-2023 (created)
  *]
}
_Main/BL/Type_VersionControl/StaticMethod_ReleaseNewVersion.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ReleaseNewVersion (
  GlobalOTDTable owner,
  String businesstype
)
{
  Description: '发布新版本'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    releasetime := DateTime::ActualTime();
    // Create new version
    newversion := VersionControl::CreateNewVersion( owner, businesstype );
    newversion.IsReleased( true );
    newversion.ReleaseTime( releasetime );
  *]
}
_Main/BL/Type_VersionControl/_ROOT_Type_VersionControl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type VersionControl
{
  #keys: '5[412960.0.134860003][412960.0.134860001][0.0.0][412960.0.134860002][412960.0.134860004]'
  BaseType: Object
  Description: '储存全量版本状态的object'
  StructuredName: 'VersionControls'
}
_Main/BL/Type_VersionStatus/Attribute_BusinessName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessName
{
  #keys: '3[412960.0.134830239][412960.0.134830238][412960.0.134830240]'
  Description: '展示用事业部名称'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_BusinessType.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessType
{
  #keys: '3[412960.0.134830072][412960.0.134830071][412960.0.134830073]'
  Description: '事业部名称'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_LastReleaseTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastReleaseTime
{
  #keys: '3[412960.0.136138799][412960.0.136138798][412960.0.136138800]'
  Description: '最后同步的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionStatus/Attribute_LastUser.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastUser
{
  #keys: '3[412960.0.136138809][412960.0.136138808][412960.0.136138810]'
  Description: '最后操作人'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_LastVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastVersionName
{
  #keys: '3[412960.0.136138768][412960.0.136138767][412960.0.136138769]'
  Description: '最终拼接而成的版本名称'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Notes
{
  #keys: '3[412960.0.136138819][412960.0.136138818][412960.0.136138820]'
  Description: '备注'
  ValueType: String
}
_Main/BL/Type_VersionStatus/Attribute_SortNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SortNumber
{
  #keys: '3[412960.0.136138758][412960.0.136138757][412960.0.136138759]'
  Description: '序号'
  ValueType: Number
}
_Main/BL/Type_VersionStatus/StaticMethod_CreateOrUpdate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateOrUpdate (
  GlobalOTDTable owner,
  String businesstype,
  String businessname,
  DateTime lastreleasetime,
  String lastuser,
  String lastversionname,
  String notes,
  Number sortnumber
)
{
  Description: '创建新的版本发布状态'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Find exist status
    existstatus := VersionStatus::FindLatestStatus( owner, businesstype );
    if( isnull( existstatus ) ){
      owner.VersionStatus( relnew,
                          BusinessType := businesstype,
                          BusinessName := businessname,
                          LastReleaseTime := lastreleasetime,
                          LastUser := lastuser,
                          LastVersionName := lastversionname,
                          Notes := notes,
                          SortNumber := sortnumber );
      }else{
        existstatus.LastReleaseTime( lastreleasetime );
        existstatus.LastUser( lastuser );
        existstatus.LastVersionName( lastversionname );
        existstatus.Notes( notes );
        existstatus.SortNumber( sortnumber );
        }
  *]
}
_Main/BL/Type_VersionStatus/StaticMethod_FindLatestStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindLatestStatus (
  GlobalOTDTable globalotdtable,
  String businesstype
) as VersionStatus
{
  Description: '获取某事业部目前最新的发布状态'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    lateststatus := select( globalotdtable, VersionStatus, version, version.BusinessType()=businesstype );
    return lateststatus;
  *]
}
_Main/BL/Type_VersionStatus/StaticMethod_GetBusinessTypeStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetBusinessTypeStatus (
  GlobalOTDTable owner,
  String rootversionid
)
{
  Description: '刷新所有事业部的发布情况'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get business type list
    businesstypes := "集团,面板,手机事业部,IT事业部,车载事业部,汽车电子事业部,专显事业部,穿戴事业部";
    businesstypelist := businesstypes.Tokenize( "," );
    sortnumber := 0;
    sortdetailnumber := 0;
    traverse( businesstypelist, Elements, businessname, true ){
    //  info( businessname );
      // Get the local scenario businesstype
      businesstype := GlobalOTDTable::GetBusinessTypeName( businessname );
      sortnumber := sortnumber + 1;
      lastversion := VersionControl::FindLatestUpdateVersion( owner, businesstype );
      if( not isnull( lastversion ) ){
        VersionStatus::CreateOrUpdate( owner,
                                       businesstype,
                                       businessname,
                                       lastversion.ReleaseTime(),
                                       lastversion.User(),
                                       lastversion.SingleVersionName(),
                                       lastversion.Notes(),
                                       sortnumber );
        }else{
          existstatus := VersionStatus::FindLatestStatus( owner, businesstype );
          if( isnull( existstatus ) ){
            owner.VersionStatus( relnew,
                                 BusinessType := businesstype,
                                 BusinessName := businessname,
                                 SortNumber := sortnumber
                                  );
            }
          }
        rootstatus := VersionStatus::FindLatestStatus( owner, businesstype );
        // Get the versions list
        versionlist := VersionControl::FindReleasedVersions( owner, businesstype, rootversionid );
    //    info( rootversionid );
        if( not isnull( versionlist ) ){
          traverse( versionlist, Elements, version, true ){
            info( version.VersionID() );
            sortdetailnumber := sortdetailnumber + 1;
            VersionStatusDetail::CreateOrUpdate( rootstatus,
                                                 version.VersionID() + "-" + version.CalType(),
                                                 version.CreateTime(),
                                                 version.ReleaseTime(),
                                                 version.SingleVersionName(),
                                                 version.User(),
                                                 version.Notes(),
                                                 sortdetailnumber );
            }
          }
      }
  *]
}
_Main/BL/Type_VersionStatus/_ROOT_Type_VersionStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type VersionStatus
{
  #keys: '5[412960.0.134830053][412960.0.134830051][0.0.0][412960.0.134830052][412960.0.134830054]'
  BaseType: Object
  Description: '各事业部的版本发布状态数据'
  StructuredName: 'VersionStatuss'
}
_Main/BL/Type_VersionStatusDetail/Attribute_CreateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CreateTime
{
  #keys: '3[412960.0.143214324][412960.0.143214323][412960.0.143214325]'
  Description: '创建该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionStatusDetail/Attribute_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Notes
{
  #keys: '3[412960.0.143214333][412960.0.143214332][412960.0.143214334]'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/Attribute_ReleaseTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ReleaseTime
{
  #keys: '3[412960.0.143214336][412960.0.143214335][412960.0.143214337]'
  Description: '发布该版本的时间'
  ValueType: DateTime
}
_Main/BL/Type_VersionStatusDetail/Attribute_SingleVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute SingleVersionName
{
  #keys: '3[412960.0.143214339][412960.0.143214338][412960.0.143214340]'
  Description: '单个版本的名字,即小版本名'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/Attribute_SortNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute SortNumber
{
  #keys: '3[412960.0.143220022][412960.0.143220021][412960.0.143220023]'
  ValueType: Number
}
_Main/BL/Type_VersionStatusDetail/Attribute_User.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute User
{
  #keys: '3[412960.0.143214342][412960.0.143214341][412960.0.143214343]'
  Description: '创建该版本的用户'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/Attribute_VersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute VersionID
{
  #keys: '3[412960.0.143214345][412960.0.143214344][412960.0.143214346]'
  Description: '全量版本号'
  ValueType: String
}
_Main/BL/Type_VersionStatusDetail/DefaultValue_Notes.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Notes
}
_Main/BL/Type_VersionStatusDetail/DefaultValue_SingleVersionName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: SingleVersionName
}
_Main/BL/Type_VersionStatusDetail/DefaultValue_User.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: User
}
_Main/BL/Type_VersionStatusDetail/StaticMethod_CreateOrUpdate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateOrUpdate (
  VersionStatus owner,
  String versionid,
  DateTime createtime,
  DateTime releasetime,
  String versionname,
  String user,
  String notes,
  Number sortnumber
)
{
  Description: '创建新的版本发布状态详情'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Find exist status
    existstatusdetail := VersionStatusDetail::FindStatus(  owner, versionid );
    if( isnull( existstatusdetail ) ){
      owner.VersionStatusDetail( relnew,
                                CreateTime := createtime,
                                ReleaseTime := releasetime,
                                SingleVersionName := versionname,
                                User := user,
                                VersionID := versionid,
                                Notes := notes,
                                SortNumber := sortnumber );
      }else{
        existstatusdetail.CreateTime( createtime );
        existstatusdetail.ReleaseTime( releasetime );
        existstatusdetail.SingleVersionName( versionname );
        existstatusdetail.User( user );
        existstatusdetail.Notes( notes );
        existstatusdetail.SortNumber( sortnumber );
        }
  *]
}
_Main/BL/Type_VersionStatusDetail/StaticMethod_FindStatus.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod FindStatus (
  VersionStatus owner,
  String versionid
) as VersionStatusDetail
{
  Description: '通过版本号查找是否有存在的状态详情'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    // Get the latest version data
    lateststatusdetail := select( owner, VersionStatusDetail, version, version.VersionID()=versionid );
    return lateststatusdetail;
  *]
}
_Main/BL/Type_VersionStatusDetail/StaticMethod_GetFullVersionID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetFullVersionID (
  VersionStatus owner
) as String
{
  Description: '获取全量版本号'
  TextBody:
  [*
    // Administrator Sep-13-2023 (created)
    result := "";
    latestversion := maxselect( owner, VersionStatusDetail, version, true, version.CreateTime() );
    if( not isnull( latestversion ) ){
      result := latestversion.VersionID();
        }
    return result;
  *]
}
_Main/BL/Type_VersionStatusDetail/_ROOT_Type_VersionStatusDetail.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type VersionStatusDetail
{
  #keys: '5[412960.0.143214315][412960.0.143214313][0.0.0][412960.0.143214314][412960.0.143214316]'
  BaseType: Object
  Description: '储存对应发布状态下版本状态的数据'
  StructuredName: 'VersionStatusDetails'
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Component_PanelGeneral#549.def
@@ -51,5 +51,16 @@
        Taborder: 4
      ]
    }
    Component CheckboxIsCreateNewVersion
    {
      #keys: '[412960.0.157150313]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.IsCreateNewVersion'
        Label: 'Create a new version'
        Taborder: 7
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component pnlActions #extension
{
  Children:
  [
    Component btnOK #extension
    {
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_NewScenario#549.def
@@ -20,6 +20,7 @@
    DataHolderActionCopy.Data( false );
    DataHolderDialogData.Data( &scenario );
    DataHolderDialogData.Data().EnableSync( enableSync );
    DataHolderDialogData.Data().IsCreateNewVersion( true );
    
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_NewScenario.def
@@ -19,6 +19,7 @@
    
    DataHolderActionCopy.Data( false );
    DataHolderDialogData.Data( &scenario );
    DataHolderDialogData.Data().IsCreateNewVersion( true );
    
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
@@ -17,6 +17,21 @@
    newscenario := null( Scenario );
    strategy := null( Strategy );
    
    // New version
    globalotdtable := GlobalOTDTable;
    testbusinesstype := "集团";
    if( data.IsCreateNewVersion() ){
      VersionControl::CreateNewSceneVersion( globalotdtable, testbusinesstype );
      }else{
        VersionControl::CopyVersion( globalotdtable, testbusinesstype );
        }
    versionname := VersionControl::GetVersionInfo( globalotdtable, testbusinesstype ).Element( 3 );
    // Get Version Name
    if( data.Name() = "" ){
      data.Name( versionname );
      }
    // Copy scenario
    if( isnull( data.WrappedInstance() ) )
    {
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pnlActions/btnOK
Response OnClick () id:Response_pnlActions_btnOK_OnClick #extension
{
  Precondition:
  [*
    data := DataHolderDialogData.Data();
    return not isnull( data )
           and Scenario::ValidateInput( feedback,
                                        ScenarioManager,
    //                                    edtName.Text(),
                                        "for version",
                                        data.WrappedInstance(),
                                        '',
                                        GlobalParameters_MP::GetKB_New(),
                                        'Test',
                                        RadioButtonGroupStorageState.BoundValue(),
                                        Domain.MDSStorageDefinitionManager().Enabled(),
                                        Domain.MDSStorageDefinitionManager().DatasetStoreEnabled(),
                                        Domain.MDSStorageDefinitionManager().DatabaseEnabled() );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/_ROOT_Component_DialogCreateEditScenario.def
@@ -6,5 +6,6 @@
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[412960.0.149440162]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnApply
    {
      #keys: '[412960.0.149440164]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Apply'
        Taborder: 0
        Visible: false
      ]
    }
    Component btnOk
    {
      #keys: '[412960.0.149440166]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 1
      ]
    }
    Component btnCancel
    {
      #keys: '[412960.0.149440168]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 2
        Visible: false
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[412960.0.149440160]'
  BaseType: 'WebPanel'
  Children:
  [
    Component lblContent
    {
      #keys: '[412960.0.149330142]'
      BaseType: 'WebLabel'
      Properties:
      [
        FixedSize: false
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Method_JustShow.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method JustShow () id:Method_DialogVersionIDCopy_JustShow
{
  #keys: '[412960.0.149561615]'
  Body:
  [*
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/Response_pnlActions_btnApply_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: pnlActions/btnApply
Response OnClick () id:Response_pnlActions_btnApply_OnClick
{
  #keys: '[412960.0.149440170]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  Precondition:
  [*
    return Form.HasChanges();
  *]
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/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: '[412960.0.149440172]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/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: '[412960.0.149440171]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogVersionIDCopy/_ROOT_Component_DialogVersionIDCopy.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogVersionIDCopy
{
  #keys: '[412960.0.149440158]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
  Properties:
  [
    Alignment: 'trailing'
    Description: '展示全量版本号以复制'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Image: 'DATA_COPY'
    Padding: 'false'
    Title: '全量版本号'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock#844.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
Component ListOrderLock id:ListOrderLock_844
{
  #keys: '[412960.0.217980651]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorOrderLock743
    {
      #keys: '[412960.0.217980652]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[CustomerOrder]'
        Description: '获取订单'
        Source: 'DataHolderOrderLock'
        Taborder: 0
        Transformation: 'Elements'
      ]
    }
    #child: listActionBarPageOrderLock_1
    Component DataSetLevelOrderLock
    {
      #keys: '[412960.0.217980654]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuOrderLock_1
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"First.AsPlanningBaseSalesDemandInPeriod.End","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"First.AsPlanningBaseSalesDemandInPeriod.End"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModify","title":"LastModify","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModify"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModifyTime","title":"LastModifyTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModifyTime"}}]'
        ContextMenu: 'listContextMenuOrderLock'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_MatrixEditorProductPlanning#679.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,210 @@
Quintiq file version 2.0
Component MatrixEditorProductPlanning id:MatrixEditorProductPlanning_679
{
  #keys: '[412960.0.220270414]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellPISPIP
    {
      #keys: '[412960.0.220270415]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorPISPIP
        {
          #keys: '[412960.0.220270416]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[ProductInStockingPoint_MP]'
            FixedFilter: 'not object.ProductInStockingPoint_MP().IsSystem() and object.ProductInStockingPoint_MP().IsLeaf()'
            Source: 'ApplicationMacroPlanner.DataHolderPISP'
            Taborder: 0
            Transformation: 'Elements.ProductInStockingPointInPeriod'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'DisplaySupplyQuantity;DependentDemandAndSalesDemandQuantity;TargetInventoryLevel;InventoryLevelEnd;StockLevelInDays'
        Column: 'Period_MP'
        Row: 'ProductInStockingPoint_MP'
        Taborder: 2
      ]
    }
    Component MatrixEditorRowsPISP
    {
      #keys: '[412960.0.220270417]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorPISP
        {
          #keys: '[412960.0.220270418]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'CustomerOrder'
            ExtractionMode: 'Selected'
            FixedFilter: 'not object.IsSystem() and object.IsLeaf()'
            Source: 'ListOrderLock'
            Taborder: 0
            Transformation: 'ProductInStockingPoint_MP'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Product_MP.DisplayIndex;Name'
        Taborder: 0
      ]
    }
    Component MatrixEditorColumnsPeriod
    {
      #keys: '[412960.0.220270419]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorPeriod
        {
          #keys: '[412960.0.220270420]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Period_MP]'
            Source: 'ApplicationMacroPlanner.DataHolderPeriods'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Start'
        SortCriteria: 'Start'
        Taborder: 1
      ]
    }
    Component UserConfigurableInformationMatrixEditorProductPlanning
    {
      #keys: '[412960.0.220270421]'
      BaseType: 'WebUserConfigurableInformation'
      Properties:
      [
        Identifier: 'Cell: PISPIP'
        ObjectType: 'ProductInStockingPointInPeriod'
        Taborder: 3
        Text: 'Test text'
        Tooltip: '<table><tr><td><b>SYNONYM(object.InventoryLevelEnd())</b></td><td>VALUE( MacroPlan::GetDisplayValue( object.InventoryLevelEnd() ) )</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td><b>Inventory holding cost </b></td><td>VALUE(object.TotalBaseInventoryHoldingCost())VALUE( \' \'+ object.ProductInStockingPoint_MP().StockingPoint_MP().Currency_MP().Symbol() )</td><td>VALUE( \'[\' + object.TotalBaseInventoryHoldingCostPerQuantity().Format(\'N(Dec(2))\') )</td><td>VALUE( object.ProductInStockingPoint_MP().StockingPoint_MP().Currency_MP().Symbol()  + \'/\' + object.ProductInStockingPoint_MP().UnitOfMeasure_MP().Name() + \']\' )  </td></tr><tr><td><b>SYNONYM(object.StockLevelInDays())</b></td><td>VALUE(object.StockLevelInDays)</td><td>day</td></tr><tr><td><b>Total supply </b></td><td>VALUE(object.SupplyQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Total demand </b></td><td>VALUE(object.GetDemandQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr><br><tr><td><b>Inventory start </b></td><td>VALUE( guard( MacroPlan::GetDisplayValue( object.InventoryLevelStartPISPIP().InventoryLevelEnd() ), 0.0 ) )</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Sales demand </b></td><td>VALUE(object.SalesDemandQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr><tr><td><b>New supply </b></td><td>VALUE(object.NewSupplyQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Dependent demand </b></td><td>VALUE(object.DependentDemandQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr><tr><td><b>Inventory supply </b></td><td>VALUE(object.InventorySupplyQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Fulfilled demand </b></td><td>VALUE(object.FulfilledDemandQuantity() )</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr></table><hr>VALUE( object.ImgHasFeedback() ) VALUE(  ifexpr( object.HasFeedback() , " Feedback message exist. Refer to Supply Planning matrix for details."  , "" )  )'
      ]
    }
    #child: matrixEditorActionBarPageProductPlanning_1
    #child: matrixeditorContextMenuProductPlanning_1
  ]
  Properties:
  [
    AllowAttributeConfiguration: true
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumnsPeriod'
    ContextMenu: 'matrixeditorContextMenuProductPlanning'
    Rows: 'MatrixEditorRowsPISP'
    ShowEditability: true
    ShowSingleAttribute: true
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick
    {
      #keys: '[412960.0.220270401]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[6763.0.7990336]'
          Binding: 'this.Selection()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebButton_OnClick
    {
      #keys: '[412960.0.220270400]'
      Initiator: 'WebButton'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[6763.0.7990409]'
          Binding: 'this.Selection()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick_119
    {
      #keys: '[412960.0.220270399]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedrows
        {
          #keys: '[6763.0.7990482]'
          Binding: 'this.SelectedRows()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebButton_OnClick_720
    {
      #keys: '[412960.0.220270398]'
      Initiator: 'WebButton'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedrows
        {
          #keys: '[6763.0.7990555]'
          Binding: 'this.SelectedRows()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick_640
    {
      #keys: '[412960.0.220270397]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedcolumns
        {
          #keys: '[6763.0.7990628]'
          Binding: 'this.SelectedColumns()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebButton_OnClick_582
    {
      #keys: '[412960.0.220270396]'
      Initiator: 'WebButton'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedcolumns
        {
          #keys: '[6763.0.7990701]'
          Binding: 'this.SelectedColumns()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelMatrix#780.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelMatrix id:PanelMatrix_780
{
  #keys: '[412960.0.220270412]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DataHolderSelectedPISPIPsInProductPlanningMatrix
    {
      #keys: '[412960.0.220270413]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ProductInStockingPointInPeriod]*'
      Properties:
      [
        Taborder: 1
      ]
    }
    #child: MatrixEditorProductPlanning_679
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLock.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelOrderLock
{
  #keys: '[412960.0.212571359]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelOrderLockHeader_545
    #child: PanelOrderLockOrder
    #child: PanelOrderLockPlanning
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockHeader#545.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
Quintiq file version 2.0
Component PanelOrderLockHeader id:PanelOrderLockHeader_545
{
  #keys: '[412960.0.212571440]'
  BaseType: 'WebPanel'
  Children:
  [
    Component LabelOrderLockHeaderVersion
    {
      #keys: '[412960.0.212571441]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: 'MPS版本名称'
        Label: 'MPS版本:'
        Taborder: 0
      ]
    }
    Component EditFieldOrderLockHeader
    {
      #keys: '[412960.0.212571468]'
      BaseType: 'WebEditField'
      Properties:
      [
        Description: '模糊搜索筛选框'
        PlaceHolder: '模糊搜索'
        Taborder: 1
      ]
    }
    Component DateSelectorOrderLockHeaderCustomerOrder
    {
      #keys: '[412960.0.212571527]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 2023-01-01
        Description: '客户需求时间'
        Label: '客户需求时间'
        Taborder: 3
      ]
    }
    Component DateSelectorOrderLockHeaderPlanDeliver
    {
      #keys: '[412960.0.212571611]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 2023-01-01
        Description: '计划交付时间'
        Label: '计划交付时间'
        Taborder: 4
      ]
    }
    Component ButtonOrderLockHeader
    {
      #keys: '[412960.0.212571669]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '模糊搜索按钮'
        Label: '搜索'
        Taborder: 2
      ]
    }
    Component RadioButtonGroupOrderLockHeader
    {
      #keys: '[412960.0.212571696]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        BoundValue: 'all'
        ButtonLabels: '已锁定;未锁定;全部'
        ButtonValues: 'locked;unlocked;all'
        DataBinding: 'DataHolderOrderLockGlobal.Data.IsOrderLocked'
        Description: '是否锁定的点选框'
        Orientation: 'horizontal'
        Taborder: 5
      ]
    }
    Component ButtonOrderLockHeaderLock
    {
      #keys: '[412960.0.221760476]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '订单锁定'
        Label: '锁定'
        Taborder: 7
      ]
    }
    Component ButtonOrderLockHeaderUnlock
    {
      #keys: '[412960.0.221760488]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '订单解锁'
        Label: '解锁'
        Taborder: 8
      ]
    }
    Component ButtonOrderLockHeaderClear
    {
      #keys: '[412960.0.223264324]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '清除筛选项'
        Label: '清除筛选'
        Taborder: 6
      ]
    }
  ]
  Properties:
  [
    Description: '放置lable,按钮等'
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockOrder.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelOrderLockOrder
{
  #keys: '[412960.0.217980613]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListOrderLock_844
  ]
  Properties:
  [
    Description: '订单信息展示'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockPlanning.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
Component PanelOrderLockPlanning
{
  #keys: '[412960.0.220270252]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelMatrix_780
  ]
  Properties:
  [
    Border: true
    Description: '订单对应的计划数据'
    Taborder: 2
    Title: '计划详情'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listActionBarPageOrderLock#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageOrderLock id:listActionBarPageOrderLock_1
{
  #keys: '[412960.0.217980653]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listContextMenuOrderLock#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuOrderLock id:listContextMenuOrderLock_1
{
  #keys: '[412960.0.217980655]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixEditorActionBarPageProductPlanning#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageProductPlanning id:matrixEditorActionBarPageProductPlanning_1
{
  #keys: '[412960.0.220270422]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 5
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixeditorContextMenuProductPlanning#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
Quintiq file version 2.0
Component matrixeditorContextMenuProductPlanning id:matrixeditorContextMenuProductPlanning_1
{
  #keys: '[412960.0.220270423]'
  BaseType: 'matrixeditorContextMenu'
  Children:
  [
    Component MenuCopy
    {
      #keys: '[138034.3.1296123318]'
      BaseType: 'MenuCopy'
      IsDerived: true
      Properties:
      [
        Taborder: 2
      ]
    }
    Component MenuSeparator3
    {
      #keys: '[412960.0.220270424]'
      BaseType: 'WebMenu'
      Properties:
      [
        Separator: true
        Taborder: 1
      ]
    }
    Component MenuLock
    {
      #keys: '[412960.0.220270427]'
      BaseType: 'WebMenu'
      Properties:
      [
        DelegationID: 'ActionBarPlan_Lock'
        Image: 'LOCK'
        Taborder: 3
        Title: 'Lock'
      ]
    }
    Component MenuUnlock
    {
      #keys: '[412960.0.220270428]'
      BaseType: 'WebMenu'
      Properties:
      [
        DelegationID: 'ActionBarPlan_Unlock'
        Image: 'LOCK_OPEN'
        Taborder: 4
        Title: 'Unlock'
      ]
    }
  ]
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuLock_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnClick (
  structured[ProductInStockingPointInPeriod] selection
) id:Response_MatrixEditorProductPlanning_679_MenuLock_OnClick
{
  #keys: '[412960.0.220270410]'
  CanBindMultiple: false
  DefinitionID => /MatrixEditorProductPlanning_679/Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick
  Initiator: 'MenuLock'
  Precondition:
  [*
    return ProductInStockingPointInPeriod::CanLockUnlock( selection, feedback );
  *]
  QuillAction
  {
    Body:
    [*
      // Lock total supply quantity for PISPIPs
      // This is a workaround, we supposedly set the bindingtype of selection as the subtype, but
      // the response would have trouble handling multiple cell selection, so for now, we bind the base type
      // then select the subtype
      pispipLeafs := selectset( selection,
                                Elements.astype( ProductInStockingPointInPeriodPlanningLeaf ),
                                pispip,
                                true );
      ProductInStockingPointInPeriod::LockUnlockPlanning( pispipLeafs, true, true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuUnlock_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnClick (
  structured[ProductInStockingPointInPeriod] selection
) id:Response_MatrixEditorProductPlanning_679_MenuUnlock_OnClick
{
  #keys: '[412960.0.220270407]'
  CanBindMultiple: false
  DefinitionID => /MatrixEditorProductPlanning_679/Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick
  Initiator: 'MenuUnlock'
  Precondition:
  [*
    return ProductInStockingPointInPeriod::CanLockUnlock( selection, feedback );
  *]
  QuillAction
  {
    Body:
    [*
      // Unlock the total supply quantity of pispips
      // This is a workaround, we supposedly set the bindingtype of selection as the subtype, but
      // the response would have trouble handling multiple cell selection, so for now, we bind the base type
      // then select the subtype
      pispipLeafs := selectset( selection, Elements.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispip,
                                true );
      ProductInStockingPointInPeriod::LockUnlockPlanning( pispipLeafs, false, true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnCheckEditability.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnCheckEditability (
  structured[ProductInStockingPointInPeriodPlanning] cell,
  Real value
) id:Response_MatrixEditorProductPlanning_679_OnCheckEditability
{
  #keys: '[412960.0.220270404]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMatrixEditor_OnCheckEditability'
  QuillAction
  {
    Body:
    [*
      //Precondition
      attributes := construct( Strings );
      attributes.Add(focusedattribute);
      isSupply_o := false;
      feedback :="";
      cond := MacroPlan.CanPlan( feedback )
              and ProductInStockingPointInPeriod::CanEnterSupplyQuantity( feedback,
                                                                          cell,
                                                                          attributes,
                                                                          isSupply_o );
      if( cond )
      {
        if( isSupply_o )
        {
          periods := selectset( cell, Elements.Period_MP, period, true );
          cond := ScenarioManager::CanStartSmartPlan( ScenarioManager,
                                                      DataHolderActiveScenario.Data(),
                                                      true,
                                                      periods,
                                                      feedback );
        }
      }
      editinfo.CanEdit( cond );
      editinfo.UserHint( feedback );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnUserSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnUserSelectionChanged (
  structured[ProductInStockingPointInPeriod] selection
) id:Response_MatrixEditorProductPlanning_679_OnUserSelectionChanged
{
  #keys: '[412960.0.220270402]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMatrixEditor_OnUserSelectionChanged'
  QuillAction
  {
    Body:
    [*
      //Assign selection to data holder
      DataHolderSelectedPISPIPsInProductPlanningMatrix.Data( selection.Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderClear_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/ButtonOrderLockHeaderClear
Response OnClick () id:Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderClear_OnClick
{
  #keys: '[412960.0.223264347]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      EditFieldOrderLockHeader.Text( "" );
      DateSelectorOrderLockHeaderCustomerOrder.Date( Date::Construct(2023,1,1) );
      DateSelectorOrderLockHeaderPlanDeliver.Date( Date::Construct(2023,1,1) );
      RadioButtonGroupOrderLockHeader.BoundValue( "all" );
      DataExtractorOrderLock.FixedFilter( "true" );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeader_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/ButtonOrderLockHeader
Response OnClick () id:Response_PanelOrderLockHeader_545_ButtonOrderLockHeader_OnClick
{
  #keys: '[412960.0.221841965]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      thisfilter := "( object.OrderID().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.ProductID().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.UnitOfMeasureName().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.StockingPointID().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.CustomerName().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.SalesSegmentName().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " ) )" ;
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "OrderID()", 0 ) >= 0 ){
          if( newfilter = "" ){
            newfilter := thisfilter;
            }else{
              newfilter := newfilter + " and " + thisfilter;
              }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( newfilter = "" ){
          newfilter := thisfilter;
          }else{
            newfilter := newfilter + " and " + thisfilter;
            }
        }
      info( newfilter );
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderCustomerOrder_O.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/DateSelectorOrderLockHeaderCustomerOrder
Response OnChanged () id:Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderCustomerOrder_OnChanged
{
  #keys: '[412960.0.221842202]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "EndDate()", 0 ) >= 0 ){
          if( newfilter = "" ){
            newfilter := "( object.EndDate() = " + this.Date().AsQUILL() + " )";
            }else{
              newfilter := newfilter + " and " + "( object.EndDate() = " + this.Date().AsQUILL() + " )";
              }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( newfilter = "" ){
          newfilter := "( object.EndDate() = " + this.Date().AsQUILL() + " )";
          }else{
            newfilter := newfilter + " and " + "( object.EndDate() = " + this.Date().AsQUILL() + " )";
            }
        }
      info( newfilter );
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderPlanDeliver_OnC.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/DateSelectorOrderLockHeaderPlanDeliver
Response OnChanged () id:Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderPlanDeliver_OnChanged
{
  #keys: '[412960.0.221842649]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "End()", 0 ) >= 0 and filter.FindString( "EndDate()", 0 ) < 0 ){
          if( newfilter = "" ){
            newfilter := "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
            }else{
              newfilter := newfilter + " and " + "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
              }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( newfilter = "" ){
          newfilter := "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
          }else{
            newfilter := newfilter + " and " + "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
            }
        }
      info( newfilter );
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/RadioButtonGroupOrderLockHeader
Response OnChanged () id:Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged
{
  #keys: '[412960.0.221843171]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "IsFirmed()", 0 ) >= 0 ){
          if( this.BoundValue() = "locked" ){
            if( newfilter = "" ){
              newfilter := "( object.IsFirmed() = true )";
              }else{
                newfilter := newfilter + " and " + "( object.IsFirmed() = true )";
                }
            }else if( this.BoundValue() = "unlocked" ){
              if( newfilter = "" ){
                newfilter := "( object.IsFirmed() = false )";
                }else{
                  newfilter := newfilter + " and " + "( object.IsFirmed() = false )";
                  }
              }else if( this.BoundValue() = "all" ){
                newfilter := newfilter + "";
                }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( this.BoundValue() = "locked" ){
          if( newfilter = "" ){
            newfilter := "( object.IsFirmed() = true )";
            }else{
              newfilter := newfilter + " and " + "( object.IsFirmed() = true )";
              }
          }else if( this.BoundValue() = "unlocked" ){
            if( newfilter = "" ){
              newfilter := "( object.IsFirmed() = false )";
              }else{
                newfilter := newfilter + " and " + "( object.IsFirmed() = false )";
                }
            }else if( this.BoundValue() = "all" ){
              newfilter := newfilter + "";
              }
        }
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/_ROOT_Component_FormOrderLock.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormOrderLock
{
  #keys: '[412960.0.212511678]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelOrderLock
    Component DataHolderOrderLock
    {
      #keys: '[412960.0.212571799]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[CustomerOrder]*'
      Children:
      [
        Component DataExtractorOrderLock
        {
          #keys: '[412960.0.212571816]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Description: '抽取订单数据'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'SalesDemand.astype(CustomerOrder)'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
      ]
    }
    Component DataHolderOrderLockGlobal
    {
      #keys: '[412960.0.212571897]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[Scenario]*'
      Properties:
      [
        Description: '存储是否锁定的筛选条件'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Description: '订单锁定解锁界面'
    Image: 'DATA_LOCK'
    Title: '订单锁定解锁界面'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Component_ListScenario.def
@@ -1,4 +1,118 @@
Quintiq file version 2.0
Component ListScenario #extension
{
  Children:
  [
    Component DataSetLevelScenario #extension
    {
      Children:
      [
        Component listContextMenuScenarioFolder #extension
        {
          Children:
          [
            Component MenuRelaeaseNewVersion
            {
              #keys: '[412960.0.168283194]'
              BaseType: 'WebMenu'
              Properties:
              [
                DelegationID: 'ActionBarScenario_Release'
                Description: '发布新版本'
                Image: 'EDITOR_ALGORITHM'
                Taborder: 10
                Title: 'Release New Version...'
              ]
            }
            Component MenuCopyScenario #extension
            {
            }
            Component MenuSaveNewVersion
            {
              #keys: '[412960.0.172960163]'
              BaseType: 'WebMenu'
              Properties:
              [
                DelegationID: 'ActionBarScenario_Save'
                Description: '发布新版本'
                Image: 'DATA_DISK'
                Taborder: 11
                Title: 'Save New Version...'
              ]
            }
            Component MenuSeparator2 #extension
            {
              Properties:
              [
                Taborder: 12
              ]
            }
            Component MenuSeparator3 #extension
            {
              Properties:
              [
                Taborder: 14
              ]
            }
            Component MenuSelectScenario #extension
            {
              Properties:
              [
                Taborder: 13
              ]
            }
            Component MenuEditAuthorization #extension
            {
              Properties:
              [
                Taborder: 15
              ]
            }
            Component MenuSeparator4 #extension
            {
              Properties:
              [
                Taborder: 16
              ]
            }
            Component MenuLoadScenario #extension
            {
              Properties:
              [
                Taborder: 17
              ]
            }
            Component MenuUnloadScenario #extension
            {
              Properties:
              [
                Taborder: 18
              ]
            }
            Component MenuSeparator5 #extension
            {
              Properties:
              [
                Taborder: 19
              ]
            }
            Component MenuAdministration #extension
            {
              Properties:
              [
                Taborder: 20
              ]
            }
            Component MenuRestoreItem #extension
            {
              Properties:
              [
                Taborder: 21
              ]
            }
          ]
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Response_ListScenario_MenuCopyScenario_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: ListScenario
Response OnClick (
  ScenarioMP selection
) id:Response_ListScenario_MenuCopyScenario_OnClick #extension
{
  Precondition:
  [*
    feedback := ApplicationMacroPlanner.HasValidDataset( selection );
    return feedback = '' and selection.CanCopy( feedback );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Response_TIANMA_JITUAN_ListScenario_MenuRelaeaseNewVersion_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
Quintiq file version 2.0
#parent: ListScenario
Response OnClick (
  ScenarioMP selection
) id:Response_ListScenario_MenuRelaeaseNewVersion_OnClick
{
  #keys: '[412960.0.170112594]'
  CanBindMultiple: false
  DefinitionID => /ListScenario/Responsedef_ListScenario_WebMenu_OnClick
  Initiator: 'MenuRelaeaseNewVersion'
  Precondition:
  [*
    feedback := ApplicationMacroPlanner.HasValidDataset( selection );
    return feedback = '' and selection.CanCopy( feedback );
  *]
  QuillAction
  {
    Body:
    [*
      // Copy scenario
      owner := GlobalOTDTable;
      macroplan := MacroPlan;
      testbusinesstype := "集团";
      VersionControl::ReleaseNewVersion( owner, testbusinesstype );
      GlobalOTDTable::GetOutputVersionData( owner, macroplan, testbusinesstype );
      selection.SetReleased();
      versionname := VersionControl::GetVersionInfo( owner, testbusinesstype ).Element( 3 );
      // Get the active scenario
      //data := selection;
      newscenario := null( Scenario );
      strategy := null( Strategy );
      data := ScenarioManager.ScenarioNode( relshadow,
                                                ScenarioMP,
                                                Parent := selection,
                                                Name := versionname,
                                                SelectedStrategy := selection.SelectedStrategy(),
                                                State := selection.State() );
      scenario := data.Parent().astype( ScenarioMP );
      strategy := data.SelectedStrategy();
      newscenario:= scenario.Copy( data.Parent(), versionname, "",
                                   data.Comment(), data.State() );
      newscenario.SelectedStrategy( relset, strategy );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScenarioManager/Response_TIANMA_JITUAN_ListScenario_MenuSaveNewVersion_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
Quintiq file version 2.0
#parent: ListScenario
Response OnClick (
  ScenarioMP selection
) id:Response_ListScenario_MenuSaveNewVersion_OnClick
{
  #keys: '[412960.0.171680443]'
  CanBindMultiple: false
  DefinitionID => /ListScenario/Responsedef_ListScenario_WebMenu_OnClick
  Initiator: 'MenuSaveNewVersion'
  Precondition:
  [*
    feedback := ApplicationMacroPlanner.HasValidDataset( selection );
    return feedback = '' and selection.CanCopy( feedback );
  *]
  QuillAction
  {
    Body:
    [*
      // Copy scenario
      owner := GlobalOTDTable;
      macroplan := MacroPlan;
      testbusinesstype := "集团";
      VersionControl::CopyVersion( owner, testbusinesstype );
      versionname := VersionControl::GetVersionInfo( owner, testbusinesstype ).Element( 3 );
      // Copy scenario
      newscenario := null( Scenario );
      strategy := null( Strategy );
      data := ScenarioManager.ScenarioNode( relshadow,
                                                ScenarioMP,
                                                Parent := selection,
                                                Name := versionname,
                                                SelectedStrategy := selection.SelectedStrategy(),
                                                State := selection.State() );
      scenario := data.Parent().astype( ScenarioMP );
      strategy := data.SelectedStrategy();
      newscenario:= scenario.Copy( data.Parent(), versionname, "",
                                   data.Comment(), data.State() );
      newscenario.SelectedStrategy( relset, strategy );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
Component ListVersionOfSOP
{
  #keys: '[412960.0.134950322]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorVersionOfSOP642
    {
      #keys: '[412960.0.134950323]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[VersionStatus]'
        Source: 'DataHolderVersionOfSOP'
        Taborder: 0
        Transformation: 'Elements'
      ]
    }
    #child: listActionBarPageVersionOfSOP
    Component DataSetLevelVersionOfSOP
    {
      #keys: '[412960.0.134950328]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuVersionOfSOP
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SortNumber","title":"SortNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SortNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessName","title":"BusinessName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastVersionName","title":"LastVersionName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastVersionName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastReleaseTime","title":"LastReleaseTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastReleaseTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastUser","title":"LastUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}}]'
        ContextMenu: 'listContextMenuVersionOfSOP'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_ListVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
Component ListVersionOfSOPDetails
{
  #keys: '[412960.0.142180298]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorVersionOfSOPDetails
    {
      #keys: '[412960.0.142180299]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[VersionStatusDetail]'
        Source: 'DataHolderVersionOfSOPDetails'
        Taborder: 0
        Transformation: 'Elements'
      ]
    }
    #child: listActionBarPageVersionOfSOPDetails
    Component DataSetLevelVersionOfSOPDetails
    {
      #keys: '[412960.0.142180304]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuVersionOfSOPDetails
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SortNumber","title":"SortNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SortNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SingleVersionName","title":"SingleVersionName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SingleVersionName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CreateTime","title":"CreateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CreateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReleaseTime","title":"ReleaseTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReleaseTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"User","title":"User","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"User"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VersionID","title":"VersionID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VersionID"}}]'
        ContextMenu: 'listContextMenuVersionOfSOPDetails'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelVersionOfSOP
{
  #keys: '[412960.0.134980204]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListVersionOfSOP
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelVersionOfSOPDetails
{
  #keys: '[412960.0.140720490]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListVersionOfSOPDetails
  ]
  Properties:
  [
    Description: '事业部发布状态详情panel'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
Quintiq file version 2.0
Component PanelVersionOfSOPHeader
{
  #keys: '[412960.0.137940569]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonVersionOfSOPHeaderFresh
    {
      #keys: '[412960.0.138000879]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '用于刷新各事业部当前版本发布状态的按钮'
        Label: '刷新'
        Taborder: 1
      ]
    }
    Component ButtonVersionOfSOPHeaderCopy
    {
      #keys: '[412960.0.138000890]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '用于复制选中的版本全量版本号的按钮'
        Label: '全量版本号复制'
        Taborder: 2
      ]
    }
    Component ButtonVersionOfSOPHeaderRelease
    {
      #keys: '[412960.0.142110396]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '发布一个新版本'
        Label: '测试用版本发布'
        Taborder: 3
        Visible: false
      ]
    }
    Component LabelVersionOfSOPHeader
    {
      #keys: '[412960.0.138000861]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: '版本号展示处'
        FixedSize: false
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Description: '用于放置表头信息及按钮的panel'
    FixedSize: true
    Orientation: 'horizontal'
    Style: 'header'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageVersionOfSOP
{
  #keys: '[412960.0.134950325]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listActionBarPageVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageVersionOfSOPDetails
{
  #keys: '[412960.0.142180301]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuVersionOfSOP
{
  #keys: '[412960.0.134950330]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_listContextMenuVersionOfSOPDetails.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuVersionOfSOPDetails
{
  #keys: '[412960.0.142180306]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderCopy_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: PanelVersionOfSOPHeader/ButtonVersionOfSOPHeaderCopy
Response OnClick () id:Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderCopy_OnClick
{
  #keys: '[412960.0.149330244]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      owner := GlobalOTDTable;
      testbusinesstype := "集团";
      rootversionid := VersionControl::GetVersionInfo( owner, testbusinesstype ).Element( 2 );
      dlg := construct( DialogVersionIDCopy );
      dlg.lblContent().Text( rootversionid );
      dlg.JustShow();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderFresh_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: PanelVersionOfSOPHeader/ButtonVersionOfSOPHeaderFresh
Response OnClick () id:Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderFresh_OnClick
{
  #keys: '[412960.0.133611384]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      owner := GlobalOTDTable;
      testbusinesstype := "集团";
      //GlobalOTDTable::GetVersionData( owner, testbusinesstype );
      rootversionid := VersionControl::GetVersionInfo( owner, testbusinesstype ).Element( 0 );
      DataExtractorVersionOfSOPDetails.FixedFilter( "object.VersionID().FindString( " + rootversionid.AsQUILL() + ", 0 ) = 0" );
      rootversionname := VersionControl::GetVersionInfo( owner, testbusinesstype ).Element( 1 );
      LabelVersionOfSOPHeader.Text( rootversionname );
      VersionStatus::GetBusinessTypeStatus( owner, rootversionid );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderRelease_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: PanelVersionOfSOPHeader/ButtonVersionOfSOPHeaderRelease
Response OnClick () id:Response_PanelVersionOfSOPHeader_ButtonVersionOfSOPHeaderRelease_OnClick
{
  #keys: '[412960.0.142110414]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      owner := GlobalOTDTable;
      macroplan := MacroPlan;
      testbusinesstype := "集团";
      VersionControl::ReleaseNewVersion( owner, testbusinesstype );
      //GlobalOTDTable::GetOutputVersionData( owner, macroplan, testbusinesstype );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/_ROOT_Component_FormVersionOfSOP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormVersionOfSOP
{
  #keys: '[412960.0.135200328]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelVersionOfSOP
    Component DataHolderVersionOfSOP
    {
      #keys: '[412960.0.134980222]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[VersionStatus]*'
      Children:
      [
        Component DataExtractorVersionOfSOP
        {
          #keys: '[412960.0.134980234]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'VersionStatus'
          ]
        }
      ]
      Properties:
      [
        Taborder: 3
      ]
    }
    #child: PanelVersionOfSOPHeader
    #child: PanelVersionOfSOPDetails
    Component DataHolderVersionOfSOPDetails
    {
      #keys: '[412960.0.140750496]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[VersionStatusDetail]*'
      Children:
      [
        Component DataExtractorVersionOfSOPDetails453
        {
          #keys: '[412960.0.142212532]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'VersionStatus'
            ExtractionMode: 'Selected'
            Source: 'ListVersionOfSOP'
            Taborder: 0
            Transformation: 'VersionStatusDetail'
          ]
        }
      ]
      Properties:
      [
        Description: '事业部对应详情数据'
        Taborder: 4
      ]
    }
    Component DataHolderVersionOfSOPCopy
    {
      #keys: '[412960.0.166861218]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[ScenarioMP]*'
      Properties:
      [
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
    Description: 'SOP版本数据展示界面'
    Image: 'WINDOW_TIME'
    Title: 'SOP各事业部数据同步状态'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/OrderLock.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_legacy_1
      {
        title: 'Scenario manager'
        shown: true
        componentID: 'FormScenarioManager'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormScenarioManager_ListScenario
          {
          }
          FormScenarioManager_DataSetLevelScenario
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 90
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 277
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 2
              subtotals: ''
              width: 106
            }
            column_ChangedOn
            {
              columnId: 'ChangedOn'
              dataPath: 'ChangedOn'
              dataType: 'datetime'
              title: 'Changed on'
              index: 3
              subtotals: ''
              width: 99
            }
            column_StorageMode
            {
              columnId: 'StorageMode'
              dataPath: 'StorageMode'
              dataType: 'string'
              title: 'StorageMode'
              index: 4
              subtotals: ''
              width: 40
            }
          }
        }
      }
      form_legacy_2
      {
        title: 'Assumptions'
        shown: true
        componentID: 'FormAssumptions'
        layout
        {
          mode: 'open'
          rowPosition: 9
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormAssumptions_ListAssumptions
          {
          }
          FormAssumptions_DataSetLevelAssumptions
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              title: '类别'
              index: 1
              subtotals: ''
              width: 108
            }
            column_Importance
            {
              columnId: 'Importance'
              dataPath: 'Importance'
              dataType: 'string'
              title: '重要性'
              index: 2
              subtotals: ''
              width: 110
            }
            column_Title
            {
              columnId: 'Title'
              dataPath: 'Title'
              dataType: 'string'
              title: '标题'
              index: 3
              subtotals: ''
              width: 150
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 4
              subtotals: ''
              width: 150
            }
            column_CreatedOn
            {
              columnId: 'CreatedOn'
              dataPath: 'CreatedOn'
              dataType: 'datetime'
              title: 'Created on'
              index: 5
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormScenariosKPIsComparison
      {
        title: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        shown: true
        componentID: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 16
          columnPosition: 6
          columnSpan: 7
        }
        components
        {
          FormScenariosKPIsComparison_MatrixEditorFinancialKPIs
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison.MatrixEditorFinancialKPIs'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_DisplayValue
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DisplayValue'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: ''
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'KPISetting.DisplayIndex'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: 'applicationDevelopmentActionBarPageDef'
    group: ''
    index: 2
    image: 'DOCUMENT_LOCK'
    description: ''
  }
  formatversion: 2
  id: 'OrderLock'
  name: 'OrderLock'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_legacy_1
      {
        title: 'Scenario manager'
        shown: true
        componentID: 'FormScenarioManager'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormScenarioManager_ListScenario
          {
          }
          FormScenarioManager_DataSetLevelScenario
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 90
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 197
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 2
              subtotals: ''
              width: 91
            }
            column_ChangedOn
            {
              columnId: 'ChangedOn'
              dataPath: 'ChangedOn'
              dataType: 'datetime'
              title: 'Changed on'
              index: 3
              subtotals: ''
              width: 99
            }
            column_StorageMode
            {
              columnId: 'StorageMode'
              dataPath: 'StorageMode'
              dataType: 'string'
              title: 'StorageMode'
              index: 4
              subtotals: ''
              width: 40
            }
          }
        }
      }
      form_legacy_2
      {
        title: 'Assumptions'
        shown: true
        componentID: 'FormAssumptions'
        layout
        {
          mode: 'open'
          rowPosition: 9
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormAssumptions_ListAssumptions
          {
          }
          FormAssumptions_DataSetLevelAssumptions
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              title: 'Category'
              index: 1
              subtotals: ''
              width: 108
            }
            column_Importance
            {
              columnId: 'Importance'
              dataPath: 'Importance'
              dataType: 'string'
              title: 'Importance'
              index: 2
              subtotals: ''
              width: 110
            }
            column_Title
            {
              columnId: 'Title'
              dataPath: 'Title'
              dataType: 'string'
              title: 'Title'
              index: 3
              subtotals: ''
              width: 150
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 4
              subtotals: ''
              width: 150
            }
            column_CreatedOn
            {
              columnId: 'CreatedOn'
              dataPath: 'CreatedOn'
              dataType: 'datetime'
              title: 'Created on'
              index: 5
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormScenariosKPIsComparison
      {
        title: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        shown: true
        componentID: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 16
          columnPosition: 6
          columnSpan: 7
        }
        components
        {
          FormScenariosKPIsComparison_MatrixEditorFinancialKPIs
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison.MatrixEditorFinancialKPIs'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_DisplayValue
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DisplayValue'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: ''
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'KPISetting.DisplayIndex'"
                  }
                }
              }
            }
          }
        }
      }
      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: 'applicationDevelopmentActionBarPageDef'
    group: ''
    index: 1
    image: 'WINDOW_TIME'
    description: ''
  }
  formatversion: 2
  id: 'SOP_Versions'
  name: 'SOP Versions'
  isglobal: false
  isroot: true
}
_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties
@@ -204,11 +204,11 @@
domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.parameters=
domainmodel.ediremotedatasourcedefinition.remotestorage.inputunitsfrommodel.password=
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle=template:domainmodel.ediremotedatasourcedefinition
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.connection=
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.connection=dbodbc1
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxcolumnnamelength=0
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.maxtablenamelength=0
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.parameters=
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.password=
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.parameters=/datasource=orclpdb /owner=TIANMA /chardatatypeforstring /characterencoding=UTF-8 /appdatatypeforstring=wchar
domainmodel.ediremotedatasourcedefinition.remotestorage.localoracle.password=1 E9FE769DABE91891284EBBA6CEA8F41B 479d6f99-cffb-41e6-94f1-d35bdf20703c
domainmodel.ediremotedatasourcedefinition.remotestorage.oracle=template:domainmodel.ediremotedatasourcedefinition
domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.connection=dbodbc1
domainmodel.ediremotedatasourcedefinition.remotestorage.oracle.maxcolumnnamelength=0