Estructura Datos PREX

empresas_cliente
Almacena la información de las empresas que son clientes finales de las firmas contables. Cada firma contable puede gestionar múltiples empresas cliente, procesando sus facturas de forma independiente. Esta tabla permite la segregación de datos fiscales por empresa.
| Campo | Descripción | Tipo |
|---|---|---|
| id | Identificador único | PK |
| nombre | Razón social de la empresa | VARCHAR |
| rnc | Registro Nacional de Contribuyentes | VARCHAR(11) |
| usuario_id | Usuario propietario/administrador | FK → usuario |
Relaciones: Relacionada con usuario (administrador) y vouchers_gastos (facturas procesadas).
usuario
Gestiona los usuarios del sistema con sus credenciales y permisos de acceso. Cada usuario puede estar asociado a una empresa cliente específica.
Relaciones: Vinculado con empresas_cliente (administración) y vouchers_gastos (auditoría de quién procesó cada voucher).
vouchers_gastos
Tabla central que almacena la información completa de cada factura procesada. Contiene todos los campos necesarios para generar el formulario 606 de DGII, incluyendo datos del comprobante fiscal, montos facturados, valores de servicios y bienes, ITBIS (facturado, retenido, proporcionalidad, al costo, percibido), retenciones de ISR, impuestos selectivos, propina legal, y metadatos de control como validación manual, fechas de procesamiento, y referencias al ciclo fiscal.
Relaciones principales:
- proveedor_id → proveedores
- tipo_gasto_id → tipos_gastos
- forma_pago_id → formas_pago
- ciclo_id → ciclo
- empresas_cliente_id → empresas_cliente
- usuario_id → usuario
- procesamiento_id → procesamientos
vouchers_productos
Tabla de detalle que desglosa los productos o servicios incluidos en cada voucher cuando se requiere este nivel de granularidad.
| Campo | Descripción | Tipo |
|---|---|---|
| producto_id | Referencia al producto/servicio | FK → productos |
| expense_voucher_id | Voucher al que pertenece | FK → vouchers_gastos |
| precio | Precio unitario del producto | DECIMAL |
| nombre_ocr | Nombre extraído por OCR | VARCHAR |
| usuario_id | Usuario que registró el detalle | FK → usuario |
Propósito: Permitir análisis detallado por producto cuando el voucher contiene múltiples ítems.
productos
Catálogo de productos y servicios que pueden ser identificados en los vouchers para normalización y análisis agregado.
Tablas de Catálogo
proveedores
Registro de todos los proveedores con los que las empresas cliente realizan transacciones.
| Campo | Descripción | Tipo |
|---|---|---|
| nombre | Razón social del proveedor | VARCHAR |
| tipo_documento_id | Tipo de identificación | FK → tipos_documentos |
| numero_documento | Número RNC/Cédula/Pasaporte | VARCHAR |
| tipo_proveedor | Clasificación del proveedor | FK → tipos_proveedores |
Propósito: Facilitar el matching automático durante la extracción de datos y gestionar la base de proveedores.
tipos_documentos
Catálogo de tipos de documentos de identificación válidos (RNC, Cédula, Pasaporte) para validación y clasificación.
tipos_proveedores
Clasificación de proveedores según su naturaleza o categoría de negocio para análisis y reportes.
tipos_gastos
Catálogo de tipos de gastos según la clasificación fiscal de DGII (01: Gastos de personal, 02: Gastos por trabajos y servicios, 09: Costo de venta, etc.).
formas_pago
Catálogo de las formas de pago aceptadas según la clasificación de DGII (Efectivo, Tarjeta, Transferencia, Cheque, etc.).
ciclo
Define los períodos fiscales mensuales para los cuales se procesan y agrupan los vouchers.
| Campo | Descripción | Tipo |
|---|---|---|
| mes | Mes del período fiscal (1-12) | INTEGER |
| anyo | Año del período fiscal | INTEGER |
Propósito: Organizar y agrupar facturas por mes de reporte fiscal.
procesamientos
Registra cada ejecución del proceso de OCR e inteligencia artificial sobre los vouchers.
| Campo | Descripción | Tipo |
|---|---|---|
| identifier | Identificador único del proceso | VARCHAR |
| generated_at | Fecha y hora de ejecución | TIMESTAMP |
Propósito: Auditoría y trazabilidad del procesamiento automático, permitiendo identificar lotes de facturas procesadas juntas y analizar la precisión del sistema a lo largo del tiempo.