erp-core/docs/05-user-stories/mgn-006/US-MGN-006-002-002-confirmar-orden-compra.md

3.0 KiB

US-MGN-006-002-002: Confirmar Orden de Compra

RF Asociado: RF-MGN-006-002 Módulo: MGN-006 - Compras Básico Epic: Órdenes de Compra Prioridad: P0 Story Points: 5 Sprint: Sprint 13 Estado: Ready for Development Fecha: 2025-11-24


User Story

Como usuario de compras, Quiero confirmar órdenes de compra, Para comprometer la compra y generar recepciones pendientes.


Descripción Detallada

Confirmar una PO:

  1. Cambia estado draft → purchase (confirmada)
  2. Genera recepción (picking) pendiente automáticamente
  3. Reserva presupuesto (si aplica)
  4. Envía email al proveedor con PO en PDF
  5. Bloquea edición de líneas

Criterios de Aceptación

Escenario 1: Confirmar PO exitosamente (Camino Feliz)

Dado que PO está en draft, Cuando confirmo, Entonces sistema cambia state=purchase, genera picking de recepción, envía email al proveedor.

Escenario 2: Generar picking automáticamente

Dado que confirmo PO con líneas: Producto A qty=10, Producto B qty=5, Cuando confirmo, Entonces sistema genera picking de tipo receipt con esas líneas.

Escenario 3: Error al confirmar PO ya confirmada

Dado que PO está en state=purchase, Cuando intento confirmar, Entonces sistema retorna error 400 "PO ya fue confirmada".


Reglas de Negocio

  • RN-1: Solo PO draft pueden confirmarse.
  • RN-2: Confirmar genera picking de recepción automáticamente.
  • RN-3: PO confirmada no puede editarse (solo cancelarse).
  • RN-4: Se envía email al proveedor con PDF de PO.

Tareas Técnicas

Backend

  • Endpoint: POST /api/v1/purchase/orders/:id/confirm
  • Service: PurchaseOrderService.confirm(id)
  • Service: PickingService.createFromPO(po)
  • Service: EmailService.sendPO(po, pdf)
  • Validar estado draft
  • Generar picking automático
  • Transaction atomicidad
  • Unit tests
  • Integration tests
  • Swagger docs

Frontend

  • Botón Confirmar con confirmación
  • Modal mostrando impacto (picking generado)
  • API client: purchaseOrderApi.confirm(id)
  • Component tests
  • E2E test

Database

  • Campo: purchase.purchase_orders.confirmed_date
  • Campo: purchase.purchase_orders.confirmed_by_user_id

Estimación Detallada

Tarea Horas
Backend 3
Frontend 2
Testing 2
Code Review 1
TOTAL 8 horas = 5 SP

Definition of Done

  • Código implementado según ET
  • Tests pasando (>80%)
  • Code review aprobado
  • Picking generado correctamente
  • Email enviado
  • Transaction implementada
  • QA validado
  • PO aprobado

Referencias