Commit graph

134 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
14a9d141d3 feat: Ajouter édition groupée de période/échéance/statut pour cotisations
- Ajout bouton Edit dans les actions de chaque ligne
- Nouvelle modale EditPeriodModal pour éditer période, échéance et statut
- Nouvel endpoint API /api/staff/cotisations/bulk-update pour mise à jour groupée
- Les modifications s'appliquent à toutes les caisses d'une période en une fois
2025-11-07 18:07:20 +01:00
62eef54f5f fix: Uniformiser la taille des icônes du tableau cotisations 2025-11-07 10:20:47 +01:00
61da4f5d35 feat: Implémenter la notification groupée des cotisations
- Créer le composant BulkNotifyModal avec aperçu détaillé
- Afficher les statistiques (avec/sans cotisations, déjà notifiées, emails manquants)
- Grouper les périodes par organisation
- Afficher les destinataires des emails pour chaque organisation
- Indiquer les organisations sans email configuré
- Afficher un aperçu du contenu de l'email
- Gérer les re-notifications avec badge
- Envoyer les notifications en parallèle avec gestion d'erreurs
- Afficher un résumé des succès/erreurs après envoi
- Désélectionner automatiquement les périodes après notification
2025-11-06 21:38:12 +01:00
699a862160 feat: Ajouter un filtre mensuel au tableau de cotisations
- Ajouter un filtre par mois dans les filtres avancés
- Détecter automatiquement les mois disponibles dans les périodes
- Supporter les noms de mois complets et abrégés (Janvier/Jan, Février/Fév, etc.)
- Sauvegarder le filtre mensuel dans localStorage
- Passer la grille de filtres à 4 colonnes pour inclure le nouveau filtre
- Mettre à jour le compteur de résultats filtrés
2025-11-06 21:30:47 +01:00
a396ad6b3c feat: Améliorer la compacité et l'affichage du tableau de cotisations
- Afficher le code employeur au lieu du nom complet de l'organisation
- Réduire la taille de police du tableau (text-xs au lieu de text-sm)
- Réduire les paddings des cellules (px-2 py-2 au lieu de px-3 py-3)
- Ajouter whitespace-nowrap sur les badges de statut pour tenir sur une ligne
- Réduire la taille de la ligne 'Payé' (text-[10px])
- Ajouter title sur la colonne organisation pour voir le nom complet au survol
- Modifier l'API /api/staff/organizations pour inclure le code_employeur
- Mettre à jour les types Organization et PeriodRow
2025-11-06 21:03:49 +01:00
6535bd45ed feat: Améliorer l'affichage du tableau de gestion des cotisations
- Créer le composant CotisationsGrid.tsx moderne
- Ajouter tri par colonnes (organisation, période, échéance, statut, total)
- Ajouter filtres avancés (organisation, statut, année)
- Ajouter sélection multiple avec checkboxes
- Ajouter actions groupées (notification, suppression)
- Ajouter indicateurs visuels pour les statuts
- Ajouter badge de notification avec date
- Ajouter persistance des filtres dans localStorage
- Ajouter subscription realtime pour les mises à jour
- Améliorer l'UX avec hover effects et transitions
- Rendre cohérent avec les autres grilles (PayslipsGrid, ContractsGrid, etc.)
2025-11-06 20:51:06 +01:00
9672f52f49 feat: Ajouter sous-header avec totaux des salaires sur page staff/payslips 2025-11-06 15:45:47 +01:00
d30427e57a feat: Afficher l'email employeur pour les signatures électroniques
- Ajout de l'affichage de l'email de l'employeur dans le modal de confirmation e-signature
- Récupération de l'email_signature depuis organization_details
- Clarification que cet email est utilisé pour les notifications de signature
2025-11-05 22:02:50 +01:00
05e44653fa fix: Corriger bucket S3 et ajouter glisser-déposer pour upload PDF avenants
- Correction du bucket S3 de 'odentas-documents' à 'odentas-docs' dans upload-signed-pdf
- Ajout du drag & drop dans UploadSignedPdfModal pour faciliter l'upload
- Validation du fichier centralisée pour éviter la duplication de code
2025-11-05 20:05:02 +01:00
49284d9a59 feat: Ajouter page de modification d'avenants
- Nouvelle route /staff/avenants/[id]/modifier
- Composant ModifierAvenantPageClient qui pré-remplit les données
- API PATCH /api/staff/amendments/[id] pour mise à jour
- Restriction: seuls les avenants 'draft' sont modifiables
- Bouton 'Modifier' fonctionnel sur page détail avenant
- Pré-remplissage des formulaires avec données existantes
- Régénération PDF possible après modification
2025-11-05 19:52:17 +01:00
1d9145a0b2 feat: Ajouter upload manuel de PDF signé pour avenants
- Nouvelle modale UploadSignedPdfModal avec drag & drop
- API route /api/staff/amendments/[id]/upload-signed-pdf
- Upload vers S3 avec pattern avenants/{ref}_avenant_signed_{timestamp}.pdf
- Mise à jour automatique statut → 'signed' et signature_status → 'signed'
- Validation du fichier (PDF uniquement, max 10MB)
- Bouton 'Ajouter PDF signé' sur page détail avenant
2025-11-05 19:48:47 +01:00
da17ca6ef2 feat: Amélioration de la page staff/avenants avec pagination et filtres
- Ajout de filtres sophistiqués : organisation, statut, type, signature, élément, dates
- Tri par colonne : date d'effet, date d'avenant, n° avenant, n° contrat
- Pagination avec 25/50/100 éléments par page
- Ordre par défaut : date d'effet décroissant (plus récent en premier)
- Compteur de filtres actifs avec bouton de réinitialisation
- Affichage du matricule salarié, n° avenant et type d'avenant dans le tableau
- Recherche étendue : inclut matricule, production et n° avenant
- Interface cohérente avec les pages staff/contrats et staff/payslips
2025-11-05 18:28:40 +01:00
b97a079822 feat: Ajouter champ cachets pour metteurs en scène
- Ajout d'un champ 'Nombre de représentations' pour les metteurs en scène dans les formulaires de contrat (création et édition)
- Les metteurs en scène peuvent maintenant avoir à la fois des heures de travail ET des cachets de représentation
- Mise à jour de la logique de sauvegarde pour préserver les représentations des metteurs en scène même en mode heures
- Les données sont correctement envoyées à PDFMonkey via le champ cachets.representations
- Interface utilisateur ajoutée dans NouveauCDDUForm et ContractEditor
2025-11-05 11:02:32 +01:00
bea8700104 feat: Amélioration système d'avenants et emails de relance
- Email employeur: ajout code_employeur, correction structure détails document
- Email salarié: ajout matricule, type contrat, profession, date début
- Séparation PDF préliminaire/signé (signed_pdf_s3_key) pour éviter timing issues
- Correction UI: grammaire et libellés conditionnels (avenant/contrat)
- Standardisation source notes: 'Client' au lieu de 'Espace Paie'
- Ajout note automatique pour paniers repas avec détails
- Calcul automatique total heures depuis modale jours de travail
- Migration SQL: ajout colonne signed_pdf_s3_key + migration données existantes
2025-11-03 19:19:57 +01:00
2cd19df69f feat: Ajouter système de relance pour les avenants dans staff/avenants
- Créer API route pour relance employeur: /api/staff/avenants/[id]/remind-employer
- Créer API route pour relance salarié: /api/staff/avenants/relance-salarie
- Ajouter modales de relance intelligente (SmartReminderAvenantModal)
- Ajouter modales de relance individuelle (EmployeeReminderAvenantModal)
- Ajouter modale de relance en masse (BulkEmployeeReminderAvenantModal)
- Intégrer système de sélection multiple dans la page avenants
- Ajouter détection automatique des actions (employeur/salarié) selon signature_status
- Implémenter cooldown de 24h pour éviter les relances trop fréquentes
- Option forcer renvoi pour contourner le cooldown si nécessaire
- Mise à jour timestamps last_employer/employee_notification_at dans la DB
- Utilisation du système d'email universel (EmailConfigV2)
- Support du mode démo (envois bloqués)
- Interface utilisateur cohérente avec le système contrats existant
2025-11-03 18:21:13 +01:00