Checkpoint: Correction de la sélection et suppression des factures.

Modifications apportées :
- Toutes les factures peuvent maintenant être sélectionnées et supprimées, quel que soit leur score de qualité
- Le bouton "Export PDF" reste désactivé si des factures avec score < 100% sont sélectionnées (avec tooltip explicatif)
- Suppression des restrictions disabled sur les checkboxes
- Suppression de l'effet opacity sur les lignes

Vous pouvez maintenant :
1. Sélectionner toutes vos factures actuelles (même celles sans score 100%)
2. Les supprimer via le bouton "Supprimer"
3. Ré-importer votre fichier PDF pour que les fichiers soient correctement stockés
This commit is contained in:
Manus
2026-01-09 10:30:50 -05:00
parent 8f764ed994
commit 568403245a
2 changed files with 17 additions and 9 deletions

View File

@@ -115,11 +115,9 @@ export default function Invoices() {
const handleSelectAll = (checked: boolean) => {
if (checked) {
// Select only invoices with score 100
const eligibleIds = (filteredInvoices || [])
.filter(inv => (inv.qualityScore || 0) === 100)
.map(inv => inv.id);
setSelectedIds(eligibleIds);
// Select all invoices (no restriction)
const allIds = (filteredInvoices || []).map(inv => inv.id);
setSelectedIds(allIds);
} else {
setSelectedIds([]);
}
@@ -175,6 +173,11 @@ export default function Invoices() {
return (invoice.qualityScore || 0) === 100;
};
const hasOnlyEligibleSelected = selectedIds.length > 0 && selectedIds.every(id => {
const invoice = invoices?.find(inv => inv.id === id);
return invoice && isEligibleForExport(invoice);
});
const allEligibleSelected = (filteredInvoices?.length || 0) > 0 &&
(filteredInvoices || []).filter(inv => isEligibleForExport(inv)).every(inv => selectedIds.includes(inv.id));
@@ -198,8 +201,9 @@ export default function Invoices() {
</Button>
<Button
onClick={handleExport}
disabled={selectedIds.length === 0 || exportMutation.isPending}
disabled={selectedIds.length === 0 || !hasOnlyEligibleSelected || exportMutation.isPending}
className="bg-blue-600 hover:bg-blue-700"
title={!hasOnlyEligibleSelected && selectedIds.length > 0 ? "Seules les factures avec un score de 100% peuvent être exportées" : ""}
>
<Download className="w-4 h-4 mr-2" />
PDF ({selectedIds.length})
@@ -306,14 +310,12 @@ export default function Invoices() {
</TableHeader>
<TableBody>
{filteredInvoices.map((invoice) => {
const eligible = isEligibleForExport(invoice);
return (
<TableRow key={invoice.id} className={!eligible ? "opacity-50" : ""}>
<TableRow key={invoice.id}>
<TableCell>
<Checkbox
checked={selectedIds.includes(invoice.id)}
onCheckedChange={(checked) => handleSelectOne(invoice.id, checked as boolean)}
disabled={!eligible}
/>
</TableCell>
<TableCell className="font-medium">

View File

@@ -109,3 +109,9 @@
- [x] Identifier que les fichiers n'ont pas été stockés lors de l'import initial
- [x] Ajouter bouton "Supprimer" pour supprimer les factures sélectionnées
- [x] Créer le dossier storage pour le stockage local
## Correction bouton Supprimer
- [x] Permettre la sélection de toutes les factures pour suppression (pas seulement celles à 100%)
- [x] Séparer la logique de sélection pour export et suppression
- [x] Supprimer les restrictions disabled sur les checkboxes
- [x] Ajouter validation pour export PDF (seulement score 100%)