From d59d62798bf558ba526350d81333d538aa0af812 Mon Sep 17 00:00:00 2001
From: rislai <risheng.lai@capgemini.com>
Date: 星期五, 21 六月 2024 16:10:24 +0800
Subject: [PATCH] 添加需求版本对比功能
---
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def | 18
_Main/BL/Type_ShiftPlan/Attribute_Color.qbl | 7
_Main/BL/Relations/Relation_LocalColumn_LocalTable_LocalTable_LocalColumn.qbl | 23
_Main/Sys/Repr/Global/ShiftPlan.qrp | 45 +
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bExport_OnClick.def | 18
_Main/BL/Relations/Relation_ExportXMLManager_RecycleBin_RecycleBin_ExportXMLManager.qbl | 23
_Main/BL/Type_ExportXMLData/_ROOT_Type_ExportXMLData.qbl | 9
_Main/BL/Type_ExportXMLManager/_ROOT_Type_ExportXMLManager.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def | 26
_Main/BL/Relations/Relation_LocalRow_LocalCell_LocalCell_LocalRow.qbl | 23
_Main/BL/Type_ShiftPlan/StaticMethod_Export.qbl | 18
_Main/BL/Relations/Relation_LocalTable_RecycleBin_RecycleBin_LocalTable.qbl | 23
_Main/BL/Type_ShiftPlan/Method_CalculateEventType.qbl | 39 +
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl | 29 +
_Main/BL/Type_LocalCell/Attribute_Value.qbl | 7
_Main/BL/Type_Period_MP/_ROOT_Type_Period_MP.qbl | 6
_Main/BL/Relations/Relation_ShiftPlan_UnitPeriodTime_UnitPeriodTime_ShiftPlan.qbl | 23
_Main/BL/Type_ShiftPlan/StaticMethod_GetShiftPlanColumnXML.qbl | 50 +
LibMacroPlanner/BL/Type_UnitPeriodTime/Method_OnCreate.qbl | 10
_Main/BL/Type_LocalRow/_ROOT_Type_LocalRow.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonOperation_OnClick.def | 17
_Main/BL/Relations/Relation_LocalColumn_LocalCell_LocalCell_LocalColumn.qbl | 23
_Main/BL/Type_LocalTable/_ROOT_Type_LocalTable.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPlanViews.def | 18
LibMacroPlanner/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl | 1
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def | 24
_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/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged#168.def | 18
_Main/BL/Type_ShiftPlan/Method_GetAttributeByName.qbl | 19
_Main/BL/Type_ExportXMLManager/Attribute_FinalXML.qbl | 7
_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/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixeditorContextMenuDemandComparison.def | 10
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_pOperation_bDownload_OnClick.def | 30 +
_Main/UI/MacroPlannerWebApp/Component_Form568/_ROOT_Component_FormShihtPlan#568.def | 17
_Main/BL/Type_ShiftPlan/Function_CalcColor.qbl | 27
_Main/BL/Type_ShiftPlan/Function_CalcRemark.qbl | 13
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def | 8
_Main/BL/Type_ShiftPlan/Method_CalculateRemark#503.qbl | 30 +
_Main/BL/Type_LocalCell/_ROOT_Type_LocalCell.qbl | 9
_Main/BL/Type_ShiftPlan/Attribute_EventType.qbl | 7
_Main/BL/Type_ShiftPlan/_ROOT_Type_ShiftPlan.qbl | 9
_Main/BL/Type_ShiftPlan/Attribute_Remark.qbl | 7
_Main/Sys/Repr/Global/DateTime.qrp | 2
_Main/BL/Type_ExportXMLManager/Attribute_Name.qbl | 7
_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl | 2
_Main/BL/Type_ExportXMLData/Attribute_Priority.qbl | 7
_Main/BL/Type_RecycleBin/StaticMethod_OnLogin.qbl | 28
_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl | 20
_Main/BL/Type_LocalTable/Attribute_RowIndexCache.qbl | 7
_Main/BL/Type_Test/StaticMethod_Test.qbl | 5
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def | 1
_Main/BL/Type_LocalColumn/Attribute_Name.qbl | 7
_Main/BL/Type_LocalRow/Attribute_Index.qbl | 7
_Main/BL/Type_ShiftPlan/Method_SetRemark.qbl | 12
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Method_OnCreated.def | 44 +
_Main/BL/Relations/Relation_LocalRow_LocalTable_LocalTable_LocalRow.qbl | 23
_Main/BL/Dataset_RecycleBin/_ROOT_Dataset_RecycleBin.qbl | 10
_Main/BL/Type_ShiftPlan/Function_CalcEventType.qbl | 12
_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl | 21
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixeditorContextMenuTime#1.def | 33 +
_Main/BL/Type_ShiftPlan/Function_CalcOutcome.qbl | 14
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def | 77 ++
_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_MatrixEditorTimeCapacities#656.def | 119 ++++
_Main/UI/MacroPlannerWebApp/Component_Form568/Response_MatrixEditorTimeCapacities_656_OnUpdateValue#317.def | 20
_Main/BL/Type_ArchivePR/Method_Load.qbl | 71 ++
/dev/null | 18
_Main/BL/Type_ShiftPlan/Attribute_CustomRemark.qbl | 7
_Main/BL/Type_RecycleBin/_ROOT_Type_RecycleBin.qbl | 9
_Main/BL/Type_ShiftPlan/StaticMethod_AsyncExport.qbl | 31 +
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw | 16
_Main/BL/Type_LocalTable/Method_GetRowIndexCache.qbl | 12
_Main/BL/Type_ShiftPlan/StaticMethod_Create.qbl | 12
_Main/Sys/Repr/Global/Date.qrp | 2
_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/BL/Type_UnitPeriodTime/_ROOT_Type_UnitPeriodTime.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPlanViews_ButtonShiftPlan_OnClick.def | 16
_Main/UI/MacroPlannerWebApp/Component_Form568/Component_matrixEditorActionBarPageTime#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def | 97 +++
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_matrixEditorActionBarPageDemandComparison.def | 10
86 files changed, 1,660 insertions(+), 24 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_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/Type_ArchivePR/Method_Load.qbl b/_Main/BL/Type_ArchivePR/Method_Load.qbl
new file mode 100644
index 0000000..551358d
--- /dev/null
+++ b/_Main/BL/Type_ArchivePR/Method_Load.qbl
@@ -0,0 +1,71 @@
+Quintiq file version 2.0
+#parent: #root
+Method Load (
+ Archive archive,
+ LocalTable localTable
+) const
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ file := OSFile::Construct();
+ //originRow := localTable.LocalRow( relnew ,Index := localTable.GetRowIndexCache());
+ //carTypeRow := localTable.LocalRow( relnew ,Index := localTable.GetRowIndexCache());
+ //productRow := localTable.LocalRow( relnew ,Index := localTable.GetRowIndexCache());
+ //fourDigitRow := localTable.LocalRow( relnew,Index := localTable.GetRowIndexCache());
+
+ columns := selectset( localTable,LocalColumn,column,true );
+ columnTree := NamedValueTree::Create();
+ for( i := 0 ; i < columns.Size(); i++ ){
+ column := columns.Element( i );
+ tempHandle := columnTree.GetHandle( column.Name() );
+ columnTree.Root().AddChild( tempHandle,i );
+ }
+
+ try {
+ file.Open( this.FilePath(), "Read", false );
+ webFileBinaryData := file.ReadBinary();
+
+ generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( archive, webFileBinaryData, this.Name() );
+ generalExcelImportAndExportDataSource.ReadStructure();
+ selections := selectset( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
+ if( selections.Size() <> 0 ){
+ table := selections.Element( 0 );
+ generalColumns := selectset( table,GeneralExcelImportAndExportDataColumn,column,true );
+
+ // 鐢熸垚鍒楁暟鎹�
+ for( i := 0; i< generalColumns.Size(); i++ ){
+ generalColumn := generalColumns.Element( i );
+ column := localTable.LocalColumn( relnew, Name := generalColumn.Name(),Index := generalColumn.ColumnIndex() );
+ columns.Add( column );
+ tempHandle := columnTree.GetHandle( column.Name() );
+ columnTree.Root().AddChild( tempHandle,columns.Size() - 1 );
+ }
+
+ // 鐢熸垚鏁版嵁
+ rowSize := table.GeneralExcelImportAndExportDataRow( relsize );
+ for ( rowIndex := 0; rowIndex < rowSize; rowIndex++ ) {
+ generalRow := select( table, GeneralExcelImportAndExportDataRow, tempGEIAEDR, tempGEIAEDR.RowNr() = rowIndex );
+ row := localTable.LocalRow( relnew,Index := rowIndex );
+ generalCells := selectsortedset( generalRow,GeneralExcelImportAndExportDataCell,cell,true,cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() );
+
+ traverse( generalCells,Elements,generalCell ){
+ columnName := generalCell.GeneralExcelImportAndExportDataColumn().Name();
+ columnHandle := columnTree.GetHandle( columnName );
+ columnIndex := columnTree.Root().Child( columnHandle ).GetValueAsNumber();
+ column := columns.Element( columnIndex );
+ row.LocalCell( relnew,Value := generalCell.Value() ,LocalColumn := column );
+ }
+ }
+ }
+ // 鍚庣画鍒犻櫎
+ generalExcelImportAndExportDataSource.Delete();
+ file.Close();
+ } onerror {
+ if( not isnull( file )){
+ file.Close();
+ }
+ error( e );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl b/_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl
new file mode 100644
index 0000000..9f8f987
--- /dev/null
+++ b/_Main/BL/Type_ArchivePR/StaticMethod_Compared.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Compared (
+ RecycleBin recycleBin,
+ ArchivePR baseVersion,
+ ArchivePR compareVersion
+) as LocalTable
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ archive := baseVersion.Archive(); // archive涓嶅彲璁剧疆涓哄彧璇�
+
+ table := recycleBin.LocalTable( relnew );
+
+ baseVersion.Load( archive,table );
+ compareVersion.Load( archive,table );
+
+ return table;
+ *]
+}
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/StaticMethod_AwaitShiftPlanXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
new file mode 100644
index 0000000..7f10e9c
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
@@ -0,0 +1,29 @@
+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..be13358 100644
--- a/_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl
+++ b/_Main/BL/Type_GeneralExcelImportAndExportDataSource/StaticMethod_Upload.qbl
@@ -4,7 +4,7 @@
Archive archive,
BinaryValue binaryValue,
String filePath
-) as GeneralExcelImportAndExportDataSource
+) const as GeneralExcelImportAndExportDataSource
{
TextBody:
[*
diff --git a/_Main/BL/Type_LocalCell/Attribute_Value.qbl b/_Main/BL/Type_LocalCell/Attribute_Value.qbl
new file mode 100644
index 0000000..572510e
--- /dev/null
+++ b/_Main/BL/Type_LocalCell/Attribute_Value.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Value
+{
+ #keys: '3[412672.0.1086954759][412672.0.1086954758][412672.0.1086954760]'
+ ValueType: String
+}
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_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_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_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/_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_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_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_Export.qbl b/_Main/BL/Type_ShiftPlan/StaticMethod_Export.qbl
new file mode 100644
index 0000000..6883630
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/StaticMethod_Export.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ const ExportXMLManager manager
+) as BinaryValue
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+
+ tableGroupHandle := TableGroupHandle::Create( "tableGroupHandle" );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( manager.FinalXML() ) );
+ tableGroupHandle.Add( tableHandle );
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
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..df1ebb1 100644
--- a/_Main/BL/Type_Test/StaticMethod_Test.qbl
+++ b/_Main/BL/Type_Test/StaticMethod_Test.qbl
@@ -9,9 +9,8 @@
TextBody:
[*
// rislai Jun-9-2024 (created)
+ element := "<column><name>Att</name><type>String</type>";
- traverse( macroPlan,Routing,rt ){
- rt.UphillRouting( relflush );
- }
+ error( element.LikeUserLocale( "Unit" ) );
*]
}
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_ActionBarPagePlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def
new file mode 100644
index 0000000..cde4c13
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPagePlan.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component ActionBarPagePlan #extension
+{
+ Children:
+ [
+ #child: ActionBarGroupPlanViews
+ ]
+}
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_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/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index 576fb69..77bc80f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -18,6 +18,7 @@
#child: applicationFixedPageActionBarPageDef
#child: applicationDevelopmentActionBarPageDef_1
#child: abpAlgorithmPostProcessing
+ #child: ActionBarPagePlan
]
}
Component dhBinaryDataPR id:dhBinaryDataPR_688
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..24c257f
--- /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 := ShiftPlan::Export( dhXMLDataListener.Data( ));
+
+ 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_FormDemandComparison/Component_MatrixEditor.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
new file mode 100644
index 0000000..dd916e8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_MatrixEditor.def
@@ -0,0 +1,97 @@
+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'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Value'
+ 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: 'Index'
+ 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:
+ [
+ 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..c43c66e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component PanelOperation
+{
+ #keys: '[412672.0.1085881251]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelOperation11
+ Component ButtonOperation
+ {
+ #keys: '[412672.0.1085802121]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '寮�濮嬪姣�'
+ Taborder: 1
+ ]
+ }
+ ]
+ 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..0252f41
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation11.def
@@ -0,0 +1,77 @@
+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:
+ [
+ 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:
+ [
+ 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/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged\043168.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged\043168.def"
new file mode 100644
index 0000000..b082604
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation11_DropDownListBaseVersion_OnSelectionChanged\043168.def"
@@ -0,0 +1,18 @@
+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 );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonOperation_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonOperation_OnClick.def
new file mode 100644
index 0000000..e397283
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_ButtonOperation_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelOperation/ButtonOperation
+Response OnClick () id:Response_PanelOperation_ButtonOperation_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/_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_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/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
+}
--
Gitblit v1.9.3