From 8f764ed994e1703a24929990d6b08c7d06fc8455 Mon Sep 17 00:00:00 2001 From: Manus Date: Fri, 9 Jan 2026 10:23:16 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Ajout=20du=20bouton=20Supprimer?= =?UTF-8?q?=20pour=20faciliter=20la=20r=C3=A9importation=20des=20factures.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modification apportée : - Ajout d'un bouton "Supprimer" dans la page Factures permettant de supprimer les factures sélectionnées - Confirmation avant suppression pour éviter les suppressions accidentelles - Message de succès après suppression avec compteur - Création du dossier storage pour le stockage local des fichiers PDF Prochaine étape recommandée : 1. Sélectionner toutes les factures actuelles (qui n'ont pas de fichiers PDF stockés) 2. Cliquer sur "Supprimer" pour les supprimer 3. Ré-importer le fichier "FACTURES FOURNISSEURS.pdf" via la page "Importer" 4. Cette fois, les fichiers PDF seront correctement stockés dans le dossier storage et l'export PDF fonctionnera --- .manus/db/db-query-1767954409077.json | 45 +++++++++++++++++++++++++++ client/src/pages/Invoices.tsx | 23 +++++++++++++- todo.md | 7 +++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 .manus/db/db-query-1767954409077.json diff --git a/.manus/db/db-query-1767954409077.json b/.manus/db/db-query-1767954409077.json new file mode 100644 index 0000000..28f1ea8 --- /dev/null +++ b/.manus/db/db-query-1767954409077.json @@ -0,0 +1,45 @@ +{ + "query": "SELECT id, supplierName, invoiceNumber, fileUrl, qualityScore FROM invoices LIMIT 5;", + "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.bd4328423008 --database fo4DRyBgjsuiigFAgNLuWm --execute SELECT id, supplierName, invoiceNumber, fileUrl, qualityScore FROM invoices LIMIT 5;", + "rows": [ + { + "id": "1", + "supplierName": "Baxter S.A.S.", + "invoiceNumber": "25076822", + "fileUrl": "/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf", + "qualityScore": "100" + }, + { + "id": "2", + "supplierName": "Boehringer Ingelheim France", + "invoiceNumber": "5061124527", + "fileUrl": "/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf", + "qualityScore": "100" + }, + { + "id": "3", + "supplierName": "Baxter S.A.S.", + "invoiceNumber": "25075432", + "fileUrl": "/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf", + "qualityScore": "100" + }, + { + "id": "4", + "supplierName": "LABORATOIRES BOUCHARA - RECORDATI", + "invoiceNumber": "1294153", + "fileUrl": "/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf", + "qualityScore": "95" + }, + { + "id": "5", + "supplierName": "Bristol Myers Squibb", + "invoiceNumber": "2900929593", + "fileUrl": "/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf", + "qualityScore": "100" + } + ], + "messages": [], + "stdout": "id\tsupplierName\tinvoiceNumber\tfileUrl\tqualityScore\n1\tBaxter S.A.S.\t25076822\t/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf\t100\n2\tBoehringer Ingelheim France\t5061124527\t/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf\t100\n3\tBaxter S.A.S.\t25075432\t/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf\t100\n4\tLABORATOIRES BOUCHARA - RECORDATI\t1294153\t/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf\t95\n5\tBristol Myers Squibb\t2900929593\t/storage/2026-01/1-FSrFmQSC-FACTURES FOURNISSEURS.pdf\t100\n", + "stderr": "", + "execution_time_ms": 109 +} \ No newline at end of file diff --git a/client/src/pages/Invoices.tsx b/client/src/pages/Invoices.tsx index df599f1..81f965f 100644 --- a/client/src/pages/Invoices.tsx +++ b/client/src/pages/Invoices.tsx @@ -14,7 +14,7 @@ import { TableRow, } from "@/components/ui/table"; import { trpc } from "@/lib/trpc"; -import { Search, FileText, Download, FileSpreadsheet } from "lucide-react"; +import { Search, FileText, Download, FileSpreadsheet, Trash2 } from "lucide-react"; import * as XLSX from 'xlsx'; import { toast } from "sonner"; import { useLocation } from "wouter"; @@ -204,6 +204,27 @@ export default function Invoices() { PDF ({selectedIds.length}) +