diff --git a/client/src/pages/InvoicesBAP.tsx b/client/src/pages/InvoicesBAP.tsx
index 3a28b67..2370756 100644
--- a/client/src/pages/InvoicesBAP.tsx
+++ b/client/src/pages/InvoicesBAP.tsx
@@ -32,7 +32,7 @@ import {
TableRow,
} from "@/components/ui/table";
import { trpc } from "@/lib/trpc";
-import { Search, FileText, Download, FileSpreadsheet, Trash2, Edit, Trash, CheckCircle, CheckCircle2 } from "lucide-react";
+import { Search, FileText, Download, FileSpreadsheet, Trash2, Edit, Trash, CheckCircle, CheckCircle2, ShieldCheck } from "lucide-react";
import * as XLSX from 'xlsx';
import { toast } from "sonner";
import { useLocation } from "wouter";
@@ -131,6 +131,24 @@ export default function InvoicesBAP() {
},
});
+ const validateBAPBulkMutation = trpc.invoices.validateBAPBulk.useMutation({
+ onSuccess: (data) => {
+ if (data.processed === 0) {
+ toast.info("Aucune facture éligible à valider en BAP.");
+ } else {
+ toast.success(`${data.processed} facture(s) validée(s) BAP avec succès !`, { duration: 4000 });
+ const pdfUrls = (data.results as any[]).filter(r => r.pdfUrl).map(r => r.pdfUrl as string);
+ if (pdfUrls.length > 0) {
+ pdfUrls.forEach(url => window.open(url, '_blank'));
+ }
+ }
+ utils.invoices.list.invalidate();
+ },
+ onError: (error) => {
+ toast.error(error.message || "Erreur lors de la validation BAP en masse");
+ },
+ });
+
const validateBAPMutation = trpc.invoices.validateBAP.useMutation({
onSuccess: (data) => {
if (data.exportMode === 'browser' && data.pdfUrl) {
@@ -403,6 +421,18 @@ export default function InvoicesBAP() {
Supprimer ({selectedIds.length})
+