# Export SEPA XML pour Virements Salaires **Date** : 2 novembre 2025 **Contexte** : Faciliter les virements de salaires pour les clients ## 🎯 Fonctionnalité Permet aux clients d'exporter un fichier XML au format **SEPA ISO 20022 "pain.001.001.03"** pour lancer facilement les virements de salaires depuis leur banque. ## ✨ Caractéristiques ### 1. Sélection des paies - ✅ Checkbox sur chaque ligne de paie non payée - ✅ Checkbox "Tout sélectionner" dans le header du tableau - ✅ Bouton "Export fichier bancaire (SEPA)" apparaît quand des paies sont cochées - ✅ Compteur de paies sélectionnées affiché ### 2. Regroupement automatique - ✅ Si un salarié a plusieurs paies sélectionnées → **un seul virement** avec montant total - ✅ Les références de contrats sont combinées dans le libellé du virement ### 3. Gestion des IBAN manquants - ⚠️ Si un salarié n'a pas d'IBAN/BIC → il est **automatiquement exclu** de l'export - ⚠️ Un modal d'avertissement liste les salariés exclus - ✅ L'export se fait quand même pour les autres salariés ### 4. Format SEPA XML Le fichier généré respecte la norme **ISO 20022 pain.001.001.03** : - **Donneur d'ordre** : L'entreprise (IBAN depuis `organization_details`) - **Bénéficiaires** : Les salariés (IBAN/BIC depuis la table `salaries`) - **Montants** : Net à payer (`net_after_withholding`) - **Libellés** : **"Nom organisation - Période"** (ex: "Atelier Moz - Octobre 2025") - Le nom de l'organisation est automatiquement tronqué si trop long (limite SEPA : 140 caractères) - La période est formatée au format "Mois Année" (ex: "Octobre 2025") - **Date d'exécution** : Date du jour (modifiable par la banque) ## 📁 Fichiers modifiés ### 1. API Route **`app/api/virements-salaires/export-sepa/route.ts`** - Récupère les payslips sélectionnés - Valide les IBAN (format basique) - Regroupe les paiements par salarié - Génère le XML SEPA - Retourne le fichier + métadonnées ### 2. Page Client **`app/(app)/virements-salaires/page.tsx`** - Ajout d'états : `selectedPayslips`, `showExportModal`, `exportWarnings`, `isExporting` - Ajout de fonctions : - `togglePayslipSelection()` - `toggleSelectAll()` - `handleExportSepa()` - Ajout de la colonne checkbox dans le tableau - Ajout du bouton d'export - Ajout du modal d'avertissement pour salariés sans IBAN ## 🗄️ Données requises ### Dans `organization_details` - ✅ `iban` (IBAN de l'entreprise) - **REQUIS** - ⚠️ `bic` (BIC de la banque) - Optionnel mais recommandé ### Dans `salaries` - ✅ `iban` (IBAN du salarié) - **REQUIS pour inclusion** - ⚠️ `bic` (BIC de la banque du salarié) - Optionnel Si l'entreprise n'a pas d'IBAN → Erreur bloquante Si un salarié n'a pas d'IBAN → Exclusion automatique avec avertissement ## 🔄 Workflow utilisateur 1. Client va sur `/virements-salaires` 2. Client coche les paies à payer 3. Bouton "Export fichier bancaire" apparaît 4. Client clique sur le bouton 5. API génère le XML SEPA 6. Si des salariés n'ont pas d'IBAN → Modal d'avertissement 7. Fichier `virements_sepa_MSGXXX.xml` est téléchargé 8. Client importe le fichier dans son espace bancaire 9. Client valide les virements dans sa banque ## 📝 Exemple de fichier généré ```xml MSG20251102143025ABC123 2025-11-02T14:30:25Z 3 4250.50 MA STRUCTURE MSG20251102143025ABC123-001 TRF 3 4250.50 SEPA 2025-11-02 MA STRUCTURE FR7630001007941234567890185 BNPAFRPP SLEV MSG20251102143025ABC123-001 1500.00 CEPAFRPP DUPONT Jean FR7612345678901234567890123 Atelier Moz - Octobre 2025 ``` ## 🚀 Prochaines améliorations possibles - [ ] Permettre de choisir la date d'exécution - [ ] Enregistrer l'historique des exports SEPA - [ ] Marquer automatiquement les paies comme "payées" après export - [ ] Support du format pain.001.001.09 (version plus récente) - [ ] Validation IBAN plus stricte avec module de contrôle - [ ] Récupération automatique du BIC depuis l'IBAN (API externe) ## 📊 Impact - **UX** : Les clients gagnent du temps sur la saisie manuelle des virements - **Sécurité** : Moins d'erreurs de saisie d'IBAN - **Traçabilité** : Libellés standardisés avec références de contrats - **Conformité** : Format SEPA standard accepté par toutes les banques européennes