# Informe de estructura de sisglobal

Base sisglobal · 152 tablas y 1 vista · 2046 columnas (incluye la vista) · 356 claves foráneas · 619 índices (incluye primarios y únicos).

Informe obtenido de information_schema en la base local el 2026-09-20T18:12:11-05:00. Documenta la estructura existente, sin exportar registros de usuarios, credenciales ni datos comerciales. Las descripciones funcionales se apoyan en los nombres, columnas y modelos/servicios del proyecto; el propósito no confirmado se indica expresamente.

## Cómo leerlo

PK identifica una fila. FK enlaza una columna hija con una clave de la tabla padre. UNIQUE evita valores repetidos o combinaciones repetidas; en MySQL un índice UNIQUE puede admitir varios NULL. INDEX es un índice secundario de búsqueda y no implica relación. NULL significa que el campo puede quedar sin valor; no equivale a texto vacío ni a cero. CASCADE elimina también las filas hijas al borrar el padre. SET NULL conserva la hija y vacía la referencia. RESTRICT / NO ACTION impiden borrar el padre mientras haya referencias. Estas reglas se refieren a borrados físicos; deleted_at corresponde a borrado lógico.

## Organización funcional

La organización parte de cuentas_clientes, que agrupa empresas y usuarios. empresa_user habilita la relación de varios usuarios con varias empresas. personas almacena terceros y clients amplía la información comercial del CRM. Las tareas del CRM están en tasks; la gestión operativa usa work_tasks. El maestro de empresas combina company_master_schemas (campos) y company_master_profiles (valores cifrados). Facturación, contabilidad y nómina conservan sus propias cabeceras y detalles.

Flujo de plantilla: work_task_templates → template_assignment_requests → task_configurations → work_tasks. La solicitud guarda una copia; la aprobación prepara configuraciones y la tarea operativa se crea al completar sus datos. Los usuarios asignados a una tarea están en work_task_assignees. Los pasos y sus responsables están dentro de work_tasks.checklist, y las etiquetas referenciadas dentro de label_ids. Los avisos guardados son registros separados de las fechas originales; los vencimientos del dashboard también se calculan desde tareas y maestro.

### CRM
- [activities](#activities): Historial de actividades del CRM con cliente, asesor, usuario, asunto, fecha y metadatos.
- [advisors](#advisors): Asesores del CRM vinculados a usuarios y empresas, código, cargo y estado.
- [audit_logs](#audit_logs): Auditoría del CRM: entidad afectada, acción, valores anteriores/nuevos y datos de acceso.
- [client_addresses](#client_addresses): Direcciones del cliente CRM, ubicación, tipo y marca de dirección principal.
- [client_assignments](#client_assignments): Historial de asignación de clientes CRM a asesores, fechas, responsable y motivo.
- [client_contacts](#client_contacts): Contactos de clientes CRM: nombres, cargo, correos, teléfonos y contacto principal.
- [client_documents](#client_documents): Documentos del cliente CRM: ruta, tipo, tamaño, observaciones y usuario que los subió.
- [clients](#clients): Ficha comercial CRM del cliente, vínculo con persona, asesor, etapa, oportunidad y seguimiento.
- [crm_notifications](#crm_notifications): Notificaciones del CRM por usuario y empresa: título, mensaje, tipo y fecha de lectura.
- [email_templates](#email_templates): Plantillas de correo del CRM por empresa, asunto, contenido y estado.
- [emails](#emails): Historial de correos CRM con destinatarios, contenido, adjuntos y resultado de envío.
- [pipeline_stages](#pipeline_stages): Etapas del proceso comercial CRM, orden, probabilidad y color.
- [tasks](#tasks): Tareas del CRM vinculadas a clientes y asesores, prioridad, estado y vencimiento; módulo distinto de work_tasks.

### Catálogos
- [actividades_economicas](#actividades_economicas): Catálogo de actividades económicas con código, descripción y estado.
- [cantones](#cantones): Catálogo de cantones con códigos de provincia y país.
- [paises](#paises): Catálogo de países con códigos ISO, nacionalidad y estado.
- [paises_tableclaear](#paises_tableclaear): Tabla de propósito no confirmado: solo contiene id y fechas de creación/actualización; no asumir que es el catálogo de países.
- [provincias](#provincias): Catálogo de provincias con código, país y estado.
- [tipos_contribuyentes](#tipos_contribuyentes): Catálogo de tipos de contribuyentes con código y descripción.

### Contabilidad
- [accounting_accounts](#accounting_accounts): Plan de cuentas contables por empresa: códigos, nombres, naturaleza, niveles y cuenta superior.
- [accounting_advance_applications](#accounting_advance_applications): Aplicaciones de anticipos a cuentas pendientes, con monto, fecha y asiento asociado.
- [accounting_advances](#accounting_advances): Anticipos de clientes o proveedores, identificación del tercero, cuenta financiera, monto original y saldo.
- [accounting_ats_exports](#accounting_ats_exports): Datos de exportaciones para el ATS: factura, países, régimen, transporte, aduana y valores.
- [accounting_ats_imports](#accounting_ats_imports): Datos de importaciones para el ATS: proveedor, comprobante, bases tributarias, retenciones y valores aduaneros.
- [accounting_ats_reimbursements](#accounting_ats_reimbursements): Comprobantes de reembolso asociados a documentos recibidos, proveedor y bases de impuestos.
- [accounting_ats_reports](#accounting_ats_reports): Reportes ATS por mes y empresa: totales, conciliación, estados, XML y responsables de revisión.
- [accounting_audit_logs](#accounting_audit_logs): Historial de acciones contables con empresa, asiento, usuario, datos de la acción e IP.
- [accounting_bank_reconciliations](#accounting_bank_reconciliations): Cabeceras de conciliación bancaria: período, saldos, diferencias, archivo importado y estado de cierre.
- [accounting_bank_statement_lines](#accounting_bank_statement_lines): Líneas del extracto bancario y su coincidencia con movimientos contables, confianza y estado.
- [accounting_bank_transfers](#accounting_bank_transfers): Transferencias entre cuentas financieras: origen, destino, monto, período, asiento y reversión.
- [accounting_budgets](#accounting_budgets): Presupuestos por empresa, cuenta contable, año, mes y centro de costo.
- [accounting_cash_sessions](#accounting_cash_sessions): Apertura y cierre de caja: responsables, saldo inicial, saldo contable, efectivo contado y diferencia.
- [accounting_cheques](#accounting_cheques): Cheques con cuenta financiera, cuenta pendiente, liquidación, número, monto y fechas de emisión/cobro.
- [accounting_concepts](#accounting_concepts): Catálogo de conceptos contables y sus cuentas principal y de impuestos.
- [accounting_cost_centers](#accounting_cost_centers): Catálogo de centros de costo, sucursal y estado activo por empresa.
- [accounting_entries](#accounting_entries): Cabeceras de asientos: fecha, período, número, concepto, totales debe/haber, origen, aprobación y reversión.
- [accounting_entry_attachments](#accounting_entry_attachments): Archivos adjuntos de asientos con ruta, nombre, usuario y huella SHA-256.
- [accounting_entry_lines](#accounting_entry_lines): Detalle del asiento por cuenta: debe, haber, descripción, tercero y centro de costo.
- [accounting_financial_accounts](#accounting_financial_accounts): Cuentas de caja y bancos vinculadas al plan contable: institución, número y estado.
- [accounting_integration_logs](#accounting_integration_logs): Resultados e intentos de integración de documentos con contabilidad y asiento generado.
- [accounting_integration_settings](#accounting_integration_settings): Mapeo de cuentas para ventas, compras, IVA, retenciones y contabilización automática por empresa.
- [accounting_inventory_movements](#accounting_inventory_movements): Movimientos de inventario contable: cantidades, valores, saldos, capas de costo y asiento.
- [accounting_inventory_positions](#accounting_inventory_positions): Existencias y valoración acumulada por artículo y empresa, con capas de costo y última fecha.
- [accounting_open_item_applications](#accounting_open_item_applications): Aplicaciones que afectan partidas pendientes, con origen, efecto, fecha, monto y estado.
- [accounting_open_item_settlements](#accounting_open_item_settlements): Cobros o pagos de partidas pendientes: medio, cuenta financiera, asiento y posible reversión.
- [accounting_open_items](#accounting_open_items): Cuentas por cobrar/pagar: tercero, documento, vencimiento, monto original, aplicado y saldo.
- [accounting_periods](#accounting_periods): Períodos contables por empresa, fechas de inicio/fin y datos del cierre.
- [accounting_received_document_lines](#accounting_received_document_lines): Productos o conceptos de documentos recibidos: cantidades, precios, descuentos e IVA.
- [accounting_received_documents](#accounting_received_documents): Comprobantes recibidos de proveedores, claves SRI, totales, sustento tributario y XML autorizado.
- [accounting_received_withholding_details](#accounting_received_withholding_details): Detalle de impuestos retenidos: código, base imponible, porcentaje y valor.
- [accounting_received_withholding_supports](#accounting_received_withholding_supports): Documentos de sustento de una retención recibida y posible factura relacionada.
- [accounting_received_withholdings](#accounting_received_withholdings): Cabeceras de retenciones recibidas: agente, sujeto retenido, período fiscal, totales y XML.
- [accounting_settings](#accounting_settings): Configuración contable por empresa: moneda, marco contable, inventario, cuentas y aprobaciones.
- [accounting_voucher_lines](#accounting_voucher_lines): Detalle de comprobantes contables de ingreso/egreso: conceptos, cuentas, bases e impuestos.
- [accounting_vouchers](#accounting_vouchers): Cabeceras de comprobantes de ingreso/egreso con tercero, cuenta financiera, totales y asiento.
- [accounting_year_closures](#accounting_year_closures): Cierres anuales y referencias a los asientos de cierre y apertura, resultado y responsable.

### Cuentas, empresas, usuarios y configuración
- [account_appearances](#account_appearances): Colores y logotipo personalizados de cada cuenta; usuario que realizó el cambio.
- [account_data_policy_defaults](#account_data_policy_defaults): Texto y versión de la política de datos predeterminada de la cuenta, documento y empresa responsable.
- [account_holidays](#account_holidays): Fechas festivas y nombres de los feriados por cuenta para el calendario laboral.
- [cuenta_cliente_modulo](#cuenta_cliente_modulo): Tabla puente que habilita módulos comerciales para cada cuenta cliente.
- [cuentas_clientes](#cuentas_clientes): Cuentas de clientes de la plataforma: nombre, código, estado y vigencia de licencia.
- [empresa_user](#empresa_user): Tabla puente que asocia usuarios con las empresas a las que pertenecen.
- [empresas](#empresas): Empresas administradas en cada cuenta: identificación tributaria, contacto y acceso al formulario/portal.
- [model_has_permissions](#model_has_permissions): Asignación directa de permisos a modelos mediante tipo de modelo e identificador.
- [model_has_roles](#model_has_roles): Asignación de roles a modelos mediante tipo de modelo e identificador.
- [modulo_plan](#modulo_plan): Tabla puente que define los módulos incluidos en cada plan comercial.
- [modulos_comerciales](#modulos_comerciales): Catálogo de módulos contratables con precios, icono, orden y estado.
- [permissions](#permissions): Catálogo de permisos de acceso y guard de autenticación.
- [personas](#personas): Maestro de personas/terceros por empresa: identidad, contacto, ubicación, datos tributarios y acceso a formularios.
- [planes](#planes): Planes de suscripción: precios, límites de empresas/usuarios y estado.
- [role_has_permissions](#role_has_permissions): Tabla puente que otorga permisos a cada rol.
- [roles](#roles): Catálogo de roles y guard de autenticación.
- [solicitudes_comerciales](#solicitudes_comerciales): Solicitudes de contratación: plan, periodicidad, importe, empresa/contacto y estado.
- [soporte_acceso_logs](#soporte_acceso_logs): Registro de eventos de acceso de soporte: autorización, administrador, ruta e IP.
- [soporte_autorizaciones](#soporte_autorizaciones): Autorizaciones temporales de soporte a una cuenta con motivo, vigencia y revocación.
- [suscripciones](#suscripciones): Suscripciones por cuenta y plan: periodicidad, estado, vigencia y renovación automática.
- [system_mail_configurations](#system_mail_configurations): Configuración de correo SMTP/OAuth global o por empresa/cuenta y estado de recepción.
- [user_hierarchy_audits](#user_hierarchy_audits): Historial de cambios de jerarquía de usuarios, actor, datos antes/después e IP.
- [users](#users): Usuarios de acceso: cuenta, empresa principal, jerarquía, identidad, perfil y preferencias de interfaz.

### Facturación e inventario
- [comprobante_detalles](#comprobante_detalles): Líneas de comprobantes electrónicos, productos, impuestos, retenciones y documentos de sustento.
- [comprobantes_electronicos](#comprobantes_electronicos): Cabeceras de comprobantes electrónicos distintos o relacionados con facturas: totales, transporte, XML y estados SRI.
- [documentos_electronicos_admin](#documentos_electronicos_admin): Vista SQL de consulta que reúne facturas y comprobantes_electronicos mediante UNION ALL. No guarda filas propias ni admite actualización directa; source_type/source_id identifican el origen y source_key distingue los registros.
- [factura_campos_adicionales](#factura_campos_adicionales): Pares nombre/descripción adicionales de cada factura.
- [factura_detalles](#factura_detalles): Productos o servicios facturados: cantidades, precios, descuentos, IVA y totales de línea.
- [factura_pagos](#factura_pagos): Formas de pago de una factura, monto, plazo y unidad de tiempo.
- [facturacion_configuraciones](#facturacion_configuraciones): Parámetros de facturación SRI por empresa, ambiente, establecimiento y certificado de firma.
- [facturacion_correo_envios](#facturacion_correo_envios): Seguimiento de envío por correo de documentos facturados, intentos y errores.
- [facturacion_inventario_movimientos](#facturacion_inventario_movimientos): Movimientos de existencias derivados de facturas y comprobantes electrónicos.
- [facturacion_puntos_emision](#facturacion_puntos_emision): Establecimientos y puntos de emisión, dirección y secuenciales por tipo de comprobante.
- [facturas](#facturas): Cabeceras de facturas: comprador, numeración, totales, XML, autorización SRI y anulación.
- [inventario_carga_detalles](#inventario_carga_detalles): Filas de cargas de inventario: valores importados, validación, errores y datos originales.
- [inventario_cargas](#inventario_cargas): Cabeceras de importación de inventario: archivo, estado, cantidades, totales y errores.
- [inventarios](#inventarios): Catálogo/existencias de artículos y vehículos: código, cantidades, precios y características.
- [iva_tarifas](#iva_tarifas): Tarifas de IVA por empresa, códigos, porcentaje y vigencia.
- [servicios](#servicios): Catálogo de servicios facturables con códigos, precio, IVA e ICE.
- [xml_sri_importaciones](#xml_sri_importaciones): Archivos XML importados: origen, tipo, clave de acceso, procesamiento y respuestas SRI.

### Formularios y políticas de datos
- [company_data_acceptances](#company_data_acceptances): Evidencias de aceptación de políticas de datos: versión, texto, persona, fechas, IP y huellas.
- [company_data_policies](#company_data_policies): Política de tratamiento de datos por empresa, versión, documento y responsable.
- [company_portal_consents](#company_portal_consents): Aceptación de condiciones del portal por empresa: versión, evidencia y fecha.
- [legal_client_forms](#legal_client_forms): Formularios de personas jurídicas: datos, documentos, aceptación, verificación y firma por año.
- [natural_client_forms](#natural_client_forms): Formularios de personas naturales: datos, declaraciones, firma, año y estado de envío.
- [proveedor_pn_formularios](#proveedor_pn_formularios): Formularios de proveedores personas naturales con actividad, finanzas, documentos y firma.

### Gestión de tareas
- [task_configurations](#task_configurations): Tareas aprobadas o asignadas desde plantilla pendientes de completar; definición copiada y vínculo con la tarea activada.
- [task_labels](#task_labels): Etiquetas de tareas por cuenta con nombre, color, estado y marca de trabajo extra.
- [task_mail_message_links](#task_mail_message_links): Vínculos entre mensajes identificados por hash, configuración de correo e hilo de tarea.
- [task_mail_receipts](#task_mail_receipts): Control de mensajes recibidos por configuración/hash para evitar procesamientos duplicados.
- [task_mail_threads](#task_mail_threads): Hilos de correo asociados a un aviso de tarea y configuración de correo, con token.
- [task_reopen_requests](#task_reopen_requests): Solicitudes de reapertura de tareas con solicitante, motivo, estado y decisión del revisor.
- [task_time_sessions](#task_time_sessions): Sesiones de tiempo trabajado por usuario y tarea, inicio, fin y segundos.
- [template_assignment_requests](#template_assignment_requests): Solicitudes de asignar plantillas: empresa, solicitante, definición copiada, revisión y tareas resultantes.
- [work_task_activities](#work_task_activities): Actividad de una tarea: comentarios, evidencias, adjuntos, tiempo y cambios registrados.
- [work_task_assignees](#work_task_assignees): Tabla puente que relaciona cada tarea operativa con sus usuarios asignados.
- [work_task_audits](#work_task_audits): Auditoría de gestión de tareas: entidad, acción, actor y valores antes/después cifrados.
- [work_task_batches](#work_task_batches): Lotes de asignación desde plantilla con huella para evitar duplicación y cantidad de elementos.
- [work_task_capacities](#work_task_capacities): Capacidad semanal en horas configurada para cada usuario.
- [work_task_notices](#work_task_notices): Avisos de tareas operativas por destinatario y evento, texto, lectura y envío de correo.
- [work_task_settings](#work_task_settings): Reglas de tareas por empresa: anticipación de avisos, revisión y correo habilitado.
- [work_task_supervisors](#work_task_supervisors): Tabla puente que asigna usuarios supervisores a empresas para gestión de tareas.
- [work_task_templates](#work_task_templates): Plantillas reutilizables por cuenta: nombre y definiciones de tareas/pasos en items.
- [work_tasks](#work_tasks): Tareas operativas activadas: empresa, responsable, fechas, avance, repetición, etiquetas, pasos y correcciones.

### Infraestructura
- [cache](#cache): Valores temporales de caché de la aplicación y su expiración.
- [cache_locks](#cache_locks): Bloqueos temporales de caché con propietario y expiración para coordinar procesos.
- [exports](#exports): Control de exportaciones de datos: archivo, clase exportadora, usuario y filas procesadas.
- [failed_jobs](#failed_jobs): Trabajos de cola fallidos con carga serializada, excepción y fecha del fallo.
- [job_batches](#job_batches): Lotes de trabajos en segundo plano: cantidad, pendientes, fallidos y finalización.
- [jobs](#jobs): Cola de trabajos pendientes: carga serializada, intentos y tiempos de disponibilidad/reserva.
- [migrations](#migrations): Registro técnico de migraciones de esquema ejecutadas y lote de ejecución.
- [password_reset_tokens](#password_reset_tokens): Tokens de recuperación de contraseña vinculados al correo y fecha de creación.
- [sessions](#sessions): Sesiones de acceso: usuario, IP, navegador, contenido serializado y última actividad.

### Maestro de clientes y vencimientos
- [company_master_activities](#company_master_activities): Registro de acciones y campos afectados en el maestro de clientes por empresa y usuario.
- [company_master_approvals](#company_master_approvals): Solicitudes de cambios del maestro: valores antes/después cifrados, estado y revisión.
- [company_master_invitations](#company_master_invitations): Invitaciones al maestro mediante hash de token, destinatario, caducidad, uso o revocación.
- [company_master_profiles](#company_master_profiles): Valores del maestro de cada empresa guardados como un arreglo cifrado y versionado.
- [company_master_schemas](#company_master_schemas): Definición de campos dinámicos del maestro por cuenta y versión del esquema.
- [company_permit_notices](#company_permit_notices): Avisos de permisos/vencimientos del maestro: empresa, campo, fecha, destinatario, canal y estado.
- [form_completion_notices](#form_completion_notices): Avisos de formularios completados: empresa, usuario, evento, destinatario y fecha de envío.

### Recursos humanos
- [hr_accounting_entries](#hr_accounting_entries): Líneas de asiento derivadas de nómina por período, huella de control y responsable.
- [hr_adjustments](#hr_adjustments): Ajustes a roles de pago: líneas, neto en centavos, motivo, estado y liquidación.
- [hr_annual_records](#hr_annual_records): Registros anuales de recursos humanos con tipo, clave y copia de datos del momento.
- [hr_attendance](#hr_attendance): Asistencia diaria: empleado, entrada, salida, descanso, tipo y justificación.
- [hr_audits](#hr_audits): Auditoría de recursos humanos por empresa, usuario, acción, objeto y datos.
- [hr_benefit_payments](#hr_benefit_payments): Pagos de beneficios laborales por empleado y período, monto en centavos y cálculo guardado.
- [hr_contracts](#hr_contracts): Condiciones laborales vigentes desde una fecha: salario en centavos, cargo, región y beneficios.
- [hr_documents](#hr_documents): Documentos del empleado con ruta, nombre original y huella SHA-256.
- [hr_employees](#hr_employees): Ficha del empleado: identificación, contacto, fechas laborales y datos bancarios cifrados.
- [hr_leaves](#hr_leaves): Permisos o ausencias de empleados con rango de fechas, tipo, motivo, estado y revisor.
- [hr_loans](#hr_loans): Préstamos a empleados: capital y cuota en centavos, primer mes y referencia.
- [hr_mail_deliveries](#hr_mail_deliveries): Envíos por correo de roles de pago: destinatario, estado, error y fecha.
- [hr_novelties](#hr_novelties): Novedades de nómina por período/empleado: fecha, tipo, cantidad y razón.
- [hr_parameter_versions](#hr_parameter_versions): Parámetros de nómina por empresa y año con fuente y versión guardada.
- [hr_payslips](#hr_payslips): Roles de pago por empleado/período: cálculo guardado, neto en centavos y datos del pago.
- [hr_periods](#hr_periods): Períodos de nómina: mes, estado, revisión, parámetros, neto y aprobación/cierre.
- [hr_tax_projections](#hr_tax_projections): Proyecciones tributarias de empleados por año, datos del cálculo y responsable.

## Referencias lógicas y datos embebidos

|Origen|Campo/ruta|Destino|Clave|Explicación|
|---|---|---|---|---|
|company_master_approvals|empresa_id|empresas|id|Empresa cuyos cambios se solicitan; UserTasks consulta las solicitudes por empresa.|
|company_master_approvals|requested_by / reviewed_by|users|id|Solicitante y revisor; no son restricciones FK en MySQL.|
|company_master_profiles|values → claves de campos|company_master_schemas|fields|Las claves del perfil cifrado se interpretan con la definición de campos de la cuenta.|
|work_tasks|label_ids[]|task_labels|id|Lista JSON consultada por WorkTask::coloredLabels(); no existe tabla puente de etiquetas.|
|work_tasks|checklist[].assignee_id|users|id|Responsable de cada paso en JSON; la aplicación valida que pertenezca a los asignados.|
|work_tasks|batch_id|work_task_batches|id|Identificador del lote de asignación; sin FK declarada.|
|task_configurations|batch_id|work_task_batches|id|Lote de preparación de tareas; sin FK declarada.|
|task_configurations|assignees[]|users|id|Usuarios previstos antes de activar la tarea; lista JSON validada por el servicio.|
|template_assignment_requests|task_ids[]|work_tasks|id|Lista JSON de tareas activadas desde la solicitud.|
|work_task_audits|entity + entity_id|Según entity|Identificador de entidad|Referencia de auditoría por tipo de entidad, sin FK única a una tabla.|
|audit_logs|auditable_type + auditable_id|Según auditable_type|Identificador de entidad|Referencia de auditoría dependiente del tipo de entidad.|
|model_has_roles|model_type + model_id|Según model_type|id|Asignación polimórfica: el tipo identifica el modelo, usualmente User.|
|model_has_permissions|model_type + model_id|Según model_type|id|Asignación polimórfica de permisos directos.|
|accounting_entries|source_type + source_id|Según source_type|Identificador de origen|La tabla destino depende del tipo de documento/origen; no hay FK fija para source_id.|
|accounting_integration_logs|source_type + source_id|Según source_type|Identificador de origen|La tabla destino depende del tipo de documento/origen; no hay FK fija para source_id.|
|accounting_open_item_applications|source_type + source_id|Según source_type|Identificador de origen|La tabla destino depende del tipo de documento/origen; no hay FK fija para source_id.|
|accounting_open_items|source_type + source_id|Según source_type|Identificador de origen|La tabla destino depende del tipo de documento/origen; no hay FK fija para source_id.|
|documentos_electronicos_admin|source_type + source_id|Según source_type|Identificador de origen|La tabla destino depende del tipo de documento/origen; no hay FK fija para source_id.|
|facturacion_correo_envios|source_type + source_id|Según source_type|Identificador de origen|La tabla destino depende del tipo de documento/origen; no hay FK fija para source_id.|


## account_appearances

Colores y logotipo personalizados de cada cuenta; usuario que realizó el cambio.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|account_appearances_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|CASCADE|NO ACTION|
|account_appearances_updated_by_foreign|updated_by|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|account_appearances_cuenta_cliente_id_unique|UNIQUE|cuenta_cliente_id|BTREE|
|account_appearances_updated_by_foreign|INDEX|updated_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de cuenta cliente.|
|colors|json|No|NULL / sin valor explícito|—|—|—|
|logo_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|updated_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario que actualizó.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## account_data_policy_defaults

Texto y versión de la política de datos predeterminada de la cuenta, documento y empresa responsable.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|account_data_policy_defaults_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|RESTRICT|NO ACTION|
|account_data_policy_defaults_responsible_company_id_foreign|responsible_company_id|empresas.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|account_data_policy_defaults_cuenta_cliente_id_unique|UNIQUE|cuenta_cliente_id|BTREE|
|account_data_policy_defaults_responsible_company_id_foreign|INDEX|responsible_company_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de cuenta cliente.|
|body|text|No|NULL / sin valor explícito|—|—|—|
|version|char(36)|No|NULL / sin valor explícito|—|—|Versión del registro o de su estructura.|
|document_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|responsible_company_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|responsible_company_name|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|responsible_company_ruc|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## account_holidays

Fechas festivas y nombres de los feriados por cuenta para el calendario laboral.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|account_holidays_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|account_holidays_cuenta_cliente_id_date_unique|UNIQUE|cuenta_cliente_id, date|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de cuenta cliente.|
|date|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|name|varchar(150)|No|NULL / sin valor explícito|—|—|Nombre.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_accounts

Plan de cuentas contables por empresa: códigos, nombres, naturaleza, niveles y cuenta superior.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_accounts_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_accounts_parent_id_foreign|parent_id|accounting_accounts.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_accounts|parent_id|id|RESTRICT|
|accounting_advances|account_id|id|RESTRICT|
|accounting_budgets|account_id|id|RESTRICT|
|accounting_concepts|account_id|id|RESTRICT|
|accounting_concepts|tax_account_id|id|RESTRICT|
|accounting_entry_lines|account_id|id|RESTRICT|
|accounting_financial_accounts|account_id|id|RESTRICT|
|accounting_integration_settings|accounts_payable_id|id|RESTRICT|
|accounting_integration_settings|accounts_receivable_id|id|RESTRICT|
|accounting_integration_settings|input_vat_id|id|RESTRICT|
|accounting_integration_settings|output_vat_id|id|RESTRICT|
|accounting_integration_settings|purchases_expense_id|id|RESTRICT|
|accounting_integration_settings|sales_income_id|id|RESTRICT|
|accounting_integration_settings|sales_returns_id|id|RESTRICT|
|accounting_integration_settings|income_tax_withholding_payable_id|id|RESTRICT|
|accounting_integration_settings|income_tax_withholding_receivable_id|id|RESTRICT|
|accounting_integration_settings|purchase_returns_id|id|RESTRICT|
|accounting_integration_settings|vat_withholding_payable_id|id|RESTRICT|
|accounting_integration_settings|vat_withholding_receivable_id|id|RESTRICT|
|accounting_settings|cogs_account_id|id|RESTRICT|
|accounting_settings|customer_advance_account_id|id|RESTRICT|
|accounting_settings|inventory_account_id|id|RESTRICT|
|accounting_settings|result_account_id|id|RESTRICT|
|accounting_settings|supplier_advance_account_id|id|RESTRICT|
|accounting_voucher_lines|account_id|id|RESTRICT|
|accounting_voucher_lines|tax_account_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_accounts_empresa_id_codigo_unique|UNIQUE|empresa_id, codigo|BTREE|
|accounting_accounts_empresa_id_tipo_activo_index|INDEX|empresa_id, tipo, activo|BTREE|
|accounting_accounts_parent_id_foreign|INDEX|parent_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|parent_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|codigo|varchar(40)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|nombre|varchar(180)|No|NULL / sin valor explícito|—|—|Nombre.|
|tipo|enum('ACTIVO','PASIVO','PATRIMONIO','INGRESO','COSTO','GASTO','ORDEN')|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|naturaleza|enum('DEUDORA','ACREEDORA')|No|NULL / sin valor explícito|—|—|—|
|nivel|tinyint unsigned|No|1|—|—|—|
|acepta_movimientos|tinyint(1)|No|1|—|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|codigo_reporte|varchar(40)|Sí|NULL / sin valor explícito|—|—|—|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_advance_applications

Aplicaciones de anticipos a cuentas pendientes, con monto, fecha y asiento asociado.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_advance_applications_advance_id_foreign|advance_id|accounting_advances.id|RESTRICT|NO ACTION|
|accounting_advance_applications_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_advance_applications_entry_id_foreign|entry_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_advance_applications_open_item_id_foreign|open_item_id|accounting_open_items.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_advance_applications_advance_id_foreign|INDEX|advance_id|BTREE|
|accounting_advance_applications_empresa_id_referencia_unique|UNIQUE|empresa_id, referencia|BTREE|
|accounting_advance_applications_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_advance_applications_open_item_id_foreign|INDEX|open_item_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|advance_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|open_item_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|fecha|date|No|NULL / sin valor explícito|—|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|referencia|varchar(120)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|estado|varchar(255)|No|APLICADA|—|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_advances

Anticipos de clientes o proveedores, identificación del tercero, cuenta financiera, monto original y saldo.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_advances_account_id_foreign|account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_advances_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|accounting_advances_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_advances_entry_id_foreign|entry_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_advances_financial_account_id_foreign|financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_advance_applications|advance_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_advances_account_id_foreign|INDEX|account_id|BTREE|
|accounting_advances_created_by_foreign|INDEX|created_by|BTREE|
|accounting_advances_empresa_id_tipo_referencia_unique|UNIQUE|empresa_id, tipo, referencia|BTREE|
|accounting_advances_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_advances_financial_account_id_foreign|INDEX|financial_account_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|tipo|varchar(3)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|tercero_identificacion|varchar(30)|No|NULL / sin valor explícito|—|—|—|
|tercero_nombre|varchar(180)|No|NULL / sin valor explícito|—|—|—|
|financial_account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|fecha|date|No|NULL / sin valor explícito|—|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|saldo|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|referencia|varchar(120)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|estado|varchar(255)|No|VIGENTE|—|—|Estado del registro en su proceso.|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_ats_exports

Datos de exportaciones para el ATS: factura, países, régimen, transporte, aduana y valores.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_ats_exports_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_ats_exports_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_ats_exports_factura_id_foreign|factura_id|facturas.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_ats_exports_created_by_foreign|INDEX|created_by|BTREE|
|accounting_ats_exports_factura_id_foreign|INDEX|factura_id|BTREE|
|ats_exports_company_date_status_idx|INDEX|empresa_id, fecha_embarque, estado|BTREE|
|ats_exports_company_invoice_idx|INDEX|empresa_id, factura_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|factura_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, INDEX compuesto, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|tp_id_cliente_ex|varchar(2)|No|21|—|—|—|
|parte_relacionada|tinyint(1)|No|0|—|—|—|
|tipo_regimen|varchar(2)|No|01|—|—|—|
|pais_pago_general|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|pais_pago_paraiso|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|denominacion_regimen|varchar(500)|Sí|NULL / sin valor explícito|—|—|—|
|pais_exportacion|varchar(3)|No|NULL / sin valor explícito|—|—|—|
|pago_regimen_fiscal|tinyint(1)|No|0|—|—|—|
|exportacion_de|varchar(2)|No|NULL / sin valor explícito|—|—|—|
|tipo_ingreso_exterior|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|ingreso_gravado_otro_pais|tinyint(1)|No|0|—|—|—|
|impuesto_otro_pais|decimal(20,2)|No|0.00|—|—|—|
|distrito_aduanero|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|anio_refrendo|smallint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|regimen_aduanero|varchar(2)|Sí|NULL / sin valor explícito|—|—|—|
|correlativo|varchar(8)|Sí|NULL / sin valor explícito|—|—|—|
|verificador|varchar(1)|Sí|NULL / sin valor explícito|—|—|—|
|documento_transporte|varchar(13)|Sí|NULL / sin valor explícito|—|—|—|
|fecha_embarque|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|fue|varchar(13)|Sí|NULL / sin valor explícito|—|—|—|
|valor_fob|decimal(20,2)|No|NULL / sin valor explícito|—|—|—|
|valor_comprobante|decimal(20,2)|No|NULL / sin valor explícito|—|—|—|
|estado|enum('BORRADOR','CONFIRMADO')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_ats_imports

Datos de importaciones para el ATS: proveedor, comprobante, bases tributarias, retenciones y valores aduaneros.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_ats_imports_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_ats_imports_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_ats_imports_entry_id_foreign|entry_id|accounting_entries.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_ats_imports_created_by_foreign|INDEX|created_by|BTREE|
|accounting_ats_imports_entry_id_foreign|INDEX|entry_id|BTREE|
|ats_imports_company_date_status_idx|INDEX|empresa_id, fecha_registro, estado|BTREE|
|ats_imports_company_document_uq|UNIQUE|empresa_id, numero_documento|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, UNIQUE compuesto, FK|—|Identificador de empresa.|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|tipo_importacion|enum('BIENES','SERVICIOS','SERVICIO_DIGITAL')|No|BIENES|—|—|—|
|ats_sustento_codigo|varchar(2)|No|01|—|—|—|
|proveedor_identificacion|varchar(13)|No|NULL / sin valor explícito|—|—|—|
|proveedor_nombre|varchar(500)|No|NULL / sin valor explícito|—|—|—|
|parte_relacionada|tinyint(1)|No|0|—|—|—|
|tipo_comprobante|varchar(3)|No|15|—|—|—|
|numero_documento|varchar(120)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|establecimiento|varchar(3)|No|000|—|—|—|
|punto_emision|varchar(3)|No|000|—|—|—|
|secuencial|varchar(9)|No|NULL / sin valor explícito|—|—|—|
|autorizacion|varchar(49)|Sí|NULL / sin valor explícito|—|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|—|—|—|
|fecha_registro|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|base_no_grava_iva|decimal(20,2)|No|0.00|—|—|—|
|base_iva_cero|decimal(20,2)|No|0.00|—|—|—|
|base_iva_gravada|decimal(20,2)|No|0.00|—|—|—|
|base_iva_exenta|decimal(20,2)|No|0.00|—|—|—|
|monto_ice|decimal(20,2)|No|0.00|—|—|—|
|monto_iva|decimal(20,2)|No|0.00|—|—|—|
|tipo_regimen|varchar(2)|No|01|—|—|—|
|pais_pago_general|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|pais_pago_paraiso|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|denominacion_regimen|varchar(500)|Sí|NULL / sin valor explícito|—|—|—|
|pais_pago|varchar(3)|No|NULL / sin valor explícito|—|—|—|
|aplica_convenio_doble_tributacion|tinyint(1)|No|0|—|—|—|
|pago_sujeto_retencion|tinyint(1)|No|0|—|—|—|
|pago_regimen_fiscal|tinyint(1)|No|0|—|—|—|
|formas_pago|json|Sí|NULL / sin valor explícito|—|—|—|
|codigo_retencion_renta|varchar(10)|Sí|NULL / sin valor explícito|—|—|—|
|base_retencion_renta|decimal(20,2)|No|0.00|—|—|—|
|porcentaje_retencion_renta|decimal(8,4)|No|0.0000|—|—|—|
|valor_retencion_renta|decimal(20,2)|No|0.00|—|—|—|
|dai_numero|varchar(40)|Sí|NULL / sin valor explícito|—|—|—|
|distrito_aduanero|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|anio_refrendo|smallint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|regimen_aduanero|varchar(2)|Sí|NULL / sin valor explícito|—|—|—|
|correlativo|varchar(8)|Sí|NULL / sin valor explícito|—|—|—|
|fecha_liquidacion_aduanera|date|Sí|NULL / sin valor explícito|—|—|—|
|valor_fob|decimal(20,2)|No|0.00|—|—|—|
|flete|decimal(20,2)|No|0.00|—|—|—|
|seguro|decimal(20,2)|No|0.00|—|—|—|
|valor_cif|decimal(20,2)|No|0.00|—|—|—|
|aranceles|decimal(20,2)|No|0.00|—|—|—|
|fodinfa|decimal(20,2)|No|0.00|—|—|—|
|iva_aduana|decimal(20,2)|No|0.00|—|—|—|
|estado|enum('BORRADOR','CONFIRMADO')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_ats_reimbursements

Comprobantes de reembolso asociados a documentos recibidos, proveedor y bases de impuestos.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_ats_reimbursements_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_ats_reimbursements_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_ats_reimbursements_received_document_id_foreign|received_document_id|accounting_received_documents.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_ats_reimbursements_created_by_foreign|INDEX|created_by|BTREE|
|accounting_ats_reimbursements_received_document_id_foreign|INDEX|received_document_id|BTREE|
|ats_reimbursements_company_auth_uq|UNIQUE|empresa_id, autorizacion|BTREE|
|ats_reimbursements_parent_status_idx|INDEX|empresa_id, received_document_id, estado|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|received_document_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, INDEX compuesto, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|tipo_comprobante|varchar(3)|No|NULL / sin valor explícito|—|—|—|
|tipo_identificacion_proveedor|varchar(2)|No|01|—|—|—|
|proveedor_identificacion|varchar(13)|No|NULL / sin valor explícito|—|—|—|
|proveedor_nombre|varchar(500)|Sí|NULL / sin valor explícito|—|—|—|
|establecimiento|varchar(3)|No|NULL / sin valor explícito|—|—|—|
|punto_emision|varchar(3)|No|NULL / sin valor explícito|—|—|—|
|secuencial|varchar(9)|No|NULL / sin valor explícito|—|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|—|—|—|
|autorizacion|varchar(49)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|base_iva_cero|decimal(20,2)|No|0.00|—|—|—|
|base_iva_gravada|decimal(20,2)|No|0.00|—|—|—|
|base_no_grava_iva|decimal(20,2)|No|0.00|—|—|—|
|base_iva_exenta|decimal(20,2)|No|0.00|—|—|—|
|monto_ice|decimal(20,2)|No|0.00|—|—|—|
|monto_iva|decimal(20,2)|No|0.00|—|—|—|
|estado|enum('BORRADOR','CONFIRMADO')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_ats_reports

Reportes ATS por mes y empresa: totales, conciliación, estados, XML y responsables de revisión.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_ats_reports_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_ats_reports_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_ats_reports_reconciled_by_foreign|reconciled_by|users.id|SET NULL|NO ACTION|
|accounting_ats_reports_reviewed_by_foreign|reviewed_by|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_ats_company_period_uq|UNIQUE|empresa_id, anio, mes|BTREE|
|accounting_ats_company_status_idx|INDEX|empresa_id, estado, anio, mes|BTREE|
|accounting_ats_reports_created_by_foreign|INDEX|created_by|BTREE|
|accounting_ats_reports_reconciled_by_foreign|INDEX|reconciled_by|BTREE|
|accounting_ats_reports_reviewed_by_foreign|INDEX|reviewed_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|reviewed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario revisor.|
|reconciled_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|anio|smallint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto|—|—|
|mes|tinyint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto|—|—|
|numero_establecimientos|smallint unsigned|No|1|—|—|—|
|estado|enum('BORRADOR','VALIDADO','OBSERVADO')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|estado_conciliacion|enum('PENDIENTE','CUADRADO','DIFERENCIAS')|No|PENDIENTE|—|—|—|
|total_compras|int unsigned|No|0|—|—|—|
|total_ventas|int unsigned|No|0|—|—|—|
|total_exportaciones|int unsigned|No|0|—|—|—|
|total_importaciones|int unsigned|No|0|—|—|—|
|total_reembolsos|int unsigned|No|0|—|—|—|
|total_anulados|int unsigned|No|0|—|—|—|
|valor_compras|decimal(20,2)|No|0.00|—|—|—|
|valor_ventas|decimal(20,2)|No|0.00|—|—|—|
|valor_exportaciones|decimal(20,2)|No|0.00|—|—|—|
|valor_importaciones|decimal(20,2)|No|0.00|—|—|—|
|valor_reembolsos|decimal(20,2)|No|0.00|—|—|—|
|iva_compras|decimal(20,2)|No|0.00|—|—|—|
|iva_ventas|decimal(20,2)|No|0.00|—|—|—|
|declaracion_base_ventas|decimal(20,2)|Sí|NULL / sin valor explícito|—|—|—|
|declaracion_base_compras|decimal(20,2)|Sí|NULL / sin valor explícito|—|—|—|
|declaracion_iva_ventas|decimal(20,2)|Sí|NULL / sin valor explícito|—|—|—|
|declaracion_iva_compras|decimal(20,2)|Sí|NULL / sin valor explícito|—|—|—|
|observaciones|json|Sí|NULL / sin valor explícito|—|—|—|
|conciliacion|json|Sí|NULL / sin valor explícito|—|—|—|
|xml|longtext|Sí|NULL / sin valor explícito|—|—|—|
|generated_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|reconciled_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|reviewed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_audit_logs

Historial de acciones contables con empresa, asiento, usuario, datos de la acción e IP.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_audit_logs_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_audit_logs_entry_id_foreign|entry_id|accounting_entries.id|SET NULL|NO ACTION|
|accounting_audit_logs_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_audit_logs_empresa_id_created_at_index|INDEX|empresa_id, created_at|BTREE|
|accounting_audit_logs_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_audit_logs_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|accion|varchar(40)|No|NULL / sin valor explícito|—|—|—|
|datos|json|Sí|NULL / sin valor explícito|—|—|—|
|ip|varchar(45)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_bank_reconciliations

Cabeceras de conciliación bancaria: período, saldos, diferencias, archivo importado y estado de cierre.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_bank_reconciliations_closed_by_foreign|closed_by|users.id|SET NULL|NO ACTION|
|accounting_bank_reconciliations_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_bank_reconciliations_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_bank_reconciliations_financial_account_id_foreign|financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_bank_statement_lines|reconciliation_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_bank_reconciliation_period_uq|UNIQUE|financial_account_id, fecha_desde, fecha_hasta|BTREE|
|accounting_bank_reconciliation_status_idx|INDEX|empresa_id, estado, fecha_hasta|BTREE|
|accounting_bank_reconciliations_closed_by_foreign|INDEX|closed_by|BTREE|
|accounting_bank_reconciliations_created_by_foreign|INDEX|created_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|financial_account_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|closed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|nombre|varchar(120)|No|NULL / sin valor explícito|—|—|Nombre.|
|fecha_desde|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|fecha_hasta|date|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto|—|—|
|saldo_inicial_banco|decimal(20,4)|No|0.0000|—|—|—|
|saldo_final_banco|decimal(20,4)|No|0.0000|—|—|—|
|saldo_inicial_libros|decimal(20,4)|No|0.0000|—|—|—|
|saldo_final_libros|decimal(20,4)|No|0.0000|—|—|—|
|saldo_ajustado_banco|decimal(20,4)|No|0.0000|—|—|—|
|saldo_ajustado_libros|decimal(20,4)|No|0.0000|—|—|—|
|diferencia|decimal(20,4)|No|0.0000|—|—|—|
|total_lineas|int unsigned|No|0|—|—|—|
|lineas_conciliadas|int unsigned|No|0|—|—|—|
|lineas_pendientes|int unsigned|No|0|—|—|—|
|lineas_excluidas|int unsigned|No|0|—|—|—|
|archivo_nombre|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|archivo_path|varchar(500)|Sí|NULL / sin valor explícito|—|—|—|
|archivo_hash|char(64)|Sí|NULL / sin valor explícito|—|—|—|
|resumen|json|Sí|NULL / sin valor explícito|—|—|—|
|observaciones|text|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('BORRADOR','EN_REVISION','CERRADA')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|imported_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|closed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_bank_statement_lines

Líneas del extracto bancario y su coincidencia con movimientos contables, confianza y estado.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_bank_statement_lines_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_bank_statement_lines_matched_by_foreign|matched_by|users.id|SET NULL|NO ACTION|
|accounting_bank_statement_lines_matched_entry_line_id_foreign|matched_entry_line_id|accounting_entry_lines.id|RESTRICT|NO ACTION|
|accounting_bank_statement_lines_reconciliation_id_foreign|reconciliation_id|accounting_bank_reconciliations.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_bank_statement_entry_line_uq|UNIQUE|matched_entry_line_id|BTREE|
|accounting_bank_statement_line_hash_uq|UNIQUE|reconciliation_id, line_hash|BTREE|
|accounting_bank_statement_lines_matched_by_foreign|INDEX|matched_by|BTREE|
|accounting_bank_statement_status_idx|INDEX|empresa_id, estado, fecha|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|reconciliation_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|matched_entry_line_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE, FK|—|—|
|matched_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|fecha|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|fecha_valor|date|Sí|NULL / sin valor explícito|—|—|—|
|referencia|varchar(160)|Sí|NULL / sin valor explícito|—|—|—|
|descripcion|varchar(500)|No|NULL / sin valor explícito|—|—|Descripción.|
|tipo|enum('CREDITO','DEBITO')|No|NULL / sin valor explícito|—|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|identificador_banco|varchar(160)|Sí|NULL / sin valor explícito|—|—|—|
|line_hash|char(64)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|estado|enum('PENDIENTE','CONCILIADA','EXCLUIDA')|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|coincidencia_manual|tinyint(1)|No|0|—|—|—|
|confianza|tinyint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|observacion|text|Sí|NULL / sin valor explícito|—|—|—|
|matched_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_bank_transfers

Transferencias entre cuentas financieras: origen, destino, monto, período, asiento y reversión.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_bank_transfers_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_bank_transfers_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_bank_transfers_entry_id_foreign|entry_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_bank_transfers_period_id_foreign|period_id|accounting_periods.id|RESTRICT|NO ACTION|
|accounting_bank_transfers_posted_by_foreign|posted_by|users.id|SET NULL|NO ACTION|
|accounting_bank_transfers_reversed_by_foreign|reversed_by|users.id|SET NULL|NO ACTION|
|accounting_bank_transfers_source_financial_account_id_foreign|source_financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|
|accounting_bank_transfers_target_financial_account_id_foreign|target_financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_bank_transfers_created_by_foreign|INDEX|created_by|BTREE|
|accounting_bank_transfers_entry_uq|UNIQUE|entry_id|BTREE|
|accounting_bank_transfers_number_uq|UNIQUE|empresa_id, numero|BTREE|
|accounting_bank_transfers_period_id_foreign|INDEX|period_id|BTREE|
|accounting_bank_transfers_posted_by_foreign|INDEX|posted_by|BTREE|
|accounting_bank_transfers_reversed_by_foreign|INDEX|reversed_by|BTREE|
|accounting_bank_transfers_source_financial_account_id_foreign|INDEX|source_financial_account_id|BTREE|
|accounting_bank_transfers_status_idx|INDEX|empresa_id, fecha, estado|BTREE|
|accounting_bank_transfers_target_financial_account_id_foreign|INDEX|target_financial_account_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|period_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|source_financial_account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|target_financial_account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE, FK|—|—|
|numero|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|fecha|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|referencia|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|concepto|varchar(500)|No|NULL / sin valor explícito|—|—|—|
|observacion|text|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('BORRADOR','CONTABILIZADA','REVERSADA')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|posted_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|posted_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|reversed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|reversed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_budgets

Presupuestos por empresa, cuenta contable, año, mes y centro de costo.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_budgets_account_id_foreign|account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_budgets_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|acc_budget_unique|UNIQUE|empresa_id, account_id, year, month, centro_costo|BTREE|
|accounting_budgets_account_id_foreign|INDEX|account_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|account_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX, FK|—|—|
|year|smallint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|month|tinyint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|centro_costo|varchar(80)|No||UNIQUE compuesto|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_cash_sessions

Apertura y cierre de caja: responsables, saldo inicial, saldo contable, efectivo contado y diferencia.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_cash_sessions_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_cash_sessions_financial_account_id_foreign|financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|
|accounting_cash_sessions_opened_by_foreign|opened_by|users.id|RESTRICT|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: closed_by. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_cash_sessions_empresa_id_foreign|INDEX|empresa_id|BTREE|
|accounting_cash_sessions_financial_account_id_fecha_unique|UNIQUE|financial_account_id, fecha|BTREE|
|accounting_cash_sessions_opened_by_foreign|INDEX|opened_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|financial_account_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|opened_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|closed_by|bigint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|fecha|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|opened_at|timestamp|No|NULL / sin valor explícito|—|—|—|
|closed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|saldo_inicial|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|saldo_libros|decimal(20,4)|Sí|NULL / sin valor explícito|—|—|—|
|contado|decimal(20,4)|Sí|NULL / sin valor explícito|—|—|—|
|diferencia|decimal(20,4)|Sí|NULL / sin valor explícito|—|—|—|
|observacion|text|Sí|NULL / sin valor explícito|—|—|—|
|estado|varchar(255)|No|ABIERTA|—|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_cheques

Cheques con cuenta financiera, cuenta pendiente, liquidación, número, monto y fechas de emisión/cobro.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_cheques_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|accounting_cheques_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_cheques_financial_account_id_foreign|financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|
|accounting_cheques_open_item_id_foreign|open_item_id|accounting_open_items.id|RESTRICT|NO ACTION|
|accounting_cheques_settlement_id_foreign|settlement_id|accounting_open_item_settlements.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_cheques_created_by_foreign|INDEX|created_by|BTREE|
|accounting_cheques_empresa_id_foreign|INDEX|empresa_id|BTREE|
|accounting_cheques_financial_account_id_numero_unique|UNIQUE|financial_account_id, numero|BTREE|
|accounting_cheques_open_item_id_foreign|INDEX|open_item_id|BTREE|
|accounting_cheques_settlement_id_foreign|INDEX|settlement_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|financial_account_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|open_item_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|settlement_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|numero|varchar(80)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|—|—|—|
|fecha_cobro|date|No|NULL / sin valor explícito|—|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|estado|varchar(255)|No|PENDIENTE|—|—|Estado del registro en su proceso.|
|motivo|text|Sí|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_concepts

Catálogo de conceptos contables y sus cuentas principal y de impuestos.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_concepts_account_id_foreign|account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_concepts_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_concepts_tax_account_id_foreign|tax_account_id|accounting_accounts.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_voucher_lines|concept_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_concepts_account_id_foreign|INDEX|account_id|BTREE|
|accounting_concepts_empresa_id_codigo_unique|UNIQUE|empresa_id, codigo|BTREE|
|accounting_concepts_empresa_id_tipo_activo_index|INDEX|empresa_id, tipo, activo|BTREE|
|accounting_concepts_tax_account_id_foreign|INDEX|tax_account_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|tax_account_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|codigo|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|tipo|enum('INGRESO','EGRESO')|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|nombre|varchar(180)|No|NULL / sin valor explícito|—|—|Nombre.|
|requiere_documento|tinyint(1)|No|1|—|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_cost_centers

Catálogo de centros de costo, sucursal y estado activo por empresa.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_cost_centers_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_cost_centers_empresa_id_codigo_unique|UNIQUE|empresa_id, codigo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|codigo|varchar(80)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|nombre|varchar(180)|No|NULL / sin valor explícito|—|—|Nombre.|
|sucursal|varchar(180)|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_entries

Cabeceras de asientos: fecha, período, número, concepto, totales debe/haber, origen, aprobación y reversión.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_entries_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_entries_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_entries_period_id_foreign|period_id|accounting_periods.id|RESTRICT|NO ACTION|
|accounting_entries_posted_by_foreign|posted_by|users.id|SET NULL|NO ACTION|
|accounting_entries_reversal_of_id_foreign|reversal_of_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_entries_reversed_by_foreign|reversed_by|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_advance_applications|entry_id|id|RESTRICT|
|accounting_advances|entry_id|id|RESTRICT|
|accounting_ats_imports|entry_id|id|SET NULL|
|accounting_audit_logs|entry_id|id|SET NULL|
|accounting_bank_transfers|entry_id|id|RESTRICT|
|accounting_entries|reversal_of_id|id|RESTRICT|
|accounting_entry_attachments|entry_id|id|RESTRICT|
|accounting_entry_lines|entry_id|id|CASCADE|
|accounting_integration_logs|entry_id|id|SET NULL|
|accounting_inventory_movements|entry_id|id|RESTRICT|
|accounting_open_item_settlements|entry_id|id|SET NULL|
|accounting_open_items|entry_id|id|SET NULL|
|accounting_vouchers|entry_id|id|RESTRICT|
|accounting_year_closures|closing_entry_id|id|RESTRICT|
|accounting_year_closures|opening_entry_id|id|RESTRICT|


Campos con nombre de referencia pero sin FK declarada: source_id, approved_by. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_entries_company_source_unique|UNIQUE|empresa_id, source_type, source_id|BTREE|
|accounting_entries_created_by_foreign|INDEX|created_by|BTREE|
|accounting_entries_empresa_id_fecha_estado_index|INDEX|empresa_id, fecha, estado|BTREE|
|accounting_entries_empresa_id_numero_unique|UNIQUE|empresa_id, numero|BTREE|
|accounting_entries_period_id_foreign|INDEX|period_id|BTREE|
|accounting_entries_posted_by_foreign|INDEX|posted_by|BTREE|
|accounting_entries_reversal_of_id_foreign|INDEX|reversal_of_id|BTREE|
|accounting_entries_reversed_by_foreign|INDEX|reversed_by|BTREE|
|accounting_entries_source_type_source_id_index|INDEX|source_type, source_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|period_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|reversal_of_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|numero|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|tipo|enum('DIARIO','INGRESO','EGRESO','COMPRA','VENTA','AJUSTE','APERTURA','CIERRE')|No|DIARIO|—|—|—|
|fecha|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|concepto|varchar(500)|No|NULL / sin valor explícito|—|—|—|
|referencia|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('BORRADOR','CONTABILIZADO','REVERSADO')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|total_debe|decimal(20,4)|No|0.0000|—|—|—|
|total_haber|decimal(20,4)|No|0.0000|—|—|—|
|source_type|varchar(255)|Sí|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto|—|—|
|source_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|posted_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|posted_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|reversed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|reversed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|approved_by|bigint unsigned|Sí|NULL / sin valor explícito|—|—|Usuario aprobador.|
|approved_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|


## accounting_entry_attachments

Archivos adjuntos de asientos con ruta, nombre, usuario y huella SHA-256.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_entry_attachments_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_entry_attachments_entry_id_foreign|entry_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_entry_attachments_user_id_foreign|user_id|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_entry_attachments_empresa_id_foreign|INDEX|empresa_id|BTREE|
|accounting_entry_attachments_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_entry_attachments_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|entry_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|path|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|sha256|varchar(64)|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_entry_lines

Detalle del asiento por cuenta: debe, haber, descripción, tercero y centro de costo.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_entry_lines_account_id_foreign|account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_entry_lines_entry_id_foreign|entry_id|accounting_entries.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_bank_statement_lines|matched_entry_line_id|id|RESTRICT|


Campos con nombre de referencia pero sin FK declarada: tercero_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_entry_lines_account_id_entry_id_index|INDEX|account_id, entry_id|BTREE|
|accounting_entry_lines_cash_flow_idx|INDEX|cash_flow_category, entry_id|BTREE|
|accounting_entry_lines_entry_id_foreign|INDEX|entry_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|entry_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, INDEX, FK|—|—|
|account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|descripcion|varchar(500)|Sí|NULL / sin valor explícito|—|—|Descripción.|
|debe|decimal(20,4)|No|0.0000|—|—|—|
|haber|decimal(20,4)|No|0.0000|—|—|—|
|tercero_tipo|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|tercero_id|bigint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|centro_costo|varchar(80)|Sí|NULL / sin valor explícito|—|—|—|
|cash_flow_category|enum('OPERACION','INVERSION','FINANCIACION','TRANSFERENCIA')|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_financial_accounts

Cuentas de caja y bancos vinculadas al plan contable: institución, número y estado.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_financial_accounts_account_id_foreign|account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_financial_accounts_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_advances|financial_account_id|id|RESTRICT|
|accounting_bank_reconciliations|financial_account_id|id|RESTRICT|
|accounting_bank_transfers|source_financial_account_id|id|RESTRICT|
|accounting_bank_transfers|target_financial_account_id|id|RESTRICT|
|accounting_cash_sessions|financial_account_id|id|RESTRICT|
|accounting_cheques|financial_account_id|id|RESTRICT|
|accounting_open_item_settlements|financial_account_id|id|RESTRICT|
|accounting_vouchers|financial_account_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_financial_accounts_account_id_foreign|INDEX|account_id|BTREE|
|accounting_financial_accounts_empresa_id_codigo_unique|UNIQUE|empresa_id, codigo|BTREE|
|accounting_financial_accounts_empresa_id_tipo_activo_index|INDEX|empresa_id, tipo, activo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|codigo|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|tipo|enum('CAJA','BANCO')|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|nombre|varchar(180)|No|NULL / sin valor explícito|—|—|Nombre.|
|institucion|varchar(180)|Sí|NULL / sin valor explícito|—|—|—|
|numero_cuenta|varchar(80)|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_integration_logs

Resultados e intentos de integración de documentos con contabilidad y asiento generado.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_integration_logs_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_integration_logs_entry_id_foreign|entry_id|accounting_entries.id|SET NULL|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: source_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_integration_company_status_index|INDEX|empresa_id, estado, document_type|BTREE|
|accounting_integration_logs_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_integration_source_unique|UNIQUE|source_type, source_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|source_type|varchar(255)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|source_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|document_type|varchar(30)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|document_number|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|access_key|varchar(49)|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('PENDIENTE','BORRADOR','CONTABILIZADO','REVERSADO','OMITIDO','ERROR')|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|mensaje|text|Sí|NULL / sin valor explícito|—|—|—|
|intentos|smallint unsigned|No|0|—|—|—|
|ultimo_intento_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|contabilizado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_integration_settings

Mapeo de cuentas para ventas, compras, IVA, retenciones y contabilización automática por empresa.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_integration_settings_accounts_payable_id_foreign|accounts_payable_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_integration_settings_accounts_receivable_id_foreign|accounts_receivable_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_integration_settings_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_integration_settings_input_vat_id_foreign|input_vat_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_integration_settings_output_vat_id_foreign|output_vat_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_integration_settings_purchases_expense_id_foreign|purchases_expense_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_integration_settings_sales_income_id_foreign|sales_income_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_integration_settings_sales_returns_id_foreign|sales_returns_id|accounting_accounts.id|RESTRICT|NO ACTION|
|ais_ir_payable_fk|income_tax_withholding_payable_id|accounting_accounts.id|RESTRICT|NO ACTION|
|ais_ir_receivable_fk|income_tax_withholding_receivable_id|accounting_accounts.id|RESTRICT|NO ACTION|
|ais_purchase_returns_fk|purchase_returns_id|accounting_accounts.id|RESTRICT|NO ACTION|
|ais_vat_payable_fk|vat_withholding_payable_id|accounting_accounts.id|RESTRICT|NO ACTION|
|ais_vat_receivable_fk|vat_withholding_receivable_id|accounting_accounts.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_integration_settings_accounts_payable_id_foreign|INDEX|accounts_payable_id|BTREE|
|accounting_integration_settings_accounts_receivable_id_foreign|INDEX|accounts_receivable_id|BTREE|
|accounting_integration_settings_empresa_id_foreign|INDEX|empresa_id|BTREE|
|accounting_integration_settings_input_vat_id_foreign|INDEX|input_vat_id|BTREE|
|accounting_integration_settings_output_vat_id_foreign|INDEX|output_vat_id|BTREE|
|accounting_integration_settings_purchases_expense_id_foreign|INDEX|purchases_expense_id|BTREE|
|accounting_integration_settings_sales_income_id_foreign|INDEX|sales_income_id|BTREE|
|accounting_integration_settings_sales_returns_id_foreign|INDEX|sales_returns_id|BTREE|
|ais_ir_payable_fk|INDEX|income_tax_withholding_payable_id|BTREE|
|ais_ir_receivable_fk|INDEX|income_tax_withholding_receivable_id|BTREE|
|ais_purchase_returns_fk|INDEX|purchase_returns_id|BTREE|
|ais_vat_payable_fk|INDEX|vat_withholding_payable_id|BTREE|
|ais_vat_receivable_fk|INDEX|vat_withholding_receivable_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|accounts_receivable_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|sales_income_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|sales_returns_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|output_vat_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|accounts_payable_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|purchases_expense_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|purchase_returns_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|input_vat_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|income_tax_withholding_receivable_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|vat_withholding_receivable_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|income_tax_withholding_payable_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|vat_withholding_payable_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|auto_post|tinyint(1)|No|1|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_inventory_movements

Movimientos de inventario contable: cantidades, valores, saldos, capas de costo y asiento.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_inventory_movements_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_inventory_movements_entry_id_foreign|entry_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_inventory_movements_inventario_id_foreign|inventario_id|inventarios.id|RESTRICT|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: original_movement_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_inventory_movements_empresa_id_source_key_unique|UNIQUE|empresa_id, source_key|BTREE|
|accounting_inventory_movements_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_inventory_movements_inventario_id_foreign|INDEX|inventario_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|inventario_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|tipo|varchar(30)|No|NULL / sin valor explícito|—|—|—|
|fecha|date|No|NULL / sin valor explícito|—|—|—|
|cantidad|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|valor|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|saldo_cantidad|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|saldo_valor|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|referencia|varchar(120)|No|NULL / sin valor explícito|—|—|—|
|source_key|varchar(120)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|original_movement_id|bigint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|layers|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_inventory_positions

Existencias y valoración acumulada por artículo y empresa, con capas de costo y última fecha.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_inventory_positions_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_inventory_positions_inventario_id_foreign|inventario_id|inventarios.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_inventory_positions_empresa_id_foreign|INDEX|empresa_id|BTREE|
|accounting_inventory_positions_inventario_id_unique|UNIQUE|inventario_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|inventario_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|—|
|cantidad|decimal(20,4)|No|0.0000|—|—|—|
|valor|decimal(20,4)|No|0.0000|—|—|—|
|layers|json|No|NULL / sin valor explícito|—|—|—|
|last_date|date|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_open_item_applications

Aplicaciones que afectan partidas pendientes, con origen, efecto, fecha, monto y estado.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_open_item_applications_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_open_item_applications_open_item_id_foreign|open_item_id|accounting_open_items.id|CASCADE|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: source_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_open_item_applications_date_idx|INDEX|empresa_id, fecha, estado|BTREE|
|accounting_open_item_applications_source_uq|UNIQUE|open_item_id, source_type, source_id, concepto|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|open_item_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|source_type|varchar(255)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|source_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|efecto|enum('DISMINUYE','AUMENTA')|No|NULL / sin valor explícito|—|—|—|
|concepto|varchar(80)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|fecha|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|estado|enum('APLICADA','REVERSADA')|No|APLICADA|INDEX compuesto|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_open_item_settlements

Cobros o pagos de partidas pendientes: medio, cuenta financiera, asiento y posible reversión.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_open_item_settlements_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_open_item_settlements_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_open_item_settlements_entry_id_foreign|entry_id|accounting_entries.id|SET NULL|NO ACTION|
|accounting_open_item_settlements_financial_account_id_foreign|financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|
|accounting_open_item_settlements_open_item_id_foreign|open_item_id|accounting_open_items.id|RESTRICT|NO ACTION|
|accounting_open_item_settlements_period_id_foreign|period_id|accounting_periods.id|RESTRICT|NO ACTION|
|accounting_open_item_settlements_reversed_by_foreign|reversed_by|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_cheques|settlement_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_open_item_settlements_created_by_foreign|INDEX|created_by|BTREE|
|accounting_open_item_settlements_date_idx|INDEX|empresa_id, fecha, estado|BTREE|
|accounting_open_item_settlements_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_open_item_settlements_financial_account_id_foreign|INDEX|financial_account_id|BTREE|
|accounting_open_item_settlements_number_uq|UNIQUE|empresa_id, numero|BTREE|
|accounting_open_item_settlements_open_item_id_foreign|INDEX|open_item_id|BTREE|
|accounting_open_item_settlements_period_id_foreign|INDEX|period_id|BTREE|
|accounting_open_item_settlements_reversed_by_foreign|INDEX|reversed_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, UNIQUE compuesto, FK|—|Identificador de empresa.|
|open_item_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|period_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|financial_account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|numero|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|fecha|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|monto|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|medio_pago|varchar(2)|No|20|—|—|—|
|referencia|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|observacion|text|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('CONTABILIZADO','REVERSADO')|No|CONTABILIZADO|INDEX compuesto|—|Estado del registro en su proceso.|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|reversed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|reversed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_open_items

Cuentas por cobrar/pagar: tercero, documento, vencimiento, monto original, aplicado y saldo.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_open_items_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_open_items_entry_id_foreign|entry_id|accounting_entries.id|SET NULL|NO ACTION|
|accounting_open_items_third_party_id_foreign|third_party_id|personas.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_advance_applications|open_item_id|id|RESTRICT|
|accounting_cheques|open_item_id|id|RESTRICT|
|accounting_open_item_applications|open_item_id|id|CASCADE|
|accounting_open_item_settlements|open_item_id|id|RESTRICT|


Campos con nombre de referencia pero sin FK declarada: source_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_open_items_entry_id_foreign|INDEX|entry_id|BTREE|
|accounting_open_items_portfolio_idx|INDEX|empresa_id, tipo, estado, fecha_vencimiento|BTREE|
|accounting_open_items_source_uq|UNIQUE|source_type, source_id|BTREE|
|accounting_open_items_third_party_id_foreign|INDEX|third_party_id|BTREE|
|accounting_open_items_third_party_idx|INDEX|empresa_id, tercero_identificacion|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|third_party_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|source_type|varchar(255)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|source_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|tipo|enum('CXC','CXP')|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|documento_tipo|varchar(40)|No|NULL / sin valor explícito|—|—|—|
|documento_numero|varchar(60)|No|NULL / sin valor explícito|—|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|—|—|—|
|fecha_vencimiento|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|tercero_identificacion|varchar(30)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|tercero_nombre|varchar(500)|No|NULL / sin valor explícito|—|—|—|
|moneda|char(3)|No|USD|—|—|—|
|monto_original|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|monto_aplicado|decimal(20,4)|No|0.0000|—|—|—|
|saldo|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|estado|enum('ABIERTA','PARCIAL','PAGADA','SOBREAPLICADA','ANULADA')|No|ABIERTA|INDEX compuesto|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_periods

Períodos contables por empresa, fechas de inicio/fin y datos del cierre.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_periods_closed_by_foreign|closed_by|users.id|SET NULL|NO ACTION|
|accounting_periods_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_bank_transfers|period_id|id|RESTRICT|
|accounting_entries|period_id|id|RESTRICT|
|accounting_open_item_settlements|period_id|id|RESTRICT|
|accounting_vouchers|period_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_period_company_dates_unique|UNIQUE|empresa_id, fecha_inicio, fecha_fin|BTREE|
|accounting_periods_closed_by_foreign|INDEX|closed_by|BTREE|
|accounting_periods_empresa_id_estado_index|INDEX|empresa_id, estado|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|nombre|varchar(80)|No|NULL / sin valor explícito|—|—|Nombre.|
|fecha_inicio|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|fecha_fin|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|estado|enum('ABIERTO','CERRADO')|No|ABIERTO|INDEX compuesto|—|Estado del registro en su proceso.|
|closed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|closed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_received_document_lines

Productos o conceptos de documentos recibidos: cantidades, precios, descuentos e IVA.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_received_document_lines_received_document_id_foreign|received_document_id|accounting_received_documents.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_received_document_lines_received_document_id_index|INDEX|received_document_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|received_document_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|codigo|varchar(50)|Sí|NULL / sin valor explícito|—|—|—|
|codigo_auxiliar|varchar(50)|Sí|NULL / sin valor explícito|—|—|—|
|descripcion|varchar(500)|No|NULL / sin valor explícito|—|—|Descripción.|
|cantidad|decimal(20,6)|No|1.000000|—|—|—|
|valor_unitario|decimal(20,6)|No|0.000000|—|—|—|
|descuento|decimal(20,4)|No|0.0000|—|—|—|
|base_imponible|decimal(20,4)|No|0.0000|—|—|—|
|iva_codigo|varchar(10)|Sí|NULL / sin valor explícito|—|—|—|
|iva_porcentaje|decimal(8,4)|No|0.0000|—|—|—|
|iva_valor|decimal(20,4)|No|0.0000|—|—|—|
|total|decimal(20,4)|No|0.0000|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_received_documents

Comprobantes recibidos de proveedores, claves SRI, totales, sustento tributario y XML autorizado.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_received_documents_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_received_documents_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_received_documents_provider_id_foreign|provider_id|personas.id|SET NULL|NO ACTION|
|ard_modified_document_fk|modified_document_id|accounting_received_documents.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_ats_reimbursements|received_document_id|id|CASCADE|
|accounting_received_document_lines|received_document_id|id|CASCADE|
|accounting_received_documents|modified_document_id|id|RESTRICT|
|comprobantes_electronicos|accounting_received_document_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_received_company_date_index|INDEX|empresa_id, fecha_emision, estado|BTREE|
|accounting_received_documents_clave_acceso_unique|UNIQUE|clave_acceso|BTREE|
|accounting_received_documents_created_by_foreign|INDEX|created_by|BTREE|
|accounting_received_documents_empresa_id_emisor_ruc_index|INDEX|empresa_id, emisor_ruc|BTREE|
|accounting_received_documents_provider_id_foreign|INDEX|provider_id|BTREE|
|ard_company_type_modified_idx|INDEX|empresa_id, tipo, modified_document_id|BTREE|
|ard_modified_document_fk|INDEX|modified_document_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|provider_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|tipo|enum('FACTURA','NOTA_CREDITO','NOTA_DEBITO')|No|FACTURA|INDEX compuesto|—|—|
|modified_document_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, INDEX, FK|—|—|
|ambiente|varchar(1)|No|NULL / sin valor explícito|—|—|—|
|numero|varchar(17)|No|NULL / sin valor explícito|—|—|—|
|clave_acceso|varchar(49)|No|NULL / sin valor explícito|UNIQUE|—|—|
|numero_autorizacion|varchar(49)|No|NULL / sin valor explícito|—|—|—|
|ats_sustento_codigo|varchar(2)|No|01|—|—|—|
|ats_tipo_comprobante|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|ats_parte_relacionada|tinyint(1)|No|0|—|—|—|
|ats_formas_pago|json|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_tipo|varchar(2)|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_numero|varchar(17)|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_autorizacion|varchar(49)|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_fecha|date|Sí|NULL / sin valor explícito|—|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|fecha_autorizacion|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|emisor_ruc|varchar(13)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|emisor_razon_social|varchar(200)|No|NULL / sin valor explícito|—|—|—|
|comprador_identificacion|varchar(30)|No|NULL / sin valor explícito|—|—|—|
|comprador_razon_social|varchar(200)|Sí|NULL / sin valor explícito|—|—|—|
|subtotal_sin_impuestos|decimal(20,4)|No|0.0000|—|—|—|
|total_descuento|decimal(20,4)|No|0.0000|—|—|—|
|total_iva|decimal(20,4)|No|0.0000|—|—|—|
|importe_total|decimal(20,4)|No|0.0000|—|—|—|
|motivo|text|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('VALIDADO','CONTABILIZADO','REVERSADO','ERROR')|No|VALIDADO|INDEX compuesto|—|Estado del registro en su proceso.|
|xml_autorizado|longtext|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_received_withholding_details

Detalle de impuestos retenidos: código, base imponible, porcentaje y valor.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|arwd_support_fk|support_id|accounting_received_withholding_supports.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|arwd_support_fk|INDEX|support_id|BTREE|
|arwd_tax_code_idx|INDEX|codigo, codigo_retencion|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|support_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|codigo|varchar(2)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|codigo_retencion|varchar(10)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|base_imponible|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|porcentaje|decimal(8,4)|No|NULL / sin valor explícito|—|—|—|
|valor_retenido|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_received_withholding_supports

Documentos de sustento de una retención recibida y posible factura relacionada.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|arws_invoice_fk|factura_id|facturas.id|RESTRICT|NO ACTION|
|arws_withholding_fk|received_withholding_id|accounting_received_withholdings.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_received_withholding_details|support_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|arws_invoice_fk|INDEX|factura_id|BTREE|
|arws_withholding_invoice_uq|UNIQUE|received_withholding_id, factura_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|received_withholding_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|factura_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|—|
|cod_sustento|varchar(2)|No|01|—|—|—|
|cod_doc_sustento|varchar(2)|No|01|—|—|—|
|numero|varchar(17)|No|NULL / sin valor explícito|—|—|—|
|autorizacion|varchar(49)|No|NULL / sin valor explícito|—|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|—|—|—|
|subtotal_sin_impuestos|decimal(20,4)|No|0.0000|—|—|—|
|importe_total|decimal(20,4)|No|0.0000|—|—|—|
|pago_local_exterior|varchar(2)|No|01|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_received_withholdings

Cabeceras de retenciones recibidas: agente, sujeto retenido, período fiscal, totales y XML.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_received_withholdings_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_received_withholdings_customer_id_foreign|customer_id|personas.id|SET NULL|NO ACTION|
|accounting_received_withholdings_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_received_withholding_supports|received_withholding_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_received_withholdings_clave_acceso_unique|UNIQUE|clave_acceso|BTREE|
|accounting_received_withholdings_created_by_foreign|INDEX|created_by|BTREE|
|accounting_received_withholdings_customer_id_foreign|INDEX|customer_id|BTREE|
|arw_company_agent_idx|INDEX|empresa_id, agente_ruc|BTREE|
|arw_company_date_status_idx|INDEX|empresa_id, fecha_emision, estado|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|customer_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|ambiente|varchar(1)|No|NULL / sin valor explícito|—|—|—|
|numero|varchar(17)|No|NULL / sin valor explícito|—|—|—|
|clave_acceso|varchar(49)|No|NULL / sin valor explícito|UNIQUE|—|—|
|numero_autorizacion|varchar(49)|No|NULL / sin valor explícito|—|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|fecha_autorizacion|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|agente_ruc|varchar(13)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|agente_razon_social|varchar(300)|No|NULL / sin valor explícito|—|—|—|
|sujeto_retenido_identificacion|varchar(20)|No|NULL / sin valor explícito|—|—|—|
|sujeto_retenido_razon_social|varchar(300)|No|NULL / sin valor explícito|—|—|—|
|periodo_fiscal|varchar(7)|No|NULL / sin valor explícito|—|—|—|
|total_retenido|decimal(20,4)|No|0.0000|—|—|—|
|estado|enum('VALIDADO','CONTABILIZADO','REVERSADO','ERROR')|No|VALIDADO|INDEX compuesto|—|Estado del registro en su proceso.|
|xml_autorizado|longtext|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_settings

Configuración contable por empresa: moneda, marco contable, inventario, cuentas y aprobaciones.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_settings_cogs_account_id_foreign|cogs_account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_settings_customer_advance_account_id_foreign|customer_advance_account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_settings_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_settings_inventory_account_id_foreign|inventory_account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_settings_result_account_id_foreign|result_account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_settings_supplier_advance_account_id_foreign|supplier_advance_account_id|accounting_accounts.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_settings_cogs_account_id_foreign|INDEX|cogs_account_id|BTREE|
|accounting_settings_customer_advance_account_id_foreign|INDEX|customer_advance_account_id|BTREE|
|accounting_settings_empresa_id_unique|UNIQUE|empresa_id|BTREE|
|accounting_settings_inventory_account_id_foreign|INDEX|inventory_account_id|BTREE|
|accounting_settings_result_account_id_foreign|INDEX|result_account_id|BTREE|
|accounting_settings_supplier_advance_account_id_foreign|INDEX|supplier_advance_account_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de empresa.|
|moneda|varchar(3)|No|USD|—|—|—|
|rounding_mode|varchar(20)|No|HALF_UP|—|—|—|
|marco_contable|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|inventory_method|varchar(20)|Sí|NULL / sin valor explícito|—|—|—|
|require_approval|tinyint(1)|No|0|—|—|—|
|inventory_enabled|tinyint(1)|No|0|—|—|—|
|result_account_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|inventory_account_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|cogs_account_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|customer_advance_account_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|supplier_advance_account_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|contador|varchar(180)|Sí|NULL / sin valor explícito|—|—|—|
|representante|varchar(180)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_voucher_lines

Detalle de comprobantes contables de ingreso/egreso: conceptos, cuentas, bases e impuestos.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_voucher_lines_account_id_foreign|account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_voucher_lines_concept_id_foreign|concept_id|accounting_concepts.id|RESTRICT|NO ACTION|
|accounting_voucher_lines_iva_tarifa_id_foreign|iva_tarifa_id|iva_tarifas.id|RESTRICT|NO ACTION|
|accounting_voucher_lines_tax_account_id_foreign|tax_account_id|accounting_accounts.id|RESTRICT|NO ACTION|
|accounting_voucher_lines_voucher_id_foreign|voucher_id|accounting_vouchers.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_voucher_lines_account_id_foreign|INDEX|account_id|BTREE|
|accounting_voucher_lines_concept_id_foreign|INDEX|concept_id|BTREE|
|accounting_voucher_lines_iva_tarifa_id_foreign|INDEX|iva_tarifa_id|BTREE|
|accounting_voucher_lines_tax_account_id_foreign|INDEX|tax_account_id|BTREE|
|accounting_voucher_lines_voucher_id_concept_id_index|INDEX|voucher_id, concept_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|voucher_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|concept_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, INDEX compuesto, FK|—|—|
|account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|tax_account_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|iva_tarifa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|descripcion|varchar(500)|Sí|NULL / sin valor explícito|—|—|Descripción.|
|base_imponible|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|iva_codigo|varchar(10)|Sí|NULL / sin valor explícito|—|—|—|
|iva_porcentaje|decimal(8,4)|No|0.0000|—|—|—|
|iva_valor|decimal(20,4)|No|0.0000|—|—|—|
|total|decimal(20,4)|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_vouchers

Cabeceras de comprobantes de ingreso/egreso con tercero, cuenta financiera, totales y asiento.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_vouchers_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|accounting_vouchers_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_vouchers_entry_id_foreign|entry_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_vouchers_financial_account_id_foreign|financial_account_id|accounting_financial_accounts.id|RESTRICT|NO ACTION|
|accounting_vouchers_period_id_foreign|period_id|accounting_periods.id|RESTRICT|NO ACTION|
|accounting_vouchers_posted_by_foreign|posted_by|users.id|SET NULL|NO ACTION|
|accounting_vouchers_reversed_by_foreign|reversed_by|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_voucher_lines|voucher_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_vouchers_company_document_index|INDEX|empresa_id, documento_tipo, documento_numero|BTREE|
|accounting_vouchers_created_by_foreign|INDEX|created_by|BTREE|
|accounting_vouchers_empresa_id_fecha_estado_index|INDEX|empresa_id, fecha, estado|BTREE|
|accounting_vouchers_empresa_id_numero_unique|UNIQUE|empresa_id, numero|BTREE|
|accounting_vouchers_entry_id_unique|UNIQUE|entry_id|BTREE|
|accounting_vouchers_financial_account_id_foreign|INDEX|financial_account_id|BTREE|
|accounting_vouchers_period_id_foreign|INDEX|period_id|BTREE|
|accounting_vouchers_posted_by_foreign|INDEX|posted_by|BTREE|
|accounting_vouchers_reversed_by_foreign|INDEX|reversed_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, UNIQUE compuesto, FK|—|Identificador de empresa.|
|period_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|financial_account_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|entry_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE, FK|—|—|
|numero|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|tipo|enum('INGRESO','EGRESO')|No|NULL / sin valor explícito|—|—|—|
|cash_flow_category|enum('OPERACION','INVERSION','FINANCIACION')|No|OPERACION|—|—|—|
|fecha|date|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|tercero_nombre|varchar(200)|Sí|NULL / sin valor explícito|—|—|—|
|tercero_identificacion|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|documento_tipo|enum('FACTURA','NOTA_VENTA','LIQUIDACION_COMPRA','COMPROBANTE_RETENCION','OTRO','SIN_DOCUMENTO')|No|SIN_DOCUMENTO|INDEX compuesto|—|—|
|documento_numero|varchar(60)|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|documento_autorizacion|varchar(60)|Sí|NULL / sin valor explícito|—|—|—|
|concepto|varchar(500)|No|NULL / sin valor explícito|—|—|—|
|estado|enum('BORRADOR','CONTABILIZADO','REVERSADO')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|subtotal|decimal(20,4)|No|0.0000|—|—|—|
|iva|decimal(20,4)|No|0.0000|—|—|—|
|total|decimal(20,4)|No|0.0000|—|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|posted_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|posted_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|reversed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|reversed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## accounting_year_closures

Cierres anuales y referencias a los asientos de cierre y apertura, resultado y responsable.

**Módulo:** Contabilidad. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|accounting_year_closures_closing_entry_id_foreign|closing_entry_id|accounting_entries.id|RESTRICT|NO ACTION|
|accounting_year_closures_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|accounting_year_closures_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|accounting_year_closures_opening_entry_id_foreign|opening_entry_id|accounting_entries.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|accounting_year_closures_closing_entry_id_foreign|INDEX|closing_entry_id|BTREE|
|accounting_year_closures_created_by_foreign|INDEX|created_by|BTREE|
|accounting_year_closures_empresa_id_year_unique|UNIQUE|empresa_id, year|BTREE|
|accounting_year_closures_opening_entry_id_foreign|INDEX|opening_entry_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|year|smallint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|closing_entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|opening_entry_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|resultado|decimal(20,4)|No|0.0000|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## actividades_economicas

Catálogo de actividades económicas con código, descripción y estado.

**Módulo:** Catálogos. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|personas|actividad_economica_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|actividades_economicas_codigo_unique|UNIQUE|codigo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|codigo|varchar(20)|No|NULL / sin valor explícito|UNIQUE|—|—|
|descripcion|varchar(255)|No|NULL / sin valor explícito|—|—|Descripción.|
|estado|tinyint(1)|No|1|—|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## activities

Historial de actividades del CRM con cliente, asesor, usuario, asunto, fecha y metadatos.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|activities_advisor_id_foreign|advisor_id|advisors.id|SET NULL|NO ACTION|
|activities_client_id_foreign|client_id|clients.id|CASCADE|NO ACTION|
|activities_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|activities_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|activities_advisor_id_foreign|INDEX|advisor_id|BTREE|
|activities_client_id_foreign|INDEX|client_id|BTREE|
|activities_empresa_id_client_id_index|INDEX|empresa_id, client_id|BTREE|
|activities_empresa_id_tipo_index|INDEX|empresa_id, tipo|BTREE|
|activities_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|client_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, INDEX compuesto, FK|—|—|
|advisor_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|tipo|enum('LLAMADA','REUNION','CORREO','NOTA','TAREA','CAMBIO_ESTADO','REASIGNACION')|No|NOTA|INDEX compuesto|—|—|
|asunto|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|descripcion|longtext|Sí|NULL / sin valor explícito|—|—|Descripción.|
|fecha_actividad|timestamp|No|CURRENT_TIMESTAMP|—|DEFAULT_GENERATED|—|
|metadata|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## advisors

Asesores del CRM vinculados a usuarios y empresas, código, cargo y estado.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|advisors_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|advisors_user_id_foreign|user_id|users.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|activities|advisor_id|id|SET NULL|
|client_assignments|advisor_id|id|CASCADE|
|clients|advisor_id|id|SET NULL|
|tasks|advisor_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|advisors_empresa_id_user_id_unique|UNIQUE|empresa_id, user_id|BTREE|
|advisors_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX, FK|—|Identificador de usuario.|
|codigo|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|cargo|varchar(100)|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|deleted_at|timestamp|Sí|NULL / sin valor explícito|—|—|Marca de borrado lógico: la fila puede seguir existiendo.|


## audit_logs

Auditoría del CRM: entidad afectada, acción, valores anteriores/nuevos y datos de acceso.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|audit_logs_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|
|audit_logs_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: auditable_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|audit_logs_auditable_type_auditable_id_index|INDEX|auditable_type, auditable_id|BTREE|
|audit_logs_empresa_id_action_index|INDEX|empresa_id, action|BTREE|
|audit_logs_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|auditable_type|varchar(255)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|auditable_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|action|varchar(50)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|old_values|json|Sí|NULL / sin valor explícito|—|—|—|
|new_values|json|Sí|NULL / sin valor explícito|—|—|—|
|ip_address|varchar(45)|Sí|NULL / sin valor explícito|—|—|—|
|user_agent|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## cache

Valores temporales de caché de la aplicación y su expiración.

**Módulo:** Infraestructura. **Clave primaria:** key.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|cache_expiration_index|INDEX|expiration|BTREE|
|PRIMARY|PRIMARY KEY|key|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|key|varchar(255)|No|NULL / sin valor explícito|PK|—|—|
|value|mediumtext|No|NULL / sin valor explícito|—|—|—|
|expiration|int|No|NULL / sin valor explícito|INDEX|—|—|


## cache_locks

Bloqueos temporales de caché con propietario y expiración para coordinar procesos.

**Módulo:** Infraestructura. **Clave primaria:** key.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|cache_locks_expiration_index|INDEX|expiration|BTREE|
|PRIMARY|PRIMARY KEY|key|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|key|varchar(255)|No|NULL / sin valor explícito|PK|—|—|
|owner|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|expiration|int|No|NULL / sin valor explícito|INDEX|—|—|


## cantones

Catálogo de cantones con códigos de provincia y país.

**Módulo:** Catálogos. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|personas|ciudad_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|cantones_codigo_unique|UNIQUE|codigo|BTREE|
|cantones_nombre_index|INDEX|nombre|BTREE|
|cantones_pais_codigo_index|INDEX|pais_codigo|BTREE|
|cantones_provincia_codigo_index|INDEX|provincia_codigo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|codigo|varchar(4)|No|NULL / sin valor explícito|UNIQUE|—|—|
|nombre|varchar(150)|No|NULL / sin valor explícito|INDEX|—|Nombre.|
|provincia_codigo|varchar(2)|No|NULL / sin valor explícito|INDEX|—|—|
|pais_codigo|varchar(3)|No|ECU|INDEX|—|—|
|estado|tinyint(1)|No|1|—|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## client_addresses

Direcciones del cliente CRM, ubicación, tipo y marca de dirección principal.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|client_addresses_client_id_foreign|client_id|clients.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|client_addresses_client_id_foreign|INDEX|client_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|client_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|tipo|enum('MATRIZ','SUCURSAL','DOMICILIO','FACTURACION','OTRA')|No|DOMICILIO|—|—|—|
|pais|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|provincia|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|ciudad|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|direccion|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|codigo_postal|varchar(20)|Sí|NULL / sin valor explícito|—|—|—|
|principal|tinyint(1)|No|0|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|deleted_at|timestamp|Sí|NULL / sin valor explícito|—|—|Marca de borrado lógico: la fila puede seguir existiendo.|


## client_assignments

Historial de asignación de clientes CRM a asesores, fechas, responsable y motivo.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|client_assignments_advisor_id_foreign|advisor_id|advisors.id|CASCADE|NO ACTION|
|client_assignments_assigned_by_foreign|assigned_by|users.id|SET NULL|NO ACTION|
|client_assignments_client_id_foreign|client_id|clients.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|client_assignments_advisor_id_foreign|INDEX|advisor_id|BTREE|
|client_assignments_assigned_by_foreign|INDEX|assigned_by|BTREE|
|client_assignments_client_id_ended_at_index|INDEX|client_id, ended_at|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|client_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|advisor_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|assigned_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|assigned_at|timestamp|No|CURRENT_TIMESTAMP|—|DEFAULT_GENERATED|—|
|ended_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|motivo|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## client_contacts

Contactos de clientes CRM: nombres, cargo, correos, teléfonos y contacto principal.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|client_contacts_client_id_foreign|client_id|clients.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|client_contacts_client_id_foreign|INDEX|client_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|client_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|cargo|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|email|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|telefono|varchar(40)|Sí|NULL / sin valor explícito|—|—|—|
|celular|varchar(40)|Sí|NULL / sin valor explícito|—|—|—|
|principal|tinyint(1)|No|0|—|—|—|
|observaciones|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|deleted_at|timestamp|Sí|NULL / sin valor explícito|—|—|Marca de borrado lógico: la fila puede seguir existiendo.|


## client_documents

Documentos del cliente CRM: ruta, tipo, tamaño, observaciones y usuario que los subió.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|client_documents_client_id_foreign|client_id|clients.id|CASCADE|NO ACTION|
|client_documents_uploaded_by_foreign|uploaded_by|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|client_documents_client_id_foreign|INDEX|client_id|BTREE|
|client_documents_uploaded_by_foreign|INDEX|uploaded_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|client_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|tipo|varchar(80)|No|NULL / sin valor explícito|—|—|—|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|archivo_path|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|mime_type|varchar(120)|Sí|NULL / sin valor explícito|—|—|—|
|tamano|bigint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|observaciones|text|Sí|NULL / sin valor explícito|—|—|—|
|uploaded_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|deleted_at|timestamp|Sí|NULL / sin valor explícito|—|—|Marca de borrado lógico: la fila puede seguir existiendo.|


## clients

Ficha comercial CRM del cliente, vínculo con persona, asesor, etapa, oportunidad y seguimiento.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|clients_advisor_id_foreign|advisor_id|advisors.id|SET NULL|NO ACTION|
|clients_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|clients_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|clients_persona_id_foreign|persona_id|personas.id|SET NULL|NO ACTION|
|clients_pipeline_stage_id_foreign|pipeline_stage_id|pipeline_stages.id|SET NULL|NO ACTION|
|clients_updated_by_foreign|updated_by|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|activities|client_id|id|CASCADE|
|client_addresses|client_id|id|CASCADE|
|client_assignments|client_id|id|CASCADE|
|client_contacts|client_id|id|CASCADE|
|client_documents|client_id|id|CASCADE|
|emails|client_id|id|SET NULL|
|tasks|client_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|clients_advisor_id_foreign|INDEX|advisor_id|BTREE|
|clients_created_by_foreign|INDEX|created_by|BTREE|
|clients_empresa_id_advisor_id_index|INDEX|empresa_id, advisor_id|BTREE|
|clients_empresa_id_estado_index|INDEX|empresa_id, estado|BTREE|
|clients_empresa_id_identificacion_unique|UNIQUE|empresa_id, identificacion|BTREE|
|clients_persona_unique|UNIQUE|persona_id|BTREE|
|clients_pipeline_stage_id_foreign|INDEX|pipeline_stage_id|BTREE|
|clients_updated_by_foreign|INDEX|updated_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, UNIQUE compuesto, FK|—|Identificador de empresa.|
|persona_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE, FK|—|—|
|advisor_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, INDEX compuesto, FK|—|—|
|pipeline_stage_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|tipo_cliente|enum('NATURAL','EMPRESA')|No|NULL / sin valor explícito|—|—|—|
|tipo_identificacion|enum('CEDULA','RUC','PASAPORTE','ID_EXTERIOR')|No|CEDULA|—|—|—|
|identificacion|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|nombres|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|apellidos|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|razon_social|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|nombre_comercial|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|nombre_completo|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|email|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|telefono|varchar(40)|Sí|NULL / sin valor explícito|—|—|—|
|telefono_secundario|varchar(40)|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('NUEVO','EN_SEGUIMIENTO','ACTIVO','INACTIVO','PERDIDO')|No|NUEVO|INDEX compuesto|—|Estado del registro en su proceso.|
|valor_oportunidad|decimal(14,2)|No|0.00|—|—|—|
|fecha_ultimo_contacto|date|Sí|NULL / sin valor explícito|—|—|—|
|fecha_proximo_seguimiento|date|Sí|NULL / sin valor explícito|—|—|—|
|observaciones|text|Sí|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|updated_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario que actualizó.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|deleted_at|timestamp|Sí|NULL / sin valor explícito|—|—|Marca de borrado lógico: la fila puede seguir existiendo.|


## company_data_acceptances

Evidencias de aceptación de políticas de datos: versión, texto, persona, fechas, IP y huellas.

**Módulo:** Formularios y políticas de datos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_data_acceptances_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|company_data_acceptances_persona_id_foreign|persona_id|personas.id|RESTRICT|NO ACTION|
|company_data_acceptances_user_id_foreign|user_id|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_data_acceptances_empresa_id_foreign|INDEX|empresa_id|BTREE|
|company_data_acceptances_evidence_uuid_unique|UNIQUE|evidence_uuid|BTREE|
|company_data_acceptances_persona_id_accepted_at_index|INDEX|persona_id, accepted_at|BTREE|
|company_data_acceptances_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|persona_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|version|char(36)|No|NULL / sin valor explícito|—|—|Versión del registro o de su estructura.|
|body|text|No|NULL / sin valor explícito|—|—|—|
|document_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|accepted_at|timestamp|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|evidence_uuid|char(36)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|accepted_at_utc|datetime(6)|Sí|NULL / sin valor explícito|—|—|—|
|timezone|varchar(64)|Sí|NULL / sin valor explícito|—|—|—|
|ip_address|varchar(45)|Sí|NULL / sin valor explícito|—|—|—|
|user_agent|text|Sí|NULL / sin valor explícito|—|—|—|
|body_sha256|char(64)|Sí|NULL / sin valor explícito|—|—|—|
|document_sha256|char(64)|Sí|NULL / sin valor explícito|—|—|—|
|context|json|Sí|NULL / sin valor explícito|—|—|—|
|evidence_sha256|char(64)|Sí|NULL / sin valor explícito|—|—|—|


## company_data_policies

Política de tratamiento de datos por empresa, versión, documento y responsable.

**Módulo:** Formularios y políticas de datos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_data_policies_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|company_data_policies_responsible_company_id_foreign|responsible_company_id|empresas.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_data_policies_empresa_id_unique|UNIQUE|empresa_id|BTREE|
|company_data_policies_responsible_company_id_foreign|INDEX|responsible_company_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de empresa.|
|body|text|No|NULL / sin valor explícito|—|—|—|
|version|char(36)|No|NULL / sin valor explícito|—|—|Versión del registro o de su estructura.|
|document_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|responsible_company_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|responsible_company_name|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|responsible_company_ruc|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|


## company_master_activities

Registro de acciones y campos afectados en el maestro de clientes por empresa y usuario.

**Módulo:** Maestro de clientes y vencimientos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_master_activities_empresa_id_foreign|empresa_id|empresas.id|NO ACTION|NO ACTION|
|company_master_activities_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_master_activities_empresa_id_foreign|INDEX|empresa_id|BTREE|
|company_master_activities_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|actor|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|action|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|fields|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## company_master_approvals

Solicitudes de cambios del maestro: valores antes/después cifrados, estado y revisión.

**Módulo:** Maestro de clientes y vencimientos. **Clave primaria:** id.

No tiene claves foráneas declaradas.

Campos con nombre de referencia pero sin FK declarada: empresa_id, requested_by, reviewed_by. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_master_approvals_empresa_id_index|INDEX|empresa_id|BTREE|
|company_master_approvals_requested_by_index|INDEX|requested_by|BTREE|
|company_master_approvals_status_index|INDEX|status|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX|—|Identificador de empresa.|
|requested_by|bigint unsigned|No|NULL / sin valor explícito|INDEX|—|—|
|requester_name|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|status|varchar(20)|No|PENDIENTE|INDEX|—|Estado del registro en su proceso.|
|schema_version|int unsigned|No|NULL / sin valor explícito|—|—|—|
|before_values|longtext|No|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|after_values|longtext|No|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|labels|json|No|NULL / sin valor explícito|—|—|—|
|reviewed_by|bigint unsigned|Sí|NULL / sin valor explícito|—|—|Usuario revisor.|
|reviewer_name|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|reason|text|Sí|NULL / sin valor explícito|—|—|—|
|reviewed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## company_master_invitations

Invitaciones al maestro mediante hash de token, destinatario, caducidad, uso o revocación.

**Módulo:** Maestro de clientes y vencimientos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_master_invitations_created_by_foreign|created_by|users.id|NO ACTION|NO ACTION|
|company_master_invitations_empresa_id_foreign|empresa_id|empresas.id|NO ACTION|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_master_invitations_created_by_foreign|INDEX|created_by|BTREE|
|company_master_invitations_empresa_id_foreign|INDEX|empresa_id|BTREE|
|company_master_invitations_token_hash_unique|UNIQUE|token_hash|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|token_hash|varchar(64)|No|NULL / sin valor explícito|UNIQUE|—|—|
|recipient|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|expires_at|timestamp|No|NULL / sin valor explícito|—|—|—|
|used_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|revoked_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## company_master_profiles

Valores del maestro de cada empresa guardados como un arreglo cifrado y versionado.

**Módulo:** Maestro de clientes y vencimientos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_master_profiles_empresa_id_foreign|empresa_id|empresas.id|NO ACTION|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_master_profiles_empresa_id_unique|UNIQUE|empresa_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de empresa.|
|values|longtext|Sí|NULL / sin valor explícito|—|—|Arreglo cifrado por Laravel: contiene los valores dinámicos del maestro, incluidos sus vencimientos. No es JSON legible directamente en SQL.|
|version|int unsigned|No|1|—|—|Versión del registro o de su estructura.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## company_master_schemas

Definición de campos dinámicos del maestro por cuenta y versión del esquema.

**Módulo:** Maestro de clientes y vencimientos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_master_schemas_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|NO ACTION|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_master_schemas_cuenta_cliente_id_unique|UNIQUE|cuenta_cliente_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de cuenta cliente.|
|fields|json|No|NULL / sin valor explícito|—|—|JSON con la definición de campos dinámicos. Los campos de negocio no equivalen a columnas físicas adicionales.|
|version|int unsigned|No|1|—|—|Versión del registro o de su estructura.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## company_permit_notices

Avisos de permisos/vencimientos del maestro: empresa, campo, fecha, destinatario, canal y estado.

**Módulo:** Maestro de clientes y vencimientos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_permit_notices_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|company_permit_notices_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_permit_notices_dedup_key_unique|UNIQUE|dedup_key|BTREE|
|company_permit_notices_empresa_id_foreign|INDEX|empresa_id|BTREE|
|company_permit_notices_status_channel_index|INDEX|status, channel|BTREE|
|company_permit_notices_user_id_channel_index|INDEX|user_id, channel|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|field_key|varchar(64)|No|NULL / sin valor explícito|—|—|—|
|expires_on|date|No|NULL / sin valor explícito|—|—|—|
|event_key|varchar(40)|No|NULL / sin valor explícito|—|—|—|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de usuario.|
|recipient|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|channel|varchar(10)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|dedup_key|varchar(64)|No|NULL / sin valor explícito|UNIQUE|—|—|
|status|varchar(20)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|title|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|body|text|No|NULL / sin valor explícito|—|—|—|
|read_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|sent_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## company_portal_consents

Aceptación de condiciones del portal por empresa: versión, evidencia y fecha.

**Módulo:** Formularios y políticas de datos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|company_portal_consents_empresa_id_foreign|empresa_id|empresas.id|NO ACTION|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|company_portal_consents_empresa_id_foreign|INDEX|empresa_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|version|char(36)|No|NULL / sin valor explícito|—|—|Versión del registro o de su estructura.|
|evidence|json|No|NULL / sin valor explícito|—|—|—|
|accepted_at|timestamp|No|NULL / sin valor explícito|—|—|—|


## comprobante_detalles

Líneas de comprobantes electrónicos, productos, impuestos, retenciones y documentos de sustento.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|comprobante_detalles_comprobante_id_foreign|comprobante_id|comprobantes_electronicos.id|CASCADE|NO ACTION|
|comprobante_detalles_factura_detalle_id_foreign|factura_detalle_id|factura_detalles.id|SET NULL|NO ACTION|
|comprobante_detalles_inventario_id_foreign|inventario_id|inventarios.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|facturacion_inventario_movimientos|comprobante_detalle_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|comprobante_detalles_comprobante_id_index|INDEX|comprobante_id|BTREE|
|comprobante_detalles_factura_detalle_id_foreign|INDEX|factura_detalle_id|BTREE|
|comprobante_detalles_inventario_id_foreign|INDEX|inventario_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|comprobante_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|factura_detalle_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|inventario_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|codigo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|codigo_auxiliar|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|cantidad|decimal(18,4)|No|1.0000|—|—|—|
|valor_unitario|decimal(18,6)|No|0.000000|—|—|—|
|descuento_porcentaje|decimal(8,4)|No|0.0000|—|—|—|
|descuento_valor|decimal(18,4)|No|0.0000|—|—|—|
|iva_codigo_porcentaje|varchar(10)|No|4|—|—|—|
|iva_porcentaje|decimal(8,4)|No|15.0000|—|—|—|
|subtotal_sin_impuesto|decimal(18,4)|No|0.0000|—|—|—|
|iva_valor|decimal(18,4)|No|0.0000|—|—|—|
|total_linea|decimal(18,4)|No|0.0000|—|—|—|
|retencion_codigo|varchar(10)|Sí|NULL / sin valor explícito|—|—|—|
|retencion_codigo_retencion|varchar(10)|Sí|NULL / sin valor explícito|—|—|—|
|retencion_base_imponible|decimal(18,4)|No|0.0000|—|—|—|
|retencion_porcentaje|decimal(8,4)|No|0.0000|—|—|—|
|retencion_valor|decimal(18,4)|No|0.0000|—|—|—|
|doc_sustento_tipo|varchar(2)|Sí|NULL / sin valor explícito|—|—|—|
|doc_sustento_numero|varchar(17)|Sí|NULL / sin valor explícito|—|—|—|
|doc_sustento_fecha|date|Sí|NULL / sin valor explícito|—|—|—|
|datos_adicionales|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## comprobantes_electronicos

Cabeceras de comprobantes electrónicos distintos o relacionados con facturas: totales, transporte, XML y estados SRI.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|ce_received_doc_fk|accounting_received_document_id|accounting_received_documents.id|RESTRICT|NO ACTION|
|comprobantes_electronicos_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|comprobantes_electronicos_factura_id_foreign|factura_id|facturas.id|SET NULL|NO ACTION|
|comprobantes_electronicos_persona_id_foreign|persona_id|personas.id|RESTRICT|NO ACTION|
|comprobantes_electronicos_punto_emision_id_foreign|punto_emision_id|facturacion_puntos_emision.id|SET NULL|NO ACTION|
|comprobantes_electronicos_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|comprobante_detalles|comprobante_id|id|CASCADE|
|facturacion_inventario_movimientos|comprobante_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|ce_received_doc_idx|INDEX|accounting_received_document_id|BTREE|
|comprobantes_electronicos_clave_acceso_unique|UNIQUE|clave_acceso|BTREE|
|comprobantes_electronicos_empresa_id_numero_index|INDEX|empresa_id, numero|BTREE|
|comprobantes_electronicos_empresa_id_tipo_estado_index|INDEX|empresa_id, tipo, estado|BTREE|
|comprobantes_electronicos_factura_id_foreign|INDEX|factura_id|BTREE|
|comprobantes_electronicos_persona_id_foreign|INDEX|persona_id|BTREE|
|comprobantes_electronicos_punto_emision_id_foreign|INDEX|punto_emision_id|BTREE|
|comprobantes_electronicos_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|punto_emision_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|persona_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|factura_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|accounting_received_document_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|tipo|varchar(30)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|cod_doc|varchar(2)|No|NULL / sin valor explícito|—|—|—|
|ambiente|varchar(1)|No|1|—|—|—|
|estab|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|pto_emi|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|secuencial|varchar(9)|Sí|NULL / sin valor explícito|—|—|—|
|numero|varchar(17)|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|clave_acceso|varchar(49)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|—|—|—|
|estado|varchar(30)|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|tipo_identificacion|varchar(2)|Sí|NULL / sin valor explícito|—|—|—|
|identificacion|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|razon_social|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|direccion|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|email|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|subtotal_sin_impuestos|decimal(18,4)|No|0.0000|—|—|—|
|total_descuento|decimal(18,4)|No|0.0000|—|—|—|
|total_iva|decimal(18,4)|No|0.0000|—|—|—|
|importe_total|decimal(18,4)|No|0.0000|—|—|—|
|formas_pago|json|Sí|NULL / sin valor explícito|—|—|—|
|ats_sustento_codigo|varchar(2)|No|01|—|—|—|
|ats_parte_relacionada|tinyint(1)|No|0|—|—|—|
|campos_adicionales|json|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_tipo|varchar(2)|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_numero|varchar(17)|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_autorizacion|varchar(49)|Sí|NULL / sin valor explícito|—|—|—|
|documento_sustento_fecha|date|Sí|NULL / sin valor explícito|—|—|—|
|motivo|text|Sí|NULL / sin valor explícito|—|—|—|
|transportista_identificacion|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|transportista_razon_social|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|transportista_placa|varchar(20)|Sí|NULL / sin valor explícito|—|—|—|
|fecha_inicio_transporte|date|Sí|NULL / sin valor explícito|—|—|—|
|fecha_fin_transporte|date|Sí|NULL / sin valor explícito|—|—|—|
|ruta|varchar(300)|Sí|NULL / sin valor explícito|—|—|—|
|observacion|text|Sí|NULL / sin valor explícito|—|—|—|
|xml_generado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|xml_firmado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|xml_autorizado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|numero_autorizacion|varchar(64)|Sí|NULL / sin valor explícito|—|—|—|
|fecha_autorizacion_sri|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_sri|text|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_recepcion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_autorizacion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|ultimo_error_sri|text|Sí|NULL / sin valor explícito|—|—|—|
|sri_intentos|smallint unsigned|No|0|—|—|—|
|emitido_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|autorizado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|anulada_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|inventario_reintegrado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|anulacion_motivo|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## crm_notifications

Notificaciones del CRM por usuario y empresa: título, mensaje, tipo y fecha de lectura.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|crm_notifications_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|
|crm_notifications_user_id_foreign|user_id|users.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|crm_notifications_empresa_id_foreign|INDEX|empresa_id|BTREE|
|crm_notifications_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|titulo|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|mensaje|text|No|NULL / sin valor explícito|—|—|—|
|tipo|varchar(50)|No|INFO|—|—|—|
|read_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## cuenta_cliente_modulo

Tabla puente que habilita módulos comerciales para cada cuenta cliente.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** cuenta_cliente_id, modulo_comercial_id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|cuenta_cliente_modulo_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|CASCADE|NO ACTION|
|cuenta_cliente_modulo_modulo_comercial_id_foreign|modulo_comercial_id|modulos_comerciales.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|cuenta_cliente_modulo_modulo_comercial_id_foreign|INDEX|modulo_comercial_id|BTREE|
|PRIMARY|PRIMARY KEY|cuenta_cliente_id, modulo_comercial_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|PK compuesto, FK|—|Identificador de cuenta cliente.|
|modulo_comercial_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, PK compuesto, FK|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## cuentas_clientes

Cuentas de clientes de la plataforma: nombre, código, estado y vigencia de licencia.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|account_appearances|cuenta_cliente_id|id|CASCADE|
|account_data_policy_defaults|cuenta_cliente_id|id|RESTRICT|
|account_holidays|cuenta_cliente_id|id|CASCADE|
|company_master_schemas|cuenta_cliente_id|id|NO ACTION|
|cuenta_cliente_modulo|cuenta_cliente_id|id|CASCADE|
|empresas|cuenta_cliente_id|id|RESTRICT|
|soporte_autorizaciones|cuenta_cliente_id|id|CASCADE|
|suscripciones|cuenta_cliente_id|id|CASCADE|
|system_mail_configurations|cuenta_cliente_id|id|CASCADE|
|task_labels|cuenta_cliente_id|id|CASCADE|
|users|cuenta_cliente_id|id|SET NULL|
|work_task_templates|cuenta_cliente_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|cuentas_clientes_codigo_unique|UNIQUE|codigo|BTREE|
|cuentas_clientes_licencia_idx|INDEX|activo, licencia_expiracion|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|codigo|varchar(50)|No|NULL / sin valor explícito|UNIQUE|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|licencia_inicio|date|Sí|NULL / sin valor explícito|—|—|—|
|licencia_expiracion|date|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|deleted_at|timestamp|Sí|NULL / sin valor explícito|—|—|Marca de borrado lógico: la fila puede seguir existiendo.|


## documentos_electronicos_admin

Vista SQL de consulta que reúne facturas y comprobantes_electronicos mediante UNION ALL. No guarda filas propias ni admite actualización directa; source_type/source_id identifican el origen y source_key distingue los registros.

**Módulo:** Facturación e inventario. **Clave primaria:** Sin clave primaria declarada.

**Tipo: VISTA SQL.** No almacena filas propias.

```sql
select concat('FACTURA-',`sisglobal`.`facturas`.`id`) AS `source_key`,'FACTURA' AS `source_type`,`sisglobal`.`facturas`.`id` AS `source_id`,`sisglobal`.`facturas`.`empresa_id` AS `empresa_id`,`sisglobal`.`facturas`.`cliente_id` AS `persona_id`,'01' AS `cod_doc`,'FACTURA' AS `tipo`,`sisglobal`.`facturas`.`numero` AS `numero`,`sisglobal`.`facturas`.`clave_acceso` AS `clave_acceso`,`sisglobal`.`facturas`.`numero_autorizacion` AS `numero_autorizacion`,`sisglobal`.`facturas`.`fecha_autorizacion_sri` AS `fecha_autorizacion_sri`,`sisglobal`.`facturas`.`fecha_emision` AS `fecha_emision`,`sisglobal`.`facturas`.`estado` AS `estado`,`sisglobal`.`facturas`.`identificacion_comprador` AS `identificacion`,`sisglobal`.`facturas`.`razon_social_comprador` AS `razon_social`,`sisglobal`.`facturas`.`email_comprador` AS `email`,`sisglobal`.`facturas`.`importe_total` AS `importe_total`,`sisglobal`.`facturas`.`xml_generado` AS `xml_generado`,`sisglobal`.`facturas`.`xml_firmado` AS `xml_firmado`,`sisglobal`.`facturas`.`xml_autorizado` AS `xml_autorizado`,`sisglobal`.`facturas`.`respuesta_sri` AS `respuesta_sri`,`sisglobal`.`facturas`.`respuesta_recepcion_sri` AS `respuesta_recepcion_sri`,`sisglobal`.`facturas`.`respuesta_autorizacion_sri` AS `respuesta_autorizacion_sri`,`sisglobal`.`facturas`.`autorizada_at` AS `autorizado_at`,`sisglobal`.`facturas`.`anulada_at` AS `anulada_at`,`sisglobal`.`facturas`.`anulacion_motivo` AS `anulacion_motivo`,`sisglobal`.`facturas`.`created_at` AS `created_at`,`sisglobal`.`facturas`.`updated_at` AS `updated_at` from `sisglobal`.`facturas` union all select concat('COMPROBANTE-',`sisglobal`.`comprobantes_electronicos`.`id`) AS `CONCAT('COMPROBANTE-', comprobantes_electronicos.id)`,'COMPROBANTE' AS `COMPROBANTE`,`sisglobal`.`comprobantes_electronicos`.`id` AS `id`,`sisglobal`.`comprobantes_electronicos`.`empresa_id` AS `empresa_id`,`sisglobal`.`comprobantes_electronicos`.`persona_id` AS `persona_id`,`sisglobal`.`comprobantes_electronicos`.`cod_doc` AS `cod_doc`,`sisglobal`.`comprobantes_electronicos`.`tipo` AS `tipo`,`sisglobal`.`comprobantes_electronicos`.`numero` AS `numero`,`sisglobal`.`comprobantes_electronicos`.`clave_acceso` AS `clave_acceso`,`sisglobal`.`comprobantes_electronicos`.`numero_autorizacion` AS `numero_autorizacion`,`sisglobal`.`comprobantes_electronicos`.`fecha_autorizacion_sri` AS `fecha_autorizacion_sri`,`sisglobal`.`comprobantes_electronicos`.`fecha_emision` AS `fecha_emision`,`sisglobal`.`comprobantes_electronicos`.`estado` AS `estado`,`sisglobal`.`comprobantes_electronicos`.`identificacion` AS `identificacion`,`sisglobal`.`comprobantes_electronicos`.`razon_social` AS `razon_social`,`sisglobal`.`comprobantes_electronicos`.`email` AS `email`,`sisglobal`.`comprobantes_electronicos`.`importe_total` AS `importe_total`,`sisglobal`.`comprobantes_electronicos`.`xml_generado` AS `xml_generado`,`sisglobal`.`comprobantes_electronicos`.`xml_firmado` AS `xml_firmado`,`sisglobal`.`comprobantes_electronicos`.`xml_autorizado` AS `xml_autorizado`,`sisglobal`.`comprobantes_electronicos`.`respuesta_sri` AS `respuesta_sri`,`sisglobal`.`comprobantes_electronicos`.`respuesta_recepcion_sri` AS `respuesta_recepcion_sri`,`sisglobal`.`comprobantes_electronicos`.`respuesta_autorizacion_sri` AS `respuesta_autorizacion_sri`,`sisglobal`.`comprobantes_electronicos`.`autorizado_at` AS `autorizado_at`,`sisglobal`.`comprobantes_electronicos`.`anulada_at` AS `anulada_at`,`sisglobal`.`comprobantes_electronicos`.`anulacion_motivo` AS `anulacion_motivo`,`sisglobal`.`comprobantes_electronicos`.`created_at` AS `created_at`,`sisglobal`.`comprobantes_electronicos`.`updated_at` AS `updated_at` from `sisglobal`.`comprobantes_electronicos`
```

No tiene claves foráneas declaradas.

Campos con nombre de referencia pero sin FK declarada: source_id, empresa_id, persona_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|source_key|varchar(32)|No||—|—|—|
|source_type|varchar(11)|No||—|—|—|
|source_id|bigint unsigned|No|0|—|—|—|
|empresa_id|bigint unsigned|No|0|—|—|Identificador de empresa.|
|persona_id|bigint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|cod_doc|varchar(2)|No||—|—|—|
|tipo|varchar(30)|No||—|—|—|
|numero|varchar(17)|Sí|NULL / sin valor explícito|—|—|—|
|clave_acceso|varchar(49)|Sí|NULL / sin valor explícito|—|—|—|
|numero_autorizacion|varchar(64)|Sí|NULL / sin valor explícito|—|—|—|
|fecha_autorizacion_sri|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|fecha_emision|date|No|0000-00-00|—|—|—|
|estado|varchar(30)|No||—|—|Estado del registro en su proceso.|
|identificacion|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|razon_social|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|email|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|importe_total|decimal(18,4)|No|0.0000|—|—|—|
|xml_generado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|xml_firmado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|xml_autorizado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_sri|mediumtext|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_recepcion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_autorizacion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|autorizado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|anulada_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|anulacion_motivo|mediumtext|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## email_templates

Plantillas de correo del CRM por empresa, asunto, contenido y estado.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|email_templates_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|emails|email_template_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|email_templates_empresa_id_foreign|INDEX|empresa_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|asunto|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|contenido|longtext|No|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## emails

Historial de correos CRM con destinatarios, contenido, adjuntos y resultado de envío.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|emails_client_id_foreign|client_id|clients.id|SET NULL|NO ACTION|
|emails_email_template_id_foreign|email_template_id|email_templates.id|SET NULL|NO ACTION|
|emails_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|emails_sent_by_foreign|sent_by|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|emails_client_id_foreign|INDEX|client_id|BTREE|
|emails_email_template_id_foreign|INDEX|email_template_id|BTREE|
|emails_empresa_id_sent_at_index|INDEX|empresa_id, sent_at|BTREE|
|emails_empresa_id_status_index|INDEX|empresa_id, status|BTREE|
|emails_sent_by_foreign|INDEX|sent_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|client_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|email_template_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|sent_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|to_email|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|cc|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|bcc|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|subject|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|body|longtext|No|NULL / sin valor explícito|—|—|—|
|attachments|json|Sí|NULL / sin valor explícito|—|—|—|
|status|enum('BORRADOR','ENVIADO','ERROR')|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|error_message|text|Sí|NULL / sin valor explícito|—|—|—|
|sent_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## empresa_user

Tabla puente que asocia usuarios con las empresas a las que pertenecen.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|empresa_user_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|empresa_user_user_id_foreign|user_id|users.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|empresa_user_empresa_id_foreign|INDEX|empresa_id|BTREE|
|empresa_user_unique|UNIQUE|user_id, empresa_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de usuario.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|Identificador de empresa.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## empresas

Empresas administradas en cada cuenta: identificación tributaria, contacto y acceso al formulario/portal.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|empresas_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|empresas_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|account_data_policy_defaults|responsible_company_id|id|RESTRICT|
|accounting_accounts|empresa_id|id|CASCADE|
|accounting_advance_applications|empresa_id|id|CASCADE|
|accounting_advances|empresa_id|id|CASCADE|
|accounting_ats_exports|empresa_id|id|CASCADE|
|accounting_ats_imports|empresa_id|id|CASCADE|
|accounting_ats_reimbursements|empresa_id|id|CASCADE|
|accounting_ats_reports|empresa_id|id|CASCADE|
|accounting_audit_logs|empresa_id|id|CASCADE|
|accounting_bank_reconciliations|empresa_id|id|CASCADE|
|accounting_bank_statement_lines|empresa_id|id|CASCADE|
|accounting_bank_transfers|empresa_id|id|CASCADE|
|accounting_budgets|empresa_id|id|CASCADE|
|accounting_cash_sessions|empresa_id|id|CASCADE|
|accounting_cheques|empresa_id|id|CASCADE|
|accounting_concepts|empresa_id|id|CASCADE|
|accounting_cost_centers|empresa_id|id|CASCADE|
|accounting_entries|empresa_id|id|CASCADE|
|accounting_entry_attachments|empresa_id|id|CASCADE|
|accounting_financial_accounts|empresa_id|id|CASCADE|
|accounting_integration_logs|empresa_id|id|CASCADE|
|accounting_integration_settings|empresa_id|id|CASCADE|
|accounting_inventory_movements|empresa_id|id|CASCADE|
|accounting_inventory_positions|empresa_id|id|CASCADE|
|accounting_open_item_applications|empresa_id|id|CASCADE|
|accounting_open_item_settlements|empresa_id|id|CASCADE|
|accounting_open_items|empresa_id|id|CASCADE|
|accounting_periods|empresa_id|id|CASCADE|
|accounting_received_documents|empresa_id|id|CASCADE|
|accounting_received_withholdings|empresa_id|id|CASCADE|
|accounting_settings|empresa_id|id|CASCADE|
|accounting_vouchers|empresa_id|id|CASCADE|
|accounting_year_closures|empresa_id|id|CASCADE|
|activities|empresa_id|id|CASCADE|
|advisors|empresa_id|id|CASCADE|
|audit_logs|empresa_id|id|SET NULL|
|clients|empresa_id|id|CASCADE|
|company_data_acceptances|empresa_id|id|RESTRICT|
|company_data_policies|empresa_id|id|RESTRICT|
|company_data_policies|responsible_company_id|id|RESTRICT|
|company_master_activities|empresa_id|id|NO ACTION|
|company_master_invitations|empresa_id|id|NO ACTION|
|company_master_profiles|empresa_id|id|NO ACTION|
|company_permit_notices|empresa_id|id|CASCADE|
|company_portal_consents|empresa_id|id|NO ACTION|
|comprobantes_electronicos|empresa_id|id|CASCADE|
|crm_notifications|empresa_id|id|SET NULL|
|email_templates|empresa_id|id|SET NULL|
|emails|empresa_id|id|CASCADE|
|empresa_user|empresa_id|id|CASCADE|
|facturacion_configuraciones|empresa_id|id|CASCADE|
|facturacion_correo_envios|empresa_id|id|CASCADE|
|facturacion_inventario_movimientos|empresa_id|id|CASCADE|
|facturacion_puntos_emision|empresa_id|id|CASCADE|
|facturas|empresa_id|id|CASCADE|
|form_completion_notices|empresa_id|id|RESTRICT|
|hr_annual_records|empresa_id|id|RESTRICT|
|hr_audits|empresa_id|id|RESTRICT|
|hr_employees|empresa_id|id|RESTRICT|
|hr_parameter_versions|empresa_id|id|RESTRICT|
|hr_periods|empresa_id|id|RESTRICT|
|inventario_cargas|empresa_id|id|SET NULL|
|inventarios|empresa_id|id|SET NULL|
|iva_tarifas|empresa_id|id|CASCADE|
|personas|empresa_id|id|CASCADE|
|pipeline_stages|empresa_id|id|SET NULL|
|servicios|empresa_id|id|CASCADE|
|system_mail_configurations|empresa_id|id|SET NULL|
|task_configurations|empresa_id|id|RESTRICT|
|tasks|empresa_id|id|CASCADE|
|template_assignment_requests|empresa_id|id|RESTRICT|
|users|empresa_id|id|SET NULL|
|work_task_settings|empresa_id|id|CASCADE|
|work_task_supervisors|empresa_id|id|CASCADE|
|work_task_templates|empresa_id|id|RESTRICT|
|work_tasks|empresa_id|id|RESTRICT|
|xml_sri_importaciones|empresa_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|empresas_created_by_foreign|INDEX|created_by|BTREE|
|empresas_cuenta_cliente_ruc_unique|UNIQUE|cuenta_cliente_id, ruc|BTREE|
|empresas_estado_index|INDEX|estado|BTREE|
|empresas_form_access_key_unique|UNIQUE|form_access_key|BTREE|
|empresas_ruc_index|INDEX|ruc|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de cuenta cliente.|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|razon_social|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|ruc|varchar(13)|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX|—|—|
|email|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|telefono|varchar(20)|Sí|NULL / sin valor explícito|—|—|—|
|direccion|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|logo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|estado|tinyint(1)|No|1|INDEX|—|Estado del registro en su proceso.|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|deleted_at|timestamp|Sí|NULL / sin valor explícito|—|—|Marca de borrado lógico: la fila puede seguir existiendo.|
|form_access_enabled|tinyint(1)|No|0|—|—|—|
|form_access_key|char(36)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|form_password_hash|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|form_delivery_password|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|form_requires_onboarding|tinyint(1)|No|0|—|—|—|
|form_must_change_password|tinyint(1)|No|0|—|—|—|
|form_policy_accepted_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|


## exports

Control de exportaciones de datos: archivo, clase exportadora, usuario y filas procesadas.

**Módulo:** Infraestructura. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|exports_user_id_foreign|user_id|users.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|exports_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|completed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|file_disk|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|file_name|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|exporter|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|processed_rows|int unsigned|No|0|—|—|—|
|total_rows|int unsigned|No|NULL / sin valor explícito|—|—|—|
|successful_rows|int unsigned|No|0|—|—|—|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## factura_campos_adicionales

Pares nombre/descripción adicionales de cada factura.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|factura_campos_adicionales_factura_id_foreign|factura_id|facturas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|factura_campos_adicionales_factura_id_foreign|INDEX|factura_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|factura_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|nombre|varchar(100)|No|NULL / sin valor explícito|—|—|Nombre.|
|descripcion|varchar(300)|No|NULL / sin valor explícito|—|—|Descripción.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## factura_detalles

Productos o servicios facturados: cantidades, precios, descuentos, IVA y totales de línea.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|factura_detalles_factura_id_foreign|factura_id|facturas.id|CASCADE|NO ACTION|
|factura_detalles_inventario_id_foreign|inventario_id|inventarios.id|SET NULL|NO ACTION|
|factura_detalles_servicio_id_foreign|servicio_id|servicios.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|comprobante_detalles|factura_detalle_id|id|SET NULL|
|facturacion_inventario_movimientos|factura_detalle_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|factura_detalles_factura_id_inventario_id_index|INDEX|factura_id, inventario_id|BTREE|
|factura_detalles_inventario_id_foreign|INDEX|inventario_id|BTREE|
|factura_detalles_servicio_id_foreign|INDEX|servicio_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|factura_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|inventario_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, INDEX, FK|—|—|
|servicio_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|codigo|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|codigo_auxiliar|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|descripcion|text|No|NULL / sin valor explícito|—|—|Descripción.|
|cantidad|decimal(18,4)|No|NULL / sin valor explícito|—|—|—|
|valor_unitario|decimal(18,6)|No|NULL / sin valor explícito|—|—|—|
|descuento_porcentaje|decimal(8,4)|No|0.0000|—|—|—|
|descuento_valor|decimal(18,4)|No|0.0000|—|—|—|
|iva_codigo_porcentaje|varchar(10)|No|4|—|—|—|
|iva_porcentaje|decimal(8,4)|No|15.0000|—|—|—|
|subtotal_sin_impuesto|decimal(18,4)|No|0.0000|—|—|—|
|iva_valor|decimal(18,4)|No|0.0000|—|—|—|
|total_linea|decimal(18,4)|No|0.0000|—|—|—|
|detalles_adicionales|json|Sí|NULL / sin valor explícito|—|—|—|
|informacion_adicional|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## factura_pagos

Formas de pago de una factura, monto, plazo y unidad de tiempo.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|factura_pagos_factura_id_foreign|factura_id|facturas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|factura_pagos_factura_id_foreign|INDEX|factura_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|factura_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|forma_pago|varchar(2)|No|NULL / sin valor explícito|—|—|—|
|total|decimal(18,4)|No|NULL / sin valor explícito|—|—|—|
|plazo|decimal(18,2)|Sí|NULL / sin valor explícito|—|—|—|
|unidad_tiempo|varchar(20)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## facturacion_configuraciones

Parámetros de facturación SRI por empresa, ambiente, establecimiento y certificado de firma.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|facturacion_configuraciones_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|fact_conf_empresa_estab_pto_unique|UNIQUE|empresa_id, estab, pto_emi|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|ambiente|varchar(1)|No|1|—|—|—|
|estab|varchar(3)|No|001|UNIQUE compuesto|—|—|
|pto_emi|varchar(3)|No|001|UNIQUE compuesto|—|—|
|secuencial_factura|int unsigned|No|1|—|—|—|
|dir_establecimiento|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|obligado_contabilidad|varchar(2)|No|NO|—|—|—|
|contribuyente_especial|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|agente_retencion|varchar(8)|Sí|NULL / sin valor explícito|—|—|—|
|regimen_rimpe|varchar(45)|Sí|NULL / sin valor explícito|—|—|—|
|codigo_artesano|varchar(50)|Sí|NULL / sin valor explícito|—|—|—|
|ruc_proveedor|varchar(13)|No|0602866501001|—|—|—|
|certificado_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|certificado_nombre_original|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|certificado_password|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|certificado_serial|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|certificado_subject|text|Sí|NULL / sin valor explícito|—|—|—|
|certificado_issuer|text|Sí|NULL / sin valor explícito|—|—|—|
|certificado_valido_desde|date|Sí|NULL / sin valor explícito|—|—|—|
|certificado_valido_hasta|date|Sí|NULL / sin valor explícito|—|—|—|
|certificado_ruc_detectado|varchar(13)|Sí|NULL / sin valor explícito|—|—|—|
|certificado_validado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## facturacion_correo_envios

Seguimiento de envío por correo de documentos facturados, intentos y errores.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|facturacion_correo_envios_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: source_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|facturacion_correo_envios_empresa_id_foreign|INDEX|empresa_id|BTREE|
|facturacion_correo_envios_estado_created_at_index|INDEX|estado, created_at|BTREE|
|facturacion_correo_envios_source_type_source_id_index|INDEX|source_type, source_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|source_type|varchar(20)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|source_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|destinatario|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|estado|varchar(20)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|intentos|smallint unsigned|No|0|—|—|—|
|ultimo_error|text|Sí|NULL / sin valor explícito|—|—|—|
|enviado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## facturacion_inventario_movimientos

Movimientos de existencias derivados de facturas y comprobantes electrónicos.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|fim_comp_det_fk|comprobante_detalle_id|comprobante_detalles.id|SET NULL|NO ACTION|
|fim_comp_fk|comprobante_id|comprobantes_electronicos.id|SET NULL|NO ACTION|
|fim_empresa_fk|empresa_id|empresas.id|CASCADE|NO ACTION|
|fim_fact_det_fk|factura_detalle_id|factura_detalles.id|SET NULL|NO ACTION|
|fim_factura_fk|factura_id|facturas.id|SET NULL|NO ACTION|
|fim_inventario_fk|inventario_id|inventarios.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|fact_inv_mov_entrada_unique|UNIQUE|tipo, comprobante_detalle_id|BTREE|
|fact_inv_mov_salida_unique|UNIQUE|tipo, factura_detalle_id|BTREE|
|fim_comp_det_fk|INDEX|comprobante_detalle_id|BTREE|
|fim_comp_fk|INDEX|comprobante_id|BTREE|
|fim_empresa_fk|INDEX|empresa_id|BTREE|
|fim_fact_det_fk|INDEX|factura_detalle_id|BTREE|
|fim_factura_fk|INDEX|factura_id|BTREE|
|fim_inventario_fk|INDEX|inventario_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|inventario_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|factura_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|factura_detalle_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE compuesto, INDEX, FK|—|—|
|comprobante_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|comprobante_detalle_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE compuesto, INDEX, FK|—|—|
|tipo|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|cantidad|decimal(18,4)|No|NULL / sin valor explícito|—|—|—|
|referencia|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## facturacion_puntos_emision

Establecimientos y puntos de emisión, dirección y secuenciales por tipo de comprobante.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|facturacion_puntos_emision_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|comprobantes_electronicos|punto_emision_id|id|SET NULL|
|facturas|punto_emision_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|fact_puntos_empresa_estab_pto_unique|UNIQUE|empresa_id, establecimiento, punto_emision|BTREE|
|facturacion_puntos_emision_empresa_id_activo_index|INDEX|empresa_id, activo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|establecimiento|varchar(3)|No|001|UNIQUE compuesto|—|—|
|nombre_comercial|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|direccion_establecimiento|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|punto_emision|varchar(3)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|secuencial_factura|int unsigned|No|1|—|—|—|
|secuencial_nota_credito|int unsigned|No|0|—|—|—|
|secuencial_nota_debito|int unsigned|No|0|—|—|—|
|secuencial_retencion|int unsigned|No|0|—|—|—|
|secuencial_liquidacion_compra|int unsigned|No|0|—|—|—|
|secuencial_guia_remision|int unsigned|No|0|—|—|—|
|informacion_adicional|text|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## facturas

Cabeceras de facturas: comprador, numeración, totales, XML, autorización SRI y anulación.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|facturas_cliente_id_foreign|cliente_id|personas.id|RESTRICT|NO ACTION|
|facturas_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|facturas_punto_emision_id_foreign|punto_emision_id|facturacion_puntos_emision.id|SET NULL|NO ACTION|
|facturas_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_ats_exports|factura_id|id|RESTRICT|
|accounting_received_withholding_supports|factura_id|id|RESTRICT|
|comprobantes_electronicos|factura_id|id|SET NULL|
|factura_campos_adicionales|factura_id|id|CASCADE|
|factura_detalles|factura_id|id|CASCADE|
|factura_pagos|factura_id|id|CASCADE|
|facturacion_inventario_movimientos|factura_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|facturas_clave_acceso_unique|UNIQUE|clave_acceso|BTREE|
|facturas_cliente_id_foreign|INDEX|cliente_id|BTREE|
|facturas_empresa_id_estado_index|INDEX|empresa_id, estado|BTREE|
|facturas_numero_index|INDEX|numero|BTREE|
|facturas_punto_emision_id_foreign|INDEX|punto_emision_id|BTREE|
|facturas_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|punto_emision_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|cliente_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|ambiente|varchar(1)|No|1|—|—|—|
|estab|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|pto_emi|varchar(3)|Sí|NULL / sin valor explícito|—|—|—|
|secuencial|varchar(9)|Sí|NULL / sin valor explícito|—|—|—|
|numero|varchar(17)|Sí|NULL / sin valor explícito|INDEX|—|—|
|clave_acceso|varchar(49)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|fecha_emision|date|No|NULL / sin valor explícito|—|—|—|
|estado|varchar(30)|No|BORRADOR|INDEX compuesto|—|Estado del registro en su proceso.|
|tipo_identificacion_comprador|varchar(2)|No|NULL / sin valor explícito|—|—|—|
|identificacion_comprador|varchar(30)|No|NULL / sin valor explícito|—|—|—|
|razon_social_comprador|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|direccion_comprador|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|email_comprador|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|subtotal_sin_impuestos|decimal(18,4)|No|0.0000|—|—|—|
|total_descuento|decimal(18,4)|No|0.0000|—|—|—|
|total_iva|decimal(18,4)|No|0.0000|—|—|—|
|importe_total|decimal(18,4)|No|0.0000|—|—|—|
|forma_pago|varchar(2)|No|20|—|—|—|
|forma_pago_valor|decimal(18,4)|Sí|NULL / sin valor explícito|—|—|—|
|observacion|text|Sí|NULL / sin valor explícito|—|—|—|
|xml_generado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|xml_firmado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|xml_autorizado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|numero_autorizacion|varchar(64)|Sí|NULL / sin valor explícito|—|—|—|
|fecha_autorizacion_sri|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_sri|text|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_recepcion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_autorizacion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|ultimo_error_sri|text|Sí|NULL / sin valor explícito|—|—|—|
|sri_intentos|smallint unsigned|No|0|—|—|—|
|emitida_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|autorizada_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|anulada_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|anulacion_motivo|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## failed_jobs

Trabajos de cola fallidos con carga serializada, excepción y fecha del fallo.

**Módulo:** Infraestructura. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|failed_jobs_uuid_unique|UNIQUE|uuid|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|uuid|varchar(255)|No|NULL / sin valor explícito|UNIQUE|—|—|
|connection|text|No|NULL / sin valor explícito|—|—|—|
|queue|text|No|NULL / sin valor explícito|—|—|—|
|payload|longtext|No|NULL / sin valor explícito|—|—|—|
|exception|longtext|No|NULL / sin valor explícito|—|—|—|
|failed_at|timestamp|No|CURRENT_TIMESTAMP|—|DEFAULT_GENERATED|—|


## form_completion_notices

Avisos de formularios completados: empresa, usuario, evento, destinatario y fecha de envío.

**Módulo:** Maestro de clientes y vencimientos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|form_completion_notices_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|form_completion_notices_user_id_foreign|user_id|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|form_completion_notices_empresa_id_foreign|INDEX|empresa_id|BTREE|
|form_completion_notices_event_key_user_id_unique|UNIQUE|event_key, user_id|BTREE|
|form_completion_notices_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX, FK|—|Identificador de usuario.|
|event_key|varchar(180)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|recipient|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|description|varchar(255)|No|NULL / sin valor explícito|—|—|Descripción.|
|completed_at|timestamp|No|NULL / sin valor explícito|—|—|—|
|sent_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_accounting_entries

Líneas de asiento derivadas de nómina por período, huella de control y responsable.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_accounting_entries_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_accounting_entries_period_id_foreign|period_id|hr_periods.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_accounting_entries_created_by_foreign|INDEX|created_by|BTREE|
|hr_accounting_entries_period_id_unique|UNIQUE|period_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|period_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|—|
|lines|json|No|NULL / sin valor explícito|—|—|—|
|fingerprint|char(64)|No|NULL / sin valor explícito|—|—|Huella para identificar una operación o conjunto de datos.|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_adjustments

Ajustes a roles de pago: líneas, neto en centavos, motivo, estado y liquidación.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_adjustments_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_adjustments_payslip_id_foreign|payslip_id|hr_payslips.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_adjustments_created_by_foreign|INDEX|created_by|BTREE|
|hr_adjustments_payslip_id_foreign|INDEX|payslip_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|payslip_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|lines|json|No|NULL / sin valor explícito|—|—|—|
|net_cents|bigint|No|NULL / sin valor explícito|—|—|Importe almacenado en centavos.|
|reason|text|No|NULL / sin valor explícito|—|—|—|
|status|varchar(255)|No|REGISTRADO|—|—|Estado del registro en su proceso.|
|reference|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|settled_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_annual_records

Registros anuales de recursos humanos con tipo, clave y copia de datos del momento.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_annual_records_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_annual_records_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_annual_records_created_by_foreign|INDEX|created_by|BTREE|
|hr_annual_records_empresa_id_type_record_key_unique|UNIQUE|empresa_id, type, record_key|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|type|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|record_key|varchar(80)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|snapshot|json|No|NULL / sin valor explícito|—|—|Copia estructurada de los datos/cálculo en ese momento.|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_attendance

Asistencia diaria: empleado, entrada, salida, descanso, tipo y justificación.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_attendance_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_attendance_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_attendance_created_by_foreign|INDEX|created_by|BTREE|
|hr_attendance_employee_id_date_unique|UNIQUE|employee_id, date|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|date|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|entry|time|Sí|NULL / sin valor explícito|—|—|—|
|exit|time|Sí|NULL / sin valor explícito|—|—|—|
|break_minutes|smallint unsigned|No|0|—|—|—|
|type|varchar(30)|No|NULL / sin valor explícito|—|—|—|
|reason|text|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_audits

Auditoría de recursos humanos por empresa, usuario, acción, objeto y datos.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_audits_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|hr_audits_user_id_foreign|user_id|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_audits_empresa_id_foreign|INDEX|empresa_id|BTREE|
|hr_audits_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|action|varchar(60)|No|NULL / sin valor explícito|—|—|—|
|subject|varchar(100)|No|NULL / sin valor explícito|—|—|—|
|data|json|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|No|NULL / sin valor explícito|—|—|Fecha/hora de creación.|


## hr_benefit_payments

Pagos de beneficios laborales por empleado y período, monto en centavos y cálculo guardado.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_benefit_payments_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_benefit_payments_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_benefit_payments_created_by_foreign|INDEX|created_by|BTREE|
|hr_benefit_unique|UNIQUE|employee_id, type, starts_on, ends_on|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|type|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|starts_on|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|ends_on|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|amount_cents|bigint unsigned|No|NULL / sin valor explícito|—|—|Importe almacenado en centavos.|
|snapshot|json|No|NULL / sin valor explícito|—|—|Copia estructurada de los datos/cálculo en ese momento.|
|reference|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_contracts

Condiciones laborales vigentes desde una fecha: salario en centavos, cargo, región y beneficios.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_contracts_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_contracts_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_contracts_created_by_foreign|INDEX|created_by|BTREE|
|hr_contracts_employee_id_effective_on_unique|UNIQUE|employee_id, effective_on|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|effective_on|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|salary_cents|bigint unsigned|No|NULL / sin valor explícito|—|—|Importe almacenado en centavos.|
|position|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|department|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|region|varchar(20)|No|NULL / sin valor explícito|—|—|—|
|contract_type|varchar(30)|No|INDEFINIDO|—|—|—|
|thirteenth_monthly|tinyint(1)|No|1|—|—|—|
|fourteenth_monthly|tinyint(1)|No|1|—|—|—|
|reserve_iess|tinyint(1)|No|0|—|—|—|
|sector_minimum_cents|int unsigned|No|0|—|—|Importe almacenado en centavos.|
|reason|text|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|iece|tinyint(1)|No|0|—|—|—|
|secap|tinyint(1)|No|0|—|—|—|


## hr_documents

Documentos del empleado con ruta, nombre original y huella SHA-256.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_documents_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_documents_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_documents_created_by_foreign|INDEX|created_by|BTREE|
|hr_documents_employee_id_foreign|INDEX|employee_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|name|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|path|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|sha256|varchar(64)|No|NULL / sin valor explícito|—|—|—|
|original_name|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_employees

Ficha del empleado: identificación, contacto, fechas laborales y datos bancarios cifrados.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_employees_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|hr_employees_previous_employment_id_foreign|previous_employment_id|hr_employees.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|hr_attendance|employee_id|id|RESTRICT|
|hr_benefit_payments|employee_id|id|RESTRICT|
|hr_contracts|employee_id|id|RESTRICT|
|hr_documents|employee_id|id|RESTRICT|
|hr_employees|previous_employment_id|id|RESTRICT|
|hr_leaves|employee_id|id|RESTRICT|
|hr_loans|employee_id|id|RESTRICT|
|hr_novelties|employee_id|id|RESTRICT|
|hr_payslips|employee_id|id|RESTRICT|
|hr_tax_projections|employee_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_employees_previous_employment_id_foreign|INDEX|previous_employment_id|BTREE|
|hr_employment_identity_unique|UNIQUE|empresa_id, identification, started_on|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|identification|varchar(20)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|identification_type|varchar(12)|No|CEDULA|—|—|—|
|name|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|email|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|phone|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|birth_date|date|No|NULL / sin valor explícito|—|—|—|
|started_on|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|ended_on|date|Sí|NULL / sin valor explícito|—|—|—|
|bank_data|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|details|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|previous_employment_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|


## hr_leaves

Permisos o ausencias de empleados con rango de fechas, tipo, motivo, estado y revisor.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_leaves_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_leaves_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|
|hr_leaves_reviewed_by_foreign|reviewed_by|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_leaves_created_by_foreign|INDEX|created_by|BTREE|
|hr_leaves_employee_id_foreign|INDEX|employee_id|BTREE|
|hr_leaves_reviewed_by_foreign|INDEX|reviewed_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|starts_on|date|No|NULL / sin valor explícito|—|—|—|
|ends_on|date|No|NULL / sin valor explícito|—|—|—|
|type|varchar(30)|No|NULL / sin valor explícito|—|—|—|
|status|varchar(20)|No|SOLICITADA|—|—|Estado del registro en su proceso.|
|reason|text|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|reviewed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario revisor.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_loans

Préstamos a empleados: capital y cuota en centavos, primer mes y referencia.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_loans_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_loans_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_loans_created_by_foreign|INDEX|created_by|BTREE|
|hr_loans_employee_id_foreign|INDEX|employee_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|principal_cents|bigint unsigned|No|NULL / sin valor explícito|—|—|Importe almacenado en centavos.|
|installment_cents|bigint unsigned|No|NULL / sin valor explícito|—|—|Importe almacenado en centavos.|
|first_month|date|No|NULL / sin valor explícito|—|—|—|
|reference|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|reason|text|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_mail_deliveries

Envíos por correo de roles de pago: destinatario, estado, error y fecha.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_mail_deliveries_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_mail_deliveries_payslip_id_foreign|payslip_id|hr_payslips.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_mail_deliveries_created_by_foreign|INDEX|created_by|BTREE|
|hr_mail_deliveries_payslip_id_unique|UNIQUE|payslip_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|payslip_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|recipient|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|status|varchar(255)|No|PENDIENTE|—|—|Estado del registro en su proceso.|
|sent_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|last_error|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_novelties

Novedades de nómina por período/empleado: fecha, tipo, cantidad y razón.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_novelties_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_novelties_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|
|hr_novelties_period_id_foreign|period_id|hr_periods.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_novelties_created_by_foreign|INDEX|created_by|BTREE|
|hr_novelties_employee_id_foreign|INDEX|employee_id|BTREE|
|hr_novelties_period_id_foreign|INDEX|period_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|period_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|date|date|No|NULL / sin valor explícito|—|—|—|
|type|varchar(30)|No|NULL / sin valor explícito|—|—|—|
|quantity|decimal(10,2)|No|NULL / sin valor explícito|—|—|—|
|reason|text|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_parameter_versions

Parámetros de nómina por empresa y año con fuente y versión guardada.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_parameter_versions_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_parameter_versions_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_parameter_versions_created_by_foreign|INDEX|created_by|BTREE|
|hr_parameter_versions_empresa_id_year_index|INDEX|empresa_id, year|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|year|smallint unsigned|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|parameters|json|No|NULL / sin valor explícito|—|—|—|
|source|text|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_payslips

Roles de pago por empleado/período: cálculo guardado, neto en centavos y datos del pago.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_payslips_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|
|hr_payslips_period_id_foreign|period_id|hr_periods.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|hr_adjustments|payslip_id|id|RESTRICT|
|hr_mail_deliveries|payslip_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_payslips_employee_id_foreign|INDEX|employee_id|BTREE|
|hr_payslips_period_id_employee_id_unique|UNIQUE|period_id, employee_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|period_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|—|
|snapshot|json|No|NULL / sin valor explícito|—|—|Copia estructurada de los datos/cálculo en ese momento.|
|bank_data|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|net_cents|bigint unsigned|No|NULL / sin valor explícito|—|—|Importe almacenado en centavos.|
|paid_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|payment_reference|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_periods

Períodos de nómina: mes, estado, revisión, parámetros, neto y aprobación/cierre.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_periods_approved_by_foreign|approved_by|users.id|RESTRICT|NO ACTION|
|hr_periods_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|hr_accounting_entries|period_id|id|RESTRICT|
|hr_novelties|period_id|id|RESTRICT|
|hr_payslips|period_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_periods_approved_by_foreign|INDEX|approved_by|BTREE|
|hr_periods_empresa_id_month_unique|UNIQUE|empresa_id, month|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|month|date|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|status|varchar(20)|No|BORRADOR|—|—|Estado del registro en su proceso.|
|revision|int unsigned|No|0|—|—|—|
|parameters|json|Sí|NULL / sin valor explícito|—|—|—|
|fingerprint|varchar(64)|Sí|NULL / sin valor explícito|—|—|Huella para identificar una operación o conjunto de datos.|
|net_cents|bigint unsigned|No|0|—|—|Importe almacenado en centavos.|
|approved_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario aprobador.|
|approved_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|closed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## hr_tax_projections

Proyecciones tributarias de empleados por año, datos del cálculo y responsable.

**Módulo:** Recursos humanos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|hr_tax_projections_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|hr_tax_projections_employee_id_foreign|employee_id|hr_employees.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|hr_tax_projections_created_by_foreign|INDEX|created_by|BTREE|
|hr_tax_projections_employee_id_year_unique|UNIQUE|employee_id, year|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|employee_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|year|smallint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|data|json|No|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## inventario_carga_detalles

Filas de cargas de inventario: valores importados, validación, errores y datos originales.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|inventario_carga_detalles_inventario_carga_id_foreign|inventario_carga_id|inventario_cargas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|inventario_carga_detalles_codigo_index|INDEX|codigo|BTREE|
|inventario_carga_detalles_inventario_carga_id_valido_index|INDEX|inventario_carga_id, valido|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|inventario_carga_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|fila|int unsigned|No|NULL / sin valor explícito|—|—|—|
|codigo|varchar(255)|Sí|NULL / sin valor explícito|INDEX|—|—|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|cantidad|decimal(18,4)|Sí|NULL / sin valor explícito|—|—|—|
|valor_unitario|decimal(18,6)|Sí|NULL / sin valor explícito|—|—|—|
|valor_total|decimal(18,4)|Sí|NULL / sin valor explícito|—|—|—|
|iva|decimal(18,4)|No|0.0000|—|—|—|
|descuento|decimal(18,4)|No|0.0000|—|—|—|
|valor_venta_publico|decimal(18,4)|Sí|NULL / sin valor explícito|—|—|—|
|marca|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|modelo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|chasis|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|ram|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|motor|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|color|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|anio|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|placa|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|clase|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|subclase_tipo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|pais_origen|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|combustible|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|cilindraje|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|valido|tinyint(1)|No|0|INDEX compuesto|—|—|
|errores|json|Sí|NULL / sin valor explícito|—|—|—|
|raw|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## inventario_cargas

Cabeceras de importación de inventario: archivo, estado, cantidades, totales y errores.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|inventario_cargas_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|
|inventario_cargas_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|inventario_carga_detalles|inventario_carga_id|id|CASCADE|
|inventarios|inventario_carga_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|inventario_cargas_empresa_id_estado_index|INDEX|empresa_id, estado|BTREE|
|inventario_cargas_user_id_foreign|INDEX|user_id|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|tipo|varchar(30)|No|PRODUCTOS|—|—|—|
|archivo_nombre|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|estado|varchar(30)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|total_items|int unsigned|No|0|—|—|—|
|items_validos|int unsigned|No|0|—|—|—|
|items_con_error|int unsigned|No|0|—|—|—|
|total_cantidad|decimal(18,4)|No|0.0000|—|—|—|
|subtotal|decimal(18,4)|No|0.0000|—|—|—|
|total_iva|decimal(18,4)|No|0.0000|—|—|—|
|total_descuento|decimal(18,4)|No|0.0000|—|—|—|
|total_inventario|decimal(18,4)|No|0.0000|—|—|—|
|errores|json|Sí|NULL / sin valor explícito|—|—|—|
|procesado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## inventarios

Catálogo/existencias de artículos y vehículos: código, cantidades, precios y características.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|inventarios_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|
|inventarios_inventario_carga_id_foreign|inventario_carga_id|inventario_cargas.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_inventory_movements|inventario_id|id|RESTRICT|
|accounting_inventory_positions|inventario_id|id|RESTRICT|
|comprobante_detalles|inventario_id|id|SET NULL|
|factura_detalles|inventario_id|id|SET NULL|
|facturacion_inventario_movimientos|inventario_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|inventarios_chasis_index|INDEX|chasis|BTREE|
|inventarios_empresa_id_codigo_index|INDEX|empresa_id, codigo|BTREE|
|inventarios_empresa_id_estado_index|INDEX|empresa_id, estado|BTREE|
|inventarios_inventario_carga_id_foreign|INDEX|inventario_carga_id|BTREE|
|inventarios_ram_index|INDEX|ram|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|inventario_carga_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|tipo|varchar(30)|No|PRODUCTO|—|—|—|
|codigo|varchar(255)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|descripcion|text|No|NULL / sin valor explícito|—|—|Descripción.|
|cantidad|decimal(18,4)|No|0.0000|—|—|—|
|valor_unitario|decimal(18,6)|No|0.000000|—|—|—|
|valor_total|decimal(18,4)|No|0.0000|—|—|—|
|iva|decimal(18,4)|No|0.0000|—|—|—|
|descuento|decimal(18,4)|No|0.0000|—|—|—|
|valor_venta_publico|decimal(18,4)|Sí|NULL / sin valor explícito|—|—|—|
|marca|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|modelo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|chasis|varchar(255)|Sí|NULL / sin valor explícito|INDEX|—|—|
|ram|varchar(255)|Sí|NULL / sin valor explícito|INDEX|—|—|
|motor|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|color|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|anio|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|placa|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|clase|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|subclase_tipo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|pais_origen|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|combustible|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|cilindraje|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|estado|varchar(30)|No|ACTIVO|INDEX compuesto|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## iva_tarifas

Tarifas de IVA por empresa, códigos, porcentaje y vigencia.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|iva_tarifas_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_voucher_lines|iva_tarifa_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|iva_tarifas_codigo_porcentaje_activo_index|INDEX|codigo_porcentaje, activo|BTREE|
|iva_tarifas_empresa_id_activo_index|INDEX|empresa_id, activo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|codigo_porcentaje|varchar(10)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|porcentaje|decimal(8,4)|No|0.0000|—|—|—|
|vigente_desde|date|Sí|NULL / sin valor explícito|—|—|—|
|vigente_hasta|date|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## job_batches

Lotes de trabajos en segundo plano: cantidad, pendientes, fallidos y finalización.

**Módulo:** Infraestructura. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|varchar(255)|No|NULL / sin valor explícito|PK|—|Identificador del registro.|
|name|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|total_jobs|int|No|NULL / sin valor explícito|—|—|—|
|pending_jobs|int|No|NULL / sin valor explícito|—|—|—|
|failed_jobs|int|No|NULL / sin valor explícito|—|—|—|
|failed_job_ids|longtext|No|NULL / sin valor explícito|—|—|—|
|options|mediumtext|Sí|NULL / sin valor explícito|—|—|—|
|cancelled_at|int|Sí|NULL / sin valor explícito|—|—|—|
|created_at|int|No|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|finished_at|int|Sí|NULL / sin valor explícito|—|—|—|


## jobs

Cola de trabajos pendientes: carga serializada, intentos y tiempos de disponibilidad/reserva.

**Módulo:** Infraestructura. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|jobs_queue_reserved_at_available_at_index|INDEX|queue, reserved_at, available_at|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|queue|varchar(255)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|payload|longtext|No|NULL / sin valor explícito|—|—|—|
|attempts|tinyint unsigned|No|NULL / sin valor explícito|—|—|—|
|reserved_at|int unsigned|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|available_at|int unsigned|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|created_at|int unsigned|No|NULL / sin valor explícito|—|—|Fecha/hora de creación.|


## legal_client_forms

Formularios de personas jurídicas: datos, documentos, aceptación, verificación y firma por año.

**Módulo:** Formularios y políticas de datos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|legal_client_forms_persona_id_foreign|persona_id|personas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|legal_client_forms_annual_person_index|INDEX|persona_id|BTREE|
|legal_client_forms_persona_id_form_year_unique|UNIQUE|persona_id, form_year|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|persona_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|—|
|datos|json|No|NULL / sin valor explícito|—|—|—|
|documentos|json|Sí|NULL / sin valor explícito|—|—|—|
|aceptacion|json|Sí|NULL / sin valor explícito|—|—|—|
|verificacion|json|Sí|NULL / sin valor explícito|—|—|—|
|version|int unsigned|No|1|—|—|Versión del registro o de su estructura.|
|estado|varchar(255)|No|BORRADOR|—|—|Estado del registro en su proceso.|
|enviado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|signature_version|char(36)|Sí|NULL / sin valor explícito|—|—|—|
|signed_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|signing_pdf|longtext|Sí|NULL / sin valor explícito|—|—|—|
|form_year|smallint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|


## migrations

Registro técnico de migraciones de esquema ejecutadas y lote de ejecución.

**Módulo:** Infraestructura. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|int unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|migration|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|batch|int|No|NULL / sin valor explícito|—|—|—|


## model_has_permissions

Asignación directa de permisos a modelos mediante tipo de modelo e identificador.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** permission_id, model_id, model_type.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|model_has_permissions_permission_id_foreign|permission_id|permissions.id|CASCADE|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: model_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|model_has_permissions_model_id_model_type_index|INDEX|model_id, model_type|BTREE|
|PRIMARY|PRIMARY KEY|permission_id, model_id, model_type|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|permission_id|bigint unsigned|No|NULL / sin valor explícito|PK compuesto, FK|—|—|
|model_type|varchar(255)|No|NULL / sin valor explícito|INDEX compuesto, PK compuesto|—|—|
|model_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, PK compuesto|—|—|


## model_has_roles

Asignación de roles a modelos mediante tipo de modelo e identificador.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** role_id, model_id, model_type.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|model_has_roles_role_id_foreign|role_id|roles.id|CASCADE|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: model_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|model_has_roles_model_id_model_type_index|INDEX|model_id, model_type|BTREE|
|PRIMARY|PRIMARY KEY|role_id, model_id, model_type|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|role_id|bigint unsigned|No|NULL / sin valor explícito|PK compuesto, FK|—|—|
|model_type|varchar(255)|No|NULL / sin valor explícito|INDEX compuesto, PK compuesto|—|—|
|model_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, PK compuesto|—|—|


## modulo_plan

Tabla puente que define los módulos incluidos en cada plan comercial.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** plan_id, modulo_comercial_id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|modulo_plan_modulo_comercial_id_foreign|modulo_comercial_id|modulos_comerciales.id|CASCADE|NO ACTION|
|modulo_plan_plan_id_foreign|plan_id|planes.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|modulo_plan_modulo_comercial_id_foreign|INDEX|modulo_comercial_id|BTREE|
|PRIMARY|PRIMARY KEY|plan_id, modulo_comercial_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|plan_id|bigint unsigned|No|NULL / sin valor explícito|PK compuesto, FK|—|—|
|modulo_comercial_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, PK compuesto, FK|—|—|


## modulos_comerciales

Catálogo de módulos contratables con precios, icono, orden y estado.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|cuenta_cliente_modulo|modulo_comercial_id|id|CASCADE|
|modulo_plan|modulo_comercial_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|modulos_comerciales_codigo_unique|UNIQUE|codigo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|codigo|varchar(50)|No|NULL / sin valor explícito|UNIQUE|—|—|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|icono|varchar(50)|Sí|NULL / sin valor explícito|—|—|—|
|precio_mensual|decimal(10,2)|No|0.00|—|—|—|
|precio_anual|decimal(10,2)|No|0.00|—|—|—|
|orden|int unsigned|No|0|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## natural_client_forms

Formularios de personas naturales: datos, declaraciones, firma, año y estado de envío.

**Módulo:** Formularios y políticas de datos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|natural_client_forms_persona_id_foreign|persona_id|personas.id|CASCADE|NO ACTION|
|natural_client_forms_updated_by_foreign|updated_by|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|natural_client_forms_annual_person_index|INDEX|persona_id|BTREE|
|natural_client_forms_persona_id_form_year_unique|UNIQUE|persona_id, form_year|BTREE|
|natural_client_forms_updated_by_foreign|INDEX|updated_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|persona_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|—|
|datos|json|No|NULL / sin valor explícito|—|—|—|
|estado|varchar(255)|No|BORRADOR|—|—|Estado del registro en su proceso.|
|version|int unsigned|No|1|—|—|Versión del registro o de su estructura.|
|firma_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|declaraciones|json|Sí|NULL / sin valor explícito|—|—|—|
|enviado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|updated_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario que actualizó.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|signature_version|char(36)|Sí|NULL / sin valor explícito|—|—|—|
|signed_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|signing_pdf|longtext|Sí|NULL / sin valor explícito|—|—|—|
|form_year|smallint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|


## paises

Catálogo de países con códigos ISO, nacionalidad y estado.

**Módulo:** Catálogos. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|personas|nacionalidad_id|id|SET NULL|
|personas|pais_emision_id|id|SET NULL|
|personas|pais_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|paises_codigo_iso2_unique|UNIQUE|codigo_iso2|BTREE|
|paises_codigo_iso3_unique|UNIQUE|codigo_iso3|BTREE|
|paises_codigo_unique|UNIQUE|codigo|BTREE|
|paises_nombre_unique|UNIQUE|nombre|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|codigo|varchar(10)|No|NULL / sin valor explícito|UNIQUE|—|—|
|codigo_iso2|varchar(2)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|codigo_iso3|varchar(3)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|nombre|varchar(150)|No|NULL / sin valor explícito|UNIQUE|—|Nombre.|
|nacionalidad|varchar(150)|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## paises_tableclaear

Tabla de propósito no confirmado: solo contiene id y fechas de creación/actualización; no asumir que es el catálogo de países.

**Módulo:** Catálogos. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## password_reset_tokens

Tokens de recuperación de contraseña vinculados al correo y fecha de creación.

**Módulo:** Infraestructura. **Clave primaria:** email.

No tiene claves foráneas declaradas.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|email|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|email|varchar(255)|No|NULL / sin valor explícito|PK|—|—|
|token|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|


## permissions

Catálogo de permisos de acceso y guard de autenticación.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|model_has_permissions|permission_id|id|CASCADE|
|role_has_permissions|permission_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|permissions_name_guard_name_unique|UNIQUE|name, guard_name|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|name|varchar(255)|No|NULL / sin valor explícito|UNIQUE compuesto|—|Nombre.|
|guard_name|varchar(255)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## personas

Maestro de personas/terceros por empresa: identidad, contacto, ubicación, datos tributarios y acceso a formularios.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|personas_actividad_economica_id_foreign|actividad_economica_id|actividades_economicas.id|SET NULL|NO ACTION|
|personas_ciudad_id_foreign|ciudad_id|cantones.id|SET NULL|NO ACTION|
|personas_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|personas_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|personas_nacionalidad_id_foreign|nacionalidad_id|paises.id|SET NULL|NO ACTION|
|personas_pais_emision_id_foreign|pais_emision_id|paises.id|SET NULL|NO ACTION|
|personas_pais_id_foreign|pais_id|paises.id|SET NULL|NO ACTION|
|personas_provincia_id_foreign|provincia_id|provincias.id|SET NULL|NO ACTION|
|personas_tipo_contribuyente_id_foreign|tipo_contribuyente_id|tipos_contribuyentes.id|SET NULL|NO ACTION|
|personas_updated_by_foreign|updated_by|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|accounting_open_items|third_party_id|id|SET NULL|
|accounting_received_documents|provider_id|id|SET NULL|
|accounting_received_withholdings|customer_id|id|SET NULL|
|clients|persona_id|id|SET NULL|
|company_data_acceptances|persona_id|id|RESTRICT|
|comprobantes_electronicos|persona_id|id|RESTRICT|
|facturas|cliente_id|id|RESTRICT|
|legal_client_forms|persona_id|id|CASCADE|
|natural_client_forms|persona_id|id|CASCADE|
|proveedor_pn_formularios|persona_id|id|CASCADE|
|users|persona_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|personas_actividad_economica_id_foreign|INDEX|actividad_economica_id|BTREE|
|personas_ciudad_id_foreign|INDEX|ciudad_id|BTREE|
|personas_created_by_foreign|INDEX|created_by|BTREE|
|personas_empresa_id_index|INDEX|empresa_id|BTREE|
|personas_empresa_tipo_identificacion_unique|UNIQUE|empresa_id, tipo_identificacion, identificacion|BTREE|
|personas_estado_index|INDEX|estado|BTREE|
|personas_identificacion_index|INDEX|identificacion|BTREE|
|personas_nacionalidad_id_foreign|INDEX|nacionalidad_id|BTREE|
|personas_pais_emision_id_foreign|INDEX|pais_emision_id|BTREE|
|personas_pais_id_foreign|INDEX|pais_id|BTREE|
|personas_provincia_id_foreign|INDEX|provincia_id|BTREE|
|personas_tipo_contribuyente_id_foreign|INDEX|tipo_contribuyente_id|BTREE|
|personas_tipo_persona_index|INDEX|tipo_persona|BTREE|
|personas_tipo_relacion_index|INDEX|tipo_relacion|BTREE|
|personas_updated_by_foreign|INDEX|updated_by|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|Identificador de empresa.|
|tipo_persona|enum('PN','PJ','PROVEEDOR_NATURAL','PROVEEDOR_JURIDICO')|No|NULL / sin valor explícito|INDEX|—|—|
|tipo_identificacion|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|identificacion|varchar(30)|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX|—|—|
|pais_emision_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|nacionalidad_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|nombres|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|apellidos|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|razon_social|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|nombre_comercial|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|nombre_completo|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|email|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|telefono|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|telefono_secundario|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|direccion|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|pais_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|provincia_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|ciudad_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|actividad_economica_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|tipo_contribuyente_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|obligado_contabilidad|tinyint(1)|No|0|—|—|—|
|agente_retencion|tinyint(1)|No|0|—|—|—|
|contribuyente_especial|tinyint(1)|No|0|—|—|—|
|requiere_formulario|tinyint(1)|No|0|—|—|—|
|formulario_habilitado|tinyint(1)|No|0|—|—|—|
|password|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|debe_cambiar_password|tinyint(1)|No|0|—|—|—|
|politica_datos_aceptada_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|origen_registro|enum('ADMIN','IMPORTACION','CRM','WEB')|No|ADMIN|—|—|—|
|crm_habilitado|tinyint(1)|No|0|—|—|—|
|observacion|text|Sí|NULL / sin valor explícito|—|—|—|
|estado|enum('ACTIVO','INACTIVO','BLOQUEADO','ARCHIVADO')|No|ACTIVO|INDEX|—|Estado del registro en su proceso.|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|updated_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario que actualizó.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|tipo_relacion|varchar(20)|No|CLIENTE|INDEX|—|—|


## pipeline_stages

Etapas del proceso comercial CRM, orden, probabilidad y color.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|pipeline_stages_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|clients|pipeline_stage_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|pipeline_stages_empresa_id_codigo_unique|UNIQUE|empresa_id, codigo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|nombre|varchar(100)|No|NULL / sin valor explícito|—|—|Nombre.|
|codigo|varchar(50)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|orden|int unsigned|No|1|—|—|—|
|probabilidad|decimal(5,2)|No|0.00|—|—|—|
|color|varchar(20)|No|gray|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## planes

Planes de suscripción: precios, límites de empresas/usuarios y estado.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|modulo_plan|plan_id|id|CASCADE|
|solicitudes_comerciales|plan_id|id|RESTRICT|
|suscripciones|plan_id|id|RESTRICT|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|planes_codigo_unique|UNIQUE|codigo|BTREE|
|PRIMARY|PRIMARY KEY|id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|codigo|varchar(50)|No|NULL / sin valor explícito|UNIQUE|—|—|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|precio_mensual|decimal(10,2)|No|NULL / sin valor explícito|—|—|—|
|precio_anual|decimal(10,2)|No|NULL / sin valor explícito|—|—|—|
|limite_empresas|int unsigned|No|1|—|—|—|
|limite_usuarios|int unsigned|No|3|—|—|—|
|destacado|tinyint(1)|No|0|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|orden|int unsigned|No|0|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## proveedor_pn_formularios

Formularios de proveedores personas naturales con actividad, finanzas, documentos y firma.

**Módulo:** Formularios y políticas de datos. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|proveedor_pn_formularios_persona_id_foreign|persona_id|personas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|proveedor_pn_formularios_annual_person_index|INDEX|persona_id|BTREE|
|proveedor_pn_formularios_estado_index|INDEX|estado|BTREE|
|proveedor_pn_formularios_persona_id_form_year_unique|UNIQUE|persona_id, form_year|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|persona_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|—|
|datos_generales|json|Sí|NULL / sin valor explícito|—|—|—|
|actividad_finanzas|json|Sí|NULL / sin valor explícito|—|—|—|
|declaraciones_documentos|json|Sí|NULL / sin valor explícito|—|—|—|
|documentos|json|Sí|NULL / sin valor explícito|—|—|—|
|estado|varchar(30)|No|ENVIADO|INDEX|—|Estado del registro en su proceso.|
|enviado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|signature_version|char(36)|Sí|NULL / sin valor explícito|—|—|—|
|signed_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|signing_pdf|longtext|Sí|NULL / sin valor explícito|—|—|—|
|form_year|smallint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|


## provincias

Catálogo de provincias con código, país y estado.

**Módulo:** Catálogos. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|personas|provincia_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|provincias_codigo_id_pais_unique|UNIQUE|codigo, id_pais|BTREE|
|provincias_id_pais_index|INDEX|id_pais|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|codigo|varchar(2)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|nombre|varchar(150)|No|NULL / sin valor explícito|—|—|Nombre.|
|id_pais|varchar(3)|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX|—|—|
|estado|tinyint(1)|No|1|—|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## role_has_permissions

Tabla puente que otorga permisos a cada rol.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** permission_id, role_id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|role_has_permissions_permission_id_foreign|permission_id|permissions.id|CASCADE|NO ACTION|
|role_has_permissions_role_id_foreign|role_id|roles.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|permission_id, role_id|BTREE|
|role_has_permissions_role_id_foreign|INDEX|role_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|permission_id|bigint unsigned|No|NULL / sin valor explícito|PK compuesto, FK|—|—|
|role_id|bigint unsigned|No|NULL / sin valor explícito|PK compuesto, INDEX, FK|—|—|


## roles

Catálogo de roles y guard de autenticación.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|model_has_roles|role_id|id|CASCADE|
|role_has_permissions|role_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|roles_name_guard_name_unique|UNIQUE|name, guard_name|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|name|varchar(255)|No|NULL / sin valor explícito|UNIQUE compuesto|—|Nombre.|
|guard_name|varchar(255)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## servicios

Catálogo de servicios facturables con códigos, precio, IVA e ICE.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|servicios_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|factura_detalles|servicio_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|servicios_empresa_codigo_unique|UNIQUE|empresa_id, codigo_principal|BTREE|
|servicios_empresa_id_activo_index|INDEX|empresa_id, activo|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|codigo_principal|varchar(25)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|codigo_auxiliar|varchar(25)|Sí|NULL / sin valor explícito|—|—|—|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|precio_unitario|decimal(18,6)|No|0.000000|—|—|—|
|iva_codigo_porcentaje|varchar(10)|No|4|—|—|—|
|iva_porcentaje|decimal(8,4)|No|15.0000|—|—|—|
|informacion_adicional|text|Sí|NULL / sin valor explícito|—|—|—|
|aplica_iva_turismo|tinyint(1)|No|0|—|—|—|
|aplica_ice|tinyint(1)|No|0|—|—|—|
|ice_codigo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## sessions

Sesiones de acceso: usuario, IP, navegador, contenido serializado y última actividad.

**Módulo:** Infraestructura. **Clave primaria:** id.

No tiene claves foráneas declaradas.

Campos con nombre de referencia pero sin FK declarada: user_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|sessions_last_activity_index|INDEX|last_activity|BTREE|
|sessions_user_id_index|INDEX|user_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|varchar(255)|No|NULL / sin valor explícito|PK|—|Identificador del registro.|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX|—|Identificador de usuario.|
|ip_address|varchar(45)|Sí|NULL / sin valor explícito|—|—|—|
|user_agent|text|Sí|NULL / sin valor explícito|—|—|—|
|payload|longtext|No|NULL / sin valor explícito|—|—|—|
|last_activity|int|No|NULL / sin valor explícito|INDEX|—|—|


## solicitudes_comerciales

Solicitudes de contratación: plan, periodicidad, importe, empresa/contacto y estado.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|solicitudes_comerciales_plan_id_foreign|plan_id|planes.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|solicitudes_comerciales_estado_created_at_index|INDEX|estado, created_at|BTREE|
|solicitudes_comerciales_plan_id_foreign|INDEX|plan_id|BTREE|
|solicitudes_comerciales_ruc_estado_index|INDEX|ruc, estado|BTREE|
|solicitudes_comerciales_token_unique|UNIQUE|token|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|token|char(36)|No|NULL / sin valor explícito|UNIQUE|—|—|
|plan_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|periodicidad|varchar(10)|No|NULL / sin valor explícito|—|—|—|
|importe|decimal(10,2)|No|NULL / sin valor explícito|—|—|—|
|razon_social|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|ruc|varchar(13)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|nombre_contacto|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|email|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|telefono|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|estado|varchar(20)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|notas|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## soporte_acceso_logs

Registro de eventos de acceso de soporte: autorización, administrador, ruta e IP.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|soporte_acceso_logs_soporte_autorizacion_id_foreign|soporte_autorizacion_id|soporte_autorizaciones.id|CASCADE|NO ACTION|
|soporte_acceso_logs_super_admin_id_foreign|super_admin_id|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|soporte_acceso_logs_soporte_autorizacion_id_created_at_index|INDEX|soporte_autorizacion_id, created_at|BTREE|
|soporte_acceso_logs_super_admin_id_foreign|INDEX|super_admin_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|soporte_autorizacion_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|super_admin_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|evento|varchar(40)|No|NULL / sin valor explícito|—|—|—|
|metodo|varchar(10)|Sí|NULL / sin valor explícito|—|—|—|
|ruta|varchar(500)|Sí|NULL / sin valor explícito|—|—|—|
|ip|varchar(45)|Sí|NULL / sin valor explícito|—|—|—|
|detalle|text|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|No|CURRENT_TIMESTAMP|INDEX compuesto|DEFAULT_GENERATED|Fecha/hora de creación.|


## soporte_autorizaciones

Autorizaciones temporales de soporte a una cuenta con motivo, vigencia y revocación.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|soporte_autorizaciones_autorizado_por_foreign|autorizado_por|users.id|RESTRICT|NO ACTION|
|soporte_autorizaciones_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|CASCADE|NO ACTION|
|soporte_autorizaciones_revocado_por_foreign|revocado_por|users.id|SET NULL|NO ACTION|
|soporte_autorizaciones_super_admin_id_foreign|super_admin_id|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|soporte_acceso_logs|soporte_autorizacion_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|soporte_autorizaciones_autorizado_por_foreign|INDEX|autorizado_por|BTREE|
|soporte_autorizaciones_cuenta_cliente_id_expira_at_index|INDEX|cuenta_cliente_id, expira_at|BTREE|
|soporte_autorizaciones_revocado_por_foreign|INDEX|revocado_por|BTREE|
|soporte_autorizaciones_super_admin_id_foreign|INDEX|super_admin_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de cuenta cliente.|
|autorizado_por|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|super_admin_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|motivo|text|No|NULL / sin valor explícito|—|—|—|
|expira_at|timestamp|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|iniciado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|finalizado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|revocado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|revocado_por|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## suscripciones

Suscripciones por cuenta y plan: periodicidad, estado, vigencia y renovación automática.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|suscripciones_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|CASCADE|NO ACTION|
|suscripciones_plan_id_foreign|plan_id|planes.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|suscripciones_cuenta_cliente_id_estado_index|INDEX|cuenta_cliente_id, estado|BTREE|
|suscripciones_plan_id_foreign|INDEX|plan_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de cuenta cliente.|
|plan_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|periodicidad|varchar(10)|No|NULL / sin valor explícito|—|—|—|
|estado|varchar(20)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|inicia_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|vence_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|renovacion_automatica|tinyint(1)|No|0|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## system_mail_configurations

Configuración de correo SMTP/OAuth global o por empresa/cuenta y estado de recepción.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|system_mail_configurations_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|system_mail_configurations_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|CASCADE|NO ACTION|
|system_mail_configurations_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|
|system_mail_configurations_updated_by_foreign|updated_by|users.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|task_mail_message_links|configuration_id|id|CASCADE|
|task_mail_receipts|configuration_id|id|CASCADE|
|task_mail_threads|configuration_id|id|CASCADE|


Campos con nombre de referencia pero sin FK declarada: oauth_client_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|system_mail_configurations_created_by_foreign|INDEX|created_by|BTREE|
|system_mail_configurations_cuenta_cliente_id_activo_index|INDEX|cuenta_cliente_id, activo|BTREE|
|system_mail_configurations_empresa_id_activo_index|INDEX|empresa_id, activo|BTREE|
|system_mail_configurations_es_global_activo_index|INDEX|es_global, activo|BTREE|
|system_mail_configurations_updated_by_foreign|INDEX|updated_by|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|nombre|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|mailer|varchar(30)|No|smtp|—|—|—|
|host|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|port|int unsigned|Sí|NULL / sin valor explícito|—|—|—|
|username|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|password|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|encryption|varchar(20)|Sí|NULL / sin valor explícito|—|—|—|
|from_address|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|from_name|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|reply_to_address|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|reply_to_name|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|timeout|int unsigned|Sí|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|INDEX compuesto|—|—|
|es_global|tinyint(1)|No|0|INDEX compuesto|—|—|
|observaciones|text|Sí|NULL / sin valor explícito|—|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|updated_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario que actualizó.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|oauth_tenant|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|oauth_client_id|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|oauth_client_secret|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|oauth_access_token|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|oauth_refresh_token|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|oauth_expires_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|oauth_connected_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|oauth_mailbox|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|receive_enabled|tinyint(1)|No|0|—|—|—|
|receive_cursor|text|Sí|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|receive_checked_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|receive_error|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|cuenta_cliente_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de cuenta cliente.|


## task_configurations

Tareas aprobadas o asignadas desde plantilla pendientes de completar; definición copiada y vínculo con la tarea activada.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|task_configurations_assigned_by_foreign|assigned_by|users.id|RESTRICT|NO ACTION|
|task_configurations_configured_by_foreign|configured_by|users.id|RESTRICT|NO ACTION|
|task_configurations_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|task_configurations_request_id_foreign|request_id|template_assignment_requests.id|RESTRICT|NO ACTION|
|task_configurations_responsible_id_foreign|responsible_id|users.id|RESTRICT|NO ACTION|
|task_configurations_template_id_foreign|template_id|work_task_templates.id|RESTRICT|NO ACTION|
|task_configurations_work_task_id_foreign|work_task_id|work_tasks.id|SET NULL|NO ACTION|


Campos con nombre de referencia pero sin FK declarada: batch_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|task_config_batch_item|UNIQUE|batch_id, empresa_id, item_index|BTREE|
|task_configurations_assigned_by_foreign|INDEX|assigned_by|BTREE|
|task_configurations_configured_by_foreign|INDEX|configured_by|BTREE|
|task_configurations_empresa_id_status_responsible_id_index|INDEX|empresa_id, status, responsible_id|BTREE|
|task_configurations_request_id_item_index_unique|UNIQUE|request_id, item_index|BTREE|
|task_configurations_responsible_id_foreign|INDEX|responsible_id|BTREE|
|task_configurations_template_id_foreign|INDEX|template_id|BTREE|
|task_configurations_work_task_id_unique|UNIQUE|work_task_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de empresa.|
|template_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|request_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|batch_id|char(36)|Sí|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|item_index|int unsigned|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|assigned_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|responsible_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, INDEX, FK|—|—|
|assignees|json|No|NULL / sin valor explícito|—|—|—|
|template_name|varchar(180)|No|NULL / sin valor explícito|—|—|—|
|definition|json|No|NULL / sin valor explícito|—|—|Copia de la definición de plantilla que se debe completar antes de crear la tarea operativa.|
|status|varchar(20)|No|PENDIENTE|INDEX compuesto|—|Estado de configuración: PENDIENTE o CONFIGURADA en el servicio actual.|
|work_task_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE, FK|—|Tarea creada al completar la configuración; vínculo opcional y único.|
|configured_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|configured_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## task_labels

Etiquetas de tareas por cuenta con nombre, color, estado y marca de trabajo extra.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|task_labels_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|task_labels_cuenta_cliente_id_name_unique|UNIQUE|cuenta_cliente_id, name|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de cuenta cliente.|
|name|varchar(100)|No|NULL / sin valor explícito|UNIQUE compuesto|—|Nombre.|
|color|varchar(7)|No|NULL / sin valor explícito|—|—|—|
|active|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|is_extra|tinyint(1)|No|0|—|—|—|


## task_mail_message_links

Vínculos entre mensajes identificados por hash, configuración de correo e hilo de tarea.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|task_mail_message_links_configuration_id_foreign|configuration_id|system_mail_configurations.id|CASCADE|NO ACTION|
|task_mail_message_links_thread_id_foreign|thread_id|task_mail_threads.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|task_mail_message_links_configuration_id_message_hash_unique|UNIQUE|configuration_id, message_hash|BTREE|
|task_mail_message_links_thread_id_foreign|INDEX|thread_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|configuration_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|thread_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|message_hash|varchar(64)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|


## task_mail_receipts

Control de mensajes recibidos por configuración/hash para evitar procesamientos duplicados.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|task_mail_receipts_configuration_id_foreign|configuration_id|system_mail_configurations.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|task_mail_receipts_configuration_id_message_hash_unique|UNIQUE|configuration_id, message_hash|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|configuration_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|message_hash|varchar(64)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|status|varchar(40)|No|NULL / sin valor explícito|—|—|Estado del registro en su proceso.|
|created_at|timestamp|No|NULL / sin valor explícito|—|—|Fecha/hora de creación.|


## task_mail_threads

Hilos de correo asociados a un aviso de tarea y configuración de correo, con token.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|task_mail_threads_configuration_id_foreign|configuration_id|system_mail_configurations.id|CASCADE|NO ACTION|
|task_mail_threads_notice_id_foreign|notice_id|work_task_notices.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|task_mail_message_links|thread_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|task_mail_threads_configuration_id_foreign|INDEX|configuration_id|BTREE|
|task_mail_threads_notice_id_unique|UNIQUE|notice_id|BTREE|
|task_mail_threads_token_unique|UNIQUE|token|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|configuration_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|notice_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|—|
|token|varchar(64)|No|NULL / sin valor explícito|UNIQUE|—|—|
|created_at|timestamp|No|NULL / sin valor explícito|—|—|Fecha/hora de creación.|


## task_reopen_requests

Solicitudes de reapertura de tareas con solicitante, motivo, estado y decisión del revisor.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|task_reopen_requests_requested_by_foreign|requested_by|users.id|NO ACTION|NO ACTION|
|task_reopen_requests_reviewed_by_foreign|reviewed_by|users.id|NO ACTION|NO ACTION|
|task_reopen_requests_work_task_id_foreign|work_task_id|work_tasks.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|task_reopen_requests_requested_by_foreign|INDEX|requested_by|BTREE|
|task_reopen_requests_reviewed_by_foreign|INDEX|reviewed_by|BTREE|
|task_reopen_requests_work_task_id_status_index|INDEX|work_task_id, status|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|work_task_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|requested_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|reason|text|No|NULL / sin valor explícito|—|—|—|
|status|varchar(20)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|reviewed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario revisor.|
|review_reason|text|Sí|NULL / sin valor explícito|—|—|—|
|reviewed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## task_time_sessions

Sesiones de tiempo trabajado por usuario y tarea, inicio, fin y segundos.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|task_time_sessions_user_id_foreign|user_id|users.id|NO ACTION|NO ACTION|
|task_time_sessions_work_task_id_foreign|work_task_id|work_tasks.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|task_time_sessions_user_id_foreign|INDEX|user_id|BTREE|
|task_time_sessions_work_task_id_user_id_stopped_at_index|INDEX|work_task_id, user_id, stopped_at|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|work_task_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, INDEX compuesto, FK|—|Identificador de usuario.|
|started_at|timestamp|No|NULL / sin valor explícito|—|—|—|
|stopped_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|seconds|bigint unsigned|No|0|—|—|—|


## tasks

Tareas del CRM vinculadas a clientes y asesores, prioridad, estado y vencimiento; módulo distinto de work_tasks.

**Módulo:** CRM. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|tasks_advisor_id_foreign|advisor_id|advisors.id|SET NULL|NO ACTION|
|tasks_assigned_to_foreign|assigned_to|users.id|SET NULL|NO ACTION|
|tasks_client_id_foreign|client_id|clients.id|SET NULL|NO ACTION|
|tasks_created_by_foreign|created_by|users.id|SET NULL|NO ACTION|
|tasks_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|tasks_advisor_id_foreign|INDEX|advisor_id|BTREE|
|tasks_assigned_to_foreign|INDEX|assigned_to|BTREE|
|tasks_client_id_foreign|INDEX|client_id|BTREE|
|tasks_created_by_foreign|INDEX|created_by|BTREE|
|tasks_empresa_id_estado_index|INDEX|empresa_id, estado|BTREE|
|tasks_empresa_id_fecha_vencimiento_index|INDEX|empresa_id, fecha_vencimiento|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|client_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|advisor_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|assigned_to|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|titulo|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|prioridad|enum('BAJA','MEDIA','ALTA','URGENTE')|No|MEDIA|—|—|—|
|estado|enum('PENDIENTE','EN_PROCESO','COMPLETADA','CANCELADA')|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|fecha_vencimiento|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|completed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## template_assignment_requests

Solicitudes de asignar plantillas: empresa, solicitante, definición copiada, revisión y tareas resultantes.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|template_assignment_requests_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|template_assignment_requests_requested_by_foreign|requested_by|users.id|RESTRICT|NO ACTION|
|template_assignment_requests_reviewed_by_foreign|reviewed_by|users.id|SET NULL|NO ACTION|
|template_assignment_requests_template_id_foreign|template_id|work_task_templates.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|task_configurations|request_id|id|RESTRICT|


Campos con nombre de referencia pero sin FK declarada: operation_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|template_assignment_requests_empresa_id_status_index|INDEX|empresa_id, status|BTREE|
|template_assignment_requests_operation_id_unique|UNIQUE|operation_id|BTREE|
|template_assignment_requests_requested_by_foreign|INDEX|requested_by|BTREE|
|template_assignment_requests_reviewed_by_foreign|INDEX|reviewed_by|BTREE|
|template_assignment_requests_template_id_foreign|INDEX|template_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|template_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|template_name|varchar(180)|No|NULL / sin valor explícito|—|—|—|
|requested_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|operation_id|char(36)|No|NULL / sin valor explícito|UNIQUE|—|—|
|fingerprint|varchar(64)|No|NULL / sin valor explícito|—|—|Huella para identificar una operación o conjunto de datos.|
|start_date|date|Sí|NULL / sin valor explícito|—|—|Columna conservada por compatibilidad; admite NULL y el flujo actual solicita fechas al configurar la tarea.|
|items|json|No|NULL / sin valor explícito|—|—|—|
|status|varchar(20)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|reviewed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario revisor.|
|reviewed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|reason|text|Sí|NULL / sin valor explícito|—|—|—|
|task_ids|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## tipos_contribuyentes

Catálogo de tipos de contribuyentes con código y descripción.

**Módulo:** Catálogos. **Clave primaria:** id.

No tiene claves foráneas declaradas.

### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|personas|tipo_contribuyente_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|tipos_contribuyentes_codigo_unique|UNIQUE|codigo|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|codigo|varchar(50)|No|NULL / sin valor explícito|UNIQUE|—|—|
|nombre|varchar(150)|No|NULL / sin valor explícito|—|—|Nombre.|
|descripcion|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|estado|tinyint(1)|No|1|—|—|Estado del registro en su proceso.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## user_hierarchy_audits

Historial de cambios de jerarquía de usuarios, actor, datos antes/después e IP.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|user_hierarchy_audits_actor_id_foreign|actor_id|users.id|SET NULL|NO ACTION|
|user_hierarchy_audits_user_id_foreign|user_id|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|user_hierarchy_audit_actor_idx|INDEX|actor_id, created_at|BTREE|
|user_hierarchy_audit_user_idx|INDEX|user_id, created_at|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de usuario.|
|actor_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|action|varchar(50)|No|NULL / sin valor explícito|—|—|—|
|before_data|json|Sí|NULL / sin valor explícito|—|—|—|
|after_data|json|Sí|NULL / sin valor explícito|—|—|—|
|ip_address|varchar(45)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## users

Usuarios de acceso: cuenta, empresa principal, jerarquía, identidad, perfil y preferencias de interfaz.

**Módulo:** Cuentas, empresas, usuarios y configuración. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|users_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|users_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|SET NULL|NO ACTION|
|users_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|
|users_parent_user_id_foreign|parent_user_id|users.id|RESTRICT|NO ACTION|
|users_persona_id_foreign|persona_id|personas.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|account_appearances|updated_by|id|SET NULL|
|accounting_advances|created_by|id|RESTRICT|
|accounting_ats_exports|created_by|id|SET NULL|
|accounting_ats_imports|created_by|id|SET NULL|
|accounting_ats_reimbursements|created_by|id|SET NULL|
|accounting_ats_reports|created_by|id|SET NULL|
|accounting_ats_reports|reconciled_by|id|SET NULL|
|accounting_ats_reports|reviewed_by|id|SET NULL|
|accounting_audit_logs|user_id|id|SET NULL|
|accounting_bank_reconciliations|closed_by|id|SET NULL|
|accounting_bank_reconciliations|created_by|id|SET NULL|
|accounting_bank_statement_lines|matched_by|id|SET NULL|
|accounting_bank_transfers|created_by|id|SET NULL|
|accounting_bank_transfers|posted_by|id|SET NULL|
|accounting_bank_transfers|reversed_by|id|SET NULL|
|accounting_cash_sessions|opened_by|id|RESTRICT|
|accounting_cheques|created_by|id|RESTRICT|
|accounting_entries|created_by|id|SET NULL|
|accounting_entries|posted_by|id|SET NULL|
|accounting_entries|reversed_by|id|SET NULL|
|accounting_entry_attachments|user_id|id|RESTRICT|
|accounting_open_item_settlements|created_by|id|SET NULL|
|accounting_open_item_settlements|reversed_by|id|SET NULL|
|accounting_periods|closed_by|id|SET NULL|
|accounting_received_documents|created_by|id|SET NULL|
|accounting_received_withholdings|created_by|id|SET NULL|
|accounting_vouchers|created_by|id|SET NULL|
|accounting_vouchers|posted_by|id|SET NULL|
|accounting_vouchers|reversed_by|id|SET NULL|
|accounting_year_closures|created_by|id|RESTRICT|
|activities|user_id|id|SET NULL|
|advisors|user_id|id|CASCADE|
|audit_logs|user_id|id|SET NULL|
|client_assignments|assigned_by|id|SET NULL|
|client_documents|uploaded_by|id|SET NULL|
|clients|created_by|id|SET NULL|
|clients|updated_by|id|SET NULL|
|company_data_acceptances|user_id|id|RESTRICT|
|company_master_activities|user_id|id|SET NULL|
|company_master_invitations|created_by|id|NO ACTION|
|company_permit_notices|user_id|id|SET NULL|
|comprobantes_electronicos|user_id|id|SET NULL|
|crm_notifications|user_id|id|CASCADE|
|emails|sent_by|id|SET NULL|
|empresa_user|user_id|id|CASCADE|
|empresas|created_by|id|SET NULL|
|exports|user_id|id|CASCADE|
|facturas|user_id|id|SET NULL|
|form_completion_notices|user_id|id|RESTRICT|
|hr_accounting_entries|created_by|id|RESTRICT|
|hr_adjustments|created_by|id|RESTRICT|
|hr_annual_records|created_by|id|RESTRICT|
|hr_attendance|created_by|id|RESTRICT|
|hr_audits|user_id|id|RESTRICT|
|hr_benefit_payments|created_by|id|RESTRICT|
|hr_contracts|created_by|id|RESTRICT|
|hr_documents|created_by|id|RESTRICT|
|hr_leaves|created_by|id|RESTRICT|
|hr_leaves|reviewed_by|id|RESTRICT|
|hr_loans|created_by|id|RESTRICT|
|hr_mail_deliveries|created_by|id|RESTRICT|
|hr_novelties|created_by|id|RESTRICT|
|hr_parameter_versions|created_by|id|RESTRICT|
|hr_periods|approved_by|id|RESTRICT|
|hr_tax_projections|created_by|id|RESTRICT|
|inventario_cargas|user_id|id|SET NULL|
|natural_client_forms|updated_by|id|SET NULL|
|personas|created_by|id|SET NULL|
|personas|updated_by|id|SET NULL|
|soporte_acceso_logs|super_admin_id|id|RESTRICT|
|soporte_autorizaciones|autorizado_por|id|RESTRICT|
|soporte_autorizaciones|revocado_por|id|SET NULL|
|soporte_autorizaciones|super_admin_id|id|SET NULL|
|system_mail_configurations|created_by|id|SET NULL|
|system_mail_configurations|updated_by|id|SET NULL|
|task_configurations|assigned_by|id|RESTRICT|
|task_configurations|configured_by|id|RESTRICT|
|task_configurations|responsible_id|id|RESTRICT|
|task_reopen_requests|requested_by|id|NO ACTION|
|task_reopen_requests|reviewed_by|id|NO ACTION|
|task_time_sessions|user_id|id|NO ACTION|
|tasks|assigned_to|id|SET NULL|
|tasks|created_by|id|SET NULL|
|template_assignment_requests|requested_by|id|RESTRICT|
|template_assignment_requests|reviewed_by|id|SET NULL|
|user_hierarchy_audits|actor_id|id|SET NULL|
|user_hierarchy_audits|user_id|id|RESTRICT|
|users|created_by|id|RESTRICT|
|users|parent_user_id|id|RESTRICT|
|work_task_activities|user_id|id|SET NULL|
|work_task_assignees|user_id|id|RESTRICT|
|work_task_batches|user_id|id|RESTRICT|
|work_task_capacities|user_id|id|CASCADE|
|work_task_notices|user_id|id|CASCADE|
|work_task_supervisors|user_id|id|CASCADE|
|work_task_templates|created_by|id|RESTRICT|
|work_tasks|completed_by|id|SET NULL|
|work_tasks|correction_submitted_by|id|SET NULL|
|work_tasks|created_by|id|RESTRICT|
|work_tasks|reopened_by|id|SET NULL|
|work_tasks|responsible_id|id|RESTRICT|
|xml_sri_importaciones|user_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|users_created_by_foreign|INDEX|created_by|BTREE|
|users_email_unique|UNIQUE|email|BTREE|
|users_empresa_id_foreign|INDEX|empresa_id|BTREE|
|users_hierarchy_code_uq|UNIQUE|hierarchy_code|BTREE|
|users_identificacion_unique|UNIQUE|identificacion|BTREE|
|users_parent_user_id_foreign|INDEX|parent_user_id|BTREE|
|users_persona_id_foreign|INDEX|persona_id|BTREE|
|users_platform_staff_index|INDEX|platform_staff|BTREE|
|users_single_platform_owner_unique|UNIQUE|platform_owner|BTREE|
|users_tenant_hierarchy_idx|INDEX|cuenta_cliente_id, parent_user_id, nivel_acceso|BTREE|
|users_tipo_identificacion_index|INDEX|tipo_identificacion|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|cuenta_cliente_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto, FK|—|Cuenta a la que pertenece el usuario.|
|platform_owner|tinyint(1)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|platform_staff|tinyint(1)|No|0|INDEX|—|—|
|parent_user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, INDEX compuesto, FK|—|—|
|created_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|hierarchy_level|tinyint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|hierarchy_code|varchar(120)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|hierarchy_review_required|tinyint(1)|No|0|—|—|—|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Empresa principal; las asociaciones a varias empresas están en empresa_user.|
|persona_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|name|varchar(255)|No|NULL / sin valor explícito|—|—|Nombre.|
|apellidos|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|tipo_identificacion|varchar(20)|Sí|NULL / sin valor explícito|INDEX|—|—|
|identificacion|varchar(20)|Sí|NULL / sin valor explícito|UNIQUE|—|—|
|email|varchar(255)|No|NULL / sin valor explícito|UNIQUE|—|—|
|email_verified_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|password|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|activo|tinyint(1)|No|1|—|—|—|
|nivel_acceso|varchar(30)|No|VISUALIZADOR|INDEX compuesto|—|—|
|perfil|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|debe_cambiar_password|tinyint(1)|No|0|—|—|—|
|politica_datos_aceptada_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|remember_token|varchar(100)|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|task_view|varchar(16)|No|grid|—|—|—|
|master_requires_approval|tinyint(1)|No|0|—|—|—|
|master_columns|json|Sí|NULL / sin valor explícito|—|—|—|
|task_dashboard_hidden|tinyint(1)|No|0|—|—|—|
|master_section_order|json|Sí|NULL / sin valor explícito|—|—|—|


## work_task_activities

Actividad de una tarea: comentarios, evidencias, adjuntos, tiempo y cambios registrados.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_activities_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|
|work_task_activities_work_task_id_foreign|work_task_id|work_tasks.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_activities_user_id_foreign|INDEX|user_id|BTREE|
|work_task_activities_work_task_id_created_at_index|INDEX|work_task_id, created_at|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|work_task_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|—|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|kind|varchar(32)|No|NULL / sin valor explícito|—|—|—|
|body|text|No|NULL / sin valor explícito|—|—|—|
|evidence_url|varchar(2000)|Sí|NULL / sin valor explícito|—|—|—|
|attachment_path|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|attachment_name|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|hours|decimal(8,2)|No|0.00|—|—|—|
|changes|json|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|minutes_worked|int unsigned|No|0|—|—|—|


## work_task_assignees

Tabla puente que relaciona cada tarea operativa con sus usuarios asignados.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_assignees_user_id_foreign|user_id|users.id|RESTRICT|NO ACTION|
|work_task_assignees_work_task_id_foreign|work_task_id|work_tasks.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_assignees_user_id_foreign|INDEX|user_id|BTREE|
|work_task_assignees_work_task_id_user_id_unique|UNIQUE|work_task_id, user_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|work_task_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, UNIQUE compuesto, FK|—|Identificador de usuario.|


## work_task_audits

Auditoría de gestión de tareas: entidad, acción, actor y valores antes/después cifrados.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

No tiene claves foráneas declaradas.

Campos con nombre de referencia pero sin FK declarada: empresa_id, user_id, entity_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_audits_empresa_id_created_at_index|INDEX|empresa_id, created_at|BTREE|
|work_task_audits_empresa_id_index|INDEX|empresa_id|BTREE|
|work_task_audits_entity_entity_id_index|INDEX|entity, entity_id|BTREE|
|work_task_audits_user_id_index|INDEX|user_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, INDEX|—|Identificador de empresa.|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX|—|Identificador de usuario.|
|actor|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|entity|varchar(40)|No|NULL / sin valor explícito|INDEX compuesto|—|—|
|entity_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|action|varchar(120)|No|NULL / sin valor explícito|—|—|—|
|before_values|longtext|No|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|after_values|longtext|No|NULL / sin valor explícito|—|—|Cifrado por el modelo Laravel.|
|created_at|timestamp|No|CURRENT_TIMESTAMP|INDEX compuesto|DEFAULT_GENERATED|Fecha/hora de creación.|


## work_task_batches

Lotes de asignación desde plantilla con huella para evitar duplicación y cantidad de elementos.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_batches_template_id_foreign|template_id|work_task_templates.id|RESTRICT|NO ACTION|
|work_task_batches_user_id_foreign|user_id|users.id|RESTRICT|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_batches_template_id_foreign|INDEX|template_id|BTREE|
|work_task_batches_user_id_foreign|INDEX|user_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|char(36)|No|NULL / sin valor explícito|PK|—|Identificador del registro.|
|template_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|user_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|fingerprint|varchar(64)|No|NULL / sin valor explícito|—|—|Huella para identificar una operación o conjunto de datos.|
|task_count|int unsigned|No|0|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## work_task_capacities

Capacidad semanal en horas configurada para cada usuario.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_capacities_user_id_foreign|user_id|users.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_capacities_user_id_unique|UNIQUE|user_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de usuario.|
|weekly_hours|decimal(6,2)|No|40.00|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## work_task_notices

Avisos de tareas operativas por destinatario y evento, texto, lectura y envío de correo.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_notices_user_id_foreign|user_id|users.id|CASCADE|NO ACTION|
|work_task_notices_work_task_id_foreign|work_task_id|work_tasks.id|CASCADE|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|task_mail_threads|notice_id|id|CASCADE|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_notice_once|UNIQUE|work_task_id, user_id, event_key|BTREE|
|work_task_notices_user_id_read_at_index|INDEX|user_id, read_at|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|work_task_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|—|
|user_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX compuesto, FK|—|Identificador de usuario.|
|event_key|varchar(120)|No|NULL / sin valor explícito|UNIQUE compuesto|—|—|
|title|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|body|text|No|NULL / sin valor explícito|—|—|—|
|read_at|timestamp|Sí|NULL / sin valor explícito|INDEX compuesto|—|—|
|emailed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## work_task_settings

Reglas de tareas por empresa: anticipación de avisos, revisión y correo habilitado.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_settings_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_settings_empresa_id_unique|UNIQUE|empresa_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE, FK|—|Identificador de empresa.|
|warning_days|tinyint unsigned|No|3|—|—|—|
|require_review|tinyint(1)|No|0|—|—|—|
|email_enabled|tinyint(1)|No|1|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|


## work_task_supervisors

Tabla puente que asigna usuarios supervisores a empresas para gestión de tareas.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_supervisors_empresa_id_foreign|empresa_id|empresas.id|CASCADE|NO ACTION|
|work_task_supervisors_user_id_foreign|user_id|users.id|CASCADE|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_supervisors_empresa_id_user_id_unique|UNIQUE|empresa_id, user_id|BTREE|
|work_task_supervisors_user_id_foreign|INDEX|user_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|No|NULL / sin valor explícito|UNIQUE compuesto, INDEX, FK|—|Identificador de usuario.|


## work_task_templates

Plantillas reutilizables por cuenta: nombre y definiciones de tareas/pasos en items.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_task_templates_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|work_task_templates_cuenta_cliente_id_foreign|cuenta_cliente_id|cuentas_clientes.id|RESTRICT|NO ACTION|
|work_task_templates_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|task_configurations|template_id|id|RESTRICT|
|template_assignment_requests|template_id|id|SET NULL|
|work_task_batches|template_id|id|RESTRICT|
|work_tasks|template_id|id|SET NULL|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_task_templates_created_by_foreign|INDEX|created_by|BTREE|
|work_task_templates_cuenta_cliente_id_foreign|INDEX|cuenta_cliente_id|BTREE|
|work_task_templates_empresa_id_foreign|INDEX|empresa_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|name|varchar(180)|No|NULL / sin valor explícito|—|—|Nombre.|
|items|json|No|NULL / sin valor explícito|—|—|JSON de definiciones: título, instrucciones, horas estimadas, prioridad, repetición y pasos; el flujo actual no pide fechas fijas.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|cuenta_cliente_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de cuenta cliente.|


## work_tasks

Tareas operativas activadas: empresa, responsable, fechas, avance, repetición, etiquetas, pasos y correcciones.

**Módulo:** Gestión de tareas. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|work_tasks_completed_by_foreign|completed_by|users.id|SET NULL|NO ACTION|
|work_tasks_correction_submitted_by_foreign|correction_submitted_by|users.id|SET NULL|NO ACTION|
|work_tasks_created_by_foreign|created_by|users.id|RESTRICT|NO ACTION|
|work_tasks_empresa_id_foreign|empresa_id|empresas.id|RESTRICT|NO ACTION|
|work_tasks_previous_task_id_foreign|previous_task_id|work_tasks.id|RESTRICT|NO ACTION|
|work_tasks_reopened_by_foreign|reopened_by|users.id|SET NULL|NO ACTION|
|work_tasks_responsible_id_foreign|responsible_id|users.id|RESTRICT|NO ACTION|
|work_tasks_template_id_foreign|template_id|work_task_templates.id|SET NULL|NO ACTION|


### Recibe referencias de

|Hija|Columna|Clave aquí|DELETE|
|---|---|---|---|
|task_configurations|work_task_id|id|SET NULL|
|task_reopen_requests|work_task_id|id|CASCADE|
|task_time_sessions|work_task_id|id|CASCADE|
|work_task_activities|work_task_id|id|CASCADE|
|work_task_assignees|work_task_id|id|CASCADE|
|work_task_notices|work_task_id|id|CASCADE|
|work_tasks|previous_task_id|id|RESTRICT|


Campos con nombre de referencia pero sin FK declarada: batch_id. Su destino debe interpretarse con el código; el nombre por sí solo no garantiza una relación.

### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|work_tasks_batch_id_index|INDEX|batch_id|BTREE|
|work_tasks_completed_by_foreign|INDEX|completed_by|BTREE|
|work_tasks_correction_due_at_index|INDEX|correction_due_at|BTREE|
|work_tasks_correction_submitted_by_foreign|INDEX|correction_submitted_by|BTREE|
|work_tasks_created_by_foreign|INDEX|created_by|BTREE|
|work_tasks_empresa_id_status_due_date_index|INDEX|empresa_id, status, due_date|BTREE|
|work_tasks_is_extra_index|INDEX|is_extra|BTREE|
|work_tasks_presentation_due_date_index|INDEX|presentation_due_date|BTREE|
|work_tasks_previous_task_id_unique|UNIQUE|previous_task_id|BTREE|
|work_tasks_reopened_by_foreign|INDEX|reopened_by|BTREE|
|work_tasks_responsible_id_foreign|INDEX|responsible_id|BTREE|
|work_tasks_template_id_foreign|INDEX|template_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|No|NULL / sin valor explícito|INDEX compuesto, FK|—|Identificador de empresa.|
|created_by|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|Usuario creador.|
|responsible_id|bigint unsigned|No|NULL / sin valor explícito|INDEX, FK|—|—|
|title|varchar(180)|No|NULL / sin valor explícito|—|—|—|
|description|text|Sí|NULL / sin valor explícito|—|—|Descripción.|
|status|varchar(24)|No|PENDIENTE|INDEX compuesto|—|Estado del registro en su proceso.|
|priority|varchar(12)|No|MEDIA|—|—|—|
|start_date|date|No|NULL / sin valor explícito|—|—|Fecha de inicio de la tarea.|
|due_date|date|No|NULL / sin valor explícito|INDEX compuesto|—|Fecha de vencimiento ante el ente de control.|
|progress|tinyint unsigned|No|0|—|—|—|
|estimated_hours|decimal(8,2)|No|1.00|—|—|—|
|recurrence|varchar(12)|No|NINGUNA|—|—|—|
|recurrence_start_day|tinyint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|recurrence_due_day|tinyint unsigned|Sí|NULL / sin valor explícito|—|—|—|
|previous_task_id|bigint unsigned|Sí|NULL / sin valor explícito|UNIQUE, FK|—|—|
|template_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|batch_id|char(36)|Sí|NULL / sin valor explícito|INDEX|—|—|
|block_reason|text|Sí|NULL / sin valor explícito|—|—|—|
|completed_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|completed_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|version|int unsigned|No|1|—|—|Versión del registro o de su estructura.|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|
|group_name|varchar(100)|Sí|NULL / sin valor explícito|—|—|—|
|labels|varchar(200)|Sí|NULL / sin valor explícito|—|—|Texto de etiquetas de compatibilidad; WorkTask lo usa si label_ids es NULL.|
|checklist|json|Sí|NULL / sin valor explícito|—|—|JSON con pasos, estado done y usuario assignee_id; no existe una tabla separada de pasos.|
|progress_mode|varchar(16)|No|TIEMPO|—|—|—|
|progress_base_percent|tinyint unsigned|No|0|—|—|—|
|progress_base_minutes|int unsigned|No|0|—|—|—|
|recurrence_nominal_start|date|Sí|NULL / sin valor explícito|—|—|—|
|recurrence_nominal_due|date|Sí|NULL / sin valor explícito|—|—|—|
|label_ids|json|Sí|NULL / sin valor explícito|—|—|JSON con identificadores de task_labels; relación validada por la aplicación.|
|internal_due_date|date|Sí|NULL / sin valor explícito|—|—|Fecha interna de entrega.|
|internal_warning_days|smallint unsigned|No|3|—|—|Días de anticipación del aviso de entrega interna.|
|external_warning_days|smallint unsigned|No|3|—|—|Días de anticipación del aviso de vencimiento externo.|
|is_extra|tinyint(1)|No|0|INDEX|—|—|
|presentation_due_date|date|Sí|NULL / sin valor explícito|INDEX|—|Fecha de presentación calculada con el calendario laboral.|
|reopened_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|reopened_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|correction_due_at|timestamp|Sí|NULL / sin valor explícito|INDEX|—|—|
|correction_reason|text|Sí|NULL / sin valor explícito|—|—|—|
|correction_submitted_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|correction_submitted_by|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|—|
|internal_date_overridden|tinyint(1)|No|0|—|—|—|
|original_internal_due_date|date|Sí|NULL / sin valor explícito|—|—|—|


## xml_sri_importaciones

Archivos XML importados: origen, tipo, clave de acceso, procesamiento y respuestas SRI.

**Módulo:** Facturación e inventario. **Clave primaria:** id.

### Sale hacia

|Restricción|Columna hija|Padre.clave|DELETE|UPDATE|
|---|---|---|---|---|
|xml_sri_importaciones_empresa_id_foreign|empresa_id|empresas.id|SET NULL|NO ACTION|
|xml_sri_importaciones_user_id_foreign|user_id|users.id|SET NULL|NO ACTION|


### Índices

|Nombre|Clase|Columnas|Método|
|---|---|---|---|
|PRIMARY|PRIMARY KEY|id|BTREE|
|xml_sri_importaciones_clave_acceso_index|INDEX|clave_acceso|BTREE|
|xml_sri_importaciones_empresa_id_foreign|INDEX|empresa_id|BTREE|
|xml_sri_importaciones_estado_index|INDEX|estado|BTREE|
|xml_sri_importaciones_hash_archivo_unique|UNIQUE|hash_archivo|BTREE|
|xml_sri_importaciones_user_id_foreign|INDEX|user_id|BTREE|


### Columnas

|Campo|Tipo SQL|NULL|Predeterminado|Claves/índices|Extra|Detalle|
|---|---|---|---|---|---|---|
|id|bigint unsigned|No|NULL / sin valor explícito|PK|auto_increment|Identificador del registro.|
|empresa_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de empresa.|
|user_id|bigint unsigned|Sí|NULL / sin valor explícito|INDEX, FK|—|Identificador de usuario.|
|nombre_archivo|varchar(255)|No|NULL / sin valor explícito|—|—|—|
|ruta_archivo|varchar(255)|Sí|NULL / sin valor explícito|—|—|—|
|hash_archivo|varchar(64)|No|NULL / sin valor explícito|UNIQUE|—|—|
|origen|varchar(20)|No|INDIVIDUAL|—|—|—|
|modo|varchar(20)|No|NULL / sin valor explícito|—|—|—|
|tipo|varchar(30)|Sí|NULL / sin valor explícito|—|—|—|
|cod_doc|varchar(2)|Sí|NULL / sin valor explícito|—|—|—|
|ambiente|varchar(1)|Sí|NULL / sin valor explícito|—|—|—|
|clave_acceso|varchar(49)|Sí|NULL / sin valor explícito|INDEX|—|—|
|numero|varchar(17)|Sí|NULL / sin valor explícito|—|—|—|
|estado|varchar(30)|No|PENDIENTE|INDEX|—|Estado del registro en su proceso.|
|intentos|smallint unsigned|No|0|—|—|—|
|xml_original|longtext|No|NULL / sin valor explícito|—|—|—|
|xml_procesado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|xml_autorizado|longtext|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_recepcion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|respuesta_autorizacion_sri|longtext|Sí|NULL / sin valor explícito|—|—|—|
|ultimo_error|text|Sí|NULL / sin valor explícito|—|—|—|
|procesado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|autorizado_at|timestamp|Sí|NULL / sin valor explícito|—|—|—|
|created_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de creación.|
|updated_at|timestamp|Sí|NULL / sin valor explícito|—|—|Fecha/hora de última actualización.|

