From 4b9a2cb1df3fb79c51f4982b62236c35e27846b7 Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期二, 15 十月 2024 17:14:33 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanR.qbl                                              |   23 
 _Main/BL/Type_MacroPlan/Attribute_A_AssemblyOnlinePlanProductionLineName.qbl                                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Views/NewAssemblyOnlinePlan.vw                                                                                       |  215 ++++++
 _Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductID.qbl                                                                                |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pTotal#61.def                                                          |   14 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternStart.qbl                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlActions.def                                        |   40 +
 _Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Type.qbl                                                                                        |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_.def |   22 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcEndDate.qbl                                                                                 |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor515#474.def                                                |  110 +++
 _Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl                                                                           |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/_ROOT_Component_DialogAssemblyOnlinePlanProductionLineName.def  |   21 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternName.qbl                                                                        |    6 
 _Main/Sys/Repr/Global/NewAssemblyOnlinePlanCell.qrp                                                                                              |   49 +
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_OrderNr.qbl                                                                                    |    8 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternName.qbl                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bDownload_OnClick.def                                       |   22 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor583#969.def                                                |   99 +++
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu267#1.def                                       |   10 
 _Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl                                                                             |   18 
 _Main/BL/Relations/Relation_NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total.qbl                                               |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pDetail#415.def                                                        |   15 
 _Main/BL/Type_NewAssemblyOnlinePlanRow/_ROOT_Type_NewAssemblyOnlinePlanRow.qbl                                                                   |   10 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcTotalQuantity.qbl                                                                           |   13 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl                                                                             |  104 +++
 _Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Name.qbl                                                                                     |    6 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClic.def   |   16 
 _Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlContent.def                                        |   25 
 _Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePl.qbl                                              |   34 +
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Quantity.qbl                                                                                   |    8 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternStart.qbl                                                                       |    6 
 _Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnOk_OnClick.def                           |   16 
 _Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductionLine.qbl                                                                              |    8 
 _Main/BL/Type_NewAssemblyOnlinePlanRow/Function_CalcName.qbl                                                                                     |   13 
 _Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl                                                                                  |    2 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_Order.qbl                                                                                   |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bGenerateReport_OnClick.def                                 |   24 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def                                             |   19 
 _Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Name.qbl                                                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bOnlineQuantity_OnClick.def                                 |   27 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_EndDate.qbl                                                                                    |    7 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_Download.qbl                                                                                |   13 
 _Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl                                                                                |  156 ++--
 _Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_OperationID.qbl                                                                              |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage623#1.def                                     |   10 
 _Main/BL/Type_MacroPlan/DefaultValue_A_AssemblyOnlinePlanProductionLineName.qbl                                                                  |    7 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_OldDownload.qbl                                                                             |   47 +
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Method_GetNewAssemblyOnlinePlanMatrixTooltip.qbl                                                         |   19 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_CreateOldAssemblyOnlinePlanData.qbl                                                         |   74 ++
 _Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductID.qbl                                                                                   |    8 
 _Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Type.qbl                                                                                     |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage338#1.def                                     |   10 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/_ROOT_Type_NewAssemblyOnlinePlanCell.qbl                                                                 |    9 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcStartDate.qbl                                                                               |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pHeader#136.def                                                        |   46 +
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu229#1.def                                       |   45 +
 _Main/BL/Type_NewAssemblyOnlinePlanColumn/_ROOT_Type_NewAssemblyOnlinePlanColumn.qbl                                                             |    9 
 _Main/Sys/Repr/Global/NewOfflinePlanCell.qrp                                                                                                     |    1 
 _Main/BL/Type_NewAssemblyOnlinePlanRow/Method_Filter.qbl                                                                                         |   17 
 _Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_StartDate.qbl                                                                                |    7 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_TotalQuantity.qbl                                                                              |    8 
 _Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl                                              |    2 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_StartDate.qbl                                                                                  |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick.def                    |   16 
 _Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl                                              |    2 
 _Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnCancel_OnClick.def                       |   15 
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Order.qbl                                                                                      |    8 
 _Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOn.qbl                                              |   23 
 _Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_OperationID.qbl                                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/_ROOT_Component_FormNewAssemblyOnlinePlan.def                                    |   73 ++
 _Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternEnd.qbl                                                                         |    6 
 _Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_EndDate.qbl                                                                                  |    7 
 _Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlin.qbl                                              |   34 +
 _Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternEnd.qbl                                                                            |    8 
 76 files changed, 1,747 insertions(+), 89 deletions(-)

diff --git a/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl b/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl
index 234a042..bc6d12f 100644
--- a/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl
+++ b/_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl
@@ -11,7 +11,7 @@
     #keys: '3[413988.0.1348175597][413988.0.1348175596][413988.0.1348175598]'
     Cardinality: '1toN'
     ObjectDefinition: AssemblyOnlinePlanColumn
-    OwningSide: 'Owned'
+    OwningSide: 'Reference'
   }
   RelationSide.RightSide AssemblyOnlinePlanColumn
   {
diff --git a/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl b/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl
index e878ce8..fe1c8d6 100644
--- a/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl
+++ b/_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl
@@ -11,7 +11,7 @@
     #keys: '3[413988.0.1348175623][413988.0.1348175622][413988.0.1348175624]'
     Cardinality: '1toN'
     ObjectDefinition: AssemblyOnlinePlanRow
-    OwningSide: 'Reference'
+    OwningSide: 'Owned'
   }
   RelationSide.RightSide AssemblyOnlinePlanRow
   {
diff --git a/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total.qbl b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total.qbl
new file mode 100644
index 0000000..5896db0
--- /dev/null
+++ b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total
+{
+  #keys: '1[413988.0.1701591389]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Detailed
+  {
+    #keys: '3[413988.0.1701591391][413988.0.1701591390][413988.0.1701591392]'
+    Cardinality: '1toN'
+    ObjectDefinition: NewAssemblyOnlinePlanCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide Total
+  {
+    #keys: '3[413988.0.1701591394][413988.0.1701591393][413988.0.1701591395]'
+    Cardinality: '0to1'
+    ObjectDefinition: NewAssemblyOnlinePlanCell
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePl.qbl b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePl.qbl
new file mode 100644
index 0000000..21babd1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePl.qbl
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+#parent: #root
+Relation NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePlanColumn
+{
+  #keys: '1[413988.0.1702175710]'
+  DeclarativeSequenceRelationStrategy
+  {
+    #keys: '13[0.0.0][413988.0.1702175824][413988.0.1702175818][413988.0.1702175825][413988.0.1702175819][413988.0.1702175826][413988.0.1702175820][413988.0.1702175827][413988.0.1702175821][413988.0.1702175828][413988.0.1702175822][413988.0.1702175829][413988.0.1702175823]'
+    SequenceElementSuffix: 'NAOPColumn'
+    SequenceSuffix: 'NAOPColumn'
+    SortAttributes:
+    [
+      DeclarativeSequenceRelationSortAttribute
+      {
+        #keys: '1[413988.0.1702175834]'
+        Attribute: 'StartDate'
+      }
+    ]
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[413988.0.1702175712][413988.0.1702175711][413988.0.1702175713]'
+    Cardinality: '0to1'
+    ObjectDefinition: NewAssemblyOnlinePlanColumn
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide NewAssemblyOnlinePlanColumn
+  {
+    #keys: '3[413988.0.1702175715][413988.0.1702175714][413988.0.1702175716]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOn.qbl b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOn.qbl
new file mode 100644
index 0000000..7a13320
--- /dev/null
+++ b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOn.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanColumn
+{
+  #keys: '1[413988.0.1702175723]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide NewAssemblyOnlinePlanCell
+  {
+    #keys: '3[413988.0.1702175725][413988.0.1702175724][413988.0.1702175726]'
+    Cardinality: '1toN'
+    ObjectDefinition: NewAssemblyOnlinePlanColumn
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide NewAssemblyOnlinePlanColumn
+  {
+    #keys: '3[413988.0.1702175728][413988.0.1702175727][413988.0.1702175729]'
+    Cardinality: '0to1'
+    ObjectDefinition: NewAssemblyOnlinePlanCell
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanR.qbl b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanR.qbl
new file mode 100644
index 0000000..328bf95
--- /dev/null
+++ b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanR.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanRow
+{
+  #keys: '1[413988.0.1702175667]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[413988.0.1702175669][413988.0.1702175668][413988.0.1702175670]'
+    Cardinality: '0to1'
+    ObjectDefinition: NewAssemblyOnlinePlanRow
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide NewAssemblyOnlinePlanRow
+  {
+    #keys: '3[413988.0.1702175672][413988.0.1702175671][413988.0.1702175673]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlin.qbl b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlin.qbl
new file mode 100644
index 0000000..cca6a84
--- /dev/null
+++ b/_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlin.qbl
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+#parent: #root
+Relation NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanRow
+{
+  #keys: '1[413988.0.1702175696]'
+  DeclarativeSequenceRelationStrategy
+  {
+    #keys: '13[0.0.0][413988.0.1701591359][413988.0.1701591353][413988.0.1701591360][413988.0.1701591354][413988.0.1701591361][413988.0.1701591355][413988.0.1701591362][413988.0.1701591356][413988.0.1701591363][413988.0.1701591357][413988.0.1701591364][413988.0.1701591358]'
+    SequenceElementSuffix: 'NAOPCell'
+    SequenceSuffix: 'NAOPCell'
+    SortAttributes:
+    [
+      DeclarativeSequenceRelationSortAttribute
+      {
+        #keys: '1[413988.0.1701591369]'
+        Attribute: 'StartDate'
+      }
+    ]
+  }
+  RelationSide.LeftSide NewAssemblyOnlinePlanCell
+  {
+    #keys: '3[413988.0.1702175698][413988.0.1702175697][413988.0.1702175699]'
+    Cardinality: '1toN'
+    ObjectDefinition: NewAssemblyOnlinePlanRow
+    OwningSide: 'Owned'
+  }
+  RelationSide.RightSide NewAssemblyOnlinePlanRow
+  {
+    #keys: '3[413988.0.1702175701][413988.0.1702175700][413988.0.1702175702]'
+    Cardinality: '0to1'
+    ObjectDefinition: NewAssemblyOnlinePlanCell
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
index 1d69434..386e280 100644
--- a/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
@@ -7,83 +7,83 @@
 {
   TextBody:
   [*
-    macroPlan.AssemblyOnlinePlanRow( relflush );
-    macroPlan.AssemblyOnlinePlanColumn( relflush );
-    
-    // 鎵捐閰嶇嚎琛�
-    oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, 
-                             tempOPR.ProductionLine() = "DL MoMo" 
-                             or 
-                             tempOPR.ProductionLine() = "CC MoMo" 
-                             or 
-                             tempOPR.ProductionLine() = "DL ZKM"
-                             , 
-                             tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
-    opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
-    
-    // 鐢熸垚琛ㄦ牸
-    traverse ( opcs, Elements, opc ) {
-      aopc := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := opc.ColumnDate(), ColumnIndex := opc.ColumnIndex() );
-      traverse ( oprs, Elements, opr ) {
-        aopr := select( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductID() = opr.ProductID() and tempAOPR.ProductionLine() = opr.ProductionLine() and tempAOPR.Type() = opr.Type() );
-        if ( isnull( aopr ) ) {
-          aopr := macroPlan.AssemblyOnlinePlanRow( relnew, ProductID := opr.ProductID(), ProductionLine := opr.ProductionLine(), Type := opr.Type() );
-        }
-        
-        cellOPC := select( opr, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanColumn() = opc );
-        if ( not isnull( cellOPC ) ) {
-          cellAOPC := aopc.AssemblyOnlinePlanCell( relnew, Value := cellOPC.Value() );
-          cellAOPC.AssemblyOnlinePlanRow( relset, aopr );
-        }
-      }
-    }
-    
-    // 澶勭悊鏃ュ巻浜嬩欢
-    pls := selectuniquevalues( macroPlan, AssemblyOnlinePlanRow, tempAOPR, true, tempAOPR.ProductionLine() );
-    traverse ( pls, Elements, pl ) {
-      targetQuantity := ifexpr( pl = "CC MoMo", guard( macroPlan.AssemblyOnlineQuantity().CCMoMo(), 0 ),
-                                ifexpr( pl = "DL MoMo", guard( macroPlan.AssemblyOnlineQuantity().DLMoMo(), 0 ), guard( macroPlan.AssemblyOnlineQuantity().DLZKM(), 0 ) )
-                               );
-      
-      u           := select( macroPlan, Unit, tempU, tempU.ID() = pl );
-      drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "鎷夌┖" ), false ) );
-      lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "閾虹嚎" ), false ) );
-      
-      // 澶勭悊鎺掔┖
-      info( "褰撳墠浜х嚎锛�", pl, "    澶勭悊鎷夌┖--------------------------" );
-      traverse ( drainPs, Elements, p ) {
-        traverse ( p, ExplicitTimeInterval, eti ) {
-          info( "寮�濮嬫椂闂达細", eti.Start().Format( "Y-M2-D2" ), "    缁撴潫鏃堕棿锛�", eti.End().Format( "Y-M2-D2" ) );
-          // 鍓嶄竴澶╂棩鍘�
-          aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
-          info( "闇�瑕佹媺绌虹殑涓婄嚎璁″垝鏃堕棿锛�", aopc.ColumnDate().Format( "Y-M2-D2" ) );
-          aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
-                              exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
-          aopr  := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
-                              [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
-          cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
-                           tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() ); 
-          
-          cell.Value( [String] ( [Number]cell.Value() - targetQuantity ) );
-        }
-      }
-      
-      info( "褰撳墠浜х嚎锛�", pl, "    澶勭悊閾虹嚎--------------------------" );
-      // 澶勭悊閾虹嚎
-      traverse ( lineLyingPs, Elements, p ) {
-        traverse ( p, ExplicitTimeInterval, eti ) {
-          info( "寮�濮嬫椂闂达細", eti.Start().Format( "Y-M2-D2" ), "    缁撴潫鏃堕棿锛�", eti.End().Format( "Y-M2-D2" ) );
-          info( "闇�瑕侀摵绾跨殑涓婄嚎璁″垝鏃堕棿锛�", eti.Start().Format( "Y-M2-D2" ) );
-          aopc  := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
-          aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
-                              exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
-          aopr  := minselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
-                              [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
-          cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
-                           tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
-          cell.Value( [String] ( [Number]cell.Value() + targetQuantity ) );
-        }
-      }
-    }
+    //macroPlan.AssemblyOnlinePlanRow( relflush );
+    //macroPlan.AssemblyOnlinePlanColumn( relflush );
+    //
+    //// 鎵捐閰嶇嚎琛�
+    //oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, 
+    //                         tempOPR.ProductionLine() = "DL MoMo" 
+    //                         or 
+    //                         tempOPR.ProductionLine() = "CC MoMo" 
+    //                         or 
+    //                         tempOPR.ProductionLine() = "DL ZKM"
+    //                         , 
+    //                         tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
+    //opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
+    //
+    //// 鐢熸垚琛ㄦ牸
+    //traverse ( opcs, Elements, opc ) {
+    //  aopc := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := opc.ColumnDate(), ColumnIndex := opc.ColumnIndex() );
+    //  traverse ( oprs, Elements, opr ) {
+    //    aopr := select( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductID() = opr.ProductID() and tempAOPR.ProductionLine() = opr.ProductionLine() and tempAOPR.Type() = opr.Type() );
+    //    if ( isnull( aopr ) ) {
+    //      aopr := macroPlan.AssemblyOnlinePlanRow( relnew, ProductID := opr.ProductID(), ProductionLine := opr.ProductionLine(), Type := opr.Type() );
+    //    }
+    //    
+    //    cellOPC := select( opr, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanColumn() = opc );
+    //    if ( not isnull( cellOPC ) ) {
+    //      cellAOPC := aopc.AssemblyOnlinePlanCell( relnew, Value := cellOPC.Value() );
+    //      cellAOPC.AssemblyOnlinePlanRow( relset, aopr );
+    //    }
+    //  }
+    //}
+    //
+    //// 澶勭悊鏃ュ巻浜嬩欢
+    //pls := selectuniquevalues( macroPlan, AssemblyOnlinePlanRow, tempAOPR, true, tempAOPR.ProductionLine() );
+    //traverse ( pls, Elements, pl ) {
+    //  targetQuantity := ifexpr( pl = "CC MoMo", guard( macroPlan.AssemblyOnlineQuantity().CCMoMo(), 0 ),
+    //                            ifexpr( pl = "DL MoMo", guard( macroPlan.AssemblyOnlineQuantity().DLMoMo(), 0 ), guard( macroPlan.AssemblyOnlineQuantity().DLZKM(), 0 ) )
+    //                           );
+    //  
+    //  u           := select( macroPlan, Unit, tempU, tempU.ID() = pl );
+    //  drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "鎷夌┖" ), false ) );
+    //  lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "閾虹嚎" ), false ) );
+    //  
+    //  // 澶勭悊鎺掔┖
+    //  info( "褰撳墠浜х嚎锛�", pl, "    澶勭悊鎷夌┖--------------------------" );
+    //  traverse ( drainPs, Elements, p ) {
+    //    traverse ( p, ExplicitTimeInterval, eti ) {
+    //      info( "寮�濮嬫椂闂达細", eti.Start().Format( "Y-M2-D2" ), "    缁撴潫鏃堕棿锛�", eti.End().Format( "Y-M2-D2" ) );
+    //      // 鍓嶄竴澶╂棩鍘�
+    //      aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
+    //      info( "闇�瑕佹媺绌虹殑涓婄嚎璁″垝鏃堕棿锛�", aopc.ColumnDate().Format( "Y-M2-D2" ) );
+    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
+    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
+    //      aopr  := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
+    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
+    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
+    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() ); 
+    //      
+    //      cell.Value( [String] ( [Number]cell.Value() - targetQuantity ) );
+    //    }
+    //  }
+    //  
+    //  info( "褰撳墠浜х嚎锛�", pl, "    澶勭悊閾虹嚎--------------------------" );
+    //  // 澶勭悊閾虹嚎
+    //  traverse ( lineLyingPs, Elements, p ) {
+    //    traverse ( p, ExplicitTimeInterval, eti ) {
+    //      info( "寮�濮嬫椂闂达細", eti.Start().Format( "Y-M2-D2" ), "    缁撴潫鏃堕棿锛�", eti.End().Format( "Y-M2-D2" ) );
+    //      info( "闇�瑕侀摵绾跨殑涓婄嚎璁″垝鏃堕棿锛�", eti.Start().Format( "Y-M2-D2" ) );
+    //      aopc  := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
+    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
+    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
+    //      aopr  := minselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
+    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
+    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
+    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
+    //      cell.Value( [String] ( [Number]cell.Value() + targetQuantity ) );
+    //    }
+    //  }
+    //}
   *]
 }
diff --git a/_Main/BL/Type_MacroPlan/Attribute_A_AssemblyOnlinePlanProductionLineName.qbl b/_Main/BL/Type_MacroPlan/Attribute_A_AssemblyOnlinePlanProductionLineName.qbl
new file mode 100644
index 0000000..fbc0236
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Attribute_A_AssemblyOnlinePlanProductionLineName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute A_AssemblyOnlinePlanProductionLineName
+{
+  #keys: '3[413988.0.1701591471][413988.0.1701591470][413988.0.1701591472]'
+  Description: '涓婄嚎璁″垝瑕佺敓鎴愮殑浜х嚎'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MacroPlan/DefaultValue_A_AssemblyOnlinePlanProductionLineName.qbl b/_Main/BL/Type_MacroPlan/DefaultValue_A_AssemblyOnlinePlanProductionLineName.qbl
new file mode 100644
index 0000000..c52fea0
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/DefaultValue_A_AssemblyOnlinePlanProductionLineName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  ISOValue: 'DL MoMo;CC MoMo;DL ZKM'
+  TargetAttribute: A_AssemblyOnlinePlanProductionLineName
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_EndDate.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_EndDate.qbl
new file mode 100644
index 0000000..fef92ce
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_EndDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+  #keys: '3[413988.0.1702175775][413988.0.1702175774][413988.0.1702175776]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl
new file mode 100644
index 0000000..95cdd91
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InventoryWeight
+{
+  #keys: '3[413988.0.1702175766][413988.0.1702175765][413988.0.1702175767]'
+  Description: '鍓╀綑搴撳瓨 - 鏈�灏忓簱瀛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Order.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Order.qbl
new file mode 100644
index 0000000..169ab8b
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Order.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Order
+{
+  #keys: '3[413988.0.1702175763][413988.0.1702175762][413988.0.1702175764]'
+  Description: '鐢熶骇椤哄簭锛圫tring锛�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_OrderNr.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_OrderNr.qbl
new file mode 100644
index 0000000..b8bace6
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_OrderNr.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderNr
+{
+  #keys: '3[413988.0.1702175781][413988.0.1702175780][413988.0.1702175782]'
+  Description: '鐢熶骇椤哄簭锛圢umber锛�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Quantity.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Quantity.qbl
new file mode 100644
index 0000000..be768e4
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Quantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[413988.0.1702175787][413988.0.1702175786][413988.0.1702175788]'
+  Description: '鏁伴噺'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternEnd.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternEnd.qbl
new file mode 100644
index 0000000..824ed15
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternEnd.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftPatternEnd
+{
+  #keys: '3[413988.0.1702175760][413988.0.1702175759][413988.0.1702175761]'
+  Description: '鐝缁撴潫鏃堕棿'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternName.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternName.qbl
new file mode 100644
index 0000000..8bf1255
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftPatternName
+{
+  #keys: '3[413988.0.1702175772][413988.0.1702175771][413988.0.1702175773]'
+  Description: '鐝鍚�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternStart.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternStart.qbl
new file mode 100644
index 0000000..89630b3
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternStart.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftPatternStart
+{
+  #keys: '3[413988.0.1702175769][413988.0.1702175768][413988.0.1702175770]'
+  Description: '鐝寮�濮嬫椂闂�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_StartDate.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_StartDate.qbl
new file mode 100644
index 0000000..e4a4551
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[413988.0.1702175778][413988.0.1702175777][413988.0.1702175779]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_TotalQuantity.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_TotalQuantity.qbl
new file mode 100644
index 0000000..5f68080
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_TotalQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TotalQuantity
+{
+  #keys: '3[413988.0.1702175784][413988.0.1702175783][413988.0.1702175785]'
+  Description: '鍚堣'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_Order.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_Order.qbl
new file mode 100644
index 0000000..9726838
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_Order.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Order
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternEnd.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternEnd.qbl
new file mode 100644
index 0000000..d03eb42
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternEnd.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ShiftPatternEnd
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternName.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternName.qbl
new file mode 100644
index 0000000..04a9cb4
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternName.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ShiftPatternName
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternStart.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternStart.qbl
new file mode 100644
index 0000000..6e6301f
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternStart.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ShiftPatternStart
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcEndDate.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcEndDate.qbl
new file mode 100644
index 0000000..565d82c
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcEndDate.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEndDate
+{
+  TextBody:
+  [*
+    // lihongji Oct-11-2024 (created)
+    
+    value := guard( this.NewAssemblyOnlinePlanColumn().EndDate(), Date::MinDate() );
+    
+    this.EndDate( value );
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcStartDate.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcStartDate.qbl
new file mode 100644
index 0000000..5060b3c
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcStartDate.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcStartDate
+{
+  TextBody:
+  [*
+    // lihongji Oct-11-2024 (created)
+    
+    value := guard( this.NewAssemblyOnlinePlanColumn().StartDate(), Date::MinDate() );
+    
+    this.StartDate( value );
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcTotalQuantity.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcTotalQuantity.qbl
new file mode 100644
index 0000000..9e49072
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcTotalQuantity.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcTotalQuantity
+{
+  TextBody:
+  [*
+    // lihongji Oct-11-2024 (created)
+    
+    value := sum( this, Detailed, tempNAOPCell, true, tempNAOPCell.Quantity() );
+    
+    this.TotalQuantity( value );
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/Method_GetNewAssemblyOnlinePlanMatrixTooltip.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Method_GetNewAssemblyOnlinePlanMatrixTooltip.qbl
new file mode 100644
index 0000000..afbd398
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/Method_GetNewAssemblyOnlinePlanMatrixTooltip.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetNewAssemblyOnlinePlanMatrixTooltip () declarative remote as String
+{
+  TextBody:
+  [*
+    tooltip := '<table>';
+    
+    tooltip := tooltip 
+                 + '<tr><td><b>鎬婚噺锛�</b></td><td>'         + [String]this.Total().TotalQuantity() + '</td></tr>'
+                 + '<tr><td><b>鐝鍚嶏細</b></td><td>'       + this.Total().ShiftPatternName()      + '</td></tr>'
+                 + '<tr><td><b>鐝寮�濮嬫椂闂达細</b></td><td>' + this.Total().ShiftPatternStart()     + '</td></tr>'
+                 + '<tr><td><b>鐝缁撴潫鏃堕棿锛�</b></td><td>' + this.Total().ShiftPatternEnd()       + '</td></tr>';
+    
+    tooltip := tooltip + '</table>'; 
+    
+    return tooltip;
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_CreateOldAssemblyOnlinePlanData.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_CreateOldAssemblyOnlinePlanData.qbl
new file mode 100644
index 0000000..1fed575
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_CreateOldAssemblyOnlinePlanData.qbl
@@ -0,0 +1,74 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateOldAssemblyOnlinePlanData (
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    macroPlan.AssemblyOnlinePlanRow( relflush );
+    macroPlan.AssemblyOnlinePlanColumn( relflush );
+    
+    // 鍒涘缓鍒�
+    firstColumn  := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 );
+    secondColumn := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
+    traverse ( macroPlan, NewAssemblyOnlinePlanColumn, naopc ) {
+      macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := naopc.StartDate() );
+    }
+    
+    pls := selectuniquevalues( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, true, tempNAOPR.ProductionLine() );
+    
+    traverse ( pls, Elements, pl ) {
+      // 鍒涘缓鏄庣粏琛�
+      detailNAOPRs := selectsortedset( macroPlan, NewAssemblyOnlinePlanRow, tempNAOOPR, tempNAOOPR.ProductionLine() = pl and tempNAOOPR.Type() = "1", tempNAOOPR.ProductionLine(), tempNAOOPR.ProductID() );
+      traverse ( detailNAOPRs, Elements, naopr ) {
+        quantityOPR := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := naopr.ProductionLine(), ProductID := naopr.ProductID(), Type := "1" );
+        orderOPR    := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := naopr.ProductionLine(), ProductID := naopr.ProductID(), Type := "2" );
+        
+        // 绗竴鍒�
+        quantityOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := firstColumn,  Value := naopr.Name() );
+        orderOPR.AssemblyOnlinePlanCell(    relnew, AssemblyOnlinePlanColumn := firstColumn,  Value := "" );
+        
+        // 绗簩鍒�
+        quantityOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "Quantity" );
+        orderOPR.AssemblyOnlinePlanCell(    relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "Order" );
+        
+        // 鏃堕棿鍒�
+        traverse ( naopr, NewAssemblyOnlinePlanCell, naopcell ) {
+          aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = naopcell.StartDate() );
+          quantityOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := aopc, Value := [String]naopcell.Quantity() );
+          orderOPR.AssemblyOnlinePlanCell(    relnew, AssemblyOnlinePlanColumn := aopc, Value := naopcell.Order() );
+        }
+      }
+      
+      // 鍒涘缓鍚堣琛�
+      totalNAOPR           := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductionLine() = pl and tempNAOPR.Type() = "2" );
+      
+      totalAOPR             := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "3" );
+      shiftPatternNameAOPR  := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "4" );
+      shiftPatternStartAOPR := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "5" );
+      shiftPatternEndOAPR   := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "6" );
+      
+      // 绗竴鍒�
+      totalAOPR.AssemblyOnlinePlanCell(             relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "鍚堣" );
+      shiftPatternNameAOPR.AssemblyOnlinePlanCell(  relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "" );
+      shiftPatternStartAOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "" );
+      shiftPatternEndOAPR.AssemblyOnlinePlanCell(   relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "" );
+      
+       // 绗簩鍒�
+      totalAOPR.AssemblyOnlinePlanCell(             relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "鎬婚噺" );
+      shiftPatternNameAOPR.AssemblyOnlinePlanCell(  relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "鐝" );
+      shiftPatternStartAOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "鐝寮�濮嬫椂闂�" );
+      shiftPatternEndOAPR.AssemblyOnlinePlanCell(   relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "鐝缁撴潫鏃堕棿" );
+      
+      // 鏃堕棿鍒�
+      traverse ( totalNAOPR, NewAssemblyOnlinePlanCell, naopcell ) {
+        opc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = naopcell.StartDate() );
+        totalAOPR.AssemblyOnlinePlanCell(             relnew, AssemblyOnlinePlanColumn := opc, Value := [String]naopcell.TotalQuantity() );
+        shiftPatternNameAOPR.AssemblyOnlinePlanCell(  relnew, AssemblyOnlinePlanColumn := opc, Value := naopcell.ShiftPatternName() );
+        shiftPatternStartAOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := opc, Value := naopcell.ShiftPatternStart() );
+        shiftPatternEndOAPR.AssemblyOnlinePlanCell(   relnew, AssemblyOnlinePlanColumn := opc, Value := naopcell.ShiftPatternEnd() );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_Download.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_Download.qbl
new file mode 100644
index 0000000..3cb61b6
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_Download.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Download (
+  MacroPlan macroPlan
+) as BinaryValue
+{
+  TextBody:
+  [*
+    NewAssemblyOnlinePlanCell::CreateOldAssemblyOnlinePlanData( macroPlan );
+    
+    return NewAssemblyOnlinePlanCell::OldDownload( macroPlan );
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_OldDownload.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_OldDownload.qbl
new file mode 100644
index 0000000..165816e
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_OldDownload.qbl
@@ -0,0 +1,47 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod OldDownload (
+  MacroPlan macroPlan
+) as BinaryValue
+{
+  TextBody:
+  [*
+    xmlDOMI      := XMLDOMImplementation::Create();
+    xmlDOM       := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
+    
+    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+    
+    opcs := selectsortedset( macroPlan, AssemblyOnlinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
+    oprs := selectsortedset( macroPlan, AssemblyOnlinePlanRow, tempOPR, true, tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
+    traverse ( opcs, Elements, opc ) {
+      column := xmlDOM.CreateElement( "column" );
+      name   := xmlDOM.CreateElement( "name" );
+      type   := xmlDOM.CreateElement( "type" );
+      name.TextContent( ifexpr( opc.ColumnDate() < macroPlan.StartOfPlanning().Date(), "", opc.ColumnDate().Format( "Y/M2/D2" ) ) );
+      type.TextContent( "String" );
+      column.AppendChild( name );
+      column.AppendChild( type );
+      
+      traverse ( oprs, Elements, opr ) {
+        c    := select( opc, AssemblyOnlinePlanCell, tempOPC, tempOPC.AssemblyOnlinePlanRow() = opr );
+        cell := xmlDOM.CreateElement( "cell" );
+        cell.SetAttribute( "value", guard( c.Value(), "" ) );
+        column.AppendChild( cell );
+      }
+      
+      tableElement.AppendChild( column );
+    }
+    
+    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+    
+    //info( xmlString );
+    
+    tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
+    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+    tableGroupHandle.Add( tableHandle );
+    
+    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    
+    return binaryData.AsBinaryValue();
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
new file mode 100644
index 0000000..a8a7fcc
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
@@ -0,0 +1,104 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod RefreshData (
+  MacroPlan macroPlan,
+  NewOfflinePlanTable nopt
+)
+{
+  TextBody:
+  [*
+    macroPlan.NewAssemblyOnlinePlanRow( relflush );
+    macroPlan.NewAssemblyOnlinePlanColumn( relflush );
+    
+    aopplns := macroPlan.A_AssemblyOnlinePlanProductionLineName().Tokenize( ";" );
+    
+    traverse ( nopt, NewOfflinePlanRow, nopr, exists( aopplns, Elements, aoppl, aoppl = nopr.ProductionLine() ) and nopr.Type() = "1" ) {
+      // 涓婄嚎璁″垝鍚堣琛�
+      totalNAOPR   := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductID() = "All" and tempNAOPR.ProductionLine() = nopr.ProductionLine() and tempNAOPR.Type() = "2" );
+      if ( isnull( totalNAOPR ) ) {
+        totalNAOPR := macroPlan.NewAssemblyOnlinePlanRow( relnew, ProductID := "All", ProductionLine := nopr.ProductionLine(), Type := "2" );
+      }
+      // 涓婄嚎璁″垝璇︾粏琛�
+      detailNAOPR   := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductID() = nopr.ProductID() and tempNAOPR.ProductionLine() = nopr.ProductionLine() and tempNAOPR.Type() = "1" );
+      if ( isnull( detailNAOPR ) ) {
+        detailNAOPR := macroPlan.NewAssemblyOnlinePlanRow( relnew, OperationID := nopr.OperationID(), ProductID := nopr.ProductID(), ProductionLine := nopr.ProductionLine(), Type := "1" );
+      }
+      
+      // 鍒涘缓鍗曞厓鏍�
+      traverse ( nopr, NewOfflinePlanCell, nopcell ) {
+        // 涓婄嚎璁″垝鍒�
+        naopc   := select( macroPlan, NewAssemblyOnlinePlanColumn, tempNAOPC, tempNAOPC.StartDate() = nopcell.NewOfflinePlanColumn().StartDate() and tempNAOPC.EndDate() = nopcell.NewOfflinePlanColumn().EndDate() );
+        if ( isnull( naopc ) ) {
+          naopc := macroPlan.NewAssemblyOnlinePlanColumn( relnew, StartDate := nopcell.NewOfflinePlanColumn().StartDate(), EndDate := nopcell.NewOfflinePlanColumn().EndDate() );
+        }
+        
+        // 璁剧疆涓婄嚎璁″垝鍚堣鍗曞厓鏍�
+        totalNAOPCell   := select( totalNAOPR, NewAssemblyOnlinePlanCell, tempNAOPCell, tempNAOPCell.NewAssemblyOnlinePlanColumn() = naopc );
+        if ( isnull( totalNAOPCell ) ) {
+          totalNAOPCell := totalNAOPR.NewAssemblyOnlinePlanCell( relnew, ShiftPatternName := nopcell.Total().ShiftPatternName(), ShiftPatternStart := nopcell.Total().ShiftPatternStart(),
+                                                                 ShiftPatternEnd := nopcell.Total().ShiftPatternEnd() );
+          totalNAOPCell.NewAssemblyOnlinePlanColumn( relset, naopc );
+        }
+        
+        // 璁剧疆涓婄嚎璁″垝璇︾粏鍗曞厓鏍�
+        detailNAOPCell   := select( detailNAOPR, NewAssemblyOnlinePlanCell, tempNAOPCell, tempNAOPCell.NewAssemblyOnlinePlanColumn() = naopc );
+        if ( isnull( detailNAOPCell ) ) {
+          detailNAOPCell := detailNAOPR.NewAssemblyOnlinePlanCell( relnew, InventoryWeight := nopcell.InventoryWeight(), Order := nopcell.Order(), OrderNr := nopcell.OrderNr(), Quantity := nopcell.Quantity(),
+                                                                   ShiftPatternEnd := nopcell.ShiftPatternEnd(), ShiftPatternName := nopcell.ShiftPatternName(), ShiftPatternStart := nopcell.ShiftPatternStart() );
+          detailNAOPCell.NewAssemblyOnlinePlanColumn( relset, naopc );
+        }
+        
+        // 璁剧疆鍚堣鍗曞厓鏍肩殑璇︾粏鍗曞厓鏍�
+        totalNAOPCell.Detailed( relinsert, detailNAOPCell );
+      }
+    }
+    
+    // 澶勭悊鏃ュ巻浜嬩欢
+    //pls := selectuniquevalues( macroPlan, AssemblyOnlinePlanRow, tempAOPR, true, tempAOPR.ProductionLine() );
+    //traverse ( pls, Elements, pl ) {
+    //  targetQuantity := ifexpr( pl = "CC MoMo", guard( macroPlan.AssemblyOnlineQuantity().CCMoMo(), 0 ),
+    //                            ifexpr( pl = "DL MoMo", guard( macroPlan.AssemblyOnlineQuantity().DLMoMo(), 0 ), guard( macroPlan.AssemblyOnlineQuantity().DLZKM(), 0 ) )
+    //                           );
+    //  
+    //  u           := select( macroPlan, Unit, tempU, tempU.ID() = pl );
+    //  drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "鎷夌┖" ), false ) );
+    //  lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "閾虹嚎" ), false ) );
+    //  
+    //  // 澶勭悊鎺掔┖
+    //  info( "褰撳墠浜х嚎锛�", pl, "    澶勭悊鎷夌┖--------------------------" );
+    //  traverse ( drainPs, Elements, p ) {
+    //    traverse ( p, ExplicitTimeInterval, eti ) {
+    //      info( "寮�濮嬫椂闂达細", eti.Start().Format( "Y-M2-D2" ), "    缁撴潫鏃堕棿锛�", eti.End().Format( "Y-M2-D2" ) );
+    //      // 鍓嶄竴澶╂棩鍘�
+    //      aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
+    //      info( "闇�瑕佹媺绌虹殑涓婄嚎璁″垝鏃堕棿锛�", aopc.ColumnDate().Format( "Y-M2-D2" ) );
+    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
+    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
+    //      aopr  := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
+    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
+    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
+    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() ); 
+    //      
+    //      cell.Value( [String] ( [Number]cell.Value() - targetQuantity ) );
+    //    }
+    //  }
+    //  
+    //  info( "褰撳墠浜х嚎锛�", pl, "    澶勭悊閾虹嚎--------------------------" );
+    //  // 澶勭悊閾虹嚎
+    //  traverse ( lineLyingPs, Elements, p ) {
+    //    traverse ( p, ExplicitTimeInterval, eti ) {
+    //      info( "寮�濮嬫椂闂达細", eti.Start().Format( "Y-M2-D2" ), "    缁撴潫鏃堕棿锛�", eti.End().Format( "Y-M2-D2" ) );
+    //      info( "闇�瑕侀摵绾跨殑涓婄嚎璁″垝鏃堕棿锛�", eti.Start().Format( "Y-M2-D2" ) );
+    //      aopc  := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
+    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
+    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
+    //      aopr  := minselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
+    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
+    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
+    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
+    //      cell.Value( [String] ( [Number]cell.Value() + targetQuantity ) );
+    //    }
+    //  }
+    //}
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanCell/_ROOT_Type_NewAssemblyOnlinePlanCell.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanCell/_ROOT_Type_NewAssemblyOnlinePlanCell.qbl
new file mode 100644
index 0000000..8ce56e1
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanCell/_ROOT_Type_NewAssemblyOnlinePlanCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type NewAssemblyOnlinePlanCell
+{
+  #keys: '5[413988.0.1702175664][413988.0.1702175662][0.0.0][413988.0.1702175663][413988.0.1702175665]'
+  BaseType: Object
+  StructuredName: 'NewAssemblyOnlinePlanCells'
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_EndDate.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_EndDate.qbl
new file mode 100644
index 0000000..7f835e0
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_EndDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+  #keys: '3[413988.0.1702175792][413988.0.1702175791][413988.0.1702175793]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_StartDate.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_StartDate.qbl
new file mode 100644
index 0000000..7ab49dd
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[413988.0.1702175795][413988.0.1702175794][413988.0.1702175796]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanColumn/_ROOT_Type_NewAssemblyOnlinePlanColumn.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanColumn/_ROOT_Type_NewAssemblyOnlinePlanColumn.qbl
new file mode 100644
index 0000000..84a1495
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanColumn/_ROOT_Type_NewAssemblyOnlinePlanColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type NewAssemblyOnlinePlanColumn
+{
+  #keys: '5[413988.0.1702175659][413988.0.1702175657][0.0.0][413988.0.1702175658][413988.0.1702175660]'
+  BaseType: Object
+  StructuredName: 'NewAssemblyOnlinePlanColumns'
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Name.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Name.qbl
new file mode 100644
index 0000000..92179ca
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[413988.0.1702175744][413988.0.1702175743][413988.0.1702175745]'
+  Description: '鏄剧ず鍚�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_OperationID.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_OperationID.qbl
new file mode 100644
index 0000000..3fdcce6
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_OperationID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OperationID
+{
+  #keys: '3[413988.0.1702175747][413988.0.1702175746][413988.0.1702175748]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductID.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductID.qbl
new file mode 100644
index 0000000..e57806b
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[413988.0.1702175750][413988.0.1702175749][413988.0.1702175751]'
+  Description: '浜у搧ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductionLine.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductionLine.qbl
new file mode 100644
index 0000000..f9c18eb
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductionLine.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionLine
+{
+  #keys: '3[413988.0.1702175741][413988.0.1702175740][413988.0.1702175742]'
+  Description: '浜х嚎鍚�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Type.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Type.qbl
new file mode 100644
index 0000000..a74e6c1
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Type.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Type
+{
+  #keys: '3[413988.0.1702175753][413988.0.1702175752][413988.0.1702175754]'
+  Description:
+  [*
+    1锛氭槑缁嗘樉绀�
+    
+    2锛氬悎璁℃樉绀�
+  *]
+  ValueType: String
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Name.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_OperationID.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_OperationID.qbl
new file mode 100644
index 0000000..4a2ed14
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_OperationID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: OperationID
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductID.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl
new file mode 100644
index 0000000..c59ec43
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductionLine
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Type.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Type.qbl
new file mode 100644
index 0000000..fd112e9
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Type.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Type
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/Function_CalcName.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Function_CalcName.qbl
new file mode 100644
index 0000000..92e3125
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+  TextBody:
+  [*
+    // lihongji Oct-12-2024 (created)
+    
+    value := this.ProductionLine() + ifexpr( this.ProductID() = "All", "", "_" + this.ProductID() );
+    
+    this.Name( value );
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/Method_Filter.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Method_Filter.qbl
new file mode 100644
index 0000000..d5e399d
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/Method_Filter.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Filter (
+  Entitys entitys
+) declarative remote as Boolean
+{
+  TextBody:
+  [*
+    flag := false;
+    
+    traverse ( entitys, Elements.astype( Unit ), u, not flag ) {
+      flag := u.Name() = this.ProductionLine();
+    }
+    
+    return flag;
+  *]
+}
diff --git a/_Main/BL/Type_NewAssemblyOnlinePlanRow/_ROOT_Type_NewAssemblyOnlinePlanRow.qbl b/_Main/BL/Type_NewAssemblyOnlinePlanRow/_ROOT_Type_NewAssemblyOnlinePlanRow.qbl
new file mode 100644
index 0000000..6ae4f95
--- /dev/null
+++ b/_Main/BL/Type_NewAssemblyOnlinePlanRow/_ROOT_Type_NewAssemblyOnlinePlanRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type NewAssemblyOnlinePlanRow
+{
+  #keys: '5[413988.0.1702175652][413988.0.1702175650][0.0.0][413988.0.1702175651][413988.0.1702175653]'
+  BaseType: Object
+  Description: '鏂扮増涓婄嚎璁″垝琛�'
+  StructuredName: 'NewAssemblyOnlinePlanRows'
+}
diff --git a/_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl b/_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl
index f483fbe..78788bb 100644
--- a/_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl
+++ b/_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl
@@ -6,7 +6,7 @@
   [*
     // lihongji Oct-11-2024 (created)
     
-    value := sum( this, Detailed, tempNOPC, true, tempNOPC.Quantity() );
+    value := sum( this, Detailed, tempNOPCell, true, tempNOPCell.Quantity() );
     
     this.TotalQuantity( value );
   *]
diff --git a/_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl b/_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
index 5718ef8..6dd9a3b 100644
--- a/_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
+++ b/_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -69,7 +69,16 @@
         traverse ( nopt, NewOfflinePlanColumn, nopc ) {
           cell   := select( nopr, NewOfflinePlanCell, tempNOPCell, tempNOPCell.NewOfflinePlanColumn() = nopc );
           if ( isnull( cell ) ) {
-            cell := nopr.NewOfflinePlanCell( relnew );
+            uptb := select( macroPlan, Unit.UnitPeriod.astype( UnitPeriodTimeBase ), tempUPTB, 
+                            tempUPTB.UnitID() = nopr.ProductionLine() and tempUPTB.StartDate() = nopc.StartDate() and tempUPTB.End().Date() = nopc.EndDate() );
+            // ShiftPattern
+            sp   := uptb.ShiftPattern();
+            // ShiftDayTime
+            sdt  := select( sp, ShiftDayTime, tempSDT, tempSDT.Name() = tempSDT.ShiftPattern().Name() );
+            cell := nopr.NewOfflinePlanCell( relnew, 
+                                             ShiftPatternName  := guard( sp.Name(), "" ), 
+                                             ShiftPatternStart := guard( sdt.StartDateTime().Format( "H:m" ), "" ),
+                                             ShiftPatternEnd   := guard( sdt.EndDateTIme().Format( "H:m" ), "" ) );
             cell.NewOfflinePlanColumn( relset, nopc );
           }
         }
@@ -79,15 +88,14 @@
       totalNOPR   := nopt.NewOfflinePlanRow( relnew, ProductID := "All", ProductionLine := u.ID(), Type := "2" );
       detailNOPRs := selectset( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = u.ID() and tempNOPR.Type() = "1" );
       traverse ( detailNOPRs, Elements, detailNOPR ) {
-        shiftPatternNOPCell := select( detailNOPR, NewOfflinePlanCell, tempNOPCell, tempNOPCell.ShiftPatternName() <> "" );
         traverse ( detailNOPR, NewOfflinePlanCell, detailNOPCell ) {
           // 鐢熶骇涓嬬嚎璁″垝銆愪骇绾垮悎璁°�戝崟鍏冩牸
           totalNOPRCell   := select( totalNOPR, NewOfflinePlanCell, tempNOPCell, tempNOPCell.NewOfflinePlanColumn() = detailNOPCell.NewOfflinePlanColumn() );
           if ( isnull( totalNOPRCell ) ) {
             totalNOPRCell := totalNOPR.NewOfflinePlanCell( relnew, 
-                                                           ShiftPatternName  := shiftPatternNOPCell.ShiftPatternName(),
-                                                           ShiftPatternStart := shiftPatternNOPCell.ShiftPatternStart(),
-                                                           ShiftPatternEnd   := shiftPatternNOPCell.ShiftPatternEnd() );
+                                                           ShiftPatternName  := detailNOPCell.ShiftPatternName(),
+                                                           ShiftPatternStart := detailNOPCell.ShiftPatternStart(),
+                                                           ShiftPatternEnd   := detailNOPCell.ShiftPatternEnd() );
             totalNOPRCell.NewOfflinePlanColumn( relset, detailNOPCell.NewOfflinePlanColumn() ); // 璁剧疆鍒�
             // 灏嗘槑缁嗗崟鍏冩牸鍏宠仈鍒板悎璁″崟鍏冩牸
             totalNOPRCell.Detailed( relinsert, detailNOPCell );
diff --git a/_Main/Sys/Repr/Global/NewAssemblyOnlinePlanCell.qrp b/_Main/Sys/Repr/Global/NewAssemblyOnlinePlanCell.qrp
new file mode 100644
index 0000000..c96f0b8
--- /dev/null
+++ b/_Main/Sys/Repr/Global/NewAssemblyOnlinePlanCell.qrp
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation NewAssemblyOnlinePlanCell
+{
+  AttributeRepresentation Order
+  {
+    Alignment: 'Right'
+    AttributeKey: '[413988.0.1702175762]'
+  }
+  AttributeRepresentation Quantity
+  {
+    AttributeKey: '[413988.0.1702175786]'
+    Conditional:
+    [
+      DataRepresentation.Conditional
+      {
+        BackgroundColor: '$FF3399'
+        ConditionBody: 'object.Quantity() > 0.0'
+        ConversionBody: ''
+        DefaultBackgroundColor: false
+        InheritConversion: false
+      }
+    ]
+  }
+  AttributeRepresentation ShiftPatternEnd
+  {
+    Alignment: 'Right'
+    AttributeKey: '[413988.0.1702175759]'
+    Synonym: '鐝缁撴潫鏃堕棿'
+  }
+  AttributeRepresentation ShiftPatternName
+  {
+    Alignment: 'Right'
+    AttributeKey: '[413988.0.1702175771]'
+    Synonym: '鐝'
+  }
+  AttributeRepresentation ShiftPatternStart
+  {
+    Alignment: 'Right'
+    AttributeKey: '[413988.0.1702175768]'
+    Synonym: '鐝寮�濮嬫椂闂�'
+  }
+  AttributeRepresentation TotalQuantity
+  {
+    AttributeKey: '[413988.0.1702175783]'
+    Synonym: '鎬婚噺'
+  }
+  RelationRepresentation AsFirstNAOPCell { RelationKey: '[413988.0.1701591354]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp b/_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp
index 99b2043..35f26fa 100644
--- a/_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp
+++ b/_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp
@@ -15,6 +15,7 @@
       DataRepresentation.Conditional
       {
         BackgroundColor: '$FF3399'
+        ConditionBody: 'object.Quantity() > 0.0'
         ConversionBody: ''
         DefaultBackgroundColor: false
         InheritConversion: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
index 65f45f0..8dfc3c0 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -22,7 +22,7 @@
       BaseType: 'WebButton'
       Properties:
       [
-        Taborder: 6
+        Taborder: 7
       ]
     }
     Component bOfflinePlan
@@ -47,6 +47,7 @@
         Image: 'PALM_TREE'
         Label: 'Filing plan'
         Taborder: 3
+        Visible: false
       ]
     }
     Component bPackagingPlan
@@ -57,7 +58,7 @@
       [
         Image: 'SIXPACK_BEER'
         Label: 'Packaging plan'
-        Taborder: 4
+        Taborder: 5
       ]
     }
     Component bShippingActualData
@@ -68,7 +69,7 @@
       [
         Image: 'TABLE_CONNECTION'
         Label: 'Shipping data'
-        Taborder: 5
+        Taborder: 6
       ]
     }
     Component bNewOfflinePlan
@@ -82,6 +83,18 @@
         Taborder: 2
       ]
     }
+    Component bNewAssemblyOnlinePlan
+    {
+      #keys: '[413988.0.1701710485]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鏂扮増涓婄嚎璁″垝'
+        Image: 'PALM_TREE'
+        Label: 'Filing plan'
+        Taborder: 4
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClic.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClic.def
new file mode 100644
index 0000000..9305f09
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClic.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgSecondDevelopmentPlan/bNewAssemblyOnlinePlan
+Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClick
+{
+  #keys: '[413988.0.1699330508]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "NewAssemblyOnlinePlan", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlActions.def
new file mode 100644
index 0000000..a50a477
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[413988.0.1703941978]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[413988.0.1703941982]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[413988.0.1703941984]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    ExcludeFromActiveComponent: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'footer'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlContent.def
new file mode 100644
index 0000000..e821fba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlContent.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[413988.0.1703941976]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component efAssemblyOnlinePlanProductionLineName
+    {
+      #keys: '[413988.0.1703822319]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        DataBinding: 'MacroPlan.A_AssemblyOnlinePlanProductionLineName'
+        Label: '浜х嚎'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..8d5b692
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+  #keys: '[413988.0.1703941988]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..71916b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[413988.0.1703941987]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.ApplyChanges();
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/_ROOT_Component_DialogAssemblyOnlinePlanProductionLineName.def b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/_ROOT_Component_DialogAssemblyOnlinePlanProductionLineName.def
new file mode 100644
index 0000000..1f3e133
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/_ROOT_Component_DialogAssemblyOnlinePlanProductionLineName.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogAssemblyOnlinePlanProductionLineName
+{
+  #keys: '[413988.0.1703941974]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor515\043474.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor515\043474.def"
new file mode 100644
index 0000000..6a963a1
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor515\043474.def"
@@ -0,0 +1,110 @@
+Quintiq file version 2.0
+Component MatrixEditor515 id:MatrixEditor515_474
+{
+  #keys: '[413988.0.1703400440]'
+  BaseType: 'WebMatrixEditor'
+  Children:
+  [
+    Component MatrixEditorCell568
+    {
+      #keys: '[413988.0.1703400441]'
+      BaseType: 'WebMatrixEditorCell'
+      Children:
+      [
+        Component DataExtractor802
+        {
+          #keys: '[413988.0.1703400442]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[NewAssemblyOnlinePlanRow]'
+            Source: 'dhSelectedDetailNewAssemblyOnlinePlanRow'
+            Taborder: 0
+            Transformation: 'Elements.NewAssemblyOnlinePlanCell'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Attributes: 'Quantity;Order'
+        Column: 'NewAssemblyOnlinePlanColumn'
+        Row: 'NewAssemblyOnlinePlanRow'
+        Taborder: 0
+      ]
+    }
+    Component MatrixEditorRows710
+    {
+      #keys: '[413988.0.1703400443]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor206
+        {
+          #keys: '[413988.0.1703400444]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[NewAssemblyOnlinePlanRow]'
+            Source: 'dhSelectedDetailNewAssemblyOnlinePlanRow'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'Name'
+        SortCriteria: 'ProductionLine;ProductID'
+        Taborder: 1
+      ]
+    }
+    Component MatrixEditorColumns748
+    {
+      #keys: '[413988.0.1703400445]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor675
+        {
+          #keys: '[413988.0.1703400446]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'NewAssemblyOnlinePlanColumn'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'StartDate'
+        SortCriteria: 'StartDate'
+        Taborder: 2
+      ]
+    }
+    #child: matrixEditorActionBarPage623_1
+    #child: matrixeditorContextMenu229_1
+    Component UserConfigurableInformation675
+    {
+      #keys: '[413988.0.1703400452]'
+      BaseType: 'WebUserConfigurableInformation'
+      Properties:
+      [
+        ObjectType: 'NewAssemblyOnlinePlanCell'
+        Taborder: 5
+        Tooltip: 'VALUE( object.GetNewAssemblyOnlinePlanMatrixTooltip() )'
+      ]
+    }
+  ]
+  Properties:
+  [
+    AllowAttributeConfiguration: true
+    AllowMultipleAttributes: true
+    Columns: 'MatrixEditorColumns748'
+    ContextMenu: 'matrixeditorContextMenu229'
+    Rows: 'MatrixEditorRows710'
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor583\043969.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor583\043969.def"
new file mode 100644
index 0000000..239f973
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor583\043969.def"
@@ -0,0 +1,99 @@
+Quintiq file version 2.0
+Component MatrixEditor583 id:MatrixEditor583_969
+{
+  #keys: '[413988.0.1703400520]'
+  BaseType: 'WebMatrixEditor'
+  Children:
+  [
+    Component MatrixEditorCell950
+    {
+      #keys: '[413988.0.1703400521]'
+      BaseType: 'WebMatrixEditorCell'
+      Children:
+      [
+        Component DataExtractor782
+        {
+          #keys: '[413988.0.1703400522]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[NewAssemblyOnlinePlanRow]'
+            Source: 'dhSelectedTotalNewAssemblyOnlinePlanRow'
+            Taborder: 0
+            Transformation: 'Elements.NewAssemblyOnlinePlanCell'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Attributes: 'TotalQuantity;ShiftPatternName;ShiftPatternStart;ShiftPatternEnd'
+        Column: 'NewAssemblyOnlinePlanColumn'
+        Row: 'NewAssemblyOnlinePlanRow'
+        Taborder: 0
+      ]
+    }
+    Component MatrixEditorRows569
+    {
+      #keys: '[413988.0.1703400523]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor195
+        {
+          #keys: '[413988.0.1703400524]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[NewAssemblyOnlinePlanRow]'
+            Source: 'dhSelectedTotalNewAssemblyOnlinePlanRow'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'Name'
+        SortCriteria: 'ProductionLine;ProductID'
+        Taborder: 1
+      ]
+    }
+    Component MatrixEditorColumns473
+    {
+      #keys: '[413988.0.1703400525]'
+      BaseType: 'WebMatrixEditorHeaderLevel'
+      Children:
+      [
+        Component DataExtractor526
+        {
+          #keys: '[413988.0.1703400526]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'NewAssemblyOnlinePlanColumn'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Legend: 'StartDate'
+        SortCriteria: 'StartDate'
+        Taborder: 2
+      ]
+    }
+    #child: matrixEditorActionBarPage338_1
+    #child: matrixeditorContextMenu267_1
+  ]
+  Properties:
+  [
+    AllowMultipleAttributes: true
+    Columns: 'MatrixEditorColumns473'
+    ContextMenu: 'matrixeditorContextMenu267'
+    Editable: false
+    Rows: 'MatrixEditorRows569'
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage338\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage338\0431.def"
new file mode 100644
index 0000000..def5588
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage338\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage338 id:matrixEditorActionBarPage338_1
+{
+  #keys: '[413988.0.1703400527]'
+  BaseType: 'matrixEditorActionBarPage'
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage623\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage623\0431.def"
new file mode 100644
index 0000000..ce5f7c7
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage623\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage623 id:matrixEditorActionBarPage623_1
+{
+  #keys: '[413988.0.1703400447]'
+  BaseType: 'matrixEditorActionBarPage'
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu229\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu229\0431.def"
new file mode 100644
index 0000000..6cca57e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu229\0431.def"
@@ -0,0 +1,45 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu229 id:matrixeditorContextMenu229_1
+{
+  #keys: '[413988.0.1703400448]'
+  BaseType: 'matrixeditorContextMenu'
+  Children:
+  [
+    Component mSeparator
+    {
+      #keys: '[413988.0.1703400449]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Separator: true
+        Taborder: 2
+      ]
+    }
+    Component mShowOrHide
+    {
+      #keys: '[413988.0.1703400450]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'POWER'
+        Taborder: 3
+        Title: 'Show/Hide total'
+      ]
+    }
+    Component mAssemblyOnlinePlanProductionLineName
+    {
+      #keys: '[413988.0.1703400451]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'FACTORY'
+        Taborder: 4
+        Title: '瑕佺敓鎴愮殑浜х嚎锛堟祴璇曚笓鐢級'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 4
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu267\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu267\0431.def"
new file mode 100644
index 0000000..c3c0a67
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu267\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu267 id:matrixeditorContextMenu267_1
+{
+  #keys: '[413988.0.1703400528]'
+  BaseType: 'matrixeditorContextMenu'
+  Properties:
+  [
+    Taborder: 4
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pDetail\043415.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pDetail\043415.def"
new file mode 100644
index 0000000..a29064b
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pDetail\043415.def"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component pDetail id:pDetail_415
+{
+  #keys: '[413988.0.1703400439]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: MatrixEditor515_474
+  ]
+  Properties:
+  [
+    Border: true
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pHeader\043136.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pHeader\043136.def"
new file mode 100644
index 0000000..4c7dcdd
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pHeader\043136.def"
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component pHeader id:pHeader_136
+{
+  #keys: '[413988.0.1699320629]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component bDownload
+    {
+      #keys: '[413988.0.1699320630]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Download'
+        Taborder: 1
+      ]
+    }
+    Component bOnlineQuantity
+    {
+      #keys: '[413988.0.1699320631]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Filing line volume'
+        Taborder: 2
+      ]
+    }
+    Component bGenerateReport
+    {
+      #keys: '[413988.0.1699320632]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Generate'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pTotal\04361.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pTotal\04361.def"
new file mode 100644
index 0000000..6c8da7b
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pTotal\04361.def"
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component pTotal id:pTotal_61
+{
+  #keys: '[413988.0.1703400519]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: MatrixEditor583_969
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_.def b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_.def
new file mode 100644
index 0000000..79cd699
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: matrixeditorContextMenu229_1/mAssemblyOnlinePlanProductionLineName
+Response OnClick () id:Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_OnClick
+{
+  #keys: '[413988.0.1703400437]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogAssemblyOnlinePlanProductionLineName );
+      
+      ApplicationMacroPlanner.ShowFormModal( dlg );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick.def
new file mode 100644
index 0000000..f5fa3be
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: matrixeditorContextMenu229_1/mShowOrHide
+Response OnClick () id:Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick
+{
+  #keys: '[413988.0.1703400438]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      pTotal.Visible( not pTotal.Visible() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bDownload_OnClick.def
new file mode 100644
index 0000000..8356170
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bDownload_OnClick.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pHeader_136/bDownload
+Response OnClick () id:Response_pHeader_136_bDownload_OnClick
+{
+  #keys: '[413988.0.1699320628]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      binaryValue := NewAssemblyOnlinePlanCell::Download( MacroPlan );
+      
+      Application.Download( "Filing plan.xlsx", binaryValue.AsBinaryData() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bGenerateReport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bGenerateReport_OnClick.def
new file mode 100644
index 0000000..59ef675
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bGenerateReport_OnClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: pHeader_136/bGenerateReport
+Response OnClick () id:Response_pHeader_136_bGenerateReport_OnClick
+{
+  #keys: '[413988.0.1699320626]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      nopt := maxselect( MacroPlan, NewOfflinePlanTable, tempNOPT, true, tempNOPT.SaveDateTime() );
+      
+      NewAssemblyOnlinePlanCell::RefreshData( MacroPlan, nopt );
+      
+      WebMessageBox::Success( Translations::A_VWED_Success() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bOnlineQuantity_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bOnlineQuantity_OnClick.def
new file mode 100644
index 0000000..f09b82e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bOnlineQuantity_OnClick.def
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: pHeader_136/bOnlineQuantity
+Response OnClick () id:Response_pHeader_136_bOnlineQuantity_OnClick
+{
+  #keys: '[413988.0.1699320627]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      aoq := MacroPlan.AssemblyOnlineQuantity();
+      if ( isnull( aoq ) ) {
+        MacroPlan.AssemblyOnlineQuantity( relnew );
+      }
+      
+      dlg := construct( DialogAssemblyOnlineQuantity );
+      
+      ApplicationMacroPlanner.ShowFormModal( dlg );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/_ROOT_Component_FormNewAssemblyOnlinePlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/_ROOT_Component_FormNewAssemblyOnlinePlan.def
new file mode 100644
index 0000000..66ada03
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/_ROOT_Component_FormNewAssemblyOnlinePlan.def
@@ -0,0 +1,73 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormNewAssemblyOnlinePlan
+{
+  #keys: '[413988.0.1699320466]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pHeader_136
+    #child: pDetail_415
+    #child: pTotal_61
+    Component dhSelectedDetailNewAssemblyOnlinePlanRow
+    {
+      #keys: '[413988.0.1703400672]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[NewAssemblyOnlinePlanRow]*'
+      Children:
+      [
+        Component deSelectedNewOfflinePlanRow id:deSelectedNewOfflinePlanRow_442
+        {
+          #keys: '[413988.0.1703400673]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
+            FixedFilter: 'object.Filter( entities ) and object.Type() = "1"'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'NewAssemblyOnlinePlanRow'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 3
+      ]
+    }
+    Component dhSelectedTotalNewAssemblyOnlinePlanRow
+    {
+      #keys: '[413988.0.1703400733]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[NewAssemblyOnlinePlanRow]*'
+      Children:
+      [
+        Component deSelectedNewOfflinePlanRow681 id:deSelectedNewOfflinePlanRow681_979
+        {
+          #keys: '[413988.0.1703400734]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
+            FixedFilter: 'object.Filter( entities ) and object.Type() = "2"'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'NewAssemblyOnlinePlanRow'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 4
+      ]
+    }
+  ]
+  Properties:
+  [
+    Description: '鏂扮増涓婄嚎璁″垝'
+    Title: 'Assembly online plan'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/NewAssemblyOnlinePlan.vw b/_Main/UI/MacroPlannerWebApp/Views/NewAssemblyOnlinePlan.vw
new file mode 100644
index 0000000..422e55c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/NewAssemblyOnlinePlan.vw
@@ -0,0 +1,215 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormNewAssemblyOnlinePlan
+      {
+        title: 'QMacroPlanner::FormNewAssemblyOnlinePlan'
+        shown: true
+        componentID: 'QMacroPlanner::FormNewAssemblyOnlinePlan'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 14
+          columnPosition: 1
+          columnSpan: 12
+        }
+        components
+        {
+          FormNewAssemblyOnlinePlan_pHeader
+          {
+            sizeRatio: 1
+          }
+          FormNewAssemblyOnlinePlan_pDetail
+          {
+            sizeRatio: 1
+          }
+          FormNewAssemblyOnlinePlan_MatrixEditor515
+          {
+            gridColor: '#c4c4c4'
+            totalHeaderWidth: 530
+            attributeHeaderWidthRatio: 0.6
+            nameHeaderWidthRatio: 0.4
+            columnWidth: 100
+            horizontalGrid: true
+            verticalGrid: true
+            backendState
+            {
+              componentId: 'QMacroPlanner::FormNewAssemblyOnlinePlan.MatrixEditor515'
+              state
+              {
+                cells
+                {
+                  attributes
+                  {
+                    attribute_Quantity
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 0
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Quantity'
+                    }
+                    attribute_Order
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 1
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Order'
+                    }
+                  }
+                }
+                columns
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'StartDate'"
+                  }
+                }
+                rows
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'ProductionLine';datamember:'ProductID'"
+                  }
+                }
+              }
+            }
+          }
+          FormNewAssemblyOnlinePlan_pTotal
+          {
+            sizeRatio: 1
+          }
+          FormNewAssemblyOnlinePlan_MatrixEditor583
+          {
+            gridColor: '#c4c4c4'
+            totalHeaderWidth: 532
+            attributeHeaderWidthRatio: 0.6
+            nameHeaderWidthRatio: 0.4
+            columnWidth: 100
+            horizontalGrid: true
+            verticalGrid: true
+            backendState
+            {
+              componentId: 'QMacroPlanner::FormNewAssemblyOnlinePlan.MatrixEditor583'
+              state
+              {
+                cells
+                {
+                  attributes
+                  {
+                    attribute_TotalQuantity
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 0
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'TotalQuantity'
+                    }
+                    attribute_ShiftPatternName
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 1
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'ShiftPatternName'
+                    }
+                    attribute_ShiftPatternStart
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 2
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'ShiftPatternStart'
+                    }
+                    attribute_ShiftPatternEnd
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 3
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'ShiftPatternEnd'
+                    }
+                  }
+                }
+                columns
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'StartDate'"
+                  }
+                }
+                rows
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'ProductionLine';datamember:'ProductID'"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      form_FormGeneralSettings
+      {
+        title: 'General Settings'
+        shown: true
+        componentID: 'FormGeneralSettings'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormGeneralSettings_PanelContent
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelGeneralParameter
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelLeadTimeDependent
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelShelfLife
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelSustainability
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelForecastNetting
+          {
+            sizeRatio: 1
+          }
+          FormGeneralSettings_PanelActions
+          {
+            sizeRatio: 1
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    page: ''
+    group: ''
+    index: 0
+    image: 'BEAR'
+    description: ''
+  }
+  formatversion: 2
+  id: 'NewAssemblyOnlinePlan'
+  name: 'NewAssemblyOnlinePlan'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3