From cc75dba048cbaeb44066ed21021d901f9a4f6477 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期三, 23 十月 2024 17:53:34 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg

---
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_Package.qbl                                                          |    8 
 _Main/BL/Type_ArchivePackagingPlanCell/_ROOT_Type_ArchivePackagingPlanCell.qbl                                        |    9 
 _Main/BL/Type_ArchivePackagingPlanRow/Function_CalcFactoryAbbreviation.qbl                                            |   13 +
 _Main/BL/Type_ArchivePackagingPlanRow/Attribute_ProductID.qbl                                                         |    7 
 _Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_ProductID.qbl                                                      |    6 
 _Main/BL/Type_ArchivePackagingPlanRow/_ROOT_Type_ArchivePackagingPlanRow.qbl                                          |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def                          |   67 -----
 _Main/BL/Relations/Relation_ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColu.qbl                   |   23 ++
 _Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Category.qbl                                                       |    6 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl                                           |    8 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_TransferIn.qbl                                                       |    8 
 _Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPl.qbl                   |   23 ++
 _Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Name.qbl                                                           |    6 
 _Main/BL/Type_ArchivePackagingPlanRow/Attribute_FactoryAbbreviation.qbl                                               |    7 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_Out.qbl                                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon510_rbgTimeUnit_OnUserChanged.def |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon763.def                          |   63 +++++
 _Main/BL/Type_ArchivePackagingPlanRow/Attribute_Name.qbl                                                              |    7 
 _Main/BL/Type_ArchivePackagingPlanRow/Attribute_StockingPointID.qbl                                                   |    7 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_PackagingInventory.qbl                                            |    8 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_EndingInventory.qbl                                                  |    8 
 _Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl                                                                    |    2 
 _Main/BL/Type_ArchivePackagingPlanColumn/Attribute_StartDate.qbl                                                      |    7 
 _Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Factory.qbl                                                        |    6 
 _Main/BL/Type_WholeShift/Method_PostProcessing2.qbl                                                                   |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bExport_OnClick.def           |    6 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_PackagingInventory.qbl                                               |    8 
 _Main/BL/Type_ArchivePackagingPlanRow/Attribute_Category.qbl                                                          |    8 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_InitialPackagingInventory.qbl                                        |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bComparison_OnClick.def       |    6 
 _Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagin.qbl                   |   23 ++
 _Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_StockingPointID.qbl                                                |    6 
 _Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport#1.qbl                                   |    4 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_NetDemand.qbl                                                        |    8 
 _Main/BL/Relations/Relation_ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow.qbl                       |   23 ++
 _Main/BL/Type_ArchivePackagingPlanColumn/_ROOT_Type_ArchivePackagingPlanColumn.qbl                                    |    9 
 _Main/BL/Type_ArchivePackagingPlanRow/Method_FilterProduct.qbl                                                        |   14 +
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_Unpacking.qbl                                                        |    8 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_NewSupply.qbl                                                        |    8 
 _Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl                                          |    9 
 _Main/BL/Type_ArchivePackagingPlanRow/Function_CalcName.qbl                                                           |   13 +
 _Main/BL/Type_WholeShift/Method_MobileCycleTask.qbl                                                                   |    4 
 _Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_FactoryAbbreviation.qbl                                            |    6 
 _Main/BL/Type_ArchivePackagingPlanRow/Attribute_Factory.qbl                                                           |    8 
 _Main/BL/Type_ArchivePackagingPlanCell/Attribute_UnpackagedInventory.qbl                                              |    8 
 _Main/BL/Type_ArchivePackagingPlanCell/StaticMethod_Archive.qbl                                                       |  113 ++++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon510.def                          |   28 ++
 47 files changed, 572 insertions(+), 81 deletions(-)

diff --git a/_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagin.qbl b/_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagin.qbl
new file mode 100644
index 0000000..bcaa6e3
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagin.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagingPlanColumn_ArchivePackagingPlanCell
+{
+  #keys: '1[414996.1.150965285]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ArchivePackagingPlanColumn
+  {
+    #keys: '3[414996.1.150965287][414996.1.150965286][414996.1.150965288]'
+    Cardinality: '0to1'
+    ObjectDefinition: ArchivePackagingPlanCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide ArchivePackagingPlanCell
+  {
+    #keys: '3[414996.1.150965290][414996.1.150965289][414996.1.150965291]'
+    Cardinality: '1toN'
+    ObjectDefinition: ArchivePackagingPlanColumn
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPl.qbl b/_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPl.qbl
new file mode 100644
index 0000000..a8456de
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPl.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPlanRow_ArchivePackagingPlanCell
+{
+  #keys: '1[414996.1.150965272]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ArchivePackagingPlanRow
+  {
+    #keys: '3[414996.1.150965274][414996.1.150965273][414996.1.150965275]'
+    Cardinality: '0to1'
+    ObjectDefinition: ArchivePackagingPlanCell
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide ArchivePackagingPlanCell
+  {
+    #keys: '3[414996.1.150965277][414996.1.150965276][414996.1.150965278]'
+    Cardinality: '1toN'
+    ObjectDefinition: ArchivePackagingPlanRow
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColu.qbl b/_Main/BL/Relations/Relation_ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColu.qbl
new file mode 100644
index 0000000..f2355e4
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColu.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColumn
+{
+  #keys: '1[414996.1.150965298]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Archive
+  {
+    #keys: '3[414996.1.150965300][414996.1.150965299][414996.1.150965301]'
+    Cardinality: '0to1'
+    ObjectDefinition: ArchivePackagingPlanColumn
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide ArchivePackagingPlanColumn
+  {
+    #keys: '3[414996.1.150965303][414996.1.150965302][414996.1.150965304]'
+    Cardinality: '1toN'
+    ObjectDefinition: Archive
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow.qbl b/_Main/BL/Relations/Relation_ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow.qbl
new file mode 100644
index 0000000..eaf6430
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow
+{
+  #keys: '1[414996.1.150965311]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide Archive
+  {
+    #keys: '3[414996.1.150965313][414996.1.150965312][414996.1.150965314]'
+    Cardinality: '0to1'
+    ObjectDefinition: ArchivePackagingPlanRow
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide ArchivePackagingPlanRow
+  {
+    #keys: '3[414996.1.150965316][414996.1.150965315][414996.1.150965317]'
+    Cardinality: '1toN'
+    ObjectDefinition: Archive
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_PackagingInventory.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_PackagingInventory.qbl
new file mode 100644
index 0000000..fa23e2b
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_PackagingInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CC_PackagingInventory
+{
+  #keys: '3[414996.1.150965195][414996.1.150965194][414996.1.150965196]'
+  Description: '闀挎槬宸ュ巶鍖呰搴撳瓨'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl
new file mode 100644
index 0000000..fb39d7e
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CC_UnpackagedInventory
+{
+  #keys: '3[414996.1.150965198][414996.1.150965197][414996.1.150965199]'
+  Description: '闀挎槬宸ュ巶闈炲寘瑁呭簱瀛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_EndingInventory.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_EndingInventory.qbl
new file mode 100644
index 0000000..2224bb8
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_EndingInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndingInventory
+{
+  #keys: '3[414996.1.150965201][414996.1.150965200][414996.1.150965202]'
+  Description: '鏈熸湯搴撳瓨'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_InitialPackagingInventory.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_InitialPackagingInventory.qbl
new file mode 100644
index 0000000..804a801
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_InitialPackagingInventory.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InitialPackagingInventory
+{
+  #keys: '3[414996.1.150965204][414996.1.150965203][414996.1.150965205]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NetDemand.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NetDemand.qbl
new file mode 100644
index 0000000..5eb582f
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NetDemand.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NetDemand
+{
+  #keys: '3[414996.1.150965207][414996.1.150965206][414996.1.150965208]'
+  Description: '鍑�闇�姹�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NewSupply.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NewSupply.qbl
new file mode 100644
index 0000000..7e53466
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NewSupply.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NewSupply
+{
+  #keys: '3[414996.1.150965210][414996.1.150965209][414996.1.150965211]'
+  Description: '渚涘簲'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Out.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Out.qbl
new file mode 100644
index 0000000..4aeade0
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Out.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Out
+{
+  #keys: '3[414996.1.150965213][414996.1.150965212][414996.1.150965214]'
+  Description: '璋冨嚭'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Package.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Package.qbl
new file mode 100644
index 0000000..69659ff
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Package.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Package
+{
+  #keys: '3[414996.1.150965216][414996.1.150965215][414996.1.150965217]'
+  Description: '鍖呰'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_PackagingInventory.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_PackagingInventory.qbl
new file mode 100644
index 0000000..16c31d2
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_PackagingInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PackagingInventory
+{
+  #keys: '3[414996.1.150965219][414996.1.150965218][414996.1.150965220]'
+  Description: '鍖呰搴撳瓨'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_TransferIn.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_TransferIn.qbl
new file mode 100644
index 0000000..a0190f9
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_TransferIn.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TransferIn
+{
+  #keys: '3[414996.1.150965225][414996.1.150965224][414996.1.150965226]'
+  Description: '璋冭繘'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_UnpackagedInventory.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_UnpackagedInventory.qbl
new file mode 100644
index 0000000..7f0026a
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_UnpackagedInventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnpackagedInventory
+{
+  #keys: '3[414996.1.150965228][414996.1.150965227][414996.1.150965229]'
+  Description: '闈炲寘瑁呭簱瀛�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Unpacking.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Unpacking.qbl
new file mode 100644
index 0000000..84c6fef
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Unpacking.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unpacking
+{
+  #keys: '3[414996.1.150965231][414996.1.150965230][414996.1.150965232]'
+  Description: '鎷嗗寘'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/StaticMethod_Archive.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/StaticMethod_Archive.qbl
new file mode 100644
index 0000000..995a324
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/StaticMethod_Archive.qbl
@@ -0,0 +1,113 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Archive (
+  const MacroPlan macroPlan,
+  Archive archive
+)
+{
+  TextBody:
+  [*
+    // Akari Oct-23-2024 (created)
+    //packagingPlanCells := selectset( macroPlan,PackagingPlanRow.PackagingPlanCell,cell,true );
+    //packagingPlanCellIndexTree := NamedValueTree::Create();
+    //for( i := 0; i < packagingPlanCells.Size(); i++ ){
+    //  packagingPlanCell := packagingPlanCells.Element( i );
+    //  packagingPlanRow := packagingPlanCell.PackagingPlanRow();
+    //  packagingPlanColumn := packagingPlanCell.PackagingPlanColumn();
+    //  
+    //  packagingPlanRowKey := packagingPlanRow.Category() + packagingPlanRow.Factory() + packagingPlanRow.ProductID() + packagingPlanRow.StockingPointID();
+    //  packagingPlanColumnKey := packagingPlanColumn.StartDate().AsQUILL();
+    //  packagingPlanCellKey := packagingPlanRowKey + packagingPlanColumnKey;
+    //  packagingPlanCellHandle := packagingPlanCellIndexTree.GetHandle( packagingPlanCellKey );
+    //  
+    //  packagingPlanCellIndexTree.Root().AddChild( packagingPlanCellHandle,i );
+    //}
+    
+    archivePackagingPlanCells := selectset( archive,ArchivePackagingPlanRow.ArchivePackagingPlanCell,cell,true );
+    archivePackagingPlanCellIndexTree := NamedValueTree::Create();
+    for( i := 0; i < archivePackagingPlanCells.Size(); i++ ){
+      archivePackagingPlanCell := archivePackagingPlanCells.Element( i );
+      archivePackagingPlanRow := archivePackagingPlanCell.ArchivePackagingPlanRow();
+      archivePackagingPlanColumn := archivePackagingPlanCell.ArchivePackagingPlanColumn();
+      
+      archivePackagingPlanRowKey := archivePackagingPlanRow.Category() + archivePackagingPlanRow.Factory() + archivePackagingPlanRow.ProductID() + archivePackagingPlanRow.StockingPointID();
+      archivePackagingPlanColumnKey := archivePackagingPlanColumn.StartDate().AsQUILL();
+      archivePackagingPlanCellKey := archivePackagingPlanRowKey + archivePackagingPlanColumnKey;
+      archivePackagingPlanCellHandle := archivePackagingPlanCellIndexTree.GetHandle( archivePackagingPlanCellKey );
+      
+      archivePackagingPlanCellIndexTree.Root().AddChild( archivePackagingPlanCellHandle,i );
+    }
+    
+    archivePackagingPlanRows := selectset( archive,ArchivePackagingPlanRow,row,true );
+    archivePackagingPlanRowIndexTree := NamedValueTree::Create();
+    for( i := 0; i < archivePackagingPlanRows.Size(); i++ ){
+      archivePackagingPlanRow := archivePackagingPlanRows.Element( i );
+      archivePackagingPlanRowKey := archivePackagingPlanRow.Category() + archivePackagingPlanRow.Factory() + archivePackagingPlanRow.ProductID() + archivePackagingPlanRow.StockingPointID();
+      archivePackagingPlanRowHandle := archivePackagingPlanRowIndexTree.GetHandle( archivePackagingPlanRowKey );
+      archivePackagingPlanRowIndexTree.Root().AddChild( archivePackagingPlanRowHandle,i );
+    }
+    
+    archivePackagingPlanColumns := selectset( archive,ArchivePackagingPlanColumn,row,true );
+    archivePackagingPlanColumnIndexTree := NamedValueTree::Create();
+    for( i := 0; i < archivePackagingPlanColumns.Size(); i++ ){
+      archivePackagingPlanColumn := archivePackagingPlanColumns.Element( i );
+      archivePackagingPlanColumnKey := archivePackagingPlanColumn.StartDate().AsQUILL();
+      archivePackagingPlanColumnHandle := archivePackagingPlanColumnIndexTree.GetHandle( archivePackagingPlanColumnKey );
+      archivePackagingPlanColumnIndexTree.Root().AddChild( archivePackagingPlanColumnHandle,i );
+    }
+    
+    traverse( macroPlan,PackagingPlanRow.PackagingPlanCell,packagingPlanCell ){
+      packagingPlanRow := packagingPlanCell.PackagingPlanRow();
+      packagingPlanColumn := packagingPlanCell.PackagingPlanColumn();
+      packagingPlanRowKey := packagingPlanRow.Category() + packagingPlanRow.Factory() + packagingPlanRow.ProductID() + packagingPlanRow.StockingPointID();
+      packagingPlanColumnKey := packagingPlanColumn.StartDate().AsQUILL();
+      packagingPlanCellKey := packagingPlanRowKey + packagingPlanColumnKey;
+      
+      archivePackagingPlanCell := null( ArchivePackagingPlanCell );
+      archivePackagingPlanCellHandle := archivePackagingPlanCellIndexTree.GetHandle( packagingPlanCellKey );
+      archivePackagingPlanCellIndex := guard( archivePackagingPlanCellIndexTree.Root().Child( archivePackagingPlanCellHandle ),null( NamedValue ) );
+      if( isnull( archivePackagingPlanCellIndex )){
+        archivePackagingPlanRow := null( ArchivePackagingPlanRow );
+        archivePackagingPlanRowHandle := archivePackagingPlanRowIndexTree.GetHandle( packagingPlanRowKey );
+        archivePackagingPlanRowIndex := guard( archivePackagingPlanRowIndexTree.Root().Child( archivePackagingPlanRowHandle ),null( NamedValue ));
+        if( isnull( archivePackagingPlanRowIndex )){
+          archivePackagingPlanRow := archive.ArchivePackagingPlanRow( relnew,Category := packagingPlanRow.Category(),Factory := packagingPlanRow.Factory(),ProductID := packagingPlanRow.ProductID(),StockingPointID := packagingPlanRow.StockingPointID() );
+          archivePackagingPlanRows.Add( archivePackagingPlanRow );
+          archivePackagingPlanRowIndexTree.Root().AddChild( archivePackagingPlanRowHandle,archivePackagingPlanRows.Size() - 1 );
+        }else{
+          archivePackagingPlanRow := archivePackagingPlanRows.Element( archivePackagingPlanRowIndex.GetValueAsNumber() ); 
+        }
+        
+        archivePackagingPlanColumn := null( ArchivePackagingPlanColumn );
+        archivePackagingPlanColumnHandle := archivePackagingPlanColumnIndexTree.GetHandle( packagingPlanColumnKey );
+        archivePackagingPlanColumnIndex := guard( archivePackagingPlanColumnIndexTree.Root().Child( archivePackagingPlanColumnHandle ),null( NamedValue ));
+        if( isnull( archivePackagingPlanColumnIndex )){
+          archivePackagingPlanColumn := archive.ArchivePackagingPlanColumn( relnew,StartDate := packagingPlanColumn.StartDate() );
+          archivePackagingPlanColumns.Add( archivePackagingPlanColumn );
+          archivePackagingPlanColumnIndexTree.Root().AddChild( archivePackagingPlanColumnHandle,archivePackagingPlanColumns.Size() - 1 );
+        }else{
+          archivePackagingPlanColumn := archivePackagingPlanColumns.Element( archivePackagingPlanColumnIndex.GetValueAsNumber() ); 
+        }
+        
+        archivePackagingPlanCell := archivePackagingPlanRow.ArchivePackagingPlanCell( relnew,ArchivePackagingPlanColumn := archivePackagingPlanColumn );
+        archivePackagingPlanCells.Add( archivePackagingPlanCell );
+        archivePackagingPlanCellIndexTree.Root().AddChild( archivePackagingPlanCellHandle,archivePackagingPlanCells.Size() - 1 );
+      }else{
+        archivePackagingPlanCell := archivePackagingPlanCells.Element( archivePackagingPlanCellIndex.GetValueAsNumber());
+      }
+      
+      archivePackagingPlanCell.CC_PackagingInventory( packagingPlanCell.CC_PackagingInventory() );
+      archivePackagingPlanCell.CC_UnpackagedInventory( packagingPlanCell.CC_UnpackagedInventory() );
+      archivePackagingPlanCell.EndingInventory( packagingPlanCell.EndingInventory() );
+      archivePackagingPlanCell.InitialPackagingInventory( packagingPlanCell.InitialPackagingInventory() );
+      archivePackagingPlanCell.NetDemand( packagingPlanCell.NetDemand() );
+      archivePackagingPlanCell.NewSupply( packagingPlanCell.NewSupply() );
+      archivePackagingPlanCell.Out( packagingPlanCell.Out() );
+      archivePackagingPlanCell.Package( packagingPlanCell.Package() );
+      archivePackagingPlanCell.PackagingInventory( packagingPlanCell.PackagingInventory() );
+      archivePackagingPlanCell.TransferIn( packagingPlanCell.TransferIn() );
+      archivePackagingPlanCell.UnpackagedInventory( packagingPlanCell.UnpackagedInventory() );
+      archivePackagingPlanCell.Unpacking( packagingPlanCell.Unpacking() );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanCell/_ROOT_Type_ArchivePackagingPlanCell.qbl b/_Main/BL/Type_ArchivePackagingPlanCell/_ROOT_Type_ArchivePackagingPlanCell.qbl
new file mode 100644
index 0000000..2291c68
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanCell/_ROOT_Type_ArchivePackagingPlanCell.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ArchivePackagingPlanCell
+{
+  #keys: '5[414996.1.150965192][414996.1.150965190][0.0.0][414996.1.150965191][414996.1.150965193]'
+  BaseType: Object
+  StructuredName: 'ArchivePackagingPlanCells'
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanColumn/Attribute_StartDate.qbl b/_Main/BL/Type_ArchivePackagingPlanColumn/Attribute_StartDate.qbl
new file mode 100644
index 0000000..0c68cd8
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanColumn/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[414996.1.150965242][414996.1.150965241][414996.1.150965243]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanColumn/_ROOT_Type_ArchivePackagingPlanColumn.qbl b/_Main/BL/Type_ArchivePackagingPlanColumn/_ROOT_Type_ArchivePackagingPlanColumn.qbl
new file mode 100644
index 0000000..e51b358
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanColumn/_ROOT_Type_ArchivePackagingPlanColumn.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ArchivePackagingPlanColumn
+{
+  #keys: '5[414996.1.150965239][414996.1.150965237][0.0.0][414996.1.150965238][414996.1.150965240]'
+  BaseType: Object
+  StructuredName: 'ArchivePackagingPlanColumns'
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Category.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Category.qbl
new file mode 100644
index 0000000..4b419d9
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Category.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Category
+{
+  #keys: '3[414996.1.150965250][414996.1.150965249][414996.1.150965251]'
+  Description: '澶х被'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Factory.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Factory.qbl
new file mode 100644
index 0000000..f1ae9f1
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Factory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Factory
+{
+  #keys: '3[414996.1.150965253][414996.1.150965252][414996.1.150965254]'
+  Description: '宸ュ巶'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_FactoryAbbreviation.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_FactoryAbbreviation.qbl
new file mode 100644
index 0000000..e4e64b3
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_FactoryAbbreviation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FactoryAbbreviation
+{
+  #keys: '3[414996.1.150965256][414996.1.150965255][414996.1.150965257]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Name.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Name.qbl
new file mode 100644
index 0000000..9c9443e
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+  #keys: '3[414996.1.150965259][414996.1.150965258][414996.1.150965260]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_ProductID.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_ProductID.qbl
new file mode 100644
index 0000000..0b0eefc
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414996.1.150965262][414996.1.150965261][414996.1.150965263]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_StockingPointID.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..a0e85d7
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414996.1.150965265][414996.1.150965264][414996.1.150965266]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Category.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Category.qbl
new file mode 100644
index 0000000..5e9af9f
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Category.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Category
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Factory.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Factory.qbl
new file mode 100644
index 0000000..49653fb
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Factory.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Factory
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_FactoryAbbreviation.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_FactoryAbbreviation.qbl
new file mode 100644
index 0000000..898cd6b
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_FactoryAbbreviation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: FactoryAbbreviation
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Name.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_ProductID.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..fbb83fc
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcFactoryAbbreviation.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcFactoryAbbreviation.qbl
new file mode 100644
index 0000000..d7563fb
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcFactoryAbbreviation.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcFactoryAbbreviation
+{
+  TextBody:
+  [*
+    // lihongji Jul-26-2024 (created)
+    
+    value := ifexpr( this.Factory() = "澶ц繛宸ュ巶", "DL", "CC" );
+    
+    this.FactoryAbbreviation( value );
+  *]
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcName.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcName.qbl
new file mode 100644
index 0000000..9a558f8
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+  TextBody:
+  [*
+    // lihongji Jul-24-2024 (created)
+    
+    value := guard( this.ProductID(), "" );
+    
+    this.Name( value );
+  *]
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/Method_FilterProduct.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/Method_FilterProduct.qbl
new file mode 100644
index 0000000..6f7e08b
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/Method_FilterProduct.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method FilterProduct (
+  Product_MPs products,
+  String factory
+) declarative remote as Boolean
+{
+  TextBody:
+  [*
+    flag := exists( products, Elements, tempP, tempP.ID() = this.ProductID() ) and this.Factory() = factory;
+    
+    return flag;
+  *]
+}
diff --git a/_Main/BL/Type_ArchivePackagingPlanRow/_ROOT_Type_ArchivePackagingPlanRow.qbl b/_Main/BL/Type_ArchivePackagingPlanRow/_ROOT_Type_ArchivePackagingPlanRow.qbl
new file mode 100644
index 0000000..9d81058
--- /dev/null
+++ b/_Main/BL/Type_ArchivePackagingPlanRow/_ROOT_Type_ArchivePackagingPlanRow.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ArchivePackagingPlanRow
+{
+  #keys: '5[414996.1.150965247][414996.1.150965245][0.0.0][414996.1.150965246][414996.1.150965248]'
+  BaseType: Object
+  StructuredName: 'ArchivePackagingPlanRows'
+}
diff --git "a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl" "b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
index d033d04..323a459 100644
--- "a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
+++ "b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
@@ -94,11 +94,11 @@
               holidayOvertimeHourCell.RealValue( holidayOvertimeHourCell.RealValue() + nextDayOvertime );
             }else if( shiftPlan.DefaultRemark().LikeUserLocale( "鍛ㄥ叚" ) or shiftPlan.DefaultRemark().LikeUserLocale( "鍛ㄦ棩" ) ){
               // 涓嬩竴澶╂槸鍛ㄥ叚鎴栧懆鏃�
-              nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
+              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
               breakDayOvertimeHourCell.RealValue( breakDayOvertimeHourCell.RealValue() + nextDayOvertime );
             }else{
               // 涓嬩竴澶╂槸骞冲父鐨勫伐浣滄棩
-              nextDayOvertime := shiftPlan.GetDefaultDayOvertimeHour( true );
+              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
               defaultDayOvertimeHourCell.RealValue( defaultDayOvertimeHourCell.RealValue() + nextDayOvertime );
             }
           }
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
index 94d74a0..1a2649b 100644
--- a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
@@ -97,11 +97,11 @@
               holidayOvertimeHourCell.RealValue( holidayOvertimeHourCell.RealValue() + nextDayOvertime );
             }else if( shiftPlan.DefaultRemark().LikeUserLocale( "鍛ㄥ叚" ) or shiftPlan.DefaultRemark().LikeUserLocale( "鍛ㄦ棩" ) ){
               // 涓嬩竴澶╂槸鍛ㄥ叚鎴栧懆鏃�
-              nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
+              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
               breakDayOvertimeHourCell.RealValue( breakDayOvertimeHourCell.RealValue() + nextDayOvertime );
             }else{
               // 涓嬩竴澶╂槸骞冲父鐨勫伐浣滄棩
-              nextDayOvertime := shiftPlan.GetDefaultDayOvertimeHour( true );
+              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
               defaultDayOvertimeHourCell.RealValue( defaultDayOvertimeHourCell.RealValue() + nextDayOvertime );
             }
           }
@@ -129,12 +129,13 @@
           overtime := shiftPlan.GetDefaultDayOvertimeHour( false );
           defaultDayOvertimeHourCell.RealValue( defaultDayOvertimeHourCell.RealValue() + overtime );
           if( not isnull( nextShiftPlan )){
-            nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
             if( nextShiftPlan.IsHoliday()){
               // 涓嬩竴澶╂槸鑺傚亣鏃�
+              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
               holidayOvertimeHourCell.RealValue( holidayOvertimeHourCell.RealValue() + nextDayOvertime );
             }else if( shiftPlan.DefaultRemark().LikeUserLocale( "鍛ㄥ叚" ) or shiftPlan.DefaultRemark().LikeUserLocale( "鍛ㄦ棩" ) ){
               // 涓嬩竴澶╂槸鍛ㄥ叚鎴栧懆鏃�
+              nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
               breakDayOvertimeHourCell.RealValue( breakDayOvertimeHourCell.RealValue() + nextDayOvertime );
             }else{
               // 涓嬩竴澶╂槸骞冲父鐨勫伐浣滄棩
@@ -201,7 +202,7 @@
       
       // 娆犲伐璐�
       qiangongCell := LocalCell_Default::GetCell(  rowKey + column7.CustomName(), cellIndexTree, cells, row, column7 );
-      qiangongCell.RealValue( qiangongCell.RealValue() - 8 );
+      qiangongCell.RealValue( qiangongCell.RealValue() );
       
       qiangongfeiCell := LocalCell_Default::GetCell(  rowKey + column11.CustomName(), cellIndexTree, cells, row, column11 );
       qiangongfeiCell.RealValue( EmployeeCost::GetSalary( unit,qiangongMultiplier,qiangongCell.RealValue() ));
diff --git a/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl b/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
index 8ec6afe..5cee6d1 100644
--- a/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
+++ b/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
@@ -10,6 +10,6 @@
   TextBody:
   [*
     // rislai Jun-14-2024 (created)
-    return start1 <= end2 and start2 <= end1 ;
+    return start1 <= start2 and end1 + 1 >= end2 ;
   *]
 }
diff --git a/_Main/BL/Type_WholeShift/Method_MobileCycleTask.qbl b/_Main/BL/Type_WholeShift/Method_MobileCycleTask.qbl
index e561a1a..91571aa 100644
--- a/_Main/BL/Type_WholeShift/Method_MobileCycleTask.qbl
+++ b/_Main/BL/Type_WholeShift/Method_MobileCycleTask.qbl
@@ -12,10 +12,14 @@
     
     // 鍒ゆ柇鍙敤浜ц兘鏄惁涓�鑷�
     if ( fillUPTB.BaseAvailableCapacity().HoursAsReal() = targetUPTB.BaseAvailableCapacity().HoursAsReal() ) {
+      // 鍒犻櫎闇�瑕佸~鍏呯殑UPTB
+      PeriodTaskOperation::Delete( selectset( fillUPTB, PeriodTaskOperation, tempPTO, true ) );
+      
       traverse ( targetUPTB, PeriodTaskOperation, pto ) {
         PeriodTaskOperation::Create( pto.Operation(), fillUPTB, pto.Quantity(), false );
       }
       
+      // 鍒犻櫎鐩爣琚彇鏁扮殑UPTB
       PeriodTaskOperation::Delete( selectset( targetUPTB, PeriodTaskOperation, tempPTO, true ) );
     }
     
diff --git a/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl b/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
index dc433ec..c761cbd 100644
--- a/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
+++ b/_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
@@ -15,8 +15,8 @@
       uptbs    := selectsortedset( unit, UnitPeriod.astype( UnitPeriodTimeBase ), tempUPTB, not tempUPTB.IsPeriodFrozen() and tempUPTB.IsPlanning(), tempUPTB.Start() );
           
       // 鍦嗘暣鎴栬ˉ闆跺綋鍓嶄骇绾夸笅鎵�鐢熶骇鐨勪骇鍝�
-    //  this.IsRoundingOrZeroFilling3( macroPlan, uptbs ); // 鍊熻繕閫昏緫
-    //  Transaction::Transaction().Propagate();
+      this.IsRoundingOrZeroFilling3( macroPlan, uptbs ); // 鍊熻繕閫昏緫
+      Transaction::Transaction().Propagate();
             
     //        // 骞宠 褰撳墠浜х嚎涓嬫墍鐢熶骇鐨勪骇鍝佸簱瀛橈紙搴撳瓨 < 鏈�澶у簱瀛橈級
     //        // this.A_balanceInventory( macroPlan, unitPeriodTimeBases );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def
index 5b49ff3..9b59356 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def
@@ -5,44 +5,6 @@
   BaseType: 'WebPanel'
   Children:
   [
-    Component ddlOfflinePlanTable
-    {
-      #keys: '[412672.1.64850982]'
-      BaseType: 'WebDropDownList'
-      Databinding: 'OfflinePlanTableInfo'
-      Children:
-      [
-        Component DataExtractorRibbon
-        {
-          #keys: '[412672.1.64850983]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'RecycleBin'
-            Source: 'RecycleBin'
-            Taborder: 0
-            Transformation: 'OfflinePlanTableInfo'
-          ]
-        }
-      ]
-      Properties:
-      [
-        DisplayField: 'TableName'
-        Label: '涓嬬嚎璁″垝:'
-        NumberOfColumns: 50
-        Taborder: 0
-      ]
-    }
-    Component bComparison
-    {
-      #keys: '[412672.1.64851009]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Label: '寮�濮嬪姣�'
-        Taborder: 1
-      ]
-    }
     Component LabelRibbon
     {
       #keys: '[412672.1.66018113]'
@@ -51,16 +13,6 @@
       [
         DataBinding: 'ddlOfflinePlanTable.Data.TableName'
         NumberOfColumns: 50
-        Taborder: 6
-      ]
-    }
-    Component bExport id:bExport_298
-    {
-      #keys: '[414996.1.108480376]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Image: 'EXPORT1'
         Taborder: 4
       ]
     }
@@ -87,19 +39,7 @@
       ]
       Properties:
       [
-        Taborder: 5
-      ]
-    }
-    Component rbgTimeUnit
-    {
-      #keys: '[414996.1.147730565]'
-      BaseType: 'WebRadioButtonGroup'
-      Properties:
-      [
-        BoundValue: 'Day'
-        ButtonLabels: 'Day;Week;Month'
-        ButtonValues: 'Day;Week;Month'
-        Taborder: 2
+        Taborder: 3
       ]
     }
     Component dhTimeUnit
@@ -109,14 +49,15 @@
       Databinding: 'String*'
       Properties:
       [
-        Taborder: 3
+        Taborder: 2
       ]
     }
+    #child: PanelRibbon510
+    #child: PanelRibbon763
   ]
   Properties:
   [
     FixedSize: true
-    Orientation: 'horizontal'
     Taborder: 0
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon510.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon510.def
new file mode 100644
index 0000000..942eb3a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon510.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+Component PanelRibbon510
+{
+  #keys: '[414996.1.148040419]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component rbgTimeUnit id:rbgTimeUnit_19
+    {
+      #keys: '[414996.1.148040622]'
+      BaseType: 'WebRadioButtonGroup'
+      Properties:
+      [
+        BoundValue: 'Day'
+        ButtonLabels: 'Day;Week;Month'
+        ButtonValues: 'Day;Week;Month'
+        Orientation: 'horizontal'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon763.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon763.def
new file mode 100644
index 0000000..1c87d6e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon763.def
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+Component PanelRibbon763
+{
+  #keys: '[414996.1.148040406]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ddlOfflinePlanTable id:ddlOfflinePlanTable_217
+    {
+      #keys: '[414996.1.148040527]'
+      BaseType: 'WebDropDownList'
+      Databinding: 'OfflinePlanTableInfo'
+      Children:
+      [
+        Component DataExtractorRibbon id:DataExtractorRibbon_568
+        {
+          #keys: '[414996.1.148040528]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'RecycleBin'
+            Source: 'RecycleBin'
+            Taborder: 0
+            Transformation: 'OfflinePlanTableInfo'
+          ]
+        }
+      ]
+      Properties:
+      [
+        DisplayField: 'TableName'
+        Label: '涓嬬嚎璁″垝:'
+        NumberOfColumns: 50
+        Taborder: 0
+      ]
+    }
+    Component bComparison id:bComparison_136
+    {
+      #keys: '[414996.1.148040554]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: '寮�濮嬪姣�'
+        Taborder: 1
+      ]
+    }
+    Component bExport
+    {
+      #keys: '[414996.1.148040586]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'EXPORT1'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_rbgTimeUnit_OnUserChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon510_rbgTimeUnit_OnUserChanged.def
similarity index 60%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_rbgTimeUnit_OnUserChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon510_rbgTimeUnit_OnUserChanged.def
index 12ede48..bf2b6d7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_rbgTimeUnit_OnUserChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon510_rbgTimeUnit_OnUserChanged.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelRibbon504/rbgTimeUnit
-Response OnUserChanged () id:Response_PanelRibbon504_801_rbgTimeUnit_OnUserChanged
+#parent: PanelRibbon510/rbgTimeUnit_19
+Response OnUserChanged () id:Response_PanelRibbon504_rbgTimeUnit_OnUserChanged
 {
-  #keys: '[414996.1.147730564]'
+  #keys: '[414996.1.148040621]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebRadioButtonGroup_OnUserChanged'
   GroupServerCalls: true
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick\043613.def" b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bComparison_OnClick.def
similarity index 87%
rename from "_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick\043613.def"
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bComparison_OnClick.def
index ee0cdcb..8211a83 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick\043613.def"
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bComparison_OnClick.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelRibbon504/bComparison
-Response OnClick () id:Response_PanelRibbon504_bComparison_OnClick_613
+#parent: PanelRibbon763/bComparison_136
+Response OnClick () id:Response_PanelRibbon504_bComparison_OnClick
 {
-  #keys: '[412672.1.64851008]'
+  #keys: '[414996.1.148040553]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebButton_OnClick'
   QuillAction
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bExport_OnClick\043891.def" b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bExport_OnClick.def
similarity index 80%
rename from "_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bExport_OnClick\043891.def"
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bExport_OnClick.def
index 9917d6f..0a82310 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bExport_OnClick\043891.def"
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bExport_OnClick.def
@@ -1,8 +1,8 @@
 Quintiq file version 2.0
-#parent: PanelRibbon504/bExport_298
-Response OnClick () id:Response_pOperaction_bExport_OnClick_891
+#parent: PanelRibbon763/bExport
+Response OnClick () id:Response_PanelRibbon504_bExport_OnClick
 {
-  #keys: '[414996.1.108480375]'
+  #keys: '[414996.1.148040585]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebButton_OnClick'
   GroupServerCalls: true

--
Gitblit v1.9.3