diff --git a/doc/functional-rules.md b/doc/functional-rules.md index 0bb6dec..ffd0b80 100644 --- a/doc/functional-rules.md +++ b/doc/functional-rules.md @@ -148,7 +148,7 @@ Documents complementaires: - Validation: même logique que les heures classiques (`isValid`, `isSiteValid`, bulk) - Vue semaine: - jour/nuit/atelier par jour + indicateurs repas/dîner/nuitée - - panier de nuit (PN): affiché par jour si nightMinutes > dayMinutes, et total hebdo dans la colonne Jour/Nuit sem. + - panier de nuit (PN): affiché par jour si (nightMinutes > dayMinutes) OU (nightMinutes >= 240, soit au moins 4h de travail entre 21h et 6h), et total hebdo dans la colonne Jour/Nuit sem. - totaux hebdo: jour, nuit, atelier, total, compteurs petit déj/déjeuner/dîner/nuitée - pas de calcul d'heures supplémentaires pour les conducteurs - Le flag `isDriver` est sur `EmployeeContractPeriod` (un employé peut changer de statut chauffeur selon la période) @@ -325,7 +325,7 @@ Tous les filtres checkbox sont cochés par défaut à l'ouverture du drawer. | Base | Contract.name | Via EmployeeContractResolver pour le mois | | Jour de présence Cadre | WorkHour | Uniquement FORFAIT (PRESENCE). Somme isPresentMorning (0.5) + isPresentAfternoon (0.5) | | Heures de nuit | WorkHour | Non-chauffeurs: calcul intervalles nuit (00:00-06:00, 21:00-24:00). Chauffeurs: somme nightHoursMinutes | -| Panier de nuit | WorkHour | Nombre de jours où nightMinutes > dayMinutes | +| Panier de nuit | WorkHour | Nombre de jours où (nightMinutes > dayMinutes) OU (nightMinutes >= 240, soit 4h entre 21h-6h) | | Heures payés | EmployeeRttPayment | Somme base25Minutes + base50Minutes du mois, convertie en heures | | Congés - Nombre | Absence code 'C' | Jours (demi-journées = 0.5) | | Congés - Date | Absence code 'C' | Dates formatées dd/mm | diff --git a/frontend/components/employees/RttTab.vue b/frontend/components/employees/RttTab.vue index 93b985e..6844ce9 100644 --- a/frontend/components/employees/RttTab.vue +++ b/frontend/components/employees/RttTab.vue @@ -64,7 +64,7 @@ - + Report - {{ formatMinutes(summary!.carryBase25Minutes) }} @@ -77,7 +77,7 @@ - + Report - {{ formatMinutes(monthReport.base25) }} diff --git a/src/State/SalaryRecapPrintProvider.php b/src/State/SalaryRecapPrintProvider.php index 226113d..814618f 100644 --- a/src/State/SalaryRecapPrintProvider.php +++ b/src/State/SalaryRecapPrintProvider.php @@ -298,7 +298,7 @@ class SalaryRecapPrintProvider implements ProviderInterface $nightMinutesTotal += $wh->getNightHoursMinutes() ?? 0; $dayMin = $wh->getDayHoursMinutes() ?? 0; $nightMin = $wh->getNightHoursMinutes() ?? 0; - if ($nightMin > $dayMin && $nightMin > 0) { + if (($nightMin > $dayMin && $nightMin > 0) || $nightMin >= 240) { ++$nightBasketCount; } @@ -322,7 +322,7 @@ class SalaryRecapPrintProvider implements ProviderInterface } else { $metrics = $this->computeNightMinutes($wh); $nightMinutesTotal += $metrics['nightMinutes']; - if ($metrics['nightMinutes'] > $metrics['dayMinutes'] && $metrics['nightMinutes'] > 0) { + if (($metrics['nightMinutes'] > $metrics['dayMinutes'] && $metrics['nightMinutes'] > 0) || $metrics['nightMinutes'] >= 240) { ++$nightBasketCount; } diff --git a/src/State/WorkHourWeeklySummaryProvider.php b/src/State/WorkHourWeeklySummaryProvider.php index e1b0cd5..dafb34a 100644 --- a/src/State/WorkHourWeeklySummaryProvider.php +++ b/src/State/WorkHourWeeklySummaryProvider.php @@ -271,7 +271,7 @@ final readonly class WorkHourWeeklySummaryProvider implements ProviderInterface $present = min(1.0, $morning + $afternoon + $creditedPresence); } - $hasNightBasket = $nightMinutes > $dayMinutes && $nightMinutes > 0; + $hasNightBasket = ($nightMinutes > $dayMinutes && $nightMinutes > 0) || $nightMinutes >= 240; if ($hasNightBasket) { ++$weeklyNightBasketCount; }