From c6e8187d8a90489b985609fe7d94d4996ecee491 Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期五, 15 十一月 2024 16:53:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit#424.def                                                |    7 
 _Main/BL/Type_ExportXMLData/Function_CalcPriority.qbl                                                                                          |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelUnit#925.def                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnSelectionChanged.def                     |    6 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveTransferPlan_.def |   17 
 _Main/UI/MacroPlannerWebApp/Views/ArchivePackagingPlan.vw                                                                                      |  289 +++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit.def                                                |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader#952.def                                              |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnSelectionChanged.def                      |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnCreated.def                            |    4 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchivePackagingPlan.def |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelProduct.def                                                      |    7 
 _Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_Create.qbl                                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def                                |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnCreated.def                                   |    6 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl                                                                         |   49 +
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation.def                                               |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct.def                                                 |    5 
 _Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData#530.qbl                                                                     |    7 
 _Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl                                                                          |    9 
 _Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorStart_OnChanged.def                              |    2 
 _Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateTempTable.qbl                                                                        |    4 
 _Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost.qbl                                                                           |   40 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorEnd_OnChanged.def                     |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit#720.def                                                   |    8 
 _Main/BL/Type_CustomerDemandIDS/Method_Clear.qbl                                                                                               |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelRowSearch.def                                                      |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct#780.def                                                    |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_679_ButtonSearch_OnClick.def                              |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnSelectionChanged.def                   |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelHeader#503.def                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnCreated.def                |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnCreated.def           |    6 
 _Main/BL/Type_CustomerDemandIDS/Method_Generate.qbl                                                                                            |   36 +
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelPeriod#71.def                                                    |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def             |    2 
 _Main/BL/Type_CustomerDemandIDS/Method_GenerateColumn.qbl                                                                                      |   49 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorStart_OnChanged.def                   |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelProduct.def                                                      |    1 
 _Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost0.qbl                                                                          |   35 +
 _Main/BL/Type_CustomerDemandIDS/StaticMethod_InitiateSearch.qbl                                                                                |   28 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod#384.def                                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnCreated.def                            |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnSelectionChanged.def                                |    2 
 _Main/BL/Type_CustomerDemandIDS/Method_GetRowByUnit.qbl                                                                                        |    4 
 _Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcTransCost#652.qbl                                                                        |   36 +
 _Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl                                                                                       |   47 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine#623.def                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelTimeUnit.def                                                     |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorStart_OnChanged.def                         |    6 
 _Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateFullTable.qbl                                                                        |   34 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnCreated.def                              |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter.def                                                      |   58 -
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnSelectionChanged.def                          |    6 
 _Main/BL/Type_CustomerDemandIDS/StaticMethod_GenerateData.qbl                                                                                  |   24 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelColumnSaerch.def                                                   |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnSelectionChanged.def       |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnSelectionChanged.def                   |    2 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl                                                                      |  136 ++--
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelColumnSearch.def                                            |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def                                |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelHeader.def                                                         |    9 
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl                                                                          |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductSearch.def                                           |   18 
 _Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl                                                                                       |    2 
 _Main/Sys/Repr/Global/LocalCell_Default.qrp                                                                                                    |    2 
 _Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost#911.qbl                                                                       |   35 +
 _Main/BL/Type_MP_Cell_AnnualPlanReport0/StaticMethod_CreateFullTable.qbl                                                                       |   65 +-
 _Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/_ROOT_Component_FormArchiveTransferPlan.def                                      |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation#679.def                                                  |    8 
 _Main/BL/Type_ShiftPlan/Method_GetWorkHours.qbl                                                                                                |   29 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelOperation.def                                                    |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_ButtonSearch_OnClick.def                           |    2 
 _Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw                                                                        |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelColumnSearch.def                                                 |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def             |    2 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelFilter#490.def                                                                    |   58 -
 _Main/UI/MacroPlannerWebApp/Views/ArchiveTransferPlan.vw                                                                                       |  201 ++++++
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelRowSearch.def                                                    |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnChanged.def           |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormArchivePackagingPlan/_ROOT_Component_FormArchivePackagingPlan.def                                    |    1 
 /dev/null                                                                                                                                      |   20 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorEnd_OnChanged.def                           |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod.def                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProductLine.def                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def                        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelUnit.def                                                           |    5 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def                                        |   22 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnCreated.def                               |    6 
 _Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl                                                                           |    2 
 _Main/BL/Type_CustomerDemandIDS/Attribute_IsShow.qbl                                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def                                         |    2 
 96 files changed, 1,277 insertions(+), 521 deletions(-)

diff --git a/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl b/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl
index c4eac3f..607b785 100644
--- a/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl
+++ b/_Main/BL/Type_AssemblyOnlinePlanVersion/StaticMethod_RefreshData.qbl
@@ -17,7 +17,7 @@
       table                := interface.AssemblyOnlinePlanVersion( relnew, ID := name, Name := name );
     }
     showtable              := selectobject( interface, AssemblyOnlinePlanVersion, version, version.IsShow() );
-    if( isnull( table ) ){
+    if( isnull( showtable ) ){
       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() );
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost\043911.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost\043911.qbl"
new file mode 100644
index 0000000..ffa3b9e
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost\043911.qbl"
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: #root
+Method CalcEngineCost (
+  BaseSalesDemandInPeriods psdips,
+  LogisticsCostEngines enginecosts
+) as Real
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Nov-14-2024 (created) 
+    outcost          := 0.0;
+    enginecost       := selectobject( enginecosts, Elements, engine, engine.StartDate() <= this.StartDate() and engine.EndDate() >= this.EndDate() );
+    if( isnull( enginecost ) ){
+      fenginecost    := selectobject( enginecosts, Elements, engine, engine.EndDate() > this.StartDate() and engine.EndDate() <= this.EndDate() and engine.StartDate() < this.StartDate() );
+      if( not isnull( fenginecost ) ){
+        quantity     := sum( psdips, Elements, psdip, psdip.StartDate() >= fenginecost.StartDate() and psdip.StartDate() <= fenginecost.EndDate(), psdip.Quantity() );
+        outcost      := outcost + ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
+      }
+      menginecost    := selectobject( enginecosts, Elements, engine, engine.StartDate() > this.StartDate() and engine.EndDate() < this.EndDate() );
+      if( not isnull( menginecost ) ){
+        quantity     := sum( psdips, Elements, psdip, psdip.StartDate() >= menginecost.StartDate() and psdip.StartDate() <= menginecost.EndDate(), psdip.Quantity() );
+        outcost      := outcost + ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
+      }
+      benginecost    := selectobject( enginecosts, Elements, engine, engine.StartDate() > this.StartDate() and engine.StartDate() <= this.EndDate() and engine.EndDate() > this.EndDate() );
+      if( not isnull( benginecost ) ){
+        quantity     := sum( psdips, Elements, psdip, psdip.StartDate() >= benginecost.StartDate() and psdip.StartDate() <= benginecost.EndDate(), psdip.Quantity() )
+        outcost      := outcost + ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
+      }
+    }else{
+      quantity       := sum( psdips, Elements, psdip, psdip.Quantity() );
+      outcost        := outcost + ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
+    }
+    return outcost;
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost.qbl
index c7d248a..2b9fa79 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost.qbl
@@ -20,90 +20,90 @@
       fenginecost    := selectobject( enginecosts, Elements, engine, engine.EndDate() > this.StartDate() and engine.EndDate() <= this.EndDate() and engine.StartDate() < this.StartDate() and engine.Factory() = factory );
       if( not isnull( fenginecost ) ){
         fpispips     := selectset( pispips, Elements, pispip, pispip.Start().Date() >= fenginecost.StartDate() and pispip.Start().Date() <= fenginecost.EndDate() );
-        if( entercost.IsMaxInfinity() ){
+        if( not entercost.IsMaxInfinity() ){
           newsqty    := sum( fpispips, Elements, e, e.NewSupplyQuantity() );
           entercost  := entercost + ceil( newsqty / fenginecost.PackagingCapacity() ) * fenginecost.WarehousingPrice();
         }
-        if( othercost.IsMaxInfinity() ){
+        if( not othercost.IsMaxInfinity() ){
           newsqty    := sum( fpispips, Elements, e, e.NewSupplyQuantity() );
           othercost  := othercost + ceil( newsqty / fenginecost.PackagingCapacity() ) * fenginecost.OtherPrice();
         }
-        if( outcost.IsMaxInfinity() ){
+        if( not outcost.IsMaxInfinity() ){
           newsqty    := sum( fpispips, Elements, e, e.NewSupplyQuantity() );
           outcost    := outcost + ceil( newsqty / fenginecost.PackagingCapacity() ) * fenginecost.OutboundPrice();
         }
-        if( storecost.IsMaxInfinity() ){
+        if( not storecost.IsMaxInfinity() ){
           pinvqty    := sum( fpispips, Elements, e, e.PlannedInventoryLevelEnd() );
           storecost  := storecost + ceil( pinvqty / fenginecost.PackagingCapacity() ) * fenginecost.StoragePrice();//鍥涜垗浜斿叆
         }
-        if( transcost.IsMaxInfinity() ){
+        if( not transcost.IsMaxInfinity() ){
           this.CalcTransCost( fpispips, transcosts, fenginecost, transcost );
         }
       }
       menginecost    := selectobject( enginecosts, Elements, engine, engine.StartDate() > this.StartDate() and engine.EndDate() < this.EndDate() and engine.Factory() = factory );
       if( not isnull( menginecost ) ){
         mpispips     := selectset( pispips, Elements, pispip, pispip.Start().Date() >= menginecost.StartDate() and pispip.Start().Date() <= menginecost.EndDate() );
-        if( entercost.IsMaxInfinity() ){
+        if( not entercost.IsMaxInfinity() ){
           newsqty    := sum( mpispips, Elements, e, e.NewSupplyQuantity() );
           entercost  := entercost + ceil( newsqty / menginecost.PackagingCapacity() ) * menginecost.WarehousingPrice();
         }
-        if( othercost.IsMaxInfinity() ){
+        if( not othercost.IsMaxInfinity() ){
           newsqty    := sum( mpispips, Elements, e, e.NewSupplyQuantity() );
           othercost  := othercost + ceil( newsqty / menginecost.PackagingCapacity() ) * menginecost.OtherPrice();
         }
-        if( outcost.IsMaxInfinity() ){
+        if( not outcost.IsMaxInfinity() ){
           newsqty    := sum( mpispips, Elements, e, e.NewSupplyQuantity() );
           outcost    := outcost + ceil( newsqty / menginecost.PackagingCapacity() ) * menginecost.OutboundPrice();
         }
-        if( storecost.IsMaxInfinity() ){
+        if( not storecost.IsMaxInfinity() ){
           pinvqty    := sum( mpispips, Elements, e, e.PlannedInventoryLevelEnd() );
           storecost  := storecost + ceil( pinvqty / menginecost.PackagingCapacity() ) * menginecost.StoragePrice();//鍥涜垗浜斿叆
         }
-        if( transcost.IsMaxInfinity() ){
+        if( not transcost.IsMaxInfinity() ){
           this.CalcTransCost( mpispips, transcosts, menginecost, transcost );
         }
       }
       benginecost    := selectobject( enginecosts, Elements, engine, engine.StartDate() > this.StartDate() and engine.StartDate() <= this.EndDate() and engine.EndDate() > this.EndDate() and engine.Factory() = factory );
       if( not isnull( benginecost ) ){
         bpispips     := selectset( pispips, Elements, pispip, pispip.Start().Date() >= benginecost.StartDate() and pispip.Start().Date() <= benginecost.EndDate() )
-        if( entercost.IsMaxInfinity() ){
+        if( not entercost.IsMaxInfinity() ){
           newsqty    := sum( bpispips, Elements, e, e.NewSupplyQuantity() );
           entercost  := entercost + ceil( newsqty / benginecost.PackagingCapacity() ) * benginecost.WarehousingPrice();
         }
-        if( othercost.IsMaxInfinity() ){
+        if( not othercost.IsMaxInfinity() ){
           newsqty    := sum( bpispips, Elements, e, e.NewSupplyQuantity() );
           othercost  := othercost + ceil( newsqty / benginecost.PackagingCapacity() ) * benginecost.OtherPrice();
         }
-        if( outcost.IsMaxInfinity() ){
+        if( not outcost.IsMaxInfinity() ){
           newsqty    := sum( bpispips, Elements, e, e.NewSupplyQuantity() );
           outcost    := outcost + ceil( newsqty / benginecost.PackagingCapacity() ) * benginecost.OutboundPrice();
         }
-        if( storecost.IsMaxInfinity() ){
+        if( not storecost.IsMaxInfinity() ){
           pinvqty    := sum( bpispips, Elements, e, e.PlannedInventoryLevelEnd() );
           storecost  := storecost + ceil( pinvqty / benginecost.PackagingCapacity() ) * benginecost.StoragePrice();//鍥涜垗浜斿叆
         }
-        if( transcost.IsMaxInfinity() ){
+        if( not transcost.IsMaxInfinity() ){
           this.CalcTransCost( bpispips, transcosts, benginecost, transcost );
         }
       }
     }else{
-      if( entercost.IsMaxInfinity() ){
+      if( not entercost.IsMaxInfinity() ){
         newsqty      := sum( pispips, Elements, pispip, pispip.NewSupplyQuantity() );
         entercost    := entercost + ceil( newsqty / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
       }
-      if( othercost.IsMaxInfinity() ){
+      if( not othercost.IsMaxInfinity() ){
         newsqty      := sum( pispips, Elements, pispip, pispip.NewSupplyQuantity() );
         othercost    := othercost + ceil( newsqty / enginecost.PackagingCapacity() ) * enginecost.OtherPrice();
       }
-      if( outcost.IsMaxInfinity() ){
+      if( not outcost.IsMaxInfinity() ){
         newsqty      := sum( pispips, Elements, pispip, pispip.NewSupplyQuantity() );
         outcost      := outcost + ceil( newsqty / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
       }
-      if( storecost.IsMaxInfinity() ){
+      if( not storecost.IsMaxInfinity() ){
         pinvqty      := sum( pispips, Elements, pispip, pispip.PlannedInventoryLevelEnd() );
         storecost    := storecost + ceil( pinvqty / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
       }
-      if( transcost.IsMaxInfinity() ){
+      if( not transcost.IsMaxInfinity() ){
         this.CalcTransCost( pispips, transcosts, enginecost, transcost );
       }
     }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost0.qbl b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost0.qbl
new file mode 100644
index 0000000..6665b5c
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcEngineCost0.qbl
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: #root
+Method CalcEngineCost (
+  ProductInTrips pits,
+  LogisticsCostEngines enginecosts,
+  LogisticsCostTransports transcosts
+) as Real
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Nov-14-2024 (created) 
+    transcost        := 0.0;
+    enginecost       := selectobject( enginecosts, Elements, engine, engine.StartDate() <= this.StartDate() and engine.EndDate() >= this.EndDate() );
+    if( isnull( enginecost ) ){
+      fenginecost    := selectobject( enginecosts, Elements, engine, engine.EndDate() > this.StartDate() and engine.EndDate() <= this.EndDate() and engine.StartDate() < this.StartDate() );
+      if( not isnull( fenginecost ) ){
+        fpits        := selectset( pits, Elements, pit, pit.Trip().Arrival().Date() >= fenginecost.StartDate() and pit.Trip().Arrival().Date() <= fenginecost.EndDate() );
+        transcost    := transcost + this.CalcTransCost( fpits, transcosts, fenginecost );
+      }
+      menginecost    := selectobject( enginecosts, Elements, engine, engine.StartDate() > this.StartDate() and engine.EndDate() < this.EndDate() );
+      if( not isnull( menginecost ) ){
+        mpits        := selectset( pits, Elements, pit, pit.Trip().Arrival().Date() >= menginecost.StartDate() and pit.Trip().Arrival().Date() <= menginecost.EndDate() );
+        transcost    := transcost + this.CalcTransCost( mpits, transcosts, menginecost );
+      }
+      benginecost    := selectobject( enginecosts, Elements, engine, engine.StartDate() > this.StartDate() and engine.StartDate() <= this.EndDate() and engine.EndDate() > this.EndDate() );
+      if( not isnull( benginecost ) ){
+        bpits        := selectset( pits, Elements, pit, pit.Trip().Arrival().Date() >= benginecost.StartDate() and pit.Trip().Arrival().Date() <= benginecost.EndDate() )
+        transcost    := transcost + this.CalcTransCost( bpits, transcosts, benginecost );
+      }
+    }else{
+      transcost      := transcost + this.CalcTransCost( pits, transcosts, enginecost );
+    }
+    return transcost;
+  *]
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcTransCost\043652.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcTransCost\043652.qbl"
new file mode 100644
index 0000000..b61ad56
--- /dev/null
+++ "b/_Main/BL/Type_CCEngineLogisticsCostColumn0/Method_CalcTransCost\043652.qbl"
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+Method CalcTransCost (
+  ProductInTrips pits,
+  LogisticsCostTransports transcosts,
+  LogisticsCostEngine enginecost
+) as Real
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Nov-14-2024 (created) 
+    transcost        := 0.0
+    tran             := selectobject( transcosts, Elements, trans, trans.StartDate() <= this.StartDate() and trans.EndDate() >= this.StartDate() );
+    if( isnull( tran ) ){
+      ftranscost     := selectobject( transcosts, Elements, trans, trans.EndDate() > this.StartDate() and this.EndDate() <= this.EndDate() and trans.StartDate() < this.StartDate() );
+      if( not isnull( ftranscost ) ){
+        newsqty      := sum( pits, Elements, pit, pit.Trip().Arrival().Date() >= ftranscost.StartDate() and pit.Trip().Arrival().Date() <= ftranscost.EndDate(), pit.Quantity() );
+        transcost    := transcost + ceil( ceil( newsqty / enginecost.PackagingCapacity() ) / ftranscost.LoadingCapacity() ) * ftranscost.TransportPrice();
+      }
+      mtranscost     := selectobject( transcosts, Elements, trans, trans.StartDate() > this.StartDate() and trans.EndDate() < this.EndDate() );
+      if( not isnull( mtranscost ) ){
+        newsqty      := sum( pits, Elements, pit, pit.Trip().Arrival().Date() >= mtranscost.StartDate() and pit.Trip().Arrival().Date() <= mtranscost.EndDate(), pit.Quantity() );
+        transcost    := transcost + ceil( ceil( newsqty / enginecost.PackagingCapacity() ) / mtranscost.LoadingCapacity() ) * mtranscost.TransportPrice();
+      }
+      btranscost    := selectobject( transcosts, Elements, trans, trans.StartDate() > this.StartDate() and trans.StartDate() <= this.EndDate() and trans.EndDate() > this.EndDate() );
+      if( not isnull( btranscost ) ){
+        newsqty      := sum( pits, Elements, pit, pit.Trip().Arrival().Date() >= btranscost.StartDate() and pit.Trip().Arrival().Date() <= btranscost.EndDate(), pit.Quantity() );
+        transcost    := transcost + ceil( ceil( newsqty / enginecost.PackagingCapacity() ) / btranscost.LoadingCapacity() ) * btranscost.TransportPrice();
+      }
+    }else{
+      newsqty        := sum( pits, Elements, pit, pit.Quantity() );
+      transcost      := transcost + ceil( ceil( newsqty / enginecost.PackagingCapacity() ) / tran.LoadingCapacity() ) * tran.TransportPrice();
+    }
+    return transcost;
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
index 493fd05..7abb0da 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -22,10 +22,12 @@
     
     table                     := selectobject(owner, CCEngineLogisticsCostReport, report, report.ID() = name );
     if( isnull( table ) ){
-      owner.CCEngineLogisticsCostReport( relnew, ID := name, Name := name );
+      table                   := owner.CCEngineLogisticsCostReport( relnew, ID := name, Name := name );
     }
+    table.Column( relflush );
+    table.Row( relflush );
     showname                  := name + 'Show';
-    if( exists( owner, CCEngineLogisticsCostReport, report, report.ID() = showname and report.IsShow() ) ){
+    if( not exists( owner, CCEngineLogisticsCostReport, report, report.ID() = showname and report.IsShow() ) ){
       owner.CCEngineLogisticsCostReport( relnew, ID := showname, Name := name, IsShow := true );
     }
     if( isnull( owner.CCEngineLogisticsCostSearch() ) ){
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
index c8d0617..08be1c4 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
@@ -7,6 +7,7 @@
   TextBody:
   [*
     // 鐢勫叞楦� Aug-12-2024 (created)
+    // 鐢勫叞楦� Aug-12-2024 (created)
     owner.DLEngineLogisticsCostReport( relflush );
     produtparent              := DLEngineLogisticsCostReport::GetDefaultProductParent();
     name                      := DLEngineLogisticsCostReport::GetDefaultName();
@@ -45,28 +46,40 @@
                                             and pispip.Start().Date() < column.StartDate().StartOfNextMonth() 
                                             and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) );
                 cell          := selectobject( row, Cell, cell, cell.Column() = column );
-                entercost     := 0.0;
-                othercost     := 0.0;
-                outcost       := 0.0;
-                storecost     := 0.0;
-                transcost     := 0.0;
+                newsupplyqty  := sum( pispips, Elements, pispip, pispip.NewSupplyQuantity() );
+                plannedinvqty := sum( pispips, Elements, pispip, pispip.PlannedInventoryLevelEnd() );
                 if( isdltoccrent){
-                  othercost   := Real::MaxReal();
-                  transset    := selectset( transcosts, Elements, trans, trans.Origin() = '闀挎槬澶栫搴�' and trans.Destination() = '瀹㈡埛搴�' );
-                  column.CalcEngineCost( pispips, enginecosts, transset, ccfactory, entercost, othercost, outcost, storecost, transcost );
-                  cell.CCRentQty( cell.CCRentQty() + sum( pispips, Elements, pispip, pispip.NewSupplyQuantity() ) );
+                  //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+                  enginecost  := selectobject( enginecosts, Elements, engine, engine.StartDate() <= column.StartDate()  and engine.EndDate() >= column.StartDate() 
+                                                     and engine.Factory() = ccfactory );
+                  cell.CCRentQty( cell.CCRentQty() + newsupplyqty );
+                  //闀挎槬澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环 
+                  entercost   := ceil( newsupplyqty / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+                  //闀挎槬澶栫搴撳嚭搴撹垂鐢�: 鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环
+                  outcost     := ceil( newsupplyqty / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
                   cell.CCRentInCost( cell.CCRentInCost() + entercost );
                   cell.CCRentOutOfCost( cell.CCRentOutOfCost() + outcost );
-                  cell.CCRentStorCost( cell.CCRentStorCost() + storecost );//闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�
-                  cell.CCShorTransCost( cell.CCShorTransCost() + transcost );//闀挎槬鐭�旇繍杈撹垂鐢�
+                  cost        := ceil( plannedinvqty / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
+                  cell.CCRentStorCost( cell.CCRentStorCost() + cost );//闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�
+                  transcost   := selectobject( transcosts, Elements, trans, trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() and trans.Origin() = '闀挎槬澶栫搴�' and trans.Destination() = '瀹㈡埛搴�' );
+                  if( not isnull( transcost ) ){
+                    cost      := ceil( ceil( newsupplyqty / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
+                    cell.CCShorTransCost( cell.CCShorTransCost() + cost );//闀挎槬鐭�旇繍杈撹垂鐢�
+                  }
                 } else {
-                  outcost     := Real::MaxReal();
-                  transset    := selectset( transcosts, Elements, trans, trans.Origin() = '澶ц繛鍘傚唴搴�' and trans.Destination() = '澶ц繛澶栫搴�' );
-                  column.CalcEngineCost( pispips, enginecosts, transset, dlfactory, entercost, othercost, outcost, storecost, transcost );
-                  cell.DLRentStorCost( cell.DLRentStorCost() + storecost );//澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�
-                  cell.DLRentOtherCost( cell.DLRentOtherCost() + othercost );//澶ц繛澶栫搴撳叾浠栬垂鐢�
-                  cell.DLRentInCost( cell.DLRentInCost() + entercost );//澶ц繛澶栫搴撳叆搴撹垂鐢�
-                  cell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + transcost );//鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤
+                  //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+                  enginecost  := selectobject( enginecosts, Elements, engine, engine.StartDate() <= column.StartDate()  and engine.EndDate() >= column.StartDate() 
+                                                     and engine.Factory() = dlfactory  );
+                  if( not isnull( enginecost ) ){
+                    cost      := ceil( plannedinvqty / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
+                    cell.DLRentStorCost( cell.DLRentStorCost() + cost );//澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�
+                    row.SetDLRentEnterCost( column, enginecost, newsupplyqty );//澶ц繛澶栫搴撳叆搴撹垂鐢�
+                    transcost := selectobject( transcosts, Elements, trans, trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() and trans.Origin() = '澶ц繛鍘傚唴搴�' and trans.Destination() = '澶ц繛澶栫搴�' );
+                    if( not isnull( transcost ) ){
+                      cost    := ceil( ceil( newsupplyqty / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//鍥涜垗浜斿叆
+                      row.SetFactoryToRentTransCost( column, cost );
+                    }
+                  }
                 }
               }
               products.Add( pisp.Product_MP() );
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl
index 6bc14fb..c6f6787 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl
@@ -6,8 +6,7 @@
 {
   TextBody:
   [*
-    // 鐢勫叞楦� Aug-12-2024 (created)
-    owner.DLEngineLogisticsCostReport( relflush );
+    //owner.DLEngineLogisticsCostReport( relflush );
     produtparent              := DLEngineLogisticsCostReport::GetDefaultProductParent();
     name                      := DLEngineLogisticsCostReport::GetDefaultName();
     allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
@@ -17,9 +16,19 @@
     startofplanning           := owner.StartOfPlanning().Date();
     startofnextyear           := startofplanning.StartOfNextYear();
     
-    table                     := owner.DLEngineLogisticsCostReport( relnew, ID := name, Name := name );
-    owner.DLEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
-    owner.DLEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
+    table                     := selectobject(owner, DLEngineLogisticsCostReport, report, report.ID() = name );
+    if( isnull( table ) ){
+      table                   := owner.DLEngineLogisticsCostReport( relnew, ID := name, Name := name );
+    }
+    table.Column( relflush );
+    table.Row( relflush );
+    showname                  := name + 'Show';
+    if( not exists( owner, DLEngineLogisticsCostReport, report, report.ID() = showname and report.IsShow() ) ){
+      owner.DLEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
+    }
+    if( isnull( owner.DLEngineLogisticsCostSearch() ) ){
+      owner.DLEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
+    }
     
     products                  := construct( Product_MPs );
     
@@ -45,40 +54,28 @@
                                             and pispip.Start().Date() < column.StartDate().StartOfNextMonth() 
                                             and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) );
                 cell          := selectobject( row, Cell, cell, cell.Column() = column );
-                newsupplyqty  := sum( pispips, Elements, pispip, pispip.NewSupplyQuantity() );
-                plannedinvqty := sum( pispips, Elements, pispip, pispip.PlannedInventoryLevelEnd() );
+                entercost     := 0.0;
+                othercost     := 0.0;
+                outcost       := 0.0;
+                storecost     := 0.0;
+                transcost     := 0.0;
                 if( isdltoccrent){
-                  //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
-                  enginecost  := selectobject( enginecosts, Elements, engine, engine.StartDate() <= column.StartDate()  and engine.EndDate() >= column.StartDate() 
-                                                     and engine.Factory() = ccfactory );
-                  cell.CCRentQty( cell.CCRentQty() + newsupplyqty );
-                  //闀挎槬澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环 
-                  entercost   := ceil( newsupplyqty / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
-                  //闀挎槬澶栫搴撳嚭搴撹垂鐢�: 鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环
-                  outcost     := ceil( newsupplyqty / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
+                  othercost   := Real::MaxReal();
+                  transset    := selectset( transcosts, Elements, trans, trans.Origin() = '闀挎槬澶栫搴�' and trans.Destination() = '瀹㈡埛搴�' );
+                  column.CalcEngineCost( pispips, enginecosts, transset, ccfactory, entercost, othercost, outcost, storecost, transcost );
+                  cell.CCRentQty( cell.CCRentQty() + sum( pispips, Elements, pispip, pispip.NewSupplyQuantity() ) );
                   cell.CCRentInCost( cell.CCRentInCost() + entercost );
                   cell.CCRentOutOfCost( cell.CCRentOutOfCost() + outcost );
-                  cost        := ceil( plannedinvqty / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
-                  cell.CCRentStorCost( cell.CCRentStorCost() + cost );//闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�
-                  transcost   := selectobject( transcosts, Elements, trans, trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() and trans.Origin() = '闀挎槬澶栫搴�' and trans.Destination() = '瀹㈡埛搴�' );
-                  if( not isnull( transcost ) ){
-                    cost      := ceil( ceil( newsupplyqty / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
-                    cell.CCShorTransCost( cell.CCShorTransCost() + cost );//闀挎槬鐭�旇繍杈撹垂鐢�
-                  }
+                  cell.CCRentStorCost( cell.CCRentStorCost() + storecost );//闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�
+                  cell.CCShorTransCost( cell.CCShorTransCost() + transcost );//闀挎槬鐭�旇繍杈撹垂鐢�
                 } else {
-                  //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
-                  enginecost  := selectobject( enginecosts, Elements, engine, engine.StartDate() <= column.StartDate()  and engine.EndDate() >= column.StartDate() 
-                                                     and engine.Factory() = dlfactory  );
-                  if( not isnull( enginecost ) ){
-                    cost      := ceil( plannedinvqty / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
-                    cell.DLRentStorCost( cell.DLRentStorCost() + cost );//澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�
-                    row.SetDLRentEnterCost( column, enginecost, newsupplyqty );//澶ц繛澶栫搴撳叆搴撹垂鐢�
-                    transcost := selectobject( transcosts, Elements, trans, trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() and trans.Origin() = '澶ц繛鍘傚唴搴�' and trans.Destination() = '澶ц繛澶栫搴�' );
-                    if( not isnull( transcost ) ){
-                      cost    := ceil( ceil( newsupplyqty / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//鍥涜垗浜斿叆
-                      row.SetFactoryToRentTransCost( column, cost );
-                    }
-                  }
+                  outcost     := Real::MaxReal();
+                  transset    := selectset( transcosts, Elements, trans, trans.Origin() = '澶ц繛鍘傚唴搴�' and trans.Destination() = '澶ц繛澶栫搴�' );
+                  column.CalcEngineCost( pispips, enginecosts, transset, dlfactory, entercost, othercost, outcost, storecost, transcost );
+                  cell.DLRentStorCost( cell.DLRentStorCost() + storecost );//澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�
+                  cell.DLRentOtherCost( cell.DLRentOtherCost() + othercost );//澶ц繛澶栫搴撳叾浠栬垂鐢�
+                  cell.DLRentInCost( cell.DLRentInCost() + entercost );//澶ц繛澶栫搴撳叆搴撹垂鐢�
+                  cell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + transcost );//鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤
                 }
               }
               products.Add( pisp.Product_MP() );
@@ -94,32 +91,26 @@
       isdl                    := laneleg.OriginStockingPointID().EndsWith( '鍘傚唴搴�' ) and ( laneleg.OriginStockingPointID().StartsWith( '澶ц繛' ) or laneleg.OriginStockingPointID().StartsWith( 'DL' ) );
       //鐩殑鍦板簱瀛樼偣鏄惁鏄暱鏄ワ紙闀挎槬澶栫搴擄級
       iscc                    := laneleg.DestinationStockingPointID() = '澶ц繛鍙戝姩鏈虹殑闀挎槬澶栫搴�';
-        if( isdl and iscc ){
-        traverse( table, Column, column){//, column.StartDate().Month() = 1 
-          alltrips            := selectset( laneleg, Trip, trip, trip.Arrival().Date() < column.StartDate().StartOfNextMonth() and trip.Arrival().Date() >= column.StartDate() );
-          enginecosts         := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.StartDate() <= column.StartDate() and engine.EndDate() >= column.StartDate() );
-          transcosts          := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.StartDate() <= column.StartDate() and trans.EndDate() >= column.StartDate() );
-          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
-            producttrips      := selectuniquevalues( alltrips, Elements.ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ), pit.ProductID() );
-            traverse( producttrips, Elements, producttrip ){//, producttrip = '6912'
-        
-              row             := table.GetRow( producttrip );
-              product         := selectobject( owner, Product_MP, product, product.ID() = producttrip );
-              products.Add( product );
-              quantity        := sum( alltrips, Elements.ProductInTrip, pit, pit.Product_MP() = product, pit.Quantity() );
-              enginecost      := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower()
-                                                   and engine.MLB_MQB() = product.MQBMLB()
-                                                   and engine.Factory() = ccfactory );
-                //鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲�
-                transcost     := selectobject( transcosts, Elements, trans, trans.Origin() = laneleg.OriginStockingPointID() 
-                                                  and trans.Destination() = laneleg.DestinationStockingPointID() 
-                                                  and exists( product.GetAllParent(), Elements, e, ifexpr( trans.Product().FindString( '鍙戝姩鏈�', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
-    
-                if( not isnull( enginecost ) and not isnull( transcost ) ){
-                  cost        := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//鍥涜垗浜斿叆
-                  cell        := selectobject( row, Cell, cell, cell.Column() = column );
-                  cell.CCLongTransCost( cell.CCLongTransCost() + cost )
-                }
+      if( isdl and iscc ){
+        allenginecosts        := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Factory() = ccfactory );
+        alltranscosts         := selectset( owner, LogisticsCostTransport, trans, trans.LoadingCapacity() <> 0 and trans.Origin() = laneleg.OriginStockingPointID() and trans.Destination() = laneleg.DestinationStockingPointID() );
+        if( allenginecosts.Size() > 0 and alltranscosts.Size() > 0 ){
+          alltrips            := selectset( laneleg, Trip, trip, exists( trip, ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) ) );
+          productids          := selectuniquevalues( alltrips, Elements.ProductInTrip, pit, pit.Quantity() <> 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ), pit.ProductID() );
+          traverse( productids, Elements, productid ){
+            product           := selectobject( owner, Product_MP, product, product.ID() = productid );
+            row               := table.GetRow( productid );
+            products.Add( product );
+            producttrips      := selectset( alltrips, Elements.ProductInTrip, pit, pit.Quantity() > 0 and pit.ProductID() = productid );
+            enginecosts       := selectset( allenginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower() and engine.MLB_MQB() = product.MQBMLB() );
+            //鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲�
+            transcosts        := selectset( alltranscosts, Elements, trans, exists( product.GetAllParent(), Elements, e, ifexpr( trans.Product().FindString( '鍙戝姩鏈�', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
+            if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
+              traverse( table, Column, column){//, column.StartDate().Month() = 1 
+                columntrips   := selectset( producttrips, Elements, pit, pit.Trip().Arrival().Date() < column.StartDate().StartOfNextMonth() and pit.Trip().Arrival().Date() >= column.StartDate() );
+                cell          := selectobject( row, Cell, cell, cell.Column() = column );
+                cell.CCLongTransCost( column.CalcEngineCost( columntrips, enginecosts, transcosts ) );
+              }
             }
           }
         }
@@ -198,24 +189,19 @@
     //    }
     //  }
     //}
-    traverse( dlproducts, Elements, ccproduct){
+    traverse( dlproducts, Elements, productid){
       
-      row                     := table.GetRow( ccproduct )
-      product                 := selectobject( owner, Product_MP, product, product.ID() = ccproduct );
-      //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
-          enginecosts         := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower() 
+      row                     := table.GetRow( productid )
+      product                 := selectobject( owner, Product_MP, product, product.ID() = productid );
+      //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰 
+      enginecosts             := selectset( owner, LogisticsCostEngine, engine, engine.PackagingCapacity() <> 0 and engine.Generation().ToLower() = product.Generation().ToLower() 
                                                  and engine.MLB_MQB() = product.MQBMLB()and engine.Factory() = dlfactory );
       if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
+        products.Add( product );
+        allpsdips             := selectset( dlforecasts, Elements.PlanningSalesDemandInPeriod, psdip, psdip.ProductID() = productid and psdip.Quantity() > 0 );
         traverse( table, Column, column ){
-          allpsdips           := selectset( dlforecasts, Elements.PlanningSalesDemandInPeriod, psdip, psdip.ProductID() = ccproduct and psdip.Quantity() > 0 and psdip.StartDate() < column.StartDate().StartOfNextMonth() and psdip.StartDate() >= column.StartDate() );
-          enginecost          := selectobject( enginecosts, Elements, engine, engine.StartDate() <= column.StartDate() and engine.EndDate() >= column.StartDate() );
-          if( not isnull( enginecost ) ){
-            products.Add( product );
-            quantity          := sum( allpsdips, Elements, psdip, psdip.Quantity() );// + psdip.FulfilledQuantity()
-            
-            cost              := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.OutboundPrice();
-            row.SetDLRentOutCost( column, cost );
-          }
+          psdips              := selectset( allpsdips, Elements, psdip, psdip.StartDate() <= column.EndDate() and psdip.StartDate() >= column.StartDate() );
+          row.SetDLRentOutCost( column, column.CalcEngineCost( psdips, enginecosts ) );
         }
       }
     }
diff --git a/_Main/BL/Type_CustomerDemandIDS/Attribute_IsShow.qbl b/_Main/BL/Type_CustomerDemandIDS/Attribute_IsShow.qbl
new file mode 100644
index 0000000..bcc4341
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/Attribute_IsShow.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsShow
+{
+  #keys: '3[415136.0.1306254772][415136.0.1306254771][415136.0.1306254773]'
+  Description: '鏄惁鏄剧ず'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/Method_Clear.qbl b/_Main/BL/Type_CustomerDemandIDS/Method_Clear.qbl
new file mode 100644
index 0000000..6da9602
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/Method_Clear.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method Clear (
+  Dates periods
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Jun-25-2024 (created) 
+    this.Column( relflush );
+    this.Row( relflush );
+    if( periods.Size() > 0 ){
+      this.GenerateColumn( periods, true );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/Method_Generate.qbl b/_Main/BL/Type_CustomerDemandIDS/Method_Generate.qbl
new file mode 100644
index 0000000..80c7eae
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/Method_Generate.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+Method Generate (
+  CustomerDemandIDSSearch search
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Jun-25-2024 (created)
+    info( '-----------Search start-------' );
+    table                   := selectobject( this,InterfaceDataset.CustomerDemandIDS, report, not report.IsShow() );
+    //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
+    idscolumns              := selectuniquevalues(  table, Column, idscolumn, idscolumn.TimeUnit() = search.TimeUnit() and idscolumn.StartDate() >= search.StartDate() and idscolumn.StartDate() <= search.EndDate(), idscolumn.StartDate() );
+    this.Clear( idscolumns );
+    traverse( table, Row, row, ( search.Unit() = FinancialProductionReport::GetDefaultAllUnit() or row.Factory() = search.Unit() ) 
+              and ( search.Product() = FinancialProductionReport::GetDefaultAllUnit() or search.Product() = row.Name() ) ){
+      
+      showrow               := selectobject( this, Row, showrow, showrow.Name() = row.Name() and showrow.Factory() = search.Unit() );
+      if( isnull( showrow ) ){
+        showrow             := this.Row( relnew, Name := row.Name(), Factory := search.Unit() );
+      }
+      traverse( row, Cell, cell, cell.Column().TimeUnit() = search.TimeUnit() ){
+        column              := selectobject( this, Column, column, column.Name() = cell.Column().Name() );
+        if( not isnull( column ) ){
+          showcell          := selectobject( showrow, Cell, showcell, showcell.Column() = column );
+          if( isnull( showcell ) ){
+            showcell        := column.Cell( relnew, Value := '' );
+            showrow.Cell( relinsert, showcell );
+          }
+          showcell.Value( [String]( [Number]cell.Value() + [Number]showcell.Value() ) );
+        }
+      }
+    }
+    info( '-----------Search end-------' );
+  *]
+}
diff --git a/_Main/BL/Type_CustomerDemandIDS/Method_GenerateColumn.qbl b/_Main/BL/Type_CustomerDemandIDS/Method_GenerateColumn.qbl
index f97e7fb..b9691a7 100644
--- a/_Main/BL/Type_CustomerDemandIDS/Method_GenerateColumn.qbl
+++ b/_Main/BL/Type_CustomerDemandIDS/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().CustomerDemandIDSSearch().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, Name := 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, Name := 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, Name := 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, Name := 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, Name := 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, Name := 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_CustomerDemandIDS/Method_GetRowByUnit.qbl b/_Main/BL/Type_CustomerDemandIDS/Method_GetRowByUnit.qbl
index ede4c8e..5634928 100644
--- a/_Main/BL/Type_CustomerDemandIDS/Method_GetRowByUnit.qbl
+++ b/_Main/BL/Type_CustomerDemandIDS/Method_GetRowByUnit.qbl
@@ -8,10 +8,10 @@
   TextBody:
   [*
     // 鐢勫叞楦� Sep-6-2024 (created)
-    row := selectobject( this, Row, row, row.Name() = product and row.Factory() = unit );
+    row                     := selectobject( this, Row, row, row.Name() = product and row.Factory() = unit );
     if( isnull( row ) ){
       //鍒濆鍖栧崟鍏冩牸 
-      row := this.Row( relnew, Name := product, Factory := unit );
+      row                   := this.Row( relnew, Name := product, Factory := unit );
       traverse( this, Column, column ){
         row.Initialize( column );
       }
diff --git a/_Main/BL/Type_CustomerDemandIDS/StaticMethod_GenerateData.qbl b/_Main/BL/Type_CustomerDemandIDS/StaticMethod_GenerateData.qbl
index db43831..546ae21 100644
--- a/_Main/BL/Type_CustomerDemandIDS/StaticMethod_GenerateData.qbl
+++ b/_Main/BL/Type_CustomerDemandIDS/StaticMethod_GenerateData.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 StaticMethod GenerateData (
   InterfaceDataset interface,
-  const MacroPlan macroplan,
+  MacroPlan macroplan,
   RecycleBin recycle,
   const Archive archive
 )
@@ -15,12 +15,15 @@
     //interface.CustomerDemandIDSSearch( relflush );
     info( '-------------------------Start---------------------');
     allunit               := CustomerDemandIDS::GetDefaultAllUnit();
-    if( isnull( interface.CustomerDemandIDSSearch() ) ){
-      interface.CustomerDemandIDSSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit );
-    }
-    idstable              := selectobject( interface, CustomerDemandIDS, idstable, idstable.ID() = '瀹㈡埛闇�姹�' );
+    search                := interface.CustomerDemandIDSSearch( relnew, Product := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit );
+    name                  := '瀹㈡埛闇�姹�';
+    idstable              := selectobject( interface, CustomerDemandIDS, idstable, idstable.ID() = name );
     if( isnull( idstable ) ){
-      idstable            := interface.CustomerDemandIDS( relnew, ID := '瀹㈡埛闇�姹�', Name := '瀹㈡埛闇�姹�' );
+      idstable            := interface.CustomerDemandIDS( relnew, ID := name, Name := name );
+    }
+    showtable             := selectobject( interface, CustomerDemandIDS, version, version.IsShow() );
+    if( isnull( showtable ) ){
+      showtable           := interface.CustomerDemandIDS( relnew, ID := name + 'Show', Name := name, IsShow := true );
     }
     binaryValue           := TemplateManager::GetIDSFullTable( archive, Date::ActualDate().Year() );
     source                := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
@@ -34,7 +37,7 @@
     periods               := idsdates.Union( ppadates );
     periods               := selectuniquevalues( periods, Elements, e, not exists( idstable, Column, column, column.StartDate() = e ), e );
     if( periods.Size() > 0 ){
-      idstable.GenerateColumn( periods.Sort() );
+      idstable.GenerateColumn( periods.Sort(), false );
     }
     traverse( recycle, GeneralExcelImportAndExportDataSource.GeneralExcelImportAndExportDataTable, table ){
       traverse( table, GeneralExcelImportAndExportDataRow, row ){
@@ -54,8 +57,12 @@
       }
     }
     traverse ( macroplan, SalesDemand.astype( Forecast ), forecast, not isnull( forecast.Product_MP() ) and forecast.Origin() = 'PPA' ){
+      unitname              := ifexpr( forecast.SalesSegment_MP().Name().StartsWith( 'Changchun' ) 
+                                       or exists( forecast.SalesSegment_MP().GetAllParent(), Elements, psalessegment, psalessegment.Name().StartsWith( 'Changchun' ) )
+                                       , FinancialProductionReport::GetDefaultCCUnit()
+                                       , FinancialProductionReport::GetDefaultDLUnit() );
       traverse( forecast, PlanningSalesDemandInPeriod, sdip ){
-        idsrow              := idstable.GetRowByUnit( forecast.ProductID(), forecast.SalesSegmentName() );
+        idsrow              := idstable.GetRowByUnit( forecast.ProductID(), unitname );
         daycolumn           := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), sdip.StartDate() );
         weekcolumn          := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), sdip.StartDate() );
         monthcolumn         := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), sdip.StartDate() );
@@ -68,5 +75,6 @@
     
     source.Delete();
     info( '-------------------------End---------------------');
+    showtable.Generate( search );
   *]
 }
diff --git a/_Main/BL/Type_CustomerDemandIDS/StaticMethod_InitiateSearch.qbl b/_Main/BL/Type_CustomerDemandIDS/StaticMethod_InitiateSearch.qbl
new file mode 100644
index 0000000..838f7e1
--- /dev/null
+++ b/_Main/BL/Type_CustomerDemandIDS/StaticMethod_InitiateSearch.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod InitiateSearch (
+  InterfaceDataset owner
+) as CustomerDemandIDS
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Sep-29-2024 (created)
+    allunit                   := FinancialProductionReport::GetDefaultAllUnit();
+    search                    := owner.CustomerDemandIDSSearch();
+    if( isnull( search ) ){
+      search                  := owner.CustomerDemandIDSSearch( relnew, Product := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
+    }else{
+      search                  := owner.CustomerDemandIDSSearch();
+      search.Product( allunit );
+      search.TimeUnit(  Translations::MP_GlobalParameters_Day() );
+      search.Unit( allunit );
+      search.StartDate( Date::MinDate() );
+      search.EndDate( Date::MaxDate() );
+    }
+    table                     := selectobject( owner, CustomerDemandIDS, table, table.IsShow() );
+    if( not isnull( table ) ){
+      table.Generate( search);
+    }
+    return table;
+  *]
+}
diff --git a/_Main/BL/Type_ExportXMLData/Function_CalcPriority.qbl b/_Main/BL/Type_ExportXMLData/Function_CalcPriority.qbl
new file mode 100644
index 0000000..96c9c07
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLData/Function_CalcPriority.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcPriority
+{
+  TextBody:
+  [*
+    // Akari Nov-15-2024 (created)
+    
+    value := this.CalculatePriority();
+    
+    this.Priority( value );
+  *]
+}
diff --git a/_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl b/_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl
index 5a3d269..580dd44 100644
--- a/_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl
+++ b/_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-Method CalculatePriority () as Number
+Method CalculatePriority () const declarative as Number
 {
   TextBody:
   [*
@@ -11,43 +11,50 @@
       priority := 1 ;
     }else if( element.LikeUserLocale( "<name>浜х嚎</name>" )){
       priority := 2 ;
-    }else if( element.LikeUserLocale( "<name>    </name>" )){
+    }else if( element.LikeUserLocale( "<name>Unit</name>" )){
       priority := 3 ;
-    }else if( element.LikeUserLocale( "<name>Attribute</name>" )){
+    }else if( element.LikeUserLocale( "<name>    </name>" )){
       priority := 4 ;
-    }else if( element.LikeUserLocale( "<name>浜у湴</name>" )){
+    }else if( element.LikeUserLocale( "<name>Attribute</name>" )){
       priority := 5 ;
-    }else if( element.LikeUserLocale( "<name>杞﹀瀷</name>" )){
+    }else if( element.LikeUserLocale( "<name>浜у湴</name>" )){
       priority := 6 ;
-    }else if( element.LikeUserLocale( "<name>鍙戝姩鏈洪浂浠跺彿</name>" )){
+    }else if( element.LikeUserLocale( "<name>杞﹀瀷</name>" )){
       priority := 7 ;
-    }else if( element.LikeUserLocale( "<name>鍙戝姩鏈哄洓浣嶇爜</name>" )){
+    }else if( element.LikeUserLocale( "<name>鍙戝姩鏈洪浂浠跺彿</name>" )){
       priority := 8 ;
-    }else if( element.LikeUserLocale( "<name>鐢熶骇澶╂暟</name>" )){
+    }else if( element.LikeUserLocale( "<name>鍙戝姩鏈哄洓浣嶇爜</name>" )){
       priority := 9 ;
-    }else if( element.LikeUserLocale( "<name>鍔犵彮/娆犲伐鏃堕暱</name>" )){
+    }else if( element.LikeUserLocale( "<name>鐢熶骇澶╂暟</name>" )){
       priority := 10 ;
-    }else if( element.LikeUserLocale( "<name>骞虫棩鍔犵彮鏃堕暱</name>" )){
+    }else if( element.LikeUserLocale( "<name>鍔犵彮/娆犲伐鏃堕暱</name>" )){
       priority := 11 ;
-    }else if( element.LikeUserLocale( "<name>浼戞伅鏃ュ姞鐝椂闀�</name>" )){
+    }else if( element.LikeUserLocale( "<name>骞虫棩鍔犵彮鏃堕暱</name>" )){
       priority := 12 ;
-    }else if( element.LikeUserLocale( "<name>鑺傚亣鏃ュ姞鐝椂闀�</name>" )){
+    }else if( element.LikeUserLocale( "<name>浼戞伅鏃ュ姞鐝椂闀�</name>" )){
       priority := 13 ;
-    }else if( element.LikeUserLocale( "<name>娆犲伐鏃堕暱</name>" )){
+    }else if( element.LikeUserLocale( "<name>鑺傚亣鏃ュ姞鐝椂闀�</name>" )){
       priority := 14 ;
-    }else if( element.LikeUserLocale( "<name>鍔犵彮/娆犲伐璐�</name>" )){
+    }else if( element.LikeUserLocale( "<name>娆犲伐鏃堕暱</name>" )){
       priority := 15 ;
-    }else if( element.LikeUserLocale( "<name>骞虫棩鍔犵彮璐�</name>" )){
+    }else if( element.LikeUserLocale( "<name>鍔犵彮/娆犲伐璐�</name>" )){
       priority := 16 ;
-    }else if( element.LikeUserLocale( "<name>浼戞伅鏃ュ姞鐝垂</name>" )){
+    }else if( element.LikeUserLocale( "<name>骞虫棩鍔犵彮璐�</name>" )){
       priority := 17 ;
-    }else if( element.LikeUserLocale( "<name>鑺傚亣鏃ュ姞鐝垂</name>" )){
+    }else if( element.LikeUserLocale( "<name>浼戞伅鏃ュ姞鐝垂</name>" )){
       priority := 18 ;
-    }else if( element.LikeUserLocale( "<name>娆犲伐璐�</name>" )){
+    }else if( element.LikeUserLocale( "<name>鑺傚亣鏃ュ姞鐝垂</name>" )){
       priority := 19 ;
+    }else if( element.LikeUserLocale( "<name>娆犲伐璐�</name>" )){
+      priority := 20 ;
     }else{
-      //  <column><name>2020/04/01</name>
-      priority := [Number]element.SubString( 14,10 ).ReplaceAll( "/","") ;
+      try{
+        //  <column><name>2020/04/01</name>
+        priority := [Number]element.SubString( 14,10 ).ReplaceAll( "/","");
+      }onerror{
+        //  <column><name>2020-04-01</name>
+        priority := [Number]element.SubString( 14,10 ).ReplaceAll( "-","");
+      }
     }
     return priority;
   *]
diff --git a/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl b/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
index 0f9c6bf..f3709af 100644
--- a/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
+++ b/_Main/BL/Type_ExportXMLManager/Function_CalcFinalXML.qbl
@@ -7,7 +7,7 @@
     // rislai Jun-20-2024 (created)
     xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>'+ this.SheetName() +'</name>';
     
-    datas := selectsortedset( this,ExportXMLData,data,true,data.Priority() );
+    datas := selectsortedset( this,ExportXMLData,data,data.Priority() );
     
     traverse( datas,Elements,data ){
       xmlTemplate := xmlTemplate + data.XML(); 
diff --git "a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData\043530.qbl" "b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData\043530.qbl"
index 35a46bf..b760376 100644
--- "a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData\043530.qbl"
+++ "b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData\043530.qbl"
@@ -16,12 +16,7 @@
     }
     manager := owner.ExportXMLManager( relnew,Name := tableName,SheetName := sheetName );
     traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
-       data := manager.ExportXMLData( relnew, XML := element);
-       try{
-         data.Priority( data.CalculatePriority( ));
-       }onerror{
-         info( element );
-       }
+       manager.ExportXMLData( relnew, XML := element);
     }
   *]
 }
diff --git a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
index 6e31752..1c839e0 100644
--- a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
@@ -15,12 +15,7 @@
     }
     manager := owner.ExportXMLManager( relnew,Name := tableName,SheetName := tableName );
     traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
-       data := manager.ExportXMLData( relnew, XML := element);
-       try{
-         data.Priority( data.CalculatePriority( ));
-       }onerror{
-         info( element );
-       }
+       manager.ExportXMLData( relnew, XML := element);
     }
   *]
 }
diff --git a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
index f8f7792..b6c535b 100644
--- a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitShiftPlanXMLData.qbl
@@ -15,14 +15,7 @@
       manager.ExportXMLData( relflush );
     }
     traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
-       data := manager.ExportXMLData( relnew, XML := element);
-       if( element.LikeUserLocale( "Unit" )){
-         data.Priority( 1 );
-       }else if( element.LikeUserLocale( "Attribute" )){
-         data.Priority( 2 );
-       }else{
-         data.Priority( [Number]element.SubString( 14,10 ).ReplaceAll( "-","") );
-       }
+       manager.ExportXMLData( relnew, XML := element);
     }
   *]
 }
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport0/StaticMethod_CreateFullTable.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport0/StaticMethod_CreateFullTable.qbl
index 14a6613..73b4888 100644
--- a/_Main/BL/Type_MP_Cell_AnnualPlanReport0/StaticMethod_CreateFullTable.qbl
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport0/StaticMethod_CreateFullTable.qbl
@@ -34,17 +34,18 @@
     }
     
     traverse( tables,Elements.ArchiveRow,row ){
-       localRowHandle := localRowIndexTree.GetHandle( row.ProductID() + row.ProductionLine() );
-       localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
-       localRow := null( LocalRow );
-       if( isnull( localRowIndex )){
-    
-         localRow := localTable.LocalRow( relnew,CustomName := row.Name(),ProductID := row.ProductID(),ProductionLine := row.ProductionLine(),Index := localTable.GetRowIndexCache() );
-         localRows.Add( localRow );
-         localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 );
-       }else{
-         localRow := localRows.Element( localRowIndex.GetValueAsNumber() );
-       }
+      localRow := null( LocalRow );
+      {
+        localRowHandle := localRowIndexTree.GetHandle( row.ProductID() + row.ProductionLine() );
+        localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
+        if( isnull( localRowIndex )){
+          localRow := localTable.LocalRow( relnew,CustomName := row.Name(),ProductID := row.ProductID(),ProductionLine := row.ProductionLine(),Index := localTable.GetRowIndexCache() );
+          localRows.Add( localRow );
+          localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 );
+        }else{
+          localRow := localRows.Element( localRowIndex.GetValueAsNumber() );
+        }
+      }
       
        traverse( row,ArchiveCell.astype( ArchiveCell_AnnualPlanReport ),cell ){
          localColumnHandle := localColumnIndexTree.GetHandle( cell.ArchiveColumn().Date().AsQUILL());
@@ -67,33 +68,37 @@
        }
     }
     
-    //owner := maxselect( owners,Elements,element,element.StartOfPlanning() );
     traverse( macroPlan,Product_MP.ProductInStockingPoint_MP,pisp_mp ){
       pispippls := selectset( pisp_mp,ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ),pispippl,
                               pispippl.Period_MP().StartDate() > endDate 
                               and pispippl.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day());
     
       if( pispippls.Size() <> 0 ){
-        localRowHandle := localRowIndexTree.GetHandle( pisp_mp.ProductID() + pisp_mp.StockingPoint_MP().Unit().Name() );
-        localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
         localRow := null( LocalRow );
-        if( isnull( localRowIndex )){
-          localRow := localTable.LocalRow( relnew,CustomName := pisp_mp.Name(),ProductID := pisp_mp.ProductID(),ProductionLine := pisp_mp.StockingPoint_MP().Unit().Name(),Index := localTable.GetRowIndexCache() );
-          localRows.Add( localRow );
-          localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 );
-        }else{
-          localRow := localRows.Element( localRowIndex.GetValueAsNumber() );
-        }
-        traverse( pispippls,Elements,pispippl ){
-          columnHandle := localColumnIndexTree.GetHandle( pispippl.Period_MP().StartDate().AsQUILL() );
-          columnIndex := guard( localColumnIndexTree.Root().Child( columnHandle ),null( NamedValue ));
-          column := null( LocalColumn );
-          if( not isnull( columnIndex )){
-            column := localColumns.Element( columnIndex.GetValueAsNumber() );
+        {
+          localRowHandle := localRowIndexTree.GetHandle( pisp_mp.ProductID() + pisp_mp.StockingPoint_MP().Unit().Name() );
+          localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
+          if( isnull( localRowIndex )){
+            localRow := localTable.LocalRow( relnew,CustomName := pisp_mp.Name(),ProductID := pisp_mp.ProductID(),ProductionLine := pisp_mp.StockingPoint_MP().Unit().Name(),Index := localTable.GetRowIndexCache() );
+            localRows.Add( localRow );
+            localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 );
           }else{
-            column := localTable.LocalColumn( relnew,CustomDate := pispippl.Period_MP().StartDate() ,TimeUnit := "Day");
-            localColumns.Add( column );
-            localColumnIndexTree.Root().AddChild( columnHandle,localColumns.Size() - 1 );
+            localRow := localRows.Element( localRowIndex.GetValueAsNumber() );
+          }
+        }
+    
+        traverse( pispippls,Elements,pispippl ){
+          column := null( LocalColumn );
+          {
+            columnHandle := localColumnIndexTree.GetHandle( pispippl.Period_MP().StartDate().AsQUILL() );
+            columnIndex := guard( localColumnIndexTree.Root().Child( columnHandle ),null( NamedValue ));
+            if( not isnull( columnIndex )){
+              column := localColumns.Element( columnIndex.GetValueAsNumber() );
+            }else{
+              column := localTable.LocalColumn( relnew,CustomDate := pispippl.Period_MP().StartDate() ,TimeUnit := "Day");
+              localColumns.Add( column );
+              localColumnIndexTree.Root().AddChild( columnHandle,localColumns.Size() - 1 );
+            }
           }
           
           localCellHandle := localCellIndexTree.GetHandle( localRow.ProductID() + localRow.ProductionLine() + column.CustomDate().AsQUILL() + column.TimeUnit() );
diff --git a/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_Create.qbl b/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_Create.qbl
index dd478ff..1fd91e6 100644
--- a/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_Create.qbl
+++ b/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_Create.qbl
@@ -59,7 +59,7 @@
           
           
           if( not isnull( workHours )){
-            capacity := workDay * throughput //* workHours.Capacity().HoursAsReal()
+            capacity := unitPeriodTime.ShiftPlan().GetWorkHours() * throughput //* workHours.Capacity().HoursAsReal()
           }
           
           isFirstWeekData := true;
diff --git a/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateFullTable.qbl b/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateFullTable.qbl
index 28ced4a..1128295 100644
--- a/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateFullTable.qbl
+++ b/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateFullTable.qbl
@@ -83,7 +83,7 @@
                               cell.ArchiveColumn().CustomDate() >= localColumn.CustomDate() and 
                               cell.ArchiveColumn().CustomDate() < localColumn.CustomDate().StartOfNextMonth() );
           
-          isFuture := macroPlan.StartOfPlanning().Date() < localColumn.CustomDate();
+          isFuture := macroPlan.StartOfPlanning().Date() <= localColumn.CustomDate();
           
           workingDay := 0;
           capacity := 0.0;
@@ -97,15 +97,18 @@
               scheduleSummaryOutputData := scheduleSummaryOutputDatas.Element( scheduleSummaryOutputDataIndex.GetValueAsNumber() );
               output := scheduleSummaryOutputData.Output();
             }
-          }
+            
     
-          traverse( archiveCells,Elements,cell ){
+          }
+          
+          traverse( archiveCells,Elements,cell,cell.IsFristWeekData() ){
              workingDay := workingDay + cell.WorkingDay();
              capacity := capacity + cell.Capacity();
              if( cell.ShiftPattern() <> "" ){
                shiftPatterns.Add( cell.ShiftPattern() );
              }
           }
+          
           localCell := null( LocalCell_ScheduleSummary );
           {
             localCellHandle := localCellIndexTree.GetHandle( row.Name() + localColumn.CustomDate().AsQUILL() );
@@ -150,21 +153,24 @@
           capacity := 0.0;
           output := 0.0;
           shiftPatterns := construct( Strings );
-          isFuture := macroPlan.StartOfPlanning().Date() < localColumn.CustomDate();
+          isFuture := macroPlan.StartOfPlanning().Date() <= localColumn.CustomDate();
           
           if( isFuture ){
             unitHandle := unitIndexTree.GetHandle( row.CustomName() );
             unitIndex := guard( unitIndexTree.Root().Child( unitHandle ),null( NamedValue ));
             if( not isnull( unitIndex )){
               unit := units.Element( unitIndex.GetValueAsNumber() );
-              output := sum( unit,StockingPoint_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod,pispip,
-                             pispip.Period_MP().StartDate() >= localColumn.CustomDate() and
-                             pispip.Period_MP().StartDate() < localColumn.CustomDate().StartOfNextMonth() and
-                             pispip.Period_MP().TimeUnit() = "Day",
-                             pispip.NewSupplyProductionQuantity());
+              output := sum( unit,StockingPoint_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ).NewSupply,newSupply,
+                             newSupply.PeriodTask_MP().istype( PeriodTaskOperation ) and not newSupply.PeriodTask_MP().astype( PeriodTaskOperation ).IsSupplier() and // 鍒楄〃杩囨护鏉′欢锛欶ormProductionPlanDetails
+                             newSupply.ProductInStockingPointInPeriodPlanning().Period_MP().StartDate() >= localColumn.CustomDate() and
+                             newSupply.ProductInStockingPointInPeriodPlanning().Period_MP().StartDate() < localColumn.CustomDate().StartOfNextMonth() and
+                             newSupply.ProductInStockingPointInPeriodPlanning().Period_MP().TimeUnit() = "Day",
+                             newSupply.Quantity());
             }
-          }
+            
     
+          }
+          
           traverse( archiveCells,Elements,cell ){
              workingDay := workingDay + cell.WorkingDay();
              capacity := capacity + cell.Capacity();
@@ -172,6 +178,7 @@
                shiftPatterns.Add( cell.ShiftPattern() );
              }
           }
+            
           localCell := null( LocalCell_ScheduleSummary );
           {
             localCellHandle := localCellIndexTree.GetHandle( row.CustomName() + localColumn.CustomDate().AsQUILL() );
@@ -194,11 +201,8 @@
        }
     }
     
-    
-    
-    traverse( localTable,LocalRow.LocalCell.astype( LocalCell_ScheduleSummary ),cell ){
-      cell.Capacity( cell.Capacity() / tables.Size() );
-      cell.Output( cell.Output() / tables.Size() );
+    traverse( localTable,LocalRow.LocalCell.astype( LocalCell_ScheduleSummary ),cell,cell.WorkingDay() <> 0 ){
+      cell.Capacity( cell.Capacity() / cell.WorkingDay() );
     }
     
     AsyncFlag::Success( recycleBin,ArchiveCell_ScheduleSummary::GetTableName() );
diff --git a/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateTempTable.qbl b/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateTempTable.qbl
index d35d371..08f6a1e 100644
--- a/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateTempTable.qbl
+++ b/_Main/BL/Type_MP_Cell_ScheduleSummary0/StaticMethod_CreateTempTable.qbl
@@ -54,7 +54,7 @@
           
           
           if( not isnull( workHours )){
-            capacity := workDay * throughput //* workHours.Capacity().HoursAsReal()
+            capacity := unitPeriodTime.ShiftPlan().GetWorkHours()* throughput //* workHours.Capacity().HoursAsReal()
           }
           
           row.LocalCell( relnew,LocalCell_ScheduleSummary,LocalColumn := column,
@@ -66,11 +66,9 @@
       }
     }
     
-    
     traverse( table,LocalColumn,column,column.LocalCell( relsize ) = 0 ){
       column.Delete(); 
     }
-    
     
     return table;
   *]
diff --git a/_Main/BL/Type_ShiftPlan/Method_GetWorkHours.qbl b/_Main/BL/Type_ShiftPlan/Method_GetWorkHours.qbl
new file mode 100644
index 0000000..7d795e5
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Method_GetWorkHours.qbl
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetWorkHours () const declarative remote as Real
+{
+  TextBody:
+  [*
+    // Akari Sep-6-2024 (created)
+    result := 0.0;
+    if( this.Outcome() = "1" ){
+      result := 8.0;
+    }else if( this.Outcome() = "2" ){
+      result := 16.0;
+    }else if(this.Outcome() = "9+9"){
+      result := 18.0;
+    }else if(this.Outcome() = "10+10"){
+      result := 20.0;
+    }else if(this.Outcome() = "11+11"){
+      result := 22.0;
+    }else if(this.Outcome() = "1(9)" or this.Outcome() = "1锛�9锛�"){
+      result := 9.0;
+    }else if(this.Outcome() = "1(10)" or this.Outcome() = "1锛�10锛�"){
+      result := 10.0;
+    }else if(this.Outcome() = "3"){
+      result := 22.5;
+    }
+    
+    return result;
+  *]
+}
diff --git a/_Main/Sys/Repr/Global/LocalCell_Default.qrp b/_Main/Sys/Repr/Global/LocalCell_Default.qrp
index d0871d7..6d74c1e 100644
--- a/_Main/Sys/Repr/Global/LocalCell_Default.qrp
+++ b/_Main/Sys/Repr/Global/LocalCell_Default.qrp
@@ -10,7 +10,7 @@
     ]
     DataRepresentation.Default
     {
-      FormatString: 'N(Dec(1))'
+      FormatString: 'N(Dec(0))'
       InheritFormatting: false
     }
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def
index e9f7f81..e459113 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def
@@ -60,6 +60,28 @@
         Taborder: 4
       ]
     }
+    Component ButtonArchivePackagingPlan
+    {
+      #keys: '[414996.1.236261009]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'PRODUCT'
+        Label: 'Archive packaging plan'
+        Taborder: 5
+      ]
+    }
+    Component ButtonArchiveTransferPlan
+    {
+      #keys: '[414996.1.236261022]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'TRUCK2_BLUE'
+        Label: 'Archive transfer plan'
+        Taborder: 6
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchivePackagingPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchivePackagingPlan.def
new file mode 100644
index 0000000..8210dc0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchivePackagingPlan.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupArchiveReport/ButtonArchivePackagingPlan
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchivePackagingPlan_OnClick
+{
+  #keys: '[414996.1.236261208]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      // Open view
+      ApplicationMacroPlanner.OpenView( 'ArchivePackagingPlan', this );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveTransferPlan_.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveTransferPlan_.def
new file mode 100644
index 0000000..124a654
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveTransferPlan_.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupArchiveReport/ButtonArchiveTransferPlan
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonArchiveTransferPlan_OnClick
+{
+  #keys: '[414996.1.236261219]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      // Open view
+      ApplicationMacroPlanner.OpenView( 'ArchiveTransferPlan', this );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelFilter\043490.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelFilter\043490.def"
index 6626b06..137a813 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelFilter\043490.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelFilter\043490.def"
@@ -5,36 +5,6 @@
   BaseType: 'WebPanel'
   Children:
   [
-    Component ddslGeneration
-    {
-      #keys: '[414996.1.211223982]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: 'Generation'
-        Taborder: 0
-      ]
-    }
-    Component ddslMQBMLB
-    {
-      #keys: '[414996.1.211223983]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: 'MQB/MLB'
-        Taborder: 1
-      ]
-    }
-    Component ddslPower
-    {
-      #keys: '[414996.1.211223984]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: '鍔熺巼'
-        Taborder: 2
-      ]
-    }
     Component dsStartDate
     {
       #keys: '[414996.1.211223985]'
@@ -42,7 +12,7 @@
       Properties:
       [
         Label: 'Start Date'
-        Taborder: 3
+        Taborder: 0
       ]
     }
     Component dsEndDate
@@ -53,17 +23,7 @@
       [
         Date: 9999-12-31
         Label: 'End Date'
-        Taborder: 5
-      ]
-    }
-    Component ButtonFilter676
-    {
-      #keys: '[414996.1.211223987]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Label: '杩囨护'
-        Taborder: 7
+        Taborder: 2
       ]
     }
     Component dhStartDate
@@ -73,7 +33,7 @@
       Databinding: 'Date*'
       Properties:
       [
-        Taborder: 4
+        Taborder: 1
       ]
     }
     Component dhEndDate
@@ -83,17 +43,7 @@
       Databinding: 'Date*'
       Properties:
       [
-        Taborder: 6
-      ]
-    }
-    Component ButtonClearFilter
-    {
-      #keys: '[414996.1.211223990]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Label: 'Clear'
-        Taborder: 8
+        Taborder: 3
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ButtonClearFilter_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ButtonClearFilter_OnClick.def
deleted file mode 100644
index fc961bd..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ButtonClearFilter_OnClick.def
+++ /dev/null
@@ -1,19 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter_490/ButtonClearFilter
-Response OnClick () id:Response_PanelFilter_490_ButtonClearFilter_OnClick
-{
-  #keys: '[414996.1.211223971]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      ddslGeneration.Text( "<All>" );
-      ddslMQBMLB.Text( "<All>" );
-      ddslPower.Text( "<All>" )
-      dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ButtonFilter676_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ButtonFilter676_OnClick.def
deleted file mode 100644
index 5bd05c4..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ButtonFilter676_OnClick.def
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter_490/ButtonFilter676
-Response OnClick () id:Response_PanelFilter_490_ButtonFilter676_OnClick
-{
-  #keys: '[414996.1.211223974]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      products := dhFinelProducts.Data().Copy();
-      if( ddslGeneration.Text() <> "<All>" ){
-        products := selectset( products,Elements,element,element.Generation() = ddslGeneration.Text());
-      }
-      if( ddslMQBMLB.Text() <> "<All>" ){
-        products := selectset( products,Elements,element,element.MQBMLB() = ddslMQBMLB.Text());
-      }
-      if( ddslPower.Text() <> "<All>" ){
-        products := selectset( products,Elements,element,element.Power() = ddslPower.Text());
-      }
-      dhFinelProducts.Data( &products );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslGeneration_OnCreated.def
deleted file mode 100644
index a264f00..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslGeneration_OnCreated.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter_490/ddslGeneration
-Response OnCreated () id:Response_PanelFilter_490_ddslGeneration_OnCreated
-{
-  #keys: '[414996.1.211223979]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Generation() );
-      
-      res := strings.Concatenate( ";" );
-      
-      this.Strings( "<All>;" + res );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslMQBMLB_OnCreated.def
deleted file mode 100644
index 0a81a7d..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslMQBMLB_OnCreated.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter_490/ddslMQBMLB
-Response OnCreated () id:Response_PanelFilter_490_ddslMQBMLB_OnCreated
-{
-  #keys: '[414996.1.211223978]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.MQBMLB() );
-      
-      res := strings.Concatenate( ";" );
-      
-      this.Strings( "<All>;" + res );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslPower_OnCreated.def
deleted file mode 100644
index aac10bd..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelFilter_490_ddslPower_OnCreated.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter_490/ddslPower
-Response OnCreated () id:Response_PanelFilter_490_ddslPower_OnCreated
-{
-  #keys: '[414996.1.211223977]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Power() );
-      
-      res := strings.Concatenate( ";" );
-      
-      this.Strings( "<All>;" + res );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchivePackagingPlan/_ROOT_Component_FormArchivePackagingPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchivePackagingPlan/_ROOT_Component_FormArchivePackagingPlan.def
index 9e6ec7a..8df75f4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormArchivePackagingPlan/_ROOT_Component_FormArchivePackagingPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchivePackagingPlan/_ROOT_Component_FormArchivePackagingPlan.def
@@ -12,6 +12,7 @@
   ]
   Properties:
   [
+    Image: 'PRODUCT'
     Title: 'Archive Packaging Plan'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/_ROOT_Component_FormArchiveTransferPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/_ROOT_Component_FormArchiveTransferPlan.def
index 4e5be49..f829b2e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/_ROOT_Component_FormArchiveTransferPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/_ROOT_Component_FormArchiveTransferPlan.def
@@ -12,6 +12,7 @@
   ]
   Properties:
   [
+    Image: 'TRUCK2_BLUE'
     Title: 'Archive Transfer Plan'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelColumnSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelColumnSearch.def
new file mode 100644
index 0000000..08be1a7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelColumnSearch.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelColumnSearch
+{
+  #keys: '[415136.0.1307730419]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelPeriod_384
+    #child: PanelTimeUnit
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
index e886467..c6ed4e7 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelHeader\043952.def"
@@ -5,17 +5,12 @@
   BaseType: 'WebPanel'
   Children:
   [
-    #child: PanelUnit
-    #child: PanelProductLine
-    #child: PanelOperation_283
-    #child: PanelTimeUnit_234
-    #child: PanelPeriod
-    #child: PanelProduct_937
+    #child: PanelProductSearch
+    #child: PanelColumnSearch
   ]
   Properties:
   [
     FixedSize: true
-    Orientation: 'horizontal'
     Taborder: 2
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def"
deleted file mode 100644
index be5a969..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation\043283.def"
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-Component PanelOperation id:PanelOperation_283
-{
-  #keys: '[415136.0.1199302076]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ButtonSearch
-    {
-      #keys: '[415136.0.1199302077]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Image: 'VIEW'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 5
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation.def
similarity index 75%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation.def
index b681559..eaabdb8 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelOperation.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelOperation
 {
-  #keys: '[415136.0.1252790299]'
+  #keys: '[415136.0.1307730510]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ButtonSearch
     {
-      #keys: '[415136.0.1252790300]'
+      #keys: '[415136.0.1307730511]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -18,6 +18,6 @@
   ]
   Properties:
   [
-    Taborder: 5
+    Taborder: 3
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod\043858.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod\043384.def"
similarity index 73%
copy from "_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod\043858.def"
copy to "_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod\043384.def"
index 1afed44..abbcee2 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod\043858.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod\043384.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelPeriod id:PanelPeriod_858
+Component PanelPeriod id:PanelPeriod_384
 {
-  #keys: '[415136.0.1252790303]'
+  #keys: '[415136.0.1307730458]'
   BaseType: 'WebPanel'
   Children:
   [
     Component DateSelectorStart
     {
-      #keys: '[415136.0.1252790304]'
+      #keys: '[415136.0.1307730459]'
       BaseType: 'WebDateSelector'
       Properties:
       [
@@ -17,7 +17,7 @@
     }
     Component DateSelectorEnd
     {
-      #keys: '[415136.0.1252790305]'
+      #keys: '[415136.0.1307730460]'
       BaseType: 'WebDateSelector'
       Properties:
       [
@@ -30,6 +30,6 @@
   Properties:
   [
     Orientation: 'horizontal'
-    Taborder: 3
+    Taborder: 0
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct\043937.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct\043937.def"
deleted file mode 100644
index 3a0f44f..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct\043937.def"
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-Component PanelProduct id:PanelProduct_937
-{
-  #keys: '[415136.0.1199302078]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ddslProduct
-    {
-      #keys: '[415136.0.1199302079]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        FixedSize: false
-        Label: 'Product'
-        Sorting: 'none'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    FixedSize: true
-    Taborder: 2
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct.def
similarity index 78%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct.def
index 5c5c1e4..f95a591 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProduct.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelProduct
 {
-  #keys: '[415136.0.1252790306]'
+  #keys: '[415136.0.1307730409]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddslProduct
     {
-      #keys: '[415136.0.1252790307]'
+      #keys: '[415136.0.1307730410]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -20,7 +20,6 @@
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 2
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine\043623.def"
similarity index 69%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine\043623.def"
index 33c12ae..e027346 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine\043623.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelProductLine
+Component PanelProductLine id:PanelProductLine_623
 {
-  #keys: '[415136.0.1199302072]'
+  #keys: '[415136.0.1307730382]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddslProductLine
     {
-      #keys: '[415136.0.1199302073]'
+      #keys: '[415136.0.1307730383]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -18,7 +18,6 @@
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 1
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductSearch.def
new file mode 100644
index 0000000..242e37c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductSearch.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component PanelProductSearch
+{
+  #keys: '[415136.0.1307730296]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelOperation
+    #child: PanelUnit_424
+    #child: PanelProductLine_623
+    #child: PanelProduct
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit\043234.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit\043234.def"
deleted file mode 100644
index 4fcaa20..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit\043234.def"
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-Component PanelTimeUnit id:PanelTimeUnit_234
-{
-  #keys: '[415136.0.1199302074]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component RadioButtonGroupUseForTimeUnit
-    {
-      #keys: '[415136.0.1199302075]'
-      BaseType: 'WebRadioButtonGroup'
-      Properties:
-      [
-        ButtonLabels: 'Day;Week;Month'
-        ButtonValues: 'Day;Week;Month'
-        Orientation: 'horizontal'
-        Taborder: 0
-        Title: 'Periods'
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 4
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit.def
similarity index 82%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit.def
index ab3b485..06beac3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelTimeUnit.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelTimeUnit
 {
-  #keys: '[415136.0.1252790301]'
+  #keys: '[415136.0.1307730486]'
   BaseType: 'WebPanel'
   Children:
   [
     Component RadioButtonGroupUseForTimeUnit
     {
-      #keys: '[415136.0.1252790302]'
+      #keys: '[415136.0.1307730487]'
       BaseType: 'WebRadioButtonGroup'
       Properties:
       [
@@ -21,6 +21,6 @@
   ]
   Properties:
   [
-    Taborder: 4
+    Taborder: 1
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit\043424.def"
similarity index 70%
copy from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def
copy to "_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit\043424.def"
index b1aa566..a4a9b96 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit\043424.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelUnit
+Component PanelUnit id:PanelUnit_424
 {
-  #keys: '[415136.0.1199302066]'
+  #keys: '[415136.0.1307730355]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddslUnit
     {
-      #keys: '[415136.0.1199302067]'
+      #keys: '[415136.0.1307730356]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -18,7 +18,6 @@
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 0
   ]
 }
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
deleted file mode 100644
index 0fab123..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_283_ButtonSearch_OnClick.def
+++ /dev/null
@@ -1,18 +0,0 @@
-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_FormOfflinePlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_ButtonSearch_OnClick.def
similarity index 92%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_ButtonSearch_OnClick.def
index 9a2f3b3..32087c6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelOperation_ButtonSearch_OnClick.def
@@ -2,7 +2,7 @@
 #parent: PanelOperation/ButtonSearch
 Response OnClick () id:Response_PanelOperation_ButtonSearch_OnClick
 {
-  #keys: '[415136.0.1294002009]'
+  #keys: '[415136.0.1307730509]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebButton_OnClick'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_858_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorEnd_OnChanged.def
similarity index 80%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_858_DateSelectorEnd_OnChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorEnd_OnChanged.def
index daae334..38ad752 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_858_DateSelectorEnd_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorEnd_OnChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelPeriod_858/DateSelectorEnd
-Response OnChanged () id:Response_PanelPeriod_858_DateSelectorEnd_OnChanged
+#parent: PanelPeriod_384/DateSelectorEnd
+Response OnChanged () id:Response_PanelPeriod_384_DateSelectorEnd_OnChanged
 {
-  #keys: '[415136.0.1252790286]'
+  #keys: '[415136.0.1307730456]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_858_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorStart_OnChanged.def
similarity index 80%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_858_DateSelectorStart_OnChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorStart_OnChanged.def
index 8343107..b41dc9b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_858_DateSelectorStart_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_384_DateSelectorStart_OnChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelPeriod_858/DateSelectorStart
-Response OnChanged () id:Response_PanelPeriod_858_DateSelectorStart_OnChanged
+#parent: PanelPeriod_384/DateSelectorStart
+Response OnChanged () id:Response_PanelPeriod_384_DateSelectorStart_OnChanged
 {
-  #keys: '[415136.0.1252790287]'
+  #keys: '[415136.0.1307730457]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
deleted file mode 100644
index 47cc9a6..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
+++ /dev/null
@@ -1,24 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelPeriod/DateSelectorEnd
-Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
-{
-  #keys: '[415136.0.1199302051]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
-  QuillAction
-  {
-    Body:
-    [*
-      //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
-      if( this.Date() < DateSelectorStart.Date() ){
-        this.HintError( 'The end date cannot be less than the start date!' );
-      }else{
-        if( dhSearch.Data().EndDate() <> this.Date() ){
-          dhSearch.Data().EndDate( this.Date() );
-      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
-        }
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnCreated.def
similarity index 79%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnCreated.def
index b7d7008..fb1dbd1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnCreated.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelProductLine/ddslProductLine
-Response OnCreated () id:Response_PanelProductLine_ddslProductLine_OnCreated
+#parent: PanelProductLine_623/ddslProductLine
+Response OnCreated () id:Response_PanelProductLine_623_ddslProductLine_OnCreated
 {
-  #keys: '[415136.0.1199302058]'
+  #keys: '[415136.0.1307730381]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnSelectionChanged.def
similarity index 71%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnSelectionChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnSelectionChanged.def
index 4fbe4cf..12abb67 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_623_ddslProductLine_OnSelectionChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelProductLine/ddslProductLine
-Response OnSelectionChanged () id:Response_PanelProductLine_ddslProductLine_OnSelectionChanged
+#parent: PanelProductLine_623/ddslProductLine
+Response OnSelectionChanged () id:Response_PanelProductLine_623_ddslProductLine_OnSelectionChanged
 {
-  #keys: '[415136.0.1199302057]'
+  #keys: '[415136.0.1307730380]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
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
deleted file mode 100644
index 4ca0680..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnCreated.def
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelProduct_937/ddslProduct
-Response OnCreated () id:Response_PanelProduct_937_ddslProduct_OnCreated
-{
-  #keys: '[415136.0.1199302054]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  QuillAction
-  {
-    Body:
-    [*
-      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.Name());
-      
-      valueString := values.Concatenate( ";" );
-      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
-      
-      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
-      
-      this.Strings( valueString );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnSelectionChanged.def
deleted file mode 100644
index 59ad2ac..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_937_ddslProduct_OnSelectionChanged.def
+++ /dev/null
@@ -1,19 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelProduct_937/ddslProduct
-Response OnSelectionChanged () id:Response_PanelProduct_937_ddslProduct_OnSelectionChanged
-{
-  #keys: '[415136.0.1199302053]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
-  QuillAction
-  {
-    Body:
-    [*
-      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Product() <> selection ){
-        dhSearch.Data().Product( selection );
-      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() ); 
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnCreated.def
similarity index 88%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnCreated.def
index f417c53..b45a912 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnCreated.def
@@ -2,14 +2,14 @@
 #parent: PanelProduct/ddslProduct
 Response OnCreated () id:Response_PanelProduct_ddslProduct_OnCreated
 {
-  #keys: '[415136.0.1252790285]'
+  #keys: '[415136.0.1307730408]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
   {
     Body:
     [*
-      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.Name() );
+      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_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
similarity index 94%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
index 95d20d3..afa901b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
@@ -2,7 +2,7 @@
 #parent: PanelProduct/ddslProduct
 Response OnSelectionChanged () id:Response_PanelProduct_ddslProduct_OnSelectionChanged
 {
-  #keys: '[415136.0.1252790284]'
+  #keys: '[415136.0.1307730407]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged.def
deleted file mode 100644
index 1c80e7f..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelTimeUnit_234/RadioButtonGroupUseForTimeUnit
-Response OnChanged () id:Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnChanged
-{
-  #keys: '[415136.0.1199302056]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
-  QuillAction
-  {
-    Body:
-    [*
-      //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀� 
-      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
-        dhSearch.Data().TimeUnit( this.BoundValue() );
-      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
similarity index 94%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
index 533f7a1..f1bdaeb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -2,7 +2,7 @@
 #parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
 Response OnChanged () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged
 {
-  #keys: '[415136.0.1252790289]'
+  #keys: '[415136.0.1307730485]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
similarity index 93%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
index c047bee..157a002 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
@@ -2,7 +2,7 @@
 #parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
 Response OnCreated () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated
 {
-  #keys: '[415136.0.1252790288]'
+  #keys: '[415136.0.1307730484]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnCreated.def
similarity index 74%
copy from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnCreated.def
index 039803f..6eaca21 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnCreated.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelUnit/ddslUnit
-Response OnCreated () id:Response_PanelUnit_ddslUnit_OnCreated
+#parent: PanelUnit_424/ddslUnit
+Response OnCreated () id:Response_PanelUnit_424_ddslUnit_OnCreated
 {
-  #keys: '[415136.0.1199302062]'
+  #keys: '[415136.0.1307730354]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnSelectionChanged.def
similarity index 77%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnSelectionChanged.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnSelectionChanged.def
index 4757452..f3d5613 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_424_ddslUnit_OnSelectionChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelUnit_844/ddslUnit
-Response OnSelectionChanged () id:Response_PanelUnit_844_ddslUnit_OnSelectionChanged
+#parent: PanelUnit_424/ddslUnit
+Response OnSelectionChanged () id:Response_PanelUnit_424_ddslUnit_OnSelectionChanged
 {
-  #keys: '[415136.0.1252790292]'
+  #keys: '[415136.0.1307730353]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
deleted file mode 100644
index 4b71402..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
+++ /dev/null
@@ -1,19 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelUnit/ddslUnit
-Response OnSelectionChanged () id:Response_PanelUnit_ddslUnit_OnSelectionChanged
-{
-  #keys: '[415136.0.1199302061]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
-  QuillAction
-  {
-    Body:
-    [*
-      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Unit() <> selection ){
-        dhSearch.Data().Unit( selection );
-      //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() ); 
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelProduct.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelProduct.def
index a8679fc..0d843ab 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelProduct.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelProduct.def
@@ -20,7 +20,6 @@
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 3
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelColumnSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelColumnSearch.def
new file mode 100644
index 0000000..5e19d64
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelColumnSearch.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelColumnSearch
+{
+  #keys: '[415136.0.1307935295]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelPeriod_71
+    #child: PanelTimeUnit
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelHeader\043503.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelHeader\043503.def"
index ca35885..3966817 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelHeader\043503.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelHeader\043503.def"
@@ -5,16 +5,12 @@
   BaseType: 'WebPanel'
   Children:
   [
-    #child: PanelUnit
-    #child: PanelOperation_414
-    #child: PanelTimeUnit_805
-    #child: PanelPeriod
-    #child: PanelProduct_133
+    #child: PanelColumnSearch
+    #child: PanelRowSearch
   ]
   Properties:
   [
     FixedSize: true
-    Orientation: 'horizontal'
     Taborder: 2
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelOperation\043414.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelOperation\043414.def"
deleted file mode 100644
index a48a72b..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelOperation\043414.def"
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-Component PanelOperation id:PanelOperation_414
-{
-  #keys: '[415136.0.1277502018]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ButtonSearch
-    {
-      #keys: '[415136.0.1277502019]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Image: 'VIEW'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 4
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelOperation.def
similarity index 75%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelOperation.def
index b681559..fe79643 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelOperation.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelOperation
 {
-  #keys: '[415136.0.1252790299]'
+  #keys: '[415136.0.1307935388]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ButtonSearch
     {
-      #keys: '[415136.0.1252790300]'
+      #keys: '[415136.0.1307935389]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -18,6 +18,6 @@
   ]
   Properties:
   [
-    Taborder: 5
+    Taborder: 2
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod\043858.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelPeriod\04371.def"
similarity index 73%
rename from "_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod\043858.def"
rename to "_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelPeriod\04371.def"
index 1afed44..f1e7c43 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod\043858.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelPeriod\04371.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelPeriod id:PanelPeriod_858
+Component PanelPeriod id:PanelPeriod_71
 {
-  #keys: '[415136.0.1252790303]'
+  #keys: '[415136.0.1307935336]'
   BaseType: 'WebPanel'
   Children:
   [
     Component DateSelectorStart
     {
-      #keys: '[415136.0.1252790304]'
+      #keys: '[415136.0.1307935337]'
       BaseType: 'WebDateSelector'
       Properties:
       [
@@ -17,7 +17,7 @@
     }
     Component DateSelectorEnd
     {
-      #keys: '[415136.0.1252790305]'
+      #keys: '[415136.0.1307935338]'
       BaseType: 'WebDateSelector'
       Properties:
       [
@@ -30,6 +30,6 @@
   Properties:
   [
     Orientation: 'horizontal'
-    Taborder: 3
+    Taborder: 0
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelPeriod.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelPeriod.def
deleted file mode 100644
index 5e11bd8..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelPeriod.def
+++ /dev/null
@@ -1,35 +0,0 @@
-Quintiq file version 2.0
-Component PanelPeriod
-{
-  #keys: '[415136.0.1277502013]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component DateSelectorStart
-    {
-      #keys: '[415136.0.1277502014]'
-      BaseType: 'WebDateSelector'
-      Properties:
-      [
-        Label: 'Start date'
-        Taborder: 0
-      ]
-    }
-    Component DateSelectorEnd
-    {
-      #keys: '[415136.0.1277502015]'
-      BaseType: 'WebDateSelector'
-      Properties:
-      [
-        Date: 9999-12-31
-        Label: 'End date'
-        Taborder: 1
-      ]
-    }
-  ]
-  Properties:
-  [
-    Orientation: 'horizontal'
-    Taborder: 2
-  ]
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelProduct\043133.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelProduct\043133.def"
deleted file mode 100644
index 213e535..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelProduct\043133.def"
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-Component PanelProduct id:PanelProduct_133
-{
-  #keys: '[415136.0.1277502011]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ddslProduct
-    {
-      #keys: '[415136.0.1277502012]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        FixedSize: false
-        Label: 'Product'
-        Sorting: 'none'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    FixedSize: true
-    Taborder: 1
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelProduct.def
similarity index 75%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelProduct.def
index 5c5c1e4..c8ea5a5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelProduct.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelProduct
 {
-  #keys: '[415136.0.1252790306]'
+  #keys: '[415136.0.1307935280]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddslProduct
     {
-      #keys: '[415136.0.1252790307]'
+      #keys: '[415136.0.1307935281]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -20,7 +20,6 @@
   ]
   Properties:
   [
-    FixedSize: true
-    Taborder: 2
+    Taborder: 1
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelRowSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelRowSearch.def
new file mode 100644
index 0000000..5a3d0e5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelRowSearch.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+Component PanelRowSearch
+{
+  #keys: '[415136.0.1307935211]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelUnit_925
+    #child: PanelProduct
+    #child: PanelOperation
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelTimeUnit\043805.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelTimeUnit\043805.def"
deleted file mode 100644
index 2e212a8..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelTimeUnit\043805.def"
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-Component PanelTimeUnit id:PanelTimeUnit_805
-{
-  #keys: '[415136.0.1277502016]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component RadioButtonGroupUseForTimeUnit
-    {
-      #keys: '[415136.0.1277502017]'
-      BaseType: 'WebRadioButtonGroup'
-      Properties:
-      [
-        ButtonLabels: 'Day;Week;Month'
-        ButtonValues: 'Day;Week;Month'
-        Orientation: 'horizontal'
-        Taborder: 0
-        Title: 'Periods'
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 3
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelTimeUnit.def
similarity index 82%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelTimeUnit.def
index ab3b485..d15670d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelTimeUnit.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelTimeUnit
 {
-  #keys: '[415136.0.1252790301]'
+  #keys: '[415136.0.1307935364]'
   BaseType: 'WebPanel'
   Children:
   [
     Component RadioButtonGroupUseForTimeUnit
     {
-      #keys: '[415136.0.1252790302]'
+      #keys: '[415136.0.1307935365]'
       BaseType: 'WebRadioButtonGroup'
       Properties:
       [
@@ -21,6 +21,6 @@
   ]
   Properties:
   [
-    Taborder: 4
+    Taborder: 1
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelUnit.def "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelUnit\043925.def"
similarity index 70%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelUnit.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelUnit\043925.def"
index df6d463..3282220 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelUnit.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Component_PanelUnit\043925.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelUnit
+Component PanelUnit id:PanelUnit_925
 {
-  #keys: '[415136.0.1277502022]'
+  #keys: '[415136.0.1307935253]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddslUnit
     {
-      #keys: '[415136.0.1277502023]'
+      #keys: '[415136.0.1307935254]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -18,7 +18,6 @@
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 0
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def
similarity index 92%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def
index 9a2f3b3..d613ac6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelOperation_ButtonSearch_OnClick.def
@@ -2,7 +2,7 @@
 #parent: PanelOperation/ButtonSearch
 Response OnClick () id:Response_PanelOperation_ButtonSearch_OnClick
 {
-  #keys: '[415136.0.1294002009]'
+  #keys: '[415136.0.1307935387]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebButton_OnClick'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorEnd_OnChanged.def
similarity index 79%
copy from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorEnd_OnChanged.def
index 6d722a4..e68cf28 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorEnd_OnChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelPeriod/DateSelectorEnd
-Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
+#parent: PanelPeriod_71/DateSelectorEnd
+Response OnChanged () id:Response_PanelPeriod_71_DateSelectorEnd_OnChanged
 {
-  #keys: '[415136.0.1277502006]'
+  #keys: '[415136.0.1307935334]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorStart_OnChanged.def
similarity index 79%
copy from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorStart_OnChanged.def
index 6344643..6adb711 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_71_DateSelectorStart_OnChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelPeriod/DateSelectorStart
-Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
+#parent: PanelPeriod_71/DateSelectorStart
+Response OnChanged () id:Response_PanelPeriod_71_DateSelectorStart_OnChanged
 {
-  #keys: '[415136.0.1199302052]'
+  #keys: '[415136.0.1307935335]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorStart_OnChanged.def
deleted file mode 100644
index 2c1808f..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorStart_OnChanged.def
+++ /dev/null
@@ -1,24 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelPeriod/DateSelectorStart
-Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
-{
-  #keys: '[415136.0.1277502007]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
-  QuillAction
-  {
-    Body:
-    [*
-      //鏃ユ湡鏀瑰彉鍚庡埛鏂版樉绀�
-      if( this.Date() > DateSelectorEnd.Date() ){
-        this.HintError( 'The start date cannot be later than the end date!' );
-      }else{
-        if( dhSearch.Data().StartDate() <> this.Date() ){
-          dhSearch.Data().StartDate( this.Date() );
-      //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
-        }
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def
similarity index 95%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def
index f417c53..d7ea4ac 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnCreated.def
@@ -2,7 +2,7 @@
 #parent: PanelProduct/ddslProduct
 Response OnCreated () id:Response_PanelProduct_ddslProduct_OnCreated
 {
-  #keys: '[415136.0.1252790285]'
+  #keys: '[415136.0.1307935279]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
similarity index 94%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
index 95d20d3..da565ee 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_ddslProduct_OnSelectionChanged.def
@@ -2,7 +2,7 @@
 #parent: PanelProduct/ddslProduct
 Response OnSelectionChanged () id:Response_PanelProduct_ddslProduct_OnSelectionChanged
 {
-  #keys: '[415136.0.1252790284]'
+  #keys: '[415136.0.1307935278]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnCreated.def
deleted file mode 100644
index 9e663e5..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnCreated.def
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelTimeUnit_805/RadioButtonGroupUseForTimeUnit
-Response OnCreated () id:Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnCreated
-{
-  #keys: '[415136.0.1277502004]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  QuillAction
-  {
-    Body:
-    [*
-      this.ButtonValues( Translations::MP_GlobalParameters_Day() + ';' + Translations::MP_GlobalParameters_Week() + ';' + Translations::MP_GlobalParameters_Month() );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
similarity index 94%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
index 533f7a1..90508a8 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -2,7 +2,7 @@
 #parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
 Response OnChanged () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged
 {
-  #keys: '[415136.0.1252790289]'
+  #keys: '[415136.0.1307935363]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
similarity index 93%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
index c047bee..4dc7684 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated.def
@@ -2,7 +2,7 @@
 #parent: PanelTimeUnit/RadioButtonGroupUseForTimeUnit
 Response OnCreated () id:Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnCreated
 {
-  #keys: '[415136.0.1252790288]'
+  #keys: '[415136.0.1307935362]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnCreated.def
similarity index 75%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnCreated.def
index 6f1016c..80dd725 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnCreated.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelUnit_844/ddslUnit
-Response OnCreated () id:Response_PanelUnit_844_ddslUnit_OnCreated
+#parent: PanelUnit_925/ddslUnit
+Response OnCreated () id:Response_PanelUnit_925_ddslUnit_OnCreated
 {
-  #keys: '[415136.0.1252790293]'
+  #keys: '[415136.0.1307935252]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnSelectionChanged.def
similarity index 77%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnSelectionChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnSelectionChanged.def
index 4757452..a710562 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_844_ddslUnit_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_925_ddslUnit_OnSelectionChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelUnit_844/ddslUnit
-Response OnSelectionChanged () id:Response_PanelUnit_844_ddslUnit_OnSelectionChanged
+#parent: PanelUnit_925/ddslUnit
+Response OnSelectionChanged () id:Response_PanelUnit_925_ddslUnit_OnSelectionChanged
 {
-  #keys: '[415136.0.1252790292]'
+  #keys: '[415136.0.1307935251]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
deleted file mode 100644
index 7f50829..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelUnit/ddslUnit
-Response OnCreated () id:Response_PanelUnit_ddslUnit_OnCreated
-{
-  #keys: '[415136.0.1277502001]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  QuillAction
-  {
-    Body:
-    [*
-      this.Strings( FinancialProductionReport::GetDefaultAllUnit().Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelColumnSaerch.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelColumnSaerch.def
new file mode 100644
index 0000000..838adc6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelColumnSaerch.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelColumnSaerch
+{
+  #keys: '[415136.0.1306620738]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelPeriod
+    #child: PanelTimeUnit_720
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelHeader.def
index d89266b..a96cd6a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelHeader.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelHeader.def
@@ -5,17 +5,12 @@
   BaseType: 'WebPanel'
   Children:
   [
-    #child: PanelProduct
-    #child: PanelPeriod_858
-    #child: PanelTimeUnit
-    #child: PanelOperation
-    #child: PanelProductLine_603
-    #child: PanelUnit_844
+    #child: PanelRowSearch
+    #child: PanelColumnSaerch
   ]
   Properties:
   [
     FixedSize: true
-    Orientation: 'horizontal'
     Taborder: 2
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation\043679.def"
similarity index 63%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def
copy to "_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation\043679.def"
index b681559..e97022e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelOperation\043679.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelOperation
+Component PanelOperation id:PanelOperation_679
 {
-  #keys: '[415136.0.1252790299]'
+  #keys: '[415136.0.1306620726]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ButtonSearch
     {
-      #keys: '[415136.0.1252790300]'
+      #keys: '[415136.0.1306620727]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -18,6 +18,6 @@
   ]
   Properties:
   [
-    Taborder: 5
+    Taborder: 3
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod.def
similarity index 79%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod.def
index 346d79a..dda4554 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelPeriod.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelPeriod.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelPeriod
 {
-  #keys: '[415136.0.1199302080]'
+  #keys: '[415136.0.1306620778]'
   BaseType: 'WebPanel'
   Children:
   [
     Component DateSelectorStart
     {
-      #keys: '[415136.0.1199302081]'
+      #keys: '[415136.0.1306620779]'
       BaseType: 'WebDateSelector'
       Properties:
       [
@@ -17,7 +17,7 @@
     }
     Component DateSelectorEnd
     {
-      #keys: '[415136.0.1199302082]'
+      #keys: '[415136.0.1306620780]'
       BaseType: 'WebDateSelector'
       Properties:
       [
@@ -30,6 +30,6 @@
   Properties:
   [
     Orientation: 'horizontal'
-    Taborder: 3
+    Taborder: 0
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct\043780.def"
similarity index 73%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def
copy to "_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct\043780.def"
index 5c5c1e4..02b7129 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProduct\043780.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelProduct
+Component PanelProduct id:PanelProduct_780
 {
-  #keys: '[415136.0.1252790306]'
+  #keys: '[415136.0.1306620702]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddslProduct
     {
-      #keys: '[415136.0.1252790307]'
+      #keys: '[415136.0.1306620703]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -20,7 +20,6 @@
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 2
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProductLine\043603.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProductLine\043603.def"
deleted file mode 100644
index 952a262..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProductLine\043603.def"
+++ /dev/null
@@ -1,25 +0,0 @@
-Quintiq file version 2.0
-Component PanelProductLine id:PanelProductLine_603
-{
-  #keys: '[415136.0.1252790297]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ddsProductLine
-    {
-      #keys: '[415136.0.1252790298]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: 'Product line'
-        Sorting: 'none'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    FixedSize: true
-    Taborder: 1
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProductLine.def
similarity index 68%
copy from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProductLine.def
index 33c12ae..fb4edc1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelProductLine.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelProductLine.def
@@ -1,24 +1,24 @@
 Quintiq file version 2.0
 Component PanelProductLine
 {
-  #keys: '[415136.0.1199302072]'
+  #keys: '[415136.0.1306620675]'
   BaseType: 'WebPanel'
   Children:
   [
-    Component ddslProductLine
+    Component ddsProductLine
     {
-      #keys: '[415136.0.1199302073]'
+      #keys: '[415136.0.1306620676]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
         Label: 'Product line'
+        Sorting: 'none'
         Taborder: 0
       ]
     }
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 1
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelRowSearch.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelRowSearch.def
new file mode 100644
index 0000000..5d7cd85
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelRowSearch.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component PanelRowSearch
+{
+  #keys: '[415136.0.1306620605]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: PanelUnit
+    #child: PanelProductLine
+    #child: PanelProduct_780
+    #child: PanelOperation_679
+  ]
+  Properties:
+  [
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit\043720.def"
similarity index 74%
copy from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def
copy to "_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit\043720.def"
index ab3b485..b2391b0 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelTimeUnit\043720.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelTimeUnit
+Component PanelTimeUnit id:PanelTimeUnit_720
 {
-  #keys: '[415136.0.1252790301]'
+  #keys: '[415136.0.1306620806]'
   BaseType: 'WebPanel'
   Children:
   [
     Component RadioButtonGroupUseForTimeUnit
     {
-      #keys: '[415136.0.1252790302]'
+      #keys: '[415136.0.1306620807]'
       BaseType: 'WebRadioButtonGroup'
       Properties:
       [
@@ -21,6 +21,6 @@
   ]
   Properties:
   [
-    Taborder: 4
+    Taborder: 1
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelUnit\043844.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelUnit\043844.def"
deleted file mode 100644
index 9539dc9..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelUnit\043844.def"
+++ /dev/null
@@ -1,24 +0,0 @@
-Quintiq file version 2.0
-Component PanelUnit id:PanelUnit_844
-{
-  #keys: '[415136.0.1252790295]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ddslUnit
-    {
-      #keys: '[415136.0.1252790296]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: 'Unit'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    FixedSize: true
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelUnit.def
similarity index 75%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelUnit.def
index b1aa566..f7ae386 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_PanelUnit.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_PanelUnit.def
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
 Component PanelUnit
 {
-  #keys: '[415136.0.1199302066]'
+  #keys: '[415136.0.1306620648]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddslUnit
     {
-      #keys: '[415136.0.1199302067]'
+      #keys: '[415136.0.1306620649]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -18,7 +18,6 @@
   ]
   Properties:
   [
-    FixedSize: true
     Taborder: 0
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelOperation_414_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_679_ButtonSearch_OnClick.def
similarity index 68%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelOperation_414_ButtonSearch_OnClick.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_679_ButtonSearch_OnClick.def
index ff0e907..563457f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelOperation_414_ButtonSearch_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelOperation_679_ButtonSearch_OnClick.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelOperation_414/ButtonSearch
-Response OnClick () id:Response_PanelOperation_414_ButtonSearch_OnClick
+#parent: PanelOperation_679/ButtonSearch
+Response OnClick () id:Response_PanelOperation_679_ButtonSearch_OnClick
 {
-  #keys: '[415136.0.1285202243]'
+  #keys: '[415136.0.1306620725]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebButton_OnClick'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
similarity index 95%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
index 6d722a4..195eb37 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -2,7 +2,7 @@
 #parent: PanelPeriod/DateSelectorEnd
 Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
 {
-  #keys: '[415136.0.1277502006]'
+  #keys: '[415136.0.1306620776]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorStart_OnChanged.def
similarity index 95%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorStart_OnChanged.def
index 6344643..aa01c40 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelPeriod_DateSelectorStart_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -2,7 +2,7 @@
 #parent: PanelPeriod/DateSelectorStart
 Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
 {
-  #keys: '[415136.0.1199302052]'
+  #keys: '[415136.0.1306620777]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_603_ddsProductLine_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_603_ddsProductLine_OnCreated.def
deleted file mode 100644
index ad2a4c4..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_603_ddsProductLine_OnCreated.def
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelProductLine_603/ddsProductLine
-Response OnCreated () id:Response_PanelProductLine_603_ddsProductLine_OnCreated
-{
-  #keys: '[415136.0.1252790291]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  QuillAction
-  {
-    Body:
-    [*
-      values := selectuniquevalues( InterfaceDataset, AssemblyOnlinePlanVersion.Row, row, true, row.ProductionLine() );
-      
-      valueString := values.Concatenate( ";" );
-      valueString := selectuniquevalues( valueString.Tokenize( ";" ), Elements, tempS, true, tempS ).Concatenate( ";" );
-      
-      valueString := "<All>" + ifexpr( valueString = "", "", ";" ) + valueString;
-      
-      this.Strings( valueString );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnCreated.def
similarity index 79%
copy from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnCreated.def
copy to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnCreated.def
index b7d7008..e2787a7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelProductLine_ddslProductLine_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnCreated.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelProductLine/ddslProductLine
-Response OnCreated () id:Response_PanelProductLine_ddslProductLine_OnCreated
+#parent: PanelProductLine/ddsProductLine
+Response OnCreated () id:Response_PanelProductLine_ddsProductLine_OnCreated
 {
-  #keys: '[415136.0.1199302058]'
+  #keys: '[415136.0.1306620674]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_603_ddsProductLine_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnSelectionChanged.def
similarity index 71%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_603_ddsProductLine_OnSelectionChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnSelectionChanged.def
index 5630304..e59635c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_603_ddsProductLine_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProductLine_ddsProductLine_OnSelectionChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelProductLine_603/ddsProductLine
-Response OnSelectionChanged () id:Response_PanelProductLine_603_ddsProductLine_OnSelectionChanged
+#parent: PanelProductLine/ddsProductLine
+Response OnSelectionChanged () id:Response_PanelProductLine_ddsProductLine_OnSelectionChanged
 {
-  #keys: '[415136.0.1252790290]'
+  #keys: '[415136.0.1306620673]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_133_ddslProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnCreated.def
similarity index 81%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_133_ddslProduct_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnCreated.def
index 13227ef..012c4c9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_133_ddslProduct_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnCreated.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelProduct_133/ddslProduct
-Response OnCreated () id:Response_PanelProduct_133_ddslProduct_OnCreated
+#parent: PanelProduct_780/ddslProduct
+Response OnCreated () id:Response_PanelProduct_780_ddslProduct_OnCreated
 {
-  #keys: '[415136.0.1277502009]'
+  #keys: '[415136.0.1306620701]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_133_ddslProduct_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnSelectionChanged.def
similarity index 76%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_133_ddslProduct_OnSelectionChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnSelectionChanged.def
index dd4d1b6..e50636e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelProduct_133_ddslProduct_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelProduct_780_ddslProduct_OnSelectionChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelProduct_133/ddslProduct
-Response OnSelectionChanged () id:Response_PanelProduct_133_ddslProduct_OnSelectionChanged
+#parent: PanelProduct_780/ddslProduct
+Response OnSelectionChanged () id:Response_PanelProduct_780_ddslProduct_OnSelectionChanged
 {
-  #keys: '[415136.0.1277502008]'
+  #keys: '[415136.0.1306620700]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnChanged.def
similarity index 74%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnChanged.def
index ca64cd0..a053358 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelTimeUnit_805/RadioButtonGroupUseForTimeUnit
-Response OnChanged () id:Response_PanelTimeUnit_805_RadioButtonGroupUseForTimeUnit_OnChanged
+#parent: PanelTimeUnit_720/RadioButtonGroupUseForTimeUnit
+Response OnChanged () id:Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnChanged
 {
-  #keys: '[415136.0.1277502005]'
+  #keys: '[415136.0.1306620805]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnCreated.def
similarity index 70%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnCreated.def
index 10cf9b7..77605e9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnCreated.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelTimeUnit_234/RadioButtonGroupUseForTimeUnit
-Response OnCreated () id:Response_PanelTimeUnit_234_RadioButtonGroupUseForTimeUnit_OnCreated
+#parent: PanelTimeUnit_720/RadioButtonGroupUseForTimeUnit
+Response OnCreated () id:Response_PanelTimeUnit_720_RadioButtonGroupUseForTimeUnit_OnCreated
 {
-  #keys: '[415136.0.1199302055]'
+  #keys: '[415136.0.1306620804]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
similarity index 93%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
index 039803f..9397c84 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Response_PanelUnit_ddslUnit_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnCreated.def
@@ -2,7 +2,7 @@
 #parent: PanelUnit/ddslUnit
 Response OnCreated () id:Response_PanelUnit_ddslUnit_OnCreated
 {
-  #keys: '[415136.0.1199302062]'
+  #keys: '[415136.0.1306620647]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
similarity index 93%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
index d90934c..b29e3d6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPlanArchive/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -2,7 +2,7 @@
 #parent: PanelUnit/ddslUnit
 Response OnSelectionChanged () id:Response_PanelUnit_ddslUnit_OnSelectionChanged
 {
-  #keys: '[415136.0.1277502000]'
+  #keys: '[415136.0.1306620646]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged'
   QuillAction
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter.def
index 8ebb830..43e892e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter.def
@@ -5,36 +5,6 @@
   BaseType: 'WebPanel'
   Children:
   [
-    Component ddslGeneration
-    {
-      #keys: '[414996.1.211222325]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: 'Generation'
-        Taborder: 0
-      ]
-    }
-    Component ddslMQBMLB
-    {
-      #keys: '[414996.1.211222326]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: 'MQB/MLB'
-        Taborder: 1
-      ]
-    }
-    Component ddslPower
-    {
-      #keys: '[414996.1.211222327]'
-      BaseType: 'WebDropDownStringList'
-      Properties:
-      [
-        Label: '鍔熺巼'
-        Taborder: 2
-      ]
-    }
     Component dsStartDate
     {
       #keys: '[414996.1.211222328]'
@@ -42,7 +12,7 @@
       Properties:
       [
         Label: 'Start Date'
-        Taborder: 3
+        Taborder: 0
       ]
     }
     Component dsEndDate
@@ -53,17 +23,7 @@
       [
         Date: 9999-12-31
         Label: 'End Date'
-        Taborder: 5
-      ]
-    }
-    Component ButtonFilter458
-    {
-      #keys: '[414996.1.211222330]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Label: '杩囨护'
-        Taborder: 7
+        Taborder: 2
       ]
     }
     Component dhStartDate
@@ -73,7 +33,7 @@
       Databinding: 'Date*'
       Properties:
       [
-        Taborder: 4
+        Taborder: 1
       ]
     }
     Component dhEndDate
@@ -83,17 +43,7 @@
       Databinding: 'Date*'
       Properties:
       [
-        Taborder: 6
-      ]
-    }
-    Component ButtonClearFilter
-    {
-      #keys: '[414996.1.211222333]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Label: 'Clear'
-        Taborder: 8
+        Taborder: 3
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ButtonClearFilter_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ButtonClearFilter_OnClick.def
deleted file mode 100644
index 127be2b..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ButtonClearFilter_OnClick.def
+++ /dev/null
@@ -1,19 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter/ButtonClearFilter
-Response OnClick () id:Response_PanelFilter_ButtonClearFilter_OnClick
-{
-  #keys: '[414996.1.211222311]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  QuillAction
-  {
-    Body:
-    [*
-      ddslGeneration.Text( "<All>" );
-      ddslMQBMLB.Text( "<All>" );
-      ddslPower.Text( "<All>" )
-      dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ButtonFilter458_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ButtonFilter458_OnClick.def
deleted file mode 100644
index 5818724..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ButtonFilter458_OnClick.def
+++ /dev/null
@@ -1,26 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter/ButtonFilter458
-Response OnClick () id:Response_PanelFilter_ButtonFilter458_OnClick
-{
-  #keys: '[414996.1.211222314]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      products := dhFinelProducts.Data().Copy();
-      if( ddslGeneration.Text() <> "<All>" ){
-        products := selectset( products,Elements,element,element.Generation() = ddslGeneration.Text());
-      }
-      if( ddslMQBMLB.Text() <> "<All>" ){
-        products := selectset( products,Elements,element,element.MQBMLB() = ddslMQBMLB.Text());
-      }
-      if( ddslPower.Text() <> "<All>" ){
-        products := selectset( products,Elements,element,element.Power() = ddslPower.Text());
-      }
-      dhFinelProducts.Data( &products );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslGeneration_OnCreated.def
deleted file mode 100644
index 4278438..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslGeneration_OnCreated.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter/ddslGeneration
-Response OnCreated () id:Response_PanelFilter_ddslGeneration_OnCreated
-{
-  #keys: '[414996.1.211222319]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Generation() );
-      
-      res := strings.Concatenate( ";" );
-      
-      this.Strings( "<All>;" + res );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def
deleted file mode 100644
index 58a2b61..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslMQBMLB_OnCreated.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter/ddslMQBMLB
-Response OnCreated () id:Response_PanelFilter_ddslMQBMLB_OnCreated
-{
-  #keys: '[414996.1.211222318]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.MQBMLB() );
-      
-      res := strings.Concatenate( ";" );
-      
-      this.Strings( "<All>;" + res );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslPower_OnCreated.def
deleted file mode 100644
index 74838c2..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_ddslPower_OnCreated.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelFilter/ddslPower
-Response OnCreated () id:Response_PanelFilter_ddslPower_OnCreated
-{
-  #keys: '[414996.1.211222317]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Power() );
-      
-      res := strings.Concatenate( ";" );
-      
-      this.Strings( "<All>;" + res );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/ArchivePackagingPlan.vw b/_Main/UI/MacroPlannerWebApp/Views/ArchivePackagingPlan.vw
new file mode 100644
index 0000000..199cc0b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/ArchivePackagingPlan.vw
@@ -0,0 +1,289 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormArchivePackagingPlan
+      {
+        title: 'QMacroPlanner::FormArchivePackagingPlan'
+        shown: true
+        componentID: 'QMacroPlanner::FormArchivePackagingPlan'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 25
+          columnPosition: 1
+          columnSpan: 11
+        }
+        components
+        {
+          FormArchivePackagingPlan_PanelArchivePackagingPlan
+          {
+            sizeRatio: 1
+          }
+          FormArchivePackagingPlan_PanelArchivePackagingPlan922
+          {
+            sizeRatio: 1
+          }
+          FormArchivePackagingPlan_MatrixEditorArchivePackagingPlan
+          {
+            gridColor: '#c4c4c4'
+            totalHeaderWidth: 200
+            attributeHeaderWidthRatio: 0.6
+            nameHeaderWidthRatio: 0.4
+            columnWidth: 100
+            horizontalGrid: true
+            verticalGrid: true
+            backendState
+            {
+              componentId: 'QMacroPlanner::FormArchivePackagingPlan.MatrixEditorArchivePackagingPlan'
+              state
+              {
+                cells
+                {
+                  attributes
+                  {
+                    attribute_CC_PackagingInventory
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 0
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'CC_PackagingInventory'
+                    }
+                    attribute_CC_UnpackagedInventory
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 1
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'CC_UnpackagedInventory'
+                    }
+                    attribute_EndingInventory
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 2
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'EndingInventory'
+                    }
+                    attribute_InitialPackagingInventory
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 3
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'InitialPackagingInventory'
+                    }
+                    attribute_NetDemand
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 4
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'NetDemand'
+                    }
+                    attribute_NewSupply
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 5
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'NewSupply'
+                    }
+                    attribute_Out
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 6
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Out'
+                    }
+                    attribute_Package
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 7
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Package'
+                    }
+                    attribute_PackagingInventory
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 8
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'PackagingInventory'
+                    }
+                    attribute_TransferIn
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 9
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'TransferIn'
+                    }
+                    attribute_UnpackagedInventory
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 10
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'UnpackagedInventory'
+                    }
+                    attribute_Unpacking
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 11
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Unpacking'
+                    }
+                  }
+                }
+                columns
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'StartDate'"
+                  }
+                }
+                rows
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'ProductID'"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      form_FormOptimizerPuzzles
+      {
+        title: 'Optimizer Puzzles'
+        shown: false
+        componentID: 'FormOptimizerPuzzles'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormOptimizerPuzzles_ListOptimizerPuzzles
+          {
+          }
+          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: 'Name'
+              index: 1
+              subtotals: ''
+              width: 109
+            }
+            column_Description
+            {
+              columnId: 'Description'
+              dataPath: 'Description'
+              dataType: 'string'
+              title: 'Description'
+              index: 2
+              subtotals: ''
+              width: 207
+            }
+          }
+        }
+      }
+      form_FormKPI
+      {
+        title: 'KPI Dashboard'
+        shown: true
+        componentID: 'FormKPI'
+        layout
+        {
+          mode: 'dockright'
+          index: 1
+        }
+        components
+        {
+          FormKPI_PanelKPI
+          {
+            sizeRatio: 1
+            activeChild: 'PanelKPISelection'
+          }
+          FormKPI_PanelKPIDashboard
+          {
+            sizeRatio: 1
+          }
+          FormKPI_PanelKPISelection
+          {
+            sizeRatio: 1
+          }
+          FormKPI_ListKPISelection
+          {
+            QuillViewData
+            {
+              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+            }
+          }
+          FormKPI_DataSetLevelKPISelection
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: 'Name'
+              index: 1
+              subtotals: ''
+              width: 200
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    index: 0
+    image: 'PRODUCT'
+    page: ''
+    group: ''
+    description: ''
+  }
+  formatversion: 2
+  id: 'ArchivePackagingPlan'
+  name: 'ArchivePackagingPlan'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/ArchiveTransferPlan.vw b/_Main/UI/MacroPlannerWebApp/Views/ArchiveTransferPlan.vw
new file mode 100644
index 0000000..681f1ee
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/ArchiveTransferPlan.vw
@@ -0,0 +1,201 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormArchiveTransferPlan
+      {
+        title: 'QMacroPlanner::FormArchiveTransferPlan'
+        shown: true
+        componentID: 'QMacroPlanner::FormArchiveTransferPlan'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 24
+          columnPosition: 1
+          columnSpan: 10
+        }
+        components
+        {
+          FormArchiveTransferPlan_PanelArchiveTransferPlan
+          {
+            sizeRatio: 1
+          }
+          FormArchiveTransferPlan_PanelArchiveTransferPlan515
+          {
+            sizeRatio: 1
+          }
+          FormArchiveTransferPlan_MatrixEditorArchiveTransferPlan
+          {
+            gridColor: '#c4c4c4'
+            totalHeaderWidth: 200
+            attributeHeaderWidthRatio: 0.6
+            nameHeaderWidthRatio: 0.4
+            columnWidth: 100
+            horizontalGrid: true
+            verticalGrid: true
+            backendState
+            {
+              componentId: 'QMacroPlanner::FormArchiveTransferPlan.MatrixEditorArchiveTransferPlan'
+              state
+              {
+                cells
+                {
+                  attributes
+                  {
+                    attribute_Value
+                    {
+                      type: 'MatrixEditorWebApiCellDataModelInterest'
+                      index: 0
+                      rowsubtotal: ''
+                      columnsubtotal: ''
+                      attribute: 'Value'
+                    }
+                  }
+                }
+                columns
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'ColumnDate'"
+                  }
+                }
+                rows
+                {
+                  sorting
+                  {
+                    criteria: "datamember:'SourceStockpoingPointID';datamember:'TargetStockpoingPointID';datamember:'ProductID'"
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      form_FormOptimizerPuzzles
+      {
+        title: 'Optimizer Puzzles'
+        shown: false
+        componentID: 'FormOptimizerPuzzles'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormOptimizerPuzzles_ListOptimizerPuzzles
+          {
+          }
+          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: 'Name'
+              index: 1
+              subtotals: ''
+              width: 109
+            }
+            column_Description
+            {
+              columnId: 'Description'
+              dataPath: 'Description'
+              dataType: 'string'
+              title: 'Description'
+              index: 2
+              subtotals: ''
+              width: 207
+            }
+          }
+        }
+      }
+      form_FormKPI
+      {
+        title: 'KPI Dashboard'
+        shown: true
+        componentID: 'FormKPI'
+        layout
+        {
+          mode: 'dockright'
+          index: 1
+        }
+        components
+        {
+          FormKPI_PanelKPI
+          {
+            sizeRatio: 1
+            activeChild: 'PanelKPISelection'
+          }
+          FormKPI_PanelKPIDashboard
+          {
+            sizeRatio: 1
+          }
+          FormKPI_PanelKPISelection
+          {
+            sizeRatio: 1
+          }
+          FormKPI_ListKPISelection
+          {
+            QuillViewData
+            {
+              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+            }
+          }
+          FormKPI_DataSetLevelKPISelection
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: 'Name'
+              index: 1
+              subtotals: ''
+              width: 200
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    image: 'TRUCK2_BLUE'
+    page: ''
+    group: ''
+    index: 0
+    description: ''
+  }
+  formatversion: 2
+  id: 'ArchiveTransferPlan'
+  name: 'ArchiveTransferPlan'
+  isglobal: false
+  isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw b/_Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw
index 46fb0ea..7c3129d 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/DispatchShiftSchedulingInformation.vw
@@ -13,9 +13,9 @@
         {
           mode: 'open'
           rowPosition: 1
-          rowSpan: 6
-          columnPosition: 6
-          columnSpan: 4
+          rowSpan: 26
+          columnPosition: 1
+          columnSpan: 11
         }
         components
         {
@@ -494,10 +494,10 @@
     userconfigurableinformation
     {
     }
+    index: 0
     image: 'SKIN_TIGER'
     page: ''
     group: ''
-    index: 0
     description: ''
   }
   formatversion: 2

--
Gitblit v1.9.3