lazhen
2024-12-05 316564c9b8ca21287def1bd25b4ce4060c8cdafe
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
75
76
77
78
79
80
81
Quintiq file version 2.0
#parent: #root
StaticMethod RefreshData (
  InterfaceDataset interface,
  MacroPlan macroPlan,
  const Archive archive
)
{
  TextBody:
  [*
    //根据当前版本的下线计划
    allunit                := OfflinePlanArchiveVersion::GetDefaultAllUnit();
    name                   := OfflinePlanArchiveVersion::GetDefaultName();//search                 := 
    interface.OfflinePlanArchiveSearch( relnew, Product := allunit, ProductionLine := allunit, Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );//, TimeUnit := Translations::MP_GlobalParameters_Day()
    table                  := selectobject( interface, OfflinePlanArchiveVersion, version, not version.IsShow() );
    if( isnull( table ) ){
      table                := interface.OfflinePlanArchiveVersion( relnew, ID := name, Name := name );
    }
    //showtable              := selectobject( interface, OfflinePlanArchiveVersion, version, version.IsShow() );
    //if( isnull( showtable ) ){
    //  showtable               := interface.OfflinePlanArchiveVersion( relnew, ID := name, Name := name, IsShow := true );
    //}
    nopcolumns             := selectuniquevalues(  macroPlan, NewOfflinePlanTable.NewOfflinePlanColumn, nopcolumn, not exists( table, Column, column, column.StartDate() = nopcolumn.StartDate() ), nopcolumn.StartDate() );//column.TimeUnit() = Translations::MP_GlobalParameters_Day() and 
    if( nopcolumns.Size() > 0 ){
      table.GenerateColumn( nopcolumns, false );
    }
    noptable               := maxobject( macroPlan, NewOfflinePlanTable, noptable, noptable.SaveDateTime() );
    actproductiondatas     := selectset( archive,ActualDailyProductionData,data,true );
    actproductiontree      := NamedValueTree::Create();
    for( i := 0; i< actproductiondatas.Size(); i++ ){
      actproduction        := actproductiondatas.Element( i );
      linename             := actproduction.Fac().Concat( ' ' );
      if( actproduction.LineName().FindString( '/', 0 ) > -1 ){
        linenames          := actproduction.LineName().Tokenize( '/' );
        traverse( linenames, Elements, e ){
          actproductionKey     := actproduction.ProductNo() + linename + e + actproduction.ProductionDate().AsQUILL();
          actproductionhandle  := actproductiontree.GetHandle( actproductionKey );
          actproductiontree.Root().AddChild( actproductionhandle,i ); 
        }
      }else{
        actproductionKey     := actproduction.ProductNo() + linename + actproduction.LineName() + actproduction.ProductionDate().AsQUILL();
        actproductionhandle  := actproductiontree.GetHandle( actproductionKey );
        actproductiontree.Root().AddChild( actproductionhandle,i ); 
      }
    }
    
    traverse( noptable, NewOfflinePlanRow, noprow, noprow.Type() = '1' ){
      row                  := table.GetRow( noprow );
      if( not isnull( row ) ){
        traverse( noprow, NewOfflinePlanCell, nopcell ){
          column             := selectobject( table, Column, column, column.StartDate() = nopcell.NewOfflinePlanColumn().StartDate() );//column.TimeUnit() = Translations::MP_GlobalParameters_Day() and 
          cell               := selectobject( row, Cell, cell, cell.Column() = column );
          actproductionKey   := noprow.ProductID() + noprow.ProductionLine() + column.StartDate().AsQUILL();
          actproductionhandle:= actproductiontree.GetHandle( actproductionKey );
          actproductionindex := guard( actproductiontree.Root().Child( actproductionhandle ),null( NamedValue ));
          actproductionqty       := 0.0;
          if( not isnull( actproductionindex )){
            actproduction        := actproductiondatas.Element( actproductionindex.GetValueAsNumber() );
            actproductionqty     := actproduction.ActualOut();
          }
          if( isnull( cell ) ){
            cell             := row.Cell( relnew, InventoryWeight := 0, ProductionSerialNumber := 0, Quantity := 0, Shift := '', Value := '' );
            column.Cell( relinsert, cell );
          }
          cell.ActualProductionQty( actproductionqty );
          cell.InventoryWeight( nopcell.InventoryWeight() );
          cell.Order( nopcell.Order() );
          cell.OrderNr( nopcell.OrderNr() );
          cell.Note( nopcell.Note() );
      //      cell.ProductionSerialNumber( nopcell.ProductionSerialNumber() );
          cell.Quantity( nopcell.Quantity() );
      //      cell.Shift( nopcell.Shift() );
      //      cell.Value( nopcell.Value() );
        }
      }
    }
    //productids             := selectuniquevalues( table, Row, row, row.Name() );
    //productlines           := selectuniquevalues( table, Row, row, row.ProductionLine() );
    //showtable.Generate( search, productids, productlines );
  *]
}