From 4bb71bc32df6a2ce847b5dc1853dea732e2d0253 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期三, 23 十月 2024 17:53:19 +0800
Subject: [PATCH] 财务产量报表/销量报表导入bug

---
 _Main/BL/Type_FinancialSalesReport/Method_GenerateShow.qbl |   50 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/_Main/BL/Type_FinancialSalesReport/Method_GenerateShow.qbl b/_Main/BL/Type_FinancialSalesReport/Method_GenerateShow.qbl
index f37bed3..e56d045 100644
--- a/_Main/BL/Type_FinancialSalesReport/Method_GenerateShow.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/Method_GenerateShow.qbl
@@ -2,6 +2,7 @@
 #parent: #root
 Method GenerateShow (
   FinancialSalesReport table,
+  FinancialSalesColumn yearcolumn,
   Strings productids,
   String factory
 )
@@ -9,41 +10,62 @@
   TextBody:
   [*
     // 鐢勫叞楦� Oct-12-2024 (created)
-    //骞存眹鎬�
-    yearcolumn          := this.FinancialSalesColumn( relnew, Name := '姹囨��', Period := this.FinancialSalesSource().MacroPlan().StartOfPlanning().StartOfNextYear().Date() );
-    sumrow              := this.FinancialSalesRow( relnew, Name := factory.Format( 'S(Len(10))' ).Concat( 'SUM' ), Factory := factory );
-    sumyearcell         := yearcolumn.FinancialSalesCell( relnew, Value := '0' );
+    allunit := FinancialProductionReport::GetDefaultAllUnit();
+    
+    sumrow                    := this.FinancialSalesRow( relnew, Name := factory.Format( 'S(Len(10))' ).Concat( 'SUM' ), Factory := factory );
+    sumyearcell               := yearcolumn.FinancialSalesCell( relnew, Value := '0' );
     sumrow.FinancialSalesCell( relinsert, sumyearcell );
-    traverse( table, FinancialSalesRow, row, row.Unit() = factory ){
-      productid         := construct( Strings );
+    //error( '-----------------', productids.Size(), selectset( table, FinancialSalesRow, row, factory = allunit or row.Unit() = factory ).Size() );
+    traverse( table, FinancialSalesRow, row, factory = allunit or row.Unit() = factory ){
+      productid               := construct( Strings );
       productid.Add( row.Name() );
       
       if( productids.ContainsAll( productid ) ){
-        showrow         := this.FinancialSalesRow( relnew, Name := factory.Format( 'S(Len(10))' ).Concat( row.Name() ), Unit := row.Unit(), Factory := factory );
-        row.Product_MP().FinancialSalesRow( relinsert, showrow );
-        yearcell        := yearcolumn.FinancialSalesCell( relnew, Value := '0' );
-        showrow.FinancialSalesCell( relinsert, yearcell );
+        isupdate              := false;
+        showrow               := selectobject( this, FinancialSalesRow, fprow, fprow.Name() = factory.Format( 'S(Len(10))' ).Concat( row.Name() ) and fprow.Unit() = factory and factory = factory );
+        if( isnull( showrow ) ){
+          showrow             := this.FinancialSalesRow( relnew, Name := factory.Format( 'S(Len(10))' ).Concat( row.Name() ), Unit := factory, Factory := factory );
+          row.Product_MP().FinancialSalesRow( relinsert, showrow );
+        }
+        yearcell              := selectobject( yearcolumn, FinancialSalesCell, fpcell, fpcell.FinancialSalesRow() = showrow );
+        if( isnull( yearcell ) ){
+          yearcell            := yearcolumn.FinancialSalesCell( relnew, Value := '0' );
+          showrow.FinancialSalesCell( relinsert, yearcell );
+        }
         
         traverse( row, FinancialSalesCell, cell, not cell.FinancialSalesColumn().IsDay() ){
           column        := selectobject( this, FinancialSalesColumn, column, column.Name() = cell.FinancialSalesColumn().Name() and not column.IsDay());
-          
+          if( isnull( column ) ){
+            column            := this.FinancialSalesColumn( relnew, Name := cell.FinancialSalesColumn().Name(), Period := cell.FinancialSalesColumn().Period() );
+          }
           sumcell       := selectobject( column, FinancialSalesCell, c, c.FinancialSalesRow() = sumrow );
           if( isnull( sumcell ) ){
             sumcell     := column.FinancialSalesCell( relnew, Value := '0' );
             sumrow.FinancialSalesCell( relinsert, sumcell );
           }
           
-          showcell      := column.FinancialSalesCell( relnew, Value := cell.Value(), IsUpdate := cell.IsUpdate()  );
-          showrow.FinancialSalesCell( relinsert, showcell );
+          showcell            := selectobject( showrow, FinancialSalesCell, fpcell, fpcell.FinancialSalesColumn() = column );
+          if( isnull( showcell ) ){
+            showcell          := column.FinancialSalesCell( relnew, Value := '0', IsUpdate := cell.IsUpdate()  );
+            showrow.FinancialSalesCell( relinsert, showcell );
+          }
+          if( cell.IsUpdate() ){
+            isupdate          := true;
+            showcell.IsUpdate( cell.IsUpdate() );
+          }
+          showcell.Value( [String]( [Real]showcell.Value() + [Real]cell.Value() ) );
           yearcell.Value( [String]( [Real]yearcell.Value() + [Real]cell.Value() ) );
           sumyearcell.Value( [String]( [Real]sumyearcell.Value() + [Real]cell.Value() ) );
           value         := [Real]cell.Value() + [Real]sumcell.Value();
           sumcell.Value( [String]value );
         }
+        if( isupdate ){
+          yearcell.IsUpdate( isupdate );
+        }
       }
     }
     traverse( this, FinancialSalesColumn, column ){
-      if( exists( column, FinancialSalesCell, cell, cell.IsUpdate() ) ){
+      if( exists( column, FinancialSalesCell, cell, cell.IsUpdate() and cell.FinancialSalesRow().Factory() = factory ) ){
         sumcell         := selectobject( sumrow, FinancialSalesCell, sumcell, sumcell.FinancialSalesColumn() = column );
         sumcell.IsUpdate( true );
       }

--
Gitblit v1.9.3