From b16deb7cf4eb651c74e73ef6723a0e8eb7676ee1 Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期一, 28 十月 2024 17:14:17 +0800
Subject: [PATCH] 添加下发班次计划信息的入口,调整锁定期的界面格式

---
 _Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/Response_PanelDispatchShiftSchedulingInformation_bDispatch_OnClick.def |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent.def                                                               |   42 --
 _Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/_ROOT_Component_FormDispatchShiftSchedulingInformation.def             |    4 
 _Main/BL/Type_UphillRouting/StaticMethod_Create.qbl                                                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw                                                                             |  508 ++++++++++++++++++++++++++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_cbAllProduct_OnChanged.def                                           |   22 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pProduct#519.def                                                             |   52 +++
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_ddlProduct_OnSelectionChanged.def                                    |   18 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent661_cbAllProductInStockingPoint_OnChanged.def                       |   20 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent661.def                                                            |   52 +++
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPublish_ButtonDispatchShiftSchedulingInf.def      |   17 +
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPublish.def                                                   |   11 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlActions_btnOk_OnClick.def                                                  |   17 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent_dsLockDate_OnCreated.def                                           |   17 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/_ROOT_Component_DialogCreateLockPeriod.def                                             |    3 
 15 files changed, 759 insertions(+), 32 deletions(-)

diff --git a/_Main/BL/Type_UphillRouting/StaticMethod_Create.qbl b/_Main/BL/Type_UphillRouting/StaticMethod_Create.qbl
index a7f7173..b8cb174 100644
--- a/_Main/BL/Type_UphillRouting/StaticMethod_Create.qbl
+++ b/_Main/BL/Type_UphillRouting/StaticMethod_Create.qbl
@@ -10,7 +10,7 @@
   TextBody:
   [*
     // rislai Jun-14-2024 (created)
-    traverse( unit,Operation.RoutingForPlanningMatrix,routing , routing.IsEnabled() and LocalTool::IsOverlap( startDate,endDate,routing.Start(),routing.End())){
+    traverse( unit,Operation.RoutingForPlanningMatrix,routing , routing.IsEnabled() and LocalTool::IsAnyDurationContained( startDate.DateTime(),endDate.DateTime(),routing.Start().DateTime(),routing.End().DateTime())){
       suffix := "_浜х嚎鐖潯_";
       
       data := UphillRouting::Create( routing,startDate,endDate,percentage,suffix );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPublish.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPublish.def
index 3e6d328..5ef5282 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPublish.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupPublish.def
@@ -16,6 +16,17 @@
         Taborder: 0
       ]
     }
+    Component ButtonDispatchShiftSchedulingInformation
+    {
+      #keys: '[414996.1.173765219]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'SKIN_TIGER'
+        Label: '涓嬪彂鐝璁″垝淇℃伅'
+        Taborder: 1
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPublish_ButtonDispatchShiftSchedulingInf.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPublish_ButtonDispatchShiftSchedulingInf.def
new file mode 100644
index 0000000..db679ee
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupPublish_ButtonDispatchShiftSchedulingInf.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupPublish/ButtonDispatchShiftSchedulingInformation
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupPublish_ButtonDispatchShiftSchedulingInformation_OnClick
+{
+  #keys: '[414996.1.173765218]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      // Open view
+      ApplicationMacroPlanner.OpenView( 'DispatchShiftSchedulingInformation', this );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pProduct\043519.def" "b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pProduct\043519.def"
new file mode 100644
index 0000000..a93f402
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pProduct\043519.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pProduct
+{
+  #keys: '[414996.1.172931824]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddlProduct
+    {
+      #keys: '[414996.1.172931898]'
+      BaseType: 'WebDropDownList'
+      Databinding: 'Product_MP'
+      Children:
+      [
+        Component deContent id:deContent_245
+        {
+          #keys: '[414996.1.172931899]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'Product_MP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        DisplayField: 'ID'
+        Label: '浜у搧'
+        NumberOfColumns: 50
+        Taborder: 0
+      ]
+    }
+    Component cbAllProduct
+    {
+      #keys: '[414996.1.172931904]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent.def
index 33c5be9..91bbeb6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent.def
@@ -5,41 +5,25 @@
   BaseType: 'WebPanel'
   Children:
   [
-    Component ddlContent
-    {
-      #keys: '[412672.0.1039372244]'
-      BaseType: 'WebDropDownList'
-      Databinding: 'ProductInStockingPoint_MP'
-      Children:
-      [
-        Component deContent
-        {
-          #keys: '[412672.0.1039372246]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'MacroPlan'
-            Source: 'MacroPlan'
-            Taborder: 0
-            Transformation: 'Product_MP.ProductInStockingPoint_MP'
-          ]
-        }
-      ]
-      Properties:
-      [
-        DisplayField: 'Name'
-        Label: '浜у搧'
-        Taborder: 0
-      ]
-    }
-    Component dsContent
+    Component dsLockDate
     {
       #keys: '[412672.0.1039341942]'
       BaseType: 'WebDateSelector'
       Properties:
       [
-        DataBinding: 'ddlContent.Data.LockPeriod.LockDate'
         Label: '閿佸畾鏈熻嚦锛�'
+        Taborder: 3
+      ]
+    }
+    #child: pProduct
+    #child: pnlContent661
+    Component dhSelectProduct id:dhSelectProduct_159
+    {
+      #keys: '[414996.1.172932445]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'Product_MP'
+      Properties:
+      [
         Taborder: 1
       ]
     }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent661.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent661.def
new file mode 100644
index 0000000..df2d059
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Component_pnlContent661.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pnlContent661
+{
+  #keys: '[414996.1.172932399]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddlProductInStockingPoint
+    {
+      #keys: '[414996.1.172932647]'
+      BaseType: 'WebDropDownList'
+      Databinding: 'ProductInStockingPoint_MP'
+      Children:
+      [
+        Component deContent404
+        {
+          #keys: '[414996.1.172932649]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'Product_MP'
+            Source: 'dhSelectProduct'
+            Taborder: 0
+            Transformation: 'ProductInStockingPoint_MP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        DisplayField: 'StockingPointID'
+        Label: '搴撳瓨鐐�'
+        NumberOfColumns: 50
+        Taborder: 0
+      ]
+    }
+    Component cbAllProductInStockingPoint
+    {
+      #keys: '[414996.1.172932676]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_cbAllProduct_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_cbAllProduct_OnChanged.def
new file mode 100644
index 0000000..d41683e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_cbAllProduct_OnChanged.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pProduct/cbAllProduct
+Response OnChanged () id:Response_pProduct_cbAllProduct_OnChanged
+{
+  #keys: '[414996.1.172932859]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      if( this.Checked() ){
+        ddlProduct.Enabled( false,"" );
+        cbAllProductInStockingPoint.Checked( true );
+      }else{
+        ddlProduct.Enabled( true,"" );
+        cbAllProductInStockingPoint.Checked( false );
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_ddlProduct_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_ddlProduct_OnSelectionChanged.def
new file mode 100644
index 0000000..4bd82df
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pProduct_ddlProduct_OnSelectionChanged.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: pProduct/ddlProduct
+Response OnSelectionChanged (
+  Product_MP selection
+) id:Response_pProduct_ddlProduct_OnSelectionChanged
+{
+  #keys: '[414996.1.172932024]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDropDownList_OnSelectionChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      dhSelectProduct.Data( selection );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlActions_btnOk_OnClick.def
index 6cc46ec..f131cc6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlActions_btnOk_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlActions_btnOk_OnClick.def
@@ -9,7 +9,22 @@
   {
     Body:
     [*
-      LockPeriod::Create( ddlContent.Data(),dsContent.Date() );
+      if( cbAllProduct.Checked() ){
+        traverse( MacroPlan,Product_MP,product ){
+          traverse( product,ProductInStockingPoint_MP,productInStockingPoint ){
+            LockPeriod::Create( productInStockingPoint,dsLockDate.Date() );
+          }
+        }
+      }else{
+        if( cbAllProductInStockingPoint.Checked() ){
+          product := ddlProduct.Data();
+          traverse( product,ProductInStockingPoint_MP,productInStockingPoint ){
+            LockPeriod::Create( productInStockingPoint,dsLockDate.Date() );
+          }
+        }else{
+          LockPeriod::Create( ddlProductInStockingPoint.Data(),dsLockDate.Date() );
+        } 
+      }
       Form.Close();
     *]
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent661_cbAllProductInStockingPoint_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent661_cbAllProductInStockingPoint_OnChanged.def
new file mode 100644
index 0000000..ada5d7e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent661_cbAllProductInStockingPoint_OnChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: pnlContent661/cbAllProductInStockingPoint
+Response OnChanged () id:Response_pnlContent661_cbAllProductInStockingPoint_OnChanged
+{
+  #keys: '[414996.1.172932951]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      if( this.Checked() ){
+        ddlProductInStockingPoint.Enabled( false,"" ); 
+      }else{
+        ddlProductInStockingPoint.Enabled( true,"" );
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent_dsLockDate_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent_dsLockDate_OnCreated.def
new file mode 100644
index 0000000..4301412
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent_dsLockDate_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pnlContent/dsLockDate
+Response OnCreated () id:Response_pnlContent_dsLockDate_OnCreated
+{
+  #keys: '[414996.1.172933211]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      date := MacroPlan.StartOfPlanning().Date().StartOfNextWeek().StartOfNextWeek().StartOfNextWeek() - 1;
+      this.Date( date );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/_ROOT_Component_DialogCreateLockPeriod.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/_ROOT_Component_DialogCreateLockPeriod.def
index ddaf02c..04859c6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/_ROOT_Component_DialogCreateLockPeriod.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/_ROOT_Component_DialogCreateLockPeriod.def
@@ -16,6 +16,9 @@
     EnterButton: 'btnOk'
     EscapeButton: 'btnCancel'
     ExcludeFromActiveComponent: true
+    Image: 'LOCK'
+    MinimumColumns: 70
     Padding: 'false'
+    Title: '璁剧疆閿佸畾鏈�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/Response_PanelDispatchShiftSchedulingInformation_bDispatch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/Response_PanelDispatchShiftSchedulingInformation_bDispatch_OnClick.def
index 837ac98..edcb05d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/Response_PanelDispatchShiftSchedulingInformation_bDispatch_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/Response_PanelDispatchShiftSchedulingInformation_bDispatch_OnClick.def
@@ -23,6 +23,8 @@
         factoryNameChinese := factoryNameChinese.Concat( "澶ц繛宸ュ巶;" );
         factoryNameEnglish := factoryNameEnglish.Concat( "DL;" );
       }
+      factoryNameChinese := factoryNameChinese.SubString( 0,factoryNameChinese.Length() - 1 );
+      factoryNameEnglish := factoryNameEnglish.SubString( 0,factoryNameEnglish.Length() - 1 );
       if( WebMessageBox::Question( Translations::RecycleBin_DispatchShiftSchedulingDispatchCheck( factoryNameChinese,factoryNameEnglish ),Translations::MessageBox_YesNo() ) = 0 ){
         if( cbCC.Checked() ){
           message := DispatchShiftSchedulingLine::DispatchCC( RecycleBin );
@@ -32,8 +34,10 @@
           message := DispatchShiftSchedulingLine::DispatchDL( RecycleBin ); 
           WebMessageBox::Information( message );
         }
+        WebMessageBox::Success( "涓嬪彂鎴愬姛" );
+      }else{
+        WebMessageBox::Success( "Cancel" );
       }
-      WebMessageBox::Success( "涓嬪彂鎴愬姛" );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/_ROOT_Component_FormDispatchShiftSchedulingInformation.def b/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/_ROOT_Component_FormDispatchShiftSchedulingInformation.def
index ebd8b92..15ae9b0 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/_ROOT_Component_FormDispatchShiftSchedulingInformation.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDispatchShiftSchedulingInformation/_ROOT_Component_FormDispatchShiftSchedulingInformation.def
@@ -10,4 +10,8 @@
     #child: PanelData
     #child: PanelDispatchShiftSchedulingInformation
   ]
+  Properties:
+  [
+    Title: '涓嬪彂鐝璁″垝淇℃伅'
+  ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw b/_Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw
new file mode 100644
index 0000000..46fb0ea
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw
@@ -0,0 +1,508 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormDispatchShiftSchedulingInformation
+      {
+        title: 'QMacroPlanner::FormDispatchShiftSchedulingInformation'
+        shown: true
+        componentID: 'QMacroPlanner::FormDispatchShiftSchedulingInformation'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 6
+          columnPosition: 6
+          columnSpan: 4
+        }
+        components
+        {
+          FormDispatchShiftSchedulingInformation_PanelDispatchShiftSchedulingInformation
+          {
+            sizeRatio: 1
+          }
+          FormDispatchShiftSchedulingInformation_PanelData
+          {
+            sizeRatio: 1
+          }
+          FormDispatchShiftSchedulingInformation_ListData
+          {
+          }
+          FormDispatchShiftSchedulingInformation_DataSetLevelData
+          {
+            groupDepth: -1
+            sort: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.ShiftDate'
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_ID
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.ID'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.ID'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_FactoryName
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.FactoryName'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.FactoryName'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_Fac
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.Fac'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.Fac'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_LineName
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.LineName'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.LineName'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_ProductID
+            {
+              columnId: 'DispatchShiftSchedulingProduct.ProductID'
+              dataPath: 'DispatchShiftSchedulingProduct.ProductID'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_ShiftName
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.ShiftName'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.ShiftName'
+              dataType: 'string'
+              index: 5
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_ShiftDate
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.ShiftDate'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.ShiftDate'
+              dataType: 'date'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_SingleShiftName
+            {
+              columnId: 'SingleShiftName'
+              dataPath: 'SingleShiftName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+            column_ShiftVolume
+            {
+              columnId: 'ShiftVolume'
+              dataPath: 'ShiftVolume'
+              dataType: 'real'
+              index: 8
+              subtotals: ''
+              width: 150
+            }
+            column_ShiftStartDate
+            {
+              columnId: 'ShiftStartDate'
+              dataPath: 'ShiftStartDate'
+              dataType: 'datetime'
+              index: 9
+              subtotals: ''
+              width: 150
+            }
+            column_ShiftEndDate
+            {
+              columnId: 'ShiftEndDate'
+              dataPath: 'ShiftEndDate'
+              dataType: 'datetime'
+              index: 10
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_VersionName
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.VersionName'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.VersionName'
+              dataType: 'string'
+              index: 11
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_InterfaceTime
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.InterfaceTime'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.InterfaceTime'
+              dataType: 'datetime'
+              index: 12
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_VersionFlag
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.VersionFlag'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.VersionFlag'
+              dataType: 'string'
+              index: 13
+              subtotals: ''
+              width: 150
+            }
+            column_DispatchShiftSchedulingProduct_DispatchShiftSchedulingLine_Tips
+            {
+              columnId: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.Tips'
+              dataPath: 'DispatchShiftSchedulingProduct.DispatchShiftSchedulingLine.Tips'
+              dataType: 'string'
+              index: 14
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormKPI
+      {
+        title: 'KPI Dashboard'
+        shown: false
+        componentID: 'FormKPI'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        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
+            }
+          }
+        }
+      }
+      form_FormOptimizerStrategiesSlideIn
+      {
+        title: 'Optimizer Strategies'
+        shown: false
+        componentID: 'FormOptimizerStrategiesSlideIn'
+        layout
+        {
+          mode: 'dockright'
+          index: 1
+        }
+        components
+        {
+          FormOptimizerStrategiesSlideIn_ListOptimizerStrategiesSlideIn
+          {
+          }
+          FormOptimizerStrategiesSlideIn_DataSetLevelOptimizerStrategiesSlideIn
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_ImgIsValid
+            {
+              columnId: 'ImgIsValid'
+              dataPath: 'ImgIsValid'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 270
+            }
+          }
+        }
+      }
+      form_FormSanityCheck
+      {
+        title: 'Sanity Check'
+        shown: false
+        componentID: 'FormSanityCheck'
+        layout
+        {
+          mode: 'dockright'
+          index: 2
+        }
+        components
+        {
+          FormSanityCheck_PanelSanityCheckToolbar
+          {
+            sizeRatio: 1
+          }
+          FormSanityCheck_PanelSanityCheckContent
+          {
+            sizeRatio: 1
+          }
+          FormSanityCheck_PanelSanityCheckGroup
+          {
+            sizeRatio: 4
+          }
+          FormSanityCheck_ListSanityCheckGroup
+          {
+          }
+          FormSanityCheck_DataSetLevelSanityCheckGroup
+          {
+            groupDepth: -1
+            sort: 'DESC:IsShown,DESC:SanityCheckHighestCategory,DESC:_Expr3'
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Show
+            {
+              columnId: 'Show'
+              dataPath: 'Show'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 32
+            }
+            column_Category
+            {
+              columnId: 'Category'
+              dataPath: 'Category'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 32
+            }
+            column_Group
+            {
+              columnId: 'Group'
+              dataPath: 'Group'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 270
+            }
+            column__Expr3
+            {
+              columnId: '_Expr3'
+              dataPath: '_Expr3'
+              dataType: 'number'
+              index: 4
+              subtotals: ''
+              width: 95
+            }
+          }
+          FormSanityCheck_PanelSanityCheckMessage
+          {
+            sizeRatio: 5
+          }
+          FormSanityCheck_ListSanityCheckMessage
+          {
+          }
+          FormSanityCheck_DataSetLevelSanityCheckMessage
+          {
+            groupDepth: -1
+            sort: 'DESC:IsShown,SanityCheckGroup.Type,SanityCheckGroup.Group,Description'
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Show
+            {
+              columnId: 'Show'
+              dataPath: 'Show'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 32
+            }
+            column_Category
+            {
+              columnId: 'Category'
+              dataPath: 'Category'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 32
+            }
+            column_Messages
+            {
+              columnId: 'Messages'
+              dataPath: 'Messages'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 32
+            }
+            column_Description
+            {
+              columnId: 'Description'
+              dataPath: 'Description'
+              dataType: 'string'
+              index: 4
+              subtotals: ''
+              width: 585
+            }
+          }
+        }
+      }
+      form_FormDefaultCapacities
+      {
+        title: 'Default Capacities'
+        shown: false
+        componentID: 'FormDefaultCapacities'
+        layout
+        {
+          mode: 'dockright'
+          index: 3
+        }
+        components
+        {
+          FormDefaultCapacities_PanelContent
+          {
+            sizeRatio: 1
+          }
+          FormDefaultCapacities_PanelTimeCapacities
+          {
+            sizeRatio: 1
+          }
+          FormDefaultCapacities_PanelQuantityAndTransportCapacities
+          {
+            sizeRatio: 1
+          }
+          FormDefaultCapacities_PanelStockingPointCapacities
+          {
+            sizeRatio: 1
+          }
+          FormDefaultCapacities_PanelActions
+          {
+            sizeRatio: 1
+          }
+        }
+      }
+      form_FormGeneralSettings
+      {
+        title: 'General Settings'
+        shown: true
+        componentID: 'FormGeneralSettings'
+        layout
+        {
+          mode: 'dockright'
+          index: 4
+        }
+        components
+        {
+          FormGeneralSettings_PanelContent
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelGeneralParameter
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelLeadTimeDependent
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelShelfLife
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelSustainability
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelForecastNetting
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelActions
+          {
+            sizeRatio: 1
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: 'SKIN_TIGER'
+    page: ''
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: 'DispatchShiftSchedulingInformation'
+  name: 'DispatchShiftSchedulingInformation'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3