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