From 43881350a19a4d1f437963875f04f9e0ab42ceb7 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期二, 25 六月 2024 16:11:14 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
---
_Main/BL/Type_TransferPlanRow/_ROOT_Type_TransferPlanRow.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def | 18
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnOk_OnClick.def | 16
_Main/BL/Relations/Relation_LocalColumn_LocalTable_LocalTable_LocalColumn.qbl | 23
_Main/BL/Type_TransferPlanRow/Attribute_Name.qbl | 7
_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersion.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bExport_OnClick.def | 18
_Main/BL/Type_LocalColumn/Attribute_IsAttrbuteColumn.qbl | 7
_Main/BL/Type_ExportXMLData/_ROOT_Type_ExportXMLData.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def | 27
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnIndex.qbl | 7
_Main/BL/Relations/Relation_LocalTable_RecycleBin_RecycleBin_LocalTable.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged.def | 18
_Main/BL/Type_ShiftPlan/Method_CalculateEventType.qbl | 39
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl | 28
_Main/BL/Relations/Relation_TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow.qbl | 23
_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersionValue.qbl | 7
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl | 36
_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw | 16
_Main/BL/Type_LocalRow/Attribute_Name.qbl | 7
_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_General.qbl | 23
_Main/BL/Relations/Relation_TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn.qbl | 23
_Main/BL/Relations/Relation_ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan.qbl | 23
LibMacroPlanner/BL/Type_UnitPeriodTime/Method_OnCreate.qbl | 10
_Main/BL/Type_LocalCell_DemandComparison/Attribute_Gap.qbl | 7
_Main/BL/Type_LocalTable/_ROOT_Type_LocalTable.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pHeader.def | 46
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def | 18
LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl | 1
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlActions.def | 40
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixEditorActionBarPage493.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged#168.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhComparisonData_OnDataChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bDownload_OnClick.def | 30
_Main/BL/Type_LocalColumn/Attribute_Index.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_pOperation.def | 63 +
_Main/BL/Type_ExportXMLData/Attribute_XML.qbl | 7
_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersionValue.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_Form568/_ROOT_Component_FormShihtPlan#568.def | 17
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def | 9
_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Response_pHeader_bImport_OnClick.def | 2
_Main/BL/Type_ShiftPlan/Method_CalculateRemark#503.qbl | 30
_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlan.qbl | 23
_Main/BL/Type_LocalRow/Attribute_CustomName.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def | 34
_Main/BL/Type_ShiftPlan/Attribute_EventType.qbl | 7
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKG.qbl | 7
_Main/BL/Type_ShiftPlan/_ROOT_Type_ShiftPlan.qbl | 9
_Main/Sys/Repr/Global/DateTime.qrp | 2
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnDate.qbl | 8
_Main/UI/MacroPlannerWebApp/Views/TransferPlan.vw | 146 ++
_Main/BL/Type_ExportXMLManager/Method_Export.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnCancel_OnClick.def | 15
_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl | 20
_Main/BL/Type_Test/StaticMethod_Test.qbl | 35
_Main/BL/Type_LocalRow/Attribute_Index.qbl | 7
_Main/BL/Type_ShiftPlan/Method_SetRemark.qbl | 12
_Main/BL/Dataset_RecycleBin/_ROOT_Dataset_RecycleBin.qbl | 10
_Main/BL/Type_LocalRow/Function_CalcName.qbl | 13
_Main/BL/Type_TransferPlanRow/TypeIndex_TransferPlanRowTypeIndex.qbl | 20
_Main/BL/Type_ShiftPlan/Function_CalcEventType.qbl | 12
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioCo.def | 17
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl | 56 +
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityPL.qbl | 7
_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl | 116 ++
_Main/BL/Type_TransferPlanCell/Attribute_Value.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def | 81 +
_Main/BL/Type_TransferPlanCell/_ROOT_Type_TransferPlanCell.qbl | 9
_Main/BL/Type_TransferPlanRow/Attribute_SourceStockpoingPointID.qbl | 8
_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bExport_OnClick.def | 18
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityAGW.qbl | 7
_Main/BL/Type_TransferPlanColumn/Attribute_ColumnName.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def | 4
_Main/BL/Type_RecycleBin/_ROOT_Type_RecycleBin.qbl | 9
_Main/BL/Type_ArchivePR/StaticMethod_GenerateColumnIndex.qbl | 39
_Main/BL/Type_LocalTable/Method_GetRowIndexCache.qbl | 12
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def | 64 +
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def | 97 +
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def | 8
_Main/Sys/Repr/Global/Date.qrp | 2
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl | 18
_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersion.qbl | 7
_Main/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixEditorActionBarPageDemandComparison.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def | 12
_Main/BL/Type_TransferPlanColumn/_ROOT_Type_TransferPlanColumn.qbl | 9
_Main/BL/Type_ShiftPlan/Attribute_Color.qbl | 7
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKM.qbl | 7
_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl | 71 +
_Main/Sys/Repr/Global/ShiftPlan.qrp | 45
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonCompare_OnClick.def | 17
_Main/BL/Relations/Relation_ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager.qbl | 23
_Main/BL/Type_ExportXMLManager/_ROOT_Type_ExportXMLManager.qbl | 9
_Main/BL/Type_TransferPlanColumn/TypeIndex_TransferPlanColumnTypeIndex.qbl | 12
_Main/BL/Relations/Relation_LocalRow_LocalCell_LocalCell_LocalRow.qbl | 23
_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pOperation#715.def | 63 +
_Main/BL/Type_TransferPlanRow/Function_CalcName.qbl | 13
_Main/BL/Type_Period_MP/_ROOT_Type_Period_MP.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/_ROOT_Component_DialogUpperLimitOfTransferCapacity.def | 21
_Main/BL/Type_ShiftPlan/StaticMethod_GetShiftPlanColumnXML.qbl | 50
_Main/BL/Type_LocalRow/_ROOT_Type_LocalRow.qbl | 9
_Main/BL/Relations/Relation_LocalColumn_LocalCell_LocalCell_LocalColumn.qbl | 23
_Main/BL/Type_LocalTable/Attribute_Name.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/_ROOT_Component_FormTransferPlan.def | 18
_Main/BL/Type_ShiftPlan/Attribute_Outcome.qbl | 7
_Main/BL/Type_LocalColumn/_ROOT_Type_LocalColumn.qbl | 9
_Main/BL/Type_ShiftPlan/StaticMethod_GetAttributeNames.qbl | 15
_Main/BL/Type_ShiftPlan/Method_GetAttributeByName.qbl | 19
_Main/BL/Type_ExportXMLManager/Attribute_FinalXML.qbl | 7
_Main/BL/Type_TransferPlanRow/Attribute_TargetStockpoingPointID.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Response_pHeader_393_bImport_OnClick.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixeditorContextMenuDemandComparison.def | 10
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bDownload_OnClick.def | 30
_Main/BL/Type_ShiftPlan/Function_CalcColor.qbl | 27
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl | 31
_Main/BL/Type_ShiftPlan/Function_CalcRemark.qbl | 13
_Main/BL/Type_LocalCell_DemandComparison/Function_CalcGap.qbl | 13
_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityKW.qbl | 7
_Main/BL/Type_LocalCell/_ROOT_Type_LocalCell.qbl | 9
_Main/BL/Type_ShiftPlan/Attribute_Remark.qbl | 7
_Main/BL/Type_ExportXMLManager/Attribute_Name.qbl | 7
_Main/BL/Type_ArchivePR/StaticMethod_FillCells.qbl | 30
_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl | 6
_Main/BL/Type_LocalCell_DemandComparison/Method_GetAttributeByName.qbl | 44
_Main/BL/Type_ExportXMLData/Attribute_Priority.qbl | 7
_Main/BL/Type_RecycleBin/StaticMethod_OnLogin.qbl | 28
_Main/BL/Type_LocalTable/Attribute_RowIndexCache.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def | 2
_Main/BL/Type_LocalColumn/Attribute_Name.qbl | 7
_Main/BL/Type_TransferPlanRow/Attribute_RowNr.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Method_OnCreated.def | 44
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def | 12
_Main/BL/Relations/Relation_LocalRow_LocalTable_LocalTable_LocalRow.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bGenerateReport_OnClick.def | 22
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews#859.def | 18
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixeditorContextMenuTime#1.def | 33
_Main/BL/Type_ShiftPlan/Function_CalcOutcome.qbl | 14
_Main/BL/Type_TransferPlanRow/Attribute_ProductID.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixeditorContextMenu367.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pContent.def | 14
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_MatrixEditorTimeCapacities#656.def | 119 ++
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_MatrixEditorTimeCapacities_656_OnUpdateValue#317.def | 20
_Main/UI/MacroPlannerWebApp/Component_Form989/Response_pHeader_bImport_OnClick.def | 2
/dev/null | 18
_Main/BL/Type_ShiftPlan/Attribute_CustomRemark.qbl | 7
_Main/BL/Type_TransferPlanColumn/Function_CalcColumnName.qbl | 13
_Main/BL/Type_ShiftPlan/StaticMethod_AsyncExport.qbl | 31
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw | 16
_Main/BL/Type_ArchivePR/StaticMethod_FillRows.qbl | 36
_Main/BL/Type_ShiftPlan/StaticMethod_Create.qbl | 12
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_PanelMatrix#675.def | 15
_Main/BL/Relations/Relation_ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData.qbl | 23
_Main/BL/Type_UnitPeriodTime/Method_OnCreate.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixEditorActionBarPageTime#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def | 98 +
_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl | 9
161 files changed, 3,277 insertions(+), 31 deletions(-)
diff --git a/LibMacroPlanner/BL/Type_UnitPeriodTime/Method_OnCreate.qbl b/LibMacroPlanner/BL/Type_UnitPeriodTime/Method_OnCreate.qbl
new file mode 100644
index 0000000..37b6a24
--- /dev/null
+++ b/LibMacroPlanner/BL/Type_UnitPeriodTime/Method_OnCreate.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnCreate
+{
+ TextBody:
+ [*
+ // rislai Jun-18-2024 (created)
+ *]
+ InterfaceProperties { Accessibility: 'Module' }
+}
diff --git a/LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl b/LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl
index 388e279..77cf5e1 100644
--- a/LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl
+++ b/LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl
@@ -5,6 +5,7 @@
{
#keys: '2[110880.4.1188154382][110880.4.1188154375]'
Description: 'MP'
+ OnCreate: 'this.OnCreate();'
Parent: UnitPeriodTimeBase
StructuredName: 'UnitPeriodTimes'
}
diff --git a/_Main/BL/Dataset_RecycleBin/_ROOT_Dataset_RecycleBin.qbl b/_Main/BL/Dataset_RecycleBin/_ROOT_Dataset_RecycleBin.qbl
new file mode 100644
index 0000000..f555955
--- /dev/null
+++ b/_Main/BL/Dataset_RecycleBin/_ROOT_Dataset_RecycleBin.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Dataset RecycleBin
+{
+ #keys: '2[412672.0.1084213478][412672.0.1084213477]'
+ DefaultMDSName: 'RecycleBin'
+ InstanceType: RecycleBin
+ WithStorage: false
+}
diff --git a/_Main/BL/Relations/Relation_ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData.qbl b/_Main/BL/Relations/Relation_ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData.qbl
new file mode 100644
index 0000000..f14bd82
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ExportXMLData_ExportXMLManager_ExportXMLManager_ExportXMLData
+{
+ #keys: '1[412672.0.1084249088]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide ExportXMLManager
+ {
+ #keys: '3[412672.0.1084249090][412672.0.1084249089][412672.0.1084249091]'
+ Cardinality: '0to1'
+ ObjectDefinition: ExportXMLData
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ExportXMLData
+ {
+ #keys: '3[412672.0.1084249093][412672.0.1084249092][412672.0.1084249094]'
+ Cardinality: '1toN'
+ ObjectDefinition: ExportXMLManager
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager.qbl b/_Main/BL/Relations/Relation_ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager.qbl
new file mode 100644
index 0000000..673d605
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager
+{
+ #keys: '1[412672.0.1084249075]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide RecycleBin
+ {
+ #keys: '3[412672.0.1084249077][412672.0.1084249076][412672.0.1084249078]'
+ Cardinality: '0to1'
+ ObjectDefinition: ExportXMLManager
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ExportXMLManager
+ {
+ #keys: '3[412672.0.1084249080][412672.0.1084249079][412672.0.1084249081]'
+ Cardinality: '1toN'
+ ObjectDefinition: RecycleBin
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_Archive_Archive_GeneralExcelI.qbl b/_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_Archive_Archive_GeneralExcelI.qbl
deleted file mode 100644
index 7f5ef9c..0000000
--- a/_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_Archive_Archive_GeneralExcelI.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation GeneralExcelImportAndExportDataSource_Archive_Archive_GeneralExcelImportAndExportDataSource
-{
- #keys: '1[413988.0.1161870117]'
- DefaultRelationStrategy
- {
- }
- RelationSide.LeftSide Archive
- {
- #keys: '3[413988.0.1161870119][413988.0.1161870118][413988.0.1161870120]'
- Cardinality: '0to1'
- ObjectDefinition: GeneralExcelImportAndExportDataSource
- OwningSide: 'Reference'
- }
- RelationSide.RightSide GeneralExcelImportAndExportDataSource
- {
- #keys: '3[413988.0.1161870122][413988.0.1161870121][413988.0.1161870123]'
- Cardinality: '1toN'
- ObjectDefinition: Archive
- OwningSide: 'Owned'
- }
-}
diff --git a/_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_General.qbl b/_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_General.qbl
new file mode 100644
index 0000000..d09c664
--- /dev/null
+++ b/_Main/BL/Relations/Relation_GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_General.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation GeneralExcelImportAndExportDataSource_RecycleBin_RecycleBin_GeneralExcelImportAndExportDataSource
+{
+ #keys: '1[412672.0.1087854694]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide RecycleBin
+ {
+ #keys: '3[412672.0.1087854696][412672.0.1087854695][412672.0.1087854697]'
+ Cardinality: '0to1'
+ ObjectDefinition: GeneralExcelImportAndExportDataSource
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide GeneralExcelImportAndExportDataSource
+ {
+ #keys: '3[412672.0.1087854699][412672.0.1087854698][412672.0.1087854700]'
+ Cardinality: '1toN'
+ ObjectDefinition: RecycleBin
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_LocalColumn_LocalCell_LocalCell_LocalColumn.qbl b/_Main/BL/Relations/Relation_LocalColumn_LocalCell_LocalCell_LocalColumn.qbl
new file mode 100644
index 0000000..068b995
--- /dev/null
+++ b/_Main/BL/Relations/Relation_LocalColumn_LocalCell_LocalCell_LocalColumn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation LocalColumn_LocalCell_LocalCell_LocalColumn
+{
+ #keys: '1[412672.0.1084249675]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide LocalCell
+ {
+ #keys: '3[412672.0.1084249677][412672.0.1084249676][412672.0.1084249678]'
+ Cardinality: '1toN'
+ ObjectDefinition: LocalColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide LocalColumn
+ {
+ #keys: '3[412672.0.1084249680][412672.0.1084249679][412672.0.1084249681]'
+ Cardinality: '0to1'
+ ObjectDefinition: LocalCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_LocalColumn_LocalTable_LocalTable_LocalColumn.qbl b/_Main/BL/Relations/Relation_LocalColumn_LocalTable_LocalTable_LocalColumn.qbl
new file mode 100644
index 0000000..12dd6b0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_LocalColumn_LocalTable_LocalTable_LocalColumn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation LocalColumn_LocalTable_LocalTable_LocalColumn
+{
+ #keys: '1[412672.0.1084249662]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide LocalTable
+ {
+ #keys: '3[412672.0.1084249664][412672.0.1084249663][412672.0.1084249665]'
+ Cardinality: '0to1'
+ ObjectDefinition: LocalColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide LocalColumn
+ {
+ #keys: '3[412672.0.1084249667][412672.0.1084249666][412672.0.1084249668]'
+ Cardinality: '1toN'
+ ObjectDefinition: LocalTable
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_LocalRow_LocalCell_LocalCell_LocalRow.qbl b/_Main/BL/Relations/Relation_LocalRow_LocalCell_LocalCell_LocalRow.qbl
new file mode 100644
index 0000000..968144e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_LocalRow_LocalCell_LocalCell_LocalRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation LocalRow_LocalCell_LocalCell_LocalRow
+{
+ #keys: '1[412672.0.1084249636]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide LocalCell
+ {
+ #keys: '3[412672.0.1084249638][412672.0.1084249637][412672.0.1084249639]'
+ Cardinality: '1toN'
+ ObjectDefinition: LocalRow
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide LocalRow
+ {
+ #keys: '3[412672.0.1084249641][412672.0.1084249640][412672.0.1084249642]'
+ Cardinality: '0to1'
+ ObjectDefinition: LocalCell
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_LocalRow_LocalTable_LocalTable_LocalRow.qbl b/_Main/BL/Relations/Relation_LocalRow_LocalTable_LocalTable_LocalRow.qbl
new file mode 100644
index 0000000..ca48e34
--- /dev/null
+++ b/_Main/BL/Relations/Relation_LocalRow_LocalTable_LocalTable_LocalRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation LocalRow_LocalTable_LocalTable_LocalRow
+{
+ #keys: '1[412672.0.1084249649]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide LocalTable
+ {
+ #keys: '3[412672.0.1084249651][412672.0.1084249650][412672.0.1084249652]'
+ Cardinality: '0to1'
+ ObjectDefinition: LocalRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide LocalRow
+ {
+ #keys: '3[412672.0.1084249654][412672.0.1084249653][412672.0.1084249655]'
+ Cardinality: '1toN'
+ ObjectDefinition: LocalTable
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_LocalTable_RecycleBin_RecycleBin_LocalTable.qbl b/_Main/BL/Relations/Relation_LocalTable_RecycleBin_RecycleBin_LocalTable.qbl
new file mode 100644
index 0000000..ea3e67b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_LocalTable_RecycleBin_RecycleBin_LocalTable.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation LocalTable_RecycleBin_RecycleBin_LocalTable
+{
+ #keys: '1[412672.0.1084249623]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide RecycleBin
+ {
+ #keys: '3[412672.0.1084249625][412672.0.1084249624][412672.0.1084249626]'
+ Cardinality: '0to1'
+ ObjectDefinition: LocalTable
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide LocalTable
+ {
+ #keys: '3[412672.0.1084249628][412672.0.1084249627][412672.0.1084249629]'
+ Cardinality: '1toN'
+ ObjectDefinition: RecycleBin
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan.qbl b/_Main/BL/Relations/Relation_ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan.qbl
new file mode 100644
index 0000000..00dce9d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan
+{
+ #keys: '1[412672.0.1066680007]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide UnitPeriodTime
+ {
+ #keys: '3[412672.0.1066680009][412672.0.1066680008][412672.0.1066680010]'
+ Cardinality: '0to1'
+ ObjectDefinition: ShiftPlan
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ShiftPlan
+ {
+ #keys: '3[412672.0.1066680012][412672.0.1066680011][412672.0.1066680013]'
+ Cardinality: '0to1'
+ ObjectDefinition: UnitPeriodTime
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlan.qbl b/_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlan.qbl
new file mode 100644
index 0000000..67fa6b9
--- /dev/null
+++ b/_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlan.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation TransferPlanCell_TransferPlanColumn_TransferPlanColumn_TransferPlanCell
+{
+ #keys: '1[413988.0.1292031952]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide TransferPlanColumn
+ {
+ #keys: '3[413988.0.1292031954][413988.0.1292031953][413988.0.1292031955]'
+ Cardinality: '0to1'
+ ObjectDefinition: TransferPlanCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide TransferPlanCell
+ {
+ #keys: '3[413988.0.1292031957][413988.0.1292031956][413988.0.1292031958]'
+ Cardinality: '1toN'
+ ObjectDefinition: TransferPlanColumn
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell.qbl b/_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell.qbl
new file mode 100644
index 0000000..a49adaa
--- /dev/null
+++ b/_Main/BL/Relations/Relation_TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation TransferPlanCell_TransferPlanRow_TransferPlanRow_TransferPlanCell
+{
+ #keys: '1[413988.0.1292031965]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide TransferPlanRow
+ {
+ #keys: '3[413988.0.1292031967][413988.0.1292031966][413988.0.1292031968]'
+ Cardinality: '0to1'
+ ObjectDefinition: TransferPlanCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide TransferPlanCell
+ {
+ #keys: '3[413988.0.1292031970][413988.0.1292031969][413988.0.1292031971]'
+ Cardinality: '1toN'
+ ObjectDefinition: TransferPlanRow
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn.qbl b/_Main/BL/Relations/Relation_TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn.qbl
new file mode 100644
index 0000000..7d3b50b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation TransferPlanColumn_MacroPlan_MacroPlan_TransferPlanColumn
+{
+ #keys: '1[413988.0.1292031939]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.0.1292031941][413988.0.1292031940][413988.0.1292031942]'
+ Cardinality: '0to1'
+ ObjectDefinition: TransferPlanColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide TransferPlanColumn
+ {
+ #keys: '3[413988.0.1292031944][413988.0.1292031943][413988.0.1292031945]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow.qbl b/_Main/BL/Relations/Relation_TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow.qbl
new file mode 100644
index 0000000..047b702
--- /dev/null
+++ b/_Main/BL/Relations/Relation_TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation TransferPlanRow_MacroPlan_MacroPlan_TransferPlanRow
+{
+ #keys: '1[413988.0.1292031926]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[413988.0.1292031928][413988.0.1292031927][413988.0.1292031929]'
+ Cardinality: '0to1'
+ ObjectDefinition: TransferPlanRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide TransferPlanRow
+ {
+ #keys: '3[413988.0.1292031931][413988.0.1292031930][413988.0.1292031932]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl b/_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl
new file mode 100644
index 0000000..75469e5
--- /dev/null
+++ b/_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl
@@ -0,0 +1,116 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Compared (
+ RecycleBin recycleBin,
+ const ArchivePR baseVersion,
+ const ArchivePR compareVersion
+) as LocalTable
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ localTable := recycleBin.LocalTable( relnew,Name := baseVersion.Name() + "__" + compareVersion.Name());
+
+ baseVersionFile := OSFile::Construct();
+ compareVersionFile := OSFile::Construct();
+
+ try {
+ baseVersionFile.Open( baseVersion.FilePath(), "Read", false );
+ baseVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, baseVersionFile.ReadBinary(), baseVersion.FilePath() );
+ baseVersionDataSource.ReadStructure();
+
+ compareVersionFile.Open( compareVersion.FilePath(), "Read", false );
+ compareVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, compareVersionFile.ReadBinary(), compareVersion.FilePath() );
+ compareVersionDataSource.ReadStructure();
+
+ baseVersionTable := select( baseVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
+ compareVersionTable := select( compareVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
+
+ if( not isnull( baseVersionTable ) and not isnull( compareVersionTable )){
+
+ //鐢熸垚琛屾暟鎹�
+ rowKeys := construct( Strings );
+ baseVersionRowTree := NamedValueTree::Create();
+ baseVersionRows := construct( GeneralExcelImportAndExportDataRows ,constcontent);
+ compareVersionRowTree := NamedValueTree::Create();
+ compareVersionRows := construct( GeneralExcelImportAndExportDataRows ,constcontent);
+ ArchivePR::FillRows( baseVersionTable,rowKeys,baseVersionRowTree,baseVersionRows );
+ ArchivePR::FillRows( compareVersionTable,rowKeys,compareVersionRowTree,compareVersionRows );
+
+ // 鐢熸垚鍒楁暟鎹�
+ columnTree := NamedValueTree::Create();
+ columns := construct( LocalColumns );
+ ArchivePR::GenerateColumnIndex( baseVersionTable,localTable,columnTree,columns );
+ ArchivePR::GenerateColumnIndex( compareVersionTable,localTable,columnTree,columns );
+ columnNames := selectvalues( columns,Elements,column,true,column.Name() );
+
+ // 鐢熸垚鏁版嵁
+
+ for ( rowIndex := 0; rowIndex < rowKeys.Size(); rowIndex++ ) {
+ rowKey := rowKeys.Element( rowIndex );
+
+ baseVersionCellTree := NamedValueTree::Create();
+ baseVersionCells := construct( GeneralExcelImportAndExportDataCells ,constcontent);
+
+ compareVersionCellTree := NamedValueTree::Create();
+ compareVersionCells := construct( GeneralExcelImportAndExportDataCells ,constcontent);
+
+ ArchivePR::FillCells( rowKey,baseVersionRowTree,baseVersionRows,baseVersionCellTree,baseVersionCells );
+ ArchivePR::FillCells( rowKey,compareVersionRowTree,compareVersionRows,compareVersionCellTree,compareVersionCells );
+
+ row := localTable.LocalRow( relnew,Index := localTable.GetRowIndexCache() );
+
+ traverse( columnNames,Elements,columnName ){
+ columnHandle := columnTree.GetHandle( columnName );
+ columnIndex := columnTree.Root().Child( columnHandle ).GetValueAsNumber();
+ column := columns.Element( columnIndex );
+
+ baseVersionCell := constnull( GeneralExcelImportAndExportDataCell );
+ baseVersionCellHandle := baseVersionCellTree.GetHandle( columnName );
+ try{
+ baseVersionCellIndex := baseVersionCellTree.Root().Child( baseVersionCellHandle ).GetValueAsNumber();
+ baseVersionCell := baseVersionCells.Element( baseVersionCellIndex );
+ }onerror{}
+
+ compareVersionCell := constnull( GeneralExcelImportAndExportDataCell );
+ compareVersionCellHandle := compareVersionCellTree.GetHandle( columnName );
+ try{
+ compareVersionCellIndex := compareVersionCellTree.Root().Child( compareVersionCellHandle ).GetValueAsNumber();
+ compareVersionCell := compareVersionCells.Element( compareVersionCellIndex );
+ }onerror{}
+
+ if( columnName = "浜у湴" or columnName = "杞﹀瀷" or columnName = "鍙戝姩鏈洪浂浠跺彿" or columnName = "鍙戝姩鏈哄洓浣嶇爜" ){
+ row.LocalCell( relnew,LocalCell_DemandComparison,LocalColumn := column,
+ BaseVersionValue := ifexpr( isnull( baseVersionCell ), "绌�", baseVersionCell.Value()),
+ CompareVersionValue := ifexpr( isnull( compareVersionCell ),"绌�",compareVersionCell.Value()));
+ column.IsAttrbuteColumn( true );
+ if( columnName = "鍙戝姩鏈洪浂浠跺彿" ){
+ row.CustomName( ifexpr( isnull( baseVersionCell ), ifexpr( isnull( compareVersionCell ),"绌�",compareVersionCell.Value()), baseVersionCell.Value()) );
+ }
+ }else{
+ row.LocalCell( relnew,LocalCell_DemandComparison,LocalColumn := column,
+ BaseVersion := ifexpr( isnull( baseVersionCell ),0,[Real]baseVersionCell.Value()),
+ CompareVersion := ifexpr( isnull( compareVersionCell ), 0 ,[Real]compareVersionCell.Value() ));
+ }
+ }
+ }
+ }
+ // 鍚庣画鍒犻櫎
+ baseVersionDataSource.Delete();
+ compareVersionDataSource.Delete();
+
+ baseVersionFile.Close();
+ compareVersionFile.Close();
+ } onerror {
+ if( not isnull( baseVersionFile )){
+ baseVersionFile.Close();
+ }
+ if( not isnull( compareVersionFile )){
+ compareVersionFile.Close();
+ }
+ error( e );
+ }
+
+ return localTable;
+ *]
+}
diff --git a/_Main/BL/Type_ArchivePR/StaticMethod_FillCells.qbl b/_Main/BL/Type_ArchivePR/StaticMethod_FillCells.qbl
new file mode 100644
index 0000000..6aeded1
--- /dev/null
+++ b/_Main/BL/Type_ArchivePR/StaticMethod_FillCells.qbl
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod FillCells (
+ String rowName,
+ NamedValueTree rowTree,
+ constcontent GeneralExcelImportAndExportDataRows rows,
+ NamedValueTree cellTree,
+ constcontent GeneralExcelImportAndExportDataCells cells
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-22-2024 (created)
+ rowHandel := rowTree.GetHandle( rowName );
+ try{
+ rowIndex := rowTree.Root().Child( rowHandel ).GetValueAsNumber();
+ row := rows.Element( rowIndex );
+
+ temp_cells := selectsortedset( row,GeneralExcelImportAndExportDataCell,cell,true,cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() );
+ for( i := 0 ; i<temp_cells.Size();i++ ){
+ cell := temp_cells.Element( i );
+ tempHandle := cellTree.GetHandle( cell.GeneralExcelImportAndExportDataColumn().Name() );
+
+ cells.Add( cell );
+ cellTree.Root().AddChild( tempHandle,cells.Size() - 1 );
+
+ }
+ }onerror{}
+ *]
+}
diff --git a/_Main/BL/Type_ArchivePR/StaticMethod_FillRows.qbl b/_Main/BL/Type_ArchivePR/StaticMethod_FillRows.qbl
new file mode 100644
index 0000000..391100a
--- /dev/null
+++ b/_Main/BL/Type_ArchivePR/StaticMethod_FillRows.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod FillRows (
+ const GeneralExcelImportAndExportDataTable general,
+ Strings rowKeys,
+ NamedValueTree rowTree,
+ constcontent GeneralExcelImportAndExportDataRows rows
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-22-2024 (created)
+ rowKeyColumn1 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "浜у湴" );
+ rowKeyColumn2 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "杞﹀瀷" );
+ rowKeyColumn3 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "鍙戝姩鏈洪浂浠跺彿" );
+ rowKeyColumn4 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "鍙戝姩鏈哄洓浣嶇爜" );
+ tempRowKeyCells1 := selectset( rowKeyColumn1,GeneralExcelImportAndExportDataCell,cell,true );
+ tempRowKeyCells2 := selectset( rowKeyColumn2,GeneralExcelImportAndExportDataCell,cell,true );
+ tempRowKeyCells3 := selectset( rowKeyColumn3,GeneralExcelImportAndExportDataCell,cell,true );
+ tempRowKeyCells4 := selectset( rowKeyColumn4,GeneralExcelImportAndExportDataCell,cell,true );
+
+ for( i := 0; i< tempRowKeyCells1.Size(); i++ ){
+ tempRowKeyCell1 := tempRowKeyCells1.Element( i );
+ tempRowKeyCell2 := tempRowKeyCells2.Element( i );
+ tempRowKeyCell3 := tempRowKeyCells3.Element( i );
+ tempRowKeyCell4 := tempRowKeyCells4.Element( i );
+
+ rowKey := tempRowKeyCell1.Value() + tempRowKeyCell2.Value() + tempRowKeyCell3.Value() + tempRowKeyCell4.Value();
+
+ tempHandle := rowTree.GetHandle( rowKey );
+ rowTree.Root().AddChild( tempHandle ,i);
+ rows.Add( tempRowKeyCell1.GeneralExcelImportAndExportDataRow());
+ rowKeys.Add( rowKey );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ArchivePR/StaticMethod_GenerateColumnIndex.qbl b/_Main/BL/Type_ArchivePR/StaticMethod_GenerateColumnIndex.qbl
new file mode 100644
index 0000000..5bdd4f8
--- /dev/null
+++ b/_Main/BL/Type_ArchivePR/StaticMethod_GenerateColumnIndex.qbl
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateColumnIndex (
+ const GeneralExcelImportAndExportDataTable table,
+ LocalTable localTable,
+ NamedValueTree columnTree,
+ LocalColumns columns
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-22-2024 (created)
+ tableColumns := selectset( table,GeneralExcelImportAndExportDataColumn,column,true );
+ for( i := 0; i< tableColumns.Size(); i++ ){
+ generalColumn := tableColumns.Element( i );
+ tempHandle := columnTree.GetHandle( generalColumn.Name() );
+
+ nameValue := guard( columnTree.Root().Child( tempHandle ),null( NamedValue ));
+ if( isnull( nameValue )){
+ index := 999;
+ if( generalColumn.Name() = "浜у湴" ){
+ index := 1;
+ }else if( generalColumn.Name() = "杞﹀瀷" ){
+ index := 2;
+ }else if( generalColumn.Name() = "鍙戝姩鏈洪浂浠跺彿" ){
+ index := 3;
+ }else if( generalColumn.Name() = "鍙戝姩鏈哄洓浣嶇爜" ){
+ index := 4;
+ }else{
+ // 2023/01/01
+ index := [Number]generalColumn.Name().ReplaceAll( "/", "" );
+ }
+ column := localTable.LocalColumn( relnew, Name := generalColumn.Name(),Index := index );
+ columns.Add( column );
+ columnTree.Root().AddChild( tempHandle,columns.Size() - 1 );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ExportXMLData/Attribute_Priority.qbl b/_Main/BL/Type_ExportXMLData/Attribute_Priority.qbl
new file mode 100644
index 0000000..035b1b2
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLData/Attribute_Priority.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Priority
+{
+ #keys: '3[412672.0.1084249112][412672.0.1084249111][412672.0.1084249113]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_ExportXMLData/Attribute_XML.qbl b/_Main/BL/Type_ExportXMLData/Attribute_XML.qbl
new file mode 100644
index 0000000..a86a8ff
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLData/Attribute_XML.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute XML
+{
+ #keys: '3[412672.0.1084249102][412672.0.1084249101][412672.0.1084249103]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ExportXMLData/_ROOT_Type_ExportXMLData.qbl b/_Main/BL/Type_ExportXMLData/_ROOT_Type_ExportXMLData.qbl
new file mode 100644
index 0000000..510e458
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLData/_ROOT_Type_ExportXMLData.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ExportXMLData
+{
+ #keys: '5[412672.0.1084249058][412672.0.1084249056][0.0.0][412672.0.1084249057][412672.0.1084249059]'
+ BaseType: Object
+ StructuredName: 'ExportXMLDatas'
+}
diff --git a/_Main/BL/Type_ExportXMLManager/Attribute_FinalXML.qbl b/_Main/BL/Type_ExportXMLManager/Attribute_FinalXML.qbl
new file mode 100644
index 0000000..2021b91
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/Attribute_FinalXML.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FinalXML
+{
+ #keys: '3[412672.0.1084249132][412672.0.1084249131][412672.0.1084249133]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ExportXMLManager/Attribute_Name.qbl b/_Main/BL/Type_ExportXMLManager/Attribute_Name.qbl
new file mode 100644
index 0000000..60d51c5
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[412672.0.1084249122][412672.0.1084249121][412672.0.1084249123]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl b/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
new file mode 100644
index 0000000..3b9cd77
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcFinalXML
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>'+ this.Name() +'</name>';
+
+ datas := selectsortedset( this,ExportXMLData,data,true,data.Priority() );
+
+ traverse( datas,Elements,data ){
+ xmlTemplate := xmlTemplate + data.XML();
+ }
+
+ xmlTemplate := xmlTemplate + "</table>";
+
+ this.FinalXML( xmlTemplate );
+ *]
+}
diff --git a/_Main/BL/Type_ExportXMLManager/Method_Export.qbl b/_Main/BL/Type_ExportXMLManager/Method_Export.qbl
new file mode 100644
index 0000000..76e648d
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/Method_Export.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Export () as BinaryValue
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ tableGroupHandle := TableGroupHandle::Create( "tableGroupHandle" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( this.FinalXML() ) );
+ tableGroupHandle.Add( tableHandle );
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
new file mode 100644
index 0000000..fdde1b7
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AwaitLocalTableXMLData (
+ const Strings columnXMLData,
+ RecycleBin owner
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ manager := select( owner,ExportXMLManager,manager,manager.Name() = "LocalTableXML" );
+ if( isnull( manager )){
+ manager := owner.ExportXMLManager( relnew,Name := "LocalTableXML" );
+ }else{
+ manager.ExportXMLData( relflush );
+ }
+ traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
+ data := manager.ExportXMLData( relnew, XML := element);
+ if( element.LikeUserLocale( "Product ID" )){
+ data.Priority( 1 );
+ }else if( element.LikeUserLocale( "Attribute" )){
+ data.Priority( 2 );
+ }else if( element.LikeUserLocale( "浜у湴" )){
+ data.Priority( 3 );
+ }else if( element.LikeUserLocale( "杞﹀瀷" )){
+ data.Priority( 4 );
+ }else if( element.LikeUserLocale( "鍙戝姩鏈洪浂浠跺彿" )){
+ data.Priority( 5 );
+ }else if( element.LikeUserLocale( "鍙戝姩鏈哄洓浣嶇爜" )){
+ data.Priority( 6 );
+ }else{
+ data.Priority( [Number]element.SubString( 14,10 ).ReplaceAll( "/","") );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
new file mode 100644
index 0000000..fc5bb88
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AwaitShiftPlanXMLData (
+ const Strings columnXMLData,
+ RecycleBin owner
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ manager := select( owner,ExportXMLManager,manager,manager.Name() = "ShiftPlanXML" );
+ if( isnull( manager )){
+ manager := owner.ExportXMLManager( relnew,Name := "ShiftPlanXML" );
+ }else{
+ manager.ExportXMLData( relflush );
+ }
+ traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
+ data := manager.ExportXMLData( relnew, XML := element);
+ if( element.LikeUserLocale( "Unit" )){
+ data.Priority( 1 );
+ }else if( element.LikeUserLocale( "Attribute" )){
+ data.Priority( 2 );
+ }else{
+ data.Priority( [Number]element.SubString( 14,10 ).ReplaceAll( "-","") );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ExportXMLManager/_ROOT_Type_ExportXMLManager.qbl b/_Main/BL/Type_ExportXMLManager/_ROOT_Type_ExportXMLManager.qbl
new file mode 100644
index 0000000..f3198ae
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/_ROOT_Type_ExportXMLManager.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ExportXMLManager
+{
+ #keys: '5[412672.0.1084249053][412672.0.1084249051][0.0.0][412672.0.1084249052][412672.0.1084249054]'
+ BaseType: Object
+ StructuredName: 'ExportXMLManagers'
+}
diff --git a/_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl b/_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl
index 6b96d0f..fed039d 100644
--- a/_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl
+++ b/_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl
@@ -1,16 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Upload (
- Archive archive,
+ RecycleBin recycleBin,
BinaryValue binaryValue,
String filePath
-) as GeneralExcelImportAndExportDataSource
+) const as GeneralExcelImportAndExportDataSource
{
TextBody:
[*
fileName := filePath.Tokenize( "\" ).Element( filePath.Tokenize( "\" ).Size() - 1 );
- generalExcelImportAndExportDataSource := archive.GeneralExcelImportAndExportDataSource( relnew,
+ generalExcelImportAndExportDataSource := recycleBin.GeneralExcelImportAndExportDataSource( relnew,
FileBinaryValue := binaryValue,
Name := fileName,
IsXLSX := fileName.EndsWith( "xlsx" ),
diff --git a/_Main/BL/Type_LocalCell/_ROOT_Type_LocalCell.qbl b/_Main/BL/Type_LocalCell/_ROOT_Type_LocalCell.qbl
new file mode 100644
index 0000000..31867a9
--- /dev/null
+++ b/_Main/BL/Type_LocalCell/_ROOT_Type_LocalCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type LocalCell
+{
+ #keys: '5[412672.0.1084249620][412672.0.1084249618][0.0.0][412672.0.1084249619][412672.0.1084249621]'
+ BaseType: Object
+ StructuredName: 'LocalCells'
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersion.qbl b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersion.qbl
new file mode 100644
index 0000000..e4182b7
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersion.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BaseVersion
+{
+ #keys: '3[412672.0.1087844729][412672.0.1087844728][412672.0.1087844730]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersionValue.qbl b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersionValue.qbl
new file mode 100644
index 0000000..7084a1a
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_BaseVersionValue.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BaseVersionValue
+{
+ #keys: '3[412672.0.1087874641][412672.0.1087874640][412672.0.1087874642]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersion.qbl b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersion.qbl
new file mode 100644
index 0000000..1884719
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersion.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CompareVersion
+{
+ #keys: '3[412672.0.1087844726][412672.0.1087844725][412672.0.1087844727]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersionValue.qbl b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersionValue.qbl
new file mode 100644
index 0000000..a1a480c
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_CompareVersionValue.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CompareVersionValue
+{
+ #keys: '3[412672.0.1087874649][412672.0.1087874648][412672.0.1087874650]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/Attribute_Gap.qbl b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_Gap.qbl
new file mode 100644
index 0000000..efe049a
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/Attribute_Gap.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Gap
+{
+ #keys: '3[412672.0.1087844732][412672.0.1087844731][412672.0.1087844733]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/Function_CalcGap.qbl b/_Main/BL/Type_LocalCell_DemandComparison/Function_CalcGap.qbl
new file mode 100644
index 0000000..90a8d2f
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/Function_CalcGap.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcGap
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+
+ value := this.BaseVersion() - this.CompareVersion();
+
+ this.Gap( value );
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/Method_GetAttributeByName.qbl b/_Main/BL/Type_LocalCell_DemandComparison/Method_GetAttributeByName.qbl
new file mode 100644
index 0000000..f51ae7a
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/Method_GetAttributeByName.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetAttributeByName (
+ String attributeName
+) const declarative as String
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ value := "";
+
+ if( attributeName = "BaseVersion" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := this.BaseVersion().Format( "N(Dec)" );
+ }
+ }
+ if( attributeName = "CompareVersion" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := this.CompareVersion().Format( "N(Dec)" );
+ }
+ }
+ if( attributeName = "Gap" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := this.Gap().Format( "N(Dec)" );
+ }
+ }
+ if( attributeName = "BaseVersionValue" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := "0";
+ }else{
+ value := this.BaseVersionValue();
+ }
+ }
+ if( attributeName = "CompareVersionValue" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := "0";
+ }else{
+ value := this.CompareVersionValue();
+ }
+ }
+
+ return value;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
new file mode 100644
index 0000000..4364350
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AsyncExport (
+ RecycleBin recycleBin,
+ const constcontent LocalRows rows,
+ const constcontent LocalColumns columns
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
+
+ attributeNames := LocalCell_DemandComparison::GetAttributeNames();
+
+ columnstring := emit( "" );
+ flag := true;
+ traverse( sortColumns,Elements,sortColumn ){
+ if( flag ){
+ attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute" );
+ columnstring := columnstring.Merge( attributeXML )
+ flag := false;
+ }
+
+ cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data");
+ columnstring := columnstring.Merge( cellxml);
+ }
+
+ columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin );
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl
new file mode 100644
index 0000000..24a6087
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetAttributeNames.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetAttributeNames () const declarative as owning Strings
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ attributeNames := construct( Strings );
+
+ attributeNames.Add( "BaseVersion" );
+ attributeNames.Add( "CompareVersion" );
+ attributeNames.Add( "BaseVersionValue" );
+ attributeNames.Add( "CompareVersionValue" );
+ attributeNames.Add( "Gap" );
+
+ return &attributeNames;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl
new file mode 100644
index 0000000..308ed41
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetColumnXML.qbl
@@ -0,0 +1,56 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetColumnXML (
+ const constcontent LocalRows rows,
+ const LocalColumn column,
+ const Strings attributeNames,
+ String type
+) const as String
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ // rislai Jun-20-2024 (created)
+ columnXML := "";
+ cells := selectsortedset( column, LocalCell.astype( LocalCell_DemandComparison ), cell,
+ exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
+ if( type = "data" ){
+ columnXML := "";
+ if( column.IsAttrbuteColumn() ){
+ columnXML := "<column><name>" + column.Name() + "</name><type>String</type>";
+ }else{
+ columnXML := "<column><name>" + column.Name() + "</name><type>Number</type>";
+ }
+ traverse ( cells, Elements, cell ) {
+ traverse( attributeNames ,Elements,e ){
+ cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>'
+ columnXML := columnXML + cellXML;
+ }
+ }
+ columnXML := columnXML + "</column>";
+ }
+ if( type = "attribute" ){
+ columnXML1 := "<column><name>Product ID</name><type>String</type>";
+ columnXML2 := "<column><name>Attribute</name><type>String</type>";
+
+ traverse ( cells, Elements, cell ) {
+ flag := true;
+ traverse( attributeNames ,Elements,e ){
+ if( flag ){
+ cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
+ columnXML1 := columnXML1 + cellXML;
+ flag := false;
+ }else{
+ cellXML := '<cell value=" "/>'
+ columnXML1 := columnXML1 + cellXML;
+ }
+ cellXML := '<cell value="' + e + '"/>'
+ columnXML2 := columnXML2 + cellXML;
+ }
+ }
+ columnXML := columnXML1 + "</column>" + columnXML2 + "</column>";
+ }
+
+ return columnXML;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl b/_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl
new file mode 100644
index 0000000..d141f48
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization LocalCell_DemandComparison
+{
+ #keys: '2[412672.0.1087844722][412672.0.1087844717]'
+ Parent: LocalCell
+ StructuredName: 'LocalCell_DemandComparisons'
+}
diff --git a/_Main/BL/Type_LocalColumn/Attribute_Index.qbl b/_Main/BL/Type_LocalColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..b7fb3ba
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[412672.0.1086931887][412672.0.1086931886][412672.0.1086931888]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_LocalColumn/Attribute_IsAttrbuteColumn.qbl b/_Main/BL/Type_LocalColumn/Attribute_IsAttrbuteColumn.qbl
new file mode 100644
index 0000000..a41fb0a
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Attribute_IsAttrbuteColumn.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsAttrbuteColumn
+{
+ #keys: '3[412672.0.1087874665][412672.0.1087874664][412672.0.1087874666]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_LocalColumn/Attribute_Name.qbl b/_Main/BL/Type_LocalColumn/Attribute_Name.qbl
new file mode 100644
index 0000000..2563e73
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[412672.0.1086931874][412672.0.1086931873][412672.0.1086931875]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalColumn/_ROOT_Type_LocalColumn.qbl b/_Main/BL/Type_LocalColumn/_ROOT_Type_LocalColumn.qbl
new file mode 100644
index 0000000..f15d615
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/_ROOT_Type_LocalColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type LocalColumn
+{
+ #keys: '5[412672.0.1084249599][412672.0.1084249597][0.0.0][412672.0.1084249598][412672.0.1084249600]'
+ BaseType: Object
+ StructuredName: 'LocalColumns'
+}
diff --git a/_Main/BL/Type_LocalRow/Attribute_CustomName.qbl b/_Main/BL/Type_LocalRow/Attribute_CustomName.qbl
new file mode 100644
index 0000000..26849a4
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/Attribute_CustomName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomName
+{
+ #keys: '3[412672.0.1094515780][412672.0.1094515779][412672.0.1094515781]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalRow/Attribute_Index.qbl b/_Main/BL/Type_LocalRow/Attribute_Index.qbl
new file mode 100644
index 0000000..8aac77b
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[412672.0.1086931843][412672.0.1086931842][412672.0.1086931844]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_LocalRow/Attribute_Name.qbl b/_Main/BL/Type_LocalRow/Attribute_Name.qbl
new file mode 100644
index 0000000..f53aa08
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[412672.0.1087844675][412672.0.1087844674][412672.0.1087844676]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalRow/Function_CalcName.qbl b/_Main/BL/Type_LocalRow/Function_CalcName.qbl
new file mode 100644
index 0000000..c3cbb48
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+ TextBody:
+ [*
+ // rislai Jun-22-2024 (created)
+
+ value := ifexpr( this.CustomName() = "",[String]this.Index(),this.CustomName() );
+
+ this.Name( value );
+ *]
+}
diff --git a/_Main/BL/Type_LocalRow/_ROOT_Type_LocalRow.qbl b/_Main/BL/Type_LocalRow/_ROOT_Type_LocalRow.qbl
new file mode 100644
index 0000000..9c059f2
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/_ROOT_Type_LocalRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type LocalRow
+{
+ #keys: '5[412672.0.1084249610][412672.0.1084249608][0.0.0][412672.0.1084249609][412672.0.1084249611]'
+ BaseType: Object
+ StructuredName: 'LocalRows'
+}
diff --git a/_Main/BL/Type_LocalTable/Attribute_Name.qbl b/_Main/BL/Type_LocalTable/Attribute_Name.qbl
new file mode 100644
index 0000000..feeb6a2
--- /dev/null
+++ b/_Main/BL/Type_LocalTable/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[412672.0.1094514009][412672.0.1094514008][412672.0.1094514010]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalTable/Attribute_RowIndexCache.qbl b/_Main/BL/Type_LocalTable/Attribute_RowIndexCache.qbl
new file mode 100644
index 0000000..117f3c1
--- /dev/null
+++ b/_Main/BL/Type_LocalTable/Attribute_RowIndexCache.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowIndexCache
+{
+ #keys: '3[412672.0.1086954704][412672.0.1086954703][412672.0.1086954705]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_LocalTable/Method_GetRowIndexCache.qbl b/_Main/BL/Type_LocalTable/Method_GetRowIndexCache.qbl
new file mode 100644
index 0000000..eccdbc7
--- /dev/null
+++ b/_Main/BL/Type_LocalTable/Method_GetRowIndexCache.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetRowIndexCache () declarative as Number
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ this.RowIndexCache( this.RowIndexCache() + 1 );
+
+ return this.RowIndexCache();
+ *]
+}
diff --git a/_Main/BL/Type_LocalTable/_ROOT_Type_LocalTable.qbl b/_Main/BL/Type_LocalTable/_ROOT_Type_LocalTable.qbl
new file mode 100644
index 0000000..67d59e9
--- /dev/null
+++ b/_Main/BL/Type_LocalTable/_ROOT_Type_LocalTable.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type LocalTable
+{
+ #keys: '5[412672.0.1084249615][412672.0.1084249613][0.0.0][412672.0.1084249614][412672.0.1084249616]'
+ BaseType: Object
+ StructuredName: 'LocalTables'
+}
diff --git a/_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl b/_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl
new file mode 100644
index 0000000..64f77be
--- /dev/null
+++ b/_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod IsAnyDurationContained (
+ DateTime start1,
+ DateTime end1,
+ DateTime start2,
+ DateTime end2
+) const declarative as Boolean
+{
+ TextBody:
+ [*
+ // rislai Jun-19-2024 (created)
+ return ( start1 <= start2 and end1 >= end2 ) or ( start2 <= start1 and end2 >= end1 );
+ *]
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityAGW.qbl b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityAGW.qbl
new file mode 100644
index 0000000..786db90
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityAGW.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpperLimitOfTransferCapacityAGW
+{
+ #keys: '3[413988.0.1291510952][413988.0.1291510951][413988.0.1291510953]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityKW.qbl b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityKW.qbl
new file mode 100644
index 0000000..01784de
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityKW.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpperLimitOfTransferCapacityKW
+{
+ #keys: '3[413988.0.1291510942][413988.0.1291510941][413988.0.1291510943]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityPL.qbl b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityPL.qbl
new file mode 100644
index 0000000..66d7b43
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityPL.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpperLimitOfTransferCapacityPL
+{
+ #keys: '3[413988.0.1291510932][413988.0.1291510931][413988.0.1291510933]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKG.qbl b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKG.qbl
new file mode 100644
index 0000000..4154a27
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKG.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpperLimitOfTransferCapacityZKG
+{
+ #keys: '3[413988.0.1291510909][413988.0.1291510908][413988.0.1291510910]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKM.qbl b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKM.qbl
new file mode 100644
index 0000000..1f5e8a7
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_UpperLimitOfTransferCapacityZKM.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UpperLimitOfTransferCapacityZKM
+{
+ #keys: '3[413988.0.1291510922][413988.0.1291510921][413988.0.1291510923]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_Period_MP/_ROOT_Type_Period_MP.qbl b/_Main/BL/Type_Period_MP/_ROOT_Type_Period_MP.qbl
new file mode 100644
index 0000000..414b2c8
--- /dev/null
+++ b/_Main/BL/Type_Period_MP/_ROOT_Type_Period_MP.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Period_MP #extension
+{
+}
diff --git a/_Main/BL/Type_RecycleBin/StaticMethod_OnLogin.qbl b/_Main/BL/Type_RecycleBin/StaticMethod_OnLogin.qbl
new file mode 100644
index 0000000..ef7f037
--- /dev/null
+++ b/_Main/BL/Type_RecycleBin/StaticMethod_OnLogin.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod OnLogin () as Key
+{
+ TextBody:
+ [*
+ // lihongji May-15-2024 (created)
+ folder := DomainModel::Domain().MDSFolderDefinitions().FindFolder( "/root" );
+
+ datasetName := typeof( RecycleBin ).Name() + "_" + QuintiqUser::CurrentUser().ShortName();
+
+ oinfo := MDSEditor::Editor().ObjectInfos( typeof( RecycleBin ).Name(), folder.FolderID(), datasetName );
+
+ o := select( oinfo, Elements, o, o.IsLoaded() );
+ emptydataset := isnull( o );
+
+ key := Key::ZeroKey();
+ if ( emptydataset ) {
+ mdsrb := MDSRecycleBin::CreateMDS( datasetName, DMF_Utility::StorageState_MemoryOnly() );
+ key := mdsrb.MDSID();
+ } else {
+ MDSRecycleBin::LoadMDSAndConvert( o.MDSID(), DMF_Utility::StorageState_MemoryOnly() );
+ key := o.MDSID().MDSKey();
+ }
+
+ return key;
+ *]
+}
diff --git a/_Main/BL/Type_RecycleBin/_ROOT_Type_RecycleBin.qbl b/_Main/BL/Type_RecycleBin/_ROOT_Type_RecycleBin.qbl
new file mode 100644
index 0000000..fadca01
--- /dev/null
+++ b/_Main/BL/Type_RecycleBin/_ROOT_Type_RecycleBin.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type RecycleBin
+{
+ #keys: '5[412672.0.1084213474][412672.0.1084213472][0.0.0][412672.0.1084213473][412672.0.1084213475]'
+ BaseType: Object
+ StructuredName: 'RecycleBins'
+}
diff --git a/_Main/BL/Type_ShiftPlan/Attribute_Color.qbl b/_Main/BL/Type_ShiftPlan/Attribute_Color.qbl
new file mode 100644
index 0000000..506c548
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Attribute_Color.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Color
+{
+ #keys: '3[412672.0.1082947207][412672.0.1082947206][412672.0.1082947208]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShiftPlan/Attribute_CustomRemark.qbl b/_Main/BL/Type_ShiftPlan/Attribute_CustomRemark.qbl
new file mode 100644
index 0000000..ad2224c
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Attribute_CustomRemark.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomRemark
+{
+ #keys: '3[412672.0.1067124406][412672.0.1067124405][412672.0.1067124407]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShiftPlan/Attribute_EventType.qbl b/_Main/BL/Type_ShiftPlan/Attribute_EventType.qbl
new file mode 100644
index 0000000..b8f0791
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Attribute_EventType.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EventType
+{
+ #keys: '3[412672.0.1082947252][412672.0.1082947251][412672.0.1082947253]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShiftPlan/Attribute_Outcome.qbl b/_Main/BL/Type_ShiftPlan/Attribute_Outcome.qbl
new file mode 100644
index 0000000..9770e27
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Attribute_Outcome.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Outcome
+{
+ #keys: '3[412672.0.1066680021][412672.0.1066680020][412672.0.1066680022]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShiftPlan/Attribute_Remark.qbl b/_Main/BL/Type_ShiftPlan/Attribute_Remark.qbl
new file mode 100644
index 0000000..7837726
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Attribute_Remark.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Remark
+{
+ #keys: '3[412672.0.1066680031][412672.0.1066680030][412672.0.1066680032]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShiftPlan/Function_CalcColor.qbl b/_Main/BL/Type_ShiftPlan/Function_CalcColor.qbl
new file mode 100644
index 0000000..1204e8d
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Function_CalcColor.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcColor
+{
+ TextBody:
+ [*
+ // rislai Jun-19-2024 (created)
+ // Red,Cyan,LightBlue,LightOrange
+ // 娉曞畾鑺傚亣鏃ワ紝鏄熸湡鍏紝鏄熸湡鏃ワ紝璋冧紤
+ value := "White"
+ if( this.EventType() = "鍛ㄥ叚"){
+ value := "Cyan";
+ }
+ if( this.EventType() = "鍛ㄦ棩"){
+ value := "LightBlue";
+ }
+ if( this.EventType() = "娉曞畾鑺傚亣鏃�"){
+ value := "Red";
+ }
+ if( this.EventType() = "璋冧紤"){
+ value := "LightOrange";
+ }
+
+
+ this.Color( value );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/Function_CalcEventType.qbl b/_Main/BL/Type_ShiftPlan/Function_CalcEventType.qbl
new file mode 100644
index 0000000..b480033
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Function_CalcEventType.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEventType
+{
+ TextBody:
+ [*
+ // rislai Jun-19-2024 (created)
+ value := this.CalculateEventType();
+
+ this.EventType( value );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/Function_CalcOutcome.qbl b/_Main/BL/Type_ShiftPlan/Function_CalcOutcome.qbl
new file mode 100644
index 0000000..ebcf5a3
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Function_CalcOutcome.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcOutcome
+{
+ TextBody:
+ [*
+ // rislai Jun-18-2024 (created)
+ capacity := ifexpr( this.UnitPeriodTime().IsUtilizationInUOM(), [Real]this.UnitPeriodTime().UsedCapacity().HoursAsReal(), this.UnitPeriodTime().UtilizationPercentage() * this.UnitPeriodTime().MaximumLoadPercentage() / 100 )
+
+ value := ifexpr( capacity = 0,"", this.UnitPeriodTime().ShiftPatternName());
+
+ this.Outcome( value );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/Function_CalcRemark.qbl b/_Main/BL/Type_ShiftPlan/Function_CalcRemark.qbl
new file mode 100644
index 0000000..a3739d1
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Function_CalcRemark.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcRemark
+{
+ TextBody:
+ [*
+ // rislai Jun-18-2024 (created)
+
+ value := ifexpr( this.CustomRemark() = "",this.CalculateRemark( ),this.CustomRemark());
+
+ this.Remark( value );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/Method_CalculateEventType.qbl b/_Main/BL/Type_ShiftPlan/Method_CalculateEventType.qbl
new file mode 100644
index 0000000..cc7ee8d
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Method_CalculateEventType.qbl
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: #root
+Method CalculateEventType () const declarative as String
+{
+ TextBody:
+ [*
+ // rislai Jun-19-2024 (created)
+ values := construct( Strings );
+
+ traverse( this.UnitPeriodTime().Unit().UnitCalendar(),Participation,participation,participation.Event().Type() = LibCal_Event::TYPE_UNAVAILABLE()){
+ event := participation.Event();
+
+ if( this.UnitPeriodTime().Start().Date() >= event.EarliestStart() and this.UnitPeriodTime().End().Date() <= event.LatestEnd() ){
+ intervals := selectset( event,LeadingParticipation.ExplicitTimeInterval,interval,LocalTool::IsAnyDurationContained( interval.Start(),interval.End(),this.UnitPeriodTime().Start(),this.UnitPeriodTime().End()));
+
+ traverse( intervals,Elements,interval){
+ values.Add( ifexpr( isnull( interval.Participation().Event().EventType().Parent()),interval.Participation().Event().EventType().ID(),interval.Participation().Event().EventType().Parent().ID() ));
+ }
+ }
+ }
+ values := selectuniquevalues( values,Elements,value,true,value );
+
+ result := "";
+ flag := true;
+ traverse( values,Elements,value ,flag){
+ if( value = "璋冧紤" and result <> "璋冧紤"){
+ result := "璋冧紤";
+ }else if( value = "娉曞畾鑺傚亣鏃�" and result <> "娉曞畾鑺傚亣鏃�"){
+ result := "娉曞畾鑺傚亣鏃�";
+ }else if( value = "鍛ㄥ叚" and result <> "鍛ㄥ叚"){
+ result := "鍛ㄥ叚";
+ }else if( value = "鍛ㄦ棩" and result <> "鍛ㄦ棩"){
+ result := "鍛ㄦ棩";
+ }
+ }
+
+ return result;
+ *]
+}
diff --git "a/_Main/BL/Type_ShiftPlan/Method_CalculateRemark\043503.qbl" "b/_Main/BL/Type_ShiftPlan/Method_CalculateRemark\043503.qbl"
new file mode 100644
index 0000000..785167e
--- /dev/null
+++ "b/_Main/BL/Type_ShiftPlan/Method_CalculateRemark\043503.qbl"
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+Method CalculateRemark () const declarative as String
+{
+ TextBody:
+ [*
+ // rislai Jun-18-2024 (created)
+ values := construct( Strings );
+
+ traverse( this.UnitPeriodTime().Unit().UnitCalendar(),Participation,participation,participation.Event().Type() = LibCal_Event::TYPE_UNAVAILABLE()){
+ event := participation.Event();
+
+ if( this.UnitPeriodTime().Start().Date() >= event.EarliestStart() and this.UnitPeriodTime().End().Date() <= event.LatestEnd() ){
+ intervals := selectset( event,LeadingParticipation.ExplicitTimeInterval,interval,LocalTool::IsAnyDurationContained( interval.Start(),interval.End(),this.UnitPeriodTime().Start(),this.UnitPeriodTime().End()));
+
+ traverse( intervals,Elements,interval){
+ values.Add( interval.Participation().Event().Subject() );
+ }
+ }
+ }
+ values := selectuniquevalues( values,Elements,value,true,value );
+
+ result := "";
+ traverse( values,Elements,value ){
+ result := result + value + ";";
+ }
+
+ return ifexpr( result = "",result,result.SubString( 0,result.Length() - 1 ) );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/Method_GetAttributeByName.qbl b/_Main/BL/Type_ShiftPlan/Method_GetAttributeByName.qbl
new file mode 100644
index 0000000..7499588
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Method_GetAttributeByName.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetAttributeByName (
+ String attributeName
+) const declarative as String
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ value := "";
+ if( attributeName = "Remark" ){
+ value := this.Remark();
+ }
+ if( attributeName = "Outcome" ){
+ value := this.Outcome();
+ }
+ return value;
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/Method_SetRemark.qbl b/_Main/BL/Type_ShiftPlan/Method_SetRemark.qbl
new file mode 100644
index 0000000..b053ac7
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Method_SetRemark.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetRemark (
+ String remark
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-18-2024 (created)
+ this.CustomRemark( remark );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/StaticMethod_AsyncExport.qbl b/_Main/BL/Type_ShiftPlan/StaticMethod_AsyncExport.qbl
new file mode 100644
index 0000000..512fbb5
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/StaticMethod_AsyncExport.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AsyncExport (
+ RecycleBin recycleBin,
+ const constcontent Units rows,
+ const constcontent Period_MPs columns
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ sortColumns := selectsortedset( columns,Elements,column,true,column.StartDate());
+
+ attributeNames := ShiftPlan::GetAttributeNames();
+
+ columnstring := emit( "" );
+ flag := true;
+ traverse( sortColumns,Elements,sortColumn ){
+ if( flag ){
+ attributeXML := rows -> ShiftPlan::GetShiftPlanColumnXML( sortColumn,attributeNames,"attribute" );
+ columnstring := columnstring.Merge( attributeXML )
+ flag := false;
+ }
+
+ cellxml := rows -> ShiftPlan::GetShiftPlanColumnXML( sortColumn,attributeNames ,"data");
+ columnstring := columnstring.Merge( cellxml);
+ }
+
+ columnstring -> GroupAll() -> ExportXMLManager::AwaitShiftPlanXMLData( recycleBin );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/StaticMethod_Create.qbl b/_Main/BL/Type_ShiftPlan/StaticMethod_Create.qbl
new file mode 100644
index 0000000..ec16091
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/StaticMethod_Create.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Create (
+ UnitPeriodTime owner
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-17-2024 (created)
+ owner.ShiftPlan( relnew );
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/StaticMethod_GetAttributeNames.qbl b/_Main/BL/Type_ShiftPlan/StaticMethod_GetAttributeNames.qbl
new file mode 100644
index 0000000..45efe8a
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/StaticMethod_GetAttributeNames.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetAttributeNames () const declarative as owning Strings
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ attributeNames := construct( Strings );
+
+ attributeNames.Add( "Outcome" );
+ attributeNames.Add( "Remark" );
+
+ return &attributeNames;
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/StaticMethod_GetShiftPlanColumnXML.qbl b/_Main/BL/Type_ShiftPlan/StaticMethod_GetShiftPlanColumnXML.qbl
new file mode 100644
index 0000000..fe8b685
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/StaticMethod_GetShiftPlanColumnXML.qbl
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetShiftPlanColumnXML (
+ const constcontent Units rows,
+ const Period_MP column,
+ const Strings attributeNames,
+ String type
+) const as String
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ columnXML := "";
+ cells := selectsortedset( column, UnitPeriod.astype( UnitPeriodTime ).ShiftPlan, cell,
+ exists( rows,Elements,element,element = cell.UnitPeriodTime().Unit()), cell.UnitPeriodTime().Unit().ID());
+ if( type = "data" ){
+ columnXML := "<column><name>" + column.StartDate().Format( "Y-M2-D2 ")+ "</name><type>String</type>";
+ traverse ( cells, Elements, cell ) {
+ traverse( attributeNames ,Elements,e ){
+ cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>'
+ columnXML := columnXML + cellXML;
+ }
+ }
+ columnXML := columnXML + "</column>";
+ }
+ if( type = "attribute" ){
+ columnXML1 := "<column><name>Unit</name><type>String</type>";
+ columnXML2 := "<column><name>Attribute</name><type>String</type>";
+
+ traverse ( cells, Elements, cell ) {
+ flag := true;
+ traverse( attributeNames ,Elements,e ){
+ if( flag ){
+ cellXML := '<cell value="' + cell.UnitPeriodTime().Unit().ID() + '"/>'
+ columnXML1 := columnXML1 + cellXML;
+ flag := false;
+ }else{
+ cellXML := '<cell value=" "/>'
+ columnXML1 := columnXML1 + cellXML;
+ }
+ cellXML := '<cell value="' + e + '"/>'
+ columnXML2 := columnXML2 + cellXML;
+ }
+ }
+ columnXML := columnXML1 + "</column>" + columnXML2 + "</column>";
+ }
+
+ return columnXML;
+ *]
+}
diff --git a/_Main/BL/Type_ShiftPlan/_ROOT_Type_ShiftPlan.qbl b/_Main/BL/Type_ShiftPlan/_ROOT_Type_ShiftPlan.qbl
new file mode 100644
index 0000000..e553d34
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/_ROOT_Type_ShiftPlan.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ShiftPlan
+{
+ #keys: '5[412672.0.1057415075][412672.0.1057415073][0.0.0][412672.0.1057415074][412672.0.1057415076]'
+ BaseType: Object
+ StructuredName: 'ShiftPlans'
+}
diff --git a/_Main/BL/Type_Test/StaticMethod_Test.qbl b/_Main/BL/Type_Test/StaticMethod_Test.qbl
index 5a0ddf8..e2e3fe5 100644
--- a/_Main/BL/Type_Test/StaticMethod_Test.qbl
+++ b/_Main/BL/Type_Test/StaticMethod_Test.qbl
@@ -3,15 +3,42 @@
StaticMethod Test (
ScenarioManager scenarioManager,
MacroPlan macroPlan,
- Archive archive
+ Archive archive,
+ RecycleBin recycleBin
)
{
TextBody:
[*
// rislai Jun-9-2024 (created)
+ baseVersion := select( archive,ArchivePR,pr,true );
+ baseVersionFile := OSFile::Construct();
+ baseVersionFile.Open( baseVersion.FilePath(), "Read", false );
+ baseVersionBinaryData := baseVersionFile.ReadBinary();
+ baseVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, baseVersionBinaryData, baseVersion.FilePath() );
+ baseVersionDataSource.ReadStructure();
- traverse( macroPlan,Routing,rt ){
- rt.UphillRouting( relflush );
- }
+ baseVersionTables := selectset( baseVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
+
+ baseVersionTable := baseVersionTables.Element( 0 );
+
+ baseVersionRow := select( baseVersionTable, GeneralExcelImportAndExportDataRow, tempGEIAEDR, tempGEIAEDR.RowNr() = 999 );
+
+ info( isnull( baseVersionRow ));
+
+
+ //testTree := NamedValueTree::Create();
+ //
+ //testTreeHandel := testTree.GetHandle( "test1" );
+ //testTreeHandel2 := testTree.GetHandle( "test2" );
+ //
+ //testTree.Root().AddChild( testTreeHandel,1 );
+ //
+ //info( testTree.Root().Child( testTreeHandel ).GetValueAsNumber() );
+ //try{
+ // info( testTree.Root().Child( testTreeHandel2 ).GetValueAsNumber() );
+ //}onerror{
+ // testTree.Root().AddChild( testTreeHandel,2 );
+ //}
+ //info( testTree.Root().Child( testTreeHandel ).GetValueAsNumber() );
*]
}
diff --git a/_Main/BL/Type_TransferPlanCell/Attribute_Value.qbl b/_Main/BL/Type_TransferPlanCell/Attribute_Value.qbl
new file mode 100644
index 0000000..d398224
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanCell/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+ #keys: '3[413988.0.1292032065][413988.0.1292032064][413988.0.1292032066]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl b/_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl
new file mode 100644
index 0000000..3fa0a72
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl
@@ -0,0 +1,71 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateReport (
+ MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ macroPlan.TransferPlanRow( relflush );
+ macroPlan.TransferPlanColumn( relflush );
+
+ rowNr := 0;
+
+ // 鐢熸垚璋冩嫧璁″垝
+ traverse ( macroPlan, Unit, u, u.HasCapacityTypeTransportQuantity() ) {
+ traverse ( u, Lane.LaneLeg.Trip, t ) {
+ traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 ) {
+ // 鎵捐
+ tpr := TransferPlanRow::FindTransferPlanRowTypeIndex( t.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().Name(),
+ t.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().Name(),
+ pit.Product_MP().ID() );
+ if ( isnull( tpr ) ) {
+ tpr := macroPlan.TransferPlanRow( relnew,
+ RowNr := rowNr,
+ SourceStockpoingPointID := t.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().Name(),
+ TargetStockpoingPointID := t.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().Name(),
+ ProductID := pit.Product_MP().ID() );
+ }
+
+ // 鎵惧垪
+ tpc := TransferPlanColumn::FindTransferPlanColumnTypeIndex( t.Departure().Date() );
+ if ( isnull( tpc ) ) {
+ tpc := macroPlan.TransferPlanColumn( relnew,
+ ColumnDate := t.Departure().Date() );
+ }
+
+ // 璧嬪�煎崟鍏冩牸
+ cell := select( tpc, TransferPlanCell, tempTPC, tempTPC.TransferPlanRow() = tpr );
+ if ( isnull( cell ) ) {
+ cell := tpc.TransferPlanCell( relnew, Value := [String]pit.Quantity().Round( 0 ) );
+ cell.TransferPlanRow( relset, tpr );
+ } else {
+ cell.Value( [String] ( [Number]cell.Value() + pit.Quantity().Round( 0 ) ) );
+ }
+ }
+ }
+ }
+
+ // 琛ラ綈绌哄垪
+ indexDate := minselect( macroPlan, TransferPlanColumn, tempTPC, true, tempTPC.ColumnDate() ).ColumnDate();
+ endDate := maxselect( macroPlan, TransferPlanColumn, tempTPC, true, tempTPC.ColumnDate() ).ColumnDate();
+ while ( indexDate <= endDate ) {
+ if ( isnull( TransferPlanColumn::FindTransferPlanColumnTypeIndex( indexDate ) ) ) {
+ macroPlan.TransferPlanColumn( relnew,
+ ColumnDate := indexDate );
+ }
+ indexDate := indexDate + 1;
+ }
+
+
+ // 鐢熸垚浜у搧鍒�
+ minDateTPC := macroPlan.TransferPlanColumn( relnew,
+ ColumnDate := Date::MinDate() );
+ traverse ( macroPlan, TransferPlanRow, tpr ) {
+ productCell := minDateTPC.TransferPlanCell( relnew, Value := tpr.ProductID() );
+ productCell.TransferPlanRow( relset, tpr );
+ }
+
+ // 璋冩嫧鏁伴噺璋冩暣
+ *]
+}
diff --git a/_Main/BL/Type_TransferPlanCell/_ROOT_Type_TransferPlanCell.qbl b/_Main/BL/Type_TransferPlanCell/_ROOT_Type_TransferPlanCell.qbl
new file mode 100644
index 0000000..9aff6e7
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanCell/_ROOT_Type_TransferPlanCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type TransferPlanCell
+{
+ #keys: '5[413988.0.1292031923][413988.0.1292031921][0.0.0][413988.0.1292031922][413988.0.1292031924]'
+ BaseType: Object
+ StructuredName: 'TransferPlanCells'
+}
diff --git a/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnDate.qbl b/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnDate.qbl
new file mode 100644
index 0000000..86ce75b
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnDate.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnDate
+{
+ #keys: '3[413988.0.1292032055][413988.0.1292032054][413988.0.1292032056]'
+ IsReadOnly: true
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnIndex.qbl b/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnIndex.qbl
new file mode 100644
index 0000000..7b327f5
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnIndex.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnIndex
+{
+ #keys: '3[413988.0.1292032025][413988.0.1292032024][413988.0.1292032026]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnName.qbl b/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnName.qbl
new file mode 100644
index 0000000..a664e11
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanColumn/Attribute_ColumnName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ColumnName
+{
+ #keys: '3[413988.0.1292032045][413988.0.1292032044][413988.0.1292032046]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_TransferPlanColumn/Function_CalcColumnName.qbl b/_Main/BL/Type_TransferPlanColumn/Function_CalcColumnName.qbl
new file mode 100644
index 0000000..61e2036
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanColumn/Function_CalcColumnName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcColumnName
+{
+ TextBody:
+ [*
+ // lihongji Jun-24-2024 (created)
+
+ value := ifexpr( this.ColumnDate().IsMinInfinity(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
+
+ this.ColumnName( value );
+ *]
+}
diff --git a/_Main/BL/Type_TransferPlanColumn/TypeIndex_TransferPlanColumnTypeIndex.qbl b/_Main/BL/Type_TransferPlanColumn/TypeIndex_TransferPlanColumnTypeIndex.qbl
new file mode 100644
index 0000000..eb1cf36
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanColumn/TypeIndex_TransferPlanColumnTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex TransferPlanColumnTypeIndex
+{
+ Attributes:
+ [
+ TypeIndexAttribute
+ {
+ ModelElement: ColumnDate
+ }
+ ]
+}
diff --git a/_Main/BL/Type_TransferPlanColumn/_ROOT_Type_TransferPlanColumn.qbl b/_Main/BL/Type_TransferPlanColumn/_ROOT_Type_TransferPlanColumn.qbl
new file mode 100644
index 0000000..49de9fe
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanColumn/_ROOT_Type_TransferPlanColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type TransferPlanColumn
+{
+ #keys: '5[413988.0.1292031918][413988.0.1292031916][0.0.0][413988.0.1292031917][413988.0.1292031919]'
+ BaseType: Object
+ StructuredName: 'TransferPlanColumns'
+}
diff --git a/_Main/BL/Type_TransferPlanRow/Attribute_Name.qbl b/_Main/BL/Type_TransferPlanRow/Attribute_Name.qbl
new file mode 100644
index 0000000..e0be8b2
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[413988.0.1292032011][413988.0.1292032010][413988.0.1292032012]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_TransferPlanRow/Attribute_ProductID.qbl b/_Main/BL/Type_TransferPlanRow/Attribute_ProductID.qbl
new file mode 100644
index 0000000..6135603
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+ #keys: '3[413988.0.1292031981][413988.0.1292031980][413988.0.1292031982]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_TransferPlanRow/Attribute_RowNr.qbl b/_Main/BL/Type_TransferPlanRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..be1fa8f
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[413988.0.1292032032][413988.0.1292032031][413988.0.1292032033]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_TransferPlanRow/Attribute_SourceStockpoingPointID.qbl b/_Main/BL/Type_TransferPlanRow/Attribute_SourceStockpoingPointID.qbl
new file mode 100644
index 0000000..63873ca
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/Attribute_SourceStockpoingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SourceStockpoingPointID
+{
+ #keys: '3[413988.0.1292031991][413988.0.1292031990][413988.0.1292031992]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_TransferPlanRow/Attribute_TargetStockpoingPointID.qbl b/_Main/BL/Type_TransferPlanRow/Attribute_TargetStockpoingPointID.qbl
new file mode 100644
index 0000000..dfec058
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/Attribute_TargetStockpoingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TargetStockpoingPointID
+{
+ #keys: '3[413988.0.1292032001][413988.0.1292032000][413988.0.1292032002]'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_TransferPlanRow/Function_CalcName.qbl b/_Main/BL/Type_TransferPlanRow/Function_CalcName.qbl
new file mode 100644
index 0000000..30e44df
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+ TextBody:
+ [*
+ // lihongji Jun-24-2024 (created)
+
+ value := this.SourceStockpoingPointID() + " to " + this.TargetStockpoingPointID();
+
+ this.Name( value );
+ *]
+}
diff --git a/_Main/BL/Type_TransferPlanRow/TypeIndex_TransferPlanRowTypeIndex.qbl b/_Main/BL/Type_TransferPlanRow/TypeIndex_TransferPlanRowTypeIndex.qbl
new file mode 100644
index 0000000..9ac1725
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/TypeIndex_TransferPlanRowTypeIndex.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex TransferPlanRowTypeIndex
+{
+ Attributes:
+ [
+ TypeIndexAttribute
+ {
+ ModelElement: SourceStockpoingPointID
+ }
+ TypeIndexAttribute
+ {
+ ModelElement: TargetStockpoingPointID
+ }
+ TypeIndexAttribute
+ {
+ ModelElement: ProductID
+ }
+ ]
+}
diff --git a/_Main/BL/Type_TransferPlanRow/_ROOT_Type_TransferPlanRow.qbl b/_Main/BL/Type_TransferPlanRow/_ROOT_Type_TransferPlanRow.qbl
new file mode 100644
index 0000000..68692d7
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/_ROOT_Type_TransferPlanRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type TransferPlanRow
+{
+ #keys: '5[413988.0.1292031913][413988.0.1292031911][0.0.0][413988.0.1292031912][413988.0.1292031914]'
+ BaseType: Object
+ StructuredName: 'TransferPlanRows'
+}
diff --git a/_Main/BL/Type_UnitPeriodTime/Method_OnCreate.qbl b/_Main/BL/Type_UnitPeriodTime/Method_OnCreate.qbl
new file mode 100644
index 0000000..1300ba6
--- /dev/null
+++ b/_Main/BL/Type_UnitPeriodTime/Method_OnCreate.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnCreate #extension
+{
+ TextBody:
+ [*
+ // rislai Jun-18-2024 (created)
+ ShiftPlan::Create( this );
+ *]
+}
diff --git a/_Main/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl b/_Main/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl
new file mode 100644
index 0000000..ad74069
--- /dev/null
+++ b/_Main/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization UnitPeriodTime #extension
+{
+}
diff --git a/_Main/Sys/Repr/Global/Date.qrp b/_Main/Sys/Repr/Global/Date.qrp
index e6ffd89..5173e05 100644
--- a/_Main/Sys/Repr/Global/Date.qrp
+++ b/_Main/Sys/Repr/Global/Date.qrp
@@ -8,7 +8,7 @@
]
DataRepresentation.Default
{
- FormatString: 'D-MM-YOnMax(-)OnMin(-)'
+ FormatString: 'Y-M2-D2OnMax(-)OnMin(-)'
InheritFormatting: false
}
}
diff --git a/_Main/Sys/Repr/Global/DateTime.qrp b/_Main/Sys/Repr/Global/DateTime.qrp
index 354990c..c84be85 100644
--- a/_Main/Sys/Repr/Global/DateTime.qrp
+++ b/_Main/Sys/Repr/Global/DateTime.qrp
@@ -8,7 +8,7 @@
]
DataRepresentation.Default
{
- FormatString: 'D-MM-YOnMax(-)OnMin(-)'
+ FormatString: 'Y-M2-D2 H2:m:sOnMax(-)OnMin(-)'
InheritFormatting: false
}
}
diff --git a/_Main/Sys/Repr/Global/ShiftPlan.qrp b/_Main/Sys/Repr/Global/ShiftPlan.qrp
new file mode 100644
index 0000000..661a54a
--- /dev/null
+++ b/_Main/Sys/Repr/Global/ShiftPlan.qrp
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation ShiftPlan
+{
+ AttributeRepresentation Remark
+ {
+ AttributeKey: '[412672.0.1066680030]'
+ Conditional:
+ [
+ DataRepresentation.Conditional
+ {
+ BackgroundColor: '$FFCC99'
+ ConditionBody: 'object.Color() = "LightOrange"'
+ ConversionBody: ''
+ DefaultBackgroundColor: false
+ InheritConversion: false
+ }
+ DataRepresentation.Conditional
+ {
+ BackgroundColor: 'Red'
+ ConditionBody: 'object.Color() = "Red"'
+ ConversionBody: ''
+ DefaultBackgroundColor: false
+ InheritConversion: false
+ }
+ DataRepresentation.Conditional
+ {
+ BackgroundColor: '$33CCCC'
+ ConditionBody: 'object.Color() = "Cyan"'
+ ConversionBody: ''
+ DefaultBackgroundColor: false
+ InheritConversion: false
+ }
+ DataRepresentation.Conditional
+ {
+ BackgroundColor: '$99CCFF'
+ ConditionBody: 'object.Color() = "LightBlue"'
+ ConversionBody: ''
+ DefaultBackgroundColor: false
+ InheritConversion: false
+ }
+ ]
+ }
+ RelationRepresentation UnitPeriodTime { RelationKey: '[412672.0.1066680008]' Visibility: 'Normal' }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def
new file mode 100644
index 0000000..ad37324
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component ActionBarGroupPlanViews #extension
+{
+ Children:
+ [
+ Component ButtonShiftPlan
+ {
+ #keys: '[412672.0.1064451018]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'COMPASSES'
+ Label: '鐝璁″垝'
+ Taborder: 8
+ ]
+ }
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews\043859.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews\043859.def"
new file mode 100644
index 0000000..062b204
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews\043859.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component ActionBarGroupScenarioComparisonViews #extension
+{
+ Children:
+ [
+ Component ButtonScenarioComparisonDemandComparison
+ {
+ #keys: '[412672.0.1090347286]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EQUALS'
+ Label: '闇�姹傚姣�'
+ Taborder: 8
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def
new file mode 100644
index 0000000..456f8a2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+Component ActionBarPagePlan #extension
+{
+ Children:
+ [
+ #child: ActionBarGroupPlanViews
+ #child: abgSecondDevelopmentPlan
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def
new file mode 100644
index 0000000..fb3b421
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component ActionBarPageScenarioComparison #extension
+{
+ Children:
+ [
+ #child: ActionBarGroupScenarioComparisonViews
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
new file mode 100644
index 0000000..c40d27d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+Component abgSecondDevelopmentPlan
+{
+ #keys: '[413988.0.1290310419]'
+ BaseType: 'WebActionBarGroup'
+ Children:
+ [
+ Component bTransferPlan
+ {
+ #keys: '[413988.0.1290300652]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'HAND_TRUCK_BOX'
+ Label: 'Transfer plan'
+ Taborder: 0
+ ]
+ }
+ Component bBlank
+ {
+ #keys: '[413988.0.1291640400]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Category: 'Actions-2'
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Method_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Method_OnCreated.def
new file mode 100644
index 0000000..f3b6863
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Method_OnCreated.def
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnCreated () id:Method_ApplicationMacroPlanner_OnCreated #extension
+{
+ Body:
+ [*
+ // On created of Application
+
+ // Restore active MacroPlan scenario to DataHolderActiveScenario
+ // and Dropdown
+ if( not isnull( ScenarioManager ) )
+ {
+ if( not isnull( MacroPlan ) )
+ {
+ scenario := select( ScenarioManager, ScenarioMP, sce,
+ sce.DatasetMDSID() = MacroPlan.MDSID() )
+
+ if( not isnull( scenario ) )
+ {
+ DataHolderActiveScenario.Data( scenario );
+ DataHolderMacroPlanner.Data( MacroPlan );
+ }
+ }
+ }
+ // Sync user and roles ( sync during fresh startup without scenario creation )
+ if( not isnull( SWF_WorkflowDataset ) )
+ {
+ SWF_WorkflowDataset.OnUserLogin();
+ }
+
+ mdsidkey := RecycleBin::OnLogin();
+
+ componentmds := ApplicationScope.ComponentMDS();
+ mdsinstance := select( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().MDSKey() = mdsidkey );
+ if ( not isnull( mdsinstance ) and not mdsinstance.IsSelected() ) {
+ mdsinstance.ComponentMDSKind().SelectInstance( mdsinstance );
+ componentmds.Apply();
+ }
+
+ DataHolderCurrentUser.Data( QuintiqUser::CurrentUser().ShortName() );
+ // Also open a default view
+ ApplicationMacroPlanner.OpenView( 'Scenarios', ButtonScenarios1 );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def
index 563d822..ea79d88 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def
@@ -9,7 +9,9 @@
{
Body:
[*
- Test::Test( ScenarioManager,MacroPlan,Archive );
+ Test::Test( ScenarioManager,MacroPlan,Archive,RecycleBin );
+
+ WebMessageBox::Success( "Success");
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick.def
new file mode 100644
index 0000000..d62db6c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupPlanViews/ButtonShiftPlan
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick
+{
+ #keys: '[412672.0.1067373094]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationMacroPlanner.OpenView( 'ShiftPlan', this );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioCo.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioCo.def
new file mode 100644
index 0000000..b8c7979
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioCo.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupScenarioComparisonViews/ButtonScenarioComparisonDemandComparison
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupScenarioComparisonViews_ButtonScenarioComparisonDemandComparison_OnClick
+{
+ #keys: '[412672.0.1090347405]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ // Open view
+ ApplicationMacroPlanner.OpenView( 'DemandComparison', this );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick.def
new file mode 100644
index 0000000..af99f70
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgSecondDevelopmentPlan/bTransferPlan
+Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bTransferPlan_OnClick
+{
+ #keys: '[413988.0.1290322113]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "TransferPlan", true);
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index d05a449..e01fbb6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -18,7 +18,9 @@
#child: applicationFixedPageActionBarPageDef
#child: applicationDevelopmentActionBarPageDef_1
#child: abpAlgorithmPostProcessing
+ #child: ActionBarPagePlan
#child: ActionBarPageReport
+ #child: ActionBarPageScenarioComparison
]
}
Component dhBinaryDataPR id:dhBinaryDataPR_688
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlActions.def
new file mode 100644
index 0000000..7ac917e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+ #keys: '[413988.0.1292313213]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component btnOk
+ {
+ #keys: '[413988.0.1292313217]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'OK'
+ Taborder: 0
+ ]
+ }
+ Component btnCancel
+ {
+ #keys: '[413988.0.1292313219]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Cancel'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ Border: true
+ ExcludeFromActiveComponent: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Padding: 'true'
+ Style: 'footer'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def
new file mode 100644
index 0000000..d0331a8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Component_pnlContent.def
@@ -0,0 +1,64 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+ #keys: '[413988.0.1292313211]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component npUpperLimitOfTransferCapacityZKG
+ {
+ #keys: '[413988.0.1292313261]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ Label: 'ZKG(pcs)'
+ Taborder: 0
+ ]
+ }
+ Component npUpperLimitOfTransferCapacityZKM
+ {
+ #keys: '[413988.0.1292313339]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ Label: 'ZKM(pcs)'
+ Taborder: 1
+ ]
+ }
+ Component npUpperLimitOfTransferCapacityPL
+ {
+ #keys: '[413988.0.1292313341]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ Label: 'PL(pcs)'
+ Taborder: 2
+ ]
+ }
+ Component npUpperLimitOfTransferCapacityKW
+ {
+ #keys: '[413988.0.1292313343]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ Label: 'KW(pcs)'
+ Taborder: 3
+ ]
+ }
+ Component npUpperLimitOfTransferCapacityAGW
+ {
+ #keys: '[413988.0.1292313345]'
+ BaseType: 'WebNumberPicker'
+ Properties:
+ [
+ Label: 'AGW(pcs)'
+ Taborder: 4
+ ]
+ }
+ ]
+ Properties:
+ [
+ Padding: 'true'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..2917a99
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+ #keys: '[413988.0.1292313223]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ Form.Close();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..14ca6da
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+ #keys: '[413988.0.1292313222]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ Form.ApplyChanges();
+ Form.Close();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/_ROOT_Component_DialogUpperLimitOfTransferCapacity.def b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/_ROOT_Component_DialogUpperLimitOfTransferCapacity.def
new file mode 100644
index 0000000..338e32f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogUpperLimitOfTransferCapacity/_ROOT_Component_DialogUpperLimitOfTransferCapacity.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogUpperLimitOfTransferCapacity
+{
+ #keys: '[413988.0.1292313209]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pnlContent
+ #child: pnlActions
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ EnterButton: 'btnOk'
+ EscapeButton: 'btnCancel'
+ ExcludeFromActiveComponent: true
+ Padding: 'false'
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_MatrixEditorTimeCapacities\043656.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_MatrixEditorTimeCapacities\043656.def"
new file mode 100644
index 0000000..b5fa1e7
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_MatrixEditorTimeCapacities\043656.def"
@@ -0,0 +1,119 @@
+Quintiq file version 2.0
+Component MatrixEditorTimeCapacities id:MatrixEditorTimeCapacities_656
+{
+ #keys: '[412672.0.1064460829]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellUnitPeriodTime
+ {
+ #keys: '[412672.0.1064460830]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorUnitPeriodTime
+ {
+ #keys: '[412672.0.1064460831]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Unit]'
+ Source: 'ApplicationMacroPlanner.DataHolderUnit'
+ Taborder: 0
+ Transformation: 'Elements.UnitPeriod.astype(UnitPeriodTime).ShiftPlan'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Outcome;Remark'
+ Column: 'UnitPeriodTime.Period_MP'
+ Row: 'UnitPeriodTime.Unit'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsUnit
+ {
+ #keys: '[412672.0.1064460832]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorUnit
+ {
+ #keys: '[412672.0.1064460833]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Unit]'
+ FixedFilter: 'object.HasCapacityTypeTime()'
+ Source: 'ApplicationMacroPlanner.DataHolderUnit'
+ Taborder: 0
+ Transformation: 'Elements.astype(Unit)'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'DisplayIndex'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsPeriod
+ {
+ #keys: '[412672.0.1064460834]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorPeriod
+ {
+ #keys: '[412672.0.1064460835]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Period_MP]'
+ Source: 'ApplicationMacroPlanner.DataHolderPeriods'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'StartDate'
+ SortCriteria: 'StartDate'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTime_1
+ #child: matrixeditorContextMenuTime_1
+ ]
+ Properties:
+ [
+ AllowAttributeConfiguration: true
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumnsPeriod'
+ ContextMenu: 'matrixeditorContextMenuTime'
+ Rows: 'MatrixEditorRowsUnit'
+ ShowSingleAttribute: true
+ Taborder: 1
+ ]
+ ResponseDefinitions:
+ [
+ DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorTimeCapacities_656_WebMenu_OnClick
+ {
+ #keys: '[412672.0.1064460817]'
+ Initiator: 'WebMenu'
+ IsInherited: false
+ ResponseType: 'OnClick'
+ Arguments:
+ [
+ ResponseDefinitionArgument selection
+ {
+ #keys: '[4387.0.17266428]'
+ Binding: 'this.Selection()'
+ }
+ ]
+ }
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_PanelMatrix\043675.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_PanelMatrix\043675.def"
new file mode 100644
index 0000000..963478f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_PanelMatrix\043675.def"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelMatrix id:PanelMatrix_675
+{
+ #keys: '[412672.0.1064460828]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTimeCapacities_656
+ #child: pOperation
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixEditorActionBarPageTime\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixEditorActionBarPageTime\0431.def"
new file mode 100644
index 0000000..e8e5951
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixEditorActionBarPageTime\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTime id:matrixEditorActionBarPageTime_1
+{
+ #keys: '[412672.0.1064460836]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixeditorContextMenuTime\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixeditorContextMenuTime\0431.def"
new file mode 100644
index 0000000..e123bee
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixeditorContextMenuTime\0431.def"
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTime id:matrixeditorContextMenuTime_1
+{
+ #keys: '[412672.0.1064460837]'
+ BaseType: 'matrixeditorContextMenu'
+ Children:
+ [
+ Component MenuCopy
+ {
+ #keys: '[138034.3.1296123318]'
+ BaseType: 'MenuCopy'
+ IsDerived: true
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ Component MenuSeparator
+ {
+ #keys: '[412672.0.1064460838]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Separator: true
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_pOperation.def b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_pOperation.def
new file mode 100644
index 0000000..0a1c73c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form568/Component_pOperation.def
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+Component pOperation
+{
+ #keys: '[412672.0.1084334216]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bExport id:bExport_187
+ {
+ #keys: '[412672.0.1084305542]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 0
+ ]
+ }
+ Component bDownload id:bDownload_774
+ {
+ #keys: '[412672.0.1084305565]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOWNLOAD'
+ Label: '涓嬭浇'
+ Taborder: 1
+ ]
+ }
+ Component dhXMLDataListener
+ {
+ #keys: '[412672.0.1084305593]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'ExportXMLManager'
+ Children:
+ [
+ Component DataExtractor510
+ {
+ #keys: '[412672.0.1084305608]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'RecycleBin'
+ FixedFilter: 'object.Name() = "ShiftPlanXML"'
+ Source: 'RecycleBin'
+ Taborder: 0
+ Transformation: 'ExportXMLManager'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_MatrixEditorTimeCapacities_656_OnUpdateValue\043317.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_MatrixEditorTimeCapacities_656_OnUpdateValue\043317.def"
new file mode 100644
index 0000000..a2602da
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_MatrixEditorTimeCapacities_656_OnUpdateValue\043317.def"
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: MatrixEditorTimeCapacities_656
+Response OnUpdateValue (
+ ShiftPlan cell,
+ String value,
+ String oldvalue
+) id:Response_MatrixEditorTimeCapacities_656_OnUpdateValue_317
+{
+ #keys: '[412672.0.1064460818]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMatrixEditor_OnUpdateValue'
+ QuillAction
+ {
+ Body:
+ [*
+ cell.SetRemark( value );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bDownload_OnClick.def
new file mode 100644
index 0000000..a78876c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bDownload_OnClick.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: pOperation/bDownload_774
+Response OnClick () id:Response_pOperation_bDownload_OnClick
+{
+ #keys: '[412672.0.1084305701]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ flag := true;
+ feedback := "";
+ if( isnull( dhXMLDataListener.Data() )){
+ flag := false;
+ feedback := "褰撳墠鏃犱笅杞芥暟鎹紝鐐瑰嚮瀵煎嚭鍒涘缓涓嬭浇鏁版嵁銆�"
+ }
+ return flag;
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := dhXMLDataListener.Data( ).Export();
+
+ Application.Download( "鐝璁″垝_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
+
+ dhXMLDataListener.Data( ).Delete();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bExport_OnClick.def
new file mode 100644
index 0000000..480c4f5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bExport_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: pOperation/bExport_187
+Response OnClick () id:Response_pOperation_bExport_OnClick
+{
+ #keys: '[412672.0.1083032516]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ rows := selectset( DataHolderUnit.Data(),Elements,unit,unit.HasCapacityTypeTime() );
+ columns := DataHolderPeriods.Data( );
+ ShiftPlan::AsyncExport( RecycleBin, rows, columns );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form568/_ROOT_Component_FormShihtPlan\043568.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form568/_ROOT_Component_FormShihtPlan\043568.def"
new file mode 100644
index 0000000..91bb4ea
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form568/_ROOT_Component_FormShihtPlan\043568.def"
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormShihtPlan
+{
+ #keys: '[412672.0.1064470671]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: PanelMatrix_675
+ ]
+ Properties:
+ [
+ Image: 'COMPASSES'
+ Title: '鐝璁″垝'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form989/Response_pHeader_bImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form989/Response_pHeader_bImport_OnClick.def
index 9f14d31..30c68ea 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form989/Response_pHeader_bImport_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form989/Response_pHeader_bImport_OnClick.def
@@ -24,7 +24,7 @@
webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
- generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( Archive, webFileBinaryData, fileName );
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
generalExcelImportAndExportDataSource.ReadStructure();
selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
new file mode 100644
index 0000000..e22590b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component MatrixEditor
+{
+ #keys: '[412672.0.1085881196]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell
+ {
+ #keys: '[412672.0.1085881197]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCells
+ {
+ #keys: '[412672.0.1085881198]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'LocalRow.LocalCell.astype(LocalCell_DemandComparison)'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'BaseVersionValue;CompareVersionValue;BaseVersion;CompareVersion;Gap'
+ Column: 'LocalColumn'
+ Row: 'LocalRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows
+ {
+ #keys: '[412672.0.1085881201]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRows
+ {
+ #keys: '[412672.0.1085881202]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'LocalRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns
+ {
+ #keys: '[412672.0.1085881205]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumns
+ {
+ #keys: '[412672.0.1085881206]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'LocalColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageDemandComparison
+ #child: matrixeditorContextMenuDemandComparison
+ ]
+ Properties:
+ [
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumns'
+ ContextMenu: 'matrixeditorContextMenuDemandComparison'
+ Rows: 'MatrixEditorRows'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
new file mode 100644
index 0000000..c3618ae
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelDemandComparison
+{
+ #keys: '[412672.0.1085881181]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor
+ Component dhComparisonData
+ {
+ #keys: '[412672.0.1085881305]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'LocalTable'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def
new file mode 100644
index 0000000..eaac96e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component PanelOperation
+{
+ #keys: '[412672.0.1085881251]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelOperation11
+ Component ButtonCompare
+ {
+ #keys: '[412672.0.1085802121]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '寮�濮嬪姣�'
+ Taborder: 1
+ ]
+ }
+ #child: pOperation_715
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def
new file mode 100644
index 0000000..828d235
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def
@@ -0,0 +1,81 @@
+Quintiq file version 2.0
+Component PanelOperation11
+{
+ #keys: '[412672.0.1085801711]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component DropDownListCompareVersion id:DropDownListCompareVersion_85
+ {
+ #keys: '[412672.0.1085801792]'
+ BaseType: 'WebDropDownList'
+ Databinding: 'ArchivePR'
+ Children:
+ [
+ Component DataExtractorOperation876 id:DataExtractorOperation876_293
+ {
+ #keys: '[412672.0.1085801793]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'Archive'
+ FilterArguments: 'baseSelection:QMacroPlanner::FormDemandComparison.dhBaseVersion'
+ FixedFilter: 'object <> baseSelection'
+ Source: 'Archive'
+ Taborder: 0
+ Transformation: 'ArchivePR'
+ ]
+ }
+ ]
+ Properties:
+ [
+ DisplayField: 'Name'
+ Label: '瀵规瘮闇�姹傜増鏈細'
+ Taborder: 2
+ ]
+ }
+ Component dhBaseVersion id:dhBaseVersion_357
+ {
+ #keys: '[412672.0.1085801820]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'ArchivePR'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ Component DropDownListBaseVersion id:DropDownListBaseVersion_668
+ {
+ #keys: '[412672.0.1085801851]'
+ BaseType: 'WebDropDownList'
+ Databinding: 'ArchivePR'
+ Children:
+ [
+ Component DataExtractorOperation id:DataExtractorOperation_669
+ {
+ #keys: '[412672.0.1085801852]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'Archive'
+ Source: 'Archive'
+ Taborder: 0
+ Transformation: 'ArchivePR'
+ ]
+ }
+ ]
+ Properties:
+ [
+ DisplayField: 'Name'
+ Label: '鍩哄噯闇�姹傜増鏈細'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixEditorActionBarPageDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixEditorActionBarPageDemandComparison.def
new file mode 100644
index 0000000..d36c6a6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixEditorActionBarPageDemandComparison.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageDemandComparison
+{
+ #keys: '[412672.0.1085881209]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixeditorContextMenuDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixeditorContextMenuDemandComparison.def
new file mode 100644
index 0000000..1b6282c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixeditorContextMenuDemandComparison.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuDemandComparison
+{
+ #keys: '[412672.0.1085881212]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pOperation\043715.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pOperation\043715.def"
new file mode 100644
index 0000000..b50844d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pOperation\043715.def"
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+Component pOperation id:pOperation_715
+{
+ #keys: '[412672.0.1092111928]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bExport
+ {
+ #keys: '[412672.0.1092111929]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 0
+ ]
+ }
+ Component bDownload
+ {
+ #keys: '[412672.0.1092111930]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOWNLOAD'
+ Label: '涓嬭浇'
+ Taborder: 1
+ ]
+ }
+ Component dhXMLDataListener
+ {
+ #keys: '[412672.0.1092111931]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'ExportXMLManager'
+ Children:
+ [
+ Component DataExtractor510
+ {
+ #keys: '[412672.0.1092111932]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'RecycleBin'
+ FixedFilter: 'object.Name() = "LocalTableXML"'
+ Source: 'RecycleBin'
+ Taborder: 0
+ Transformation: 'ExportXMLManager'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhComparisonData_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhComparisonData_OnDataChanged.def
new file mode 100644
index 0000000..16bd708
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelDemandComparison_dhComparisonData_OnDataChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison/dhComparisonData
+Response OnDataChanged () id:Response_PanelDemandComparison_dhComparisonData_OnDataChanged
+{
+ #keys: '[412672.0.1093351461]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ PanelDemandComparison.Title( this.Data().Name() );
+ *]
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged\043168.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged\043168.def"
new file mode 100644
index 0000000..a95fc67
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged\043168.def"
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelOperation11/DropDownListBaseVersion_668
+Response OnSelectionChanged (
+ ArchivePR selection
+) id:Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged_168
+{
+ #keys: '[412672.0.1085801849]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownList_OnSelectionChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhBaseVersion.Data( selection );
+ this.Tooltip( selection.Name() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged.def
new file mode 100644
index 0000000..ba590f9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: PanelOperation11/DropDownListCompareVersion_85
+Response OnSelectionChanged (
+ ArchivePR selection
+) id:Response_PanelOperation11_DropDownListCompareVersion_OnSelectionChanged
+{
+ #keys: '[412672.0.1093350988]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDropDownList_OnSelectionChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Tooltip( selection.Name() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonCompare_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonCompare_OnClick.def
new file mode 100644
index 0000000..a761ea1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonCompare_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelOperation/ButtonCompare
+Response OnClick () id:Response_PanelOperation_ButtonCompare_OnClick
+{
+ #keys: '[412672.0.1085802211]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ table := ArchivePR::Compared( RecycleBin,DropDownListBaseVersion.Data(),DropDownListCompareVersion.Data() );
+ dhComparisonData.Data( table );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bDownload_OnClick.def
new file mode 100644
index 0000000..1fd2a91
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bDownload_OnClick.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: pOperation_715/bDownload
+Response OnClick () id:Response_pOperation_715_bDownload_OnClick
+{
+ #keys: '[412672.0.1092111926]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ flag := true;
+ feedback := "";
+ if( isnull( dhXMLDataListener.Data() )){
+ flag := false;
+ feedback := "褰撳墠鏃犱笅杞芥暟鎹紝鐐瑰嚮瀵煎嚭鍒涘缓涓嬭浇鏁版嵁銆�"
+ }
+ return flag;
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := dhXMLDataListener.Data( ).Export();
+
+ Application.Download( "闇�姹傜増鏈姣擾" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
+
+ dhXMLDataListener.Data( ).Delete();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bExport_OnClick.def
new file mode 100644
index 0000000..02b5b31
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pOperation_715_bExport_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: pOperation_715/bExport
+Response OnClick () id:Response_pOperation_715_bExport_OnClick
+{
+ #keys: '[412672.0.1092111927]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ rows := selectset( dhComparisonData.Data(),LocalRow,row,true );
+ columns := selectset( dhComparisonData.Data( ),LocalColumn,column,true );
+ LocalCell_DemandComparison::AsyncExport( RecycleBin, rows, columns );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def
new file mode 100644
index 0000000..6d79dcf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormDemandComparison
+{
+ #keys: '[412672.0.1085881113]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: PanelDemandComparison
+ #child: PanelOperation
+ ]
+ Properties:
+ [
+ Image: 'EQUALS'
+ Title: '闇�姹傚姣�'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Response_pHeader_bImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Response_pHeader_bImport_OnClick.def
index 41b869f..0f2be2a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Response_pHeader_bImport_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPR_PP_Budget/Response_pHeader_bImport_OnClick.def
@@ -24,7 +24,7 @@
webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
- generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( Archive, webFileBinaryData, fileName );
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
generalExcelImportAndExportDataSource.ReadStructure();
selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormRoutings/Response_MacroPlanner_ListRoutings_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormRoutings/Response_MacroPlanner_ListRoutings_OnClick.def
deleted file mode 100644
index 48c0ca9..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormRoutings/Response_MacroPlanner_ListRoutings_OnClick.def
+++ /dev/null
@@ -1,18 +0,0 @@
-Quintiq file version 2.0
-#parent: ListRoutings
-Response OnClick () id:Response_ListRoutings_MenuSetUnitUphillRouting_OnClick
-{
- #keys: '[412672.0.1040131205]'
- CanBindMultiple: false
- DefinitionID => /ListRoutings/Responsedef_ListRoutings_WebMenu_OnClick
- GroupServerCalls: true
- QuillAction
- {
- Body:
- [*
- dlg := construct( DialogCreateEditUphillRouting );
-
- dlg.Create( );
- *]
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Response_pHeader_393_bImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Response_pHeader_393_bImport_OnClick.def
index 785331d..4aa2ab6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Response_pHeader_393_bImport_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormSixDigitCode/Response_pHeader_393_bImport_OnClick.def
@@ -24,7 +24,7 @@
webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
- generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( Archive, webFileBinaryData, fileName );
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
generalExcelImportAndExportDataSource.ReadStructure();
selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def
new file mode 100644
index 0000000..7db9d74
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditor872
+{
+ #keys: '[413988.0.1290322866]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell590
+ {
+ #keys: '[413988.0.1290322867]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractor862
+ {
+ #keys: '[413988.0.1290322868]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'TransferPlanColumn.TransferPlanCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Value'
+ Column: 'TransferPlanColumn'
+ Row: 'TransferPlanRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows481
+ {
+ #keys: '[413988.0.1290322871]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor661
+ {
+ #keys: '[413988.0.1290322872]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'TransferPlanRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'SourceStockpoingPointID;TargetStockpoingPointID;ProductID'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns681
+ {
+ #keys: '[413988.0.1290322875]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor445
+ {
+ #keys: '[413988.0.1290322876]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'TransferPlanColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'ColumnName'
+ SortCriteria: 'ColumnDate'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPage493
+ #child: matrixeditorContextMenu367
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumns681'
+ ContextMenu: 'matrixeditorContextMenu367'
+ Rows: 'MatrixEditorRows481'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixEditorActionBarPage493.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixEditorActionBarPage493.def
new file mode 100644
index 0000000..8117f9f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixEditorActionBarPage493.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage493
+{
+ #keys: '[413988.0.1290322879]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixeditorContextMenu367.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixeditorContextMenu367.def
new file mode 100644
index 0000000..263a486
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_matrixeditorContextMenu367.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu367
+{
+ #keys: '[413988.0.1290322882]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pContent.def
new file mode 100644
index 0000000..957b4ac
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pContent.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pContent
+{
+ #keys: '[413988.0.1290370837]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor872
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pHeader.def
new file mode 100644
index 0000000..74595a4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_pHeader.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component pHeader
+{
+ #keys: '[413988.0.1290370823]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bDownload
+ {
+ #keys: '[413988.0.1290361218]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Download'
+ Taborder: 0
+ ]
+ }
+ Component bMaximumDailyTransferCapacity
+ {
+ #keys: '[413988.0.1290361230]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Maximum daily transfer capacity'
+ Taborder: 1
+ ]
+ }
+ Component bGenerateReport
+ {
+ #keys: '[413988.0.1292223250]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Generate report'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Border: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def
new file mode 100644
index 0000000..17323ed
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: pHeader/bDownload
+Response OnClick () id:Response_pHeader_bDownload_OnClick
+{
+ #keys: '[413988.0.1292330526]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bGenerateReport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bGenerateReport_OnClick.def
new file mode 100644
index 0000000..2465dff
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bGenerateReport_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bGenerateReport
+Response OnClick () id:Response_pHeader_bGenerateReport_OnClick
+{
+ #keys: '[413988.0.1292330696]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MacroPlan );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ TransferPlanCell::GenerateReport( MacroPlan );
+
+ WebMessageBox::Success( Translations::A_VWED_Success() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def
new file mode 100644
index 0000000..fd89de9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bMaximumDailyTransferCapacity_OnClick.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: pHeader/bMaximumDailyTransferCapacity
+Response OnClick () id:Response_pHeader_bMaximumDailyTransferCapacity_OnClick
+{
+ #keys: '[413988.0.1292330611]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/_ROOT_Component_FormTransferPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/_ROOT_Component_FormTransferPlan.def
new file mode 100644
index 0000000..dd8a2b6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/_ROOT_Component_FormTransferPlan.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormTransferPlan
+{
+ #keys: '[413988.0.1290321873]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pContent
+ #child: pHeader
+ ]
+ Properties:
+ [
+ Image: 'HAND_TRUCK_BOX'
+ Title: 'Transfer plan'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw b/_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw
new file mode 100644
index 0000000..3f13663
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/DemandComparison.vw
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ page: ''
+ group: ''
+ index: 0
+ image: 'EQUALS'
+ description: ''
+ }
+ formatversion: 2
+ id: 'DemandComparison'
+ name: 'DemandComparison'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw b/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
new file mode 100644
index 0000000..1caecfc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ page: ''
+ group: ''
+ index: 0
+ image: 'COMPASSES'
+ description: ''
+ }
+ formatversion: 2
+ id: 'ShiftPlan'
+ name: 'ShiftPlan'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/TransferPlan.vw b/_Main/UI/MacroPlannerWebApp/Views/TransferPlan.vw
new file mode 100644
index 0000000..0cda1ef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/TransferPlan.vw
@@ -0,0 +1,146 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormTransferPlan
+ {
+ title: 'QMacroPlanner::FormTransferPlan'
+ shown: true
+ componentID: 'QMacroPlanner::FormTransferPlan'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 14
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components: null
+ }
+ form_FormOptimizerPuzzles
+ {
+ title: 'Optimizer Puzzles'
+ shown: false
+ componentID: 'FormOptimizerPuzzles'
+ layout
+ {
+ mode: 'dockright'
+ index: 0
+ }
+ components
+ {
+ FormOptimizerPuzzles_ListOptimizerPuzzles
+ {
+ }
+ FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+ {
+ groupDepth: -1
+ column_All_constraints
+ {
+ columnId: 'All constraints'
+ dataPath: 'All constraints'
+ dataType: 'string'
+ title: 'All constraints'
+ index: 0
+ subtotals: ''
+ width: 32
+ }
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ title: 'Name'
+ index: 1
+ subtotals: ''
+ width: 109
+ }
+ column_Description
+ {
+ columnId: 'Description'
+ dataPath: 'Description'
+ dataType: 'string'
+ title: 'Description'
+ index: 2
+ subtotals: ''
+ width: 207
+ }
+ }
+ }
+ }
+ form_FormKPI
+ {
+ title: 'KPI Dashboard'
+ shown: true
+ componentID: 'FormKPI'
+ layout
+ {
+ mode: 'dockright'
+ index: 1
+ }
+ components
+ {
+ FormKPI_PanelKPI
+ {
+ sizeRatio: 1
+ activeChild: 'PanelKPISelection'
+ }
+ FormKPI_PanelKPIDashboard
+ {
+ sizeRatio: 1
+ }
+ FormKPI_PanelKPISelection
+ {
+ sizeRatio: 1
+ }
+ FormKPI_ListKPISelection
+ {
+ QuillViewData
+ {
+ Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+ }
+ }
+ FormKPI_DataSetLevelKPISelection
+ {
+ groupDepth: -1
+ column_All_constraints
+ {
+ columnId: 'All constraints'
+ dataPath: 'All constraints'
+ dataType: 'string'
+ title: 'All constraints'
+ index: 0
+ subtotals: ''
+ width: 32
+ }
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ title: 'Name'
+ index: 1
+ subtotals: ''
+ width: 200
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 0
+ image: 'WALLET_OPEN'
+ description: ''
+ }
+ formatversion: 2
+ id: 'TransferPlan'
+ name: 'TransferPlan'
+ isglobal: false
+ isroot: true
+}
--
Gitblit v1.9.3