xiaoding721
2024-10-16 acffa3d576342b2d24001d8410d53e6972eeb9e5
_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl
@@ -30,32 +30,30 @@
          allrow            := table.FinancialSalesRow( relnew, Name := product.Value(), Unit := allunit );
        }
        
        traverse( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() <> productcolumn and cell.FinancialSalesColumn() <> unitcolumn ){
        traverse( row, FinancialSalesCell, cell, cell.FinancialSalesColumn() <> productcolumn and cell.FinancialSalesColumn() <> unitcolumn and cnv2.Convert( cell.FinancialSalesColumn().Name() ) <> beforeyearday  ){
          column            := cell.FinancialSalesColumn();
          period            := cnv2.Convert( column.Name() )
          periodname        := period.Format( "M2/D2/Y" )
          
          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() ) );
            }
          //获取被导入报表的日期列
          tablecolumn     := selectobject( table, FinancialSalesColumn, fscolumn, not fscolumn.IsDay() and fscolumn.Name() = periodname );
          if( isnull( tablecolumn ) ){
            tablecolumn   := table.FinancialSalesColumn( relnew, Name := periodname, Period := yearday.Date() );
          }
          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 );
            previouscolumn  := cell.FinancialSalesColumn().PreviousColumn();
            if( period = yearday.Date() and not isnull( previouscolumn ) and beforeyearday = cnv2.Convert( previouscolumn.Name() ) ){
              previouscell  := selectobject( row, FinancialSalesCell, previouscell, previouscell.FinancialSalesColumn() = previouscolumn );
              quantity      := [Real]cell.Value() + [Real]previouscell.Value();
              if( [Real]unitcell.Value() <> quantity ){
                unitcell.Value( [String]( [Number]cell.Value() ) );
                unitcell.IsUpdate( true );
              }
            }
          }
          allcell  := selectobject( allrow, FinancialSalesCell, allcell, allcell.FinancialSalesColumn().Name() = column.Name() );
@@ -63,9 +61,14 @@
            allcell         := tablecolumn.FinancialSalesCell( relnew, Value := cell.Value() );
            allrow.FinancialSalesCell( relinsert, allcell );
          }else{
            if( allcell.Value() <> cell.Value() ){
              allcell.Value( cell.Value() );
              allcell.IsUpdate( true );
            previouscolumn  := cell.FinancialSalesColumn().PreviousColumn();
            if( period = yearday.Date() and not isnull( previouscolumn ) and beforeyearday = cnv2.Convert( previouscolumn.Name() ) ){
              previouscell  := selectobject( row, FinancialSalesCell, previouscell, previouscell.FinancialSalesColumn() = previouscolumn );
              quantity      := [Real]cell.Value() + [Real]previouscell.Value();
              if( [Real]allcell.Value() <> quantity ){
                allcell.Value( [String]( [Number]cell.Value() ) );
                allcell.IsUpdate( true );
              }
            }
          }
        }