feat(sales): incorporar servicio UI para consumo de Delivery Note #25

Closed
opened 2026-03-19 21:09:15 +00:00 by leandro · 0 comments
Owner

Objetivo

Implementar un servicio en la capa UI (Blazor) que permita consumir los endpoints de Delivery Note, desacoplando la lógica de acceso HTTP de los componentes visuales.


Contexto funcional

El módulo de Delivery Note ya cuenta con:

  • Repositorio (IPhSDeliveryNoteRepository, PhSDeliveryNoteRepository)
  • Core (IDeliveryNoteDom, DeliveryNoteService)
  • API (DeliveryNoteController)
  • DTO de lectura (DeliveryNoteDto) incorporado en la story #23

Actualmente, no existe una capa de consumo en la UI para Delivery Note, lo que impide mantener consistencia con el patrón ya implementado en otros módulos como Quotes y Expeditions, donde la UI no accede directamente a endpoints sino a través de servicios tipados.

Esta story introduce esa capa intermedia, preparando el terreno para futuras pantallas de consulta o detalle.


Alcance

Incluye exclusivamente la capa de consumo en UI:

  • Crear interfaz de servicio:

    • IDeliveryNoteService (UI)
  • Crear implementación:

    • DeliveryNoteService (UI)
  • Métodos a implementar:

    • GetByIdAsync(int id)
    • GetByDeliveryNoteNumberAsync(string deliveryNoteNumber)
    • GetByQuoteIdAsync(int quoteId)
  • Consumir endpoints existentes en API:

    • /api/deliverynote/{id}
    • /api/deliverynote/number/{deliveryNoteNumber}
    • /api/deliverynote/quote/{quoteId}
  • Manejar:

    • deserialización de DeliveryNoteDto
    • manejo básico de errores HTTP
  • Registrar el servicio en DI (Program.cs o equivalente)


Fuera de alcance

  • Creación de componentes o páginas Blazor
  • Visualización de Delivery Note en UI
  • Generación de PDF o documentos
  • Modificaciones en API, Core o Domain
  • Cambios en DTO existentes
  • Lógica de negocio adicional

Criterios de aceptación

✔ Existe interfaz IDeliveryNoteService en UI
✔ Existe implementación DeliveryNoteService en UI
✔ Los métodos consumen correctamente los endpoints existentes
✔ Se deserializa correctamente DeliveryNoteDto
✔ El servicio está registrado en el contenedor de dependencias
✔ No hay acceso directo a HttpClient desde componentes (preparación para siguiente story)
✔ El código compila sin errores
✔ Se respeta la arquitectura Data → Domain → Core → API → UI
✔ No se modifican modelos EF generados por scaffold


Decisiones de diseño

  • Se replica el patrón utilizado en módulos existentes (Quotes / Expeditions) para mantener consistencia.
  • El servicio UI actúa como gateway HTTP tipado, aislando a los componentes de detalles de transporte.
  • No se introduce lógica de negocio en esta capa.
  • Se mantiene el contrato basado en DeliveryNoteDto, evitando acoplamiento con entidades de dominio.
  • Manejo de errores simple (status code → excepción o null), alineado con el resto del proyecto.

Entregable esperado

UI/Services/Interfaces/IDeliveryNoteService.cs
UI/Services/DeliveryNoteService.cs
UI/Program.cs (registro en DI)


Próxima Story sugerida

feat(sales): agregar vista de detalle de Delivery Note en Blazor

## Objetivo Implementar un servicio en la capa UI (Blazor) que permita consumir los endpoints de Delivery Note, desacoplando la lógica de acceso HTTP de los componentes visuales. --- ## Contexto funcional El módulo de Delivery Note ya cuenta con: - Repositorio (`IPhSDeliveryNoteRepository`, `PhSDeliveryNoteRepository`) - Core (`IDeliveryNoteDom`, `DeliveryNoteService`) - API (`DeliveryNoteController`) - DTO de lectura (`DeliveryNoteDto`) incorporado en la story #23 Actualmente, no existe una capa de consumo en la UI para Delivery Note, lo que impide mantener consistencia con el patrón ya implementado en otros módulos como Quotes y Expeditions, donde la UI no accede directamente a endpoints sino a través de servicios tipados. Esta story introduce esa capa intermedia, preparando el terreno para futuras pantallas de consulta o detalle. --- ## Alcance Incluye exclusivamente la capa de consumo en UI: - Crear interfaz de servicio: - `IDeliveryNoteService` (UI) - Crear implementación: - `DeliveryNoteService` (UI) - Métodos a implementar: - `GetByIdAsync(int id)` - `GetByDeliveryNoteNumberAsync(string deliveryNoteNumber)` - `GetByQuoteIdAsync(int quoteId)` - Consumir endpoints existentes en API: - `/api/deliverynote/{id}` - `/api/deliverynote/number/{deliveryNoteNumber}` - `/api/deliverynote/quote/{quoteId}` - Manejar: - deserialización de `DeliveryNoteDto` - manejo básico de errores HTTP - Registrar el servicio en DI (Program.cs o equivalente) --- ## Fuera de alcance - Creación de componentes o páginas Blazor - Visualización de Delivery Note en UI - Generación de PDF o documentos - Modificaciones en API, Core o Domain - Cambios en DTO existentes - Lógica de negocio adicional --- ## Criterios de aceptación ✔ Existe interfaz `IDeliveryNoteService` en UI ✔ Existe implementación `DeliveryNoteService` en UI ✔ Los métodos consumen correctamente los endpoints existentes ✔ Se deserializa correctamente `DeliveryNoteDto` ✔ El servicio está registrado en el contenedor de dependencias ✔ No hay acceso directo a HttpClient desde componentes (preparación para siguiente story) ✔ El código compila sin errores ✔ Se respeta la arquitectura Data → Domain → Core → API → UI ✔ No se modifican modelos EF generados por scaffold --- ## Decisiones de diseño - Se replica el patrón utilizado en módulos existentes (Quotes / Expeditions) para mantener consistencia. - El servicio UI actúa como **gateway HTTP tipado**, aislando a los componentes de detalles de transporte. - No se introduce lógica de negocio en esta capa. - Se mantiene el contrato basado en `DeliveryNoteDto`, evitando acoplamiento con entidades de dominio. - Manejo de errores simple (status code → excepción o null), alineado con el resto del proyecto. --- ## Entregable esperado UI/Services/Interfaces/IDeliveryNoteService.cs UI/Services/DeliveryNoteService.cs UI/Program.cs (registro en DI) --- ## Próxima Story sugerida feat(sales): agregar vista de detalle de Delivery Note en Blazor
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-03-19 21:09:15 +00:00
leandro added the
STORY
label 2026-03-19 21:09:15 +00:00
leandro self-assigned this 2026-03-19 21:09:15 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-03-19 21:09:15 +00:00
leandro moved this to Done in phronCare: Tablero DEV on 2026-03-23 03:07:45 +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#25
No description provided.