8.6 KiB
8.6 KiB
Guide de test - Virements Salaires Staff
Prérequis
-
Être connecté en tant qu'utilisateur Staff
- Votre compte doit avoir
is_staff = truedans la tableusers
- Votre compte doit avoir
-
Avoir des données de test
- Au moins une organisation dans
organizations - Des contrats CDDU dans
cddu_contractsavec :org_idcorrespondant à l'organisationpayment_datedéfinieemployee_first_name,employee_last_name,employee_iban,net_amountremplis
- Au moins une organisation dans
-
Variables d'environnement configurées
PDFMONKEY_URL=https://api.pdfmonkey.io/api/v1/documents PDFMONKEY_API_KEY=<votre_clé> AWS_REGION=eu-west-3 AWS_ACCESS_KEY_ID=<votre_clé> AWS_SECRET_ACCESS_KEY=<votre_clé> AWS_S3_BUCKET=nouvel-espace-paie
Étapes de test
1. Accéder à la page
- URL :
/staff/virements-salaires - Vérifier que la page s'affiche correctement
- Vérifier que le bouton "Créer un virement" est visible en haut à droite
2. Créer un nouveau virement
2.1 Ouvrir le modal
- Cliquer sur le bouton "+ Créer un virement"
- Le modal doit s'ouvrir avec le formulaire
2.2 Remplir le formulaire
- Organisation : Sélectionner une organisation existante
- Période (mois) : Sélectionner un mois (ex: 2025-01)
- Vérifier que le "Libellé de la période" se remplit automatiquement
- Date d'échéance : Sélectionner une date (ex: 2025-01-15)
- Mode : Sélectionner SEPA, VIREMENT ou odentas_reverse
- Total Net (optionnel) : Laisser vide pour l'instant
- Notes (optionnel) : Ajouter une note de test
2.3 Valider la création
- Cliquer sur "Créer"
- Vérifier l'alerte de succès
- Vérifier que le modal se ferme
- Vérifier que le nouveau virement apparaît dans le tableau
3. Générer le PDF
3.1 Vérifier les contrats de test
Avant de générer, assurez-vous qu'il existe des contrats pour le mois sélectionné.
Exemple de requête SQL pour vérifier :
SELECT
id,
employee_first_name,
employee_last_name,
employee_iban,
payment_date,
net_amount
FROM cddu_contracts
WHERE org_id = '<votre_org_id>'
AND DATE_TRUNC('month', payment_date) = '<votre_period_month>'::date;
3.2 Générer le PDF
- Dans la colonne "Actions", cliquer sur "Générer PDF"
- Confirmer dans la boîte de dialogue
- Le bouton doit afficher "Génération..."
- Attendre la fin de la génération (peut prendre 10-30 secondes)
- Vérifier l'alerte de succès avec le nombre de contrats
3.3 Vérifier le résultat
- Le bouton doit maintenant afficher "Regénérer PDF"
- Dans la colonne "Feuille d'appel", l'URL du PDF doit être visible
- Cliquer sur l'URL pour ouvrir le PDF dans un nouvel onglet
3.4 Vérifier le contenu du PDF
Le PDF doit contenir :
- Le nom de l'organisation
- La période (ex: "Janvier 2025")
- La date d'échéance formatée
- Le total net de tous les contrats
- Un tableau avec tous les contrats :
- Nom et prénom de l'employé
- IBAN
- Montant net
- Date de paiement
4. Tests de cas limites
4.1 Période sans contrats
- Créer un virement pour un mois sans contrats
- Générer le PDF
- Vérifier que le PDF est créé avec 0 contrats
- Le total net doit être 0,00
4.2 Regénération
- Pour un virement déjà généré, cliquer sur "Regénérer PDF"
- Vérifier qu'un nouveau PDF est créé
- L'URL dans
callsheet_urldoit être mise à jour
4.3 Validation du formulaire
- Ouvrir le modal de création
- Essayer de soumettre sans remplir les champs obligatoires
- Le bouton "Créer" doit être désactivé
- Remplir uniquement certains champs → le bouton doit rester désactivé
5. Tests des filtres existants
5.1 Filtrer par organisation
- Utiliser le filtre "Organisation" en haut de la page
- Vérifier que seuls les virements de l'organisation sélectionnée sont affichés
5.2 Recherche textuelle
- Utiliser le champ de recherche
- Taper le nom d'une période ou une note
- Vérifier que les résultats sont filtrés
6. Vérifications en base de données
6.1 Vérifier l'enregistrement créé
SELECT * FROM salary_transfers
WHERE id = '<id_du_virement_créé>'
ORDER BY created_at DESC;
Vérifier que :
- Tous les champs sont correctement remplis
callsheet_urlest NULL avant générationcallsheet_urlcontient une URL S3 après génération
6.2 Vérifier le fichier S3
- Se connecter à la console AWS S3
- Naviguer vers le bucket
nouvel-espace-paie - Dossier :
virements-salaires/<org_id>/ - Vérifier que le fichier PDF existe
- Format du nom :
<transfer_id>-<timestamp>.pdf
7. Tests d'erreurs
7.1 Organisation inexistante
Essayer de créer un virement avec un org_id invalide via l'API (tests manuels ou Postman) :
curl -X POST http://localhost:3000/api/staff/virements-salaires/create \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"org_id": "00000000-0000-0000-0000-000000000000",
"period_month": "2025-01",
"deadline": "2025-01-15",
"mode": "SEPA"
}'
Doit retourner une erreur 404 "Organization not found"
7.2 Virement inexistant
Essayer de générer un PDF pour un salary_transfer_id invalide :
curl -X POST http://localhost:3000/api/staff/virements-salaires/generate-pdf \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"salary_transfer_id": "00000000-0000-0000-0000-000000000000"
}'
Doit retourner une erreur 404 "Salary transfer not found"
7.3 Authentification
- Se déconnecter
- Essayer d'accéder à
/staff/virements-salaires - Doit afficher "Accès refusé"
7.4 Utilisateur non-staff
- Se connecter avec un compte non-staff (
is_staff = false) - Essayer d'accéder à
/staff/virements-salaires - Doit afficher "Accès refusé - Cette page est réservée au Staff"
Checklist finale
- Création d'un virement réussie
- Modal se ferme après création
- Nouveau virement visible dans la liste
- Génération PDF réussie (avec contrats)
- URL du PDF correcte dans le tableau
- PDF téléchargeable et contenu correct
- Regénération PDF réussie
- Filtres fonctionnent correctement
- Cas sans contrats géré
- Validation du formulaire fonctionne
- Authentification et autorisation Staff vérifiées
- Fichiers S3 créés correctement
- Base de données mise à jour correctement
Logs à surveiller
Console navigateur
- Vérifier qu'il n'y a pas d'erreurs JavaScript
- Vérifier les logs de Supabase Realtime
Logs serveur (Next.js)
[staff/virements-salaires] Organizations count: X
[staff/virements-salaires] supabase fetch salary_transfers result count: X
Console réseau (DevTools)
- Vérifier les appels API :
POST /api/staff/virements-salaires/create→ 200POST /api/staff/virements-salaires/generate-pdf→ 200
- Vérifier les temps de réponse (génération PDF peut prendre 10-30s)
En cas de problème
Le PDF ne se génère pas
- Vérifier les logs serveur pour voir l'erreur PDFMonkey ou S3
- Vérifier que
PDFMONKEY_API_KEYest correcte - Vérifier que le template ID
F4BCB5FF-1AB1-4CEE-B57F-82A6B9893E9Eexiste - Vérifier les credentials AWS
Les contrats ne sont pas inclus
- Vérifier que les contrats ont une
payment_datenon nulle - Vérifier que le mois de
payment_datecorrespond àperiod_month - Exemple : si
period_month = "2025-01-01", les contrats avecpayment_dateentre "2025-01-01" et "2025-01-31" seront inclus
Le modal ne s'ouvre pas
- Vérifier la console JavaScript pour des erreurs
- Vérifier que le composant
SalaryTransfersGridest bien chargé (client-side)
Realtime ne fonctionne pas
- Vérifier que la table
salary_transfersest publiée pour Realtime dans Supabase - Vérifier les RLS policies
- Recharger la page manuellement après création/génération
Résolution de problèmes courants
"Missing PDFMONKEY_API_KEY"
Ajouter la variable dans .env.local :
PDFMONKEY_API_KEY=votre_clé_api
"Failed to update salary_transfers"
Vérifier les RLS policies sur la table salary_transfers :
-- Policy pour permettre aux staff de mettre à jour
CREATE POLICY "Staff can update salary_transfers"
ON salary_transfers FOR UPDATE
USING (
EXISTS (
SELECT 1 FROM users
WHERE users.id = auth.uid()
AND users.is_staff = true
)
);
Timeout lors de la génération
- Augmenter le nombre de tentatives de polling dans
generate-pdf/route.ts(lignemaxAttempts) - Augmenter l'intervalle de polling (paramètre
intervalMs)
URL S3 incorrecte
Vérifier que AWS_REGION correspond à la région du bucket S3.