From 10205cf5f6128541532f909e0aa078a960623c67 Mon Sep 17 00:00:00 2001
From: yanweiyuan3 <yanweiyuan3@gmail.com>
Date: 星期四, 21 九月 2023 16:43:15 +0800
Subject: [PATCH] Finish Order Lock

---
 _Main/BL/Type_CustomerOrder/StaticMethod_LockUnlock.qbl                                                                             |   59 +++++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/_ROOT_Component_FormOrderLockLog.def                                         |   43 ++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def       |   38 +++++++
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_PanelOrderLockLog.def                                              |   14 ++
 _Main/BL/Type_CustomerOrder/Attribute_IsLocked.qbl                                                                                  |    8 +
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock#844.def                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def |   18 +-
 _Main/UI/MacroPlannerWebApp/Views/OrderLock.vw                                                                                      |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listActionBarPageOrderLockLog.def                                  |   10 ++
 _Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw                                                                                   |    4 
 _Main/BL/Type_OrderLockLog/Attribute_IsLocked#2.qbl                                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listContextMenuOrderLockLog.def                                    |   10 ++
 _Main/BL/Type_OrderLockLog/Attribute_Notes.qbl                                                                                      |    8 +
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def         |   21 ++++
 _Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_ListOrderLockLog.def                                               |   41 ++++++++
 15 files changed, 266 insertions(+), 16 deletions(-)

diff --git a/_Main/BL/Type_CustomerOrder/Attribute_IsLocked.qbl b/_Main/BL/Type_CustomerOrder/Attribute_IsLocked.qbl
new file mode 100644
index 0000000..34516aa
--- /dev/null
+++ b/_Main/BL/Type_CustomerOrder/Attribute_IsLocked.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsLocked
+{
+  #keys: '3[412960.0.250388873][412960.0.250388872][412960.0.250388874]'
+  Description: '鏄惁琚攣瀹�'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_CustomerOrder/StaticMethod_LockUnlock.qbl b/_Main/BL/Type_CustomerOrder/StaticMethod_LockUnlock.qbl
new file mode 100644
index 0000000..755761e
--- /dev/null
+++ b/_Main/BL/Type_CustomerOrder/StaticMethod_LockUnlock.qbl
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod LockUnlock (
+  MacroPlan owner,
+  CustomerOrders customerorders,
+  Boolean lock
+)
+{
+  Description: '閿佸畾/瑙i攣璁㈠崟'
+  TextBody:
+  [*
+    // Administrator Sep-21-2023 (created)
+    lastmodifytime := DateTime::ActualTime();
+    lastmodify := QuintiqUser::CurrentUser().Username();
+    if( lock ){
+      traverse( customerorders, Elements, order ){
+        order.IsLocked( lock );
+        order.LastModify( lastmodify );
+        order.LastModifyTime( lastmodifytime );
+        owner.OrderLockLog( relnew, 
+                            CustomerName := order.CustomerName(), 
+                            End := order.First().AsPlanningBaseSalesDemandInPeriod().End().Date(), 
+                            EndDate := order.EndDate(), 
+                            IsLocked := order.IsLocked(), 
+                            LastModify := order.LastModify(), 
+                            LastModifyTime := order.LastModifyTime(), 
+                            OrderID := order.OrderID(), 
+                            Price := order.Price(), 
+                            ProductID := order.ProductID(), 
+                            Quantity := order.Quantity(), 
+                            SalesSegmentName := order.SalesSegmentName(), 
+                            StockingPointID := order.StockingPointID(), 
+                            UnitOfMeasureName := order.UnitOfMeasureName(), 
+                            Notes := "娣诲姞閿佸畾" );
+        }
+      }else{
+        traverse( customerorders, Elements, order ){
+          order.IsLocked( lock );
+          order.LastModify( lastmodify );
+          order.LastModifyTime( lastmodifytime );
+          owner.OrderLockLog( relnew, 
+                              CustomerName := order.CustomerName(), 
+                              End := order.First().AsPlanningBaseSalesDemandInPeriod().End().Date(), 
+                              EndDate := order.EndDate(), 
+                              IsLocked := order.IsLocked(), 
+                              LastModify := order.LastModify(), 
+                              LastModifyTime := order.LastModifyTime(), 
+                              OrderID := order.OrderID(), 
+                              Price := order.Price(), 
+                              ProductID := order.ProductID(), 
+                              Quantity := order.Quantity(), 
+                              SalesSegmentName := order.SalesSegmentName(), 
+                              StockingPointID := order.StockingPointID(), 
+                              UnitOfMeasureName := order.UnitOfMeasureName(), 
+                              Notes := "瑙i櫎閿佸畾" );
+        }
+      }
+  *]
+}
diff --git "a/_Main/BL/Type_OrderLockLog/Attribute_IsFirmed\0432.qbl" "b/_Main/BL/Type_OrderLockLog/Attribute_IsLocked\0432.qbl"
similarity index 87%
rename from "_Main/BL/Type_OrderLockLog/Attribute_IsFirmed\0432.qbl"
rename to "_Main/BL/Type_OrderLockLog/Attribute_IsLocked\0432.qbl"
index 7594124..05d9136 100644
--- "a/_Main/BL/Type_OrderLockLog/Attribute_IsFirmed\0432.qbl"
+++ "b/_Main/BL/Type_OrderLockLog/Attribute_IsLocked\0432.qbl"
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-Attribute IsFirmed
+Attribute IsLocked
 {
   #keys: '3[412960.0.217504477][412960.0.217504476][412960.0.217504478]'
   ValueType: Boolean
diff --git a/_Main/BL/Type_OrderLockLog/Attribute_Notes.qbl b/_Main/BL/Type_OrderLockLog/Attribute_Notes.qbl
new file mode 100644
index 0000000..2951098
--- /dev/null
+++ b/_Main/BL/Type_OrderLockLog/Attribute_Notes.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Notes
+{
+  #keys: '3[412960.0.250388891][412960.0.250388890][412960.0.250388892]'
+  Description: '澶囨敞'
+  ValueType: String
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock\043844.def"
index 2e25b89..899294d 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock\043844.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock\043844.def"
@@ -29,7 +29,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"First.AsPlanningBaseSalesDemandInPeriod.End","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"First.AsPlanningBaseSalesDemandInPeriod.End"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModify","title":"LastModify","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModify"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModifyTime","title":"LastModifyTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModifyTime"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLocked","title":"IsLocked","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsLocked"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"First.AsPlanningBaseSalesDemandInPeriod.End","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"First.AsPlanningBaseSalesDemandInPeriod.End"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModify","title":"LastModify","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModify"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModifyTime","title":"LastModifyTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModifyTime"}}]'
         ContextMenu: 'listContextMenuOrderLock'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def
index f382d3a..97a5fce 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderLock_OnClick.def
@@ -5,14 +5,33 @@
   #keys: '[412960.0.245380616]'
   DefinitionID: 'Responsedef_WebButton_OnClick'
   GroupServerCalls: true
+  Precondition:
+  [*
+    checkorders := DataHolderOrderLockCheckedOrder.Data();
+    pispips := construct( ProductInStockingPointInPeriods );
+    traverse( checkorders, Elements, order ){
+      pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, true ) );
+      }
+    return ProductInStockingPointInPeriod::CanLockUnlock( pispips, feedback );
+  *]
   QuillAction
   {
     Body:
     [*
       checkorders := DataHolderOrderLockCheckedOrder.Data();
+      pispips := construct( ProductInStockingPointInPeriods );
+      macroplan := MacroPlan;
       traverse( checkorders, Elements, order ){
-        info( order.ProductID() );
+        pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, true ) );
         }
+      
+      pispipLeafs := selectset( pispips, 
+                                Elements.astype( ProductInStockingPointInPeriodPlanningLeaf ), 
+                                pispip, 
+                                true );
+      
+      CustomerOrder::LockUnlock( macroplan, checkorders, true );
+      ProductInStockingPointInPeriod::LockUnlockPlanning( pispipLeafs, true, true );
     *]
   }
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def
new file mode 100644
index 0000000..6283853
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick.def
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#parent: PanelOrderLockHeader_545/ButtonOrderLockHeaderUnlock
+Response OnClick () id:Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderUnlock_OnClick
+{
+  #keys: '[412960.0.250520489]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  Precondition:
+  [*
+    checkorders := DataHolderOrderLockCheckedOrder.Data();
+    pispips := construct( ProductInStockingPointInPeriods );
+    traverse( checkorders, Elements, order ){
+      pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, true ) );
+      }
+    return ProductInStockingPointInPeriod::CanLockUnlock( pispips, feedback );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      checkorders := DataHolderOrderLockCheckedOrder.Data();
+      pispips := construct( ProductInStockingPointInPeriods );
+      macroplan := MacroPlan;
+      traverse( checkorders, Elements, order ){
+        pispips.Add( selectset( order, ProductInStockingPoint_MP.ProductInStockingPointInPeriod, pispip, true ) );
+        }
+      
+      pispipLeafs := selectset( pispips, 
+                                Elements.astype( ProductInStockingPointInPeriodPlanningLeaf ), 
+                                pispip, 
+                                true );
+      
+      CustomerOrder::LockUnlock( macroplan, checkorders, false );
+      ProductInStockingPointInPeriod::LockUnlockPlanning( pispipLeafs, false, true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def
index 5e6da38..c393843 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def
@@ -19,18 +19,18 @@
       newfilter := "";
       findcount := 0;
       traverse( existfilterlist, Elements, filter ){
-        if( filter.FindString( "IsFirmed()", 0 ) >= 0 ){
+        if( filter.FindString( "IsLocked()", 0 ) >= 0 ){
           if( this.BoundValue() = "locked" ){
             if( newfilter = "" ){
-              newfilter := "( object.IsFirmed() = true )";
+              newfilter := "( object.IsLocked() = true )";
               }else{
-                newfilter := newfilter + " and " + "( object.IsFirmed() = true )";
+                newfilter := newfilter + " and " + "( object.IsLocked() = true )";
                 }
             }else if( this.BoundValue() = "unlocked" ){
               if( newfilter = "" ){
-                newfilter := "( object.IsFirmed() = false )";
+                newfilter := "( object.IsLocked() = false )";
                 }else{
-                  newfilter := newfilter + " and " + "( object.IsFirmed() = false )";
+                  newfilter := newfilter + " and " + "( object.IsLocked() = false )";
                   }
               }else if( this.BoundValue() = "all" ){
                 newfilter := newfilter + "";
@@ -48,15 +48,15 @@
       if( findcount = 0 ){
         if( this.BoundValue() = "locked" ){
           if( newfilter = "" ){
-            newfilter := "( object.IsFirmed() = true )";
+            newfilter := "( object.IsLocked() = true )";
             }else{
-              newfilter := newfilter + " and " + "( object.IsFirmed() = true )";
+              newfilter := newfilter + " and " + "( object.IsLocked() = true )";
               }
           }else if( this.BoundValue() = "unlocked" ){
             if( newfilter = "" ){
-              newfilter := "( object.IsFirmed() = false )";
+              newfilter := "( object.IsLocked() = false )";
               }else{
-                newfilter := newfilter + " and " + "( object.IsFirmed() = false )";
+                newfilter := newfilter + " and " + "( object.IsLocked() = false )";
                 }
             }else if( this.BoundValue() = "all" ){
               newfilter := newfilter + "";
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_ListOrderLockLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_ListOrderLockLog.def
new file mode 100644
index 0000000..bcf75de
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_ListOrderLockLog.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListOrderLockLog
+{
+  #keys: '[412960.0.251923186]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorOrderLockLog473
+    {
+      #keys: '[412960.0.251923187]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[OrderLockLog]'
+        Source: 'DataHolderOrderLockLog'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPageOrderLockLog
+    Component DataSetLevelOrderLockLog
+    {
+      #keys: '[412960.0.251923192]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuOrderLockLog
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLocked","title":"IsLocked","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsLocked"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"End","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"End"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModify","title":"LastModify","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModify"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModifyTime","title":"LastModifyTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModifyTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}}]'
+        ContextMenu: 'listContextMenuOrderLockLog'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_PanelOrderLockLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_PanelOrderLockLog.def
new file mode 100644
index 0000000..05a7b19
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_PanelOrderLockLog.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelOrderLockLog
+{
+  #keys: '[412960.0.250590911]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListOrderLockLog
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listActionBarPageOrderLockLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listActionBarPageOrderLockLog.def
new file mode 100644
index 0000000..ab944bf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listActionBarPageOrderLockLog.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageOrderLockLog
+{
+  #keys: '[412960.0.251923189]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listContextMenuOrderLockLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listContextMenuOrderLockLog.def
new file mode 100644
index 0000000..3f440f5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/Component_listContextMenuOrderLockLog.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuOrderLockLog
+{
+  #keys: '[412960.0.251923194]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/_ROOT_Component_FormOrderLockLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/_ROOT_Component_FormOrderLockLog.def
new file mode 100644
index 0000000..9c391a6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLockLog/_ROOT_Component_FormOrderLockLog.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormOrderLockLog
+{
+  #keys: '[412960.0.248150315]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelOrderLockLog
+    Component DataHolderOrderLockLog
+    {
+      #keys: '[412960.0.250590928]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[OrderLockLog]*'
+      Children:
+      [
+        Component DataExtractorOrderLockLog
+        {
+          #keys: '[412960.0.250590940]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'OrderLockLog'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '璁㈠崟閿佸畾/瑙i攣鏃ュ織'
+    Image: 'TEXT_LOCK'
+    Title: '璁㈠崟閿佸畾/瑙i攣鏃ュ織'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/OrderLock.vw b/_Main/UI/MacroPlannerWebApp/Views/OrderLock.vw
index 42bce1a..0cae0ba 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/OrderLock.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/OrderLock.vw
@@ -337,10 +337,10 @@
     userconfigurableinformation
     {
     }
-    page: 'applicationDevelopmentActionBarPageDef'
-    group: ''
     index: 2
     image: 'DOCUMENT_LOCK'
+    page: 'applicationDevelopmentActionBarPageDef'
+    group: ''
     description: ''
   }
   formatversion: 2
diff --git a/_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw b/_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw
index 6f6e533..4bba15d 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/SOP_Versions.vw
@@ -337,10 +337,10 @@
     userconfigurableinformation
     {
     }
-    page: 'applicationDevelopmentActionBarPageDef'
-    group: ''
     index: 1
     image: 'WINDOW_TIME'
+    page: 'applicationDevelopmentActionBarPageDef'
+    group: ''
     description: ''
   }
   formatversion: 2

--
Gitblit v1.9.3