# 📋 Virements Salaires Staff - RĂ©sumĂ© rapide ## ✅ Ce qui a Ă©tĂ© implĂ©mentĂ© ### 🎯 FonctionnalitĂ©s principales 1. **CrĂ©ation de virements de salaires** - Formulaire modal avec tous les champs nĂ©cessaires - Validation des donnĂ©es cĂŽtĂ© client et serveur - Insertion dans la table `salary_transfers` 2. **GĂ©nĂ©ration de PDF via PDFMonkey** - RĂ©cupĂ©ration automatique des contrats de la pĂ©riode - Construction du payload selon le format n8n - GĂ©nĂ©ration via PDFMonkey (template F4BCB5FF-1AB1-4CEE-B57F-82A6B9893E9E) - Upload automatique sur S3 - Mise Ă  jour de l'URL dans la base de donnĂ©es 3. **Interface utilisateur** - Bouton "CrĂ©er un virement" en haut de la page - Modal de crĂ©ation avec formulaire complet - Colonne "Actions" dans le tableau - Bouton "GĂ©nĂ©rer PDF" par ligne - États visuels (en cours, succĂšs) ## 📁 Fichiers créés ### APIs - `app/api/staff/virements-salaires/create/route.ts` - CrĂ©ation d'un virement - `app/api/staff/virements-salaires/generate-pdf/route.ts` - GĂ©nĂ©ration du PDF ### Documentation - `VIREMENTS_SALAIRES_STAFF_FEATURE.md` - Documentation complĂšte de la fonctionnalitĂ© - `VIREMENTS_SALAIRES_TEST_GUIDE.md` - Guide de test dĂ©taillĂ© - `VIREMENTS_SALAIRES_SQL_QUERIES.md` - RequĂȘtes SQL utiles - `VIREMENTS_SALAIRES_STAFF_README.md` - Ce fichier ## 📁 Fichiers modifiĂ©s - `components/staff/SalaryTransfersGrid.tsx` - Ajout du modal et des actions ## 🚀 DĂ©marrage rapide ### 1. Configuration requise VĂ©rifier que ces variables sont dans `.env.local` : ```env # PDFMonkey PDFMONKEY_URL=https://api.pdfmonkey.io/api/v1/documents PDFMONKEY_API_KEY= # AWS S3 AWS_REGION=eu-west-3 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_S3_BUCKET=nouvel-espace-paie ``` ### 2. AccĂšs Ă  la page - URL : `/staff/virements-salaires` - NĂ©cessite : compte Staff (`is_staff = true`) ### 3. Utilisation **CrĂ©er un virement :** 1. Cliquer sur "+ CrĂ©er un virement" 2. Remplir le formulaire (organisation, pĂ©riode, Ă©chĂ©ance, mode) 3. Cliquer sur "CrĂ©er" **GĂ©nĂ©rer le PDF :** 1. Dans la colonne "Actions", cliquer sur "GĂ©nĂ©rer PDF" 2. Confirmer 3. Attendre la gĂ©nĂ©ration (10-30 secondes) 4. Le PDF est automatiquement uploadĂ© sur S3 ## 🔧 Architecture technique ### Flux de crĂ©ation ``` UI (Modal) → POST /api/staff/virements-salaires/create → Validation → Insert DB → Realtime update → UI refresh ``` ### Flux de gĂ©nĂ©ration PDF ``` UI (Bouton) → POST /api/staff/virements-salaires/generate-pdf → RĂ©cupĂ©ration contrats → Payload PDFMonkey → GĂ©nĂ©ration PDF → Polling statut → Download PDF → Upload S3 → Update DB → UI refresh ``` ## 📊 Filtrage des contrats Les contrats inclus dans le PDF sont ceux qui respectent : - MĂȘme `org_id` que le virement - `payment_date` non nulle - **Mois** de `payment_date` = **Mois** de `period_month` Exemple : ``` period_month = "2025-01" → Inclut les contrats avec payment_date entre 2025-01-01 et 2025-01-31 ``` ## 📋 Payload PDFMonkey ```json { "document": { "document_template_id": "F4BCB5FF-1AB1-4CEE-B57F-82A6B9893E9E", "status": "pending", "payload": { "organisation": "Nom organisation", "periode": "Janvier 2025", "date_echeance": "15/01/2025", "total_net": "1234,56", "contrats": [ { "nom": "Dupont", "prenom": "Jean", "iban": "FR76...", "montant_net": "456,78", "date_paiement": "20/01/2025" } ] } } } ``` ## đŸ§Ș Tests rapides 1. **Test crĂ©ation** : CrĂ©er un virement avec des donnĂ©es valides 2. **Test gĂ©nĂ©ration** : GĂ©nĂ©rer le PDF pour ce virement 3. **Test contenu** : Ouvrir le PDF et vĂ©rifier les donnĂ©es 4. **Test S3** : VĂ©rifier que le fichier existe sur S3 5. **Test regĂ©nĂ©ration** : Cliquer sur "RegĂ©nĂ©rer PDF" ## 🔍 VĂ©rifications ### Console navigateur ```javascript // VĂ©rifier les logs Supabase Realtime // VĂ©rifier qu'il n'y a pas d'erreurs JavaScript ``` ### Logs serveur ``` [staff/virements-salaires] Organizations count: X ``` ### Base de donnĂ©es ```sql -- VĂ©rifier le virement créé SELECT * FROM salary_transfers ORDER BY created_at DESC LIMIT 1; -- VĂ©rifier les contrats de la pĂ©riode SELECT COUNT(*) FROM cddu_contracts WHERE org_id = 'ORG_ID' AND DATE_TRUNC('month', payment_date) = '2025-01-01'; ``` ### S3 ``` Bucket : nouvel-espace-paie Dossier : virements-salaires/{org_id}/ Fichier : {transfer_id}-{timestamp}.pdf ``` ## ⚠ Points d'attention 1. **Permissions Staff** - Seuls les utilisateurs avec `is_staff = true` peuvent accĂ©der 2. **Template PDFMonkey** - ID template : `F4BCB5FF-1AB1-4CEE-B57F-82A6B9893E9E` - Doit correspondre au format de payload attendu 3. **Contrats sans IBAN** - VĂ©rifier que tous les contrats ont un IBAN avant gĂ©nĂ©ration - Sinon, le PDF contiendra des IBANs vides 4. **Timeout de gĂ©nĂ©ration** - Par dĂ©faut : 15 tentatives × 3 secondes = 45 secondes max - Ajustable dans `generate-pdf/route.ts` 5. **CoĂ»t S3** - Chaque gĂ©nĂ©ration crĂ©e un nouveau fichier - Penser Ă  nettoyer les anciens fichiers si nĂ©cessaire ## 📚 Documentation dĂ©taillĂ©e - **FonctionnalitĂ© complĂšte** : `VIREMENTS_SALAIRES_STAFF_FEATURE.md` - **Guide de test** : `VIREMENTS_SALAIRES_TEST_GUIDE.md` - **RequĂȘtes SQL** : `VIREMENTS_SALAIRES_SQL_QUERIES.md` ## 🐛 RĂ©solution de problĂšmes | ProblĂšme | Solution | |----------|----------| | PDF ne se gĂ©nĂšre pas | VĂ©rifier `PDFMONKEY_API_KEY` et le template ID | | Contrats manquants | VĂ©rifier que `payment_date` correspond au mois | | Erreur S3 | VĂ©rifier les credentials AWS | | Timeout | Augmenter `maxAttempts` dans generate-pdf/route.ts | | AccĂšs refusĂ© | VĂ©rifier `is_staff = true` pour l'utilisateur | ## 🎉 RĂ©sumĂ© Cette implĂ©mentation permet aux utilisateurs Staff de : - ✅ CrĂ©er des enregistrements de virements de salaires - ✅ GĂ©nĂ©rer automatiquement les feuilles d'appel en PDF - ✅ Suivre l'Ă©tat de chaque virement (PDF gĂ©nĂ©rĂ©, notifications, etc.) - ✅ Avoir une interface complĂšte de gestion Le tout intĂ©grĂ© dans l'interface existante avec : - RĂ©activitĂ© (Supabase Realtime) - SĂ©curitĂ© (authentification Staff) - FiabilitĂ© (polling, gestion d'erreurs) - Documentation complĂšte ## 📞 Support En cas de problĂšme, consulter : 1. Les logs serveur Next.js 2. La console JavaScript du navigateur 3. Les logs PDFMonkey (via leur dashboard) 4. Les logs AWS S3 Pour des questions spĂ©cifiques, se rĂ©fĂ©rer aux fichiers de documentation dĂ©taillĂ©e.