# RF-MGN-003-001: Gestión de Partners Universales

**Módulo:** MGN-003 - Catálogos Maestros
**Prioridad:** P0 (MVP)
**Story Points:** 8
**Estado:** Definido
**Fecha:** 2025-11-23

## Descripción

El sistema debe gestionar partners universales (patrón Odoo) donde un partner puede ser cliente, proveedor, empleado o contacto mediante flags booleanos. Incluye datos generales, fiscales, dirección y jerarquías.

## Actores

- **Actor Principal:** Usuario (Ventas, Compras, RRHH)
- **Actores Secundarios:** Sistema (validaciones automáticas)

## Precondiciones

1. Usuario debe estar autenticado
2. Catálogo de países debe estar disponible

## Flujo Principal

1. Usuario accede a módulo de Partners
2. Usuario crea nuevo partner con datos:
   - Nombre, nombre legal, email, teléfono
   - Dirección completa (calle, ciudad, estado, país, CP)
   - Datos fiscales (Tax ID, régimen fiscal)
3. Usuario marca flags: is_customer, is_supplier, is_employee, is_contact
4. Sistema valida unicidad de email (opcional)
5. Sistema valida formato de Tax ID según país
6. Sistema crea registro en core.partners
7. Partner queda disponible para uso en módulos transaccionales

## Flujos Alternativos

### FA-1: Partner con Jerarquía (Contactos)
1. Usuario crea partner como contacto de otro partner
2. Usuario selecciona parent_id (partner padre)
3. Sistema crea relación jerárquica
4. Contacto hereda datos del padre (dirección, términos pago)

### FA-2: Actualización de Datos
1. Usuario edita partner existente
2. Sistema valida cambios
3. Sistema registra cambio en audit log (MGN-014)
4. Cambios se reflejan en todos los documentos futuros

### FA-3: Conversión de Lead a Partner
1. Lead de CRM se convierte en partner
2. Sistema copia datos de lead a partner
3. Sistema marca is_customer=true
4. Partner vinculado a lead (crm.leads.partner_id)

## Reglas de Negocio

- **RN-1:** Un partner puede ser cliente, proveedor, empleado o cualquier combinación
- **RN-2:** Email debe ser único (opcional por configuración)
- **RN-3:** Tax ID debe ser único por país
- **RN-4:** Partner puede tener contactos hijos (parent_id)
- **RN-5:** Contacto hereda dirección del padre si no tiene propia
- **RN-6:** Partner vinculado a empresa (company.partner_id)

## Criterios de Aceptación

- [ ] Usuario puede crear partners con datos generales y fiscales
- [ ] Sistema valida formato de Tax ID según país
- [ ] Flags is_customer, is_supplier, is_employee funcionan correctamente
- [ ] Partner puede tener jerarquía (contactos hijos)
- [ ] Sistema previene Tax ID duplicados por país
- [ ] Cambios de partner se registran en audit log

## Entidades Involucradas

- **Principales:** core.partners
- **Relacionadas:** core.countries, core.companies

## Referencias

- [ALCANCE-POR-MODULO.md - MGN-003](../../01-definicion-modulos/ALCANCE-POR-MODULO.md#mgn-003-catálogos-maestros)
- [Core Schema DDL](../database-design/schemas/core-schema-ddl.sql)

## Dependencias

- RF-MGN-001-001 (Autenticación)
- RF-MGN-003-002 (Países)
