# US-MGN-004-006-003: Cancelar Factura de Proveedor

**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:** 3
**Sprint:** Sprint 11
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story

**Como** contador,
**Quiero** cancelar facturas de proveedor validadas,
**Para** anular facturas erróneas con asiento de reversión.

---

## Descripción Detallada

Similar a cancelación de factura cliente pero para in_invoices. Genera asiento reversión, estado cancelled, motivo obligatorio.

---

## Criterios de Aceptación

### Escenario 1: Cancelar factura proveedor open
**Dado que** state='open',
**Cuando** cancelo con reason,
**Entonces** state='cancelled', asiento reversión creado.

---

## Reglas de Negocio

- **RN-1:** Solo open pueden cancelarse.
- **RN-2:** Motivo obligatorio.
- **RN-3:** Asiento reversión automático.

---

## Tareas Técnicas

### Backend
- [ ] POST /vendor-invoices/:id/cancel
- [ ] Service: VendorInvoiceService.cancel()
- [ ] Unit tests (6 test cases)

### Frontend
- [ ] Botón Cancelar
- [ ] Modal con reason
- [ ] E2E test

---

## Estimación: 6 horas = 3 SP

---

## Referencias

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