Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Magus-Technologies/facturacion_ilidesava/llms.txt
Use this file to discover all available pages before exploring further.
Visión General
El sistema de facturación electrónica permite gestionar múltiples empresas desde una única instalación. Cada empresa puede tener sus propios usuarios, configuraciones, series de comprobantes y datos fiscales independientes.Modelo de Datos
Empresa
El modeloEmpresa representa una empresa registrada en el sistema:
app/Models/Empresa.php
Campos principales:
| Campo | Tipo | Descripción |
|---|---|---|
id_empresa | integer | Identificador único de la empresa (PK) |
ruc | string | RUC de la empresa |
razon_social | string | Razón social completa |
comercial | string | Nombre comercial |
direccion | string | Dirección fiscal |
email | string | Correo electrónico |
telefono | string | Teléfono principal |
user_sol | string | Usuario SOL para SUNAT |
clave_sol | string | Clave SOL para SUNAT |
logo | string | Ruta del logo de la empresa |
ubigeo | string | Código de ubigeo |
distrito | string | Distrito |
provincia | string | Provincia |
departamento | string | Departamento |
igv | decimal | Tasa de IGV (por defecto 18.00) |
estado | string | Estado de la empresa (1=activo, 0=inactivo) |
modo | string | Modo de operación (beta/producción) |
Relación con Usuarios
Cada usuario pertenece a una empresa específica a través del campoid_empresa en el modelo User:
Funcionamiento Multi-Empresa
Usuarios Administradores
Los usuarios conrol_id = 1 (Administradores) tienen privilegios especiales:
- Acceso a todas las empresas: Pueden ver y gestionar datos de cualquier empresa activa
- Cambio de empresa: Pueden cambiar de contexto entre empresas mediante el endpoint
switchEmpresa - Sin restricciones de permisos: Tienen acceso automático a todos los módulos
Usuarios Normales
Los usuarios con roles diferentes al administrador (rol_id != 1):
- Empresa fija: Solo pueden acceder a los datos de su empresa asignada (
id_empresa) - Permisos limitados: Sus acciones están controladas por el sistema de permisos
- Sin cambio de empresa: No pueden cambiar de contexto empresarial
Autenticación y Empresas
Login
Al iniciar sesión, el sistema retorna información sobre las empresas disponibles:- Admin (
rol_id = 1): Retorna todas las empresas activas (estado = '1') - Usuario normal: Retorna solo la empresa asignada al usuario
app/Http/Controllers/Api/AuthController.php:52-66
Cambiar de Empresa
Endpoint:POST /api/auth/switch-empresa
Parámetros:
- Solo disponible para usuarios administradores (
rol_id = 1) - La empresa debe existir y estar activa (
estado = '1') - Usuarios normales reciben error 403
app/Http/Controllers/Api/AuthController.php:169-204
Alcance de Datos por Empresa
Todas las tablas principales del sistema incluyen el campoid_empresa para filtrar datos por empresa:
- Ventas (
ventas.id_empresa) - Compras (
compras.id_empresa) - Productos (
producto.id_empresa) - Clientes (
cliente.id_empresa) - Proveedores (
proveedores.id_empresa) - Cotizaciones (
cotizaciones.id_empresa) - Guías de Remisión (
guias_remision.id_empresa) - Notas de Crédito/Débito (
notas_credito.id_empresa,notas_debito.id_empresa)
Ejemplo de Consulta
Archivos SUNAT por Empresa
Los archivos XML, CDR y certificados se almacenan organizados por RUC de empresa:config/sunat.php
Configuración de Empresa
Cada empresa puede tener configuraciones independientes:Credenciales SUNAT
- Usuario SOL:
user_sol- Usuario para webservices SUNAT - Clave SOL:
clave_sol- Contraseña para webservices SUNAT
Modo de Operación
- Beta: Para pruebas (usa RUC 20000000001)
- Producción: Para emisión real de comprobantes
Personalización
- Logo: Imagen que aparece en los comprobantes PDF
- Propaganda: Texto adicional para pie de comprobante
- Tipo de impresión: Configuración de formato de impresión
Endpoints de Empresas
Listar Empresas
Endpoint:GET /api/empresas
Respuesta:
Obtener Empresa
Endpoint:GET /api/empresas/{id}
Actualizar Empresa
Endpoint:POST /api/empresas/{id}
Nota: Usa POST en lugar de PUT/PATCH para soportar FormData con carga de logo.
Eliminar Logo
Endpoint:DELETE /api/empresas/{id}/logo
Mejores Prácticas
En Controladores
En Servicios
Validaciones
Consideraciones
Seguridad
- Aislamiento de datos: Cada empresa solo ve sus propios datos
- Validación estricta: Siempre verificar
id_empresaen consultas - Credenciales separadas: Cada empresa tiene sus propias credenciales SUNAT
Rendimiento
- Índices: Todas las tablas principales tienen índice en
id_empresa - Caché: Considerar cachear datos de empresa activa en sesión
Migración
- Si viene de un sistema mono-empresa, asegúrese de:
- Asignar
id_empresaa todos los registros existentes - Crear al menos una empresa en la tabla
empresas - Actualizar
id_empresaen usuarios existentes
- Asignar