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
82
83
84
85
| Quintiq file version 2.0
| #parent: #root
| Method Copy (
| SupplyChainView supplychainview,
| Unit parent
| ) as Unit
| {
| Description: 'Copy a unit'
| TextBody:
| [*
| // Copy unit
| unitNode := select( this, UnitNode, un, un.ViewBase() = supplychainview );
| unitname := this.GetNewCopiedUnitName();
| unitid := unitname; // Use copied name as ID during copy
|
| newunit := null( Unit );
|
| newunit := Unit::Create( unitid,
| this.MacroPlan(),
| unitname,
| parent,
| this.CapacityType(),
| this.Group(),
| this.UnitOfMeasure_MP(),
| this.Currency_MP(),
| supplychainview,
| unitNode.IsVisible(),
| unitNode.GridX() + 3 ,
| unitNode.GridY(),
| this.StartDate(),
| this.EndDate(),
| this.CampaignTypeDuration(),
| this.IsPlannedInfinite(),
| this.MinimumQuantity(),
| this.HasMaximumQuantity(),
| this.MaximumQuantity(),
| this.LotSize(),
| this.IconName(),
| '',
| unitNode.NameDisplayBehavior(),
| '',
| this.QuantityToProcess(),
| this.GISCountryCode(),
| this.GISCity(),
| this.GISPostalCode(),
| this.Notes(),
| this.HasCapacitySmoothing(),
| this.IsSmoothCapacityOverAllPeriods(),
| this.UserCapacitySmoothingLength(),
| this.CapacitySmoothingPercentageDelta(),
| this.IsOverlapCapacitySmoothing(),
| this.IsIncludedInSupplySpecification(),
| this.IsSupplier(),
| this.HasUserFrozenFutureDuration(),
| this.UserFrozenFutureDuration(),
| this.UseShiftOptimization(),
| false );
|
| //set relation to the source unit
| newunit.Original( relset, this );
|
| allchildrenunit := selectsortedset( this, Child, u, true, u.Level() );
| traverse( allchildrenunit, Elements, el )
| {
| el.Copy( supplychainview, newunit );
|
| }
|
| // Copy stockingpointunit
| traverse( this, StockingPointUnit, spu )
| {
| newunit.LinkToStockingPoint( spu.StockingPoint_MP(), spu.IsInput() );
| }
|
| // Copy assignments and costs
| // Copying unit will not copy the operation, lane, and lane leg.
| // Therefore, we should not copy the corresponding operation/lane/laneleg cost.
| traverse( this, UnitAccount, ua, AccountAssignment::IsForUnit( ua.CostDriver() ) )
| {
| ua.Copy( newunit );
| }
|
| return newunit;
| *]
| }
|
|