diff --git a/client/src/pages/InvoicesBAP.tsx b/client/src/pages/InvoicesBAP.tsx index e8fc37d..d5f719c 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, ShieldCheck } from "lucide-react"; +import { Search, FileText, Download, FileSpreadsheet, Trash2, Edit, Trash, CheckCircle, CheckCircle2, ShieldCheck, RefreshCw } from "lucide-react"; // Helper : télécharge un PDF annoté BAP depuis son URL de stockage // Nommage : AAAA-MM-JJ - Fournisseur - N°Facture.pdf @@ -158,6 +158,21 @@ export default function InvoicesBAP() { }, }); + const reprocessMutation = trpc.invoices.reprocessSelected.useMutation({ + onSuccess: (data) => { + if (data.errors > 0) { + toast.warning(`${data.processed} facture(s) retraitée(s), ${data.errors} erreur(s).`, { duration: 5000 }); + } else { + toast.success(`${data.processed} facture(s) retraitée(s) avec succès !`, { duration: 4000 }); + } + setSelectedIds([]); + utils.invoices.list.invalidate(); + }, + onError: (error) => { + toast.error(error.message || "Erreur lors du retraitement"); + }, + }); + const validateBAPBulkMutation = trpc.invoices.validateBAPBulk.useMutation({ onSuccess: (data) => { if (data.processed === 0) { @@ -464,6 +479,23 @@ export default function InvoicesBAP() { {validateBAPBulkMutation.isPending ? "Validation en cours..." : "Valider tout en BAP"} +