espace-paie-odentas/VIREMENTS_SALAIRES_LOGIQUE_CLARIFIEE.md

179 lines
5.6 KiB
Markdown

# Clarification de la logique des virements salaires
## Date : 14 octobre 2025
## Contexte
Les champs de la table `salary_transfers` ont été clarifiés pour mieux refléter le cycle de vie d'un virement :
## Nouvelle logique des champs
### 1. **notification_sent** (boolean)
- **Signification** : La notification a été envoyée au client
- **Valeur par défaut** : `false`
- **Quand passe à true** : Lors de l'appel à l'API `/api/staff/virements-salaires/[id]/notify-client`
- **Affichage** : Badge "✓ Envoyée" / "Non envoyée"
### 2. **notification_ok** (boolean) - NOUVELLE SIGNIFICATION
- **Ancienne signification** : Statut de la notification (OK / Erreur)
- **Nouvelle signification** : **Paiement client reçu** (Oui / Non)
- **Valeur par défaut** : `false`
- **Quand passe à true** :
- Manuellement par le staff via le modal d'édition
- Automatiquement quand on coche "Paiement client reçu"
- Via le bouton "Marquer comme reçu"
- **Affichage** : Badge "✓ Reçu" / "Non reçu"
### 3. **client_wire_received_at** (timestamp, optionnel)
- **Signification** : Date de réception du virement client
- **Valeur par défaut** : `null`
- **Quand renseigné** :
- Automatiquement à la date du jour lors de la cochage de "Paiement client reçu"
- Manuellement modifiable dans le formulaire d'édition
- Peut être effacé
- **Affichage** : Date formatée ou "—" si non renseignée
### 4. **salaires_payes** (boolean) - NOUVEAU CHAMP
- **Signification** : Les salaires ont été payés aux salariés
- **Valeur par défaut** : `false`
- **Quand passe à true** :
- Manuellement par le staff via le modal d'édition
- Via le bouton "Marquer comme payés"
- **Affichage** : Badge "✓ Payés" / "Non payés"
### 5. **num_appel** (text)
- **Signification** : Numéro d'appel de fonds (ex: "00001")
- **Correction** : Le champ est maintenant pris en compte lors de la **création** d'un virement
- **Affichage** : Police monospace dans le tableau et le modal
## Cycle de vie d'un virement
```
1. CRÉATION
└─> num_appel renseigné
└─> notification_sent = false
└─> notification_ok = false
└─> salaires_payes = false
2. GÉNÉRATION PDF
└─> callsheet_url renseigné
3. NOTIFICATION CLIENT
└─> notification_sent = true
└─> Email envoyé au client
4. RÉCEPTION PAIEMENT CLIENT
└─> notification_ok = true
└─> client_wire_received_at = date (optionnel)
5. PAIEMENT DES SALAIRES
└─> salaires_payes = true
```
## Interface utilisateur
### Affichage en lecture (Modal)
Le modal affiche maintenant 3 sections distinctes :
1. **Notification client**
- Statut : Envoyée / Non envoyée
2. **Paiement client reçu**
- Statut : Reçu / Non reçu
- Date : (si renseignée)
- Bouton rapide : "Marquer comme reçu"
3. **Salaires payés**
- Statut : Payés / Non payés
- Bouton rapide : "Marquer comme payés"
### Formulaire d'édition
Le formulaire permet maintenant de modifier :
1. **Paiement client**
- ☑ Checkbox "Paiement client reçu"
- 📅 Date de réception (optionnelle)
- ❌ Bouton pour effacer la date
2. **Salaires**
- ☑ Checkbox "Salaires payés aux salariés"
### Tableau principal
Les colonnes ont été réorganisées :
| Colonne | Contenu |
|---------|---------|
| Notification | Badge "✓ Envoyée" / "Non envoyée" |
| Paiement client | Badge "✓ Reçu" / "Non reçu" + date |
| Salaires payés | Badge "✓ Payés" / "Non payés" |
### Filtres
Nouveaux filtres disponibles :
- **Notification envoyée** : Oui / Non
- **Paiement client reçu** : Oui / Non
- **Date virement client** : Avec date / Sans date
- **Salaires payés** : Oui / Non (NOUVEAU)
## API
### Création - POST /api/staff/virements-salaires/create
**Champs pris en compte :**
- `num_appel` ✅ (corrigé)
- `salaires_payes` ✅ (nouveau, défaut: false)
### Mise à jour - PATCH /api/staff/virements-salaires/[id]
**Nouveaux champs acceptés :**
- `notification_ok` : boolean
- `salaires_payes` : boolean
## Migration base de données
Exécuter le fichier :
```bash
supabase/migrations/add_salaires_payes_column.sql
```
Ce script :
- ✅ Ajoute la colonne `salaires_payes`
- ✅ Vérifie l'existence de `num_appel`
- ✅ Ajoute des commentaires pour clarifier la logique
- ✅ Crée des index pour améliorer les performances
- ✅ Met à jour les données existantes (notification_ok pour les virements avec date)
## Corrections apportées
### ✅ 1. Notification liée à notification_sent
Avant : Confusion entre "notification envoyée" et "notification OK"
Après : `notification_sent` = notification envoyée (clair)
### ✅ 2. Virement reçu lié à notification_ok + client_wire_received_at
Avant : `notification_ok` = statut erreur/OK de la notification
Après : `notification_ok` = paiement client reçu (oui/non), `client_wire_received_at` = date (optionnelle)
### ✅ 3. Paiement modifiable avec ou sans date
Avant : Obligation de mettre une date pour marquer comme reçu
Après : Checkbox séparée + date optionnelle
### ✅ 4. Salaires payés lié à salaires_payes
Avant : Pas de champ dédié
Après : Nouveau champ `salaires_payes` (boolean)
### ✅ 5. Numéro d'appel pris en compte à la création
Avant : `num_appel` uniquement en modification
Après : `num_appel` pris en compte dès la création
## Tests recommandés
1. ✅ Créer un nouveau virement avec `num_appel`
2. ✅ Marquer le paiement client comme reçu (avec et sans date)
3. ✅ Marquer les salaires comme payés
4. ✅ Vérifier les filtres fonctionnent correctement
5. ✅ Tester les boutons rapides "Marquer comme reçu" et "Marquer comme payés"
6. ✅ Vérifier l'affichage dans le tableau principal