Hi @Erng2 ,
I've read the two issues that you posted.
Based on the formula that you provided, please do not add directly the formula provided by others below the original formula.
You need to understand evert part's formula's meaning.
Firstly, this formula is to calculate the amount of days:
If(
Fullday_2.Value,
Set(vDaysLeave,
RoundDown(DateDiff(LeaveStartDatePicker_3.SelectedDate, LeaveEndDatePicker_3.SelectedDate, Days) / 7, 0) * 5 +
Mod(5 + Weekday(LeaveEndDatePicker_3.SelectedDate) - Weekday(LeaveStartDatePicker_3.SelectedDate), 5)
+ If(AM_1.Value,0.5,1)
+ If(PM_1.Value,-0.5)
- CountIf(HolidaysCollection,Date>=LeaveStartDatePicker_3.SelectedDate,Date<=LeaveEndDatePicker_3.SelectedDate)
)
,
AM_1.Value || PM_1.Value,
Set(vDaysLeave,
0.5
)
)
Variable vDaysLeave represents the requested days.
Secondly, please find where the original formula need the requested days.
Obviously, that is this part:
Set(_inclusiveTotalDaysRequested, DateDiff(LeaveStartDatePicker.SelectedDate, LeaveEndDatePicker.SelectedDate, Days) + 1)
So you just need to replace the original requested day with your new requested day.
To sum up, try to set LeaveStartDatePicker's OnSelect like this:
If(LeaveStartDatePicker.SelectedDate <= LeaveEndDatePicker.SelectedDate,
If(
Fullday_2.Value,
Set(_inclusiveTotalDaysRequested,
RoundDown(DateDiff(LeaveStartDatePicker.SelectedDate, LeaveEndDatePicker.SelectedDate, Days) / 7, 0) * 5 +
Mod(5 + Weekday(LeaveEndDatePicker.SelectedDate) - Weekday(LeaveStartDatePicker.SelectedDate), 5)
+ If(AM_1.Value,0.5,1)
+ If(PM_1.Value,-0.5)
- CountIf(HolidaysCollection,Date>=LeaveStartDatePicker.SelectedDate,Date<=LeaveEndDatePicker.SelectedDate)
)
,
AM_1.Value || PM_1.Value,
Set((_inclusiveTotalDaysRequested,
0.5
)
);
Set(_numFullWeeks, RoundDown(_inclusiveTotalDaysRequested / 7, 0));
Set(_numFullDaysPartialWeek, _inclusiveTotalDaysRequested - _numFullWeeks * 7);
Concurrent(Set(_startWeekday, Weekday(LeaveStartDatePicker.SelectedDate)), Set(_endWeekday, Weekday(LeaveEndDatePicker.SelectedDate)));
//calculates the number of business days in the partial week left over after whole weeks are subtracted out of total days requested
If(_numFullDaysPartialWeek = 6,
If(_startWeekday <= 2, Set(_numPartialWeekdays, 5), Set(_numPartialWeekdays, 4)
),
_numFullDaysPartialWeek = 5,
If(_startWeekday = 2, Set(_numPartialWeekdays, 5), _startWeekday = 1 || _startWeekday = 3 || _startWeekday = 4, Set(_numPartialWeekdays, 4), Set(_numPartialWeekdays, 3)
),
_numFullDaysPartialWeek = 4,
If(_startWeekday = 2 || _startWeekday = 3, Set(_numPartialWeekdays, 4), _startWeekday = 1 || _startWeekday = 4, Set(_numPartialWeekdays, 3), Set(_numPartialWeekdays, 2)
),
_numFullDaysPartialWeek = 3,
If(_startWeekday = 6 || _startWeekday = 7, Set(_numPartialWeekdays, 1), _startWeekday = 1 || _startWeekday = 5, Set(_numPartialWeekdays, 2), Set(_numPartialWeekdays, 3)
),
_numFullDaysPartialWeek = 2,
If(_startWeekday = 7, Set(_numPartialWeekdays, 0), _startWeekday = 1 || _startWeekday = 6, Set(_numPartialWeekdays, 1), Set(_numPartialWeekdays, 2)),
_numFullDaysPartialWeek = 1,
If(_startWeekday = 1 || _startWeekday = 7, Set(_numPartialWeekdays, 0), Set(_numPartialWeekdays, 1)
),
_numFullDaysPartialWeek = 0, Set(_numPartialWeekdays, 0)
);
Set(_workDaysInRequest, _numFullWeeks * 5 + _numPartialWeekdays);
Set(_holidaysInRequest, CountIf(HolidaysCollection, StartDate >= LeaveStartDatePicker.SelectedDate, StartDate <= LeaveEndDatePicker.SelectedDate));
Set(_requestedDays, _workDaysInRequest - _holidaysInRequest)
)
Best regards,