fixed double shift for replacement when day-shift member has time off, added setting for how many days ahead to look during a day-shift replacement check
This commit is contained in:
16
shifts.ps1
16
shifts.ps1
@@ -179,13 +179,14 @@ $allemails = $schedule.PSObject.Properties | ForEach-Object {
|
||||
# --------------------------- | DATE SETTINGS | ---------------------------
|
||||
|
||||
# ---| Today's date |---
|
||||
$today = (Get-Date).Date
|
||||
#$today = (Get-Date).Date
|
||||
|
||||
# ---| Specific date |---
|
||||
#$today = Get-Date -Day 20 -Month 10 -Year 2025 -Hour 9 -Minute 00 -Second 00 -Millisecond 00
|
||||
$today = Get-Date -Day 2 -Month 12 -Year 2025 -Hour 9 -Minute 00 -Second 00 -Millisecond 00
|
||||
|
||||
$daysahead = 14 #How many days ahead to plan
|
||||
$daysahead = 30 #How many days ahead to plan
|
||||
$timeoff_past_look = -7 #How many days to look into the past for the start of a multi-day time off
|
||||
$ds_replace_daysahead = 14 #How many days ahead do we look for a day-shift replacement
|
||||
|
||||
# ---| Time span |---
|
||||
$startSpanDate = Get-Date -Day $today.Day -Month $today.Month -Year $today.Year -Hour 9 -Minute 00 -Second 00 -Millisecond 00
|
||||
@@ -307,10 +308,10 @@ try {
|
||||
# ---| DAY SHIFT REPLACEMENT CHECK |---
|
||||
else {
|
||||
Write-Debug("{0} {1}: looking ahead for a day shift replacement" -f $dayDate, $dayDate.DayOfWeek)
|
||||
$remainingdays = $timespan.Days - $dayNumber
|
||||
#$remainingdays = $timespan.Days - $dayNumber
|
||||
|
||||
# ---| FUTURE DAYS LOOP |---
|
||||
for ($daysahead = 1; $daysahead -lt $remainingdays; $daysahead++) {
|
||||
for ($daysahead = 1; $daysahead -lt $ds_replace_daysahead; $daysahead++) {
|
||||
$futureday = $dayDate.AddDays($daysahead)
|
||||
|
||||
# ---| WEEKEND CHECK |---
|
||||
@@ -327,9 +328,14 @@ try {
|
||||
# ---| THE NEXT IN LINE FOR THE DAY-SHIFT DOESN'T HAVE TIME OFF, NO-SHIFT OR ON-SITE |---
|
||||
if((Invoke-HasTimeOff -UID $futureds_id -timeoff $timeoff_today -mail $futureds_email) -eq $false -and ($futureds_email -notin $os_emails) -and ($futureds_email -notin $ns_emails)) {
|
||||
|
||||
$shifts_today = [Object[]] $allshifts | Where-Object -Filter {
|
||||
$_.schedulingGroupId -eq $group.Id -and $_.SharedShift.StartDateTime.ToString("yyyy-MM-dd HH:mm") -ge $dateStart.ToString("yyyy-MM-dd HH:mm") -and $_.SharedShift.EndDateTime.ToString("yyyy-MM-dd HH:mm") -le $dateEnd.ToString("yyyy-MM-dd HH:mm")
|
||||
}
|
||||
|
||||
# ---| NEXT IN LINE DOESN'T HAVE A SHIFT ALREADY |---
|
||||
if((Invoke-HasShift -UID $futureds_id -shifts $shifts_today -mail $futureds_email) -eq $false) {
|
||||
|
||||
|
||||
# ---| HOME-OFFICE DAY SHIFT |---
|
||||
if($futureds_email -in $ho_emails) {
|
||||
$newshift = Set-Shift -userId $futureds_id -groupID $group.id -shiftName "Home Office - Denní směna" -StartDate $dateStart -EndDate $dateEnd -color "purple" -teamID $team.id -mail $futureds_email
|
||||
|
||||
Reference in New Issue
Block a user