Esquemas y tablas
La base de datos de Zentto organiza las tablas en esquemas lógicos que corresponden a los módulos funcionales del ERP. Esta separación facilita la gestión de permisos, el mantenimiento y la comprensión del modelo de datos.
Esquemas del sistema
| Esquema | Nombre | Descripción |
|---|---|---|
| cfg | Configuración | Empresa, sucursales, parámetros del sistema, monedas, tasas de cambio |
| sec | Seguridad | Usuarios, roles, permisos, sesiones, tokens |
| master | Maestros | Productos, clientes, proveedores, contactos, categorías |
| doc | Documentos | Facturas, notas de crédito/débito, presupuestos, pedidos |
| ar | Cuentas por cobrar | Saldos de clientes, cobros, aplicaciones de pago |
| ap | Cuentas por pagar | Saldos de proveedores, pagos, retenciones |
| acct | Contabilidad | Plan de cuentas, asientos, períodos, centros de costo |
| pay | Pagos | Métodos de pago, bancos, conciliación bancaria |
| pos | Punto de venta | Cajas, turnos, ventas POS, periféricos |
| rest | Restaurante | Mesas, áreas, comandas, menú, cocina |
| hr | Recursos humanos | Empleados, cargos, nómina, prestaciones, asistencia |
| fin | Finanzas | Presupuestos financieros, flujo de caja, proyecciones |
| sys | Sistema | Logs de auditoría, configuración interna, migraciones |
| store | Tienda online | Catálogo público, carrito, pedidos e-commerce, suscripciones |
Tablas clave por esquema
cfg (Configuración)
cfg.Company -- Empresa (multi-tenant)
cfg.Branch -- Sucursales
cfg.Currency -- Monedas (VES, USD, EUR, COP)
cfg.ExchangeRate -- Tasas de cambio diarias
cfg.SystemParam -- Parámetros clave-valor del sistema
cfg.FiscalPrinter -- Impresoras fiscales registradas
cfg.Sequence -- Secuencias de numeración (facturas, NC, etc.)
sec (Seguridad)
sec.User -- Usuarios del sistema
sec.Role -- Roles (Admin, Cajero, Contador, etc.)
sec.UserRole -- Asignación usuario-rol
sec.Permission -- Permisos granulares
sec.RolePermission -- Asignación rol-permiso
sec.Session -- Sesiones activas
sec.AuditLog -- Log de acciones de usuario
master (Maestros)
master.Product -- Productos y servicios
master.ProductCategory -- Categorías jerárquicas
master.Customer -- Clientes
master.Supplier -- Proveedores
master.Contact -- Contactos compartidos
master.Warehouse -- Almacenes
master.PriceList -- Listas de precios
master.Tax -- Impuestos (IVA, ISLR, etc.)
doc (Documentos)
doc.Invoice -- Facturas (venta y compra)
doc.InvoiceDetail -- Detalle de factura (líneas)
doc.CreditNote -- Notas de crédito
doc.DebitNote -- Notas de débito
doc.PurchaseOrder -- Órdenes de compra
doc.Quote -- Presupuestos / cotizaciones
doc.DeliveryNote -- Notas de entrega
Convenciones de nombres
- Tablas:
PascalCasesingular —master.Product, nomaster.products - Columnas:
PascalCase—CompanyId,CreatedAtUtc - Primary keys:
[Tabla]Id—ProductId,InvoiceId - Foreign keys:
FK_[Tabla]_[TablaRef] - Índices:
IX_[Tabla]_[Columnas] - Fechas: sufijo
Utc—CreatedAtUtc,ModifiedAtUtc - Soft delete: columna
IsActive BIT/BOOLEAN DEFAULT 1/TRUE - Multi-tenant: toda tabla transaccional tiene
CompanyId
Legacy: puente dbo.*
Las tablas originales del sistema VB6 viven en el esquema dbo (SQL Server)
o public (PostgreSQL). Zentto las accede a través de tablas canónicas
en los esquemas nuevos que mapean los campos legacy a la nomenclatura actual:
-- Ejemplo: vista puente para productos legacy
CREATE VIEW master.v_ProductLegacy AS
SELECT
p.codprod AS ProductId,
p.desprod AS Name,
p.refprod AS Sku,
p.preciov1 AS Price,
p.existencia AS Stock,
p.activo AS IsActive
FROM dbo.InvProducto p;
Estas vistas permiten que el nuevo sistema acceda a datos legacy sin modificar las tablas originales, facilitando la migración gradual.
Diagrama de relaciones (simplificado)
cfg.Company ──┬── master.Product ─── doc.InvoiceDetail
│ │
├── master.Customer ── doc.Invoice ── ar.Balance
│ │
├── master.Supplier ── doc.Invoice ── ap.Balance
│ │
├── sec.User ──────── sec.AuditLog
│
└── acct.Account ──── acct.JournalEntry