6.5 KiB
6.5 KiB
📋 Virements Salaires Staff - Résumé rapide
✅ Ce qui a été implémenté
🎯 Fonctionnalités principales
-
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
-
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
-
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 virementapp/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 utilesVIREMENTS_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 :
# PDFMonkey
PDFMONKEY_URL=https://api.pdfmonkey.io/api/v1/documents
PDFMONKEY_API_KEY=<votre_clé>
# AWS S3
AWS_REGION=eu-west-3
AWS_ACCESS_KEY_ID=<votre_clé>
AWS_SECRET_ACCESS_KEY=<votre_clé>
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 :
- Cliquer sur "+ Créer un virement"
- Remplir le formulaire (organisation, période, échéance, mode)
- Cliquer sur "Créer"
Générer le PDF :
- Dans la colonne "Actions", cliquer sur "Générer PDF"
- Confirmer
- Attendre la génération (10-30 secondes)
- 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_idque le virement payment_datenon nulle- Mois de
payment_date= Mois deperiod_month
Exemple :
period_month = "2025-01"
→ Inclut les contrats avec payment_date entre 2025-01-01 et 2025-01-31
📋 Payload PDFMonkey
{
"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
- Test création : Créer un virement avec des données valides
- Test génération : Générer le PDF pour ce virement
- Test contenu : Ouvrir le PDF et vérifier les données
- Test S3 : Vérifier que le fichier existe sur S3
- Test regénération : Cliquer sur "Regénérer PDF"
🔍 Vérifications
Console navigateur
// 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
-- 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
-
Permissions Staff
- Seuls les utilisateurs avec
is_staff = truepeuvent accéder
- Seuls les utilisateurs avec
-
Template PDFMonkey
- ID template :
F4BCB5FF-1AB1-4CEE-B57F-82A6B9893E9E - Doit correspondre au format de payload attendu
- ID template :
-
Contrats sans IBAN
- Vérifier que tous les contrats ont un IBAN avant génération
- Sinon, le PDF contiendra des IBANs vides
-
Timeout de génération
- Par défaut : 15 tentatives × 3 secondes = 45 secondes max
- Ajustable dans
generate-pdf/route.ts
-
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 :
- Les logs serveur Next.js
- La console JavaScript du navigateur
- Les logs PDFMonkey (via leur dashboard)
- Les logs AWS S3
Pour des questions spécifiques, se référer aux fichiers de documentation détaillée.