| 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() | 
|     //                                                   ); | 
|   *] | 
| } |