diff --git a/CLAUDE.md b/CLAUDE.md index d820d2d..56201ed 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -115,7 +115,7 @@ exercice → `annéeCivile = mois ≥ 6 ? exercice − 1 : exercice` ; année civile Y = exercice Y (mois 1–5) + exercice Y+1 (mois 6–12). Cœur partagé pur `OvertimePaidContingentCalculator`. - **Plafond** résolu sur `isDriver` du **contrat courant**. -- **Fiche employé** : encart header `Contingent {année} : X h / plafond h` (année civile +- **Fiche employé** : encart header `Total H.payés {année} : X h / plafond h` (année civile courante, rouge si dépassement), via `GET /employees/{id}/overtime-contingent`. Encart volontairement indépendant de la phase sélectionnée (toujours l'année civile courante). - **Export PDF** (`GET /overtime-contingent/print?year=&siteIds=`, `ROLE_USER`, diff --git a/doc/overtime-contingent.md b/doc/overtime-contingent.md index c8eb42a..8abdbdf 100644 --- a/doc/overtime-contingent.md +++ b/doc/overtime-contingent.md @@ -21,7 +21,7 @@ Donc l'année civile **Y** agrège : exercice `Y` (mois 1–5) + exercice `Y+1` - Cœur partagé : `App\Service\WorkHours\OvertimePaidContingentCalculator` (pur). - Repo : `EmployeeRttPaymentRepository::findByEmployeesAndYears`. - Fiche employé : `GET /employees/{id}/overtime-contingent?year=YYYY` → encart header - (`Contingent {année} : X h / plafond h`, rouge si dépassement, année civile courante). + (`Total H.payés {année} : X h / plafond h`, rouge si dépassement, année civile courante). - Export PDF : `GET /overtime-contingent/print?year=&siteIds=` (`ROLE_USER`, périmètre `findScoped`), groupé par site (`displayOrder`), tri `displayOrder → nom → prénom`, colonnes Janv–Déc + colonne `Total payé / payable`. Builder diff --git a/frontend/composables/useEmployeeDetailPage.ts b/frontend/composables/useEmployeeDetailPage.ts index 584e2b8..cc52dc3 100644 --- a/frontend/composables/useEmployeeDetailPage.ts +++ b/frontend/composables/useEmployeeDetailPage.ts @@ -115,7 +115,7 @@ export const useEmployeeDetailPage = () => { if (!c) return '' const h = c.paidMinutes / 60 const hStr = Number.isInteger(h) ? String(h) : (Math.round(h * 10) / 10).toFixed(1).replace('.', ',') - return `Contingent ${c.year} : ${hStr} h / ${c.capHours} h` + return `Total H.payés ${c.year} : ${hStr} h / ${c.capHours} h` }) const overtimeContingentExceeded = computed(() => { const c = overtimeContingent.value diff --git a/frontend/data/documentation-content.ts b/frontend/data/documentation-content.ts index e1a49a6..58c7432 100644 --- a/frontend/data/documentation-content.ts +++ b/frontend/data/documentation-content.ts @@ -648,7 +648,7 @@ export const documentationSections: DocSection[] = [ title: 'Export Contingent H.supp.', requiredLevel: 'admin', blocks: [ - { type: 'paragraph', content: 'L\'encart « Contingent {année} : X h / plafond h », affiché dans l\'en-tête de la fiche d\'un employé non-forfait, indique le total d\'heures supplémentaires payées sur l\'année civile en cours face au plafond légal. Il passe en rouge si ce plafond est dépassé.' }, + { type: 'paragraph', content: 'L\'encart « Total H.payés {année} : X h / plafond h », affiché dans l\'en-tête de la fiche d\'un employé non-forfait, indique le total d\'heures supplémentaires payées sur l\'année civile en cours face au plafond légal. Il passe en rouge si ce plafond est dépassé.' }, { type: 'list', content: 'Plafond chauffeur (contrat courant « conducteur ») : 350 h\nPlafond autres salariés non-forfait : 220 h\nSeuls les employés non-forfait disposent de cet encart (FORFAIT exclus)' }, { type: 'paragraph', content: 'L\'export PDF « Contingent H.supp. » est accessible depuis la liste des employés, via le bouton Export → option « Contingent H.supp. ». Choisissez l\'année civile (par défaut l\'année courante) et éventuellement des sites ; sans sélection de site, tous les sites de votre périmètre sont inclus.' }, { type: 'list', content: 'PDF A4 paysage, une ligne par employé non-forfait, groupé par site\nTri : ordre d\'affichage du site, puis nom, puis prénom\nColonnes : Janv à Déc (heures payées par mois) + colonne « Total payé / payable »\nLes employés FORFAIT n\'apparaissent pas dans cet export' },