Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method GenerateShow ( 
 | 
  FinancialSalesReport table, 
 | 
  FinancialSalesColumn yearcolumn, 
 | 
  Strings productids, 
 | 
  String factory 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // 甄兰鸽 Oct-12-2024 (created) 
 | 
    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 ); 
 | 
    //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 ) ){ 
 | 
        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 ){ 
 | 
          column        := selectobject( this, FinancialSalesColumn, column, column.Name() = cell.FinancialSalesColumn().Name() ); 
 | 
          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            := 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() and cell.FinancialSalesRow().Factory() = factory ) ){ 
 | 
        sumcell         := selectobject( sumrow, FinancialSalesCell, sumcell, sumcell.FinancialSalesColumn() = column ); 
 | 
        sumcell.IsUpdate( true ); 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |