From 4be2a228025a44c7cc4a1fec31d5ade0f84a988b Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期一, 14 十月 2024 16:49:11 +0800
Subject: [PATCH] 财务产量/销量报表查询条件多选

---
 _Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl |   75 +++++++++++++++++++++++++++----------
 1 files changed, 54 insertions(+), 21 deletions(-)

diff --git a/_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl b/_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl
index 1ddcfd6..8c0cd6a 100644
--- a/_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl
+++ b/_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl
@@ -5,34 +5,67 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-24-2024 (created)
-    allunit := FinancialProductionReport::GetDefaultAllUnit();
-    table   := selectobject( this.MacroPlan(), FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and not table.IsShow() );
-    //info( '--------------------------', table.Name() );
+    allunit                 := FinancialProductionReport::GetDefaultAllUnit();
+    table                   := selectobject( this.MacroPlan(), FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and not table.IsShow() );
+    yearday                 := this.MacroPlan().StartOfPlanning().StartOfYear();
+    beforeyearday           := ( yearday - Duration::Days( 1 ) ).Date();
+    cnv2                    := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( "M2/D2/Y" );
     traverse( this, FinancialSalesReport, report ){
-      productcolumn := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Product' );
-      unitcolumn    := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Unit' );
-    //  info( '----------------------1-----------------', productcolumn.Name(), unitcolumn.Name() );
+      productcolumn         := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Product' );
+      unitcolumn            := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Unit' );
       
       traverse( report, FinancialSalesRow, row ){
-        product := selectobject( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() = productcolumn );
-        unit    := selectobject( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() = unitcolumn );
-    //    info( '----------------------2-----------------', product.Value(), unit.Value() );
+        product             := selectobject( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() = productcolumn );
+        unit                := selectobject( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() = unitcolumn );
         
-        unitrow := selectobject( table, FinancialSalesRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() );
+        unitrow             := selectobject( table, FinancialSalesRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() );
+        if( isnull( unitrow ) ){
+          unitrow           := table.FinancialSalesRow( relnew, Name := product.Value(), Unit := unit.Value() );
+        }
         allrow  := selectobject( table, FinancialSalesRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit );
-    //    info( '----------------------3-----------------', unitrow.Name(), unitrow.Unit() );
-        // and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)'
+        if( isnull( unitrow ) ){
+          allrow            := table.FinancialSalesRow( relnew, Name := product.Value(), Unit := allunit );
+        }
+        
         traverse( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() <> productcolumn and cell.FinancialSalesColumn() <> unitcolumn ){
-          column   := cell.FinancialSalesColumn();
-          unitcell := selectobject( unitrow, FinancialSalesCell, unitcell, unitcell.FinancialSalesColumn().Name() = column.Name() );
-          allcell  := selectobject( allrow, FinancialSalesCell, allcell, allcell.FinancialSalesColumn().Name() = column.Name() );
-    //      info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() );
-          if( not isnull( unitcell ) ){
-            unitcell.Value( cell.Value() );
+          column            := cell.FinancialSalesColumn();
+          period            := cnv2.Convert( column.Name() )
+          
+          tablecolumn       := construct( FinancialSalesColumn );
+          if( period = beforeyearday ){
+            periodname      := yearday.Format( "M2/D2/Y" );
+            //鑾峰彇琚鍏ユ姤琛ㄧ殑鏃ユ湡鍒�
+            tablecolumn     := selectobject( table, FinancialSalesColumn, fscolumn, not fscolumn.IsDay() and fscolumn.Name() = periodname );
+            if( isnull( tablecolumn ) ){
+              tablecolumn   := table.FinancialSalesColumn( relnew, Name := periodname, Period := yearday.Date() );
+            }
+          }else{
+            tablecolumn     := selectobject( table, FinancialSalesColumn, fscolumn, not fscolumn.IsDay() and fscolumn.Name() = column.Name() );
+            if( isnull( tablecolumn ) ){
+              tablecolumn   := table.FinancialSalesColumn( relnew, Name := column.Name(), Period := cnv2.Convert( column.Name() ) );
+            }
           }
-          if( not isnull( allcell ) ){
-            value := [Real]cell.Value() + [Real]allcell.Value();
-            allcell.Value( [String]value );
+          unitcell := selectobject( unitrow, FinancialSalesCell, unitcell, unitcell.FinancialSalesColumn().Name() = column.Name() );
+          if( isnull( unitcell ) ){
+            unitcell        := tablecolumn.FinancialSalesCell( relnew, Value := cell.Value() );
+            unitrow.FinancialSalesCell( relinsert, unitcell );
+          }else{
+            if( unitcell.Value() <> cell.Value() ){
+              unitcell.Value( cell.Value() );
+              unitcell.IsUpdate( true );
+            }
+          }
+          allcell  := selectobject( allrow, FinancialSalesCell, allcell, allcell.FinancialSalesColumn().Name() = column.Name() );
+          if( isnull( unitcell ) ){
+            allcell         := tablecolumn.FinancialSalesCell( relnew, Value := cell.Value() );
+            allrow.FinancialSalesCell( relinsert, allcell );
+          }else{
+            if( allcell.Value() <> cell.Value() ){
+              allcell.Value( cell.Value() );
+              allcell.IsUpdate( true );
+            }
           }
         }
       }

--
Gitblit v1.9.3