# RF-MGN-002-002: Configuración de Empresa **Módulo:** MGN-002 - Empresas y Organizaciones **Prioridad:** P0 (MVP) **Story Points:** 5 **Estado:** Definido **Fecha:** 2025-11-23 ## Descripción El sistema debe permitir configurar parámetros operativos y contables de cada empresa, como cuentas contables por defecto, journals, términos de pago, almacenes, y configuraciones de módulos. ## Actores - **Actor Principal:** Administrador de Empresa - **Actores Secundarios:** Contador (configura cuentas contables) ## Precondiciones 1. Empresa debe estar creada (RF-MGN-002-001) 2. Plan de cuentas debe estar definido (MGN-004) 3. Usuario debe tener permisos de administración de empresa ## Flujo Principal 1. Administrador accede a Configuración de Empresa 2. Administrador configura parámetros contables: - Cuenta de ingresos por defecto - Cuenta de egresos por defecto - Cuenta de banco principal - Journal de ventas, compras, banco, misceláneos 3. Administrador configura parámetros operativos: - Términos de pago por defecto (ej: 30 días) - Almacén principal - Prefijos de documentos (SO-, PO-, INV-) - Zona horaria - Idioma por defecto 4. Administrador configura módulos habilitados: - ¿Usar inventario? (true/false) - ¿Usar proyectos? (true/false) - ¿Usar CRM? (true/false) 5. Sistema valida configuración 6. Sistema guarda en core.company_settings 7. Configuración se aplica a nuevos documentos ## Flujos Alternativos ### FA-1: Configuración de Facturación Electrónica 1. Si país requiere facturación electrónica (ej: México CFDI) 2. Administrador configura credenciales de PAC 3. Administrador configura certificados (CSD) 4. Sistema valida credenciales con PAC 5. Facturación electrónica queda habilitada ### FA-2: Configuración de Multi-Moneda 1. Administrador habilita multi-moneda 2. Administrador selecciona monedas adicionales permitidas 3. Sistema configura tasas de cambio (MGN-003) 4. Documentos pueden crearse en múltiples monedas ### FA-3: Plantillas de Documentos 1. Administrador personaliza plantillas de documentos 2. Administrador sube plantilla PDF para facturas/cotizaciones 3. Sistema valida formato (HTML + CSS o PDF template) 4. Plantilla se usa en generación de PDFs ### FA-4: Configuración Inválida 1. Si administrador configura cuenta contable inexistente 2. Sistema retorna error 400: "Cuenta contable no encontrada" ## Reglas de Negocio - **RN-1:** Configuración es por empresa (multi-empresa independiente) - **RN-2:** Cuentas contables por defecto deben existir en plan de cuentas - **RN-3:** Almacén principal debe existir en core.warehouses - **RN-4:** Prefijos de documentos deben ser únicos por empresa - **RN-5:** Zona horaria afecta fechas de documentos y reportes - **RN-6:** Idioma por defecto aplica a emails y documentos - **RN-7:** Configuración de módulos controla funcionalidades visibles ## Criterios de Aceptación - [ ] Administrador puede configurar cuentas contables por defecto - [ ] Administrador puede configurar journals por defecto - [ ] Administrador puede configurar términos de pago por defecto - [ ] Administrador puede configurar almacén principal - [ ] Administrador puede personalizar prefijos de documentos - [ ] Administrador puede configurar zona horaria e idioma - [ ] Administrador puede habilitar/deshabilitar módulos - [ ] Sistema valida que cuentas y almacenes existan - [ ] Configuración se aplica a nuevos documentos - [ ] Cambios de configuración son inmediatos ## Entidades Involucradas - **Principales:** - core.company_settings (configuración por empresa) - core.companies (empresa propietaria) - **Relacionadas:** - financial.accounts (cuentas contables) - financial.journals (journals) - inventory.warehouses (almacén principal) ## 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:** res.company (campos de configuración) - **Almacenamiento:** JSON en core.company_settings.settings_json - **Ejemplo Settings JSON:** ```json { "accounting": { "default_income_account_id": 123, "default_expense_account_id": 124, "sales_journal_id": 1, "purchase_journal_id": 2 }, "operations": { "default_payment_term": "30 days", "default_warehouse_id": 1, "document_prefixes": {"SO": "SO-", "PO": "PO-"} }, "regional": { "timezone": "America/Mexico_City", "language": "es_MX" }, "modules": { "use_inventory": true, "use_projects": true, "use_crm": false } } ``` - **Backend:** NestJS CompanySettingsService - **Frontend:** Formulario con tabs por categoría ## Dependencias - **RF Dependientes:** - RF-MGN-002-001 (Gestión de Empresas) - RF-MGN-004-001 (Plan de Cuentas) - **Bloqueante para:** Módulos transaccionales (usan configuración de empresa)