Commit graph

305 commits

Author SHA1 Message Date
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
8edb624330 fix: Corriger logos cassés dans PDFs PDFMonkey
- Conserver data URI complète (data:image/png;base64,...) lors de l'upload
- Ajout script migration SQL pour logos existants
- Compatible avec affichage et génération PDF PDFMonkey
2025-11-27 14:09:16 +01:00
ce46db63af fix: Autoriser iframe simulateur avec X-Frame-Options SAMEORIGIN 2025-11-24 18:31:49 +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
b2b3cf9ed3 feat: Auto-remplir structure_api et documents_slug lors de la création d'un client 2025-11-19 19:00:21 +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
ce9e97d6ec fix: Ajouter autreprecision_duree et autreprecision_salaire aux champs modifiables
- Ajout des deux champs dans CONTRACT_UPDATABLE_FIELDS
- Permet la sauvegarde correcte dans Supabase
2025-11-15 11:38:20 +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
78c43f0bfa feat: Implémentation complète du système de permissions
- Créer lib/permissions.ts avec toutes les fonctions de vérification
- Protéger routes API: facturation, cotisations, virements (bloquer AGENT)
- Protéger routes API: contrats (bloquer COMPTA)
- Protéger routes API: gestion utilisateurs (bloquer AGENT/COMPTA)
- Empêcher ADMIN de modifier/révoquer/créer SUPER_ADMIN
- Ajouter documentation complète dans PERMISSIONS_MATRIX.md

Système à 5 niveaux:
- STAFF (équipe Odentas)
- SUPER_ADMIN (admin principal, 1 par org, protégé)
- ADMIN (admins secondaires)
- AGENT (opérationnel: contrats/paies/salariés)
- COMPTA (financier lecture seule: cotisations/virements/factures)
2025-11-14 20:25:30 +01:00
65d367cb5f fix: Supprimer endpoints pdf-proxy et pdf-clean avec CORS ouvert
- Suppression de /app/api/pdf-proxy/route.ts (endpoint inutilisé avec CORS *)
- Suppression de /app/api/pdf-clean/route.ts (endpoint inutilisé avec CORS *)
- Mise à jour du rapport d'audit de sécurité
- Les PDFs sont désormais affichés via URLs présignées S3 directes
2025-11-14 19:56:37 +01:00
26579a9407 feat: Détecter compte activé + amélioration template email activation 2025-11-14 19:18:37 +01:00
ba727563d5 feat: Afficher 'Invitation envoyée' pour utilisateurs non activés 2025-11-14 19:10:36 +01:00
64c98009d8 fix: Empêcher double exécution page activation + ajout info mot de passe dans email 2025-11-14 18:52:54 +01:00
bd961285c8 fix: Gestion erreurs d'activation et liens expirés
- Ajout vérification queryToken/queryType avant traitement ancien format
- Détection des erreurs dans le hash (lien expiré, access_denied, etc.)
- Message clair si lien expiré : affiche error_description du hash
- Évite 'Type d'activation non supporté: null'
- Message fallback si aucun paramètre valide trouvé
2025-11-14 18:45:01 +01:00
ba3269ff7d fix: Accepter activation avec tokens peu importe le type
- Condition modifiée : accepte access_token + refresh_token sans vérifier type='invite'
- Ajout log pour afficher le type détecté
- Corrige le problème où l'activation tournait dans le vide
2025-11-14 18:41:25 +01:00
d3d8879ec6 fix: Suppression vérification prématurée des paramètres d'activation
- Supprimé le bloc de vérification hasHashTokens/hasQueryTokens qui causait l'erreur
- Le code essaie maintenant directement les deux méthodes sans pré-validation
- Délai augmenté à 500ms pour lecture du hash fragment
- Les erreurs ne s'affichent que si les méthodes échouent réellement
- Plus de message 'Paramètres manquants' avant même de tenter l'activation
2025-11-14 18:27:39 +01:00
2d79467acf fix: Refonte logique activation - vérification unique en début
- Vérification unique au début : hasHashTokens OU hasQueryTokens
- Suppression des vérifications redondantes dans le code
- Erreur affichée seulement si AUCUN format valide trouvé
- Plus de message d'erreur temporaire lors de l'activation avec hash fragment
2025-11-14 18:16:43 +01:00
a5f100e3f4 fix: Augmentation délai activation à 300ms + condition hash fragment
- Délai de 100ms → 300ms pour lecture hash fragment
- Condition modifiée : erreur seulement si AUCUN paramètre (ni hash ni query)
- Fix TypeScript : vérification queryToken non-null avant verifyOtp
- Évite message d'erreur temporaire lors de l'activation
2025-11-14 17:47: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
fc93866d82 feat: Ajouter la copie en un clic pour SIRET et AEM sans ouvrir le détail 2025-11-14 12:40:32 +01:00
7b9a4ef6cc feat: Refonte du tableau clients avec colonnes triables et lignes cliquables 2025-11-14 12:34:05 +01:00
13f151c587 feat: Ajouter le champ AEM dans la gestion paie des clients 2025-11-14 12:30:11 +01:00
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