feat(sales): incorporar pantalla principal de consulta de Delivery Note alineada al patrón Quotes #29

Closed
opened 2026-03-21 04:50:21 +00:00 by leandro · 0 comments
Owner

Objetivo

Implementar la pantalla principal de consulta de Delivery Note en Blazor, consumiendo la búsqueda paginada existente y replicando el patrón visual y funcional del módulo Quotes, garantizando consistencia entre los documentos principales del sistema.


Contexto funcional

El módulo Delivery Note ya cuenta con:

  • Repository: IPhSDeliveryNoteRepository / PhSDeliveryNoteRepository
  • Core: IDeliveryNoteDom / DeliveryNoteService
  • API: DeliveryNoteController
  • Endpoint: GET /api/deliverynote/search

La búsqueda paginada fue implementada y validada en la Story #27.

Además, el proyecto ya define el modelo:

Domain.Generics.DeliveryNoteSearchParams

Sin embargo:

  • El backend actual no utiliza este modelo como parámetro directo (usa query params sueltos)
  • No existe aún la pantalla principal en UI

Se decide:

  • Utilizar DeliveryNoteSearchParams en UI como modelo de filtros
  • Mantener el backend sin cambios en esta story
  • Alinear completamente la UI con el patrón de Quotes

Alcance

1. Página principal

Crear página:

/deliverynotes

Ubicación:

UI / Pages / Sales / DeliveryNotes / DeliveryNotes.razor


2. Estructura visual (patrón Quotes obligatorio)

Card 1 — Filtros

  • Título: “Consulta de Remitos”

  • Filtros:

    • DeliveryNoteNumber
    • CustomerText
    • QuoteNumber
    • Status
    • IssueDateFrom
    • IssueDateTo
  • Botonera (misma disposición que Quotes):

    • Buscar
    • Limpiar
    • Nuevo (placeholder visual)
    • Excel (placeholder visual)

Card 2 — Resultados

  • Tabla manual (NO PhTable)

  • Columnas:

    • Remito
    • Fecha
    • Presupuesto
    • Cliente
    • Estado
    • Observaciones
    • Reimpresiones
    • Acciones
  • Estados:

    • cargando
    • sin resultados
    • con resultados

3. Paginación

Implementar igual a Quotes:

  • Primera
  • Anterior
  • Página actual / total
  • Siguiente
  • Última
  • Ir a página

PageSize fijo.


4. Servicio UI

Modificar:

UI / Services / Sales / DeliveryNotes

Agregar método:

SearchAsync(DeliveryNoteSearchParams params)

Responsabilidad:

  • mapear DeliveryNoteSearchParams → querystring
  • consumir GET /api/deliverynote/search
  • devolver lista paginada de DeliveryNoteSummaryDto

5. Uso de SearchParams

  • Utilizar directamente:
    Domain.Generics.DeliveryNoteSearchParams

  • NO crear modelos en UI

  • NO duplicar estructuras


6. Acciones por fila

  • Ícono “Ver”
  • Sin navegación funcional aún (preparado para siguiente story)

7. Navegación

Agregar opción en menú:

  • “Remitos”
  • ruta: /deliverynotes

Fuera de alcance

  • Drawer lateral de detalle
  • GetByIdAsync en UI
  • Impresión o reimpresión
  • Exportación a Excel (solo placeholder)
  • Creación de Delivery Note
  • Navegación funcional del botón “Nuevo”
  • Refactor de backend para usar DeliveryNoteSearchParams
  • Filtros avanzados (typeahead)
  • Cambios en DTOs o repositorios

Criterios de aceptación

  • Existe pantalla accesible en /deliverynotes
  • La UI replica el patrón visual de Quotes:
    • Card de filtros arriba
    • Card de resultados abajo
  • Los filtros funcionan correctamente contra el endpoint existente
  • La tabla muestra datos correctos del DeliveryNoteSummaryDto
  • La paginación permite navegar sin perder filtros
  • La acción Limpiar reinicia la búsqueda
  • Se muestran correctamente estados de carga y vacío
  • No se crean modelos duplicados en UI
  • No se modifica backend
  • La solución compila y es testeable en DEV

Decisiones de diseño

  • Quotes se establece como patrón único de pantallas documentales
  • Se prohíbe el uso de PhTable en documentos
  • Se estandariza uso de 2 cards:
    1. Filtros
    2. Resultados
  • DeliveryNoteSearchParams se utiliza como modelo único de filtros
  • El backend no se modifica en esta story para mantener atomicidad
  • Botones “Nuevo” y “Excel” se incluyen como placeholders visuales
  • PageSize fijo para simplificar la primera versión
  • Se prioriza consistencia visual sobre completitud funcional

Entregable esperado

  • Página DeliveryNotes.razor implementada
  • Servicio UI con método SearchAsync
  • Integración completa con endpoint search
  • Pantalla funcional con filtros, tabla y paginación
  • UI consistente con Quotes
  • Navegación disponible desde menú

Próximas stories sugeridas

  1. feat(sales): incorporar detalle (drawer) de Delivery Note
  2. feat(sales): incorporar impresión / reimpresión de Delivery Note
  3. feat(sales): incorporar exportación a Excel de Delivery Note
  4. refactor(sales): unificar uso de DeliveryNoteSearchParams en API/Core/Repository
## Objetivo Implementar la pantalla principal de consulta de Delivery Note en Blazor, consumiendo la búsqueda paginada existente y replicando el patrón visual y funcional del módulo Quotes, garantizando consistencia entre los documentos principales del sistema. --- ## Contexto funcional El módulo Delivery Note ya cuenta con: - Repository: IPhSDeliveryNoteRepository / PhSDeliveryNoteRepository - Core: IDeliveryNoteDom / DeliveryNoteService - API: DeliveryNoteController - Endpoint: GET /api/deliverynote/search La búsqueda paginada fue implementada y validada en la Story #27. Además, el proyecto ya define el modelo: Domain.Generics.DeliveryNoteSearchParams Sin embargo: - El backend actual no utiliza este modelo como parámetro directo (usa query params sueltos) - No existe aún la pantalla principal en UI Se decide: - Utilizar DeliveryNoteSearchParams en UI como modelo de filtros - Mantener el backend sin cambios en esta story - Alinear completamente la UI con el patrón de Quotes --- ## Alcance ### 1. Página principal Crear página: /deliverynotes Ubicación: UI / Pages / Sales / DeliveryNotes / DeliveryNotes.razor --- ### 2. Estructura visual (patrón Quotes obligatorio) #### Card 1 — Filtros - Título: “Consulta de Remitos” - Filtros: - DeliveryNoteNumber - CustomerText - QuoteNumber - Status - IssueDateFrom - IssueDateTo - Botonera (misma disposición que Quotes): - Buscar - Limpiar - Nuevo (placeholder visual) - Excel (placeholder visual) --- #### Card 2 — Resultados - Tabla manual (NO PhTable) - Columnas: - Remito - Fecha - Presupuesto - Cliente - Estado - Observaciones - Reimpresiones - Acciones - Estados: - cargando - sin resultados - con resultados --- ### 3. Paginación Implementar igual a Quotes: - Primera - Anterior - Página actual / total - Siguiente - Última - Ir a página PageSize fijo. --- ### 4. Servicio UI Modificar: UI / Services / Sales / DeliveryNotes Agregar método: SearchAsync(DeliveryNoteSearchParams params) Responsabilidad: - mapear DeliveryNoteSearchParams → querystring - consumir GET /api/deliverynote/search - devolver lista paginada de DeliveryNoteSummaryDto --- ### 5. Uso de SearchParams - Utilizar directamente: Domain.Generics.DeliveryNoteSearchParams - NO crear modelos en UI - NO duplicar estructuras --- ### 6. Acciones por fila - Ícono “Ver” - Sin navegación funcional aún (preparado para siguiente story) --- ### 7. Navegación Agregar opción en menú: - “Remitos” - ruta: /deliverynotes --- ## Fuera de alcance - Drawer lateral de detalle - GetByIdAsync en UI - Impresión o reimpresión - Exportación a Excel (solo placeholder) - Creación de Delivery Note - Navegación funcional del botón “Nuevo” - Refactor de backend para usar DeliveryNoteSearchParams - Filtros avanzados (typeahead) - Cambios en DTOs o repositorios --- ## Criterios de aceptación - Existe pantalla accesible en /deliverynotes - La UI replica el patrón visual de Quotes: - Card de filtros arriba - Card de resultados abajo - Los filtros funcionan correctamente contra el endpoint existente - La tabla muestra datos correctos del DeliveryNoteSummaryDto - La paginación permite navegar sin perder filtros - La acción Limpiar reinicia la búsqueda - Se muestran correctamente estados de carga y vacío - No se crean modelos duplicados en UI - No se modifica backend - La solución compila y es testeable en DEV --- ## Decisiones de diseño - Quotes se establece como patrón único de pantallas documentales - Se prohíbe el uso de PhTable en documentos - Se estandariza uso de 2 cards: 1. Filtros 2. Resultados - DeliveryNoteSearchParams se utiliza como modelo único de filtros - El backend no se modifica en esta story para mantener atomicidad - Botones “Nuevo” y “Excel” se incluyen como placeholders visuales - PageSize fijo para simplificar la primera versión - Se prioriza consistencia visual sobre completitud funcional --- ## Entregable esperado - Página DeliveryNotes.razor implementada - Servicio UI con método SearchAsync - Integración completa con endpoint search - Pantalla funcional con filtros, tabla y paginación - UI consistente con Quotes - Navegación disponible desde menú --- ## Próximas stories sugeridas 1. feat(sales): incorporar detalle (drawer) de Delivery Note 2. feat(sales): incorporar impresión / reimpresión de Delivery Note 3. feat(sales): incorporar exportación a Excel de Delivery Note 4. refactor(sales): unificar uso de DeliveryNoteSearchParams en API/Core/Repository
leandro added the
STORY
label 2026-03-21 04:50:30 +00:00
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-03-21 04:50:32 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-03-21 04:50:35 +00:00
leandro self-assigned this 2026-03-21 04:51:20 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:49 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:51 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:52 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-24 20:24:05 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-24 20:24:07 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-25 13:27:46 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leandro/phronCare#29
No description provided.