# US-MGN-004-006-001: Crear Factura de Proveedor (Draft)

**RF Asociado:** [RF-MGN-004-006](../../02-modelado/requerimientos-funcionales/mgn-004/RF-MGN-004-006-gestión-de-facturas-de-proveedor.md)
**Módulo:** MGN-004 - Financiero Básico
**Epic:** Facturas de Proveedor
**Prioridad:** P0 (MVP)
**Story Points:** 5
**Sprint:** Sprint 11
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story

**Como** usuario de compras,
**Quiero** crear facturas de proveedor en estado borrador,
**Para** registrar compras a proveedores antes de validar y contabilizar.

---

## Descripción Detallada

Factura de proveedor (in_invoice) registra una compra. Similar a factura cliente pero tipo='in_invoice', partner debe ser supplier, y al validar genera asiento con débito a gastos/inventario y crédito a cuentas por pagar.

---

## Criterios de Aceptación

### Escenario 1: Crear factura proveedor draft
**Dado que** soy usuario compras,
**Cuando** creo factura con partner_id (supplier), invoice_date, vendor_reference, líneas,
**Entonces** type='in_invoice', state='draft', totales calculados, número generado.

### Escenario 2: Validar partner es proveedor
**Dado que** partner no es tipo "supplier",
**Cuando** creo factura,
**Entonces** error 400 "Partner debe ser tipo proveedor".

### Escenario 3: Referencia del proveedor obligatoria
**Dado que** omito vendor_reference,
**Cuando** creo factura,
**Entonces** error 400 "Referencia del proveedor es obligatoria".

---

## Reglas de Negocio

- **RN-1:** type='in_invoice' para facturas proveedor.
- **RN-2:** Partner debe ser supplier o both.
- **RN-3:** vendor_reference obligatorio (número factura del proveedor).
- **RN-4:** Estado inicial 'draft'.
- **RN-5:** Impuestos purchase o both.
- **RN-6:** RLS filtra por company_id.

---

## Tareas Técnicas

### Backend
- [ ] POST /api/v1/financial/vendor-invoices
- [ ] Service: VendorInvoiceService.create()
- [ ] DTO: CreateVendorInvoiceDto
- [ ] Validar partner supplier
- [ ] Validar vendor_reference required
- [ ] Unit tests (8 test cases)
- [ ] Integration tests (6 test cases)

### Frontend
- [ ] CreateVendorInvoicePage.tsx
- [ ] CreateVendorInvoiceForm.tsx
- [ ] Campo: vendor_reference (required)
- [ ] E2E test

---

## Estimación: 9 horas = 5 SP

---

## Referencias

- [RF-MGN-004-006](../../02-modelado/requerimientos-funcionales/mgn-004/RF-MGN-004-006-gestión-de-facturas-de-proveedor.md)
