espace-paie-odentas/MIGRATION_TRANSFER_DONE_AT.md
odentas 897af4b23a feat: Ajout fonctionnalités virements, facturation, signatures et emails
- 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
2025-11-02 23:26:19 +01:00

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