- Retirer notes de supabaseData lors du PATCH
- Les notes doivent uniquement être créées dans la table notes
- Évite d'écraser le champ notes existant dans cddu_contracts
- Les notes de modification sont maintenant correctement enregistrées
- Ajouter tableau structuré dans contrats/[id] (CDDU mono)
- Ajouter tableau structuré dans contrats-multi/[id] (CDDU multi)
- Affichage conditionnel : tableau si salaires_par_date, sinon montant global
- Tableau avec colonnes Date, Type et Montant
- Séparation claire par sections : Représentations, Répétitions, Jours travaillés
- Total affiché en bas du tableau
- Récupérer org_id depuis le contrat pour créer la note correctement
- Fonctionne maintenant pour staff (org.id null) et clients
- Ajouter envoi d'email de notification à paie@odentas.fr
- Alignement avec la logique de POST /api/contrats/[id]/notes
- Ajouter salaires_par_date dans les champs synchronisés vers Supabase
- Permet la sauvegarde des modifications de salaires par date
- Les notes continuent d'être créées lors des modifications
- Ajouter salaires_par_date dans le prefill du formulaire
- Inclure salaires_par_date dans le PATCH /api/contrats/[id]
- Permet aux clients de modifier salaires globaux et par date
- Les modifications sont maintenant bien sauvegardées
- Créer composant SalaireParDateEditor avec tableau structuré
- Séparer clairement les lignes par date avec tableau formaté
- Ajouter possibilité pour le staff de modifier les montants
- Créer API PATCH /api/staff/contrats/[id]/salaires-par-date
- Recalcul automatique du total lors des modifications
- Design avec icônes Lucide React (Edit2, Save, X)
- Ajout du type 'contract-note-added' dans le système email universel v2
- Email automatique envoyé à paie@odentas.fr quand un client ajoute une note
- Fonctionne pour tous les types de contrats (CDDU mono, multi, RG)
- Email contient: organisation, code employeur, n° contrat, utilisateur, contenu note
- Lien direct vers le contrat dans l'interface staff
- Gestion des erreurs: note créée même si email échoue
- Documentation complète dans NOTIFICATION_NOTES_CONTRAT.md
- Ajouter useEffect pour charger professions techniciens au montage initial
- Ajouter état professionInputFocused pour afficher la liste dès le focus
- Corriger le bug où la liste ne s'affichait que si on tapait dans le champ
- Fonctionne pour les professions Artiste et Technicien
- Créer l'API DELETE /api/staff/contrats/[id]/delete-signed-pdf
- Supprimer le fichier S3 et mettre à jour la BDD
- Ajouter un bouton de suppression dans la card Documents
- Afficher un modal de confirmation avant suppression
- Invalider les queries React Query après suppression
- Ajouter colonne 'Notif.' avec voyant vert (Oui) ou gris (Non) après la colonne Statut
- Enlever le bouton 'Modifier' du tableau (garder seulement 'Voir')
- Ajouter champ notified au type Invoice et à l'API GET /staff/facturation
- Ajouter période au message par défaut pour factures sans invoice_type reconnu
- Appliqué aux deux routes (notify et bulk-notify)
- Ajouter invoice_type='paie_mensuelle' et payment_method='sepa' au payload de saisie tableau
- Modifier l'API bulk-create pour accepter et stocker ces champs
- Améliorer les messages de notification paie_mensuelle :
* Toujours afficher 'Votre facture pour la période XXX est disponible'
* Utiliser 'du mois' comme fallback si period_label est vide
* Appliquer le changement aux deux routes (notify et bulk-notify)
- Modifier l'API GET /staff/facturation/[id] pour inclure organization_details avec emails
- Retourner les infos complètes de l'organisation (email_notifs, email_notifs_cc)
- Améliorer les noms de templates de factures :
* 'Facture (type non défini)' au lieu de 'Invoice générique'
* Retirer 'Invoice' des noms de templates
* Afficher le type personnalisé si non reconnu
- Les factures auront maintenant leurs emails correctement affichés dans le modal
- Créer l'API route /api/staff/facturation/bulk-notify
- Créer le composant BulkInvoiceNotifyModal avec :
* Liste détaillée des factures sélectionnées
* Affichage du montant TTC, nom de la structure, emails (notif + CC)
* Type de template email selon le type de facture et mode de paiement
* Statistiques (total factures, montant total, avec/sans email)
* Alertes pour factures sans email configuré
* Expansion/réduction des détails par facture
- Ajouter le bouton 'Notifier' dans la barre d'actions en masse
- Récupération automatique des infos d'email et type de facture
- Gestion des erreurs et feedback utilisateur détaillé
- Créer le composant InvoicePdfViewerModal pour afficher les PDFs de factures
- Créer l'API route /api/staff/facturation/[id]/pdf-url
- Ajouter le bouton 'Voir les PDF' dans la barre d'actions en masse
- Afficher résumé rapide de chaque facture (numéro, client, période, montants, statut)
- Navigation au clavier et entre factures (flèches gauche/droite)
- Téléchargement et ouverture dans nouvel onglet disponibles
- Ajouter un bouton de filtre rapide 'Multi-mois' dans la page staff/contrats
- Le filtre affiche uniquement les contrats CDDU dont la date de début et la date de fin sont sur des mois calendaires différents
- Ajout d'un compteur en temps réel pour afficher le nombre de contrats multi-mois
- Le filtre est persisté dans le localStorage comme les autres filtres
- Utilise une icône Calendar de Lucide React et une couleur violette (purple)
- Déplacement du menu Staff au-dessus des menus clients
- Organisation des menus clients en 3 sections nommées :
* Gestion paie (navigation principale)
* Gestion compte (facturation, infos, documents)
* Simulation & CCN (minima CCN, simulateur)
- Réorganisation du menu Staff (Support & Communication après Administration)
- Ajout du tri par code employeur dans ContractsGrid
- Amélioration UX ContractEditor :
* Headers colorés par section
* Détection des modifications non sauvegardées
* Animation du bouton Enregistrer avec gradient
* Mise à jour PDF sans rafraîchissement de page
Le popup de confidentialité réapparaissait systématiquement après chaque
déconnexion/reconnexion car localStorage.clear() supprimait la clé
'odentas_info_suivi_ack_v1'.
Solution: Sauvegarder et restaurer cette clé lors du nettoyage du localStorage
dans LogoutButton.tsx.
Fixes: Popup s'affiche plusieurs fois par jour au lieu d'une seule fois