From bcd7eb876bff759f6aef96f1014b0bca7a3322ff Mon Sep 17 00:00:00 2001
From: rislai <risheng.lai@capgemini.com>
Date: 星期五, 16 八月 2024 15:53:14 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/BL/Type_EnginePipelineReport/Method_Generate.qbl |   44 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
index 846f44a..cd19c53 100644
--- a/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
+++ b/_Main/BL/Type_EnginePipelineReport/Method_Generate.qbl
@@ -9,7 +9,6 @@
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
     table                   := selectobject( this, Source.Report, report, not report.IsShow() );
-    
     //娓呯┖涔嬪墠瀛樺偍鐨勬樉绀烘暟鎹�
     this.Clear( search.TimeUnit(), search.StartDate(), search.EndDate() );
     Transaction::Transaction().Propagate( attribute( EnginePipelineColumn, Index ) );
@@ -44,9 +43,22 @@
       showrowccproduction := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '闀挎槬浜ч噺', rownr + 2, false );
       showrowdemand       := EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '闇�姹�', rownr + 3, false );
       rownr               := rownr + 4;
-      traverse( models, Elements, model ){
-        EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), model, rownr, false ); 
-        rownr             := rownr + 1;
+      modelsnr            := rownr + 3;
+      models              := construct( Strings );
+      uniquemodels        := selectuniquevalues( row, Cell.Demand, demand, true, demand.Model() );
+    
+      traverse( uniquemodels, Elements, e ){
+    
+        if( rownr < modelsnr ){
+          EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), e, rownr, false ); 
+          models.Add( e );
+          rownr             := rownr + 1;
+        }
+      }
+    
+      for( rownr := rownr; rownr < modelsnr; rownr ++ ){
+    
+        EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '', rownr, false ); 
       }
       showrowinventory    :=  EnginePipelineRow::CraeteCellValueForRow( this, productcolumn, attricolumn, row.Name(), '搴撳瓨', rownr, false );
     
@@ -60,6 +72,7 @@
           production              := column.CellValue( relnew, Value := [String]cell.ProductionQuantity() );
           showrowproduction.CellValue( relinsert, production );
           sumproduction           := selectobject( column, CellValue, c, c.Row() = sumrowproduction );
+    
           if( isnull( sumproduction ) ){
             sumproduction         := column.CellValue( relnew, Value := [String]0 );
             sumrowproduction.CellValue( relinsert, sumproduction );
@@ -71,6 +84,7 @@
           dlproduction             := column.CellValue( relnew, Value := [String]dlproductionquantity );
           showrowdlproduction.CellValue( relinsert, dlproduction );
           sumdlproduction          := selectobject( column, CellValue, c, c.Row() = sumrowdlproduction );
+    
           if( isnull( sumdlproduction ) ){
             sumdlproduction        := column.CellValue( relnew, Value := [String]0 );
             sumrowdlproduction.CellValue( relinsert, sumdlproduction );
@@ -82,6 +96,7 @@
           ccproduction             := column.CellValue( relnew, Value := [String]ccproductionquantity );
           showrowccproduction.CellValue( relinsert, ccproduction );
           sumccproduction          := selectobject( column, CellValue, c, c.Row() = sumrowccproduction );
+    
           if( isnull( sumccproduction ) ){
             sumccproduction        := column.CellValue( relnew, Value := [String]0 );
             sumrowccproduction.CellValue( relinsert, sumccproduction );
@@ -98,25 +113,26 @@
           }
           sumdemand.Value( [String]( [Real]sumdemand.Value() + cell.DemandQuantity() ) );
           
-          traverse( cell, Demand, demand ){
-            demandrow              := selectobject( this, Row, r, r.Name() = row.Name() and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
-            sumdemandrow           := selectobject( this, Row, r, r.Name() = 'SUM' and exists( r, CellValue, cv, cv.Value() = demand.Model() ) );
+          traverse( cell, Demand, demand, exists( models, Elements, model, model = demand.Model() ) ){
+            demandrow              := selectobject( this, Row, r, r.Name() = row.Name() and exists( r, CellValue, cv, cv.Column() = attricolumn and cv.Value() = demand.Model() ) );
+            sumdemandrow           := selectobject( this, Row, r, r.Name() = 'SUM' and exists( r, CellValue, cv, cv.Column() = attricolumn and cv.Value() = demand.Model() ) );
     
             if( not isnull( demandrow ) ){
               demandcell             := column.CellValue( relnew, Value := [String]demand.Quantity() );
               demandrow.CellValue( relinsert, demandcell );
             }
-            
+            if( not isnull( sumdemandrow ) ){
             sumdemandcell          := selectobject( column, CellValue, c, c.Row() = sumdemandrow );
             if( isnull( sumdemandcell ) ){
               sumdemandcell        := column.CellValue( relnew, Value := [String]0 );
               sumdemandrow.CellValue( relinsert, sumdemandcell );
             }
             sumdemandcell.Value( [String]( [Real]sumdemandcell.Value() + demand.Quantity() ) );
+            }
           }
     
           for( demandr := showrowdemand.RowNr() + 1; demandr < showrowinventory.RowNr(); demandr := demandr + 1 ){
-            demandrow              := selectobject( this, Row, r, r.RowNr() = demandr );
+            demandrow              := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = row.Name() );
             if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
               demandcell           := column.CellValue( relnew, Value := '' );
               demandrow.CellValue( relinsert, demandcell );
@@ -139,12 +155,20 @@
     }
     traverse( this, Column, column ){
       for( demandr := sumrowdemand.RowNr() + 1; demandr < sumrowinventory.RowNr(); demandr := demandr + 1 ){
-        demandrow              := selectobject( this, Row, r, r.RowNr() = demandr );
+        demandrow              := selectobject( this, Row, r, r.RowNr() = demandr and r.Name() = 'SUM' );
+    //    info( '------------------14----------------' );
         if( not isnull( demandrow ) and not exists( demandrow, CellValue, cv, cv.Column() = column ) ){
           demandcell           := column.CellValue( relnew, Value := '' );
           demandrow.CellValue( relinsert, demandcell );
         }
       }
     }
+    
+    rows := selectsortedset( this, Row, row, row.Name(), row.RowNr() );
+    i    := 0;
+    traverse( rows, Elements, e ){
+      e.RowNr( i );
+      i := i + 1;
+    }
   *]
 }

--
Gitblit v1.9.3