# RF-MGN-002-005: Plantillas de Configuración por País

**Módulo:** MGN-002 - Empresas y Organizaciones
**Prioridad:** P1 (Post-MVP)
**Story Points:** 8
**Estado:** Definido
**Fecha:** 2025-11-23

## Descripción

El sistema debe proveer plantillas de configuración por país que faciliten la creación de empresas con plan de cuentas, impuestos y configuraciones predefinidas según legislación local.

## Actores

- **Actor Principal:** Administrador de Sistema
- **Actores Secundarios:** Sistema (carga automática de plantillas)

## Precondiciones

1. Plantillas por país deben estar cargadas en sistema
2. Usuario debe estar creando nueva empresa
3. País debe estar seleccionado

## Flujo Principal

1. Administrador inicia creación de nueva empresa
2. Administrador selecciona país (ej: México)
3. Sistema detecta plantilla disponible para país
4. Sistema ofrece: "¿Usar plantilla de México con CFDI y SAT?"
5. Administrador acepta usar plantilla
6. Sistema carga configuración predefinida:
   - Plan de cuentas estándar (Código Agrupador SAT)
   - Impuestos comunes (IVA 16%, ISR, IEPS)
   - Journals (Ventas, Compras, Banco, Diario)
   - Términos de pago típicos (Contado, 30 días, 60 días)
   - Régimen fiscal por defecto
7. Sistema crea empresa con configuración precargada
8. Administrador puede personalizar después

## Flujos Alternativos

### FA-1: Creación Manual (Sin Plantilla)
1. Si país no tiene plantilla o administrador no quiere usarla
2. Sistema crea empresa vacía
3. Administrador configura todo manualmente

### FA-2: Plantillas Disponibles
- **México:**
  - Plan de cuentas según Código Agrupador SAT
  - Impuestos: IVA 16%, ISR, IEPS
  - Configuración CFDI (Facturación Electrónica)
- **USA:**
  - Plan de cuentas GAAP básico
  - Sales Tax por estados
- **Colombia:**
  - Plan de cuentas PUC
  - IVA 19%, Retención en la fuente

### FA-3: Actualización de Plantillas
1. Sistema recibe actualización de plantilla (nuevo impuesto, cambio legislación)
2. Administrador puede aplicar cambios a empresas existentes
3. Sistema muestra diferencias (diff)
4. Administrador aprueba cambios
5. Sistema actualiza configuración de empresas

## Reglas de Negocio

- **RN-1:** Plantillas son opcionales (no obligatorias)
- **RN-2:** Plantilla se aplica solo al crear empresa (no automático después)
- **RN-3:** Configuración cargada desde plantilla puede personalizarse
- **RN-4:** Plantillas incluyen: plan de cuentas, impuestos, journals, términos de pago
- **RN-5:** Plantillas por país deben mantenerse actualizadas con legislación

## Criterios de Aceptación

- [ ] Sistema detecta plantilla disponible al seleccionar país
- [ ] Administrador puede elegir usar o no plantilla
- [ ] Plantilla carga plan de cuentas predefinido
- [ ] Plantilla carga impuestos comunes del país
- [ ] Plantilla carga journals estándar
- [ ] Configuración cargada puede personalizarse después
- [ ] Sistema soporta plantillas para múltiples países
- [ ] Plantillas pueden actualizarse sin afectar empresas existentes

## Entidades Involucradas

- **Principales:**
  - core.company_templates (plantillas por país)
  - core.companies (empresa creada)
- **Relacionadas:**
  - financial.accounts (plan de cuentas)
  - financial.taxes (impuestos)
  - financial.journals (journals)

## Referencias

- [ALCANCE-POR-MODULO.md - MGN-002](../../01-definicion-modulos/ALCANCE-POR-MODULO.md#mgn-002-empresas-y-organizaciones)
- [Core Schema DDL](../database-design/schemas/core-schema-ddl.sql)
- [Gap Analysis MGN-002](../../01-definicion-modulos/gaps/GAP-ANALYSIS-MGN-002.md)

## Notas Técnicas

- **Patrón Odoo:** l10n_* modules (localization packages)
- **Almacenamiento:** JSON o SQL con templates versionados
- **Ejemplo Template JSON:**
  ```json
  {
    "country": "MX",
    "name": "México - CFDI",
    "chart_of_accounts": {
      "accounts": [
        {"code": "101-01", "name": "Caja", "type": "asset"},
        {"code": "102-01", "name": "Bancos", "type": "asset"}
      ]
    },
    "taxes": [
      {"name": "IVA 16%", "rate": 16, "type": "sales"},
      {"name": "ISR Ret", "rate": 10, "type": "retention"}
    ],
    "journals": [
      {"name": "Ventas", "type": "sale", "code": "VEN"},
      {"name": "Compras", "type": "purchase", "code": "COM"}
    ]
  }
  ```
- **Versionamiento:** Templates tienen versión para actualizaciones
- **Backend:** NestJS CompanyTemplateService
- **Frontend:** Wizard de creación con opción de plantilla

## Dependencias

- **RF Dependientes:**
  - RF-MGN-002-001 (Gestión de Empresas)
  - RF-MGN-004-001 (Plan de Cuentas)
- **Bloqueante para:** Ninguno (facilita creación, no es bloqueante)
