Commit graph

189 commits

Author SHA1 Message Date
298d63cceb fix: Renommer fichiers modaux à leur nom définitif 2025-12-27 15:48:51 +01:00
290ff802f7 fix: Utiliser chemins minuscules pour imports modaux 2025-12-27 15:44:52 +01:00
35466166e5 fix: Corriger la casse des fichiers modaux pour Linux/Docker 2025-12-27 15:38:18 +01:00
78db83ee1a fix: Supprimer fichiers backup du dépôt 2025-12-27 15:21:41 +01:00
dd02cde85c feat: Ajouter colonne Analytique et renommer colonnes montants (B, NPAS, NP, CE) dans staff/payslips 2025-12-23 14:42:47 +01:00
a24b8dfb09 feat: Permettre modification des dates de travail pour techniciens en mode détails par date 2025-12-22 12:33:49 +01:00
e32d7a1aa9 chore: Réorganiser l'ordre des liens dans le menu Staff Gestion Paie 2025-12-19 19:31:25 +01:00
4000883fab feat: Focus automatique sur Net avant PAS dans modal ajout paies en masse 2025-12-19 18:44:12 +01:00
76a8a0de14 feat: Focus automatique sur champ Net avant PAS dans modal ajout paie 2025-12-19 18:36:04 +01:00
695a75a709 fix: Regrouper les items par date dans les tableaux de salaires côté client
Problème: Les tableaux affichaient une ligne par item (R1, R2 sur des lignes séparées), ce qui rendait les tableaux longs et moins lisibles.

Solution:
- Consolidation des représentations : une seule ligne par date avec "R1, R2" dans la colonne Type
- Consolidation des répétitions : une seule ligne par date avec "S1, S2" dans la colonne Type
- Le montant affiché est la somme de tous les items de cette date
- Amélioration de la lisibilité et réduction de la taille des tableaux
2025-12-19 18:08:51 +01:00
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
49f0204a74 fix: Rafraîchir les documents côté client après upload manuel du contrat signé
- Ajout d'une prop refreshTrigger à DocumentsCard pour forcer le rechargement
- Ajout d'un listener d'événement custom 'refreshContractDocuments' dans la page client
- Émission de l'événement après l'upload réussi dans ManualSignedContractUpload
- Fix: Le contrat signé apparaît maintenant sur la page client après upload manuel depuis staff
2025-12-19 17:29:50 +01:00
f43a0be89c fix: Reconstruction correcte de salariesByDate depuis prefill
- Ajout d'un état temporaire prefillSalariesData pour stocker les données JSON
- Nouveau useEffect qui reconstruit salariesByDate après parsing des dates
- Mapping correct des clés (date DD/MM + numéro) au lieu de deviner les groupIdx
- Fix: les montants s'affichent maintenant correctement dans les champs
2025-12-16 21:50:10 +01:00
6cebac9160 fix: Charger salaires_par_date dans le prefill du formulaire de modification
- Ajout de salaires_par_date au type NouveauCDDUPrefill
- Détection automatique du mode de saisie (global vs par_date) selon le prefill
- Population des états salariesByDate depuis la structure JSON
- Mutual exclusivity entre montant global et salaires par date
2025-12-16 21:39:53 +01:00
5662874f1c fix: Corriger nom de colonne 'api_name' -> 'structure_api' dans API notes
- Utilise 'structure_api' au lieu de 'api_name' pour le code employeur
- Ajout du log de l'erreur pour faciliter le debug
2025-12-16 21:01:19 +01:00
f5805133d1 fix: Afficher liste professions dès le focus du champ
- 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
2025-12-16 12:10:06 +01:00
543cc2da95 feat: Ajouter la suppression du contrat signé depuis staff/contrats/[id]
- 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
2025-12-11 19:10:36 +01:00
e73bed369e refactor: Réorganiser le menu staff - renommer Gestion RH en Gestion Paie, déplacer Virements et Cotisations, renommer Gestion Financière en Gestion Facturation 2025-12-05 16:17:54 +01:00
00b77b2f17 fix: Corriger le type de multiMoisFilter (boolean au lieu de null) 2025-12-05 16:08:03 +01:00
3728653595 fix: Corriger la réinitialisation des filtres sur page staff/contrats 2025-12-05 16:04:07 +01:00
13d844921e fix: Corriger récupération des emails de notification et améliorer labels de templates
- 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
2025-12-04 22:16:20 +01:00
3263d6e24c feat: Ajouter envoi de notifications en masse pour les factures
- 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é
2025-12-04 22:04:04 +01:00
eaec9a2123 feat: Ajouter bouton de visualisation en masse des PDFs de factures
- 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
2025-12-04 21:43:28 +01:00
18edf3b9b0 feat: Ajouter filtre multi-mois pour les contrats CDDU
- 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)
2025-12-04 21:11:06 +01:00
b89d26d26e fix: Alignement des bords arrondis du bouton Enregistrer avec son animation 2025-12-04 19:56:31 +01:00
38cbabaf1a feat: Réorganisation de la sidebar et améliorations UX
- 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
2025-12-04 19:49:44 +01:00
2ec29d07ab fix: Préserver la préférence du popup de confidentialité lors de la déconnexion
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
2025-12-04 18:55:46 +01:00
839190fa8f feat: Ajouter colonne Type de salaire dans staff/contrats 2025-12-04 17:59:03 +01:00
23870cc2be feat: Ajout des cards Infos salarié et Infos structure sur page staff/contrats/[id] 2025-12-04 15:56:03 +01:00
fab3b25094 fix: Ajuster largeur card boutons flottants pour correspondre au menu de droite 2025-12-02 18:40:40 +01:00
ab61fb1852 feat: Ajout persistence des filtres sur page staff/payslips 2025-12-02 14:15:58 +01:00
88ad651557 fix: Corriger types TypeScript pour globalSelectedOrgId null
- Ajouter vérification null avant isValidUUID dans tous les useState
- Ajouter vérification null dans tous les useEffect de synchronisation
- Typer explicitement payslip_id dans map
- Compléter createForm reset avec tous les champs requis
2025-12-01 22:17:17 +01:00
266eb3598a feat: Implémenter store global Zustand + calcul total quantités + fix structure field + montants personnalisés virements
- Créer hook useStaffOrgSelection avec persistence localStorage
- Ajouter badge StaffOrgBadge dans Sidebar
- Synchroniser filtres org dans toutes les pages (contrats, cotisations, facturation, etc.)
- Fix calcul cachets: utiliser totalQuantities au lieu de dates.length
- Fix structure field bug: ne plus écraser avec production_name
- Ajouter création note lors modification contrat
- Implémenter montants personnalisés pour virements salaires
- Migrations SQL: custom_amount + fix_structure_field
- Réorganiser boutons ContractEditor en carte flottante droite
2025-12-01 21:51:57 +01:00
8ba984af1d feat: Ajout système de sélection manuelle de paies pour virements + corrections RLS
- Ajout mode de sélection 'period' (existant) et 'manual' (nouveau) pour les virements
- Création table de liaison salary_transfer_payslips pour paies sélectionnées manuellement
- Nouveau modal de sélection de paies avec filtres (recherche, période, statut)
- API route /api/staff/payslips/available pour récupérer les paies disponibles
- Rendre period_month nullable en mode manual avec contrainte de validation
- Correction fonction is_staff() pour vérifier is_staff = true
- Correction is_member_of_org() pour utiliser la version à jour de is_staff()
- Mise à jour génération PDF pour supporter les deux modes (period et manual)
- Filtre des organisations sur virements-salaires (uniquement celles avec virements_salaires = 'Odentas')
- Amélioration affichage totaux dans PayslipsGrid (total sélection si lignes sélectionnées)
- Ajout boutons 'Créer par période' et 'Créer personnalisé' dans SalaryTransfersGrid
- Interface optimisée (textes plus courts, tailles réduites)
2025-11-28 20:12:48 +01:00
965b1fb9cd feat: Ajouter interface de saisie en masse du temps de travail réel
- Création de la page /staff/contrats/saisie-temps-reel avec tableau éditable
- Ajout des colonnes jours_representations et jours_repetitions dans l'API
- Construction intelligente du TT Contractuel (concaténation des sources)
- Ajout de la colonne temps_reel_traite pour marquer les contrats traités
- Interface avec filtres (année, mois, organisation, recherche)
- Tri par date/salarié
- Édition inline avec auto-save via API
- Checkbox pour marquer comme traité (masque automatiquement la ligne)
- Toggle pour afficher/masquer les contrats traités
- Migration SQL pour la colonne temps_reel_traite
- Ajout du menu 'Temps de travail réel' dans la sidebar
- Logs de débogage pour le suivi des sauvegardes
2025-11-28 12:31:02 +01:00
7fae87353c refactor: Restructurer la page staff/contrats/[id] en sous-cards logiques
- Diviser la grande card 'Contrat' en 6 sous-cards organisées par importance
- Card 1: États et statuts (demande, paie, DPAE, signatures)
- Card 2: Informations du contrat (spectacle, analytique, dates)
- Card 3: Salarié et profession (avec catégorie professionnelle)
- Card 4: Rémunération (type salaire, montant, brut, panier repas)
- Card 5: Temps de travail (répétitions, représentations, heures)
- Card 6: Informations complémentaires (S3, notes, précisions)

Modifications spécifiques:
- Retirer le champ 'Référence' (non modifiable)
- Déplacer 'Analytique' dans 'Informations du contrat'
- Déplacer 'Catégorie professionnelle' dans 'Salarié et profession'
- Supprimer les doublons de champs (signatures, début/fin/brut)
- Ajouter les icônes Euro et StickyNote aux imports lucide-react
2025-11-28 11:25:28 +01:00
956d655b7a feat: Gestion complète des utilisateurs staff avec filtres et tri
- Ajout de la création d'utilisateurs staff (STAFF et SUPER_STAFF)
- Email de notification avec lien d'activation (paie.odentas.fr)
- API de révocation/restauration des utilisateurs staff
- Sécurité: SUPER_STAFF ne peut pas être révoqué
- Sécurité: Seul SUPER_STAFF peut créer d'autres SUPER_STAFF
- Tableau des utilisateurs clients avec filtres (organisation, niveau, statut)
- Tri dynamique sur toutes les colonnes (prénom, email, organisation, niveau, date)
- Utilisation du client admin pour contourner les RLS
- Interface avec recherche et filtres avancés
2025-11-28 00:48:14 +01:00
ad2a9c6b7d feat: Amélioration modale création fiche de paie et page staff/contrats
- Ajout profession et dates de contrat dans la modale de création de fiche de paie
- Pré-remplissage automatique des dates et salaire brut pour contrats mono-mois
- Exclusion des contrats annulés des statistiques et recherches
- Suppression titre page staff/contrats et mise en pleine largeur des filtres
- Ajout route API pour organisations avec contrats sans paie
2025-11-28 00:11:52 +01:00
d535b17f26 feat: Améliorations majeures des contrats et fiches de paie
Ajout détails cachets/répétitions/heures au modal ContractDetails

Card verte avec validation quand tous les contrats ont une fiche de paie

Système complet de création de fiches de paie avec recherche et vérification

Modal liste des contrats sans paie avec création directe

Amélioration édition dates dans PayslipDetailsModal

Optimisation recherche contrats (ordre des filtres)

Augmentation limite pagination ContractsGrid à 200

Ajout logs debug génération PDF logo

Script SQL vérification cohérence structure/organisation
2025-11-27 20:37:37 +01:00
dd570d4509 feat: Améliorations majeures des contrats et fiches de paie
- Ajout détails cachets/répétitions/heures au modal ContractDetails
- Card verte avec validation quand tous les contrats ont une fiche de paie
- Système complet de création de fiches de paie avec recherche et vérification
- Modal liste des contrats sans paie avec création directe
- Amélioration édition dates dans PayslipDetailsModal
- Optimisation recherche contrats (ordre des filtres)
- Augmentation limite pagination ContractsGrid à 200
- Ajout logs debug génération PDF logo
- Script SQL vérification cohérence structure/organisation
2025-11-27 20:31:11 +01:00
f11790784b fix: Corriger la sélection de durée des répétitions dans le modal de quantités 2025-11-20 18:45:00 +01:00
7f09f3f42b feat: Ajouter sélection de durée des répétitions (3h/4h) dans le modal de quantités avec texte d'info 2025-11-20 18:14:56 +01:00
2c90512beb Repush 2025-11-20 18:02:17 +01:00
91adeb8fc8 fix: Pré-sélection des dates lors de la réouverture des modales de sélection + amélioration UI du bouton Appliquer 2025-11-20 17:58:54 +01:00
3435581761 fix: Afficher toutes les dates intermédiaires lors de la saisie par date dans les contrats CDDU 2025-11-20 17:48:53 +01:00
3d9e1298d4 fix: Utiliser email_signature au lieu de email_contact dans le modal d'envoi groupé de signatures électroniques 2025-11-19 12:21:24 +01:00
813cbb998f fix: Corriger erreurs envoi emails groupés (bulk_communication + formatage email source) 2025-11-18 19:18:25 +01:00
9f4ecf688c feat: Ajout champs 'Autre précision durée' et 'Autre précision salaire' sur page contrats
- Ajout de 2 nouveaux champs de texte dans ContractEditor.tsx
- Sauvegarde des champs autreprecision_duree et autreprecision_salaire dans Supabase
- Mise à jour des types ContratCDDUData avec les nouveaux champs
- Envoi des données à PDFMonkey via generate-pdf et generate-pdf-test
- Les champs sont disponibles dans l'interface staff/contrats/[id]
2025-11-15 11:33:14 +01:00
79f18b20a4 feat: Ajouter icônes HelpCircle pour indiquer les tooltips dans le header
- Ajouter import HelpCircle depuis lucide-react
- Afficher petite icône ? (3x3px) à droite de chaque ligne avec description
- Icône visible uniquement sur les lignes avec tooltip disponible
- Design discret (text-slate-400) sans augmenter la hauteur du header
2025-11-14 20:30:23 +01:00
e9cb6e7e0e feat: Système unifié d'invitation avec emails d'activation
- Créé sendInvitationWithActivationEmail() pour unifier les invitations
- Modifié /api/staff/users/invite pour utiliser generateLink + email
- Modifié /api/access/nouveau pour envoyer email d'activation
- Modifié /api/access POST pour remplacer pending_invites par système direct
- Template account-activation mis à jour :
  * Titre 'Activez votre compte'
  * Encart avec infos : invitant (statut), organisation, niveau d'accès
  * Message de contact formaté comme autres emails
  * Renommage 'Odentas Paie' → 'Espace Paie Odentas'
- Fix page /activate : délai 100ms pour hash fragment + redirection 1s
- Liens d'activation forcés vers paie.odentas.fr (tests depuis localhost)
- Messages UI cohérents : 'Invitation envoyée' au lieu de 'Compte créé'
2025-11-14 17:41:46 +01:00