| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod BatchSetUnitShiftPattern ( | 
|   Unit unit, | 
|   ShiftPattern shiftPattern, | 
|   Date startDate, | 
|   Date endDate, | 
|   Numbers weekdays, | 
|   Number skipWeek | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     // Akari Oct-10-2024 (created) | 
|     owner := unit.MacroPlan(); | 
|      | 
|     saveDays := construct( Dates ); | 
|     flag := startDate.StartOfNextWeek(); | 
|     for( i := startDate; i<endDate; i := i + 1 ){ | 
|       if( i < flag ){ | 
|         saveDays.Add( i );  | 
|       }else{ | 
|         temp := skipWeek - 1; | 
|         while( temp > 0 ){ | 
|           i := flag; | 
|           flag := i.StartOfNextWeek(); | 
|           temp--; | 
|            | 
|           info( i.Format( "Y-M2-D2") ); | 
|           info( flag.Format( "Y-M2-D2") ); | 
|         } | 
|       } | 
|     } | 
|      | 
|     info( "----------------------------"); | 
|      | 
|     traverse( saveDays,Elements,element ){ | 
|       info( element.Format( "Y-M2-D2"));  | 
|     } | 
|      | 
|     dayPeriod_MPs := selectsortedset( owner,Period_MP,period_MP,  | 
|                                       period_MP.TimeUnit() = 'Day' and  | 
|                                       period_MP.StartDate() >= startDate and  | 
|                                       period_MP.EndDate() <= endDate and exists( weekdays, Elements,dayOfWeek,dayOfWeek = period_MP.StartDate().DayOfWeek() ) ,period_MP.StartDate()); | 
|     weekPeriod_MPs := selectsortedset( owner,Period_MP,period_MP,  | 
|                                        period_MP.TimeUnit() = 'Week' and  | 
|                                        period_MP.StartDate() >= startDate and  | 
|                                        period_MP.EndDate() <= endDate and exists( weekdays, Elements,dayOfWeek,dayOfWeek = period_MP.StartDate().DayOfWeek() ),period_MP.StartDate()); | 
|      | 
|      | 
|     if( dayPeriod_MPs.Size() > 0 ){ | 
|       unitPeriodTimes := selectset( unit,UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( dayPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP())); | 
|       if( unitPeriodTimes.Size() > 0 ){ | 
|         LocalTool::SetUnitShiftPattern( owner,unitPeriodTimes,shiftPattern ); | 
|       } | 
|     } | 
|     if( weekPeriod_MPs.Size() <> 0 ){ | 
|       traverse( weekPeriod_MPs,Elements,period_MP ){ | 
|         unitPeriodTimes := selectset( unit,UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP()); | 
|         if( unitPeriodTimes.Size() > 0 ){ | 
|           LocalTool::SetUnitShiftPattern( owner,unitPeriodTimes,shiftPattern ); | 
|         } | 
|       } | 
|     } | 
|   *] | 
| } |