From ed2537cd89fa7c3d3d231d236ebf1f1de59d6531 Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期四, 17 十月 2024 13:12:27 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl                                                                                |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation#283.def                                           |   24 +
 _Main/BL/Type_PackagingPlanNewCapability/Attribute_ProductID.qbl                                                                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorEnd_OnChanged.def                         |   24 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnSelectionChanged.def                         |   19 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated.def    |   16 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnSelectionChanged.def               |   19 +
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl                                                                              |   33 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader#952.def                                              |   20 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnCreated.def                         |   23 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def                       |   24 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def                                      |   20 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged.def    |   20 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def                                             |   24 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable#273.def                                               |   14 
 _Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValues.qbl                                                                |   55 +++
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable#384.def                                        |  104 ++++++
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def                          |   38 ++
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnSelectionChanged.def                |   19 +
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def                         |    2 
 _Main/BL/Type_PackagingPlanNewCapability/Attribute_Factory.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit#234.def                                            |   26 +
 /dev/null                                                                                                                                      |   22 -
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod.def                                                  |   35 ++
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixeditorContextMenuTable#1.def                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def                                               |   11 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct#937.def                                             |   25 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def                        |   23 +
 _Main/UI/MacroPlannerWebApp/Views/Assembly_online_plan_version.vw                                                                              |  116 +++++++
 _Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductID_OnCreated.def               |   22 +
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAssemblyOnlinePlanVersion_O.def |   16 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def                                  |   23 +
 _Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def                                                   |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def                                                    |   24 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixEditorActionBarPageTable#1.def                             |   10 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl                                                                             |   63 ++-
 36 files changed, 874 insertions(+), 69 deletions(-)

diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
index 69d95bd..190be2b 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
@@ -45,27 +45,34 @@
           cell                := selectobject( ccrow, Cell, cell, cell.Column() = column );
           traverse( sameproductcells, Elements.GeneralExcelImportAndExportDataRow, samerow ){
             attricell         := selectobject( samerow, GeneralExcelImportAndExportDataCell, attricell, attricell.GeneralExcelImportAndExportDataColumn() = attricolumn );
-            if( not ( attricell.Value() = '棰勮鎬昏垂鐢�' or attricell.Value() = '鎬昏垂鐢�' ) ){
+            if( attricell.Value() = '鎬昏垂鐢�' ){
               valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
-              if( attricell.Value() = '澶栫搴撳叆搴撹垂鐢�' ){
-                cell.RentInCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '澶栫搴撳嚭搴撹垂鐢�' ){
-                cell.RentOutOfCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤' ){
-                cell.WerkToRentTransCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '澶栫搴撲粨鍌ㄨ垂鐢�' ){
-                cell.RentStorCost( [Number]valuecell.Value() );
+              if( [Real]valuecell.Value() <> cell.AllCost() ){
+                cell.AllCost( [Real]valuecell.Value() );
+                cell.IsUpdate( true );
               }
+            }
+    //        if( not ( attricell.Value() = '棰勮鎬昏垂鐢�' or attricell.Value() = '鎬昏垂鐢�' ) ){
+    //          valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
+    //          if( attricell.Value() = '澶栫搴撳叆搴撹垂鐢�' ){
+    //            cell.RentInCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '澶栫搴撳嚭搴撹垂鐢�' ){
+    //            cell.RentOutOfCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤' ){
+    //            cell.WerkToRentTransCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '澶栫搴撲粨鍌ㄨ垂鐢�' ){
+    //            cell.RentStorCost( [Number]valuecell.Value() );
+    //          }
     //          else if( attricell.Value() = '棰勮鎬昏垂鐢�' ){
     //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
     //          }
-              else if( attricell.Value() = '绯绘暟' ){
-                cell.CoefficientValue( valuecell.Value() );
-              }
+    //          else if( attricell.Value() = '绯绘暟' ){
+    //            cell.CoefficientValue( valuecell.Value() );
+    //          }
     //          else if( attricell.Value() = '鎬昏垂鐢�' ){
     //            cell.TotalCost( [Number]valuecell.Value() );
     //          }
-            }
+    //        }
           }
         }
       }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
index e0ffefd..2726257 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
@@ -45,37 +45,44 @@
           cell                := selectobject( ccrow, Cell, cell, cell.Column() = column );
           traverse( sameproductcells, Elements.GeneralExcelImportAndExportDataRow, samerow ){
             attricell         := selectobject( samerow, GeneralExcelImportAndExportDataCell, attricell, attricell.GeneralExcelImportAndExportDataColumn() = attricolumn );
-            if( not ( attricell.Value() = '棰勮鎬昏垂鐢�' or attricell.Value() = '鎬昏垂鐢�' ) ){
+            if( attricell.Value() = '鎬昏垂鐢�' ){
               valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
-              if( attricell.Value() = '闀挎槬澶栫搴撳叆搴撹垂鐢�' ){
-                cell.CCRentInCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '闀挎槬澶栫搴撳嚭搴撹垂鐢�' ){
-                cell.CCRentOutOfCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '闀挎槬闀块�旇繍杈撹垂鐢�' ){
-                cell.CCLongTransCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '闀挎槬鐭�旇繍杈撹垂鐢�' ){
-                cell.CCShorTransCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�' ){
-                cell.CCRentStorCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '澶ц繛澶栫搴撳叆搴撹垂鐢�' ){
-                cell.DLRentInCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '澶ц繛澶栫搴撳嚭搴撹垂鐢�' ){
-                cell.DLRentOutOfCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤' ){
-                cell.WerkToDLRentTransCost( [Number]valuecell.Value() );
-              }else if( attricell.Value() = '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�' ){
-                cell.DLRentStorCost( [Number]valuecell.Value() );
+              if( [Real]valuecell.Value() <> cell.AllCost() ){
+                cell.AllCost( [Real]valuecell.Value() );
+                cell.IsUpdate( true );
               }
-    //          else if( attricell.Value() = '棰勮鎬昏垂鐢�' ){
-    //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
-    //          }
-              else if( attricell.Value() = '绯绘暟' ){
-                cell.CoefficientValue( valuecell.Value() );
-              }
-    //          else if( attricell.Value() = '鎬昏垂鐢�' ){
-    //            cell.TotalCost( [Number]valuecell.Value() );
-    //          }
             }
+    //        if( not ( attricell.Value() = '棰勮鎬昏垂鐢�' or attricell.Value() = '鎬昏垂鐢�' ) ){
+    //          valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
+    //          if( attricell.Value() = '闀挎槬澶栫搴撳叆搴撹垂鐢�' ){
+    //            cell.CCRentInCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '闀挎槬澶栫搴撳嚭搴撹垂鐢�' ){
+    //            cell.CCRentOutOfCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '闀挎槬闀块�旇繍杈撹垂鐢�' ){
+    //            cell.CCLongTransCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '闀挎槬鐭�旇繍杈撹垂鐢�' ){
+    //            cell.CCShorTransCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�' ){
+    //            cell.CCRentStorCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '澶ц繛澶栫搴撳叆搴撹垂鐢�' ){
+    //            cell.DLRentInCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '澶ц繛澶栫搴撳嚭搴撹垂鐢�' ){
+    //            cell.DLRentOutOfCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤' ){
+    //            cell.WerkToDLRentTransCost( [Number]valuecell.Value() );
+    //          }else if( attricell.Value() = '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�' ){
+    //            cell.DLRentStorCost( [Number]valuecell.Value() );
+    //          }
+    ////          else if( attricell.Value() = '棰勮鎬昏垂鐢�' ){
+    ////            cell.EstimatedTotalCost( [Number]valuecell.Value() );
+    ////          }
+    //          else if( attricell.Value() = '绯绘暟' ){
+    //            cell.CoefficientValue( valuecell.Value() );
+    //          }
+    ////          else if( attricell.Value() = '鎬昏垂鐢�' ){
+    ////            cell.TotalCost( [Number]valuecell.Value() );
+    ////          }
+    //        }
           }
         }
       }
diff --git a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
index 8a41f88..78add67 100644
--- a/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
+++ b/_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
@@ -95,6 +95,7 @@
     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..6bbd1c1
--- /dev/null
+++ b/_Main/BL/Type_PackagingPlanCell/StaticMethod_SetPackagingAndUnpackingValues.qbl
@@ -0,0 +1,55 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SetPackagingAndUnpackingValues (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    // 璁剧疆鍖呰鍊硷紙绗﹀悎lotsize鍜屼竴鏃ユ渶澶у寘瑁呴噺锛�
+    traverse ( macroPlan, PackagingPlanRow, ppr, ppr.Factory() = "澶ц繛宸ュ巶" and ppr.ProductID() = "06K103011CM" ) {
+      traverse ( ppr, PackagingPlanCell, ppcell, ppcell.StartDate() <= Date::Construct( 2025, 1, 3 ) ) {
+        // Product_MP
+        pmp                     := select( macroPlan, Product_MP, tempPMP, tempPMP.IsLeaf() and tempPMP.ID() = ppr.ProductID() );
+        // 鍖呰lotsize
+        ppls                    := select( macroPlan, PackagingPlanLotSize, tempPPLS, tempPPLS.Factory() = ppr.Factory() and 
+                                           tempPPLS.ProductID() = ifexpr( exists( macroPlan, PackagingPlanLotSize, tempPPLS1, tempPPLS1.ProductID() = pmp.ID() ),
+                                                                          pmp.ID(),
+                                                                          pmp.ParentID() ) );
+        // 涓�鏃ュ寘瑁呭閲�
+        ppnc                    := select( macroPlan, PackagingPlanNewCapability, tempPPNC, tempPPNC.Factory() = ppr.Factory() and 
+                                           tempPPNC.ProductID() = ifexpr( exists( macroPlan, PackagingPlanNewCapability, tempPPNC1, tempPPNC1.ProductID() = pmp.ID() ),
+                                                                          pmp.ID(),
+                                                                          pmp.ParentID() ) );
+        // Unit
+        u                       := select( macroPlan, Unit, tempU, tempU.ID().Regex( ppr.FactoryAbbreviation() + " " + ppr.Category() ) );
+         
+        // 鍖呰搴撳瓨鍑虹幇璐熷�硷紝闇�瑕佽缃寘瑁呴噺
+        if ( ppcell.PackagingInventory() < 0 and not isnull( ppls ) and not isnull( ppnc ) ) {
+          // 闇�瑕佸寘瑁呯殑鏁伴噺
+          needPackagingQuantity := abs( ppcell.PackagingInventory() ).Round( 0 );
+          // 鍖呰寮�濮嬬殑绱㈠紩
+          indexPPCell           := ppcell.Previous();
+          
+          info( "浜х嚎鍚嶏細", u.ID(), "    寮�濮嬫椂闂达細", ppcell.StartDate().Format( "Y-M2-D2" ), "    鍖呰搴撳瓨鏁伴噺锛�", ppcell.PackagingInventory(), "    闇�瑕佸寘瑁呯殑鏁伴噺锛�", needPackagingQuantity, 
+                "    鍖呰lotsize锛�",guard( ppls.LotSize(), 0 ), "    鏈�澶у寘瑁呭閲忥細", ppnc.MaximumDailyPackagingQuantity() );
+          
+          while ( not isnull( indexPPCell ) and needPackagingQuantity > 0 ) {
+            // 鑳藉寘瑁呯殑鏁伴噺
+            canPackagingQuantity  := ifexpr( ceil( needPackagingQuantity / ppls.LotSize() ) < floor( ppnc.MaximumDailyPackagingQuantity() / ppls.LotSize() ),
+                                             ceil( needPackagingQuantity / ppls.LotSize() ),
+                                             floor( ppnc.MaximumDailyPackagingQuantity() / ppls.LotSize() ) ) * ppls.LotSize();
+            info( "寮�濮嬪寘瑁呯殑鏃ユ湡锛�", indexPPCell.StartDate().Format( "Y-M2-D2" ), "    鑳藉寘瑁呯殑鏁伴噺:", canPackagingQuantity );
+            
+            indexPPCell.Package( canPackagingQuantity );
+            
+            needPackagingQuantity := needPackagingQuantity - canPackagingQuantity;
+            indexPPCell           := indexPPCell.Previous();
+          }
+        }
+      }
+    }
+    
+    // 璁剧疆鍖呰鍊硷紙绗﹀悎澶х被涓嬫墍鏈変骇鍝佸寘瑁呴噺鍔犲拰涓嶈兘澶т簬鏈�澶у寘瑁呴噺锛�
+  *]
+}
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_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index e6454fc..159f17e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -161,6 +161,17 @@
         Taborder: 12
       ]
     }
+    Component ButtonAssemblyOnlinePlanVersion
+    {
+      #keys: '[415136.0.1201203922]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'Document'
+        Label: 'Assembly online plan version'
+        Taborder: 13
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAssemblyOnlinePlanVersion_O.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAssemblyOnlinePlanVersion_O.def
new file mode 100644
index 0000000..d296f26
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAssemblyOnlinePlanVersion_O.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonAssemblyOnlinePlanVersion
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonAssemblyOnlinePlanVersion_OnClick
+{
+  #keys: '[415136.0.1201203950]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "Assembly_online_plan_version", true);
+    *]
+    GroupServerCalls: false
+  }
+}
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
       ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable\043384.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable\043384.def"
new file mode 100644
index 0000000..3dacaf1
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable\043384.def"
@@ -0,0 +1,104 @@
+Quintiq file version 2.0
+Component MatrixEditorTable id:MatrixEditorTable_384
+{
+  #keys: '[415136.0.1199351187]'
+  BaseType: 'WebMatrixEditor'
+  Children:
+  [
+    Component MatrixEditorCellTable
+    {
+      #keys: '[415136.0.1199351188]'
+      BaseType: 'WebMatrixEditorCell'
+      Children:
+      [
+        Component DataExtractorCells
+        {
+          #keys: '[415136.0.1199351189]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'InterfaceDataset'
+            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
+            FixedFilter: 'object.Column().TimeUnit() = search.TimeUnit() and object.Column().StartDate() >= search.StartDate() and object.Column().StartDate() <= search.EndDate()'
+            Source: 'InterfaceDataset'
+            Taborder: 0
+            Transformation: 'AssemblyOnlinePlanVersion.Row.Cell'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Attributes: 'Value'
+        Column: 'Column'
+        Row: 'Row'
+        Taborder: 0
+      ]
+    }
+    Component MatrixEditorRowsTable
+    {
+      #keys: '[415136.0.1199351190]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractorRows
+        {
+          #keys: '[415136.0.1199351191]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'InterfaceDataset'
+            Description: "( search.Generation() = '<All>' or object.Product_MP().Generation() = search.Generation() ) and ( search.MqbMlb() = '<All>' or object.Product_MP().MQBMLB() = search.MqbMlb() ) and ( search.Power() = '<All>' or object.Product_MP().Power() = search.Power() )"
+            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
+            FixedFilter: "( search.Product() = '<All>' or object.ProductID() = search.Product() ) and ( search.ProductionLine() = '<All>' or object.ProductionLine() = search.ProductionLine() )"
+            Source: 'InterfaceDataset'
+            Taborder: 0
+            Transformation: 'AssemblyOnlinePlanVersion.Row'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'ProductID'
+        SortCriteria: 'ProductID'
+        Taborder: 1
+      ]
+    }
+    Component MatrixEditorColumnsTable
+    {
+      #keys: '[415136.0.1199351192]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractorColumns
+        {
+          #keys: '[415136.0.1199351193]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'InterfaceDataset'
+            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
+            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and object.StartDate() >= search.StartDate() and object.StartDate() <= search.EndDate()'
+            Source: 'InterfaceDataset'
+            Taborder: 0
+            Transformation: 'AssemblyOnlinePlanVersion.Column'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'ColumnName'
+        SortCriteria: 'StartDate'
+        Taborder: 2
+      ]
+    }
+    #child: matrixEditorActionBarPageTable_1
+    #child: matrixeditorContextMenuTable_1
+  ]
+  Properties:
+  [
+    Columns: 'MatrixEditorColumnsTable'
+    ContextMenu: 'matrixeditorContextMenuTable'
+    Rows: 'MatrixEditorRowsTable'
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
new file mode 100644
index 0000000..9268559
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+Component PanelHeader id:PanelHeader_952
+{
+  #keys: '[415136.0.1199302065]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelUnit
+    #child: PanelProductLine
+    #child: PanelOperation_283
+    #child: PanelTimeUnit_234
+    #child: PanelPeriod
+    #child: PanelProduct_937
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def"
new file mode 100644
index 0000000..bc7d09f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def"
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelOperation id:PanelOperation_283
+{
+  #keys: '[415136.0.1199302076]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonSearch
+    {
+      #keys: '[415136.0.1199302077]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 5
+    Visible: false
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod.def
new file mode 100644
index 0000000..346d79a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod.def
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+Component PanelPeriod
+{
+  #keys: '[415136.0.1199302080]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component DateSelectorStart
+    {
+      #keys: '[415136.0.1199302081]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Label: 'Start date'
+        Taborder: 0
+      ]
+    }
+    Component DateSelectorEnd
+    {
+      #keys: '[415136.0.1199302082]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Date: 9999-12-31
+        Label: 'End date'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 3
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct\043937.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct\043937.def"
new file mode 100644
index 0000000..85b3013
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct\043937.def"
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component PanelProduct id:PanelProduct_937
+{
+  #keys: '[415136.0.1199302078]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddslProduct
+    {
+      #keys: '[415136.0.1199302079]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        FixedSize: false
+        Label: 'Product'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def
new file mode 100644
index 0000000..c128e14
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelProductLine
+{
+  #keys: '[415136.0.1199302072]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddslMQBMLB
+    {
+      #keys: '[415136.0.1199302073]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        Label: 'MQB/MLB'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable\043273.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable\043273.def"
new file mode 100644
index 0000000..3db3b8c
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable\043273.def"
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable id:PanelTable_273
+{
+  #keys: '[415136.0.1199351186]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: MatrixEditorTable_384
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit\043234.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit\043234.def"
new file mode 100644
index 0000000..4fcaa20
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit\043234.def"
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component PanelTimeUnit id:PanelTimeUnit_234
+{
+  #keys: '[415136.0.1199302074]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component RadioButtonGroupUseForTimeUnit
+    {
+      #keys: '[415136.0.1199302075]'
+      BaseType: 'WebRadioButtonGroup'
+      Properties:
+      [
+        ButtonLabels: 'Day;Week;Month'
+        ButtonValues: 'Day;Week;Month'
+        Orientation: 'horizontal'
+        Taborder: 0
+        Title: 'Periods'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def
new file mode 100644
index 0000000..b1aa566
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component PanelUnit
+{
+  #keys: '[415136.0.1199302066]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddslUnit
+    {
+      #keys: '[415136.0.1199302067]'
+      BaseType: 'WebDropDownStringList'
+      Properties:
+      [
+        Label: 'Unit'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixEditorActionBarPageTable\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixEditorActionBarPageTable\0431.def"
new file mode 100644
index 0000000..fa90a32
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixEditorActionBarPageTable\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable id:matrixEditorActionBarPageTable_1
+{
+  #keys: '[415136.0.1199351194]'
+  BaseType: 'matrixEditorActionBarPage'
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixeditorContextMenuTable\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixeditorContextMenuTable\0431.def"
new file mode 100644
index 0000000..9b385f8
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_matrixeditorContextMenuTable\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable id:matrixeditorContextMenuTable_1
+{
+  #keys: '[415136.0.1199351195]'
+  BaseType: 'matrixeditorContextMenu'
+  Properties:
+  [
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
new file mode 100644
index 0000000..47cc9a6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelPeriod/DateSelectorEnd
+Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
+{
+  #keys: '[415136.0.1199302051]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+      if( this.Date() < DateSelectorStart.Date() ){
+        this.HintError( 'The end date cannot be less than the start date!' );
+      }else{
+        if( dhSearch.Data().EndDate() <> this.Date() ){
+          dhSearch.Data().EndDate( this.Date() );
+      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def
new file mode 100644
index 0000000..6344643
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelPeriod/DateSelectorStart
+Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
+{
+  #keys: '[415136.0.1199302052]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
+      if( this.Date() > DateSelectorEnd.Date() ){
+        this.HintError( 'The start date cannot be later than the end date!' );
+      }else{
+        if( dhSearch.Data().StartDate() <> this.Date() ){
+          dhSearch.Data().StartDate( this.Date() );
+      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..90dcebb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelProductLine/ddslMQBMLB
+Response OnCreated () id:Response_PanelProductLine_ddslMQBMLB_OnCreated
+{
+  #keys: '[415136.0.1199302058]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.ProductionLine() );
+      
+      valueString := values.Concatenate( ";" );
+      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+      
+      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+      
+      this.Strings( valueString );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnSelectionChanged.def
new file mode 100644
index 0000000..cd9201e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslMQBMLB_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelProductLine/ddslMQBMLB
+Response OnSelectionChanged () id:Response_PanelProductLine_ddslMQBMLB_OnSelectionChanged
+{
+  #keys: '[415136.0.1199302057]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      if( dhSearch.Data().ProductionLine() <> selection ){
+        dhSearch.Data().ProductionLine( selection );
+      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() ); 
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def
new file mode 100644
index 0000000..168d93e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelProduct_937/ddslProduct
+Response OnCreated () id:Response_PanelProduct_937_ddslProduct_OnCreated
+{
+  #keys: '[415136.0.1199302054]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.ProductID() );
+      
+      valueString := values.Concatenate( ";" );
+      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+      
+      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+      
+      this.Strings( valueString );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnSelectionChanged.def
new file mode 100644
index 0000000..e7e654d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelProduct_937/ddslProduct
+Response OnSelectionChanged () id:Response_PanelProduct_937_ddslProduct_OnSelectionChanged
+{
+  #keys: '[415136.0.1199302053]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      if( dhSearch.Data().Product() <> selection ){
+        dhSearch.Data().Product( selection );
+      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() ); 
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged.def
new file mode 100644
index 0000000..1c80e7f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelTimeUnit_234/RadioButtonGroupUseForTimeUnit
+Response OnChanged () id:Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged
+{
+  #keys: '[415136.0.1199302056]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀� 
+      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
+        dhSearch.Data().TimeUnit( this.BoundValue() );
+      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated.def
new file mode 100644
index 0000000..10cf9b7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelTimeUnit_234/RadioButtonGroupUseForTimeUnit
+Response OnCreated () id:Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated
+{
+  #keys: '[415136.0.1199302055]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      this.ButtonValues( Translations::MP_GlobalParameters_Day() + ';' + Translations::MP_GlobalParameters_Week() + ';' + Translations::MP_GlobalParameters_Month() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
new file mode 100644
index 0000000..858c1ae
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelUnit/ddslUnit
+Response OnCreated () id:Response_PanelUnit_ddslUnit_OnCreated
+{
+  #keys: '[415136.0.1199302062]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.Type() );
+      
+      valueString := values.Concatenate( ";" );
+      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
+      
+      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
+      
+      this.Strings( valueString );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
new file mode 100644
index 0000000..82300e2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: PanelUnit/ddslUnit
+Response OnSelectionChanged () id:Response_PanelUnit_ddslUnit_OnSelectionChanged
+{
+  #keys: '[415136.0.1199302061]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      if( dhSearch.Data().Unit() <> selection ){
+        dhSearch.Data().Unit( selection );
+      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() ); 
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def
new file mode 100644
index 0000000..279c6ee
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormAssemblyOnlinePlanVersion
+{
+  #keys: '[415136.0.1199301919]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    Component dhSearch
+    {
+      #keys: '[415136.0.1199301972]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'AssemblyOnlinePlanVersionSearch'
+      Children:
+      [
+        Component deSearch id:deSearch_604
+        {
+          #keys: '[415136.0.1199301973]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'InterfaceDataset'
+            Source: 'InterfaceDataset'
+            Taborder: 0
+            Transformation: 'AssemblyOnlinePlanVersionSearch'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
+    #child: PanelHeader_952
+    #child: PanelTable_273
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Assembly_online_plan_version.vw b/_Main/UI/MacroPlannerWebApp/Views/Assembly_online_plan_version.vw
new file mode 100644
index 0000000..7144620
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Assembly_online_plan_version.vw
@@ -0,0 +1,116 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormAssemblyOnlinePlanVersion
+      {
+        title: 'QMacroPlanner::FormAssemblyOnlinePlanVersion'
+        shown: true
+        componentID: 'QMacroPlanner::FormAssemblyOnlinePlanVersion'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 16
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormAssemblyOnlinePlanVersion_PanelHeader
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_PanelUnit
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_PanelProductLine
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_PanelProduct
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_PanelPeriod
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_PanelTimeUnit
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_PanelOperation
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_PanelTable
+          {
+            sizeRatio: 1
+          }
+          FormAssemblyOnlinePlanVersion_MatrixEditorTable
+          {
+            gridColor: '#c4c4c4'
+            totalHeaderWidth: 200
+            attributeHeaderWidthRatio: 0.6
+            nameHeaderWidthRatio: 0.4
+            columnWidth: 100
+            horizontalGrid: true
+            verticalGrid: true
+            backendState
+            {
+              componentId: 'QMacroPlanner::FormAssemblyOnlinePlanVersion.MatrixEditorTable'
+              state
+              {
+                cells
+                {
+                  attributes
+                  {
+                    attribute_Value
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 0
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Value'
+                    }
+                  }
+                }
+                columns
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'StartDate'"
+                  }
+                }
+                rows
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'ProductID'"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    index: 0
+    image: 'Document'
+    page: ''
+    group: ''
+    description: ''
+  }
+  formatversion: 2
+  id: 'Assembly_online_plan_version'
+  name: 'Assembly online plan version view'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3