Cómo descargar una factura del TPV
Descarga desde el navegador el PDF autenticado de una factura ya emitida en un ticket TPV de Marea Gran Via, usando el documento existente en `invoice.file_id`.
En este artículo
Este flujo sirve cuando la factura ya está emitida y el equipo necesita recuperar el PDF desde el detalle del ticket. La descarga no genera una factura nueva: reutiliza el archivo autenticado que ya quedó asociado a la invoice.
En el demo de Marea Gran Via, la acción se realiza desde la app web porque la descarga usa APIs del navegador para preparar el archivo local.
Antes de empezar
- Tener una sesión autenticada en la app.
- Poder abrir el detalle de tickets TPV de Marea Gran Via.
- Trabajar con un ticket TPV que ya tenga una factura emitida asociada.
- La factura debe tener `invoice.file_id` informado y no vacío.
- Realizar la descarga desde la versión web de la app.
- El servicio de ficheros y el filestore deben estar configurados, y el archivo debe existir.
Instrucciones
- 1.
Abrir el ticket facturado
Desde el TPV de Marea Gran Via, abre el detalle del ticket que ya tiene una factura emitida. En el runtime documental, valida antes si el caso descargable está en `TPV_PAID_TICKET_ID` o en `TPV_TICKET_ID`.
- 2.
Comprobar que el PDF existe
Revisa que el ticket muestra una factura asociada y que la acción de documento está disponible. Si `invoice.file_id` está vacío, Antylogic no llama al endpoint de ficheros y avisa de que la factura todavía no tiene PDF disponible.
- 3.
Iniciar la descarga
Abre el menú del ticket y pulsa `Descargar factura`. La app toma el `fileId` de la factura, solicita `GET /api/app/files/{fileId}` con la sesión activa y prepara el blob PDF para descarga en el navegador.
- 4.
Confirmar el resultado operativo
Comprueba que el navegador inicia la descarga del PDF. Esta acción es de solo lectura: no reemite la factura, no cambia `invoice.status` y no registra un intento de entrega al cliente.
Validaciones y límites
- El detalle del ticket solo se carga cuando existen `ticketId`, `orgId`, `locationId` y acceso operativo al TPV.
- `GET /api/app/{orgId}/{locationId}/tickets/{ticketId}` valida que el ticket pertenece a la ubicación y aplica acceso al ticket.
- La acción comprueba `invoice.file_id?.trim()` antes de descargar; sin `fileId`, muestra `La factura todavia no tiene un PDF disponible.`
- `downloadAuthenticatedFile` rechaza un `fileId` vacío y requiere runtime web con `document`, `URL` y `URL.createObjectURL`.
- La descarga usa `GET /api/app/files/{fileId}` como blob autenticado y preserva tipo y nombre cuando la respuesta los aporta.
- Si el servicio de ficheros no está configurado, el archivo no existe o el filestore falla, la app muestra `No pudimos descargar la factura.`
- La ruta `GET /api/app/files/{fileId}` es genérica por `fileId`; el análisis no encontró una validación granular por factura, ticket o ubicación en esa descarga.
Resultado esperado
El operador obtiene el PDF autenticado de una factura TPV ya emitida sin modificar el ticket, la invoice ni el historial de entregas.