# Correctif : Mise à jour du Numéro d'Appel ## 🐛 Problème Identifié Le champ `num_appel` n'était pas pris en compte lors de la modification d'un virement de salaire. Le numéro saisi dans le formulaire de modification n'était pas enregistré en base de données. ## ✅ Solution Appliquée ### 1. Frontend (`components/staff/SalaryTransfersGrid.tsx`) **Avant** : ```typescript const payload = { period_month: periodDate, period_label: editForm.period_label, deadline: editForm.deadline, mode: editForm.mode, total_net: editForm.total_net, notes: editForm.notes, // ❌ num_appel manquant }; ``` **Après** : ```typescript const payload = { period_month: periodDate, period_label: editForm.period_label, deadline: editForm.deadline, mode: editForm.mode, num_appel: editForm.num_appel, // ✅ Ajouté total_net: editForm.total_net, notes: editForm.notes, }; console.log("[handleUpdateTransfer] Payload:", payload); // ✅ Log ajouté ``` ### 2. Backend (`app/api/staff/virements-salaires/[id]/route.ts`) **Avant** : ```typescript const { period_month, period_label, deadline, mode, total_net, notes, // ❌ num_appel manquant } = body; // ... if (period_month !== undefined) updateData.period_month = period_month; if (period_label !== undefined) updateData.period_label = period_label; if (deadline !== undefined) updateData.deadline = deadline; if (mode !== undefined) updateData.mode = mode; if (total_net !== undefined) updateData.total_net = total_net; if (notes !== undefined) updateData.notes = notes; // ❌ num_appel manquant ``` **Après** : ```typescript const { period_month, period_label, deadline, mode, num_appel, // ✅ Ajouté total_net, notes, } = body; // ... if (period_month !== undefined) updateData.period_month = period_month; if (period_label !== undefined) updateData.period_label = period_label; if (deadline !== undefined) updateData.deadline = deadline; if (mode !== undefined) updateData.mode = mode; if (num_appel !== undefined) updateData.num_appel = num_appel; // ✅ Ajouté if (total_net !== undefined) updateData.total_net = total_net; if (notes !== undefined) updateData.notes = notes; ``` ## 🧪 Test du Correctif ### Procédure de test : 1. **Ouvrir un virement existant** : - Aller sur Staff → Virements de Salaires - Cliquer sur un virement dans la liste 2. **Modifier le numéro d'appel** : - Cliquer sur "Modifier" - Changer le champ "Numéro d'appel" (ex: "00042") - Cliquer sur "Enregistrer" 3. **Vérifier la mise à jour** : - Le modal doit se fermer - Le numéro doit apparaître dans la colonne "N° Appel" du tableau - Rouvrir le virement pour confirmer que le numéro est bien enregistré 4. **Vérifier les logs** (optionnel) : - Dans la console du navigateur, chercher : ``` [handleUpdateTransfer] Payload: { ..., num_appel: "00042", ... } ``` - Dans les logs serveur Next.js, chercher : ``` [update salary transfer] Update data: { ..., num_appel: "00042", ... } ``` ### Vérification en base de données : ```sql -- Vérifier que la colonne num_appel est bien mise à jour SELECT id, num_appel, period_label, updated_at FROM salary_transfers WHERE id = 'ID_DU_VIREMENT' ORDER BY updated_at DESC; ``` ## 📊 Impact - ✅ Le numéro d'appel peut maintenant être modifié - ✅ La valeur est correctement enregistrée en base - ✅ La référence de virement utilisera le bon numéro lors de la génération PDF - ✅ Logs ajoutés pour faciliter le débogage ## 📁 Fichiers Modifiés 1. **components/staff/SalaryTransfersGrid.tsx** - Ajout de `num_appel` dans le payload de mise à jour - Ajout d'un log pour tracer le payload envoyé 2. **app/api/staff/virements-salaires/[id]/route.ts** - Extraction de `num_appel` depuis le body de la requête - Ajout de la mise à jour conditionnelle de `num_appel` ## 🔧 Notes Techniques ### Pourquoi ce bug ? Le champ `num_appel` a été ajouté récemment à la colonne Supabase, mais : - ❌ Le formulaire le permettait de le modifier (champ visible) - ❌ Mais le payload d'update ne l'incluait pas - ❌ L'API ne le traitait pas non plus ### Mise à jour conditionnelle L'API utilise une mise à jour conditionnelle (`if (num_appel !== undefined)`) qui permet : - ✅ De ne mettre à jour que les champs fournis - ✅ De ne pas écraser les champs non modifiés - ✅ D'accepter `null` comme valeur valide pour supprimer un numéro ## 📅 Date du Correctif 13 octobre 2025