# US-MGN-002-001-001: CRUD de Empresas (Companies)

**RF Asociado:** [RF-MGN-002-001](../../02-modelado/requerimientos-funcionales/mgn-002/RF-MGN-002-001-gestion-empresas.md)
**Módulo:** MGN-002 - Empresas y Organizaciones
**Epic:** Gestión de Empresas
**Prioridad:** P0 (MVP)
**Story Points:** 5
**Sprint:** Sprint 3
**Fecha:** 2025-11-24

---

## User Story

**Como** administrador,
**Quiero** crear, listar, editar y desactivar empresas (companies),
**Para** gestionar las organizaciones que operan dentro del tenant.

---

## Criterios de Aceptación

### Escenario 1: Crear empresa
**Cuando** creo empresa con nombre, RFC/NIT, dirección fiscal,
**Entonces** empresa creada, disponible para operaciones.

### Escenario 2: Listar empresas con jerarquía
**Cuando** listo empresas,
**Entonces** veo estructura jerárquica (holding → subsidiarias).

### Escenario 3: Editar empresa
**Cuando** actualizo datos fiscales o logo,
**Entonces** cambios se aplican inmediatamente.

### Escenario 4: Desactivar empresa
**Cuando** desactivo empresa con transacciones,
**Entonces** empresa inactiva, transacciones históricas preservadas.

---

## Reglas de Negocio

- **RN-1:** Una empresa pertenece a un tenant
- **RN-2:** Empresa puede ser holding (parent_company_id=null) o subsidiaria
- **RN-3:** Soft delete: status='inactive'
- **RN-4:** RFC/NIT único por tenant

---

## Tareas Técnicas

### Backend
- [ ] POST /api/v1/companies - Crear
- [ ] GET /api/v1/companies - Listar con jerarquía
- [ ] PATCH /api/v1/companies/:id - Actualizar
- [ ] DELETE /api/v1/companies/:id - Soft delete
- [ ] CompaniesService.create/findAll/update/deactivate
- [ ] Tests (10 casos)

### Frontend
- [ ] CompaniesListPage con árbol jerárquico
- [ ] CompanyFormModal (crear/editar)
- [ ] API client + tests

---

## Estimación: 5 SP (9 horas)

---

## Referencias

- [RF-MGN-002-001](../../02-modelado/requerimientos-funcionales/mgn-002/RF-MGN-002-001-gestion-empresas.md)
- [ET-BACKEND-MGN-002-001](../../02-modelado/especificaciones-tecnicas/backend/mgn-002/ET-BACKEND-MGN-002-001-gestion-empresas.md)
