feat(sales): precargar ítems aprobados del presupuesto en Delivery Note Create #39

Closed
opened 2026-03-24 20:23:46 +00:00 by leandro · 0 comments
Owner

Objetivo

Mejorar la experiencia de usuario en la emisión de Delivery Notes permitiendo la precarga automática de ítems aprobados desde un presupuesto seleccionado, evitando carga manual redundante y reduciendo errores operativos.


Contexto funcional

Actualmente, en la pantalla DeliveryNoteCreate.razor, el usuario puede seleccionar un presupuesto aprobado, pero:

  • Solo se guarda el QuoteId
  • No se precargan los ítems del presupuesto
  • El usuario debe cargar manualmente cada producto

El sistema ya dispone de:

  • Endpoint: GET /api/quote/{id}
  • Servicio UI: IQuoteService.GetDtoByIdAsync
  • DTO completo: QuoteDto con colección Items
  • Estructura de ítems en Delivery Note con soporte de:
    • QuoteDetailId
    • OriginType

Esto permite implementar la funcionalidad sin cambios en backend.


Alcance

UI (Blazor)

  • Modificar DeliveryNoteCreate.razor para:

    • Al seleccionar un presupuesto:
      • Consultar QuoteDto completo vía IQuoteService
      • Filtrar ítems con Approved == true
      • Mapearlos a la grilla de Delivery Note
  • Mapping de ítems:

    • Description = item.Description
    • Quantity = item.ApprovedQuantity ?? item.Quantity
    • QuoteDetailId = item.Id
    • OriginType = QuoteDetail
    • OriginId = null (por ahora)
    • Notes = null
  • Validaciones:

    • Excluir ítems con cantidad <= 0
  • Comportamiento:

    • Si la grilla está vacía → precarga automática
    • Si ya existen ítems:
      • Mostrar confirmación:
        • “Ya hay ítems cargados. ¿Desea reemplazarlos por los ítems aprobados del presupuesto?”
      • Si confirma → reemplazar
      • Si cancela → no modificar ítems actuales
  • Mantener:

    • Ítems editables luego de la precarga
    • Reindexación de filas (ReindexItems())
  • UX mínima:

    • Si no hay ítems aprobados → mostrar warning (toast opcional)

Fuera de alcance

  • Cambios en:
    • Core
    • API
    • Domain
    • Repositories
  • Merge inteligente entre ítems manuales y de presupuesto
  • Sincronización bidireccional con presupuesto
  • Validaciones avanzadas de stock o disponibilidad
  • Uso de OriginId con lógica adicional

Criterios de aceptación

  • Al seleccionar un presupuesto:

    • Se consulta GET /api/quote/{id}
    • Se obtienen sus ítems
  • Si existen ítems aprobados:

    • Se precargan en la grilla del Delivery Note
  • Cada ítem precargado cumple:

    • QuoteDetailId asignado correctamente
    • OriginType = QuoteDetail
    • Description correcta
    • Quantity respeta ApprovedQuantity si existe
  • Los ítems:

    • Son editables antes de emitir
    • Se pueden eliminar o modificar manualmente
  • Si ya existen ítems en la grilla:

    • No se pisan automáticamente
    • Se requiere confirmación explícita
  • No se realizan cambios en backend


Decisiones de diseño

  • Se reutiliza el endpoint existente GET /api/quote/{id}
  • Se implementa lógica exclusivamente en UI (Blazor)
  • Estrategia de carga:
    • Reemplazo explícito, no merge
  • Se prioriza una solución simple (MVP) alineada al patrón actual del sistema
  • OriginId queda sin uso por ahora para evitar sobredefinición

Entregable esperado

  • Modificación de:

    • DeliveryNoteCreate.razor
  • Comportamiento funcional:

    • Selección de presupuesto → precarga automática de ítems aprobados
    • Confirmación antes de sobrescribir ítems existentes
  • Código consistente con:

    • Arquitectura del proyecto
    • Patrones existentes en módulos (Quotes / Expeditions)
  • Commit sugerido:
    feat(sales): precargar ítems aprobados desde presupuesto en delivery note create (closes #39)

## Objetivo Mejorar la experiencia de usuario en la emisión de Delivery Notes permitiendo la **precarga automática de ítems aprobados** desde un presupuesto seleccionado, evitando carga manual redundante y reduciendo errores operativos. --- ## Contexto funcional Actualmente, en la pantalla `DeliveryNoteCreate.razor`, el usuario puede seleccionar un presupuesto aprobado, pero: - Solo se guarda el `QuoteId` - **No se precargan los ítems del presupuesto** - El usuario debe cargar manualmente cada producto El sistema ya dispone de: - Endpoint: `GET /api/quote/{id}` - Servicio UI: `IQuoteService.GetDtoByIdAsync` - DTO completo: `QuoteDto` con colección `Items` - Estructura de ítems en Delivery Note con soporte de: - `QuoteDetailId` - `OriginType` Esto permite implementar la funcionalidad **sin cambios en backend**. --- ## Alcance ### UI (Blazor) - Modificar `DeliveryNoteCreate.razor` para: - Al seleccionar un presupuesto: - Consultar `QuoteDto` completo vía `IQuoteService` - Filtrar ítems con `Approved == true` - Mapearlos a la grilla de Delivery Note - Mapping de ítems: - `Description = item.Description` - `Quantity = item.ApprovedQuantity ?? item.Quantity` - `QuoteDetailId = item.Id` - `OriginType = QuoteDetail` - `OriginId = null` (por ahora) - `Notes = null` - Validaciones: - Excluir ítems con cantidad <= 0 - Comportamiento: - Si la grilla está vacía → precarga automática - Si ya existen ítems: - Mostrar confirmación: - “Ya hay ítems cargados. ¿Desea reemplazarlos por los ítems aprobados del presupuesto?” - Si confirma → reemplazar - Si cancela → no modificar ítems actuales - Mantener: - Ítems editables luego de la precarga - Reindexación de filas (`ReindexItems()`) - UX mínima: - Si no hay ítems aprobados → mostrar warning (toast opcional) --- ## Fuera de alcance - Cambios en: - Core - API - Domain - Repositories - Merge inteligente entre ítems manuales y de presupuesto - Sincronización bidireccional con presupuesto - Validaciones avanzadas de stock o disponibilidad - Uso de `OriginId` con lógica adicional --- ## Criterios de aceptación - Al seleccionar un presupuesto: - Se consulta `GET /api/quote/{id}` - Se obtienen sus ítems - Si existen ítems aprobados: - Se precargan en la grilla del Delivery Note - Cada ítem precargado cumple: - `QuoteDetailId` asignado correctamente - `OriginType = QuoteDetail` - `Description` correcta - `Quantity` respeta `ApprovedQuantity` si existe - Los ítems: - Son editables antes de emitir - Se pueden eliminar o modificar manualmente - Si ya existen ítems en la grilla: - No se pisan automáticamente - Se requiere confirmación explícita - No se realizan cambios en backend --- ## Decisiones de diseño - Se reutiliza el endpoint existente `GET /api/quote/{id}` - Se implementa lógica exclusivamente en UI (Blazor) - Estrategia de carga: - **Reemplazo explícito**, no merge - Se prioriza una solución simple (MVP) alineada al patrón actual del sistema - `OriginId` queda sin uso por ahora para evitar sobredefinición --- ## Entregable esperado - Modificación de: - `DeliveryNoteCreate.razor` - Comportamiento funcional: - Selección de presupuesto → precarga automática de ítems aprobados - Confirmación antes de sobrescribir ítems existentes - Código consistente con: - Arquitectura del proyecto - Patrones existentes en módulos (Quotes / Expeditions) - Commit sugerido: feat(sales): precargar ítems aprobados desde presupuesto en delivery note create (closes #39)
leandro added this to the Sales (Ventas, Facturación y Remitos) milestone 2026-03-24 20:23:46 +00:00
leandro added the
STORY
label 2026-03-24 20:23:46 +00:00
leandro self-assigned this 2026-03-24 20:23:46 +00:00
leandro added this to the phronCare: Tablero DEV project 2026-03-24 20:23:46 +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#39
No description provided.