Permitir descargar el PDF del presupuesto desde el detalle del lead
La sección Presupuesto (PDF) usaba lead.pdfUrl, que nunca se rellena en el MVP, así que siempre mostraba "Aún no generado". Ahora apunta a la ruta on-demand /panel/[id]/presupuesto cuando existe desglose, con un parámetro ?download=1 que fuerza Content-Disposition: attachment. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -163,16 +163,27 @@ export default async function LeadDetailPage({ params }: { params: Promise<{ id:
|
||||
|
||||
{/* 6. PDF */}
|
||||
<Section title="Presupuesto (PDF)">
|
||||
{lead.pdfUrl ? (
|
||||
<a
|
||||
href={lead.pdfUrl}
|
||||
download
|
||||
className="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-black text-white text-sm font-semibold w-fit hover:bg-gray-800"
|
||||
>
|
||||
Descargar PDF
|
||||
</a>
|
||||
{desglose ? (
|
||||
<div className="flex flex-wrap items-center gap-3">
|
||||
<a
|
||||
href={`/panel/${lead.id}/presupuesto?download=1`}
|
||||
className="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-black text-white text-sm font-semibold w-fit hover:bg-gray-800"
|
||||
>
|
||||
Descargar PDF
|
||||
</a>
|
||||
<a
|
||||
href={`/panel/${lead.id}/presupuesto`}
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
className="text-sm font-medium text-gray-500 hover:text-black"
|
||||
>
|
||||
Ver en el navegador
|
||||
</a>
|
||||
</div>
|
||||
) : (
|
||||
<p className="text-sm text-gray-400">Aún no generado.</p>
|
||||
<p className="text-sm text-gray-400">
|
||||
Recalcula el presupuesto desde el catálogo para generarlo.
|
||||
</p>
|
||||
)}
|
||||
</Section>
|
||||
</div>
|
||||
|
||||
@@ -10,13 +10,15 @@ export const runtime = 'nodejs';
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
export async function GET(
|
||||
_req: Request,
|
||||
req: Request,
|
||||
{ params }: { params: Promise<{ id: string }> }
|
||||
) {
|
||||
const { id } = await params;
|
||||
const data = await getLead(id);
|
||||
if (!data) notFound();
|
||||
|
||||
const descargar = new URL(req.url).searchParams.get('download') === '1';
|
||||
|
||||
const { lead } = data;
|
||||
const empresa = await getTenantPerfil();
|
||||
|
||||
@@ -39,7 +41,7 @@ export async function GET(
|
||||
return new Response(new Uint8Array(buffer), {
|
||||
headers: {
|
||||
'Content-Type': 'application/pdf',
|
||||
'Content-Disposition': `inline; filename="presupuesto-${slug || lead.id}.pdf"`,
|
||||
'Content-Disposition': `${descargar ? 'attachment' : 'inline'}; filename="presupuesto-${slug || lead.id}.pdf"`,
|
||||
'Cache-Control': 'no-store',
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user