4.9 KiB
4.9 KiB
RF-MGN-002-001: Gestión de Empresas
Módulo: MGN-002 - Empresas y Organizaciones Prioridad: P0 (MVP) Story Points: 8 Estado: Definido Fecha: 2025-11-23
Descripción
El sistema debe permitir la creación, lectura, actualización y desactivación (soft delete) de empresas. Cada empresa tiene datos generales, fiscales, dirección y configuración. Una empresa también es un partner (patrón Odoo).
Actores
- Actor Principal: Administrador de Sistema
- Actores Secundarios: Contador (configura datos fiscales)
Precondiciones
- Usuario administrador debe estar autenticado
- Tenant debe estar activo
- Catálogo de países y monedas debe estar disponible (MGN-003)
Flujo Principal
- Administrador accede a módulo de Gestión de Empresas
- Administrador crea nueva empresa con datos generales:
- Nombre comercial y nombre legal
- RFC/NIT/Tax ID
- Email corporativo, teléfono, sitio web
- Administrador configura dirección:
- Calle, número, colonia
- Ciudad, estado, país, código postal
- Administrador configura datos fiscales:
- Régimen fiscal
- Moneda principal (currency_id)
- Sistema crea partner automáticamente (is_company=true)
- Sistema vincula empresa con partner (company.partner_id)
- Sistema guarda logo de empresa (opcional)
- Sistema crea registro en core.companies
- Empresa queda disponible para asignar usuarios
Flujos Alternativos
FA-1: Actualización de Datos de Empresa
- Administrador selecciona empresa existente
- Administrador modifica datos (nombre, dirección, fiscal)
- Sistema valida cambios
- Sistema actualiza core.companies y core.partners
- Cambios se reflejan inmediatamente
FA-2: Configuración de Holdings (Jerarquía)
- Administrador crea empresa hija
- Administrador selecciona parent_id (empresa padre/holding)
- Sistema valida que no haya ciclos (A → B → A)
- Sistema crea jerarquía en core.companies
- Sistema puede visualizar organigrama de empresas
FA-3: Desactivación de Empresa
- Administrador desactiva empresa (status='inactive')
- Sistema valida que no haya documentos pendientes (órdenes, facturas draft)
- Si hay pendientes, sistema retorna error 400: "Empresa tiene documentos pendientes"
- Si no hay pendientes, sistema desactiva empresa
- Usuarios pierden acceso a empresa desactivada
FA-4: Subir Logo de Empresa
- Administrador sube logo (PNG, JPG, max 2MB)
- Sistema valida formato y tamaño
- Sistema guarda en storage (S3 o file system)
- Sistema actualiza company.logo_url
- Logo se muestra en documentos (facturas, cotizaciones)
Reglas de Negocio
- RN-1: Una empresa también es un partner (company.partner_id)
- RN-2: Tax ID debe ser único por país
- RN-3: Empresa debe tener moneda principal definida
- RN-4: Empresa puede ser parte de holding (parent_id)
- RN-5: No se permiten ciclos en jerarquías (validación)
- RN-6: Empresa desactivada no permite creación de nuevos documentos
- RN-7: Logo máximo 2MB, formatos: PNG, JPG, SVG
Criterios de Aceptación
- Administrador puede crear empresas con datos generales y fiscales
- Sistema crea partner automáticamente para cada empresa
- Administrador puede configurar dirección y país de empresa
- Administrador puede subir logo de empresa (max 2MB)
- Empresa tiene moneda principal definida
- Administrador puede crear jerarquías (holdings con empresas hijas)
- Sistema valida que Tax ID sea único por país
- Sistema previene ciclos en jerarquías
- Administrador puede desactivar empresas sin documentos pendientes
- Logo de empresa se muestra en documentos (facturas, cotizaciones)
Entidades Involucradas
- Principales:
- core.companies (name, legal_name, tax_id, currency_id, parent_id, logo_url)
- core.partners (empresa también es partner)
- Relacionadas:
- core.countries (país de empresa)
- core.currencies (moneda principal)
Referencias
Notas Técnicas
- Patrón Odoo: res.company (empresa también es res.partner)
- Validación Tax ID: Regex por país (México RFC: 12-13 chars alfanumérico)
- Logo Storage:
- Desarrollo: file system local
- Producción: AWS S3 o similar
- Jerarquías: Visualización con tree view o organigrama D3.js
- Backend: NestJS CompaniesService
- Frontend: Formulario con tabs (General, Fiscal, Dirección)
Dependencias
- RF Dependientes:
- RF-MGN-001-001 (Autenticación)
- RF-MGN-003-001 (Partners - se crea automáticamente)
- RF-MGN-003-002 (Países)
- RF-MGN-003-003 (Monedas)
- Bloqueante para: RF-MGN-002-003 (Asignación usuarios a empresas)