159 lines
4.4 KiB
Markdown
159 lines
4.4 KiB
Markdown
# 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
|