Esquema de Base de Datos
Zentto utiliza una organizacion por schemas logicos que agrupan tablas por dominio funcional. Ambos motores (SQL Server y PostgreSQL) comparten la misma estructura.
Schemas
Sección titulada «Schemas»| Schema | Dominio | Descripcion |
|---|---|---|
cfg | Configuracion | Empresas, sucursales, parametros del sistema |
sec | Seguridad | Usuarios, roles, permisos, tokens |
master | Maestros | Clientes, proveedores, empleados, productos |
ar | Cuentas por Cobrar | Documentos de venta, cobros, abonos |
ap | Cuentas por Pagar | Documentos de compra, pagos |
acct | Contabilidad | Plan de cuentas, asientos, periodos, activos fijos |
inv | Inventario | Almacenes, stock, lotes, seriales, movimientos |
pos | Punto de Venta | Sesiones, ventas POS, cierres de caja |
rest | Restaurante | Mesas, ordenes, recetas, componentes |
fin | Finanzas | Bancos, movimientos bancarios, conciliacion, caja chica |
hr | Recursos Humanos | Estructura organizacional, beneficios, salud ocupacional |
pay | Pagos | Pasarela de pagos (Paddle), suscripciones |
store | Ecommerce | Tienda online, categorias, variantes, carrito |
fiscal | Fiscal | Retenciones, libros fiscales, tributaria |
audit | Auditoria | Log de auditorias, trazabilidad de cambios |
sys | Sistema | Logs, alertas, notificaciones, leads |
logistics | Logistica | Transportistas, conductores, recepciones, despachos |
crm | CRM | Pipelines, leads, actividades, call center |
mfg | Manufactura | BOM, centros de trabajo, ordenes de produccion |
fleet | Flota | Vehiculos, combustible, mantenimiento, viajes |
Detalle por schema
Sección titulada «Detalle por schema»cfg — Configuracion
Sección titulada «cfg — Configuracion»Almacena la configuracion multi-tenant del sistema.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
cfg.Company | Empresas registradas | CompanyId, Name, RIF, CountryCode, TimeZone |
cfg.Branch | Sucursales por empresa | BranchId, CompanyId, Name, Address |
cfg.AppSetting | Configuraciones por empresa | CompanyId, SettingKey, SettingValue |
cfg.Currency | Monedas configuradas | CurrencyId, Code, Name, ExchangeRate |
cfg.TaxRate | Tasas impositivas | TaxRateId, CompanyId, Name, Rate |
cfg.Sequence | Secuencias de numeracion | CompanyId, DocumentType, Prefix, NextNumber |
Relaciones: Branch → Company (N:1). Toda tabla de negocio referencia CompanyId y BranchId.
sec — Seguridad
Sección titulada «sec — Seguridad»Gestion de usuarios, roles y permisos granulares.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
sec.User | Usuarios del sistema | UserId, CompanyId, Username, PasswordHash, Email |
sec.Role | Roles de seguridad | RoleId, CompanyId, Name, Description |
sec.UserRole | Asignacion usuario-rol | UserId, RoleId |
sec.Permission | Catalogo de permisos | PermissionId, ModuleCode, ActionCode, PermissionCode |
sec.RolePermission | Permisos por rol | RoleId, PermissionId, BranchId, IsGranted |
sec.UserPermissionOverride | Overrides por usuario | UserId, PermissionId, IsGranted |
sec.PriceRestriction | Restricciones de precio | RoleId, MaxDiscountPercent, RequiresApprovalAbove |
sec.ApprovalRule | Reglas de aprobacion | ModuleCode, DocumentType, MinAmount, RequiredRoleId |
sec.ApprovalRequest | Solicitudes de aprobacion | DocumentModule, DocumentNumber, Status |
Relaciones: User → Company (N:1), UserRole → User+Role (N:N), RolePermission → Role+Permission (N:N).
master — Maestros
Sección titulada «master — Maestros»Entidades maestras compartidas por multiples modulos.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
master.Customer | Clientes | CustomerId, CompanyId, Name, RIF, Email, Phone |
master.Supplier | Proveedores | SupplierId, CompanyId, Name, RIF, Email |
master.Employee | Empleados | EmployeeId, CompanyId, Name, Position, HireDate |
master.Product | Productos/Servicios | ProductId, CompanyId, Code, Name, Price, Cost |
master.Category | Categorias | CategoryId, CompanyId, Name, ParentId |
master.Brand | Marcas | BrandId, CompanyId, Name |
master.Unit | Unidades de medida | UnitId, CompanyId, Code, Name |
master.Seller | Vendedores | SellerId, CompanyId, EmployeeId, CommissionRate |
Relaciones: Product → Category, Brand, Unit. Seller → Employee. Todos filtrados por CompanyId.
ar — Cuentas por Cobrar
Sección titulada «ar — Cuentas por Cobrar»Documentos de venta y gestion de cobros.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
ar.SalesDocument | Documentos de venta (factura, nota, pedido, cotizacion, presupuesto, orden) | SalesDocumentId, DocumentType, DocumentNumber, CustomerId, Total |
ar.SalesDocumentDetail | Detalle de lineas | DetailId, SalesDocumentId, ProductId, Quantity, Price |
ar.AccountReceivable | Saldos por cobrar | CustomerId, DocumentNumber, Balance, DueDate |
ar.PaymentReceipt | Recibos de cobro | ReceiptId, CustomerId, Amount, PaymentMethod |
Relaciones: SalesDocument → Customer (N:1), SalesDocumentDetail → SalesDocument+Product (N:1).
ap — Cuentas por Pagar
Sección titulada «ap — Cuentas por Pagar»Documentos de compra y gestion de pagos.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
ap.PurchaseDocument | Documentos de compra | PurchaseDocumentId, DocumentType, SupplierId, Total |
ap.PurchaseDocumentDetail | Detalle de lineas | DetailId, PurchaseDocumentId, ProductId, Quantity, Cost |
ap.AccountPayable | Saldos por pagar | SupplierId, DocumentNumber, Balance, DueDate |
ap.PaymentVoucher | Ordenes de pago | VoucherId, SupplierId, Amount |
acct — Contabilidad
Sección titulada «acct — Contabilidad»Plan de cuentas, asientos contables y reportes financieros.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
acct.Account | Plan de cuentas | AccountId, CompanyId, Code, Name, AccountType, ParentId |
acct.JournalEntry | Encabezado de asiento | JournalEntryId, EntryDate, Description, SourceModule, SourceDocumentNo, Status |
acct.JournalEntryDetail | Lineas del asiento | DetailId, JournalEntryId, AccountId, Debit, Credit |
acct.AccountingPeriod | Periodos contables | PeriodId, CompanyId, Year, Month, Status |
acct.CostCenter | Centros de costo | CostCenterId, CompanyId, Code, Name |
acct.FixedAsset | Activos fijos | FixedAssetId, CompanyId, Name, AcquisitionValue, UsefulLife |
acct.DepreciationEntry | Depreciaciones | EntryId, FixedAssetId, Amount, Period |
acct.AccountTemplate | Plantillas de asientos | TemplateId, SourceModule, AccountMapping |
Relaciones: JournalEntryDetail → JournalEntry+Account (N:1). Account es jerarquica (arbol via ParentId).
inv — Inventario
Sección titulada «inv — Inventario»Gestion de almacenes, stock y movimientos de inventario.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
inv.Warehouse | Almacenes | WarehouseId, CompanyId, Name, Location |
inv.WarehouseZone | Zonas dentro del almacen | ZoneId, WarehouseId, Name, ZoneType |
inv.WarehouseLocation | Ubicaciones especificas | LocationId, ZoneId, Code, Name |
inv.StockMovement | Movimientos de stock | MovementId, ProductId, WarehouseId, Quantity, MovementType |
inv.Lot | Lotes de producto | LotId, ProductId, LotNumber, ExpiryDate |
inv.Serial | Seriales individuales | SerialId, ProductId, SerialNumber, Status |
inv.StockByLocation | Stock por ubicacion | ProductId, LocationId, QuantityOnHand |
inv.Valuation | Valoracion de inventario | ProductId, Method, UnitCost, TotalValue |
inv.InventoryClose | Cierres mensuales | CloseId, CompanyId, Year, Month, Status |
pos — Punto de Venta
Sección titulada «pos — Punto de Venta»Operaciones de punto de venta.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
pos.Session | Sesiones de caja | SessionId, UserId, OpenDate, CloseDate, Status |
pos.Sale | Ventas POS | SaleId, SessionId, CustomerId, Total, PaymentMethod |
pos.SaleDetail | Detalle de venta | DetailId, SaleId, ProductId, Quantity, Price |
pos.CashClose | Cierres de caja | CloseId, SessionId, ExpectedAmount, ActualAmount |
pos.SaleOnHold | Ventas en espera | HoldId, SessionId, Items, CustomerName |
rest — Restaurante
Sección titulada «rest — Restaurante»Extension del POS para restaurantes con mesas y recetas.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
rest.Table | Mesas del restaurante | TableId, CompanyId, Number, Capacity, Status |
rest.Order | Ordenes de mesa | OrderId, TableId, WaiterId, Status, Total |
rest.OrderDetail | Detalle de orden | DetailId, OrderId, ProductId, Quantity |
rest.Recipe | Recetas (BOM de cocina) | RecipeId, ProductId, Name |
rest.RecipeComponent | Ingredientes de receta | ComponentId, RecipeId, IngredientId, Quantity |
fin — Finanzas
Sección titulada «fin — Finanzas»Gestion bancaria, conciliacion y caja chica.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
fin.BankAccount | Cuentas bancarias | BankAccountId, CompanyId, BankName, AccountNumber |
fin.BankMovement | Movimientos bancarios | MovementId, BankAccountId, Amount, Type, JournalEntryId |
fin.BankReconciliation | Conciliaciones | ReconciliationId, BankAccountId, Period, Status |
fin.PettyCash | Caja chica | PettyCashId, CompanyId, Name, Balance, Limit |
fin.PettyCashMovement | Movimientos caja chica | MovementId, PettyCashId, Amount, Description |
hr — Recursos Humanos
Sección titulada «hr — Recursos Humanos»Gestion del recurso humano mas alla de nomina.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
hr.Department | Departamentos | DepartmentId, CompanyId, Name |
hr.Position | Cargos | PositionId, DepartmentId, Name, SalaryRange |
hr.Benefit | Beneficios laborales | BenefitId, CompanyId, Name, Type |
hr.EmployeeBenefit | Asignacion de beneficios | EmployeeId, BenefitId, StartDate |
hr.VacationRequest | Solicitudes de vacaciones | RequestId, EmployeeId, StartDate, EndDate, Status |
hr.OccupationalHealth | Salud ocupacional | RecordId, EmployeeId, Type, Date |
hr.LegalObligation | Obligaciones legales | ObligationId, CompanyId, Type, DueDate |
pay — Pagos
Sección titulada «pay — Pagos»Integracion con pasarela de pagos.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
pay.Subscription | Suscripciones | SubscriptionId, CompanyId, PlanId, Status |
pay.Transaction | Transacciones | TransactionId, SubscriptionId, Amount, Status |
pay.Plan | Planes de suscripcion | PlanId, Name, Price, Features |
store — Ecommerce
Sección titulada «store — Ecommerce»Tienda online integrada.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
store.Category | Categorias de tienda | CategoryId, Name, Slug, ParentId |
store.ProductVariant | Variantes de producto | VariantId, ProductId, SKU, Price |
store.Cart | Carrito de compras | CartId, SessionId, Items |
store.Order | Pedidos online | OrderId, CustomerId, Status, Total |
fiscal — Fiscal
Sección titulada «fiscal — Fiscal»Tributaria y retenciones por pais.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
fiscal.Retention | Retenciones (ISLR, IVA) | RetentionId, DocumentId, Type, Rate, Amount |
fiscal.FiscalBook | Libros fiscales | BookId, CompanyId, Type, Period |
fiscal.TaxDeclaration | Declaraciones tributarias | DeclarationId, CompanyId, TaxType, Period |
audit — Auditoria
Sección titulada «audit — Auditoria»Trazabilidad completa de operaciones.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
audit.AuditLog | Log de cambios | LogId, UserId, ModuleName, EntityName, ActionType, Summary, IPAddress |
sys — Sistema
Sección titulada «sys — Sistema»Funcionalidades transversales del sistema.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
sys.Lead | Leads comerciales | LeadId, CompanyId, Name, Email, Source, Status |
sys.Alert | Alertas automaticas | AlertId, CompanyId, AlertType, Message, IsRead |
sys.Notification | Notificaciones | NotificationId, UserId, Title, Body, IsRead |
logistics — Logistica
Sección titulada «logistics — Logistica»Gestion de transporte y despacho.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
logistics.Carrier | Transportistas | CarrierId, CompanyId, Name, ContactInfo |
logistics.Driver | Conductores | DriverId, CarrierId, Name, LicenseNumber |
logistics.GoodsReceipt | Recepciones de mercancia | ReceiptId, PurchaseDocumentId, Status |
logistics.DeliveryNote | Notas de entrega | NoteId, SalesDocumentId, CarrierId, Status |
logistics.Return | Devoluciones | ReturnId, DocumentId, Reason, Status |
crm — CRM
Sección titulada «crm — CRM»Gestion de relaciones con clientes y ventas.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
crm.Pipeline | Pipelines de ventas | PipelineId, CompanyId, Name |
crm.PipelineStage | Etapas del pipeline | StageId, PipelineId, Name, Order |
crm.Lead | Leads/oportunidades | LeadId, PipelineId, StageId, CustomerId, Value |
crm.Activity | Actividades (llamadas, emails, reuniones) | ActivityId, LeadId, Type, DueDate |
crm.CallQueue | Colas de call center | QueueId, CompanyId, Name |
crm.CallAgent | Agentes de call center | AgentId, QueueId, UserId, Status |
crm.Call | Registro de llamadas | CallId, AgentId, Direction, Duration, Outcome |
crm.Campaign | Campanas de marketing | CampaignId, CompanyId, Name, Status |
crm.CampaignContact | Contactos de campana | ContactId, CampaignId, Phone, Status |
crm.Script | Scripts de llamada | ScriptId, CompanyId, Name, Content |
mfg — Manufactura
Sección titulada «mfg — Manufactura»Gestion de produccion.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
mfg.BOM | Lista de materiales | BOMId, ProductId, Version, Status |
mfg.BOMLine | Lineas de BOM | LineId, BOMId, MaterialId, Quantity |
mfg.WorkCenter | Centros de trabajo | WorkCenterId, CompanyId, Name, CostPerHour |
mfg.Routing | Rutas de produccion | RoutingId, BOMId, WorkCenterId, OperationName, Sequence |
mfg.WorkOrder | Ordenes de trabajo | WorkOrderId, BOMId, Quantity, Status, StartDate |
fleet — Flota
Sección titulada «fleet — Flota»Gestion de vehiculos y transporte propio.
| Tabla | Descripcion | Columnas clave |
|---|---|---|
fleet.Vehicle | Vehiculos | VehicleId, CompanyId, Plate, Brand, Model, Year, Status |
fleet.FuelLog | Registro de combustible | FuelLogId, VehicleId, Liters, Cost, Odometer |
fleet.MaintenanceType | Tipos de mantenimiento | TypeId, Name, KmInterval |
fleet.Maintenance | Mantenimientos | MaintenanceId, VehicleId, TypeId, Status, Cost |
fleet.Trip | Viajes | TripId, VehicleId, DriverId, Origin, Destination, Status |
fleet.VehicleDocument | Documentos del vehiculo | DocumentId, VehicleId, Type, ExpiryDate |
Convenciones de nombrado
Sección titulada «Convenciones de nombrado»| Elemento | Convencion | Ejemplo |
|---|---|---|
| Tablas | PascalCase | ar.SalesDocument |
| Columnas | PascalCase | CompanyId, DocumentNumber |
| SPs/Funciones | usp_[Schema]_[Entity]_[Action] | usp_AR_SalesDocument_List |
| Indices | IX_[Table]_[Columns] | IX_SalesDocument_CompanyId_Date |
| FK | FK_[Table]_[RefTable] | FK_SalesDocument_Customer |
| PK | Identity autoincremental | INT IDENTITY(1,1) / GENERATED ALWAYS AS IDENTITY |
Tipos de columna comunes
Sección titulada «Tipos de columna comunes»| Proposito | SQL Server | PostgreSQL |
|---|---|---|
| Identificador | INT IDENTITY(1,1) | INT GENERATED ALWAYS AS IDENTITY |
| Texto corto | NVARCHAR(n) | VARCHAR(n) |
| Texto largo | NVARCHAR(MAX) | TEXT |
| Booleano | BIT | BOOLEAN |
| Fecha/hora | DATETIME2 | TIMESTAMP |
| Moneda | DECIMAL(18,2) | NUMERIC(18,2) |
| JSON | NVARCHAR(MAX) | JSONB |
| UUID | UNIQUEIDENTIFIER | UUID |
Columnas estandar en toda tabla
Sección titulada «Columnas estandar en toda tabla»-- AuditoriaCreatedAt TIMESTAMP DEFAULT NOW() AT TIME ZONE 'UTC',UpdatedAt TIMESTAMP DEFAULT NOW() AT TIME ZONE 'UTC',CreatedBy INT,UpdatedBy INT,
-- Multi-tenantCompanyId INT NOT NULL,BranchId INT,
-- Borrado logicoIsActive BOOLEAN DEFAULT TRUE