feat(sales): enable excel export button in DeliveryNotes UI #48

Closed
opened 2026-03-27 22:51:50 +00:00 by leandro · 0 comments
Owner

Objetivo

Habilitar la exportación a Excel desde la pantalla de consulta de remitos (DeliveryNotes.razor), reutilizando el endpoint backend ya implementado y manteniendo consistencia con los módulos de Quotes y Expeditions.


Contexto funcional

El módulo Sales → Delivery Note ya tiene implementado el flujo principal de emisión de remitos, persistencia, snapshot clínico (ExtrainfoJson), generación de PDF y exportación Excel en backend mediante el endpoint POST /api/DeliveryNote/exportfiltered.

Actualmente la UI Blazor ya muestra el botón Excel en DeliveryNotes.razor, pero el comportamiento está pendiente: solo se informa mediante un toast que la exportación se implementará en una próxima story.

Los módulos de Quotes y Expeditions ya resuelven esta funcionalidad end-to-end desde la UI, utilizando el patrón:

  • filtros actuales de pantalla
  • exportación vía service
  • descarga por JSInterop con saveAsFile
  • toast de éxito/error

Esta story completa esa brecha exclusivamente en la capa UI para Delivery Note.


Alcance

Esta story incluye únicamente cambios en UI Blazor para:

  • agregar ExportFilteredAsync(DeliveryNoteSearchParams) en la interface IDeliveryNoteService
  • implementar ExportFilteredAsync(DeliveryNoteSearchParams) en DeliveryNoteService
  • reemplazar la lógica placeholder del botón Excel en DeliveryNotes.razor
  • reutilizar DeliveryNoteSearchParams existente
  • exportar respetando filtros actuales de pantalla
  • forzar Page = 1 y PageSize = int.MaxValue antes de exportar
  • descargar el archivo usando el patrón existente base64 + saveAsFile
  • manejar éxito y error mediante toast en español

Fuera de alcance

Esta story NO incluye:

  • cambios en backend
  • cambios en controller API
  • cambios en Core
  • cambios en Domain
  • creación de nuevos DTOs
  • cambios en contratos de exportación
  • cambios en saveAsFile
  • incorporación de spinner o loading específico para exportación
  • refactor de comportamiento compartido entre Quotes / Expeditions / Delivery Notes

Criterios de aceptación

  • El botón Excel de DeliveryNotes.razor dispara la exportación real
  • La exportación reutiliza los filtros actualmente cargados en pantalla
  • Antes de exportar se fuerza Page = 1
  • Antes de exportar se fuerza PageSize = int.MaxValue
  • La UI llama a POST /api/deliverynote/exportfiltered sin cambiar el contrato existente
  • El archivo se descarga correctamente en el navegador mediante saveAsFile
  • El archivo descargado tiene nombre con timestamp y sufijo _deliverynotes.xlsx
  • En caso de éxito se muestra toast "Exportación completada."
  • En caso de error se muestra toast de error en español
  • No se modifican modelos EF generados por scaffold
  • No se introducen cambios fuera de la capa UI

Decisiones de diseño

  • Se reutiliza DeliveryNoteSearchParams para mantener simetría con el resto del sistema.
  • Se adopta el mismo patrón ya usado en Quotes y Expeditions:
    • página UI fuerza paginación amplia
    • service serializa filtros
    • backend responde archivo binario
    • UI descarga vía base64 + saveAsFile
  • No se crean DTOs nuevos porque el contrato backend ya existe y está operativo.
  • No se toca backend para mantener la story atómica y acotada solo a UI.
  • Se mantiene el comportamiento visual actual basado en toast, sin spinner adicional, por consistencia con Quotes y Expeditions.

Entregable esperado

Archivos modificados:

  • phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNotes.razor
  • phronCare.UIBlazor/Services/Sales/DeliveryNotes/IDeliveryNoteService.cs
  • phronCare.UIBlazor/Services/Sales/DeliveryNotes/DeliveryNoteService.cs

## Objetivo Habilitar la exportación a Excel desde la pantalla de consulta de remitos (`DeliveryNotes.razor`), reutilizando el endpoint backend ya implementado y manteniendo consistencia con los módulos de Quotes y Expeditions. --- ## Contexto funcional El módulo Sales → Delivery Note ya tiene implementado el flujo principal de emisión de remitos, persistencia, snapshot clínico (`ExtrainfoJson`), generación de PDF y exportación Excel en backend mediante el endpoint `POST /api/DeliveryNote/exportfiltered`. Actualmente la UI Blazor ya muestra el botón Excel en `DeliveryNotes.razor`, pero el comportamiento está pendiente: solo se informa mediante un toast que la exportación se implementará en una próxima story. Los módulos de Quotes y Expeditions ya resuelven esta funcionalidad end-to-end desde la UI, utilizando el patrón: - filtros actuales de pantalla - exportación vía service - descarga por JSInterop con `saveAsFile` - toast de éxito/error Esta story completa esa brecha exclusivamente en la capa UI para Delivery Note. --- ## Alcance Esta story incluye únicamente cambios en UI Blazor para: - agregar `ExportFilteredAsync(DeliveryNoteSearchParams)` en la interface `IDeliveryNoteService` - implementar `ExportFilteredAsync(DeliveryNoteSearchParams)` en `DeliveryNoteService` - reemplazar la lógica placeholder del botón Excel en `DeliveryNotes.razor` - reutilizar `DeliveryNoteSearchParams` existente - exportar respetando filtros actuales de pantalla - forzar `Page = 1` y `PageSize = int.MaxValue` antes de exportar - descargar el archivo usando el patrón existente `base64 + saveAsFile` - manejar éxito y error mediante toast en español --- ## Fuera de alcance Esta story NO incluye: - cambios en backend - cambios en controller API - cambios en Core - cambios en Domain - creación de nuevos DTOs - cambios en contratos de exportación - cambios en `saveAsFile` - incorporación de spinner o loading específico para exportación - refactor de comportamiento compartido entre Quotes / Expeditions / Delivery Notes --- ## Criterios de aceptación - [ ] El botón Excel de `DeliveryNotes.razor` dispara la exportación real - [ ] La exportación reutiliza los filtros actualmente cargados en pantalla - [ ] Antes de exportar se fuerza `Page = 1` - [ ] Antes de exportar se fuerza `PageSize = int.MaxValue` - [ ] La UI llama a `POST /api/deliverynote/exportfiltered` sin cambiar el contrato existente - [ ] El archivo se descarga correctamente en el navegador mediante `saveAsFile` - [ ] El archivo descargado tiene nombre con timestamp y sufijo `_deliverynotes.xlsx` - [ ] En caso de éxito se muestra toast `"Exportación completada."` - [ ] En caso de error se muestra toast de error en español - [ ] No se modifican modelos EF generados por scaffold - [ ] No se introducen cambios fuera de la capa UI --- ## Decisiones de diseño - Se reutiliza `DeliveryNoteSearchParams` para mantener simetría con el resto del sistema. - Se adopta el mismo patrón ya usado en Quotes y Expeditions: - página UI fuerza paginación amplia - service serializa filtros - backend responde archivo binario - UI descarga vía base64 + `saveAsFile` - No se crean DTOs nuevos porque el contrato backend ya existe y está operativo. - No se toca backend para mantener la story atómica y acotada solo a UI. - Se mantiene el comportamiento visual actual basado en toast, sin spinner adicional, por consistencia con Quotes y Expeditions. --- ## Entregable esperado Archivos modificados: - `phronCare.UIBlazor/Pages/Sales/DeliveryNotes/DeliveryNotes.razor` - `phronCare.UIBlazor/Services/Sales/DeliveryNotes/IDeliveryNoteService.cs` - `phronCare.UIBlazor/Services/Sales/DeliveryNotes/DeliveryNoteService.cs` ---
leandro added the
STORY
label 2026-04-29 01:40:18 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-04-29 01:40:22 +00:00
leandro self-assigned this 2026-04-29 01:40:28 +00:00
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-04-29 01:41:17 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leandro/phronCare#48
No description provided.