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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Quintiq file version 2.0
#parent: #root
StaticMethod SetUnitShiftPattern (
  MacroPlan macroPlan,
  UnitPeriodTimes unitPeriodTimes,
  ShiftPattern shiftPattern
)
{
  TextBody:
  [*
    // Akari Oct-10-2024 (created)
    firstElement := minselect( unitPeriodTimes, Elements, e, true, e.Start() );
    
    start := macroPlan.Start();
    timeunit := macroPlan.StartOfPlanningPeriod().TimeUnit();
    maintenance := Duration::Zero();
    efficiency := 1.0;
    allocation := 1.0;
    
    maxloadpercentage := macroPlan.GlobalParameters_MP().DefaultMaxLoadPercentage();
    nrofunitopen := 1;
    minloadthreshold := 0.0;
    
    if( not isnull( firstElement ) ){
      // To inherit the value from last unit availability while creating a new unit availability
      unitavailability := firstElement.UnitAvailability();
      start := firstElement.Start();
    
      if( not isnull( unitavailability ) ){
        timeunit := unitavailability.TimeUnit();
        maintenance := unitavailability.Maintenance();
        efficiency := unitavailability.Efficiency();
        allocation := unitavailability.Allocation();
    
        maxloadpercentage := unitavailability.MaximumLoadPercentage();
        nrofunitopen := unitavailability.NrOfUnitsOpen();
        minloadthreshold := unitavailability.MinimumLoadThreshold();
      }else{
        timeunit := firstElement.Period_MP().TimeUnit();
        maintenance := firstElement.Maintenance();
        efficiency := firstElement.Efficiency();
        allocation := firstElement.Allocation();
    
        maxloadpercentage := firstElement.MaximumLoadPercentage();
        nrofunitopen := firstElement.NrOfOpen();
        minloadthreshold := firstElement.MinimumLoadThreshold();
      }
    }
    
    traverse( unitPeriodTimes,Elements,unitPeriodTime,isnull( unitPeriodTime.UnitAvailability())){
    //  UnitAvailability::Create( unitPeriodTime.Unit(),
    //                            unitPeriodTime.Start(),
    //                            timeunit,
    //                            maintenance,
    //                            efficiency,
    //                            allocation,
    //                            shiftPattern,
    //                            maxloadpercentage,
    //                            nrofunitopen,
    //                            minloadthreshold,
    //                            true );
      unitPeriodTime.CalcUnitAvailability();
    }
    
    isbatchedit := unitPeriodTimes.Size() > 1;
    UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes,
                                                        not isbatchedit or false,
                                                        timeunit,
                                                        maintenance,
                                                        not isbatchedit or false,
                                                        efficiency,
                                                        false,
                                                        allocation,
                                                        not isbatchedit or true,
                                                        shiftPattern,
                                                        not isbatchedit or false,
                                                        maxloadpercentage,
                                                        not isbatchedit or false,
                                                        nrofunitopen,
                                                        false,
                                                        not isbatchedit or false,
                                                        minloadthreshold
                                                       );
    //UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes,
    //                                                    not isbatchedit or CheckBoxBatchEditMaintenance.Checked(),
    //                                                    data.TimeUnit(),
    //                                                    data.Maintenance(),
    //                                                    not isbatchedit or CheckBoxBatchEditEfficiency.Checked(),
    //                                                    data.Efficiency(),
    //                                                    false,
    //                                                    data.Allocation(),
    //                                                    not isbatchedit or CheckBoxBatchEditShiftPattern.Checked(),
    //                                                    data.ShiftPattern(),
    //                                                    not isbatchedit or CheckBoxBatchEditMaxLoadPercentage.Checked(),
    //                                                    data.MaximumLoadPercentage(),
    //                                                    not isbatchedit or CheckBoxBatchEditNrOfUnitsOpen.Checked(),
    //                                                    data.NrOfUnitsOpen(),
    //                                                    DataHolderFromThisPeriodOnward.Data(),
    //                                                    not isbatchedit or CheckBoxBatchEditMinimumLoadThreshold.Checked(),
    //                                                    data.MinimumLoadThreshold()
    //                                                   );
  *]
}