From 94ab2bd0381925ecf01a2f1a812b114d0f82d5bb Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期三, 14 八月 2024 14:52:52 +0800
Subject: [PATCH] 报表页面中文

---
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def     |    3 
 _Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp                                                                       |   41 ++++
 _Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl                                                            |   32 ++-
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def          |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def         |    3 
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl                                        |   10 +
 _Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp                                                                       |   66 +++++++
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl                                                     |   12 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def                              |    6 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl                                                    |   13 
 _Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl                                                            |   99 +++++-----
 _Main/BL/Type_EnginePipelineReport/Method_Generate.qbl                                                                    |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def             |    3 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl                                       |   10 +
 _Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl                                                        |   71 ++++---
 _Main/Sys/Repr/Global/InventorySummaryCell.qrp                                                                            |   26 ++
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def               |    3 
 _Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def        |   29 +-
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def                     |    6 
 _Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl                                               |   10 +
 _Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl                                            |   10 +
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def                          |   17 +
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def               |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def           |    3 
 27 files changed, 347 insertions(+), 150 deletions(-)

diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..a0443f2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-14-2024 (created)
+    return '浜ф垚鍝�';
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
index 97e6ea2..a26e3e5 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
   [*
     // 鐢勫叞楦� Aug-12-2024 (created)
     owner.CCEngineLogisticsCostReport( relflush );
+    produtparent              := CCEngineLogisticsCostReport::GetDefaultProductParent();
     name                      := CCEngineLogisticsCostReport::GetDefaultName();
     allunit                   := CCEngineLogisticsCostReport::GetDefaultAllUnit();
     ccunit                    := CCEngineLogisticsCostReport::GetDefaultCCUnit();
@@ -31,16 +32,15 @@
         traverse( report, FinancialProductionRow, row, row.Unit() = ccunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' ) ){//璐㈠姟浜ч噺鎶ヨ〃閲岀殑闀挎槬浜ч噺, 涓嶄负0
           ccrow               := table.GetRow( row.Name() );
           product             := row.Product_MP();
-          products.Add( product );
           productparents      := product.GetAllParent();
-          if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
             //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
             enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                  and engine.MLB_MQB() = product.MQBMLB()
                                                  and engine.Factory() = ccunit
                                                  and exists( productparents, Elements, e, e.ID() = engine.Product() ) );
             if( not isnull( enginecost ) ){
-              product             := row.Product_MP();
+              products.Add( product );
               traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' ){
                 //鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬浜ч噺
                 quantity          := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
@@ -60,7 +60,7 @@
           ccrow               := table.GetRow( row.Name() );
           product             := row.Product_MP();
           productparents      := product.GetAllParent();
-          if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
             //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
             enginecost          := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                  and engine.MLB_MQB() = product.MQBMLB()
@@ -98,7 +98,7 @@
             row              := table.GetRow( pit.ProductID() );
             product          := pit.Product_MP();
             productparents   := product.GetAllParent();
-            if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){////鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+            if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
               //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
               enginecost       := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                  and engine.MLB_MQB() = product.MQBMLB()
@@ -130,7 +130,7 @@
           product            := pisp.Product_MP();
           productparents     := product.GetAllParent();
           row                := table.GetRow( pisp.ProductID() );
-          if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){////鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){////鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
             //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
             enginecost         := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                  and engine.MLB_MQB() = product.MQBMLB()
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..a0443f2
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-14-2024 (created)
+    return '浜ф垚鍝�';
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
index cf0c275..8bb3940 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
   [*
     // 鐢勫叞楦� Aug-12-2024 (created)
     owner.DLEngineLogisticsCostReport( relflush );
+    produtparent              := DLEngineLogisticsCostReport::GetDefaultProductParent();
     name                      := DLEngineLogisticsCostReport::GetDefaultName();
     allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
     ccunit                    := DLEngineLogisticsCostReport::GetDefaultCCUnit();
@@ -45,7 +46,7 @@
           periodname         := periodtime.Format( "M2/D2/Y" );
           
           column             := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
-          traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          traverse( trip, ProductInTrip, pit, pit.Quantity() = 0 and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
             quantity         := [Number]pit.Quantity();
             row              := table.GetRow( pit.ProductID() );
             product          := pit.Product_MP();
@@ -98,7 +99,7 @@
           product             := row.Product_MP();
           products.Add( product );
           productparents      := product.GetAllParent();
-          if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
             //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
             enginecost        := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                  and engine.MLB_MQB() = product.MQBMLB()
@@ -122,7 +123,7 @@
           ccrow               := table.GetRow( row.Name() );
           product             := row.Product_MP();
           productparents      := product.GetAllParent();
-          if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
             products.Add( product );
             //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
             enginecost        := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
@@ -144,7 +145,7 @@
     traverse( owner, TransferPlanRow, tprow, tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
       product                 := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
       productparents          := product.GetAllParent();
-      if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+      if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
         //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
          enginecost           := selectobject( owner, LogisticsCostEngine, engine, engine.Generation() = product.Generation() 
                                                and engine.MLB_MQB() = product.MQBMLB()
@@ -178,7 +179,7 @@
       if( iscc ){
         product               := forecast.Product_MP();
         productparents        := product.GetAllParent();
-        if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+        if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
           row                 := table.GetRow( forecast.ProductID() );
           products.Add( forecast.Product_MP() );
           
@@ -215,7 +216,7 @@
           //鑾峰彇琛�
           product             := pisp.Product_MP();
           productparents      := product.GetAllParent();
-          if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
             row               := table.GetRow( pisp.ProductID() );
             products.Add( pisp.Product_MP() );
             traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear ){
diff --git a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
index 3c3e269..db2c717 100644
--- a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
+++ b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -59,7 +59,6 @@
       for( rownr := rownr; rownr < modelsnr; rownr ++ ){
     
         EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '', rownr, false ); 
-        rownr             := rownr + 1;
       }
       showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '搴撳瓨', rownr, false );
     
diff --git a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..a0443f2
--- /dev/null
+++ b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-14-2024 (created)
+    return '浜ф垚鍝�';
+  *]
+}
diff --git a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
index 77b75de..0d45aa5 100644
--- a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -10,10 +10,11 @@
     owner.EnginePipelineSource( relflush );
     //ccunit                    := EnginePipelineReport::GetDefaultCCUnit();
     //dlunit                    := EnginePipelineReport::GetDefaultDLUnit();
-    ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
-    dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
-    ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
-    dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
+    productparent             := EnginePipelineReport::GetDefaultProductParent();
+    ccalineunit               := EnginePipelineReport::GetDefaultCCALineUnit();
+    dlalienunit               := EnginePipelineReport::GetDefaultDLALineUnit()
+    ccmplineunit              := EnginePipelineReport::GetDefaultCCMPLineUnit()
+    dlmplineunit              := EnginePipelineReport::GetDefaultDLMPLineUnit();
     //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
     source                    := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::GetDefaultName() );
     table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
@@ -35,62 +36,58 @@
       //鏄惁灞炰簬澶ц繛宸ュ巶
       isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
       
-      traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
-        product               := pisp.Product_MP();
-        productparents        := product.GetAllParent();
-        if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
-          weekstart           := owner.StartOfPlanning().Date();
-          pispips             := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
+      traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() 
+                and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ) 
+                and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
+        weekstart           := owner.StartOfPlanning().Date();
+        pispips             := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
                                                     and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
-          row := table.GetRow( pisp.ProductID() );
-          traverse( pispips, Elements, pispip ){
-            //澶�
-            daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
-            //鍛�
-            weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
-            supplyquantity    := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
-            inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
-            //浜ч噺鏄姞鎬�
-            if( iscc or isdl ){
-              row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity );
-              row.SetCellProductionValue( weekcolumn, iscc, [Real]supplyquantity );
-            }
-            //搴撳瓨闇�瑕佸彇鏈�鍚庝竴澶�
-            row.SetCellInventoryValue( daycolumn, [Real]inventoryquantity );
-      
-            if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
-              weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
-              
-              row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity );
-            } 
+        row := table.GetRow( pisp.ProductID() );
+        traverse( pispips, Elements, pispip ){
+          //澶�
+          daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
+          //鍛�
+          weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+          supplyquantity    := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
+          inventoryquantity := [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
+          //浜ч噺鏄姞鎬�
+          if( iscc or isdl ){
+            row.SetCellProductionValue( daycolumn, iscc, [Real]supplyquantity );
+            row.SetCellProductionValue( weekcolumn, iscc, [Real]supplyquantity );
           }
+          //搴撳瓨闇�瑕佸彇鏈�鍚庝竴澶�
+          row.SetCellInventoryValue( daycolumn, [Real]inventoryquantity );
+      
+          if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
+            weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
+              
+            row.SetCellInventoryValue( weekcolumn, [Real]inventoryquantity );
+          } 
         }
       }
     }
     
     //鐢熸垚闇�姹傛暟鎹�
-    traverse( owner, SalesDemand.astype( Forecast ), forecast ){
-      product               := forecast.Product_MP();
-      productparents        := product.GetAllParent();
-      if( exists( productparents, Elements, e, e.ID() = '鍙戝姩鏈�' ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
-        row                 := table.GetRow( forecast.ProductID() );
-        weekstart           := owner.StartOfPlanning().Date();
-        traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
-          //澶�
-          daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), psdip.StartDate() );
-          //鍛�
-          weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < endperiod.StartDate() and forecast.Quantity() <> 0 
+              and exists( forecast.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent )
+              and exists( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ) ){
+      row                 := table.GetRow( forecast.ProductID() );
+      weekstart           := owner.StartOfPlanning().Date();
+      traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ){
+        //澶�
+        daycolumn         := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), psdip.StartDate() );
+        //鍛�
+        weekcolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
           
-          if( not isnull( daycolumn ) ){
-            row.SetCellDemandValue( daycolumn, forecast.SalesSegmentName(), forecast.Quantity() );
-          }
-          if( not isnull( weekcolumn ) ){
-            row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
-          }
-          if( psdip.StartDate() = ( weekstart + Duration::Days( 6 ) ).Date() or psdip.PeriodStart() = endperiod.StartDate() ){
-            weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
-          } 
+        if( not isnull( daycolumn ) ){
+          row.SetCellDemandValue( daycolumn, forecast.SalesSegmentName(), forecast.Quantity() );
         }
+        if( not isnull( weekcolumn ) ){
+          row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
+        }
+        if( psdip.StartDate() = ( weekstart + Duration::Days( 6 ) ).Date() or psdip.PeriodStart() = endperiod.StartDate() ){
+          weekstart       := ( weekstart + Duration::Days( 7 ) ).Date();
+        } 
       }
     }
     
diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
index a7ebc07..dc85d48 100644
--- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -43,17 +43,15 @@
       //鏄惁灞炰簬澶ц繛宸ュ巶
       isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
       if( iscc or isdl ){
-        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
+        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() 
+                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
           //鑾峰彇宸ュ巶琛�
           factoryrow := table.GetRowByUnit( pisp.Product_MP(), ifexpr( iscc, ccunit, dlunit ) );
           //鑾峰彇鍚堣琛�
           allrow     := table.GetRowByUnit( pisp.Product_MP(), allunit );
           products.Add( pisp.Product_MP() );
           //褰損roduct planning鐨勬棩鏈熷尯闂村湪闇�瑕佺殑鏃ユ湡鍖洪棿鍐� 
-          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear
-    //                and ( ( pispip.Period_MP().StartDate().StartOfMonth() = startofplanning.StartOfMonth() and currentperiods.Find( pispip.Period_MP() ) >= 0 )
-    //                 or ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() and pispip.Period_MP().StartDate() < startofnextyear ) ) 
-                    ){
+          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ){
             periodtime := pispip.Start().StartOfMonth().Date();
             periodname := periodtime.Format( "M2/D2/Y" );
             quantity   := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
diff --git a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
index a2ed74a..e521df4 100644
--- a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
@@ -32,7 +32,8 @@
     table.GenerateColumn( owner );
     
     //棣栧厛鍦╢orecast鐣岄潰鏌ユ壘sales segment涓洪暱鏄ョ殑鎵�鏈夐渶姹傦紝璇嗗埆鍑篗LB鐨勬墍鏈変骇鍝侊紝姣忎釜浜у搧鎸夋湀姹囨�婚渶姹傛暟閲�
-    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear ){
+    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.StartDate() < startofnextyear and forecast.Quantity() <> 0 
+              and exists( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ) ){
       salessegment            := forecast.SalesSegment_MP();
       parentsalessegments     := salessegment.GetAllParent();
       //鏄惁灞炰簬闀挎槬
@@ -50,10 +51,8 @@
         //鑾峰彇宸ュ巶琛�
         factoryrow           := table.GetRow( ifexpr( iscc and forecast.Product_MP().MQBMLB() = 'MLB', ccunit, dlunit ), product );
       
-        if( products.Find( product ) < 0 ){
-          products.Add( product );
-        }
-        traverse( forecast, PlanningSalesDemandInPeriod, psdip ){
+        products.Add( product );
+        traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() <> 0 ){
           periodtime         := psdip.StartDate().StartOfMonth();
           periodname         := periodtime.Format( "M2/D2/Y" );
     //      info( '-------------------------', periodname, periodtime );
@@ -73,10 +72,13 @@
       //鏄惁灞炰簬闀挎槬瑁呴厤绾�
     //  iscc                  := unit.ID() = ccspline or exists( parentunits, Elements, punit, punit.ID() = ccspline );
       if( table.IsInUnit( stockingpoint, ccspline ) ){
-        traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and pisp.Product_MP().MQBMLB() = 'MQB' ){//浜у搧涓篗QB
-          allrow            := table.GetRow( allunit, pisp.Product_MP() );
-          ccrow             := table.GetRow( ccunit, pisp.Product_MP() );
-          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear ){
+        traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and pisp.Product_MP().MQBMLB() = 'MQB' 
+                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ) ){//浜у搧涓篗QB
+          product           := pisp.Product_MP();
+          allrow            := table.GetRow( allunit, product );
+          ccrow             := table.GetRow( ccunit, product );
+          products.Add( product );
+          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ){
             periodtime      := pispip.Start().StartOfMonth().Date();
             periodname      := periodtime.Format( "M2/D2/Y" );
             column          := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
@@ -98,19 +100,21 @@
       destisp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
       isccrent              := table.IsInUnit( destisp, ccrent );
       if( isdlspline and isccrent ){
-        traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead ){
+        traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead and exists( trip, ProductInTrip, pit, pit.Quantity() <> 0 ) ){
     //      periodtime        := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
           periodtime        := trip.Departure().StartOfMonth().Date();
           periodname        := periodtime.Format( "M2/D2/Y" );
           
           column            := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime );
           if( not isnull( column ) ){
-            traverse( trip, ProductInTrip, pit ){
-              quantity        := [Number]pit.Quantity();//鍥涜垗浜斿叆
-              dlrow           := table.GetRow( dlunit, pit.Product_MP() );
+            traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 ){
+              product       := pit.Product_MP();
+              products.Add( product );
+              quantity      := [Number]pit.Quantity();//鍥涜垗浜斿叆
+              dlrow         := table.GetRow( dlunit, pit.Product_MP() );
               dlrow.Initialize( column, quantity );//姹囨�绘暟閲�
               
-              allrow          := table.GetRow( allunit, pit.Product_MP() );
+              allrow        := table.GetRow( allunit, pit.Product_MP() );
               allrow.Initialize( column, quantity );
             }
           }
diff --git a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl
new file mode 100644
index 0000000..1cff05e
--- /dev/null
+++ b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultProductParent.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultProductParent () as String
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-14-2024 (created)
+    return '鏈哄姞浠�';
+  *]
+}
diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
index 1a69f9f..3b9867c 100644
--- a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -8,6 +8,7 @@
   [*
     // 鐢勫叞楦� Jun-24-2024 (created)
     owner.FinancialProductionSource( relflush );
+    productparent             := MachiningPipelineReport::GetDefaultProductParent();
     ccunit                    := MachiningPipelineReport::GetDefaultCCUnit();
     dlunit                    := MachiningPipelineReport::GetDefaultDLUnit();
     //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
@@ -39,39 +40,45 @@
       //鏄惁灞炰簬澶ц繛鏈哄姞浜х嚎
       isdlproduction          := unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
       if( iscc or isdl ){
-        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){
-          row := table.GetRow( pisp.ProductID() );
-          
-          weekstart             := owner.StartOfPlanning().Date();
-          pispips               := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
-                                                  and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
-          
-          traverse( pispips, Elements, pispip ){
-            //澶�
-            daycolumn           := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
-            //鍛�
-            weekcolumn          := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() 
+                  and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ) 
+                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ) ) ){
+          product             := pisp.Product_MP();
+          productparents      := product.GetAllParent();
+          if( exists( productparents, Elements, e, e.ID() = productparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+            row               := table.GetRow( pisp.ProductID() );
+            products.Add( pisp.Product_MP() );
+            weekstart         := owner.StartOfPlanning().Date();
+            pispips           := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
+                                                    and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() and ( pispip.NewSupplyQuantity() <> 0 or pispip.PlannedInventoryLevelEnd() <> 0 ), pispip.Start() );
             
-            supplyquantity      := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
-            inventoryquantity   := [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
-            
-            //瑁呴厤绾�
-            if( isccassemnly or isdlassemnly ){
-              row.SetCellAssemblyValue( daycolumn, isccassemnly, [Real]supplyquantity );
-              row.SetCellAssemblyValue( weekcolumn, isccassemnly, [Real]supplyquantity );
-            }
-            
-            //鏈哄姞绾�
-            if( isccproduction or isdlproduction ){
-              row.SetCellProductionValue( daycolumn, isccproduction, [Real]supplyquantity );
-              row.SetCellProductionValue( weekcolumn, isccproduction, [Real]supplyquantity );
-            }
-            //搴撳瓨
-            if( iscc or isdl ){
-              row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
-              if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
-                weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
-                row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
+            traverse( pispips, Elements, pispip ){
+              //澶�
+              daycolumn        := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() );
+              //鍛�
+              weekcolumn       := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart );
+              
+              supplyquantity   := [Number]pispip.NewSupplyQuantity();//鍥涜垗浜斿叆
+              inventoryquantity:= [Number]pispip.PlannedInventoryLevelEnd();//鍥涜垗浜斿叆
+              
+              //瑁呴厤绾�
+              if( isccassemnly or isdlassemnly ){
+                row.SetCellAssemblyValue( daycolumn, isccassemnly, [Real]supplyquantity );
+                row.SetCellAssemblyValue( weekcolumn, isccassemnly, [Real]supplyquantity );
+              }
+              
+              //鏈哄姞绾�
+              if( isccproduction or isdlproduction ){
+                row.SetCellProductionValue( daycolumn, isccproduction, [Real]supplyquantity );
+                row.SetCellProductionValue( weekcolumn, isccproduction, [Real]supplyquantity );
+              }
+              //搴撳瓨
+              if( iscc or isdl ){
+                row.SetCellInventoryValue( daycolumn, iscc, [Real]inventoryquantity );
+                if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){
+                  weekstart      := ( weekstart + Duration::Days( 7 ) ).Date();
+                  row.SetCellInventoryValue( weekcolumn, iscc, [Real]inventoryquantity );
+                }
               }
             }
           }
diff --git a/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp b/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
new file mode 100644
index 0000000..55dd648
--- /dev/null
+++ b/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation CCEngineLogisticsCostCell
+{
+  AttributeRepresentation Coefficient
+  {
+    AttributeKey: '[415136.0.986844757]'
+    Synonym: '绯绘暟'
+  }
+  AttributeRepresentation EstimatedTotalCost
+  {
+    AttributeKey: '[415136.0.986844738]'
+    Synonym: '棰勮鎬昏垂鐢�'
+  }
+  AttributeRepresentation FactoryToRentTransCost
+  {
+    AttributeKey: '[415136.0.986844780]'
+    Synonym: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
+  }
+  AttributeRepresentation RentEnterCost
+  {
+    AttributeKey: '[415136.0.986881422]'
+    Synonym: '澶栫搴撳叆搴撹垂鐢�'
+  }
+  AttributeRepresentation RentOutCost
+  {
+    AttributeKey: '[415136.0.986881432]'
+    Synonym: '澶栫搴撳嚭搴撹垂鐢�'
+  }
+  AttributeRepresentation RentStorageCost
+  {
+    AttributeKey: '[415136.0.986881445]'
+    Synonym: '澶栫搴撲粨鍌ㄨ垂鐢�'
+  }
+  AttributeRepresentation TotalCost
+  {
+    AttributeKey: '[415136.0.986844770]'
+    Synonym: '鎬昏垂鐢�'
+  }
+  RelationRepresentation Column { RelationKey: '[415136.0.986881392]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp b/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
new file mode 100644
index 0000000..6efbdbf
--- /dev/null
+++ b/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
@@ -0,0 +1,66 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation DLEngineLogisticsCostCell
+{
+  AttributeRepresentation CCLongTransCoat
+  {
+    AttributeKey: '[415136.0.992900331]'
+    Synonym: '闀挎槬闀块�旇繍杈撹垂鐢�'
+  }
+  AttributeRepresentation CCRentEnterCost
+  {
+    AttributeKey: '[415136.0.992900044]'
+    Synonym: '闀挎槬澶栫搴撳叆搴撹垂鐢�'
+  }
+  AttributeRepresentation CCRentOutCost
+  {
+    AttributeKey: '[415136.0.992900047]'
+    Synonym: '闀挎槬澶栫搴撳嚭搴撹垂鐢�'
+  }
+  AttributeRepresentation CCRentStorageCost
+  {
+    AttributeKey: '[415136.0.992900050]'
+    Synonym: '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�'
+  }
+  AttributeRepresentation CCShortTransCost
+  {
+    AttributeKey: '[415136.0.992900341]'
+    Synonym: '闀挎槬鐭�旇繍杈撹垂鐢�'
+  }
+  AttributeRepresentation Coefficient
+  {
+    AttributeKey: '[415136.0.992900035]'
+    Synonym: '绯绘暟'
+  }
+  AttributeRepresentation DLRentEnterCost
+  {
+    AttributeKey: '[415136.0.992900241]'
+    Synonym: '澶ц繛澶栫搴撳叆搴撹垂鐢�'
+  }
+  AttributeRepresentation DLRentOutCost
+  {
+    AttributeKey: '[415136.0.992900248]'
+    Synonym: '澶ц繛澶栫搴撳嚭搴撹垂鐢�'
+  }
+  AttributeRepresentation DLRentStorageCost
+  {
+    AttributeKey: '[415136.0.992900261]'
+    Synonym: '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�'
+  }
+  AttributeRepresentation EstimatedTotalCost
+  {
+    AttributeKey: '[415136.0.992900038]'
+    Synonym: '棰勮鎬昏垂鐢�'
+  }
+  AttributeRepresentation FactoryToDLRentTransCost
+  {
+    AttributeKey: '[415136.0.992900041]'
+    Synonym: '鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤'
+  }
+  AttributeRepresentation TotalCost
+  {
+    AttributeKey: '[415136.0.992900053]'
+    Synonym: '鎬昏垂鐢�'
+  }
+  RelationRepresentation Column { RelationKey: '[415136.0.992900194]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/InventorySummaryCell.qrp b/_Main/Sys/Repr/Global/InventorySummaryCell.qrp
new file mode 100644
index 0000000..bd2db27
--- /dev/null
+++ b/_Main/Sys/Repr/Global/InventorySummaryCell.qrp
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation InventorySummaryCell
+{
+  AttributeRepresentation AverageInventory
+  {
+    AttributeKey: '[415136.0.865305023]'
+    Synonym: '骞冲潎搴撳瓨'
+  }
+  AttributeRepresentation EndingInventory
+  {
+    AttributeKey: '[415136.0.865304923]'
+    Synonym: '鏈熸湯搴撳瓨'
+  }
+  AttributeRepresentation MaximumInventory
+  {
+    AttributeKey: '[415136.0.865304943]'
+    Synonym: '鏈�澶у簱瀛�'
+  }
+  AttributeRepresentation MinimumInventory
+  {
+    AttributeKey: '[415136.0.865304933]'
+    Synonym: '鏈�灏忓簱瀛�'
+  }
+  RelationRepresentation AsFirstCellInColumn { RelationKey: '[415136.0.865304766]' Visibility: 'Normal' }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 9fe328c..1b8cfac 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -11,8 +11,9 @@
       BaseType: 'WebButton'
       Properties:
       [
+        Description: 'Financial production report'
         Image: 'DOCUMENT_REFRESH'
-        Label: 'Financial production report'
+        Label: '璐㈠姟浜ч噺鎶ヨ〃'
         Taborder: 0
       ]
     }
@@ -22,8 +23,9 @@
       BaseType: 'WebButton'
       Properties:
       [
+        Description: 'Financial sales report'
         Image: 'MONEY_COINS2'
-        Label: 'Financial sales report'
+        Label: '璐㈠姟閿�閲忔姤琛�'
         Taborder: 1
       ]
     }
@@ -33,8 +35,9 @@
       BaseType: 'WebButton'
       Properties:
       [
+        Description: 'Inventory summary report'
         Image: 'DOCUMENT_CHECK_EDIT'
-        Label: 'Inventory summary report'
+        Label: '搴撳瓨姹囨�绘姤琛�'
         Taborder: 2
       ]
     }
@@ -44,8 +47,9 @@
       BaseType: 'WebButton'
       Properties:
       [
+        Description: 'Financial weekly report'
         Image: 'DOCUMENT_DIRTY'
-        Label: 'Financial weekly report'
+        Label: '闀挎槬鍛ㄦ姤鎶ヨ〃'
         Taborder: 3
       ]
     }
@@ -70,8 +74,9 @@
       ]
       Properties:
       [
+        Description: 'Pipeline report'
         Image: 'DOCUMENT_CONNECTION'
-        Label: 'Pipeline report'
+        Label: '绠$嚎鎶ヨ〃'
         Taborder: 5
       ]
     }
@@ -152,7 +157,7 @@
       Properties:
       [
         Image: 'MONEY2'
-        Label: 'engine logistics cost report '
+        Label: '鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
         Taborder: 11
       ]
     }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
index 1223d6d..90dcee1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
@@ -11,9 +11,10 @@
       BaseType: 'WebMenu'
       Properties:
       [
+        Description: 'CC engine logistics cost report'
         Image: 'MONEY2'
         Taborder: 0
-        Title: 'CC engine logistics cost report'
+        Title: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
       ]
     }
     Component MenuDLEngineLogisticsCostReport
@@ -22,9 +23,10 @@
       BaseType: 'WebMenu'
       Properties:
       [
+        Description: 'DL engine logistics cost report'
         Image: 'MONEY2'
         Taborder: 1
-        Title: 'DL engine logistics cost report'
+        Title: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
index 6e53b06..3cd265a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuPipelineReport.def
@@ -11,9 +11,10 @@
       BaseType: 'WebMenu'
       Properties:
       [
+        Description: 'Engine pipeline report'
         Image: 'DOCUMENT_CONNECTION'
         Taborder: 0
-        Title: 'Engine pipeline report'
+        Title: '鍙戝姩鏈虹绾挎姤琛�'
       ]
     }
     Component MenuMachiningPipelineReport
@@ -22,9 +23,10 @@
       BaseType: 'WebMenu'
       Properties:
       [
+        Description: 'Machining pipeline report'
         Image: 'DOCUMENT_CONNECTION'
         Taborder: 1
-        Title: 'Machining pipeline report'
+        Title: '鏈哄姞浠剁绾挎姤琛�'
       ]
     }
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
index b273698..5428df3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
@@ -32,7 +32,8 @@
   ]
   Properties:
   [
+    Description: 'CC engine logistics cost report'
     Image: 'MONEY2'
-    Title: 'CC engine logistics cost report'
+    Title: '闀挎槬鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
index b8d56ce..70dd20a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_MatrixEditorTable_OnUpdateValue.def
@@ -1,9 +1,9 @@
 Quintiq file version 2.0
 #parent: MatrixEditorTable
 Response OnUpdateValue (
-  CCEngineLogisticsCostRow row,
-  CCEngineLogisticsCostColumn column,
-  CCEngineLogisticsCostCell cell,
+  DLEngineLogisticsCostRow row,
+  DLEngineLogisticsCostColumn column,
+  DLEngineLogisticsCostCell cell,
   Number value,
   Number oldvalue
 ) id:Response_MatrixEditorTable_OnUpdateValue
@@ -15,17 +15,18 @@
   {
     Body:
     [*
-      table            := selectobject( MacroPlan, CCEngineLogisticsCostReport, report, not report.IsShow() );
-      cell.Coefficient( value );
-      traverse( table, Row, trow, trow.Name() = row.Name() ){
-        traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
-          tcel.RentEnterCost( cell.RentEnterCost() );
-          tcel.RentOutCost( cell.RentOutCost() );
-          tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
-          tcel.RentStorageCost( cell.RentStorageCost() );
-          tcel.Coefficient( cell.Coefficient() );
-        }
-      }
+      table            := selectobject( MacroPlan, DLEngineLogisticsCostReport, report, not report.IsShow() );
+      info( focusedattribute );
+      //cell.Coefficient( value );
+      //traverse( table, Row, trow, trow.Name() = row.Name() ){
+      //  traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
+      //    tcel.RentEnterCost( cell.RentEnterCost() );
+      //    tcel.RentOutCost( cell.RentOutCost() );
+      //    tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
+      //    tcel.RentStorageCost( cell.RentStorageCost() );
+      //    tcel.Coefficient( cell.Coefficient() );
+      //  }
+      //}
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnClose.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
similarity index 82%
rename from _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnClose.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
index 42bf9b2..ca7f4d4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnClose.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
@@ -1,10 +1,10 @@
 Quintiq file version 2.0
 #parent: #root
-Response OnClose () id:Response_FormDLEngineLogisticsCostReport_OnClose
+Response OnCreated () id:Response_FormDLEngineLogisticsCostReport_OnCreated
 {
-  #keys: '[415136.0.992750704]'
+  #keys: '[415136.0.997148779]'
   CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebForm_OnClose'
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
   {
     Body:
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
index e5710a3..5e6807d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
@@ -32,7 +32,8 @@
   ]
   Properties:
   [
+    Description: 'DL engine logistics cost report'
     Image: 'MONEY2'
-    Title: 'DL engine logistics cost report'
+    Title: '澶ц繛鍙戝姩鏈虹墿娴佹垚鏈姤琛�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
index 3a6bcc9..bac49a1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
@@ -42,7 +42,8 @@
   ]
   Properties:
   [
+    Description: 'Engine pipeline report'
     Image: 'DOCUMENT_CONNECTION'
-    Title: 'Engine pipeline report'
+    Title: '鍙戝姩鏈虹绾挎姤琛�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
index 146e986..7e63fb7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
@@ -32,7 +32,8 @@
   ]
   Properties:
   [
+    Description: 'Financial production report'
     Image: 'DOCUMENT_REFRESH'
-    Title: 'Financial production report'
+    Title: '璐㈠姟浜ч噺鎶ヨ〃'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
index 248b71f..a30e8a2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
@@ -32,7 +32,8 @@
   ]
   Properties:
   [
+    Description: 'Financial sales report'
     Image: 'MONEY_COINS2'
-    Title: 'Financial sales report'
+    Title: '璐㈠姟閿�閲忔姤琛�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
index af4455d..349ef4e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/_ROOT_Component_FormFinancialWeeklyReport.def
@@ -12,7 +12,8 @@
   ]
   Properties:
   [
+    Description: 'Financial weekly report'
     Image: 'DOCUMENT_DIRTY'
-    Title: 'Financial weekly report'
+    Title: '闀挎槬鍛ㄦ姤琛�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
index 18cc120..0f7034e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -32,7 +32,8 @@
   ]
   Properties:
   [
+    Description: 'Inventory summary report'
     Image: 'DOCUMENT_CHECK_EDIT'
-    Title: 'Inventory summary report'
+    Title: '搴撳瓨姹囨�绘姤琛�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
index 323e7bd..7d54e40 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
@@ -32,7 +32,8 @@
   ]
   Properties:
   [
+    Description: 'Machining pipeline report'
     Image: 'DOCUMENT_CONNECTION'
-    Title: 'Machining pipeline report'
+    Title: '鏈哄姞浠剁绾挎姤琛�'
   ]
 }

--
Gitblit v1.9.3