From fa3ad1cf772791f453cf09582fdf2292b9f8468c Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期五, 22 十一月 2024 16:11:21 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg

---
 _Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixEditorActionBarPageArchiveShiftPlan.def                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/_ROOT_Component_FormTRCForecast.def                                                      |   13 
 _Main/UI/MacroPlannerWebApp/Views/TRCForecastArchive.vw                                                                                        |  226 +++++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSalesDemands.def                                                             |    4 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditForecast/Method_SplitUsingCurve.def                                                      |   20 +
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_listContextMenuSD.def                                                            |   28 +
 _Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pContent.def                                                                   |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormForecasts/Response_MacroPlanner_ListSalesDemands_MenuSplitUsingCurve_OnClick.def                     |   19 +
 _Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan812.def                                              |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/_ROOT_Component_FormArchiveShiftPlan.def                                            |   18 +
 _Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pHeader.def                                                                    |   27 +
 _Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listContextMenuTRCForecast#1.def                                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_bTRCForecastArchive_OnClic.def |   16 +
 _Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_MatrixEditorArchiveShiftPlan.def                                          |   98 ++++++
 _Main/UI/MacroPlannerWebApp/Views/ArchiveShiftPlan.vw                                                                                          |  233 +++++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def                                        |   22 +
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveReport_OnClic.def |   17 +
 _Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Response_pHeader_bArchive_OnClick.def                                                    |   22 +
 _Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixeditorContextMenuArchiveShiftPlan.def                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listActionBarPageTRCForecast#1.def                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan.def                                                 |   11 
 _Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_ListTRCForecast#715.def                                                        |   41 ++
 22 files changed, 883 insertions(+), 0 deletions(-)

diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def
index 269a374..6d2c76c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def
@@ -79,9 +79,31 @@
       [
         Image: 'RSS'
         Label: '瀹為檯姣忔棩鐢熶骇璁″垝'
+        Taborder: 7
+      ]
+    }
+    Component ButtonArchiveReport
+    {
+      #keys: '[414996.1.245462991]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'KEYBOARD_KEY_SHIFT'
+        Label: 'Archive shift plan'
         Taborder: 6
       ]
     }
+    Component bTRCForecastArchive
+    {
+      #keys: '[413988.1.153623307]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'CLOUD'
+        Label: 'TRC 闇�姹傚瓨妗�'
+        Taborder: 8
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveReport_OnClic.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveReport_OnClic.def
new file mode 100644
index 0000000..e8d262c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveReport_OnClic.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupArchiveReport/ButtonArchiveReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveReport_OnClick
+{
+  #keys: '[414996.1.245463078]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      // Open view
+      ApplicationMacroPlanner.OpenView( 'ArchiveShiftPlan', this );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_bTRCForecastArchive_OnClic.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_bTRCForecastArchive_OnClic.def
new file mode 100644
index 0000000..e6cfa16
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_bTRCForecastArchive_OnClic.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupArchiveReport/bTRCForecastArchive
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupArchiveReport_bTRCForecastArchive_OnClick
+{
+  #keys: '[413988.1.153703587]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationMacroPlanner.OpenView( 'TRCForecastArchive', this );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditForecast/Method_SplitUsingCurve.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditForecast/Method_SplitUsingCurve.def
new file mode 100644
index 0000000..3235720
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditForecast/Method_SplitUsingCurve.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method SplitUsingCurve () id:Method_DialogCreateEditForecast_SplitUsingCurve
+{
+  #keys: '[414996.1.244251122]'
+  Body:
+  [*
+    // New Sales demand
+    owner := select( DataHolderProduct.Data(), Elements, e, not e.IsSystem() );
+    data := owner.SalesDemand( relshadow, Forecast, ID := "" ); // Temporary set ID to empty, will be set during OnOK
+    
+    PanelCurve.Visible( true );
+    bSplitUsingCurve.Visible( true );
+    btnOk.Visible( false );
+    
+    DataHolderDialogData.Data( &data );
+    Form.SetDefaultValue();
+    ApplicationMacroPlanner.ShowFormModal( Form );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_MatrixEditorArchiveShiftPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_MatrixEditorArchiveShiftPlan.def
new file mode 100644
index 0000000..68a79ae
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_MatrixEditorArchiveShiftPlan.def
@@ -0,0 +1,98 @@
+Quintiq file version 2.0
+Component MatrixEditorArchiveShiftPlan
+{
+  #keys: '[414996.1.242621343]'
+  BaseType: 'WebMatrixEditor'
+  Children:
+  [
+    Component MatrixEditorCellArchiveShiftPlan
+    {
+      #keys: '[414996.1.242621344]'
+      BaseType: 'WebMatrixEditorCell'
+      Children:
+      [
+        Component DataExtractorArchiveShiftPlan
+        {
+          #keys: '[414996.1.242621345]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'Archive'
+            Source: 'Archive'
+            Taborder: 0
+            Transformation: 'ArchiveShiftPlanRow.ArchiveShiftPlanCell'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Attributes: 'EventType;IsHoliday;Outcome;Remark;MacroPlanName'
+        Column: 'ArchiveShiftPlanColumn'
+        Row: 'ArchiveShiftPlanRow'
+        Taborder: 0
+      ]
+    }
+    Component MatrixEditorRowsArchiveShiftPlan
+    {
+      #keys: '[414996.1.242621348]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor830
+        {
+          #keys: '[414996.1.242621349]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'Archive'
+            Source: 'Archive'
+            Taborder: 0
+            Transformation: 'ArchiveShiftPlanRow'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'UnitID'
+        SortCriteria: 'UnitID'
+        Taborder: 1
+      ]
+    }
+    Component MatrixEditorColumnsArchiveShiftPlan
+    {
+      #keys: '[414996.1.242621352]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor576
+        {
+          #keys: '[414996.1.242621353]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'Archive'
+            Source: 'Archive'
+            Taborder: 0
+            Transformation: 'ArchiveShiftPlanColumn'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'StartDate'
+        SortCriteria: 'StartDate'
+        Taborder: 2
+      ]
+    }
+    #child: matrixEditorActionBarPageArchiveShiftPlan
+    #child: matrixeditorContextMenuArchiveShiftPlan
+  ]
+  Properties:
+  [
+    AllowMultipleAttributes: true
+    Columns: 'MatrixEditorColumnsArchiveShiftPlan'
+    ContextMenu: 'matrixeditorContextMenuArchiveShiftPlan'
+    Rows: 'MatrixEditorRowsArchiveShiftPlan'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan.def
new file mode 100644
index 0000000..13df5cc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan.def
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+Component PanelArchiveShiftPlan
+{
+  #keys: '[414996.1.242621266]'
+  BaseType: 'WebPanel'
+  Properties:
+  [
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan812.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan812.def
new file mode 100644
index 0000000..fa097a3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_PanelArchiveShiftPlan812.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelArchiveShiftPlan812
+{
+  #keys: '[414996.1.242621284]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: MatrixEditorArchiveShiftPlan
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixEditorActionBarPageArchiveShiftPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixEditorActionBarPageArchiveShiftPlan.def
new file mode 100644
index 0000000..b46f52d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixEditorActionBarPageArchiveShiftPlan.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageArchiveShiftPlan
+{
+  #keys: '[414996.1.242621356]'
+  BaseType: 'matrixEditorActionBarPage'
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixeditorContextMenuArchiveShiftPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixeditorContextMenuArchiveShiftPlan.def
new file mode 100644
index 0000000..c06b193
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/Component_matrixeditorContextMenuArchiveShiftPlan.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuArchiveShiftPlan
+{
+  #keys: '[414996.1.242621359]'
+  BaseType: 'matrixeditorContextMenu'
+  Properties:
+  [
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/_ROOT_Component_FormArchiveShiftPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/_ROOT_Component_FormArchiveShiftPlan.def
new file mode 100644
index 0000000..1ec637a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveShiftPlan/_ROOT_Component_FormArchiveShiftPlan.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormArchiveShiftPlan
+{
+  #keys: '[414996.1.242621193]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelArchiveShiftPlan
+    #child: PanelArchiveShiftPlan812
+  ]
+  Properties:
+  [
+    Image: 'KEYBOARD_KEY_SHIFT'
+    Title: 'Archive Shift Plan'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSalesDemands.def
index 5fc2143..1411531 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSalesDemands.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_ListSalesDemands.def
@@ -5,6 +5,10 @@
   [
     Component DataSetLevelSalesDemands #extension
     {
+      Children:
+      [
+        #child: listContextMenuSD
+      ]
       Properties:
       [
         Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgNotLinkedToPeriod","title":"ImgNotLinkedToPeriod","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgNotLinkedToPeriod"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsPostponed","title":"ImgIsPostponed","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsPostponed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"Quantity UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Original Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NettedQuantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NettedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment Illustration","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfillment","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round(2)"}},{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue(object.NettedQuantity()-object.FulfilledQuantity(),0.0).Round(2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Priority.Name","title":"Priority","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Priority.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandUncertaintyPercentage","title":"Uncertainty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandUncertaintyPercentage"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Origin","title":"Origin","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Origin"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Differnce","title":"Differnce","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Differnce"}}]'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_listContextMenuSD.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_listContextMenuSD.def
new file mode 100644
index 0000000..a228488
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Component_listContextMenuSD.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component listContextMenuSD #extension
+{
+  Children:
+  [
+    Component MenuSeparator2
+    {
+      #keys: '[414996.1.244250822]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Separator: true
+        Taborder: 10
+      ]
+    }
+    Component MenuSplitUsingCurve
+    {
+      #keys: '[414996.1.244250869]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'GRAPH_FORK'
+        Taborder: 11
+        Title: 'Split using curve'
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Response_MacroPlanner_ListSalesDemands_MenuSplitUsingCurve_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Response_MacroPlanner_ListSalesDemands_MenuSplitUsingCurve_OnClick.def
new file mode 100644
index 0000000..5651dd8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormForecasts/Response_MacroPlanner_ListSalesDemands_MenuSplitUsingCurve_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListSalesDemands
+Response OnClick () id:Response_MacroPlanner_ListSalesDemands_MenuSplitUsingCurve_OnClick
+{
+  #keys: '[414996.1.245583277]'
+  CanBindMultiple: false
+  DefinitionID => //FormSalesDemands/ListSalesDemands/Responsedef_ListSalesDemands_WebMenu_OnClick
+  GroupServerCalls: true
+  Initiator: 'MenuSplitUsingCurve'
+  QuillAction
+  {
+    Body:
+    [*
+      //Create new sales demand
+      dlg := construct( DialogCreateEditForecast );
+      dlg.SplitUsingCurve();
+    *]
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_ListTRCForecast\043715.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_ListTRCForecast\043715.def"
new file mode 100644
index 0000000..7318244
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_ListTRCForecast\043715.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListTRCForecast id:ListTRCForecast_715
+{
+  #keys: '[413988.1.153585043]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorTRCForecast
+    {
+      #keys: '[413988.1.153585044]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'InterfaceDataset'
+        Source: 'InterfaceDataset'
+        Taborder: 0
+        Transformation: 'InterfaceTRCForecast'
+      ]
+    }
+    #child: listActionBarPageTRCForecast_1
+    Component DataSetLevelTRCForecast
+    {
+      #keys: '[413988.1.153585046]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuTRCForecast_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Date","title":"Date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Date"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Factory","title":"Factory","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Factory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Generation","title":"Generation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Generation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MLBMQB","title":"MLBMQB","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MLBMQB"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PartNumber","title":"PartNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PartNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Power","title":"Power","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Power"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}}]'
+        ContextMenu: 'listContextMenuTRCForecast'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listActionBarPageTRCForecast\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listActionBarPageTRCForecast\0431.def"
new file mode 100644
index 0000000..b4d51e6
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listActionBarPageTRCForecast\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageTRCForecast id:listActionBarPageTRCForecast_1
+{
+  #keys: '[413988.1.153585045]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listContextMenuTRCForecast\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listContextMenuTRCForecast\0431.def"
new file mode 100644
index 0000000..5a6ef17
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_listContextMenuTRCForecast\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuTRCForecast id:listContextMenuTRCForecast_1
+{
+  #keys: '[413988.1.153585047]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pContent.def b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pContent.def
new file mode 100644
index 0000000..eb38c4d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pContent.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pContent
+{
+  #keys: '[413988.1.153584900]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListTRCForecast_715
+  ]
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pHeader.def
new file mode 100644
index 0000000..82c332f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Component_pHeader.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+Component pHeader
+{
+  #keys: '[413988.1.153584890]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component bArchive
+    {
+      #keys: '[413988.1.153585113]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'DOCUMENT_ZIP'
+        Label: '瀛樻。'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Response_pHeader_bArchive_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Response_pHeader_bArchive_OnClick.def
new file mode 100644
index 0000000..20458b9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/Response_pHeader_bArchive_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader/bArchive
+Response OnClick () id:Response_pHeader_bArchive_OnClick
+{
+  #keys: '[413988.1.153530591]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( InterfaceDataset ) and not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      InterfaceTRCForecast::ArchivedData( InterfaceDataset, MacroPlan );
+      
+      WebMessageBox::Success( Translations::A_VWED_Success() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/_ROOT_Component_FormTRCForecast.def b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/_ROOT_Component_FormTRCForecast.def
new file mode 100644
index 0000000..6879088
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTRCForecast/_ROOT_Component_FormTRCForecast.def
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormTRCForecast
+{
+  #keys: '[413988.1.153584709]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pHeader
+    #child: pContent
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/ArchiveShiftPlan.vw b/_Main/UI/MacroPlannerWebApp/Views/ArchiveShiftPlan.vw
new file mode 100644
index 0000000..55a716f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/ArchiveShiftPlan.vw
@@ -0,0 +1,233 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormArchiveShiftPlan
+      {
+        title: 'QMacroPlanner::FormArchiveShiftPlan'
+        shown: true
+        componentID: 'QMacroPlanner::FormArchiveShiftPlan'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 25
+          columnPosition: 1
+          columnSpan: 9
+        }
+        components
+        {
+          FormArchiveShiftPlan_PanelArchiveShiftPlan
+          {
+            sizeRatio: 1
+          }
+          FormArchiveShiftPlan_PanelArchiveShiftPlan812
+          {
+            sizeRatio: 1
+          }
+          FormArchiveShiftPlan_MatrixEditorArchiveShiftPlan
+          {
+            gridColor: '#c4c4c4'
+            totalHeaderWidth: 200
+            attributeHeaderWidthRatio: 0.6
+            nameHeaderWidthRatio: 0.4
+            columnWidth: 100
+            horizontalGrid: true
+            verticalGrid: true
+            backendState
+            {
+              componentId: 'QMacroPlanner::FormArchiveShiftPlan.MatrixEditorArchiveShiftPlan'
+              state
+              {
+                cells
+                {
+                  attributes
+                  {
+                    attribute_EventType
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 0
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'EventType'
+                    }
+                    attribute_IsHoliday
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 1
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'IsHoliday'
+                    }
+                    attribute_Outcome
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 2
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Outcome'
+                    }
+                    attribute_Remark
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 3
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Remark'
+                    }
+                    attribute_MacroPlanName
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 4
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'MacroPlanName'
+                    }
+                  }
+                }
+                columns
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'StartDate'"
+                  }
+                }
+                rows
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'UnitID'"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      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
+    {
+    }
+    image: 'KEYBOARD_KEY_SHIFT'
+    page: ''
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: 'ArchiveShiftPlan'
+  name: 'ArchiveShiftPlan'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/TRCForecastArchive.vw b/_Main/UI/MacroPlannerWebApp/Views/TRCForecastArchive.vw
new file mode 100644
index 0000000..228c90a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/TRCForecastArchive.vw
@@ -0,0 +1,226 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormTRCForecast
+      {
+        title: 'QMacroPlanner::FormTRCForecast'
+        shown: true
+        componentID: 'QMacroPlanner::FormTRCForecast'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 14
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormTRCForecast_pHeader
+          {
+            sizeRatio: 1
+          }
+          FormTRCForecast_pContent
+          {
+            sizeRatio: 1
+          }
+          FormTRCForecast_ListTRCForecast
+          {
+          }
+          FormTRCForecast_DataSetLevelTRCForecast
+          {
+            groupDepth: -1
+            column_Date
+            {
+              columnId: 'Date'
+              dataPath: 'Date'
+              dataType: 'date'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_Factory
+            {
+              columnId: 'Factory'
+              dataPath: 'Factory'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_Generation
+            {
+              columnId: 'Generation'
+              dataPath: 'Generation'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_MLBMQB
+            {
+              columnId: 'MLBMQB'
+              dataPath: 'MLBMQB'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_PartNumber
+            {
+              columnId: 'PartNumber'
+              dataPath: 'PartNumber'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_Power
+            {
+              columnId: 'Power'
+              dataPath: 'Power'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      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: 'CLOUD'
+    description: ''
+  }
+  formatversion: 2
+  id: 'TRCForecastArchive'
+  name: 'TRCForecastArchive'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3