feat(sales): agregar búsqueda paginada de Delivery Note #27

Closed
opened 2026-03-20 21:57:31 +00:00 by leandro · 0 comments
Owner

Objetivo

Incorporar la búsqueda paginada de Delivery Notes en backend, dejando disponible el endpoint base que permitirá construir la pantalla principal de consulta del módulo.


Contexto funcional

El módulo Delivery Note ya cuenta con backend de lectura puntual:

  • repositorio IPhSDeliveryNoteRepository / PhSDeliveryNoteRepository
  • servicio core IDeliveryNoteDom / DeliveryNoteService
  • API DeliveryNoteController
  • DTO de lectura DeliveryNoteDto

Actualmente existen endpoints para obtener remitos:

  • por id
  • por número
  • por quoteId

Sin embargo, todavía no existe la búsqueda general paginada que sirva de base para la pantalla principal del documento, siguiendo el estándar ya utilizado en módulos como Quotes y Expeditions.

En PhronCare, los documentos principales deben comenzar por una pantalla de consulta con filtros múltiples, paginación, tabla resumen y acciones por fila. Para habilitar ese flujo en Delivery Note, primero debe resolverse la base backend de búsqueda.


Alcance

Esta story incluye:

  • crear un objeto de parámetros de búsqueda paginada para Delivery Note
  • crear un DTO resumen para resultados de búsqueda
  • agregar un método SearchAsync en el contrato del repositorio
  • implementar la búsqueda paginada en PhSDeliveryNoteRepository
  • agregar el método SearchAsync en el contrato core IDeliveryNoteDom
  • implementar la delegación correspondiente en DeliveryNoteService
  • exponer un endpoint GET /api/deliverynote/search en DeliveryNoteController
  • aplicar filtros por:
    • número de remito
    • cliente por id o texto
    • quote por id o número
    • rango de fechas
    • estado
    • paginación

Fuera de alcance

Esta story no incluye:

  • desarrollo de pantalla UI Blazor
  • tabla visual de consulta
  • drawer o vista de detalle
  • impresión o reimpresión
  • exportación a Excel
  • creación o edición de Delivery Notes
  • cambios en modelos EF generados por scaffold
  • cambios en contratos ya existentes de lectura puntual

Criterios de aceptación

  • ✔ Existe un DTO resumen específico para la búsqueda de Delivery Notes
  • ✔ Existe un objeto de parámetros de búsqueda paginada para Delivery Note
  • ✔ El repositorio permite buscar Delivery Notes con filtros y paginación
  • ✔ El servicio core expone la búsqueda paginada
  • ✔ La API expone el endpoint GET /api/deliverynote/search
  • ✔ La respuesta del endpoint devuelve PagedResult<DeliveryNoteSummaryDto>
  • ✔ La búsqueda ordena por fecha de emisión descendente y luego por id descendente
  • ✔ No se modifican modelos EF generados por scaffold
  • ✔ Se mantiene la arquitectura Data → Domain → Core → API
  • ✔ Los endpoints existentes (by id, by number, by quoteId) siguen funcionando sin cambios

Decisiones de diseño

  • Se crea un DTO resumen específico (DeliveryNoteSummaryDto) en lugar de reutilizar DeliveryNoteDto, para evitar sobrecargar la búsqueda principal con el detalle de ítems.
  • Se conserva DeliveryNoteDto para operaciones de lectura puntual y detalle.
  • La firma de SearchAsync seguirá el patrón ya usado en Quotes y Expeditions, recibiendo filtros primitivos y devolviendo PagedResult<TDto>.
  • La lógica de filtros, ordenamiento, paginación y proyección se concentrará en el repositorio.
  • El endpoint de búsqueda se expondrá como GET search, consistente con los controladores existentes del proyecto.

Entregable esperado

Archivos a crear:

  • Domain/Generics/DeliveryNoteSearchParams.cs
  • Domain/Dtos/Sales/DeliveryNoteSummaryDto.cs

Archivos a modificar:

  • Models/Interfaces/IPhSDeliveryNoteRepository.cs
  • Models/Repositories/PhSDeliveryNoteRepository.cs
  • Core/Interfaces/IDeliveryNoteDom.cs
  • Core/Services/DeliveryNoteService.cs
  • phronCare.API/Controllers/Sales/DeliveryNoteController.cs

Próxima Story sugerida

feat(ui): agregar pantalla principal de consulta para Delivery Note

## Objetivo Incorporar la búsqueda paginada de Delivery Notes en backend, dejando disponible el endpoint base que permitirá construir la pantalla principal de consulta del módulo. --- ## Contexto funcional El módulo Delivery Note ya cuenta con backend de lectura puntual: - repositorio `IPhSDeliveryNoteRepository / PhSDeliveryNoteRepository` - servicio core `IDeliveryNoteDom / DeliveryNoteService` - API `DeliveryNoteController` - DTO de lectura `DeliveryNoteDto` Actualmente existen endpoints para obtener remitos: - por id - por número - por quoteId Sin embargo, todavía no existe la búsqueda general paginada que sirva de base para la pantalla principal del documento, siguiendo el estándar ya utilizado en módulos como Quotes y Expeditions. En PhronCare, los documentos principales deben comenzar por una pantalla de consulta con filtros múltiples, paginación, tabla resumen y acciones por fila. Para habilitar ese flujo en Delivery Note, primero debe resolverse la base backend de búsqueda. --- ## Alcance Esta story incluye: - crear un objeto de parámetros de búsqueda paginada para Delivery Note - crear un DTO resumen para resultados de búsqueda - agregar un método `SearchAsync` en el contrato del repositorio - implementar la búsqueda paginada en `PhSDeliveryNoteRepository` - agregar el método `SearchAsync` en el contrato core `IDeliveryNoteDom` - implementar la delegación correspondiente en `DeliveryNoteService` - exponer un endpoint `GET /api/deliverynote/search` en `DeliveryNoteController` - aplicar filtros por: - número de remito - cliente por id o texto - quote por id o número - rango de fechas - estado - paginación --- ## Fuera de alcance Esta story no incluye: - desarrollo de pantalla UI Blazor - tabla visual de consulta - drawer o vista de detalle - impresión o reimpresión - exportación a Excel - creación o edición de Delivery Notes - cambios en modelos EF generados por scaffold - cambios en contratos ya existentes de lectura puntual --- ## Criterios de aceptación - ✔ Existe un DTO resumen específico para la búsqueda de Delivery Notes - ✔ Existe un objeto de parámetros de búsqueda paginada para Delivery Note - ✔ El repositorio permite buscar Delivery Notes con filtros y paginación - ✔ El servicio core expone la búsqueda paginada - ✔ La API expone el endpoint `GET /api/deliverynote/search` - ✔ La respuesta del endpoint devuelve `PagedResult<DeliveryNoteSummaryDto>` - ✔ La búsqueda ordena por fecha de emisión descendente y luego por id descendente - ✔ No se modifican modelos EF generados por scaffold - ✔ Se mantiene la arquitectura Data → Domain → Core → API - ✔ Los endpoints existentes (`by id`, `by number`, `by quoteId`) siguen funcionando sin cambios --- ## Decisiones de diseño - Se crea un DTO resumen específico (`DeliveryNoteSummaryDto`) en lugar de reutilizar `DeliveryNoteDto`, para evitar sobrecargar la búsqueda principal con el detalle de ítems. - Se conserva `DeliveryNoteDto` para operaciones de lectura puntual y detalle. - La firma de `SearchAsync` seguirá el patrón ya usado en Quotes y Expeditions, recibiendo filtros primitivos y devolviendo `PagedResult<TDto>`. - La lógica de filtros, ordenamiento, paginación y proyección se concentrará en el repositorio. - El endpoint de búsqueda se expondrá como `GET search`, consistente con los controladores existentes del proyecto. --- ## Entregable esperado Archivos a crear: - `Domain/Generics/DeliveryNoteSearchParams.cs` - `Domain/Dtos/Sales/DeliveryNoteSummaryDto.cs` Archivos a modificar: - `Models/Interfaces/IPhSDeliveryNoteRepository.cs` - `Models/Repositories/PhSDeliveryNoteRepository.cs` - `Core/Interfaces/IDeliveryNoteDom.cs` - `Core/Services/DeliveryNoteService.cs` - `phronCare.API/Controllers/Sales/DeliveryNoteController.cs` --- ## Próxima Story sugerida `feat(ui): agregar pantalla principal de consulta para Delivery Note`
leandro added the
STORY
label 2026-03-20 21:57:55 +00:00
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-03-20 21:57:59 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-03-20 21:58:02 +00:00
leandro self-assigned this 2026-03-20 21:58:06 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:47 +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#27
No description provided.