From 0dc9f85a5442956570399722b5636387942ff827 Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期四, 17 十月 2024 13:15:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510#127.def                           |    6 
 _Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl                                                         |    7 +
 _Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl                                                |  147 +++++++++++++++++-----------
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def                                |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedEntitys_OnDataChanged.def |   20 ++++
 _Main/BL/Type_LocalRow/Attribute_ProductionLine.qbl                                                                    |    7 +
 /dev/null                                                                                                              |   18 ---
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def                        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelEntitys_OnCreated.def       |    4 
 _Main/BL/Type_MP_Row/Attribute_ProductionLine.qbl                                                                      |    7 +
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def                               |   27 +---
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def         |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def            |    5 
 13 files changed, 148 insertions(+), 109 deletions(-)

diff --git a/_Main/BL/Type_LocalRow/Attribute_ProductionLine.qbl b/_Main/BL/Type_LocalRow/Attribute_ProductionLine.qbl
new file mode 100644
index 0000000..1834f7b
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/Attribute_ProductionLine.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionLine
+{
+  #keys: '3[414996.1.142908762][414996.1.142908761][414996.1.142908763]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl
index 9fd7313..009056c 100644
--- a/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl
@@ -15,7 +15,7 @@
     table := owner.MP_Table( relnew,Name := MP_Cell_AnnualPlanReport::GetTableName());
     
     startDate := owner.StartOfPlanning().Date();
-    endDate := startDate + 7;
+    endDate := startDate.StartOfNextWeek();
     
     columns := construct( MP_Columns );
     columnIndexTree := NamedValueTree::Create();
@@ -33,7 +33,10 @@
                                     and pispippl.Period_MP().EndDate() <= endDate 
                                     and pispippl.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day());
       if( pispippls.Size() <> 0 ){
-        row := table.MP_Row( relnew,ProductID := pisp_mp.ProductID(),StockingPointID := pisp_mp.StockingPointID(), CustomName := pisp_mp.Name() ,Index := table.GetRowIndexCache() ); 
+        productionLine := pisp_mp.StockingPoint_MP().Unit().Name();
+        row := table.MP_Row( relnew,ProductID := pisp_mp.ProductID() ,Index := table.GetRowIndexCache() );
+        row.ProductionLine( productionLine );
+        row.CustomName( row.ProductID() + " > " + row.ProductionLine() );
         traverse( pispippls,Elements,pispippl ){
           columnHandle := columnIndexTree.GetHandle( pispippl.Period_MP().StartDate().AsQUILL() );
           columnIndex := guard( columnIndexTree.Root().Child( columnHandle ),null( NamedValue ));
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl
index 4b76a6f..5ce0ad0 100644
--- a/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl
@@ -2,7 +2,8 @@
 #parent: #root
 StaticMethod CreateFullTable (
   const MacroPlans owners,
-  RecycleBin recycleBin
+  RecycleBin recycleBin,
+  const MacroPlan owner
 ) as LocalTable
 {
   TextBody:
@@ -23,10 +24,90 @@
     localColumnIndexTree := NamedValueTree::Create();
     for( i := startDate; i <= endDate; i := i + 1 ){
        localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Day");
-       localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL());
+       localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() );
        localColumns.Add( localColumn );
        localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
     }
+    
+    traverse( tables,Elements.MP_Row,row ){
+       localRowHandle := localRowIndexTree.GetHandle( row.ProductID() + row.ProductionLine() );
+       localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
+       localRow := null( LocalRow );
+       if( isnull( localRowIndex )){
+         info( row.ProductID() + row.ProductionLine() );
+         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,MP_Cell.astype( MP_Cell_AnnualPlanReport ),cell ){
+         localColumnHandle := localColumnIndexTree.GetHandle( cell.MP_Column().Date().AsQUILL());
+         localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
+         if( not isnull( localColumnIndex )){
+           localColumn := localColumns.Element( localColumnIndex.GetValueAsNumber() );
+           
+           localCellHandle := localCellIndexTree.GetHandle( localRow.ProductID() + localRow.ProductionLine() + localColumn.CustomDate().AsQUILL() + localColumn.TimeUnit() );
+           localCellIndex := guard( localCellIndexTree.Root().Child( localCellHandle ),null( NamedValue ));
+           if( isnull( localCellIndex )){
+             localCell := localRow.LocalCell( relnew,LocalCell_Default,LocalColumn := localColumn );
+             localCell.RealValue( cell.NewSupply() );
+             localCells.Add( localCell );
+             localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 );
+           }else{
+             localCell := localCells.Element( localCellIndex.GetValueAsNumber() );
+             localCell.RealValue( localCell.RealValue() + cell.NewSupply() );
+           }
+         }
+       }
+    }
+    
+    //owner := maxselect( owners,Elements,element,element.StartOfPlanning() );
+    traverse( owner,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() );
+          }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() );
+          localCellIndex := guard( localCellIndexTree.Root().Child( localCellHandle ),null( NamedValue ));
+          if( isnull( localCellIndex )){
+            localCell := localRow.LocalCell( relnew,LocalCell_Default,LocalColumn := column );
+            localCell.RealValue( pispippl.NewSupplyQuantity() );
+            localCells.Add( localCell );
+            localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 );
+          }else{
+            localCell := localCells.Element( localCellIndex.GetValueAsNumber() );
+            localCell.RealValue( localCell.RealValue() + pispippl.NewSupplyQuantity() );
+          }
+        }
+      }
+    }
+    
+    endDate := maxselect( localColumns,Elements,column,column.CustomDate() ).CustomDate();
     for( i := startDate.StartOfWeek(); i <= endDate.StartOfNextWeek(); i := i.StartOfNextWeek() ){
        localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Week");
        localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + "Week" );
@@ -39,60 +120,6 @@
        localColumns.Add( localColumn );
        localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
     }
-    traverse( tables,Elements.MP_Row,row ){
-       localRowHandle := localRowIndexTree.GetHandle( row.ProductID() + row.StockingPointID() );
-       localRowIndex := guard( localRowIndexTree.Root().Child( localRowHandle ),null( NamedValue ));
-       localRow := null( LocalRow );
-       if( isnull( localRowIndex )){
-         localRow := localTable.LocalRow( relnew,CustomName := row.Name(),ProductID := row.ProductID(),StockingPointID := row.StockingPointID(),Index := localTable.GetRowIndexCache() );
-         localRows.Add( localRow );
-         localRowIndexTree.Root().AddChild( localRowHandle,localRows.Size() - 1 );
-       }else{
-         localRow := localRows.Element( localRowIndex.GetValueAsNumber() );
-       }
-      
-       traverse( row,MP_Cell.astype( MP_Cell_AnnualPlanReport ),cell ){
-         localColumnHandle := localColumnIndexTree.GetHandle( cell.MP_Column().Date().AsQUILL() );
-         localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
-         if( not isnull( localColumnIndex )){
-           localColumn := localColumns.Element( localColumnIndex.GetValueAsNumber() );
-           localCell := localRow.LocalCell( relnew,LocalCell_Default,LocalColumn := localColumn );
-           localCell.RealValue( cell.NewSupply() );
-           
-           localCellHandle := localCellIndexTree.GetHandle( localRow.ProductID() + localRow.StockingPointID() + localColumn.CustomDate().AsQUILL() + localColumn.TimeUnit() );
-           localCells.Add( localCell );
-           localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 );
-         }
-       }
-    }
-    
-    owner := maxselect( owners,Elements,element,element.StartOfPlanning() );
-    traverse( owner,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.StockingPointID() );
-        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(),StockingPointID := pisp_mp.StockingPointID(),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 ));
-          if( not isnull( columnIndex )){
-            column := localColumns.Element( columnIndex.GetValueAsNumber() );
-            localCell := localRow.LocalCell( relnew,LocalCell_Default,LocalColumn := column );
-            localCell.RealValue( pispippl.NewSupplyQuantity() );
-          }
-        }
-      }
-    }
     
     traverse( localTable,LocalRow,row ){
       traverse( localTable,LocalColumn,column,column.TimeUnit() = "Week" ){
@@ -102,7 +129,7 @@
                       cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(),cell.RealValue());
         localCell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column,RealValue := value );
         
-        localCellHandle := localCellIndexTree.GetHandle( row.ProductID() + row.StockingPointID() + column.CustomDate().AsQUILL() + column.TimeUnit() );
+        localCellHandle := localCellIndexTree.GetHandle( row.ProductID() + row.ProductionLine() + column.CustomDate().AsQUILL() + column.TimeUnit() );
         localCells.Add( localCell );
         localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 );
       }
@@ -113,7 +140,7 @@
                       cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(),cell.RealValue());
         localCell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column,RealValue := value );
         
-        localCellHandle := localCellIndexTree.GetHandle( row.ProductID() + row.StockingPointID() + column.CustomDate().AsQUILL() + column.TimeUnit() );
+        localCellHandle := localCellIndexTree.GetHandle( row.ProductID() + row.ProductionLine() + column.CustomDate().AsQUILL() + column.TimeUnit() );
         localCells.Add( localCell );
         localCellIndexTree.Root().AddChild( localCellHandle,localCells.Size() - 1 );
       }
@@ -123,6 +150,10 @@
       column.Delete();
     }
     
+    traverse( localTable,LocalRow,row,row.LocalCell( relsize ) = 0 ){
+      row.Delete();
+    }
+    
     //traverse( localTable,LocalRow,row ){
     //  traverse( localTable,LocalColumn,column ){
     //    localCellHandle := localCellIndexTree.GetHandle( row.ProductID() + row.StockingPointID() + column.CustomDate().AsQUILL() + column.TimeUnit() );
diff --git a/_Main/BL/Type_MP_Row/Attribute_ProductionLine.qbl b/_Main/BL/Type_MP_Row/Attribute_ProductionLine.qbl
new file mode 100644
index 0000000..4b9390f
--- /dev/null
+++ b/_Main/BL/Type_MP_Row/Attribute_ProductionLine.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionLine
+{
+  #keys: '3[414996.1.142908749][414996.1.142908748][414996.1.142908750]'
+  ValueType: String
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor.def
deleted file mode 100644
index aea0bf8..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor.def
+++ /dev/null
@@ -1,103 +0,0 @@
-Quintiq file version 2.0
-Component MatrixEditor
-{
-  #keys: '[412672.1.106503687]'
-  BaseType: 'WebMatrixEditor'
-  Children:
-  [
-    Component MatrixEditorCell
-    {
-      #keys: '[412672.1.106503688]'
-      BaseType: 'WebMatrixEditorCell'
-      Children:
-      [
-        Component DataExtractorCells
-        {
-          #keys: '[412672.1.106503689]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'MP_Table'
-            Source: 'dhComparisonData'
-            Taborder: 0
-            Transformation: 'MP_Row.MP_Cell.astype(MP_Cell_AnnualPlanReport)'
-          ]
-        }
-      ]
-      Properties:
-      [
-        Attributes: 'NewSupply'
-        Column: 'MP_Column'
-        Row: 'MP_Row'
-        Taborder: 0
-      ]
-    }
-    Component MatrixEditorRows
-    {
-      #keys: '[412672.1.106503690]'
-      BaseType: 'WebMatrixEditorHeaderLevel'
-      Children:
-      [
-        Component DataExtractorRows
-        {
-          #keys: '[412672.1.106503691]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'MP_Table'
-            FilterArguments: 'checkedProduct:QMacroPlanner::FormAnnualPlanReport.dhFinelProduct;checkedStockingPoint:QMacroPlanner::FormAnnualPlanReport.dhFinelStockingPoint'
-            FixedFilter: 'exists( checkedProduct,Elements,entity,entity.ID() = object.ProductID()) and exists( checkedStockingPoint,Elements,entity,entity.DisplayName() = object.StockingPointID())'
-            Source: 'dhComparisonData'
-            Taborder: 0
-            Transformation: 'MP_Row'
-          ]
-        }
-      ]
-      Properties:
-      [
-        Legend: 'Name'
-        SortCriteria: 'Index'
-        Taborder: 1
-      ]
-    }
-    Component MatrixEditorColumns
-    {
-      #keys: '[412672.1.106503692]'
-      BaseType: 'WebMatrixEditorHeaderLevel'
-      Children:
-      [
-        Component DataExtractorColumns
-        {
-          #keys: '[412672.1.106503693]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'MP_Table'
-            FilterArguments: 'startDate:QMacroPlanner::FormAnnualPlanReport.dhStartDate;endDate:QMacroPlanner::FormAnnualPlanReport.dhEndDate'
-            FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() '
-            Source: 'dhComparisonData'
-            Taborder: 0
-            Transformation: 'MP_Column'
-          ]
-        }
-      ]
-      Properties:
-      [
-        Legend: 'Date'
-        SortCriteria: 'Index'
-        Taborder: 2
-      ]
-    }
-    #child: matrixEditorActionBarPageDemandComparison
-    #child: matrixeditorContextMenuDemandComparison
-  ]
-  Properties:
-  [
-    AllowMultipleAttributes: true
-    Columns: 'MatrixEditorColumns'
-    ContextMenu: 'matrixeditorContextMenuDemandComparison'
-    Rows: 'MatrixEditorRows'
-    Taborder: 0
-    Visible: false
-  ]
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510\043127.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510\043127.def"
index e0b9cd6..9580f0a 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510\043127.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510\043127.def"
@@ -45,8 +45,8 @@
           Properties:
           [
             DataType: 'LocalTable'
-            FilterArguments: 'checkedProduct:QMacroPlanner::FormAnnualPlanReport.dhFinelProduct;checkedStockingPoint:QMacroPlanner::FormAnnualPlanReport.dhFinelStockingPoint'
-            FixedFilter: 'exists( checkedProduct,Elements,entity,entity.ID() = object.ProductID()) and exists( checkedStockingPoint,Elements,entity,entity.DisplayName() = object.StockingPointID())'
+            FilterArguments: 'checkedProduct:QMacroPlanner::FormAnnualPlanReport.dhFinelProduct;checkedEntitys:QMacroPlanner::FormAnnualPlanReport.dhFinelEntitys'
+            FixedFilter: 'exists( checkedProduct,Elements,entity,entity.ID() = object.ProductID()) and exists( checkedEntitys,Elements,entity,entity.DisplayName() = object.ProductionLine())'
             Source: 'dhComparisonData854'
             Taborder: 0
             Transformation: 'LocalRow'
@@ -97,6 +97,6 @@
     Columns: 'MatrixEditorColumns391'
     ContextMenu: 'matrixeditorContextMenuDemandComparison527'
     Rows: 'MatrixEditorRows221'
-    Taborder: 2
+    Taborder: 0
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
index d4eb82e..c74a165 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
@@ -5,16 +5,6 @@
   BaseType: 'WebPanel'
   Children:
   [
-    Component dhComparisonData
-    {
-      #keys: '[412672.1.106503683]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'MP_Table'
-      Properties:
-      [
-        Taborder: 1
-      ]
-    }
     Component dhCheckedProduct
     {
       #keys: '[412672.1.106503684]'
@@ -37,7 +27,7 @@
       ]
       Properties:
       [
-        Taborder: 5
+        Taborder: 3
       ]
     }
     Component dhFinelProduct
@@ -47,7 +37,7 @@
       Databinding: 'structured[Product_MP]*'
       Properties:
       [
-        Taborder: 4
+        Taborder: 2
       ]
     }
     Component dhComparisonData854
@@ -57,19 +47,18 @@
       Databinding: 'LocalTable'
       Properties:
       [
-        Taborder: 3
+        Taborder: 1
       ]
     }
-    #child: MatrixEditor
     #child: MatrixEditor510_127
-    Component dhCheckedStockingPoint
+    Component dhCheckedEntitys
     {
       #keys: '[412672.1.107978890]'
       BaseType: 'WebDataHolder'
       Databinding: 'structured[Entity]*'
       Children:
       [
-        Component deCheckedStockingPoint
+        Component deCheckedEntitys
         {
           #keys: '[412672.1.107978891]'
           BaseType: 'WebDataExtractor'
@@ -84,17 +73,17 @@
       ]
       Properties:
       [
-        Taborder: 7
+        Taborder: 5
       ]
     }
-    Component dhFinelStockingPoint
+    Component dhFinelEntitys
     {
       #keys: '[412672.1.107978915]'
       BaseType: 'WebDataHolder'
       Databinding: 'structured[Entity]*'
       Properties:
       [
-        Taborder: 6
+        Taborder: 4
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def
index 1da6c09..1d79cf5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def
@@ -53,9 +53,8 @@
       Properties:
       [
         Image: 'C_CLAMP'
-        Label: 'Create'
+        Label: 'Create base data'
         Taborder: 0
-        Visible: false
       ]
     }
     Component ButtonRibbon682
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison.def
deleted file mode 100644
index 34e0ac5..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison.def
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component matrixEditorActionBarPageDemandComparison
-{
-  #keys: '[412672.1.106503694]'
-  BaseType: 'matrixEditorActionBarPage'
-  Properties:
-  [
-    Taborder: 3
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison.def
deleted file mode 100644
index a04c4b3..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison.def
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component matrixeditorContextMenuDemandComparison
-{
-  #keys: '[412672.1.106503695]'
-  BaseType: 'matrixeditorContextMenu'
-  Properties:
-  [
-    Taborder: 4
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedEntitys_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedEntitys_OnDataChanged.def
new file mode 100644
index 0000000..60c93f3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedEntitys_OnDataChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhCheckedEntitys
+Response OnDataChanged () id:Response_PanelAnnualPlan_dhCheckedEntitys_OnDataChanged
+{
+  #keys: '[412672.1.107978888]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      if( this.Data().Size() <> 0 ){
+        dhFinelEntitys.Data( this.Data().Copy() );
+      }else{
+        dhFinelEntitys.Data( DataHolderEntities.Data().Copy() );
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged.def
deleted file mode 100644
index e3d55cb..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelAnnualPlan/dhCheckedStockingPoint
-Response OnDataChanged () id:Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged
-{
-  #keys: '[412672.1.107978888]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      if( this.Data().Size() <> 0 ){
-        dhFinelStockingPoint.Data( this.Data().Copy() );
-      }else{
-        dhFinelStockingPoint.Data( DataHolderEntities.Data().Copy() );
-      }
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData_OnCreated.def
deleted file mode 100644
index df2f792..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData_OnCreated.def
+++ /dev/null
@@ -1,18 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelAnnualPlan/dhComparisonData
-Response OnCreated () id:Response_PanelAnnualPlan_dhComparisonData_OnCreated
-{
-  #keys: '[412672.1.106503681]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      table := select( MacroPlan,MP_Table,table,table.Name() = MP_Cell_AnnualPlanReport::GetTableName() );
-      
-      dhComparisonData.Data( table );
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelEntitys_OnCreated.def
similarity index 67%
rename from _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelEntitys_OnCreated.def
index a5b1001..f7f65cc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelEntitys_OnCreated.def
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
-#parent: PanelAnnualPlan/dhFinelStockingPoint
-Response OnCreated () id:Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated
+#parent: PanelAnnualPlan/dhFinelEntitys
+Response OnCreated () id:Response_PanelAnnualPlan_dhFinelEntitys_OnCreated
 {
   #keys: '[412672.1.107978913]'
   CanBindMultiple: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def
index e1c1b14..c865ae0 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def
@@ -9,8 +9,10 @@
   {
     Body:
     [*
-      table := MP_Cell_AnnualPlanReport::CreateFullTable( ApplicationMacroPlanner.GetMacroPlans(),RecycleBin );
+      table := MP_Cell_AnnualPlanReport::CreateFullTable( ApplicationMacroPlanner.GetMacroPlans(),RecycleBin,MacroPlan );
       dhComparisonData854.Data( table );
+      
+      WebMessageBox::Success( "Success" );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def
index c7711e6..5861d6b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def
@@ -9,9 +9,8 @@
   {
     Body:
     [*
-      table := MP_Cell_AnnualPlanReport::Create( MacroPlan );
-      
-      dhComparisonData.Data( table );
+      MP_Table::CreateMP_Tables_AnnualPlanReport( ApplicationMacroPlanner.GetMacroPlans() );
+      WebMessageBox::Success( "Success" );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def
index a1bac03..b34c6eb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      rows := selectset( dhComparisonData854.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,entity,entity.ID() = row.ProductID()) and exists( dhFinelStockingPoint.Data(),Elements,entity,entity.DisplayName() = row.StockingPointID())); 
+      rows := selectset( dhComparisonData854.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,entity,entity.ID() = row.ProductID()) and exists( dhFinelEntitys.Data(),Elements,entity,entity.DisplayName() = row.ProductionLine())); 
       columns := selectset( dhComparisonData854.Data(),LocalColumn,column,dhStartDate.Data() <= column.Date() and dhEndDate.Data() > column.Date() and column.TimeUnit() = dhTimeUnit.Data());
       LocalCell_Default::AsyncExport( RecycleBin,rows,columns );
       //Application.Download( "浜у嚭瀵煎叆妯℃澘.xlsx",data.AsBinaryData() );

--
Gitblit v1.9.3