3.1 KiB
US-MGN-006-002-001: Crear 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 crear órdenes de compra (PO) a proveedores, Para formalizar la adquisición de productos con precios y condiciones acordadas.
Descripción Detallada
Una Purchase Order (PO) es el documento formal de compra. Incluye:
- Proveedor
- Líneas con: producto, cantidad, precio unitario, subtotal, impuestos
- Términos de pago
- Fecha esperada de entrega
- Total de la orden
- Estados: draft, sent, purchase (confirmada), done, cancelled
Criterios de Aceptación
Escenario 1: Crear PO en draft (Camino Feliz)
Dado que creo PO: partner_id=1, lines=[{product:1, qty:10, price:100}], payment_term_id=1, Cuando guardo, Entonces sistema crea PO en draft con número PO/2024/0001, amount_total=1000.
Escenario 2: Calcular totales automáticamente
Dado que línea tiene qty=10, price=100, tax=19%, Cuando guardo línea, Entonces sistema calcula subtotal=1000, tax_amount=190, total=1190.
Escenario 3: Crear PO desde RFQ
Dado que tengo RFQ con cotización aceptada, Cuando creo PO desde RFQ, Entonces sistema copia líneas con precios cotizados.
Reglas de Negocio
- RN-1: PO se crean en estado draft.
- RN-2: Total = suma(líneas.subtotal) + impuestos.
- RN-3: Partner debe ser supplier.
- RN-4: Número secuencial único: PO/{year}/{seq}.
Tareas Técnicas
Backend
- Endpoint: POST /api/v1/purchase/orders
- Service: PurchaseOrderService.create(dto)
- Service: PurchaseOrderService.calculateTotals(lines)
- DTO: CreatePurchaseOrderDto, OrderLineDto
- Validar proveedor supplier
- Calcular totales automáticamente
- Unit tests
- Integration tests
- Swagger docs
Frontend
- Componente: CreatePOForm.tsx
- Tabla editable de líneas con cálculo automático
- Selector de proveedor y productos
- Resumen de totales
- API client: purchaseOrderApi.create()
- Component tests
- E2E test
Database
- Tabla: purchase.purchase_orders
- Tabla: purchase.purchase_order_lines
- Índices: idx_pos_partner_id, idx_pos_state
- RLS policy: company_isolation
Estimación Detallada
| Tarea | Horas |
|---|---|
| Backend | 2.5 |
| Frontend | 3 |
| Testing | 2 |
| Code Review | 0.5 |
| TOTAL | 8 horas = 5 SP |
Definition of Done
- Código implementado según ET
- Tests pasando (>80%)
- Code review aprobado
- Cálculos correctos
- QA validado
- PO aprobado