From 7da84821eb07cfa1370adfe4144e41416cf1cefa Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期四, 07 十一月 2024 11:46:17 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 _Main/BL/Type_AssemblyOnlinePlanVersion/Method_GenerateColumn.qbl                                                        |   49 +++--
 _Main/BL/Type_InterfaceDataset/Method_GenerateArchiveData.qbl                                                            |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation#283.def                     |    1 
 _Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_Publish.qbl                                                              |   28 ---
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def               |    4 
 _Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_InitiateSearch.qbl                                                  |   29 +++
 _Main/BL/Type_InventoryPlanArchiveVersion/StaticMethod_GenerateData.qbl                                                  |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_283_ButtonSearch_OnClick.def |   18 ++
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader#952.def                        |    2 
 _Main/BL/Type_AssemblyOnlinePlanCell0/DefaultValue_Order.qbl                                                             |    6 
 _Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetRow.qbl                                                                |    6 
 _Main/BL/Type_OfflinePlanArchiveVersion/StaticMethod_RefreshData.qbl                                                     |    2 
 _Main/BL/Type_AssemblyOnlinePlanVersion/Method_Clear.qbl                                                                 |   15 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_OnCreated.def                               |   17 ++
 _Main/BL/Type_AssemblyOnlinePlanVersion/Method_Generate.qbl                                                              |   37 ++++
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable#273.def                         |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_ButtonSearch_OnClick.def             |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable#384.def                  |   31 +--
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def    |   12 +
 _Main/BL/Type_InterfaceDataset/Method_PublishPlanReportData.qbl                                                          |    2 
 _Main/BL/Type_InventoryPlanArchiveVersion/Method_GetRowByUnit.qbl                                                        |    6 
 _Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_369_ButtonSearch_OnClick.def    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_MatrixEditorTable.def                             |    4 
 _Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_Publish.qbl                                                            |   27 +++
 _Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_GenerateData.qbl                                                       |   39 ++--
 _Main/BL/Type_OfflinePlanArchiveVersion/Method_GetRow.qbl                                                                |    6 
 _Main/BL/Type_AssemblyOnlinePlanCell0/Attribute_Order.qbl                                                                |    8 +
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_MatrixEditorTable#791.def                       |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def                 |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def  |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick.def           |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def            |    4 
 _Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl                                                    |    2 
 _Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl                                                     |   22 +-
 35 files changed, 272 insertions(+), 150 deletions(-)

diff --git a/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl b/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
index f07250e..feef4a0 100644
--- a/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
@@ -50,7 +50,7 @@
       }
     }
     
-    traverse( owner, OfflinePlanArchiveVersion, table ){
+    traverse( owner, OfflinePlanArchiveVersion, table, not table.IsShow() ){
       traverse( table, Column, column, column.StartDate() >= startdate and column.StartDate() <= enddate ){
         traverse( column, Cell, cell, ( werk = 'All' or cell.Row().Unit().FindString( werk, 0 ) > -1 )
                   and ( cell.Row().ProductionLine() <> 'DL_MOMO' or cell.Row().ProductionLine() <> 'CC_MOMO' ) ){
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell0/Attribute_Order.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell0/Attribute_Order.qbl
new file mode 100644
index 0000000..c4b8b02
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell0/Attribute_Order.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Order
+{
+  #keys: '3[415136.0.1280830135][415136.0.1280830134][415136.0.1280830136]'
+  Description: '鐢熶骇椤哄簭锛圫tring锛�'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanCell0/DefaultValue_Order.qbl b/_Main/BL/Type_AssemblyOnlinePlanCell0/DefaultValue_Order.qbl
new file mode 100644
index 0000000..9726838
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanCell0/DefaultValue_Order.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Order
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_GenerateData.qbl b/_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_GenerateData.qbl
index a06d769..b7670aa 100644
--- a/_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_GenerateData.qbl
@@ -1,10 +1,9 @@
 Quintiq file version 2.0
 #parent: #root
 StaticMethod GenerateData (
-  const MacroPlan macroplan,
   InterfaceDataset interfaceDataset,
-  String executor,
-  Boolean versionflag
+  const MacroPlan macroplan,
+  String executor
 )
 {
   Description: '鐢熸垚鍙互涓嬪彂鐨勫鎴烽渶姹傦紙PPA+IDS锛夋暟鎹�'
@@ -25,32 +24,28 @@
                                                                  , Name := Translations::InterfaceDataset_AssemblyOnlinePlanPPPSPush_Name()
                                                                  , InterfaceDateTime := nowdate
                                                                  , Message := '瑁呴厤涓婄嚎璁″垝-PPPS浼犺緭鑷虫暟鎹腑鍙帮紙鍖呭惈鎺掑簭锛�/SAP锛堜笉鍖呭惈鎺掑簭锛�'
-                                                                 , IsShow := false
-                                                                 , Last := true
-                                                                 , ReturnSuccess := true
-                                                                 , ReturnMsg := 'Success'
-                                                                 , Success := true
+                                                                 , Last                      := true
                                                                   );
-    traverse( macroplan, AssemblyOnlinePlanColumn, column ){
-      traverse( column, AssemblyOnlinePlanCell, cell, cell.Value() <> '' and cell.AssemblyOnlinePlanRow().Type() = '1' ){
-        quantityrow        := cell.AssemblyOnlinePlanRow();
-        ordercell          := selectobject( column, AssemblyOnlinePlanCell, ocell, ocell.AssemblyOnlinePlanRow().ProductID() = quantityrow.ProductID() 
-                                            and ocell.AssemblyOnlinePlanRow().ProductionLine() = quantityrow.ProductionLine() 
-                                            and ocell.AssemblyOnlinePlanRow().Type() = '2' );
-        product            := selectobject( macroplan, Product_MP, product, product.ID() = quantityrow.ProductID() );
-    
-        cd                  :=interfaceDataset.AssemblyOnlinePlanPPPSPush( relnew, Product           := product.ID()
-                                                                           , PlanningDate            := column.ColumnDate()
-                                                                           , PlanningQty             := [Number]cell.Value()
-                                                                           , Sequence                := ordercell.Value()
+    traverse( interfaceDataset, AssemblyOnlinePlanVersion, verison, not verison.IsShow() ){
+      traverse( verison, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() ){
+        traverse( column, Cell, cell ){
+          row              := cell.Row();
+          cd               :=interfaceDataset.AssemblyOnlinePlanPPPSPush( relnew, Product            := row.ProductID()
+                                                                           , PlanningDate            := column.StartDate()
+                                                                           , PlanningQty             := [Number]cell.Quantity()
+                                                                           , Sequence                := cell.Order()
                                                                            , VersionName             := macroplan.ScenarioName()
                                                                            , InterfaceTime           := nowdate
-                                                                           , VersionFlag             := versionflag
-                                                                           , ProductFourCode         := product.Notes()
+                                                                           , FactoryName             := row.Unit()
+                                                                          , Fac                     := ifexpr( row.Unit() = FinancialProductionReport::GetDefaultCCUnit(), 'CC', 'DL' )  
+    //                                                                       , VersionFlag             := versionflag
+                                                                           , ProductFourCode         := ifexpr( row.ProductID() = row.Name(), '', row.Name() )
                                                                            );
         loginfo.AssemblyOnlinePlanPPPSPush( relinsert, cd );
+        }
       }
     }
     loginfo.TotalRow( loginfo.AssemblyOnlinePlanPPPSPush( relsize ) );
+    AssemblyOnlinePlanPPPSPush::Publish( interfaceDataset, loginfo );
   *]
 }
diff --git a/_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_Publish.qbl b/_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_Publish.qbl
new file mode 100644
index 0000000..8cf3ab9
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanPush/StaticMethod_Publish.qbl
@@ -0,0 +1,27 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Publish (
+  InterfaceDataset owner,
+  InterfaceLoginfo loginfo
+)
+{
+  TextBody:
+  [*
+    //// 鐢勫叞楦� Jul-17-2024 (created)
+    jsonarray          := JSON::Array();
+    traverse( owner, AssemblyOnlinePlanPPPSPush, aopdata ){
+      aopdatajson      := JSON::Object().Add( "product", aopdata.Product() ).Add( "planningDate", aopdata.PlanningDate().Format( 'Y-M2-D2' ) )//"2024-10-01" )
+                                    .Add( "planningQty", aopdata.PlanningQty() )
+                                    .Add( "sequence", aopdata.Sequence() )
+                                    .Add( "factoryName", aopdata.FactoryName() )
+                                    .Add( "fac", aopdata.Fac() )
+                                    .Add( "versionName", aopdata.VersionName() )
+                                    .Add( "interfaceTime", aopdata.InterfaceTime().Format( 'Y-M2-D2 H:m:s' ) ).Build();/*"2024-10-01 12:00:00" )*/
+      jsonarray.Add( aopdatajson );
+    }
+    requestbody := jsonarray.Build().AsString();
+    info(  requestbody );
+    data     := InterfaceLoginfo::CallInterfaceForDataCenter( owner, loginfo );
+    info( '----------------', data.AsString() );
+  *]
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_Clear.qbl b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_Clear.qbl
new file mode 100644
index 0000000..31b3c2e
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_Clear.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear (
+  Dates periods
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Jun-25-2024 (created)
+    this.Column( relflush );
+    this.Row( relflush );
+    
+    this.GenerateColumn( periods, true );
+  *]
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_Generate.qbl b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_Generate.qbl
new file mode 100644
index 0000000..a13a3a7
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_Generate.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+  AssemblyOnlinePlanVersionSearch search
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Jun-25-2024 (created)
+    info( '-----------Search start-------' );
+    table                   := selectobject( this,InterfaceDataset.AssemblyOnlinePlanVersion, report, not report.IsShow() );
+    //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+    aopcolumns              := selectuniquevalues(  table, Column, aopcolumn, aopcolumn.TimeUnit() = search.TimeUnit() and aopcolumn.StartDate() >= search.StartDate() and aopcolumn.StartDate() <= search.EndDate(), aopcolumn.StartDate() );
+    this.Clear( aopcolumns );
+    traverse( table, Row, row, ( search.Unit() = FinancialProductionReport::GetDefaultAllUnit() or row.Unit() = search.Unit() ) 
+              and ( search.Product() = FinancialProductionReport::GetDefaultAllUnit() or search.Product() = row.Name() )
+              and ( search.ProductionLine() = FinancialProductionReport::GetDefaultAllUnit() or search.ProductionLine() = row.ProductionLine() ) ){
+      
+      showrow               := selectobject( this, Row, showrow, showrow.Name() = row.Name() and showrow.Unit() = search.Unit() );
+      if( isnull( showrow ) ){
+        showrow             := this.Row( relnew, Name := row.Name(), ProductID := row.ProductID(), ProductionLine := row.ProductionLine(), Type := row.Type(), Unit := search.Unit() );
+      }
+      traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
+        column              := selectobject( this, Column, column, column.ColumnName() = cell.Column().ColumnName() );
+        if( not isnull( column ) ){
+          showcell          := selectobject( showrow, Cell, showcell, showcell.Column() = column );
+          if( isnull( showcell ) ){
+            showcell        := column.Cell( relnew, Quantity := 0 );
+            showrow.Cell( relinsert, showcell );
+          }
+          showcell.Quantity( cell.Quantity() + showcell.Quantity() );
+        }
+      }
+    }
+    info( '-----------Search end-------' );
+  *]
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GenerateColumn.qbl b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GenerateColumn.qbl
index b617de1..de6c29b 100644
--- a/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GenerateColumn.qbl
+++ b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GenerateColumn.qbl
@@ -1,40 +1,47 @@
 Quintiq file version 2.0
 #parent: #root
 Method GenerateColumn (
-  Dates periods
+  Dates periods,
+  Boolean isshow
 )
 {
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
+    timeunit              := guard( this.InterfaceDataset().AssemblyOnlinePlanVersionSearch().TimeUnit(), Translations::MP_GlobalParameters_Day() ) ;
     weekstart             := periods.Element( 0 );
     
     monthstart            := periods.Element( 0 );
     traverse( periods, Elements, periodtime ){
-      periodname          := periodtime.Format( "M2/D2/Y" );
-      
-      this.Column( relnew, ColumnName := periodname, StartDate := periodtime, EndDate := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
-      
-      weekend             := ( weekstart + Duration::Days( 6 ) ).Date();
-      if( ( weekend.Year() <> periodtime.Year() and weekend.Month() > 1 ) or ( abs( weekstart.Week() - periodtime.Week() ) > 1 and weekend.Year() = periodtime.Year() ) ){
-        weekstart         := periodtime;
-      }
-      if( periodtime = weekstart ){
-        weekperiodname    := weekstart.Format( "M2/D2/Y" );
-        this.Column( relnew, ColumnName := weekperiodname, StartDate := weekstart, EndDate := ( weekstart.StartOfNextWeek() - Duration::Days( 1 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() );
+      if( not isshow or timeunit = Translations::MP_GlobalParameters_Day() ){
+        periodname        := periodtime.Format( "M2/D2/Y" );
         
+        this.Column( relnew, ColumnName := periodname, StartDate := periodtime, EndDate := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
       }
-      if( ( monthstart.Year() <> periodtime.Year() and abs( monthstart.Month() - periodtime.Month() ) <> 11 ) or ( abs( monthstart.Month() - periodtime.Month() ) > 1 and monthstart.Year() = periodtime.Year() ) ){
-        monthstart        := periodtime;
+      if( not isshow or timeunit = Translations::MP_GlobalParameters_Week() ){
+        weekend           := ( weekstart + Duration::Days( 6 ) ).Date();
+        if( ( weekend.Year() <> periodtime.Year() and weekend.Month() > 1 ) or ( abs( weekstart.Week() - periodtime.Week() ) > 1 and weekend.Year() = periodtime.Year() ) ){
+          weekstart       := periodtime;
+        }
+        if( periodtime = weekstart ){
+          weekperiodname  := weekstart.Format( "M2/D2/Y" );
+          this.Column( relnew, ColumnName := weekperiodname, StartDate := weekstart, EndDate := ( weekstart.StartOfNextWeek() - Duration::Days( 1 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() );
+          
+        }
+        weekstart         := periodtime.StartOfNextWeek();
       }
-      if( periodtime = monthstart ){
-        monthperiodname   := monthstart.Format( "M2/D2/Y" );
-        enddate           := ( monthstart.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
-        this.Column( relnew, ColumnName := monthperiodname, StartDate := monthstart, EndDate := enddate, TimeUnit := Translations::MP_GlobalParameters_Month() );
-        
+      if( not isshow or timeunit = Translations::MP_GlobalParameters_Month() ){
+        if( ( monthstart.Year() <> periodtime.Year() and abs( monthstart.Month() - periodtime.Month() ) <> 11 ) or ( abs( monthstart.Month() - periodtime.Month() ) > 1 and monthstart.Year() = periodtime.Year() ) ){
+          monthstart      := periodtime;
+        }
+        if( periodtime = monthstart ){
+          monthperiodname := monthstart.Format( "M2/D2/Y" );
+          enddate         := ( monthstart.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
+          this.Column( relnew, ColumnName := monthperiodname, StartDate := monthstart, EndDate := enddate, TimeUnit := Translations::MP_GlobalParameters_Month() );
+          
+        }
+        monthstart        := periodtime.StartOfNextMonth();
       }
-      weekstart         := periodtime.StartOfNextWeek();
-      monthstart        := periodtime.StartOfNextMonth();
     }
   *]
 }
diff --git a/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetRow.qbl b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetRow.qbl
index 3777a40..78a0530 100644
--- a/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetRow.qbl
+++ b/_Main/BL/Type_AssemblyOnlinePlanVersion/Method_GetRow.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 Method GetRow (
-  const NewAssemblyOnlinePlanRow aoprow
+  NewAssemblyOnlinePlanRow aoprow
 ) as AssemblyOnlinePlanVersionRow
 {
   TextBody:
@@ -10,8 +10,10 @@
     row       := selectobject( this, Row, row, row.ProductID() = aoprow.ProductID() and row.ProductionLine() = aoprow.ProductionLine() and row.Type() = aoprow.Type() );
     
     if( isnull( row ) ){
+      product := selectobject( aoprow.MacroPlan(), Product_MP, product, product.ID() = aoprow.ProductID() );
       unit    := ifexpr( aoprow.ProductionLine().FindString( "CC", 0 ) > -1, FinancialProductionReport::GetDefaultCCUnit(), FinancialProductionReport::GetDefaultDLUnit() );
-      row     := this.Row( relnew, ProductID := aoprow.ProductID(), ProductionLine := aoprow.ProductionLine(), Type := aoprow.Type(), Unit := unit );
+      row     := this.Row( relnew, Name := aoprow.ProductID(), ProductionLine := aoprow.ProductionLine(), Type := aoprow.Type(), Unit := unit
+                           , ProductID := ifexpr( exists( product.GetAllParent(), Elements, e, e.ID() = EnginePipelineReport::GetDefaultProductParent() ), product.Notes(), product.ID() ) );
       //鍒濆鍖栧崟鍏冩牸
       row.InitializeCell();
     }
diff --git a/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_InitiateSearch.qbl b/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_InitiateSearch.qbl
new file mode 100644
index 0000000..d60f029
--- /dev/null
+++ b/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_InitiateSearch.qbl
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod InitiateSearch (
+  InterfaceDataset owner
+) as AssemblyOnlinePlanVersion
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Sep-29-2024 (created)
+    allunit                   := FinancialProductionReport::GetDefaultAllUnit();
+    search                    := owner.AssemblyOnlinePlanVersionSearch();
+    if( isnull( owner.AssemblyOnlinePlanVersionSearch() ) ){
+      search                  := owner.AssemblyOnlinePlanVersionSearch( relnew, Product := allunit, ProductionLine := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
+    }else{
+      search                  := owner.AssemblyOnlinePlanVersionSearch();
+      search.Product( allunit );
+      search.ProductionLine( allunit );
+      search.TimeUnit(  Translations::MP_GlobalParameters_Day() );
+      search.Unit( allunit );
+      search.StartDate( Date::MinDate() );
+      search.EndDate( Date::MaxDate() );
+    }
+    table                     := selectobject( owner, AssemblyOnlinePlanVersion, table, table.IsShow() );
+    if( not isnull( table ) ){
+      table.Generate( search);
+    }
+    return table;
+  *]
+}
diff --git a/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl b/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl
index 82afd96..9d13f21 100644
--- a/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl
+++ b/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 StaticMethod RefreshData (
   InterfaceDataset interface,
-  const MacroPlan macroPlan
+  MacroPlan macroPlan
 )
 {
   TextBody:
@@ -11,30 +11,26 @@
     interface.AssemblyOnlinePlanVersion( relflush );
     allunit                := AssemblyOnlinePlanVersion::GetDefaultAllUnit();
     name                   := AssemblyOnlinePlanVersion::GetDefaultName();//search                 := 
-    interface.AssemblyOnlinePlanVersionSearch( relnew, Product := allunit, ProductionLine := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
+    search                 := interface.AssemblyOnlinePlanVersionSearch( relnew, Product := allunit, ProductionLine := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
     table                  := selectobject( interface, AssemblyOnlinePlanVersion, version, not version.IsShow() );
     if( isnull( table ) ){
       table                := interface.AssemblyOnlinePlanVersion( relnew, ID := name, Name := name );
     }
-    //showtable              := selectobject( interface, AssemblyOnlinePlanVersion, version, version.IsShow() );
-    //if( isnull( table ) ){
-    //  showtable               := interface.AssemblyOnlinePlanVersion( relnew, ID := name, Name := name, IsShow := true );
-    //}
+    showtable              := selectobject( interface, AssemblyOnlinePlanVersion, version, version.IsShow() );
+    if( isnull( table ) ){
+      showtable               := interface.AssemblyOnlinePlanVersion( relnew, ID := name, Name := name, IsShow := true );
+    }
     aopcolumns             := selectuniquevalues(  macroPlan, NewAssemblyOnlinePlanColumn, aopcolumn, not exists( table, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() = aopcolumn.StartDate() ), aopcolumn.StartDate() );
-    table.GenerateColumn( aopcolumns );
+    table.GenerateColumn( aopcolumns, false );
     traverse( macroPlan, NewAssemblyOnlinePlanRow, aoprow, aoprow.Type() = '1' ){
       row                  := table.GetRow( aoprow );
-      info( '------------------------', row.Type() );
       traverse( aoprow, NewAssemblyOnlinePlanCell, aopcell ){
         column             := selectobject( table, Column, column, column.TimeUnit() = Translations::MP_GlobalParameters_Day() and column.StartDate() = aopcell.NewAssemblyOnlinePlanColumn().StartDate() );
         cell               := selectobject( row, Cell, cell, cell.Column() = column );
-        cell.InventoryWeight( aopcell.InventoryWeight() );
-    //    cell.ProductionSerialNumber( aopcell.ProductionSerialNumber() );  
+    //    cell.InventoryWeight( aopcell.InventoryWeight() );
         cell.Quantity( aopcell.Quantity() );
-    //    cell.Shift( aopcell.Shift() );
-    //    cell.Value( aopcell.Value() );
       }
     }
-    //showtable.Generate( search, products );
+    showtable.Generate( search );
   *]
 }
diff --git a/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl b/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl
index 8876fdd..a9c3acf 100644
--- a/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_GenerateData.qbl
@@ -25,10 +25,6 @@
                                                                  , InterfaceDateTime         := nowdate
                                                                  , Message                   := '瀹㈡埛闇�姹傦紙PPA+IDS锛夋暟鎹帹閫�'
                                                                  , Last                      := true
-                                                                 , IsShow                    := false
-                                                                 , ReturnSuccess             := true
-                                                                 , ReturnMsg                 := 'Success'
-                                                                 , Success                   := true
                                                                   );
     traverse( interfaceDataset, CustomerDemandIDS.Row, row ){
       traverse( row, Cell, cell ){
@@ -37,11 +33,14 @@
                                                                      , DemandQty               := [Number]cell.Value()
                                                                      , VersionName             := macroplan.ScenarioName()
                                                                      , InterfaceTime           := nowdate
+                                                                     , FactoryName             := row.Factory()
+                                                                     , Fac                     := ifexpr( row.Factory() = FinancialProductionReport::GetDefaultCCUnit(), 'CC', 'DL' )  
     //                                                                 , VersionFlag             := versionflag
                                                                      );
         loginfo.CustomerDemandPPAIDS( relinsert, cd );
       }
     }
     loginfo.TotalRow( loginfo.CustomerDemandPPAIDS( relsize ) );
+    CustomerDemandPPAIDS::Publish( interfaceDataset, loginfo );
   *]
 }
diff --git a/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_Publish.qbl b/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_Publish.qbl
index 15c3ce4..e6cfe5c 100644
--- a/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_Publish.qbl
+++ b/_Main/BL/Type_CustomerDemandPPAIDS/StaticMethod_Publish.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 StaticMethod Publish (
   InterfaceDataset owner,
-  String executor
+  InterfaceLoginfo loginfo
 )
 {
   TextBody:
@@ -16,35 +16,9 @@
                                     .Add( "interfaceTime", ids.InterfaceTime().Format( 'Y-M2-D2 H:m:s' ) ).Build();/*"2024-10-01 12:00:00" )*/
       jsonarray.Add( idsjson );
     }
-    //jsonarray := JSON::Array().Add( JSON::Object().Add( "product", "DZ948293" )
-    //                                 ).Build();
     requestbody := jsonarray.Build().AsString();
     info(  requestbody );
-    loginfo := owner.InterfaceLoginfo( relnew, ExecuteUser := executor
-                                       , Name := Translations::InterfaceDataset_CustomerDemandPPAIDS_Name()
-                                       , InterfaceDateTime := DateTime::ActualTime()
-                                       , Message := '瀹㈡埛闇�姹傦紙PPA+IDS锛�'
-                                       , RequestBody := requestbody);
-    //error( '--------------------', requestbody );
     data     := InterfaceLoginfo::CallInterfaceForDataCenter( owner, loginfo );
     info( '----------------', data.AsString() );
-    //if( not isnull( data ) ){
-    //  
-    //  cnv2 := StringToDate::StandardConverter();
-    //  cnv2.SetCustomConversion();
-    //  cnv2.CustomFormatString( 'yyyy-MM-dd' );
-    //  
-    //  sadatalist := construct( FinishedEngineInventorys );
-    //  for( seq := 0;seq < data.Size();seq++){
-    //    item := data.Get(seq);
-    //    sadata := FinishedEngineInventory::GenerateData( loginfo, cnv2, item );
-    //    sadatalist.Add( sadata );
-    //  }
-    //  
-    //  options := DatasetFindOptions::Construct( 'MacroPlan' ).IncludeOffline( true ); //to load we must search offline datasets.
-    //  mdskey := DatasetController::FindUnique( options );
-    //
-    //  MDSMacroPlan::Root( mdskey ) -> InventoryInterfaceData::SynchronizeInventory( owner, sadatalist );
-    //}
   *]
 }
diff --git a/_Main/BL/Type_InterfaceDataset/Method_GenerateArchiveData.qbl b/_Main/BL/Type_InterfaceDataset/Method_GenerateArchiveData.qbl
index 2e3eff1..9f326d0 100644
--- a/_Main/BL/Type_InterfaceDataset/Method_GenerateArchiveData.qbl
+++ b/_Main/BL/Type_InterfaceDataset/Method_GenerateArchiveData.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 Method GenerateArchiveData (
-  const MacroPlan macroplan,
+  MacroPlan macroplan,
   RecycleBin recyclebin,
   Archive archive,
   Boolean iscustomdemand,
@@ -30,7 +30,7 @@
       AssemblyOnlinePlanVersion::RefreshData( this, macroplan );
     }
     if( isinventoryplan ){//搴撳瓨璁″垝
-    //  CustomerDemandIDS::GenerateData( this, recyclebin, archive );
+      InventoryPlanArchiveVersion::GenerateData( macroplan, this );
     }
     if( istrcdemand ){//TRC闇�姹�
     //  CustomerDemandIDS::GenerateData( this, recyclebin, archive );
diff --git a/_Main/BL/Type_InterfaceDataset/Method_PublishPlanReportData.qbl b/_Main/BL/Type_InterfaceDataset/Method_PublishPlanReportData.qbl
index be0de12..ea073a7 100644
--- a/_Main/BL/Type_InterfaceDataset/Method_PublishPlanReportData.qbl
+++ b/_Main/BL/Type_InterfaceDataset/Method_PublishPlanReportData.qbl
@@ -24,7 +24,7 @@
     //  CustomerDemandIDS::GenerateData( this, recyclebin, archive );
     }
     if( isassembleonlineplan ){//瑁呴厤涓婄嚎璁″垝
-    //  AssemblyOnlinePlanVersion::RefreshData( this, macroplan );
+      AssemblyOnlinePlanPPPSPush::GenerateData( this, macroplan, executor );
     }
     if ( isinventoryplan ) { // 璁″垝搴撳瓨鏁版嵁
       InterfaceDataset::PushPlanInventoryData( macroplan, this );
diff --git a/_Main/BL/Type_InventoryPlanArchiveVersion/Method_GetRowByUnit.qbl b/_Main/BL/Type_InventoryPlanArchiveVersion/Method_GetRowByUnit.qbl
index e9db693..aefff99 100644
--- a/_Main/BL/Type_InventoryPlanArchiveVersion/Method_GetRowByUnit.qbl
+++ b/_Main/BL/Type_InventoryPlanArchiveVersion/Method_GetRowByUnit.qbl
@@ -1,17 +1,17 @@
 Quintiq file version 2.0
 #parent: #root
 Method GetRowByUnit (
-  String product,
+  Product_MP product,
   String unit
 ) as InventoryPlanArchiveRow
 {
   TextBody:
   [*
     // 鐢勫叞楦� Sep-6-2024 (created)
-    row := selectobject( this, Row, row, row.Name() = product and row.Unit() = unit );
+    row := selectobject( this, Row, row, row.Name() = product.ID() and row.Unit() = unit );
     if( isnull( row ) ){
       //鍒濆鍖栧崟鍏冩牸 
-      row := this.Row( relnew, Name := product, Unit := unit );
+      row := this.Row( relnew, Name := product.ID(), Unit := unit, ProductID := ifexpr( exists( product.GetAllParent(), Elements, e, e.ID() = EnginePipelineReport::GetDefaultProductParent() ), product.Notes(), product.ID() )  );
       traverse( this, Column, column ){
         row.Initialize( column );
       }
diff --git a/_Main/BL/Type_InventoryPlanArchiveVersion/StaticMethod_GenerateData.qbl b/_Main/BL/Type_InventoryPlanArchiveVersion/StaticMethod_GenerateData.qbl
index 4c2dabe..33f3c3f 100644
--- a/_Main/BL/Type_InventoryPlanArchiveVersion/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_InventoryPlanArchiveVersion/StaticMethod_GenerateData.qbl
@@ -46,7 +46,7 @@
     }
     traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pispmp, not pispmp.IsSystem() and pispmp.IsLeaf() ) {
       unit                 := ifexpr( pispmp.StockingPointID().Regex( "澶ц繛" ) or pispmp.StockingPointID().Regex( "DL" ), FinancialProductionReport::GetDefaultDLUnit(), FinancialProductionReport::GetDefaultCCUnit() );
-      inventoryrow         := table.GetRowByUnit( pispmp.ProductID(), unit );
+      inventoryrow         := table.GetRowByUnit( pispmp.Product_MP(), unit );
       traverse ( pispmp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, not pispippl.IsPeriodFrozen() ) {
         startdate          := pispippl.Start().Date();
         daycolumn          := table.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), startdate );
diff --git a/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GetRow.qbl b/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GetRow.qbl
index 7e54b9d..a6201d7 100644
--- a/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GetRow.qbl
+++ b/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GetRow.qbl
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
 #parent: #root
 Method GetRow (
-  const NewOfflinePlanRow noprow
+  NewOfflinePlanRow noprow
 ) as OfflinePlanArchiveRow
 {
   TextBody:
@@ -10,8 +10,10 @@
     row       := selectobject( this, Row, row, row.ProductID() = noprow.ProductID() and row.ProductionLine() = noprow.ProductionLine() and row.Type() = noprow.Type() );
     
     if( isnull( row ) ){
+      product := selectobject( noprow.NewOfflinePlanTable().MacroPlan(), Product_MP, product, product.ID() = noprow.ProductID() );
       unit    := ifexpr( noprow.ProductionLine().FindString( "CC", 0 ) > -1, FinancialProductionReport::GetDefaultCCUnit(), FinancialProductionReport::GetDefaultDLUnit() );
-      row     := this.Row( relnew, ProductID := noprow.ProductID(), ProductionLine := noprow.ProductionLine(), Type := noprow.Type(), Unit := unit );
+      row     := this.Row( relnew, Name := noprow.ProductID(), ProductionLine := noprow.ProductionLine(), Type := noprow.Type(), Unit := unit
+                           , ProductID := ifexpr( exists( product.GetAllParent(), Elements, e, e.ID() = EnginePipelineReport::GetDefaultProductParent() ), product.Notes(), product.ID() ) );
       //鍒濆鍖栧崟鍏冩牸
       row.InitializeCell();
     }
diff --git a/_Main/BL/Type_OfflinePlanArchiveVersion/StaticMethod_RefreshData.qbl b/_Main/BL/Type_OfflinePlanArchiveVersion/StaticMethod_RefreshData.qbl
index 4424042..6fc7c82 100644
--- a/_Main/BL/Type_OfflinePlanArchiveVersion/StaticMethod_RefreshData.qbl
+++ b/_Main/BL/Type_OfflinePlanArchiveVersion/StaticMethod_RefreshData.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 StaticMethod RefreshData (
   InterfaceDataset interface,
-  const MacroPlan macroPlan,
+  MacroPlan macroPlan,
   const Archive archive
 )
 {
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable\043384.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable\043384.def"
index 6e51dc0..2b4a7d6 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable\043384.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable\043384.def"
@@ -17,18 +17,16 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'InterfaceDataset'
-            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
-            FixedFilter: 'object.Column().TimeUnit() = search.TimeUnit() and object.Column().StartDate() >= search.StartDate() and object.Column().StartDate() <= search.EndDate()'
-            Source: 'InterfaceDataset'
+            DataType: 'AssemblyOnlinePlanVersion'
+            Source: 'DataHolderTable'
             Taborder: 0
-            Transformation: 'AssemblyOnlinePlanVersion.Row.Cell'
+            Transformation: 'Row.Cell'
           ]
         }
       ]
       Properties:
       [
-        Attributes: 'Value'
+        Attributes: 'Quantity'
         Column: 'Column'
         Row: 'Row'
         Taborder: 0
@@ -46,20 +44,17 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'InterfaceDataset'
-            Description: "( search.Generation() = '<All>' or object.Product_MP().Generation() = search.Generation() ) and ( search.MqbMlb() = '<All>' or object.Product_MP().MQBMLB() = search.MqbMlb() ) and ( search.Power() = '<All>' or object.Product_MP().Power() = search.Power() )"
-            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
-            FixedFilter: "( search.Product() = '<All>' or object.ProductID() = search.Product() ) and ( search.ProductionLine() = '<All>' or object.ProductionLine() = search.ProductionLine() ) and ( search.Unit() = '<All>' or object.Unit() = search.Unit() )"
-            Source: 'InterfaceDataset'
+            DataType: 'AssemblyOnlinePlanVersion'
+            Source: 'DataHolderTable'
             Taborder: 0
-            Transformation: 'AssemblyOnlinePlanVersion.Row'
+            Transformation: 'Row'
           ]
         }
       ]
       Properties:
       [
-        Legend: 'ProductID'
-        SortCriteria: 'ProductID'
+        Legend: 'Name'
+        SortCriteria: 'Name'
         Taborder: 1
       ]
     }
@@ -75,12 +70,10 @@
           BaseType: 'WebDataExtractor'
           Properties:
           [
-            DataType: 'InterfaceDataset'
-            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
-            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and  ( search.StartDate().IsMinInfinity() or object.StartDate() >= search.StartDate() ) and ( search.EndDate().IsMaxInfinity() or object.StartDate() <= search.EndDate() )'
-            Source: 'InterfaceDataset'
+            DataType: 'AssemblyOnlinePlanVersion'
+            Source: 'DataHolderTable'
             Taborder: 0
-            Transformation: 'AssemblyOnlinePlanVersion.Column'
+            Transformation: 'Column'
           ]
         }
       ]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
index 5d41390..e886467 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
@@ -16,6 +16,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 1
+    Taborder: 2
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def"
index bc7d09f..be5a969 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def"
@@ -19,6 +19,5 @@
   Properties:
   [
     Taborder: 5
-    Visible: false
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable\043273.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable\043273.def"
index 3db3b8c..83f274d 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable\043273.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTable\043273.def"
@@ -9,6 +9,6 @@
   ]
   Properties:
   [
-    Taborder: 2
+    Taborder: 3
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_OnCreated.def
new file mode 100644
index 0000000..753bb9c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FormAssemblyOnlinePlanVersion_OnCreated
+{
+  #keys: '[415136.0.1283300735]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      table := AssemblyOnlinePlanVersion::InitiateSearch( InterfaceDataset ); 
+      DataHolderTable.Data( table );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_283_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_283_ButtonSearch_OnClick.def
new file mode 100644
index 0000000..0fab123
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_283_ButtonSearch_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: PanelOperation_283/ButtonSearch
+Response OnClick () id:Response_PanelOperation_283_ButtonSearch_OnClick
+{
+  #keys: '[415136.0.1283312413]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      if( not isnull( DataHolderTable.Data() ) ){ 
+        DataHolderTable.Data().Generate( dhSearch.Data() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def
index 168d93e..4ca0680 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.ProductID() );
+      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.Name());
       
       valueString := values.Concatenate( ";" );
       valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
index 0655234..039803f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -9,9 +9,7 @@
   {
     Body:
     [*
-      valueString := "All";
-      
-      this.Strings( valueString.Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
+      this.Strings( FinancialProductionReport::GetDefaultAllUnit().Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def
index 279c6ee..074abcc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/_ROOT_Component_FormAssemblyOnlinePlanVersion.def
@@ -29,10 +29,20 @@
       ]
       Properties:
       [
-        Taborder: 0
+        Taborder: 1
       ]
     }
     #child: PanelHeader_952
     #child: PanelTable_273
+    Component DataHolderTable id:DataHolderTable_568
+    {
+      #keys: '[415136.0.1283300574]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'AssemblyOnlinePlanVersion'
+      Properties:
+      [
+        Taborder: 0
+      ]
+    }
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_369_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_369_ButtonSearch_OnClick.def
index 31452fd..c947d88 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_369_ButtonSearch_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_369_ButtonSearch_OnClick.def
@@ -9,12 +9,10 @@
   {
     Body:
     [*
-      
       if( not isnull( DataHolderTable.Data() ) ){
-        productids              := selectuniquevalues( DataHolderProduct.Data(), Elements, product, exists( dhGenerations.Data(), Elements, e, e.Generation() = product.Generation() )
-                                                       and exists( dhMQBMLBs.Data(), Elements, e, e.MLBMQB() = product.MQBMLB() )
-                                                       and exists( dhPowers.Data(), Elements, e, e.Power() = product.Power() ), product.ID() );
-        
+        productids              := selectuniquevalues( DataHolderProduct.Data(), Elements, product, ( dhGenerations.Data().Size() = 0 or exists( dhGenerations.Data(), Elements, e, e.Generation() = product.Generation() ) )
+                                                       and ( dhGenerations.Data().Size() = 0 or exists( dhMQBMLBs.Data(), Elements, e, e.MLBMQB() = product.MQBMLB() ) )
+                                                       and ( dhGenerations.Data().Size() = 0 or exists( dhPowers.Data(), Elements, e, e.Power() = product.Power() ) ), product.ID() );
         DataHolderTable.Data().Generate( dhSearch.Data(), dhFactorys.Data(), productids );
       }
     *]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_ButtonSearch_OnClick.def
index 39f0daa..2523688 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_ButtonSearch_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_ButtonSearch_OnClick.def
@@ -10,10 +10,9 @@
     Body:
     [*
       if( not isnull( DataHolderTable.Data() ) ){
-        productids              := selectuniquevalues( DataHolderProduct.Data(), Elements, product, exists( dhGenerations.Data(), Elements, e, e.Generation() = product.Generation() )
-                                                       and exists( dhMQBMLBs.Data(), Elements, e, e.MLBMQB() = product.MQBMLB() )
-                                                       and exists( dhPowers.Data(), Elements, e, e.Power() = product.Power() ), product.ID() );
-        
+        productids              := selectuniquevalues( DataHolderProduct.Data(), Elements, product, ( dhGenerations.Data().Size() = 0 or exists( dhGenerations.Data(), Elements, e, e.Generation() = product.Generation() ) )
+                                                       and ( dhGenerations.Data().Size() = 0 or exists( dhMQBMLBs.Data(), Elements, e, e.MLBMQB() = product.MQBMLB() ) )
+                                                       and ( dhGenerations.Data().Size() = 0 or exists( dhPowers.Data(), Elements, e, e.Power() = product.Power() ) ), product.ID() );
         DataHolderTable.Data().Generate( dhSearch.Data(), dhFactorys.Data(), productids );
       }
     *]
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_MatrixEditorTable\043791.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_MatrixEditorTable\043791.def"
index f9b1aa3..769d2c7 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_MatrixEditorTable\043791.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_MatrixEditorTable\043791.def"
@@ -47,9 +47,6 @@
           Properties:
           [
             DataType: 'InterfaceDataset'
-            Description: "( search.Generation() = '<All>' or object.Product_MP().Generation() = search.Generation() ) and ( search.MqbMlb() = '<All>' or object.Product_MP().MQBMLB() = search.MqbMlb() ) and ( search.Power() = '<All>' or object.Product_MP().Power() = search.Power() )"
-            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
-            FixedFilter: "( search.Product() = '<All>' or object.Name() = search.Product() ) and ( search.Unit() = '<All>' or object.Unit() = search.Unit() )"
             Source: 'InterfaceDataset'
             Taborder: 0
             Transformation: 'InventoryPlanArchiveVersion.Row'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
index d3b45c5..7f50829 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -9,9 +9,7 @@
   {
     Body:
     [*
-      valueString := "All";
-      
-      this.Strings( valueString.Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
+      this.Strings( FinancialProductionReport::GetDefaultAllUnit().Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick.def
index 76d42a9..221196c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_ButtonSearch_OnClick.def
@@ -10,9 +10,9 @@
     Body:
     [*
       if( not isnull( DataHolderTable.Data() ) ){
-        productids              := selectuniquevalues( DataHolderProduct.Data(), Elements, product, exists( dhGenerations.Data(), Elements, e, e.Generation() = product.Generation() )
-                                                       and exists( dhMQBMLBs.Data(), Elements, e, e.MLBMQB() = product.MQBMLB() )
-                                                       and exists( dhPowers.Data(), Elements, e, e.Power() = product.Power() ), product.ID() );
+        productids              := selectuniquevalues( DataHolderProduct.Data(), Elements, product, ( dhGenerations.Data().Size() = 0 or exists( dhGenerations.Data(), Elements, e, e.Generation() = product.Generation() ) )
+                                                       and ( dhGenerations.Data().Size() = 0 or exists( dhMQBMLBs.Data(), Elements, e, e.MLBMQB() = product.MQBMLB() ) )
+                                                       and ( dhGenerations.Data().Size() = 0 or exists( dhPowers.Data(), Elements, e, e.Power() = product.Power() ) ), product.ID() );
         DataHolderTable.Data().Generate( dhSearch.Data(), dhFactorys.Data(), productids );
       }
     *]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_MatrixEditorTable.def
index d73afda..ef8ec56 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_MatrixEditorTable.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_MatrixEditorTable.def
@@ -58,8 +58,8 @@
       ]
       Properties:
       [
-        Legend: 'ProductID'
-        SortCriteria: 'ProductID'
+        Legend: 'Name'
+        SortCriteria: 'Name'
         Taborder: 1
       ]
     }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def
index 37b09ed..6f1016c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def
@@ -9,9 +9,7 @@
   {
     Body:
     [*
-      valueString := "All";
-      
-      this.Strings( valueString.Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
+      this.Strings( FinancialProductionReport::GetDefaultAllUnit().Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
     *]
     GroupServerCalls: false
   }

--
Gitblit v1.9.3