Use FLEX hours, even not full day
This commit is contained in:
parent
16eace739a
commit
2a12aa0bf7
1 changed files with 34 additions and 15 deletions
49
app.js
49
app.js
|
|
@ -792,7 +792,8 @@ function feriefridageRemainingAfterApprovedPlans(settings, entries, today, balan
|
|||
function allocateDay(entry, date, balances, settings, fraction = 1) {
|
||||
const source = entry.source;
|
||||
const allowUnpaid = Boolean(Number(entry.allow_unpaid));
|
||||
const dayHours = hoursForDate(date, settings) * fraction;
|
||||
const baseDayHours = hoursForDate(date, settings);
|
||||
const dayHours = baseDayHours * fraction;
|
||||
let { vacationBalance, feriefridageBalance, flexBalance } = balances;
|
||||
const result = { usedVacation: 0, usedFeriefridage: 0, usedFlex: 0, usedFlexDays: 0, usedUnpaid: 0 };
|
||||
|
||||
|
|
@ -824,8 +825,8 @@ function allocateDay(entry, date, balances, settings, fraction = 1) {
|
|||
if (allowUnpaid && flexBalance < dayHours) {
|
||||
const useHours = Math.max(0, flexBalance);
|
||||
result.usedFlex += useHours;
|
||||
result.usedFlexDays += useHours / hoursForDate(date, settings);
|
||||
result.usedUnpaid += fraction - (useHours / hoursForDate(date, settings));
|
||||
result.usedFlexDays += useHours / baseDayHours;
|
||||
result.usedUnpaid += fraction - (useHours / baseDayHours);
|
||||
flexBalance = 0;
|
||||
} else {
|
||||
result.usedFlex += dayHours;
|
||||
|
|
@ -843,19 +844,37 @@ function allocateDay(entry, date, balances, settings, fraction = 1) {
|
|||
} else if (source === 'flex') {
|
||||
useFlex();
|
||||
} else {
|
||||
if (feriefridageBalance >= fraction && isBeforeFeriefridageExpiry(date, settings)) {
|
||||
useFeriefridag();
|
||||
} else if (vacationBalance >= fraction) {
|
||||
useVacation();
|
||||
} else if (flexBalance >= dayHours) {
|
||||
useFlex();
|
||||
} else if (allowUnpaid) {
|
||||
const use = Math.max(0, vacationBalance);
|
||||
let remaining = fraction;
|
||||
|
||||
if (remaining > 0 && feriefridageBalance > 0 && isBeforeFeriefridageExpiry(date, settings)) {
|
||||
const use = Math.min(feriefridageBalance, remaining);
|
||||
result.usedFeriefridage += use;
|
||||
feriefridageBalance -= use;
|
||||
remaining -= use;
|
||||
}
|
||||
|
||||
if (remaining > 0 && vacationBalance > 0) {
|
||||
const use = Math.min(vacationBalance, remaining);
|
||||
result.usedVacation += use;
|
||||
result.usedUnpaid += fraction - use;
|
||||
vacationBalance = 0;
|
||||
} else {
|
||||
useVacation();
|
||||
vacationBalance -= use;
|
||||
remaining -= use;
|
||||
}
|
||||
|
||||
if (remaining > 0 && flexBalance > 0) {
|
||||
const use = Math.min(flexBalance / baseDayHours, remaining);
|
||||
result.usedFlex += use * baseDayHours;
|
||||
result.usedFlexDays += use;
|
||||
flexBalance -= use * baseDayHours;
|
||||
remaining -= use;
|
||||
}
|
||||
|
||||
if (remaining > 0) {
|
||||
if (allowUnpaid) {
|
||||
result.usedUnpaid += remaining;
|
||||
} else {
|
||||
result.usedVacation += remaining;
|
||||
vacationBalance -= remaining;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue