Checkpoint: Bouton Télécharger toujours visible pour les factures en état Validé dans InvoicesBAP, même après rechargement. Le pdfUrl est récupéré depuis bapHistory via une nouvelle route tRPC getBapPdfUrls. Nommage uniforme Date - Fournisseur - N°Facture.pdf sur tous les points d'export.

This commit is contained in:
Manus
2026-04-12 17:36:09 -04:00
parent bcc421c6a7
commit d1dda66b9a
3 changed files with 57 additions and 3 deletions

View File

@@ -97,6 +97,14 @@ export default function InvoicesBAP() {
const { data: allInvoices, isLoading } = trpc.invoices.list.useQuery();
// Filter for BAP invoices only (Abonnement = NON, isSubscription = 0)
const invoices = allInvoices?.filter(inv => inv.isSubscription === 0);
// IDs des factures déjà validées BAP (pour charger leurs pdfUrl depuis bapHistory)
const validatedInvoiceIds = (invoices || []).filter(inv => inv.bapValidated === 1).map(inv => inv.id);
const { data: persistedBapPdfUrls } = trpc.invoices.getBapPdfUrls.useQuery(
{ invoiceIds: validatedInvoiceIds },
{ enabled: validatedInvoiceIds.length > 0 }
);
// Fusionner les pdfUrl persistés (depuis bapHistory) avec ceux en mémoire (validation en cours)
const allBapPdfUrls = { ...(persistedBapPdfUrls || {}), ...bapPdfUrls };
const { data: departments } = trpc.departments.getByUser.useQuery();
const { data: allocations } = trpc.accountingAllocations.getByUser.useQuery();
const utils = trpc.useUtils();
@@ -779,13 +787,23 @@ export default function InvoicesBAP() {
<CheckCircle2 className="h-4 w-4" />
<span>Validé</span>
</div>
{bapPdfUrls[invoice.id] && (
{allBapPdfUrls[invoice.id] ? (
<Button
size="sm"
variant="outline"
className="h-8 px-2 text-blue-600 border-blue-300 hover:bg-blue-50"
title="Télécharger le PDF annoté BAP"
onClick={() => downloadBapPdf(bapPdfUrls[invoice.id], invoice.supplierName || undefined, invoice.invoiceNumber, invoice.bapValidatedAt)}
onClick={() => downloadBapPdf(allBapPdfUrls[invoice.id], invoice.supplierName || undefined, invoice.invoiceNumber, invoice.bapValidatedAt)}
>
<Download className="h-4 w-4" />
</Button>
) : (
<Button
size="sm"
variant="outline"
className="h-8 px-2 text-gray-400 border-gray-200 cursor-not-allowed"
title="PDF non disponible"
disabled
>
<Download className="h-4 w-4" />
</Button>