Non-forfait header now shows '{weeklyHours} heures ({presence} présence)'.
Presence (presenceDaysByMonth/presenceDaysToToday) is bounded to the employee's
contract start so business days before hire are not counted (Dylan CDD: 43.5,
was 246). No change for employees present before the exercise or for forfait
(already capped at phase start). Leave summary now eager-loaded for any employee
with a leave tab to feed the header.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The header hardcoded '218 jours' and '218 - presence restants', wrong for a
forfait entered mid-year. Expose forfaitWorkTargetDays = businessDays(period) -
acquiredDays (218 full year, prorated otherwise) and show
'Forfait - {target} jours ({presence} présence · {target-presence} restants)'.
Grégory: 155 jours (11 présence · 144 restants).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Nouvelle entité InterimAgency (table interim_agencies, API lecture seule)
- Sélecteur agence conditionnel dans les formulaires création employé et ajout contrat
- Affichage "Intérim (NomAgence)" sur la liste employés et l'historique contrat
- Date de fin obligatoire côté frontend pour CDD et INTERIM (aligné backend)
- Renommage "Types d'absence" → "Types de statut" (sidebar, page, titre)
- Renommage en-tête "Absence" → "Statut" sur les vues jour heures et conducteurs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>