Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method AfterImport 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // 甄兰鸽 Jun-24-2024 (created) 
 | 
    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" ); 
 | 
    cnv2.CustomFormatString( "MM/dd/yyyy" ); 
 | 
    traverse( this, FinancialSalesReport, report ){ 
 | 
      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 ); 
 | 
         
 | 
        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 ); 
 | 
        if( isnull( unitrow ) ){ 
 | 
          allrow            := table.FinancialSalesRow( relnew, Name := product.Value(), Unit := allunit ); 
 | 
        } 
 | 
         
 | 
        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 ); 
 | 
          //获取被导入报表的日期列 
 | 
          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{ 
 | 
            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() ); 
 | 
          if( isnull( unitcell ) ){ 
 | 
            allcell         := tablecolumn.FinancialSalesCell( relnew, Value := cell.Value() ); 
 | 
            allrow.FinancialSalesCell( relinsert, allcell ); 
 | 
          }else{ 
 | 
            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 ); 
 | 
              } 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |