yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
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
Quintiq file version 2.0
#parent: #root
Method Update (
  String username_i,
  String name_i,
  String description_i,
  Boolean isfromdb_i
) as OptimizerPuzzle
{
  TextBody:
  [*
    // Gets the WIP object user editing, to overwrite (or create new) OptimizerPuzzle
    wip := select( this, 
                   OptimizerPuzzleWIP, 
                   w, 
                   w.Username() = username_i );
    
    opti := null( OptimizerPuzzle );
    
    // Copy
    if( wip.CreateAsNew() )
    {
      opti := OptimizerPuzzle::Create( wip.OptimizerPuzzle().MacroPlan(), 
                               name_i,
                               description_i,
                               false,      // IsLastUsed
                               isfromdb_i, // IsFromDB
                               wip );
    }
    // Edit
    else
    {
      // Update Name, Description and IsManuallyConfigured
      this.Update( name_i, description_i, isfromdb_i );
      
      // Copy Subsets from OptimizerPuzzleWIP to OptimizerPuzzle
      wip.SyncSubsetAll( this );
      
      opti := this;
      
      // Delete the wip ( this is done in OptimizerPuzzle::Create for copy / create )
      wip.Delete();
    }
    
    return opti;
  *]
}