- Ajout sous-header total net à payer sur page virements-salaires - Migration transfer_done_at pour tracking précis des virements - Nouvelle page saisie tableau pour création factures en masse - APIs bulk pour mise à jour dates signature et jours technicien - API demande mandat SEPA avec email template - Webhook DocuSeal pour signature contrats (mode TEST) - Composants modaux détails et vérification PDF fiches de paie - Upload/suppression/remplacement PDFs dans PayslipsGrid - Amélioration affichage colonnes et filtres grilles contrats/paies - Template email mandat SEPA avec sous-texte CTA - APIs bulk facturation (création, update statut/date paiement) - API clients sans facture pour période donnée - Corrections calculs dates et montants avec auto-remplissage
72 lines
2.8 KiB
Markdown
72 lines
2.8 KiB
Markdown
# Migration : Ajout de transfer_done_at pour les virements salaires
|
|
|
|
**Date** : 2 novembre 2025
|
|
**Contexte** : Amélioration du tracking des virements de salaires
|
|
|
|
## 🎯 Problème identifié
|
|
|
|
Le système utilisait la colonne `updated_at` pour déterminer si une paie avait été virée dans les 30 derniers jours. Cette colonne est mise à jour à **chaque modification** du payslip, pas seulement quand on marque le virement comme effectué.
|
|
|
|
**Conséquence** : Une paie marquée comme virée il y a 2 mois pouvait réapparaître dans "Virements récemment effectués" si le payslip était modifié pour une autre raison.
|
|
|
|
## ✅ Solution implémentée
|
|
|
|
### 1. Nouvelle colonne `transfer_done_at`
|
|
|
|
Ajout d'une colonne `transfer_done_at` (TIMESTAMPTZ) dans la table `payslips` :
|
|
- **NULL** : Virement pas encore effectué
|
|
- **Date** : Date exacte où le virement a été marqué comme effectué
|
|
|
|
### 2. Modifications du code
|
|
|
|
#### API PATCH `/api/payslips/[id]`
|
|
- Quand `transfer_done` passe à `true` → on enregistre la date actuelle dans `transfer_done_at`
|
|
- Quand `transfer_done` passe à `false` → on efface `transfer_done_at` (remis à NULL)
|
|
|
|
#### API GET `/api/virements-salaires`
|
|
- Ajout de `transfer_done_at` dans le SELECT
|
|
- Utilisation de `transfer_done_at` au lieu de `updated_at` pour filtrer les paies récentes (≤ 30 jours)
|
|
|
|
### 3. Migration de données
|
|
|
|
Les payslips existants avec `transfer_done = true` ont été migrés :
|
|
- `transfer_done_at` = `updated_at` (valeur par défaut pour l'historique)
|
|
|
|
## 📁 Fichiers modifiés
|
|
|
|
1. `migrations/add_transfer_done_at_to_payslips.sql` - Migration SQL
|
|
2. `app/api/payslips/[id]/route.ts` - API PATCH pour mettre à jour transfer_done_at
|
|
3. `app/api/virements-salaires/route.ts` - API GET utilisant transfer_done_at
|
|
|
|
## 🚀 Déploiement
|
|
|
|
### Étape 1 : Exécuter la migration SQL
|
|
```sql
|
|
-- Sur Supabase, exécuter le fichier migrations/add_transfer_done_at_to_payslips.sql
|
|
```
|
|
|
|
### Étape 2 : Déployer le code
|
|
```bash
|
|
# Build et déploiement
|
|
npm run build
|
|
git push origin feat/direct-docuseal-webhook-contracts
|
|
```
|
|
|
|
### Étape 3 : Vérifier
|
|
- Aller sur `/virements-salaires`
|
|
- Marquer une paie comme payée
|
|
- Vérifier qu'elle apparaît dans "Virements récemment effectués"
|
|
- Annuler le marquage
|
|
- Vérifier qu'elle revient dans "Paies à payer"
|
|
|
|
## 🔍 Points de vigilance
|
|
|
|
- Les paies virées **avant** cette migration auront `transfer_done_at = updated_at`
|
|
- Seules les nouvelles modifications auront la vraie date de marquage
|
|
- Les index créés optimisent les requêtes sur `transfer_done_at`
|
|
|
|
## 📊 Impact
|
|
|
|
- **Performance** : Ajout d'index pour optimiser les requêtes
|
|
- **UX** : Les utilisateurs verront désormais précisément les paies virées dans les 30 derniers jours
|
|
- **Traçabilité** : Meilleur suivi de l'historique des virements
|