# 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