From d060843d402641d8cdeadad086ed5c867de7f2ea Mon Sep 17 00:00:00 2001
From: admin <admin@admin.com>
Date: 星期四, 17 十月 2024 09:20:07 +0800
Subject: [PATCH] 包装计划最小最大容量优化

---
 _Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValues.qbl                                                  |    7 +
 _Main/BL/Type_PackagingPlanNewCapability/Attribute_Factory.qbl                                                                   |    8 +
 _Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl                                                                  |  175 +++++++++++++++++-----------------
 /dev/null                                                                                                                        |   22 ----
 _Main/BL/Type_PackagingPlanNewCapability/Attribute_ProductID.qbl                                                                 |    8 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def                        |   20 +++
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def           |    2 
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductID_OnCreated.def |   22 ++++
 _Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def                                     |    2 
 9 files changed, 151 insertions(+), 115 deletions(-)

diff --git a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
index 8a41f88..0629582 100644
--- a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
+++ b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
@@ -6,95 +6,96 @@
 {
   TextBody:
   [*
-    macroPlan.PackagingPlanRow( relflush );
-    macroPlan.PackagingPlanColumn( relflush );
-    
-    // 鍒涘缓璁″垝鍓嶄竴澶╁垪
-    planPre     := macroPlan.PackagingPlanColumn( relnew, StartDate := macroPlan.StartOfPlanning().Date() - 1 );
-    
-    // 鐢熸垚鎶ヨ〃
-    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and 
-               ( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "DL" ) or pisp.StockingPointID().Regex( "澶ц繛" ) or pisp.StockingPointID().Regex( "闀挎槬" ) ) ) {
-      // 褰撳墠pisp鎵�澶勫湴鐐�
-      factory             := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "闀挎槬宸ュ巶", "澶ц繛宸ュ巶" );
-      factoryAbbreviation := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "CC", "DL" );
-      
-      // 鍒涘缓琛�
-      ppr := select( macroPlan, PackagingPlanRow, tempPPR, tempPPR.ProductID() = pisp.ProductID() and tempPPR.Factory() = factory );
-      if ( isnull( ppr ) ) {
-        ppr := macroPlan.PackagingPlanRow( relnew, ProductID := pisp.ProductID(), Factory := factory, Category := guard( pisp.Product_MP().ParentID(), "" ) );
-      }
-      
-      // 寰幆pispippl
-      traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispipl, not pispipl.IsPeriodFrozen() ) {
-        // 鍒涘缓鍒�
-        ppc := select( macroPlan, PackagingPlanColumn, tempPPC, tempPPC.StartDate() = pispipl.Start().Date() );
-        if ( isnull( ppc ) ) {
-          ppc := macroPlan.PackagingPlanColumn( relnew, StartDate := pispipl.Start().Date() );
-        }
-        
-        // 鍒涘缓鍗曞厓鏍�
-        cell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = ppc );
-        if ( isnull( cell ) ) {
-          cell := ppr.PackagingPlanCell( relnew );
-          cell.NetDemand( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() );
-          cell.EndingInventory( pispipl.InventoryLevelEnd() );
-          cell.PackagingPlanColumn( relset, ppc );
-        } else {
-          cell.NetDemand( cell.NetDemand() + ( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() ) );
-          cell.EndingInventory( cell.EndingInventory() + pispipl.InventoryLevelEnd() );
-        }
-        
-        // 璁剧疆璋冨嚭
-        traverse ( pispipl, AsDeparturePISPIP, pit,
-                   pit.Quantity()                > 0                                                                         and
-                   pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation )      and
-                   TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
-                  ) 
-        {
-          cell.Out( cell.Out() + pit.Quantity() );
-        }
-        
-        // 璁剧疆璋冭繘
-        traverse ( pispipl, AsArrivalPISPIP, pit,
-                   pit.Quantity()              > 0                                                                           and
-                   pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation ) and
-                   TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
-                  ) 
-        {
-          cell.TransferIn( cell.TransferIn() + pit.Quantity() );
-        }
-        
-        // 闀挎槬宸ュ巶鐗规畩鎯呭喌璁剧疆鍖呰搴撳瓨鍜岄潪鍖呰搴撳瓨
-        if ( factory = "闀挎槬宸ュ巶" ) {
-          if ( pisp.StockingPointID().Regex( "澶栫搴�" ) ) {
-            cell.CC_PackagingInventory( pispipl.InventoryLevelEnd() );
-          } else if ( pisp.StockingPointID().Regex( "绾胯竟搴�" ) ) {
-            cell.CC_UnpackagedInventory( pispipl.InventoryLevelEnd() );
-          }
-        }
-        
-        // 璁剧疆鍓嶄竴澶╁簱瀛�
-        if ( pispipl.Start().Date() = macroPlan.StartOfPlanning().Date() ) {
-          prePISPIPL  := pispipl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf ); // 鍓嶄竴涓猵ispippl
-          // 鍒涘缓璁″垝鍓嶄竴澶╂牸瀛�
-          preCell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = planPre );
-          if ( isnull( preCell ) ) {
-            preCell := ppr.PackagingPlanCell( relnew );
-            preCell.EndingInventory( prePISPIPL.InventoryLevelEnd() );
-            preCell.PackagingPlanColumn( relset, planPre );
-          } else {
-            preCell.EndingInventory( preCell.EndingInventory() + prePISPIPL.InventoryLevelEnd() );
-          }
-        }
-      }
-    }
-    
-    Transaction::Transaction().Propagate( attribute( PackagingPlanRow, FactoryAbbreviation ) );
-    PackagingPlanCell::CalculationPackagingPlanProperties();
-    Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
+    //macroPlan.PackagingPlanRow( relflush );
+    //macroPlan.PackagingPlanColumn( relflush );
+    //
+    //// 鍒涘缓璁″垝鍓嶄竴澶╁垪
+    //planPre     := macroPlan.PackagingPlanColumn( relnew, StartDate := macroPlan.StartOfPlanning().Date() - 1 );
+    //
+    //// 鐢熸垚鎶ヨ〃
+    //traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and 
+    //           ( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "DL" ) or pisp.StockingPointID().Regex( "澶ц繛" ) or pisp.StockingPointID().Regex( "闀挎槬" ) ) ) {
+    //  // 褰撳墠pisp鎵�澶勫湴鐐�
+    //  factory             := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "闀挎槬宸ュ巶", "澶ц繛宸ュ巶" );
+    //  factoryAbbreviation := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "闀挎槬" ), "CC", "DL" );
+    //  
+    //  // 鍒涘缓琛�
+    //  ppr := select( macroPlan, PackagingPlanRow, tempPPR, tempPPR.ProductID() = pisp.ProductID() and tempPPR.Factory() = factory );
+    //  if ( isnull( ppr ) ) {
+    //    ppr := macroPlan.PackagingPlanRow( relnew, ProductID := pisp.ProductID(), Factory := factory, Category := guard( pisp.Product_MP().ParentID(), "" ) );
+    //  }
+    //  
+    //  // 寰幆pispippl
+    //  traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispipl, not pispipl.IsPeriodFrozen() ) {
+    //    // 鍒涘缓鍒�
+    //    ppc := select( macroPlan, PackagingPlanColumn, tempPPC, tempPPC.StartDate() = pispipl.Start().Date() );
+    //    if ( isnull( ppc ) ) {
+    //      ppc := macroPlan.PackagingPlanColumn( relnew, StartDate := pispipl.Start().Date() );
+    //    }
+    //    
+    //    // 鍒涘缓鍗曞厓鏍�
+    //    cell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = ppc );
+    //    if ( isnull( cell ) ) {
+    //      cell := ppr.PackagingPlanCell( relnew );
+    //      cell.NetDemand( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() );
+    //      cell.EndingInventory( pispipl.InventoryLevelEnd() );
+    //      cell.PackagingPlanColumn( relset, ppc );
+    //    } else {
+    //      cell.NetDemand( cell.NetDemand() + ( pispipl.InventoryLevelEnd() + pispipl.NewSupplyQuantity() - pispipl.DependentDemandAndSalesDemandQuantity() ) );
+    //      cell.EndingInventory( cell.EndingInventory() + pispipl.InventoryLevelEnd() );
+    //    }
+    //    
+    //    // 璁剧疆璋冨嚭
+    //    traverse ( pispipl, AsDeparturePISPIP, pit,
+    //               pit.Quantity()                > 0                                                                         and
+    //               pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation )      and
+    //               TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
+    //              ) 
+    //    {
+    //      cell.Out( cell.Out() + pit.Quantity() );
+    //    }
+    //    
+    //    // 璁剧疆璋冭繘
+    //    traverse ( pispipl, AsArrivalPISPIP, pit,
+    //               pit.Quantity()              > 0                                                                           and
+    //               pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation ) and
+    //               TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( pit.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() )
+    //              ) 
+    //    {
+    //      cell.TransferIn( cell.TransferIn() + pit.Quantity() );
+    //    }
+    //    
+    //    // 闀挎槬宸ュ巶鐗规畩鎯呭喌璁剧疆鍖呰搴撳瓨鍜岄潪鍖呰搴撳瓨
+    //    if ( factory = "闀挎槬宸ュ巶" ) {
+    //      if ( pisp.StockingPointID().Regex( "澶栫搴�" ) ) {
+    //        cell.CC_PackagingInventory( pispipl.InventoryLevelEnd() );
+    //      } else if ( pisp.StockingPointID().Regex( "绾胯竟搴�" ) ) {
+    //        cell.CC_UnpackagedInventory( pispipl.InventoryLevelEnd() );
+    //      }
+    //    }
+    //    
+    //    // 璁剧疆鍓嶄竴澶╁簱瀛�
+    //    if ( pispipl.Start().Date() = macroPlan.StartOfPlanning().Date() ) {
+    //      prePISPIPL  := pispipl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf ); // 鍓嶄竴涓猵ispippl
+    //      // 鍒涘缓璁″垝鍓嶄竴澶╂牸瀛�
+    //      preCell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = planPre );
+    //      if ( isnull( preCell ) ) {
+    //        preCell := ppr.PackagingPlanCell( relnew );
+    //        preCell.EndingInventory( prePISPIPL.InventoryLevelEnd() );
+    //        preCell.PackagingPlanColumn( relset, planPre );
+    //      } else {
+    //        preCell.EndingInventory( preCell.EndingInventory() + prePISPIPL.InventoryLevelEnd() );
+    //      }
+    //    }
+    //  }
+    //}
+    //
+    //Transaction::Transaction().Propagate( attribute( PackagingPlanRow, FactoryAbbreviation ) );
+    //PackagingPlanCell::CalculationPackagingPlanProperties();
+    //Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
     
     // 璁剧疆鍖呰&鎷嗗寘-鏁伴噺
+    PackagingPlanCell::SetPackagingAndUnpackingValues( macroPlan );
     //traverse ( macroPlan, PackagingPlanRow, ppr, ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Bosch" ) or ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Components (Spain)" ) ) {
     //  traverse ( ppr, PackagingPlanCell, ppc/*, ppc.StartDate() = Date::Construct( 2020, 4, 1 )*/ ) {
     //    // 璁剧疆鍖呰鏁伴噺
diff --git a/_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValues.qbl b/_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValues.qbl
new file mode 100644
index 0000000..83e5917
--- /dev/null
+++ b/_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValues.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SetPackagingAndUnpackingValues (
+  MacroPlan macroPlan
+)
+{
+}
diff --git a/_Main/BL/Type_PackagingPlanNewCapability/Attribute_Factory.qbl b/_Main/BL/Type_PackagingPlanNewCapability/Attribute_Factory.qbl
new file mode 100644
index 0000000..35ec39a
--- /dev/null
+++ b/_Main/BL/Type_PackagingPlanNewCapability/Attribute_Factory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Factory
+{
+  #keys: '3[415754.0.412692725][415754.0.412692724][415754.0.412692726]'
+  Description: '宸ュ巶'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_PackagingPlanNewCapability/Attribute_ProductID.qbl b/_Main/BL/Type_PackagingPlanNewCapability/Attribute_ProductID.qbl
new file mode 100644
index 0000000..d4218e7
--- /dev/null
+++ b/_Main/BL/Type_PackagingPlanNewCapability/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[415754.0.412692742][415754.0.412692741][415754.0.412692743]'
+  Description: '浜у搧ID'
+  ValueType: String
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def
index f6bf3ff..0ef7aff 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def
@@ -5,14 +5,15 @@
   BaseType: 'WebPanel'
   Children:
   [
-    Component ddslProductionLine
+    Component ddslFactory
     {
       #keys: '[413988.0.1596148502]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
-        DataBinding: 'DataHolderDialogData.Data.ProductionLine'
+        DataBinding: 'DataHolderDialogData.Data.Factory'
         Label: 'Production line'
+        Strings: '澶ц繛宸ュ巶;闀挎槬宸ュ巶'
         Taborder: 0
       ]
     }
@@ -24,7 +25,7 @@
       [
         DataBinding: 'DataHolderDialogData.Data.MaximumDailyPackagingQuantity'
         Label: 'Maximum daily packaging quantity'
-        Taborder: 1
+        Taborder: 2
       ]
     }
     Component npMaximumDailyUnpackingQuantity
@@ -35,7 +36,18 @@
       [
         DataBinding: 'DataHolderDialogData.Data.MaximumDailyUnpackingQuantity'
         Label: 'Maximum daily unpacking quantity'
-        Taborder: 2
+        Taborder: 3
+      ]
+    }
+    Component ddslProductID
+    {
+      #keys: '[415754.0.415211304]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        DataBinding: 'DataHolderDialogData.Data.ProductID'
+        Label: 'Product ID'
+        Taborder: 1
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def
index 3775f82..e9f8566 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def
@@ -6,7 +6,7 @@
   DefinitionID: 'Responsedef_WebButton_OnClick'
   Precondition:
   [*
-    return not exists( MacroPlan, PackagingPlanNewCapability, tempPPNC, true, tempPPNC.ProductionLine() = ddslProductionLine.Text() );
+    return not exists( MacroPlan, PackagingPlanNewCapability, tempPPNC, true, tempPPNC.ProductionLine() = ddslFactory.Text() );
   *]
   QuillAction
   {
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductID_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductID_OnCreated.def
new file mode 100644
index 0000000..f57737c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductID_OnCreated.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pnlContent/ddslProductID
+Response OnCreated () id:Response_pnlContent_ddslProductID_OnCreated
+{
+  #keys: '[415754.0.415211358]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      pmpids := selectuniquevalues( MacroPlan, Product_MP, tempPMP, true, tempPMP.ID() );
+      
+      this.Strings( pmpids.Concatenate( ";" ) );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductionLine_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductionLine_OnCreated.def
deleted file mode 100644
index 0f1290b..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductionLine_OnCreated.def
+++ /dev/null
@@ -1,22 +0,0 @@
-Quintiq file version 2.0
-#parent: pnlContent/ddslProductionLine
-Response OnCreated () id:Response_pnlContent_ddslProductionLine_OnCreated
-{
-  #keys: '[413988.0.1596148773]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  Precondition:
-  [*
-    return not isnull( MacroPlan );
-  *]
-  QuillAction
-  {
-    Body:
-    [*
-      uids := selectuniquevalues( MacroPlan, Unit, tempU, tempU.HasCapacityTypeTime(), tempU.ID() );
-      
-      this.Strings( uids.Concatenate( ";" ) );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def
index 1d91fe7..639cbf2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def
@@ -28,7 +28,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionLine","title":"ProductionLine","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionLine"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumDailyPackagingQuantity","title":"MaximumDailyPackagingQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumDailyPackagingQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumDailyUnpackingQuantity","title":"MaximumDailyUnpackingQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumDailyUnpackingQuantity"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Factory","title":"Factory","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Factory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumDailyPackagingQuantity","title":"MaximumDailyPackagingQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumDailyPackagingQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumDailyUnpackingQuantity","title":"MaximumDailyUnpackingQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumDailyUnpackingQuantity"}}]'
         ContextMenu: 'cmContent'
         Taborder: 2
       ]

--
Gitblit v1.9.3