Commit graph

272 commits

Author SHA1 Message Date
2760ea2b39 fix: Corriger création salarié en mode staff avec employer_id
- Réorganiser la logique de sécurité pour distinguer staff/client
- Staff: accepter employer_id fourni et vérifier existence de l'org
- Client: utiliser l'org associée et bloquer toute tentative cross-org
- Améliorer les logs pour identifier le type d'utilisateur
- Corriger le retour no_organization inapproprié pour les staff
2025-11-13 20:48:14 +01:00
8cdd133d68 fix: Inclure dates représentations/répétitions dans duplication CDDU 2025-11-12 19:47:23 +01:00
19da82ceba feat: Ajout bouton Effacer pour dates représentations/répétitions CDDU 2025-11-12 19:33:37 +01:00
4d591ed1e1 feat: Ajout marquage manuel notification cotisations
- Ajout checkbox dans modal de modification cotisation
- Création entrée dans contribution_notifications si marquée
- Invalidation cache notifications après update
- Support flag mark_as_notified dans API PATCH
2025-11-08 11:48:58 +01:00
09b5ad822d feat: Améliorer message factures studio avec contact WhatsApp
- Message plus personnalisé pour factures studio en virement
- Mention 'hébergement' pour renouvellement
- Ajout contact WhatsApp avec lien cliquable (07 80 978 000)
- Formulation plus chaleureuse et professionnelle
2025-11-07 19:50:53 +01:00
444b243f79 feat: Adapter message factures studio selon mode paiement
- Factures studio en virement: message avec RIB (comme paie)
- Factures studio en SEPA: message avec date prélèvement
- Message complet au lieu de juste le nom du site
- Cohérence avec les factures paie
2025-11-07 19:33:52 +01:00
8a36ebb6dd fix: Appliquer ctaUrl dynamique à la route /notify aussi
- Route /notify utilisait ctaUrl hardcodé vers /signin
- Appliquer même logique que /launch: lien téléchargement pour studio
- Ajouter siteName dans les données d'email
- Amélioration: factures paie pointent vers /facturation au lieu de /signin
2025-11-07 19:24:24 +01:00
3c6b3c7e24 debug: Ajouter logs détaillés pour tracer ctaUrl des factures
- Logger data.ctaUrl dans renderUniversalEmailV2
- Logger templateData.ctaUrl final avant rendu
- Permettra d'identifier où le ctaUrl est perdu
2025-11-07 19:06:42 +01:00
32cafbd028 fix: Enlever disclaimer carte bancaire et ajouter logs debug
- Supprimer 'Ce compte ne peut pas recevoir les virements de salaires'
- Ajouter logs pour débugger ctaUrl des factures studio
2025-11-07 18:59:55 +01:00
a46790a723 fix: Corriger affichage emails factures studio avec virement
- Ajouter siteName dans les données d'email et types
- Afficher carte bancaire pour factures studio avec mode virement
- Filtrer dynamiquement détails facture selon type:
  * Studio: enlever 'Prélèvement SEPA', afficher 'Site web concerné'
  * Paie: enlever 'Site web concerné', afficher 'Prélèvement SEPA'
- Simplifier condition bankCard (paymentMethod === 'virement' seulement)
2025-11-07 18:54:27 +01:00
3c4e6a1e1d feat: Adapter emails de factures studio avec lien de téléchargement direct
- Créer route publique /api/public/invoices/[id]/download pour générer liens S3 à la volée
- Supprimer code employeur de l'infoCard pour factures studio
- Adapter texte bouton CTA (Télécharger vs Voir la facture)
- Rediriger vers page de téléchargement au lieu de l'Espace Paie pour clients studio
- Lien pré-signé S3 valable 15 minutes (suffisant pour téléchargement)
2025-11-07 18:39:09 +01:00
5351456516 feat: Badge signatures en attente avec polling optimisé 30s
- Ajout endpoint API /api/signatures-electroniques/pending-count (COUNT() Supabase)
- Ajout hook usePendingSignatures avec polling 30s et pause en background
- Badge rouge animé dans Sidebar pour signatures employeur en attente
- Optimisé pour ne pas surcharger Supabase (cache 30s, refetch au focus)
- Désactivé en mode démo et pour staff
2025-11-07 18:27:30 +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
2d4b5f4249 feat: Ajouter modification de période et statut dans cotisations 2025-11-07 16:16:26 +01:00
65904d71fb fix: Utiliser cleanEnv pour nettoyer les tokens GoCardless
- Ajoute import cleanEnv dans les routes GoCardless
- Remplace process.env par cleanEnv() pour GOCARDLESS_ACCESS_TOKEN et GOCARDLESS_ENVIRONMENT
- Corrige le bug des tokens cassés sur plusieurs lignes dans Vercel
- Routes corrigées: gocardless, launch, bulk-gocardless
2025-11-07 12:30:32 +01:00
62eef54f5f fix: Uniformiser la taille des icônes du tableau cotisations 2025-11-07 10:20:47 +01:00
de519a608d fix: Ajouter logs et gestion d'erreur pour insertion prestations NAA 2025-11-07 10:15:56 +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
94761a609a fix: Envoyer les notifications de signature à email_signature sans CC
- Utilisation de email_signature au lieu de email_notifs
- Suppression du CC pour les notifications de signature électronique
- Cohérence avec le système de signature (email distinct des autres notifs)
2025-11-05 22:28:11 +01:00
1892f9f4d1 fix: Utiliser prenom_signataire au lieu de prenom_contact pour les notifications de signature
- Modification de l'API send-esign-notification
- Le Bonjour utilise maintenant le prénom du signataire de l'organisation
2025-11-05 22:13:43 +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
658d029aa5 fix: Retirer signed_pdf_url inexistant de la table avenants
La colonne signed_pdf_url n'existe pas dans la table avenants.
Seule signed_pdf_s3_key est nécessaire pour stocker le PDF signé.
2025-11-05 21:22:26 +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
26132f38ce feat: Ajouter script migration PDF avenants Airtable → S3
- Téléchargement des PDF depuis URLs Airtable
- Upload vers S3 avec pattern avenants/{reference}_avenant_{timestamp}.pdf
- Mise à jour de pdf_s3_key et pdf_url dans Supabase
- 91 PDF migrés avec succès
2025-11-05 19:32:25 +01:00
69cb2c5a0a fix: Ajouter champs manquants au type Amendment
- employee_matricule
- production_name
- numero_avenant
- date_avenant
- type_avenant
- motif_avenant

Corrige l'erreur de build Vercel.
2025-11-05 18:32:49 +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
480d9fb243 fix: Corriger le tri des notes pour considérer source_created_at et created_at 2025-11-05 18:04:45 +01:00
e8db8960fb fix: Corriger création contrats RG avec type_de_contrat et type_d_embauche appropriés
- API rg-contracts passe maintenant type_de_contrat et type_d_embauche='Régime général'
- API cddu-contracts utilise les valeurs du body au lieu de forcer les valeurs CDDU
- Texte du formulaire adapté selon le régime (CDDU vs RG)
- Désactivation du remplissage automatique des dates en mode RG
- Rétablissement du filtre en_cours pour inclure contrats futurs
2025-11-05 17:45:57 +01:00
bde4e0351a fix: Corriger filtrage contrats en_cours pour exclure ceux non commencés 2025-11-05 17:35:28 +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
5b6d9bf9c7 feat: Ajout mockup hub salarié avec gestion congés/RTT pour régime général 2025-11-03 22:56:13 +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
f597042b96 feat: Merge feat/direct-docuseal-webhook-contracts - Virements, facturation, signatures et emails
- Ajout sous-header total net à payer sur page virements-salaires
- Migration transfer_done_at pour tracking précis des virements
- Nouvelle page saisie tableau pour création factures en masse
- APIs bulk pour mise à jour dates signature et jours technicien
- API demande mandat SEPA avec email template
- Webhook DocuSeal pour signature contrats (mode TEST)
- Composants modaux détails et vérification PDF fiches de paie
- Upload/suppression/remplacement PDFs dans PayslipsGrid
- Amélioration affichage colonnes et filtres grilles contrats/paies
- Template email mandat SEPA avec sous-texte CTA
- APIs bulk facturation (création, update statut/date paiement)
- API clients sans facture pour période donnée
- Export SEPA des virements salaires
- Corrections calculs dates et montants avec auto-remplissage

Conflit résolu : conservation version main pour récupération nom client (fallback gracieux)
2025-11-03 16:34:44 +01:00
b844a89844 fix: Récupérer org_id via référence contrat si organization_id manquant 2025-11-03 15:30:02 +01:00
4aa817400b fix: Récupérer le nom du client depuis Supabase pour email signature-request-salarie 2025-11-03 15:25:03 +01:00
5502926271 fix: Récupérer le nom du client depuis Supabase pour email signature-request-salarie 2025-11-03 15:23:25 +01:00
265ed6ce67 chore: Désactivation temporaire export SEPA + amélioration validation
- Désactivation du bouton export SEPA avec tooltip 'Bientôt disponible'
- Suppression de la card informative SEPA (en attente tests élargis)
- Amélioration validation IBAN : ajout checksum modulo 97
- Ajout fichier d'audit complet SEPA_EXPORT_AUDIT.md

Raison : Système fonctionnel (testé avec succès sur Qonto) mais
nécessite tests avec autres banques avant activation production.

Le bouton 'Marquer comme payé' reste actif et fonctionnel.
2025-11-03 00:14:10 +01:00
91e0919274 feat: Ajout export SEPA et marquage groupé des virements salaires
- Ajout export fichier SEPA XML (norme ISO 20022 pain.001.001.03)
  * Sélection multiple via checkboxes
  * Génération XML pour virements bancaires groupés
  * Validation IBAN et gestion des salariés sans RIB
  * Modal de succès/avertissements
  * Référence: Nom organisation - Période

- Ajout marquage groupé des paies comme payées
  * Sélection multiple des paies
  * Modal de confirmation
  * Actualisation automatique sans refresh

- Nouvelle route API /api/virements-salaires/[id] (PATCH)
  * Mise à jour transfer_done et transfer_done_at

- Amélioration UX
  * Card informative pour clients non-Odentas
  * Modal informatif dans 'En savoir plus'
  * Messages clairs et cohérents
2025-11-03 00:08:21 +01:00
897af4b23a feat: Ajout fonctionnalités virements, facturation, signatures et emails
- Ajout sous-header total net à payer sur page virements-salaires
- Migration transfer_done_at pour tracking précis des virements
- Nouvelle page saisie tableau pour création factures en masse
- APIs bulk pour mise à jour dates signature et jours technicien
- API demande mandat SEPA avec email template
- Webhook DocuSeal pour signature contrats (mode TEST)
- Composants modaux détails et vérification PDF fiches de paie
- Upload/suppression/remplacement PDFs dans PayslipsGrid
- Amélioration affichage colonnes et filtres grilles contrats/paies
- Template email mandat SEPA avec sous-texte CTA
- APIs bulk facturation (création, update statut/date paiement)
- API clients sans facture pour période donnée
- Corrections calculs dates et montants avec auto-remplissage
2025-11-02 23:26:19 +01:00
46633ecd74 chore: Masquer temporairement le bouton Parrainage dans la sidebar 2025-10-31 23:35:07 +01:00
6170365fc0 feat: Ajout programme de parrainage, bannières promo, déduplication webhooks et avenants signés
- Programme de parrainage (referrals):
  * Page /parrainage pour clients et staff
  * API /api/referrals (GET, POST)
  * Table referrals avec tracking complet
  * Email template avec design orange/gradient
  * Réductions: 30€ HT parrain, 20€ HT filleul

- Bannières promotionnelles (promo_banners):
  * Page staff /staff/offres-promo pour gérer les bannières
  * API /api/promo-banners (CRUD complet)
  * Composant PromoBanner affiché en haut de l'espace
  * Compte à rebours optionnel
  * Customisation couleurs (gradient, texte, CTA)

- Déduplication des webhooks DocuSeal:
  * Table webhook_events pour tracker les webhooks traités
  * Helper checkAndMarkWebhookProcessed()
  * Intégré dans docuseal-amendment et docuseal-amendment-completed
  * Prévient les doublons d'emails

- Avenants signés:
  * API GET /api/contrats/[id]/avenants
  * Affichage des avenants signés dans DocumentsCard
  * Génération d'URLs presignées S3

- Brouillons d'emails groupés:
  * Table bulk_email_drafts pour sauvegarder les brouillons
  * Template HTML bulk-email-template.html

- Améliorations ContractsGrid:
  * Ajout filtre par production (dépendant de la structure)
  * Tri par production

- Templates emails:
  * referral-template.html (parrainage)
  * bulk-email-template.html (emails groupés staff)
2025-10-31 23:31:53 +01:00
d326730cfb fix: Améliorer webhook signature avenant - téléchargement PDF signé + filtres
- Ajout filtres: vérifier template AVENANT + rôle Salarié
- Téléchargement du PDF signé depuis DocuSeal
- Upload du PDF sur S3 (bucket odentas-docs/avenants/)
- Mise à jour signature_status et statut à 'signed'
- Mise à jour pdf_s3_key avec le chemin S3
- Suppression code dupliqué
- Correction bucket S3 (odentas-docs au lieu de odentas-signatures)
2025-10-31 23:20:12 +01:00
73e914a303 feat: Système de statuts enrichi avec descriptions markdown et refonte navigation
- Header: Ajout 3ème ligne de statut (Caisses & orga.) avec descriptions détaillées
- Tooltips: Affichage riche avec titre, voyant coloré et contenu markdown formaté
- Éditeur markdown: Nouveau composant RichTextEditor avec toolbar (gras, italique, liens, listes)
- Modal staff: StatusEditModal étendu avec onglets et éditeur de descriptions
- Migration: Ajout colonnes status_*_description dans maintenance_status
- API: Routes GET/PUT enrichies pour gérer les 9 champs de statut
- Navigation: Redirection /compte/securite → /securite (nouvelle page centralisée)
- Breadcrumb: Support contrats RG/CDDU multi + labels dynamiques salariés
- UX Documents: Bouton 'Nouvel onglet / Télécharger' au lieu de téléchargement forcé
- Contrats staff: Pagination paies (6/page) pour RG et CDDU multi-mois avec vue compacte
- PayslipCard: Bouton cliquable 'Ouvrir le PDF' pour accès direct aux bulletins
2025-10-31 19:42:25 +01:00