Commit graph

393 commits

Author SHA1 Message Date
c6faceb038 feat: Préparation migration PDFMonkey vers Gotenberg
- Ajout helpers Handlebars pour remplacer filtres Liquid
- Conversion template CDDU de Liquid vers Handlebars
- Nouvelle API route /api/generate-contract-pdf pour Gotenberg
- Configuration Docker Compose pour auto-héberger Gotenberg
- Documentation complète de migration
- Variables d'environnement exemple

Note: Le bouton 'Créer PDF' utilise encore PDFMonkey.
Pour activer Gotenberg, modifier l'appel dans ContractEditor.tsx
2025-12-27 21:40:27 +01:00
a12bf0ca0e fix: installer devDependencies pour build Docker 2025-12-27 16:15:38 +01:00
6e02b6970c fix: Forcer consistance de la casse et corriger commande build Docker 2025-12-27 16:06:31 +01:00
0692f1089c fix: Forcer rebuild complet sans cache dans Docker 2025-12-27 16:01:41 +01:00
6cd207362d fix: Nettoyer cache Next.js avant build Docker 2025-12-27 16:00:47 +01:00
298d63cceb fix: Renommer fichiers modaux à leur nom définitif 2025-12-27 15:48:51 +01:00
aa277a8a2a fix: Corriger imports avec bonne casse 2025-12-27 15:45:56 +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
7e21350778 build: Invalider cache Docker 2025-12-27 15:34:05 +01:00
be37a884b4 debug: Ajouter vérification components dans Dockerfile 2025-12-27 15:33:42 +01:00
7f854d0021 fix: Forcer inclusion de components dans Docker 2025-12-27 15:31:50 +01:00
2baf035a99 fix: Ajouter .gitattributes et ignorer fichiers backup 2025-12-27 15:22:16 +01:00
78db83ee1a fix: Supprimer fichiers backup du dépôt 2025-12-27 15:21:41 +01:00
b96ff2198a Add Coolify deployment documentation 2025-12-27 14:20:41 +01:00
ccc0f34b03 feat: Add Docker support for Coolify deployment
- Add Dockerfile with multi-stage build
- Add .dockerignore for optimized builds
- Enable standalone output in next.config.mjs
- Optimized for production deployment
2025-12-27 14:13:13 +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
8e9d628e5e feat: Tri alphabétique et format NOM Prénom pour appels à virement 2025-12-19 18:57:21 +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
d01b725632 fix: Regrouper les items par date dans les tableaux de salaires sur contrats-multi
Problème: Les tableaux de la page contrats-multi affichaient une ligne par item (R1, R2 sur des lignes séparées).

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
- Alignement avec la page contrats mono-mois
2025-12-19 18:13:30 +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
ec3d0b3ad7 fix: Détection intelligente de l'année suivante pour les dates en janvier/février/mars
Problème: Quand on sélectionnait des dates en janvier 2026 depuis un contrat en décembre 2025, les dates étaient converties en janvier 2025.

Solution: Amélioration de la fonction parseFrenchedDate pour détecter automatiquement si une date est dans l'année suivante:
- Si le mois de la date est janvier/février/mars (1-3)
- ET que le mois du contexte (dateDebut/dateFin) est oct/nov/déc (10-12)
- Alors on utilise l'année suivante

Exemple: Contrat du 15/12/2025 au 20/01/2026
- Les dates de janvier seront correctement converties en 2026 au lieu de 2025
2025-12-19 17:48:59 +01:00
c148c46796 fix: Utiliser le client admin pour bypasser RLS lors de l'upload manuel du contrat signé
Le problème était que l'update du champ contract_pdf_s3_key utilisait le client Supabase normal (avec RLS) au lieu du client admin (service role). Cela empêchait potentiellement la mise à jour du contrat ou l'accès côté client.

Changements:
- Import de createClient depuis @supabase/supabase-js
- Création d'un adminClient avec SUPABASE_SERVICE_ROLE_KEY
- Utilisation de adminClient pour l'update au lieu de sb
- Ajout de logs pour le debug
2025-12-19 17:46:27 +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
b01cef95f9 debug: Ajouter logs pour identifier pourquoi les notes ne s'enregistrent pas
- Logs pour voir si requestBody.notes arrive bien
- Logs pour voir si la note est vide ou non
- Permettra d'identifier où le problème se situe
2025-12-16 21:29:07 +01:00
c19129ebd9 fix: Gérer exclusivité entre salaire global et salaires par date
- Dans prefill formulaire édition : ne pas afficher montant si salaires_par_date existe
- Dans PATCH : envoyer null pour l'un quand l'autre est défini
- Dans API : effacer montant quand salaires_par_date est défini (et vice-versa)
- Évite d'avoir les deux modes en même temps dans la base
- Le formulaire affiche maintenant correctement les salaires par date à la modification
2025-12-16 21:26:50 +01:00
7f7441c7a2 fix: Ne plus écraser notes dans cddu_contracts lors modification
- 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
2025-12-16 21:24:00 +01:00
c4520a22f6 feat: Afficher tableau des salaires par date dans pages détails contrats
- 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
2025-12-16 21:19:36 +01:00
5131552e18 fix: Enregistrer notes lors de l'édition de contrat client
- 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
2025-12-16 21:16:03 +01:00
f5be6a5b24 fix: Synchroniser salaires_par_date lors du PATCH contrat
- 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
2025-12-16 21:15:11 +01:00
823a149a5d fix: Prendre en compte modifications salaires dans édition contrat client
- 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
2025-12-16 21:08:01 +01:00
bbcda39c24 feat: Améliorer affichage et édition des salaires par jour
- 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)
2025-12-16 21:03:21 +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
cbe43121ef fix: Corriger nom de colonne 'numero' -> 'contract_number' dans API notes
- Utilise 'contract_number' au lieu de 'numero' pour récupérer le n° contrat
- Correspond au nom réel de la colonne dans cddu_contracts
2025-12-16 20:57:25 +01:00
206c1f2afc feat: Notification email lors de l'ajout de notes sur contrats
- 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
2025-12-16 20:39:36 +01:00
76821a2691 fix: Corriger la perte des décimales pour les heures des techniciens dans les avenants PDFMonkey 2025-12-16 17:43:24 +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
c0142d167e feat: Ajouter possibilité de renommer les périodes dans documents comptables (staff) 2025-12-10 16:16:32 +01:00
39fea18d9e fix: Ajouter valeur par défaut pour AWS_S3_BUCKET_NAME dans route download 2025-12-10 15:56:39 +01:00
1954d90255 fix: Améliorer logique de téléchargement .txt avec logs debug 2025-12-10 15:49:46 +01:00
8bf19016a9 fix: Ajouter route API dédiée pour téléchargement fichiers .txt depuis S3 2025-12-10 15:43:42 +01:00
30d77bf7b0 fix: Utiliser fetch + blob pour forcer le téléchargement des fichiers .txt 2025-12-10 15:30:26 +01:00
f26b41c525 fix: Téléchargement direct des fichiers .txt dans documents comptables 2025-12-10 15:23:31 +01:00