admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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 );
      }
    }
  *]
}