feat(sales): implementar PDF de Delivery Note #43
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objetivo
Implementar la generación de PDF para Delivery Note en el módulo Sales, reutilizando la infraestructura existente de documentos (Quotes / Expeditions) y manteniendo consistencia con el patrón actual del sistema.
Contexto funcional
El módulo Sales → Delivery Note ya cuenta con emisión completa (
CreateAndIssue), persistencia en base de datos, UI funcional de creación y snapshot clínico (ExtraInfoJson) implementado en la story #41.Actualmente falta la impresión en PDF del remito, que debe seguir la misma estrategia técnica ya consolidada en el sistema para:
El proyecto ya dispone de infraestructura reusable para generación documental mediante:
DocumentsDocumentTemplateService.cshtmlPuppeteerSharpLa necesidad de esta story es dejar operativo el documento PDF de Delivery Note sin introducir un modelo alternativo ni romper contratos existentes.
Alcance
Esta story incluye:
DeliveryNoteDtopara que pueda utilizarse como DTO de lectura e impresiónGetDtoByIdAsyncpara incluir los datos necesarios para documentoDeliveryNoteenDocumentTypeDeliveryNoteenDocumentTemplateServiceGET /api/deliverynote/{id}/pdfExtraInfoJsonFuera de alcance
Esta story NO incluye:
PrintCountpor cada impresión, salvo que ya exista patrón consolidado y se incorpore sin ampliar alcanceCriterios de aceptación
✔ Se puede solicitar el PDF de un Delivery Note existente mediante endpoint API
✔ El PDF se genera usando la infraestructura actual (
DocumentTemplateService+ Razor + PuppeteerSharp)✔
DeliveryNoteDtocontiene los datos mínimos necesarios para impresión sin crear un DTO alternativo✔ El template muestra correctamente:
ExtraInfoJson✔ El logo se inyecta mediante
LogoBase64siguiendo el patrón de Quotes y Expeditions✔ El parseo de
ExtraInfoJsonse resuelve en el template Razor de forma segura✔ La UI permite descargar el PDF desde la consulta de remitos
✔ No se modifican modelos EF generados por scaffold
✔ No se rompe ningún contrato existente de la API
✔ El código compila y la generación del PDF funciona manualmente en ambiente de desarrollo
Decisiones de diseño
DeliveryNoteDtocomo DTO de lectura e impresión, evitando crear un modelo específico de print.DocumentGenerationRequestse mantiene sin cambios.DocumentType.DeliveryNotepor consistencia técnica con el módulo actual, sin eliminarRemitosi ya existe.Documents/Templates/DeliveryNotes/Template_v1.cshtml.DocumentTemplateServicemedianteLogoBase64, igual que en Quotes y Expeditions.ExtraInfoJsonno se parsea en Core ni en API; se resuelve en el template Razor, replicando el patrón de Expeditions.Entregable esperado
Archivos a crear o modificar:
Domain/Dtos/Sales/DeliveryNoteDto.csModels/Repositories/PhSDeliveryNoteRepository.csphronCare.API/Controllers/Sales/DeliveryNoteController.csDocuments/Models/DocumentType.csDocuments/Services/DocumentTemplateService.csDocuments/Templates/DeliveryNotes/Template_v1.cshtmlphronCare.UIBlazor/Services/Sales/DeliveryNotes/IDeliveryNoteService.csphronCare.UIBlazor/Services/Sales/DeliveryNotes/DeliveryNoteService.csphronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNotes.razorOpcional según decisión de UX:
phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNoteDetailDrawer.razorPróxima Story sugerida (opcional)
feat(sales): registrar reimpresiones y auditoría básica de Delivery Note PDF
feat(deliverynotes): PDF de Delivery Note (impresión)to feat(sales): implementar PDF de Delivery Note