Contabilidad Implicita
Zentto implementa un sistema de contabilidad implicita donde cada modulo auxiliar genera asientos contables automaticamente cuando se ejecutan operaciones de negocio. El usuario no necesita crear asientos manualmente para las operaciones rutinarias.
Principio fundamental
Sección titulada «Principio fundamental»Toda operacion de negocio que tenga impacto financiero genera un asiento contable automaticamente, sin intervencion del usuario.
El patron se aplica de forma consistente en todos los modulos: ventas, compras, bancos, nomina, manufactura, flota, POS y restaurante.
Patron best-effort
Sección titulada «Patron best-effort»La generacion de asientos usa el patron best-effort: nunca bloquea la operacion principal.
// Patron en el router de cada modulotry { // 1. Operacion principal (SIEMPRE se ejecuta) const result = await svc.createSale(data);
// 2. Asiento contable (best-effort, NUNCA bloquea) try { await generateAccountingEntry(result); } catch { // Silencioso: la venta ya se registro correctamente }
res.json(result);} catch (err) { res.status(500).json({ error: String(err) });}Esto garantiza:
- La operacion principal siempre se completa — una venta nunca falla por un error contable.
- El usuario no se bloquea — la experiencia es fluida incluso si hay un problema en contabilidad.
- Los errores se detectan despues — se pueden revisar asientos faltantes en auditoria.
Campos de trazabilidad
Sección titulada «Campos de trazabilidad»Cada asiento contable generado automaticamente incluye campos que lo vinculan con su operacion origen:
| Campo | Tabla | Descripcion |
|---|---|---|
SourceModule | acct.JournalEntry | Modulo que genero el asiento (ej: ventas, compras, bancos) |
SourceDocumentNo | acct.JournalEntry | Numero del documento origen (ej: FAC-0001, NC-0003) |
Estos campos se exponen en la API como origenModulo y origenDocumento, permitiendo filtrar asientos por su origen.
Mapeo de cuentas contables
Sección titulada «Mapeo de cuentas contables»Las cuentas a debitar y acreditar se configuran en la tabla acct.AccountTemplate:
Plantilla: VENTA_FACTURA Debito: 1.1.2.01 (Cuentas por Cobrar) Credito: 4.1.1.01 (Ventas) Credito: 2.1.4.01 (IVA por Pagar)El administrador configura estas plantillas desde el modulo de contabilidad. Si no existe plantilla, el asiento no se genera (best-effort silencioso).
Modulos que generan asientos
Sección titulada «Modulos que generan asientos»1. Ventas (Cuentas por Cobrar)
Sección titulada «1. Ventas (Cuentas por Cobrar)»Trigger: Emision de factura de venta.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Factura emitida | Cuentas por Cobrar | Ventas + IVA por Pagar | ventas |
| Nota de credito | Ventas + IVA por Pagar | Cuentas por Cobrar | ventas |
| Cobro recibido | Banco/Caja | Cuentas por Cobrar | ventas |
| Anulacion | Reverso del asiento original | ventas |
Archivo: web/api/src/modules/documentos-venta/routes.ts
2. Compras (Cuentas por Pagar)
Sección titulada «2. Compras (Cuentas por Pagar)»Trigger: Registro de factura de compra.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Compra registrada | Inventario/Gasto + IVA Credito | Cuentas por Pagar | compras |
| Nota de credito proveedor | Cuentas por Pagar | Inventario/Gasto | compras |
| Pago emitido | Cuentas por Pagar | Banco | compras |
| Anulacion | Reverso del asiento original | compras |
Archivo: web/api/src/modules/documentos-compra/routes.ts
3. Bancos
Sección titulada «3. Bancos»Trigger: Registro de movimiento bancario, conciliacion, cierre.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Deposito recibido | Banco | Cuenta contrapartida | bancos |
| Cheque/transferencia emitida | Cuenta contrapartida | Banco | bancos |
| Conciliacion (diferencia) | Ajuste | Banco o viceversa | bancos |
| Gasto caja chica | Gasto | Caja Chica | bancos |
Archivos: web/api/src/modules/bancos/routes.ts, bancos-contabilidad.service.ts, conciliacion.service.ts, caja-chica.service.ts
4. POS (Punto de Venta)
Sección titulada «4. POS (Punto de Venta)»Trigger: Cierre de caja, venta POS.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Venta POS efectivo | Caja | Ventas + IVA | pos |
| Venta POS tarjeta | Banco (tarjeta) | Ventas + IVA | pos |
| Cierre de caja | Banco | Caja | pos |
5. Restaurante
Sección titulada «5. Restaurante»Trigger: Cierre de orden, consumo de ingredientes.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Venta de orden | Caja/Banco | Ventas | restaurante |
| Consumo de ingredientes | Costo de Ventas | Inventario (MP) | restaurante |
6. Nomina
Sección titulada «6. Nomina»Trigger: Procesamiento de nomina quincenal/mensual.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Nomina procesada | Gasto de Nomina | Nomina por Pagar | nomina |
| Pago de nomina | Nomina por Pagar | Banco | nomina |
| Prestaciones | Gasto Prestaciones | Provision Prestaciones | nomina |
| Aportes patronales | Gasto Aportes | Aportes por Pagar | nomina |
7. RRHH
Sección titulada «7. RRHH»Trigger: Liquidacion de prestaciones, vacaciones pagadas.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Liquidacion | Provision Prestaciones | Banco | rrhh |
| Vacaciones pagadas | Provision Vacaciones | Banco | rrhh |
8. Manufactura
Sección titulada «8. Manufactura»Trigger: Completar orden de trabajo.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Consumo materiales | Produccion en Proceso | Inventario (MP) | manufactura |
| Produccion terminada | Inventario (PT) | Produccion en Proceso | manufactura |
| Mano de obra | Produccion en Proceso | Nomina por Pagar | manufactura |
| CIF (costos indirectos) | Produccion en Proceso | CIF Aplicados | manufactura |
Archivos: web/api/src/modules/manufactura/routes.ts, mfg-integracion.service.ts
9. Flota
Sección titulada «9. Flota»Trigger: Carga de combustible, mantenimiento completado.
| Evento | Debito | Credito | origenModulo |
|---|---|---|---|
| Combustible | Gasto Combustible | Caja/Banco | flota |
| Mantenimiento preventivo | Gasto Mantenimiento | Caja/Banco | flota |
| Mantenimiento correctivo | Gasto Reparaciones | Caja/Banco | flota |
Consulta de asientos por origen
Sección titulada «Consulta de asientos por origen»La API permite filtrar asientos contables por su modulo de origen:
GET /v1/contabilidad/asientos?origenModulo=ventasGET /v1/contabilidad/asientos?origenModulo=bancosGET /v1/contabilidad/asientos?origenDocumento=FAC-0001El SP usp_Acct_JournalEntry_List acepta el parametro p_origen_modulo para este filtrado.
Valores validos de origenModulo
Sección titulada «Valores validos de origenModulo»| Valor | Modulo origen |
|---|---|
ventas | Documentos de venta, CxC |
compras | Documentos de compra, CxP |
bancos | Movimientos bancarios, conciliacion, caja chica |
pos | Punto de venta |
restaurante | Ordenes de restaurante |
nomina | Procesamiento de nomina |
rrhh | Liquidaciones, vacaciones |
manufactura | Ordenes de produccion |
flota | Combustible, mantenimiento |
inventario | Ajustes de inventario |
manual | Asientos creados manualmente |
Asientos manuales vs. automaticos
Sección titulada «Asientos manuales vs. automaticos»| Caracteristica | Manual | Automatico |
|---|---|---|
| Creacion | Usuario desde UI | Sistema al ejecutar operacion |
SourceModule | manual | Nombre del modulo |
SourceDocumentNo | NULL o referencia libre | Numero del documento |
| Editable | Si (antes de aprobar) | No (solo anulable) |
| Aprobacion | Requiere aprobacion | Aprobado automaticamente |
Diagrama de flujo
Sección titulada «Diagrama de flujo»Operacion de negocio | v [Ejecutar operacion principal] | +--> OK | | | v | [Buscar plantilla contable] | | | +--> No existe plantilla | | | | | v | | (Silencioso, no genera asiento) | | | +--> Plantilla encontrada | | | v | [Generar asiento] | | | +--> OK: asiento registrado | | | +--> Error: silencioso (best-effort) | +--> Error en operacion principal | v Retornar error al usuario