Commit graph

6 commits

Author SHA1 Message Date
c2a54ecd89 fix: Utiliser l'année réelle sélectionnée dans le calendrier au lieu de supposer
Problème: Le système supposait l'année basée sur le contexte, ce qui causait des erreurs.

Solution:
- Ajout de formatDateFrWithYear() pour retourner DD/MM/YYYY
- Le calendrier DatePickerCalendar retourne maintenant des dates avec l'année complète
- parseFrenchedDate() supporte maintenant DD/MM/YYYY et DD/MM
- Si l'année est dans la date (DD/MM/YYYY), elle est utilisée directement
- Plus besoin de supposer l'année basée sur oct/nov/déc -> jan/fev/mar
- Les dates de début et fin se calculent correctement à partir des vraies dates ISO

Cela garantit que:
1. Les dates en janvier 2026 restent bien en 2026
2. Les champs date début/date fin se remplissent avec les bonnes années
3. Aucune supposition erronée n'est faite
2025-12-19 17:58:33 +01:00
ec3d0b3ad7 fix: Détection intelligente de l'année suivante pour les dates en janvier/février/mars
Problème: Quand on sélectionnait des dates en janvier 2026 depuis un contrat en décembre 2025, les dates étaient converties en janvier 2025.

Solution: Amélioration de la fonction parseFrenchedDate pour détecter automatiquement si une date est dans l'année suivante:
- Si le mois de la date est janvier/février/mars (1-3)
- ET que le mois du contexte (dateDebut/dateFin) est oct/nov/déc (10-12)
- Alors on utilise l'année suivante

Exemple: Contrat du 15/12/2025 au 20/01/2026
- Les dates de janvier seront correctement converties en 2026 au lieu de 2025
2025-12-19 17:48:59 +01:00
e6c7dc45cc feat: améliorations UX formulaire contrats et notification paiement salaires
- Ajout bouton calculatrice avec gradient bleu-indigo
- Ajout bouton Minima avec gradient émeraude-teal et lien vers /minima-ccn
- Correction focus trap : autoriser liens target=_blank
- Ajout champs conditionnels panier repas (nombre, CCN, montant personnalisé)
- DatePickerCalendar : initialisation sur date de début contrat si pas de dates sélectionnées
- DatesQuantityModal : option 'Ne pas appliquer...' pour tous types (repré/répét/heures)
- DatesQuantityModal : adaptation texte selon type (représentations/répétitions/heures)
- DatesQuantityModal : champ 'Appliquer à toutes les dates' pour saisie rapide
- DatesQuantityModal : reset quantités quand option 'Ne pas appliquer' cochée
- DatesQuantityModal : aperçu sans détails quand option cochée
- Intégration durée répétitions dans formatage dates (3h ou 4h, avec 'chacun' si >1)
- Notification paiement salaires : nouvel email 'salary-transfer-payment-confirmation'
- Notification paiement salaires : API route /api/staff/virements-salaires/[id]/notify-payment-sent
- Notification paiement salaires : modal NotifyPaymentSentModal avec détails paiement
- Notification paiement salaires : tracking avec payment_notification_sent/sent_at
- Notification paiement salaires : affichage statut dans modal virements
- Template email : support detailsCardDisclaimer pour mentions légales
2025-10-29 21:35:10 +01:00
44fc21c817 feat: Ajout saisie heures répétitions et correction PDF avenants
- Ajout champs heures totales et minutes pour répétitions dans AmendmentDureeForm
- Intégration DatesQuantityModal pour saisie heures par jour de répétition
- Ajout type 'heures_repetitions' dans dateFormatter et DatesQuantityModal
- Correction envoi precisions_salaire à PDFMonkey pour les avenants
- Ajout champs séparés dates_representations_detail et dates_repetitions_detail
- Correction logique dates_repetitions_heures pour éviter doublons dans PDF
2025-10-24 15:53:00 +02:00
2fca0fcbf2 feat(calculator): afficher l’expression du calcul, arrondir à 2 décimales et réinitialiser la saisie après calcul; feat(form): forcer 2 décimales dans Montant quand on utilise la calculatrice; fix(tooltip): placement top au-dessus du trigger; embed(minima): runtime CSS en mode embed 2025-10-21 07:28:34 +02:00
8c99473fd0 feat: Ajout calendrier multi-mois avec formatage smart pour sélection des dates
- Création de /lib/dateFormatter.ts avec utilities de parsing/formatting des dates
  * Parsing format input (DD/MM) en ISO (YYYY-MM-DD)
  * Groupement automatique des dates consécutives
  * Formatage smart: 'le xx/xx' pour isolées, 'du xx/xx au xx/xx' pour plages
  * Détection automatique du multi-mois
  * Format pour PDFMonkey: 'le 12/10 ; du 14/10 au 17/10.'

- Création de /components/DatePickerCalendar.tsx
  * Composant modal draggable et multi-select
  * Prévisualisation du formatage PDFMonkey
  * Limites de plage (minDate/maxDate)
  * Warning multi-mois
  * Retour des données au format input et pdfFormatted

- Intégration dans /components/contrats/NouveauCDDUForm.tsx
  * Remplacement des inputs texte par calendriers pour dates_representations, dates_repetitions, jours_travail
  * Auto-détection multi-mois et set isMultiMois = 'Oui' si >1 mois
  * Pré-remplissage du calendrier lors de la duplication
  * Affichage lisible du formatage smart

- Intégration dans /components/staff/contracts/ContractEditor.tsx
  * Ajout du calendrier pour zone 'Dates travaillées'
  * Affichage du format smart au lieu du texte brut

Closes #calendar-dates-picker
2025-10-20 19:00:48 +02:00