Commit graph

129 commits

Author SHA1 Message Date
a58d4982e6 fix: Corriger les noms de colonnes dans upload-signed-pdf
- organization_id -> org_id
- api_name -> name (puis slugification)
- Ajouter logs détaillés pour debug
- Améliorer la gestion des cas où org_id est null
2025-10-22 18:10:34 +02:00
b0fea6813b feat: Ajout de l'upload manuel du contrat signé dans staff/contrats/[id]
- Création de l'API route /api/staff/contrats/[id]/upload-signed-pdf
  - Accepte un fichier PDF via FormData
  - Stocke le PDF dans S3 avec la clé contracts/<org-slug>/<contract_number>.pdf
  - Met à jour contract_pdf_s3_key et contrat_signe='Oui' dans la BDD

- Création du composant ManualSignedContractUpload
  - Modal avec drag & drop pour sélectionner un PDF
  - Validation du type de fichier et de la taille (max 10 Mo)
  - Feedback visuel de l'upload (loading, succès)

- Intégration dans ContractEditor
  - Ajout du bouton d'upload dans la section Documents
  - Invalidation de la query après upload pour rafraîchir automatiquement
  - Affichage du contrat uploadé comme ceux signés via Docuseal

Permet de gérer les contrats signés reçus par email ou autre moyen externe
2025-10-22 17:55:05 +02:00
542e0e963d feat: Stocker et utiliser employee_docuseal_slug pour signature-salarie
- Ajout colonne employee_docuseal_slug dans cddu_contracts
- Stockage automatique du slug lors de création signature DocuSeal
- Recherche directe par slug (+ rapide et fiable)
- Bypass mode maintenance en localhost
- Scripts de migration pour contrats existants (92 contrats migrés)
- Logs détaillés dans verify-birthdate et check-status

Fixes: Erreur 'Document introuvable' pour contrats anciens
Performance: O(n) -> O(1) avec index sur employee_docuseal_slug
2025-10-22 17:35:50 +02:00
e23d9a17e9 Maintenance salarié 2025-10-22 17:18:59 +02:00
b648f6805f Cards signature salarié + correction modale signatures électroniques 2025-10-22 17:02:09 +02:00
389629201c fix: Corriger affichage nom organisation dans emails signature
- Ajouter type_de_contrat dans relance-salarie pour afficher CDDU/RG
- Récupérer nom organisation depuis DB plutôt que payload Lambda
- Éviter confusion entre productionName et organizationName
- Améliorer logs pour debugging
2025-10-22 16:10:09 +02:00
eabc47c4ca Correction erreur build 2025-10-22 15:45:54 +02:00
95c826cbe7 feat(staff/contrats): Ajouter modale de confirmation pour relance salariés (liste emails) et neutraliser le texte d’e-mail pour envoi staff\n\n- Bulk: 'Relancer salariés' ouvre un modal listant les contrats et emails avant envoi\n- Single: bouton par ligne 'Relancer' inchangé (modale de confirmation)\n- Email: route staff utilise 'signature-request-salarie' (ne pas afficher 'rappel par employeur')\n- Build OK 2025-10-22 15:16:55 +02:00
511eac1155 Correction relance signature salarié 2025-10-22 12:55:01 +02:00
02df1062ad fix: Relance salarié (staff) — éviter les faux 'Contrat non trouvé' en ne filtrant pas par org_id/employer_id côté staff; supprimer le fallback du prénom (doit venir de salaries) 2025-10-22 12:29:33 +02:00
2030b2ad0f fix: rafraîchir les signatures après DocuSeal 2025-10-22 11:50:10 +02:00
7bddde0eb2 fix: Corriger désélection d'orga en quittant un modal de signature
- Ajouter selectedOrgId à la dépendance du useEffect des listeners
- Éviter la réutilisation d'anciens handlers qui capturaient une valeur vide
- Les modales rechargent maintenant correctement les données avec l'orga sélectionnée
2025-10-22 11:20:56 +02:00
ea06d4c982 WIP: modifs sur Mac Mini 2025-10-22 11:00:44 +02:00
74aa268603 Merge: résout les conflits et aligne main avec origin/main 2025-10-22 10:59:01 +02:00
8aadaaf024 Supabase realtime + modal confirmation Signatures électroniques 2025-10-22 10:50:41 +02:00
aa3c5838f3 feat: Ajouter système de relance salarié sur page staff/contrats 2025-10-22 10:36:03 +02:00
577c8d5938 refactor: Restructurer les menus d'actions contrats avec séparation E-signature 2025-10-22 10:25:20 +02:00
2e991eb185 feat(staff): allow clearing 'Dates travaillées' in contract editor and persist as null 2025-10-21 08:14:10 +02:00
f5c2417ff0 fix(api): force dynamic Node runtime on routes using cookies or request.url (pdf-diagnosis, documents/generaux, maintenance/status, staff/*, dl-contrat-signe) 2025-10-21 07:57:43 +02:00
ae4f91857a chore(vercel): installation silencieuse (npm ci --silent) en plus du build silencieux 2025-10-21 07:42:53 +02:00
2e2c7d06e9 chore(vercel): build silencieux via buildCommand (npm run --silent build); package.json sans flag non supporté 2025-10-21 07:40:24 +02:00
2fca0fcbf2 feat(calculator): afficher l’expression du calcul, arrondir à 2 décimales et réinitialiser la saisie après calcul; feat(form): forcer 2 décimales dans Montant quand on utilise la calculatrice; fix(tooltip): placement top au-dessus du trigger; embed(minima): runtime CSS en mode embed 2025-10-21 07:28:34 +02:00
b3b56a9b4e fix: Corriger envoi des dates de représentation à PDFMonkey et intégrer calendrier dans staff/contrats 2025-10-20 22:51:29 +02:00
ed08f3270c fix: Ajouter les icônes et manifests de favicon.io avec configuration complète 2025-10-20 22:37:53 +02:00
8e6534f1ab retry deploy 2025-10-20 21:47:37 +02:00
e8df1c1729 Force push 2025-10-20 21:35:51 +02:00
b81570f1d5 Force rebuild 2025-10-20 21:32:04 +02:00
551fb32aaa Force rebuild 2025-10-20 21:10:06 +02:00
a118d96cb1 Force rebuild 2025-10-20 20:41:48 +02:00
ba8170ee02 chore: Force commit 2025-10-20 20:31:31 +02:00
dcb58fbbc6 Trigger build 2025-10-20 20:09:28 +02:00
9b544f5590 chore: package-lock.json update 2025-10-20 19:44:06 +02:00
97c36724c7 fix: Corriger les décalages de fuseau horaire dans le calendrier des dates
Le problème était que new Date(year, month, day) crée une date en heure locale,
tandis que minDate/maxDate viennent du serveur en UTC. Cela causait un décalage
d'un jour (ex: 02/10 en début, 04/10 en fin → affichait 03, 04, 05 en sélectionnables).

Solution: Utiliser Date.UTC() pour créer toutes les dates en UTC, ce qui garantit
la cohérence entre les comparaisons de dates ISO.

Affecte:
- handleDateClick() : utilise Date.UTC pour créer isoStr
- isDateSelected() : utilise Date.UTC
- isDateDisabled() : utilise Date.UTC
2025-10-20 19:35:55 +02:00
8c99473fd0 feat: Ajout calendrier multi-mois avec formatage smart pour sélection des dates
- Création de /lib/dateFormatter.ts avec utilities de parsing/formatting des dates
  * Parsing format input (DD/MM) en ISO (YYYY-MM-DD)
  * Groupement automatique des dates consécutives
  * Formatage smart: 'le xx/xx' pour isolées, 'du xx/xx au xx/xx' pour plages
  * Détection automatique du multi-mois
  * Format pour PDFMonkey: 'le 12/10 ; du 14/10 au 17/10.'

- Création de /components/DatePickerCalendar.tsx
  * Composant modal draggable et multi-select
  * Prévisualisation du formatage PDFMonkey
  * Limites de plage (minDate/maxDate)
  * Warning multi-mois
  * Retour des données au format input et pdfFormatted

- Intégration dans /components/contrats/NouveauCDDUForm.tsx
  * Remplacement des inputs texte par calendriers pour dates_representations, dates_repetitions, jours_travail
  * Auto-détection multi-mois et set isMultiMois = 'Oui' si >1 mois
  * Pré-remplissage du calendrier lors de la duplication
  * Affichage lisible du formatage smart

- Intégration dans /components/staff/contracts/ContractEditor.tsx
  * Ajout du calendrier pour zone 'Dates travaillées'
  * Affichage du format smart au lieu du texte brut

Closes #calendar-dates-picker
2025-10-20 19:00:48 +02:00
d71ea55ca7 feat: Permettre à l'API informations de récupérer les emails d'employeurs via org_id 2025-10-20 16:51:05 +02:00
95d5eeb72a feat: Ajouter adresse_mail des salariés et org_id dans la recherche de contrats pour afficher les emails dans la modale e-signature 2025-10-20 16:44:00 +02:00
e5fa2579e1 fix: Déplacer l'early return après les hooks dans BulkESignConfirmModal 2025-10-20 16:38:15 +02:00
f7f29d3a04 fix: Simplifier et corriger la récupération des emails employeurs dans la modale e-signature 2025-10-20 16:32:21 +02:00
e24e3c76ca fix: Corriger la fonction fetchEmployerEmails dans useEffect
- Déplacer fetchEmployerEmails à l'intérieur du useEffect
- Éviter les problèmes de dépendances et de recréation de fonction
- Résoudre l'erreur React #310
2025-10-20 16:23:03 +02:00
be51e95d73 fix: Corriger erreur React #310 - dépendance useEffect
- Modification des dépendances du useEffect pour éviter la boucle infinie
- Garder uniquement 'isOpen' comme dépendance pour éviter de re-charger à chaque changement de selectedContracts
- selectedContracts.length est vérifié dans le corps de l'effet
2025-10-20 16:13:08 +02:00
c151a21cb9 feat: Afficher les adresses email réelles des salariés et employeurs
- Ajout du champ adresse_mail dans le type Contract
- Récupération des emails des salariés depuis la relation salaries
- Récupération des emails des employeurs via l'API /api/informations
- Affichage en temps réel des emails dans le modal avec couleur d'alerte si vide
- Amélioration de la vérification avant d'envoyer les signatures
2025-10-20 16:10:36 +02:00
f68557c6d6 feat: Améliorer le modal de confirmation des e-signatures groupées
- Suppression de la phrase redondante 'Envoyer un email à l'employeur et au salarié pour chaque contrat'
- Ajout d'une section récapitulatif des destinataires avec liste des contrats
- Affichage de l'adresse email du salarié et de l'employeur pour vérification
- Augmentation de la largeur du modal pour une meilleure lisibilité
- Design moderne et cohérent avec l'UI de l'Espace Paie
2025-10-20 16:06:33 +02:00
356f269b49 fix: Conserver la sélection des contrats après les actions groupées
- Suppression de la réinitialisation automatique de la sélection au changement de données
- Conservation de la sélection après les modifications DPAE, État Contrat, État Paie, Saisir brut et e-signatures
- Permet à l'utilisateur d'effectuer plusieurs actions groupées sans devoir resélectionner les contrats
- La suppression continue de réinitialiser la sélection car les contrats supprimés n'existent plus
2025-10-20 16:00:20 +02:00
0c332668ee fix: Passer la prop onClick au composant Th pour permettre le tri au clic
Le composant Th n'acceptait pas la prop onClick, empêchant l'activation
du tri lors du clic sur les headers. Correction: ajouter onClick à la
déstructuration et le passer à l'élément <th>.
2025-10-20 15:03:42 +02:00
cd1ce09be5 feat: Ajouter tri personnalisable (date début/fin) dans la page contrats
- Ajouter les états sortField et sortOrder au composant PageContrats
- Modifier le hook useContrats pour passer sort et order à l'API
- Adapter l'endpoint /api/contrats pour supporter les paramètres de tri dynamiques
- Rendre les headers 'Début' et 'Fin' cliquables avec indicateurs visuels (▲/▼)
- Tri par défaut: date de fin décroissante (contrats les plus proches d'expirer en premier)
2025-10-20 14:12:34 +02:00
1d49bdac82 docs: Ajouter instructions Copilot à la racine du projet 2025-10-20 14:04:01 +02:00
ed8bc7c156 fix: Améliorer calculatrice - corriger focus trap et affichage icône 2025-10-20 13:59:24 +02:00
533fdc29c6 fix: Move regions to root level in vercel.json 2025-10-20 13:53:40 +02:00
992c81edaf chore: Change API Functions region from iad1 to cdg1 2025-10-20 13:53:07 +02:00
718c450016 chore: Redeploy 2025-10-20 13:41:42 +02:00