ADR-0005 - Le planning est la source de vérité de la paie
- Statut : ✅ Accepté (état de fait) - bonne décision à sécuriser par des tests
- Date : 2026-07-10 (constat)
- Tags : métier, paie, planning
Contexte
La paie d'un réseau de boutiques repose surtout sur des éléments variables : heures réellement travaillées, heures supplémentaires, dimanches, primes de vente, transport. Ressaisir ces éléments manuellement est source d'erreurs.
Décision
Calculer automatiquement les éléments variables du mois à partir des plannings
hebdomadaires (weekly_schedules, créneaux slots) :
hours_worked= somme des créneaux du mois (computeHoursFromPlanning).hours_overtime= au-delà des heures contractuelles du mois (weekly_hours × semaines).sunday_hours= bonus +7 h par dimanche travaillé.sale_bonus=sale_count × sale_bonus_amount.transport_reimbursement= 50 % de l'abonnement si justificatif déposé.
Les valeurs calculées sont pré-remplies puis ajustables manuellement avant
enregistrement dans monthly_payroll (1 ligne par salarié et par mois).
Conséquences
Positives
- Cohérence planning ↔ paie, gain de temps, moins d'erreurs.
- La version de contrat en vigueur au mois est prise en compte (
contractAsOf), ce qui gère les changements de temps de travail en cours d'année.
Négatives / compromis
- Le calcul dépend de la qualité du planning (créneaux bien saisis, semaine publiée). Un planning incomplet fausse la paie.
weeksInMonth = daysInPayMonth / 7est une approximation (≈ 4,43 semaines) - à valider avec le comptable / la convention collective.- Logique non testée et sensible aux dates UTC/local.
Alternatives envisagées
| Option | Avantages | Inconvénients | Retenue ? |
|---|---|---|---|
| Saisie manuelle des EVP | Simple | Chronophage, erreurs | ❌ |
| Dérivation depuis le planning | Automatique, cohérent | Dépend du planning | ✅ |
| Pointeuse / badgeuse | Réel mesuré | Matériel, intégration | ⏳ |
Décision cible (proposée)
Extraire le calcul dans domain/payroll.js et le couvrir de tests (cas mois à
cheval, dimanche, heures sup, changement de contrat en cours de mois). Clarifier la
règle des semaines/mois avec le cabinet comptable.
Références
gestionrh-github/src/App.jsx:computeHoursFromPlanning,payrollData,contractAsOfsupabase-payroll.sql:monthly_payroll
