diff --git a/client/src/pages/Invoices.tsx b/client/src/pages/Invoices.tsx index 8d74218..0089aa4 100644 --- a/client/src/pages/Invoices.tsx +++ b/client/src/pages/Invoices.tsx @@ -54,6 +54,7 @@ export default function Invoices() { const [recipientFilter, setRecipientFilter] = useState("all"); const [subscriptionFilter, setSubscriptionFilter] = useState("all"); // all | yes | no const [entityFilter, setEntityFilter] = useState("all"); // all | santinova | itinova + const [ventilationFilter, setVentilationFilter] = useState("all"); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); const [invoiceToDelete, setInvoiceToDelete] = useState(null); const [addDialogOpen, setAddDialogOpen] = useState(false); @@ -199,6 +200,12 @@ export default function Invoices() { ) ).sort(); + const uniqueVentilations = Array.from( + new Set( + (invoices || []).map(inv => (inv as any).ventilationComptable).filter(Boolean) + ) + ).sort(); + const handleSort = (field: SortField) => { if (sortField === field) { setSortDir(d => d === "asc" ? "desc" : "asc"); @@ -250,6 +257,14 @@ export default function Invoices() { if (entityFilter === "santinova" && service !== "DSI SANTINOVA") return false; if (entityFilter === "itinova" && service === "DSI SANTINOVA") return false; } + // Filter by ventilation comptable + if (ventilationFilter !== "all") { + if (ventilationFilter === "__empty__") { + if ((inv as any).ventilationComptable) return false; + } else { + if ((inv as any).ventilationComptable !== ventilationFilter) return false; + } + } return true; }); @@ -405,135 +420,150 @@ export default function Invoices() { - - - {/* Search + Recipient Filter */} -
-
- - setSearchQuery(e.target.value)} - className="pl-10" - /> -
-
- - -
- {/* Filtre Abonnement */} -
- -
- {/* Filtre Entité */} -
- -
-
- - {/* Mode compact/détail + Tri */} -
-
- - -
-
- Trier par : - - -
-
+ {/* ===== CARTOUCHE FILTRES ===== */} +
- {/* Status Filters */} -
+ {/* Ligne 1 : Recherche + affichage compact/détail */} +
+
+ + setSearchQuery(e.target.value)} + className="pl-10 bg-white border-blue-200 focus:border-blue-400" + /> +
+
- -
+
+ + {/* Ligne 2 : Filtres destinataire, abonnement, entité, ventilation */} +
+ + + + + +
+ + {/* Ligne 3 : Boutons statut export + tri */} +
+ + + + +
+ Trier : + + +
+
+
+ {/* ===== FIN CARTOUCHE ===== */} + + + {/* Table */} {isLoading ? (