Catálogo de Cuentas (CT-001)
El Catálogo de Cuentas es el plan de cuentas contable de la empresa. Tiene estructura jerárquica de 4 niveles: de lo general a lo específico. Solo las cuentas de Nivel 4 (cuentas de detalle) reciben movimientos contables; los niveles superiores son agrupadores que acumulan los saldos de sus hijos.
- Se visualiza como árbol expandible/colapsable por grupo (Deudoras / Acreedoras).
- Cada cuenta muestra su código, nombre, naturaleza y estado (activa/inactiva).
- Desde el catálogo se puede ver el historial de movimientos de una cuenta con el botón .
- Las cuentas inactivas no pueden recibir nuevos asientos.
- Se puede exportar el catálogo completo a Excel o PDF.
Niveles del plan de cuentas
| Nivel | Descripción | Ejemplo | Acepta movimientos |
|---|---|---|---|
| Nivel 1 | Grupo principal (Activo, Pasivo, Patrimonio, Ingreso, Gasto, Costo) | 1 — Activos | No |
| Nivel 2 | Subgrupo | 11 — Activo Circulante | No |
| Nivel 3 | Cuenta contable | 1101 — Caja y Bancos | No |
| Nivel 4 | Cuenta de detalle (subcuenta) | 110101 — Caja Colones | Sí |
Grupos de cuentas Nivel 1
| Grupo | Tipo | Naturaleza |
|---|---|---|
A | Activo | Deudora — saldo en débito |
P | Pasivo | Acreedora — saldo en crédito |
T | Patrimonio | Acreedora — saldo en crédito |
I | Ingresos | Acreedora |
G | Gastos | Deudora |
C | Costos | Deudora |
Permisos del Catálogo
| Permiso | Acción |
|---|---|
| 801 | Ver el catálogo de cuentas |
| 815 | Crear niveles y cuentas |
| 816 | Editar nombre de cuentas |
| 817 | Activar / Inactivar cuentas |
| 818 | Eliminar cuentas (solo si no tienen movimientos) |
| 819 | Ver movimientos de una cuenta desde el catálogo |
| 820 | Mover movimientos entre cuentas |
| 821 | Corregir saldo de una cuenta |
| 822 | Exportar movimientos de una cuenta |
vista_catalogo_contable, no la tabla cuentas directamente. La comparación de códigos de cuenta es case-insensitive (ej: 2104SN y 2104sn son la misma cuenta).
contabilidad_obtener_asiento_cierre() y contabilidad_insertar_lineas()
en /api/contabilidad/funciones_contabilidad.php. Tampoco usar beginTransaction() — está prohibido en todo el proyecto por incompatibilidad con el driver ODBC de SQL Server.
Movimientos de Cuenta y Conciliación Bancaria (MCT-001 / MCT-002)
Desde el Catálogo de Cuentas, el botón de una cuenta abre la ventana de Movimientos de Cuenta (MCT-001): el detalle de todos los débitos y créditos de la cuenta, con filtros por fechas, tipo de documento, detalle, orden y estado de conciliación. La columna Referencia muestra la referencia del documento junto al número.
Filtro "Conciliado"
El filtro Conciliado permite ver Todos los movimientos, solo los Sin conciliar o solo los Conciliados. Útil para revisar de un vistazo qué falta por conciliar de una cuenta de banco. El filtro también aplica a las exportaciones (Excel, PDF, CSV, Imprimir).
Conciliar un movimiento
- Con el check de la columna "Conc": marca o desmarca un movimiento como conciliado, uno por uno.
- Con el campo "Conciliar comprobante": digite el número de comprobante del banco y presione Enter. El sistema lo busca en el Documento, la Referencia o el Detalle de los movimientos; si lo encuentra sin conciliar, lo marca conciliado, lo resalta en la lista y limpia el campo para digitar el siguiente. Si el mismo comprobante aparece en varios movimientos (un cliente que paga varias cuentas con una sola transferencia), se concilian todos juntos.
Conciliación con archivo del banco (MCT-002)
El botón Conciliar archivo permite subir el estado de cuenta del banco (.xlsx, .xls o .csv) y conciliar en bloque:
- Cargue primero el rango de fechas deseado en la lista de movimientos.
- Suba el archivo del banco y presione Analizar con IA. El sistema detecta automáticamente las columnas del archivo (fecha, comprobante, detalle, débito, crédito) sin importar el formato del banco.
- Cada línea del banco se compara contra los movimientos de la cuenta y se clasifica.
- Revise las filas marcadas y presione Conciliar marcados.
El botón Excel (disponible después de analizar) exporta el resultado completo de la conciliación: todas las líneas del banco con su estado y el movimiento de libros emparejado, más la sección de movimientos que están solo en el sistema, con totales.
Estados del emparejamiento
| Estado | Significado | ¿Se concilia? |
|---|---|---|
| Coincide | Comprobante, fecha y monto exactos (o varios movimientos del mismo comprobante cuya suma es igual a la línea del banco). | Sí, queda pre-marcado |
| Coincide (otra fecha) | Comprobante y monto exactos pero el banco lo acreditó otro día (típico de SINPE o transferencias). Se muestra la fecha de libros y la del banco. | Marcable — usted decide |
| Por monto/fecha | Sin comprobante, pero hay un movimiento con el mismo monto en fechas cercanas (±5 días). | Marcable — usted decide |
| Ya conciliado | El movimiento correspondiente ya estaba conciliado. | No aplica |
| Difiere | El comprobante existe en libros pero el monto no coincide. Se muestra el monto y la fecha que hay en libros para comparar. | No — revisar manualmente |
| Varias coincidencias | Hay varios candidatos posibles y el sistema no puede decidir solo. | No — conciliar manual |
| Sin coincidencia | La línea del banco no existe en el sistema. | No |
Qué sobra en cada lado
Al final del análisis se muestran dos secciones de diferencias:
- Solo en el BANCO: movimientos del estado de cuenta que no existen en el sistema — falta registrarlos.
- Solo en el SISTEMA: movimientos de libros (del período del archivo) que el banco no trae — pendientes de que el banco los aplique, o sobrantes a revisar.
Asientos Contables (CT-002)
El módulo de Asientos Contables (CT-002) permite crear, consultar, editar y anular asientos manuales. Es el registro central de todas las partidas dobles del sistema. Cada asiento tiene una cabecera y una o más líneas de débito/crédito que siempre deben cuadrar (total débitos = total créditos).
- Los asientos generados automáticamente por otros módulos (ventas, compras, cierres de caja) también aparecen aquí.
- Un asiento en estado Borrador puede editarse; al procesarlo queda Cerrado.
- Se puede filtrar por período, tipo de asiento, usuario, estado y número de documento.
- Exporta a Excel y PDF con el detalle completo de líneas.
Consultar y localizar un asiento
- El filtro N° asiento está siempre visible en la barra de filtros del listado (ya no hay que abrir "Más filtros"): escribí el número y presioná Enter para mostrar ese asiento en la lista.
- El botón Localizar, en la barra superior, abre una ventana donde se ingresa el número de asiento y se abre directamente la edición de ese asiento en una pestaña nueva (sin pasar por el listado). Enter confirma; Escape o un clic afuera cierran.
- Para búsquedas más finas (por documento, cuenta, centro de costos, detalle o usuario) usá el botón Más de los filtros.
Estados de un asiento
| Estado | Descripción | Editable |
|---|---|---|
0 — Borrador | Asiento en preparación, no confirmado | Sí (con permiso 828) |
1 — Procesado | Asiento confirmado y cerrado | No (solo lectura) |
2 — Arrastre | Solo para TipoAsiento=99 (cierre de período) | No |
Tipos de asiento (TipoAsiento)
| Valor | Nombre | Descripción |
|---|---|---|
18 | Operación / Cierre desde módulos | Asiento estándar creado por cualquier proceso automático (ventas, compras, CxC, CxP, cierre de caja). Es el tipo por defecto de contabilidad_obtener_asiento_cierre(). |
21 | Liquidación | Generado exclusivamente por el proceso CT-019 Liquidar I/G. |
99 | Arrastre | Generado por el Cierre de Períodos. Contiene los saldos iniciales trasladados al nuevo período. |
Flujo obligatorio de inserción
- Obtener o crear el asiento del mes: Llamar a
contabilidad_obtener_asiento_cierre($pdo, $fecha, $usuario). El sistema busca un asiento en borrador (Estado=0) del mismo mes y año para ese usuario. Si no existe, crea uno nuevo. Se mantiene 1 asiento borrador por usuario por mes. - Insertar líneas al asiento: Llamar a
contabilidad_insertar_lineas($pdo, $asientoId, $lineas). Valida que cada cuenta exista envista_catalogo_contable, que el asiento cuadre (diferencia < 0.01) y es TODO o NADA.
Campos requeridos por línea de asiento
| Campo | Descripción | Ejemplo |
|---|---|---|
cuenta | Código de cuenta contable (Nivel 4) | 41010201 |
cc | Centro de costos (5 dígitos) | 00000 |
cod_oficina | Código de sucursal (3 dígitos) | 001 |
debito | Monto débito (0 si es crédito) | 1000.00 |
credito | Monto crédito (0 si es débito) | 0 |
detalle | Descripción del movimiento | VENTA CONTADO #123 |
documento | Número de documento origen | 00100001040000003670 |
tipo_documento | Código del tipo | FVE |
fecha | Fecha del movimiento (Y-m-d) | 2026-02-02 |
tipo_cambio | Tipo de cambio (1 para moneda nacional) | 1 |
cod_moneda | Código ISO de moneda (leer de Param 249) | CRC |
referencia | Referencia adicional | 00100001040000003670 |
Mover un documento a otro asiento (cierre)
Desde la edición de un asiento (CT-002) podés mover un documento contable completo (todas sus líneas) a otro cierre. Útil cuando un documento quedó por error en el asiento del día/mes equivocado.
- Abrí el asiento donde está el documento (
contabilidad_asiento_edicion.php?id=ASIENTO). - En la cabecera de cada documento verás un botón verde Mover (junto a Editar y Eliminar).
- Se abre un modal con la lista de cierres disponibles. Por defecto muestra el último mes.
- Si necesitás un rango distinto, cambiá las fechas Desde / Hasta y presioná Buscar.
- En la fila del cierre destino, presioná el botón Mover. El sistema confirma y traslada todas las líneas (las identifica por
Referencia + TipoDocumento).
- El asiento destino no puede ser el mismo asiento de origen ni un asiento Mayorizado (Estado=2).
- El movimiento es inmediato: actualiza
ContaDiario.Asientode las líneas afectadas. No cambiaFechaContablede las líneas — la fecha del documento se preserva. - La lista de cierres muestra: número de asiento, fecha contable, estado (Borrador/Aplicado), usuario, cantidad de documentos, líneas y total débito.
Bitácora de cambios
Toda modificación hecha sobre un asiento desde la edición (CT-002) queda registrada automáticamente en la bitácora de seguridad, con el usuario que la realizó y la fecha/hora. Esto permite auditar quién tocó cada asiento.
- Se registra cuando se agrega una línea, se elimina una línea o un documento completo, se mueve un documento a otro asiento, se cambia la fecha contable y cuando el asiento se activa (aplica) o se vuelve a poner en borrador.
- El registro es transparente para el usuario: no requiere ninguna acción adicional y no interrumpe la operación aunque la bitácora no esté disponible.
Permisos
| Permiso | Acción |
|---|---|
| 812 | Acceder al módulo de Asientos (CT-002), editar líneas, mover documentos entre asientos |
| 828 | Crear nuevos asientos manuales |
Conta Diario (CT-016)
El Conta Diario (CT-016) muestra todos los movimientos contables línea por línea, ordenados cronológicamente. Es la vista más detallada de la contabilidad: cada fila representa un débito o crédito individual con su cuenta, centro de costos, oficina, documento de origen y monto.
- Permite filtrar por rango de fechas, cuenta contable, asiento, tipo de documento, usuario y referencia.
- Soporta consulta del período activo (
ContaDiario) y del histórico (ContaDiarioHistorico). - Exporta a Excel (.xlsx), PDF y HTML imprimible.
Columnas principales
| Columna | Descripción |
|---|---|
| Asiento | Número de asiento al que pertenece la línea |
| Fecha contable | Fecha del asiento (ContaAsiento.FechaContable) |
| Cuenta | Código y nombre de la cuenta contable |
| Documento | Número de documento de origen (factura, recibo, etc.) |
| Tipo Doc. | FVE=Factura Venta, FCO=Factura Compra, ACC=Recibo CxC, NCR, TIK, AJU… |
| Detalle | Descripción del movimiento |
| Debe | Monto deudor |
| Haber | Monto acreedor |
Tipos de documento en ContaDiario
| Código | Descripción |
|---|---|
FVE | Factura de Venta electrónica (tipo 01) |
TIK | Tiquete Electrónico (tipo 04) |
NCR | Nota Crédito Venta |
NDB | Nota Débito Venta |
ACC | Aplicación CxC (recibos de cobro) |
FCO | Factura de Compra |
NCC | Nota Crédito Compra |
NDC | Nota Débito Compra |
AJU | Ajuste / Liquidación |
ACO fue eliminado definitivamente (era duplicado de FCO). Todos los registros históricos fueron migrados a FCO. No usar 'ACO' en ningún código nuevo.
Balance de Comprobación (CT-010)
El Balance de Comprobación (CT-010) presenta un resumen de todos los movimientos agrupados por cuenta contable para un período seleccionado. Muestra el saldo inicial, los débitos del período, los créditos y el saldo final. Es la herramienta principal para verificar que la contabilidad cuadra.
- Se filtra por año y mes o rango de fechas.
- Las cuentas con saldo cero se pueden ocultar para simplificar la vista.
- Exporta a Excel y PDF para entregar al contador.
- Incluye todos los TipoAsiento (incluyendo arrastres 99) para que los saldos cuadren correctamente.
Columnas del reporte
| Columna | Descripción |
|---|---|
| Cuenta | Código y nombre de la cuenta contable |
| Saldo Inicial | Saldo acumulado antes del período filtrado |
| Débitos | Total de cargos en el período |
| Créditos | Total de abonos en el período |
| Saldo Final | Saldo al cierre del período (según naturaleza deudora/acreedora) |
Balance General (CT-016)
El Balance General (CT-016) muestra la situación financiera de la empresa a una fecha de corte determinada: qué posee (Activos), qué debe (Pasivos) y cuánto vale contablemente (Patrimonio). La ecuación fundamental es Activos = Pasivos + Patrimonio.
- Se genera a cualquier fecha de corte; muestra los saldos acumulados hasta ese día.
- Las secciones se presentan en formato vertical (Activos arriba, Pasivos y Patrimonio abajo).
- Incluye subtotales por nivel y total general.
- Exporta a Excel y PDF con membrete de la empresa (Parámetro 62).
Estructura del Balance
| Sección | Grupos de cuentas |
|---|---|
| Activos | Grupo A — naturaleza deudora |
| Pasivos | Grupo P — naturaleza acreedora |
| Patrimonio | Grupos T/E — naturaleza acreedora |
Balance de Resultados (CT-018)
El Balance de Resultados (Estado de Resultados) (CT-018) muestra el desempeño económico de la empresa en un período: cuánto vendió (Ingresos), cuánto le costó lo vendido (Costos) y cuánto gastó en operaciones (Gastos). El resultado final es la Utilidad o Pérdida del período.
- Se filtra por año y mes o rango de fechas.
- Presenta los grupos I (Ingresos), C (Costos) y G (Gastos) con subtotales.
- La utilidad bruta es Ingresos − Costos; la utilidad neta es Ingresos − Costos − Gastos.
- Usa
ca.FechaContable(fecha del asiento), nocd.Fecha(fecha del documento). - Exporta a Excel, PDF y vista HTML imprimible.
Fórmula de resultados
| Concepto | Grupos |
|---|---|
| Ingresos | Grupo I |
| (−) Costos | Grupo C |
| = Utilidad Bruta | Ingresos − Costos |
| (−) Gastos | Grupo G |
| = Utilidad / Pérdida Neta | Utilidad Bruta − Gastos |
Centro de Costos CT-017
Gestión del catálogo de centros de costos utilizados para clasificar movimientos contables por área o proyecto.
Ruta: /modulos/contabilidad/centro_costos/contabilidad_centro_costos.php | Permiso: 830
Estructura de la tabla ContaCentroCostos
| Campo | Tipo | Descripción |
|---|---|---|
Cod_CentroCostos | VARCHAR(5) PK | Código único (máx. 5 caracteres, siempre en mayúsculas) |
NombreCentroCostos | VARCHAR(100) | Nombre descriptivo del centro |
FechaCreado | DATETIME | Fecha de creación |
Validaciones
- No se permite crear un código que ya existe
- No se puede eliminar un centro si tiene movimientos en
ContaDiario - El código se guarda siempre en mayúsculas
00000 es el predeterminado para movimientos sin clasificación específica.
Todos los asientos automáticos usan 00000 salvo que se configure otro.
Monedas y Divisas (CT-009)
El módulo de Monedas (CT-009) permite administrar las divisas que usa la empresa: colones (CRC), dólares (USD), euros (EUR) u otras. La moneda nacional de la empresa se configura en el Parámetro 249.
- Cada moneda tiene un código ISO (CRC, USD, EUR), nombre completo y símbolo.
- La moneda marcada como Nacional es la base del sistema; las otras son divisas extranjeras.
- Las divisas extranjeras usan el tipo de cambio vigente para convertir montos a la moneda nacional.
- Exporta el catálogo a Excel y PDF.
Campos de una moneda
| Campo | Descripción |
|---|---|
| Código | Código ISO 4217 (ej: CRC, USD) |
| Nombre | Nombre completo (ej: "Colón Costarricense") |
| Símbolo | Símbolo (ej: ₡, $) |
| Nacional | Indica si es la moneda base de la empresa |
'CRC' en código o consultas. Siempre obtener la moneda nacional del Parámetro 249. Empresas que operan en otra moneda base fallarán si el código asume CRC.
Tipos de Cambio (CT-014)
El módulo de Tipos de Cambio (CT-014) mantiene el historial de tasas de conversión entre la moneda nacional y las divisas extranjeras. El tipo de cambio correcto es fundamental para convertir montos en facturas, compras y asientos contables en moneda extranjera.
- Se puede registrar el tipo de cambio manualmente para cualquier fecha.
- Incluye sincronización automática con el BCCR (Banco Central) y con Hacienda.
- El sistema busca el TC más reciente menor o igual a la fecha del documento.
- Exporta el historial a Excel y PDF.
Campos del tipo de cambio
| Campo | Descripción |
|---|---|
| Fecha | Fecha de vigencia |
| Moneda | Código de la divisa (USD, EUR, etc.) |
| Compra | TC de compra del BCCR |
| Venta | TC de venta del BCCR |
| Hacienda | TC oficial de Hacienda para documentos electrónicos |
Mejora: ahora, si actualizás el tipo de cambio en un fin de semana o feriado (días en que el BCCR no publica), el sistema toma automáticamente el último valor publicado —el que rige ese día— en lugar de quedarse sin dato.
- Solo funciona si tenés permiso 826 (editar).
- Los botones individuales de Editar y Eliminar siguen funcionando igual.
Actividades Económicas (CT-013)
Las Actividades Económicas (CT-013) son los códigos de actividad que Hacienda asigna al emisor. Cada factura emitida debe indicar la actividad económica bajo la que se factura. Este módulo mantiene el catálogo y permite sincronizarlos con Hacienda.
- Las actividades se asocian a los artículos del inventario para que cada línea de factura lleve la actividad correcta.
- El código de actividad se obtiene de la cédula jurídica registrada en el Parámetro 66.
- La sincronización con Hacienda es no destructiva: usa
MERGEpara agregar nuevas y actualizar existentes, sin borrar las ingresadas manualmente. - Si un artículo tiene una actividad que ya no existe, el sistema la reemplaza automáticamente con la actividad predeterminada.
Campos de una actividad económica
| Campo | Descripción |
|---|---|
| Código | Código CIIU asignado por Hacienda (máx 20 caracteres) |
| Descripción | Nombre de la actividad (ej: "Comercio al por menor en almacenes") |
| Tipo | P = Principal, S = Secundaria |
MERGE: agrega nuevas, actualiza existentes y no borra las agregadas manualmente. El proceso anterior (DELETE + INSERT) era destructivo.
Sucursales / Oficinas (CT-015)
El módulo de Sucursales (CT-015) administra las oficinas o puntos de venta de la empresa. Cada sucursal tiene un código único que se usa en documentos electrónicos (forma parte del consecutivo de Hacienda) y en los asientos contables para segregar movimientos por punto de venta.
- El código de sucursal aparece en el número de consecutivo de las facturas electrónicas.
- Los reportes de ventas, compras y contabilidad pueden filtrarse por oficina.
- Cada estación de trabajo se asocia a una sucursal.
- Exporta el catálogo a Excel y PDF.
Campos de una sucursal
| Campo | Descripción |
|---|---|
| Código | Número de 3 dígitos (ej: 001). Debe coincidir con el número de sucursal registrado en Hacienda. |
| Nombre | Descripción (ej: "Casa Matriz", "Sucursal Norte") |
| Dirección | Dirección física de la sucursal |
| Teléfono | Teléfono de contacto |
| Estado | Activa o Inactiva |
Consecutivos del Sistema (CT-012)
El módulo de Consecutivos (CT-012) muestra y permite ajustar los contadores de numeración de los diferentes tipos de documentos del sistema. Cada tipo de documento tiene su propio contador que se incrementa automáticamente al emitir un nuevo documento.
- Los consecutivos de documentos electrónicos (FVE, TIK, NCR, NDB, FEC) están vinculados a Hacienda y deben mantenerse en sincronía.
- Solo personal autorizado debe modificar un consecutivo; un cambio incorrecto puede causar duplicados.
- El sistema valida que el consecutivo no esté ya usado en tablas activas e históricas (hasta 5000 intentos) antes de asignarlo.
- Exporta el estado actual a Excel y PDF.
Tipos de consecutivo principales
| Código | Documento |
|---|---|
ASI | Asientos Contables |
FVE | Facturas de Venta (electrónicas) |
TIK | Tiquetes Electrónicos |
NCR | Notas Crédito de Venta |
NDB | Notas Débito de Venta |
FCO | Facturas de Compra |
obtenerConsecutivo() con validación en tablas activas e históricas. Modificar un consecutivo manualmente sin asesoría puede generar duplicados rechazados por Hacienda.
Liquidar Ingresos y Gastos CT-019
Proceso de cierre fiscal que salda todas las cuentas de resultado (Ingresos, Costos, Gastos) y traslada la diferencia como Utilidad o Pérdida del ejercicio a una cuenta de patrimonio.
Ruta: /modulos/contabilidad/proceso_liquidar/proceso_liquidar.php
¿Cuándo ejecutarlo?
Al final de cada año fiscal, después de haber revisado y aprobado el Balance de Resultados. Solo permite liquidar años anteriores al año actual.
Flujo del proceso
-
Vista previa obligatoria
El sistema calcula los saldos de todas las cuentas del grupo I/G/C a fecha{año}-12-31. Muestra las líneas que se generarían sin ejecutar nada. -
Generación de líneas inversas
Por cada cuenta con saldo distinto de cero se genera la línea opuesta:- Ingresos (Nat. acreedora, saldo positivo) → DÉBITO = saldo
- Gastos/Costos (Nat. deudora, saldo positivo) → CRÉDITO = saldo
- Si el saldo es negativo (caso excepcional), se invierte el lado
-
Cuenta de patrimonio dinámica
La diferencia (Ingresos − Costos − Gastos) se registra en la cuenta:{parámetro 401}{año}
Ejemplo: si param 401 =3103y el año es 2025 → cuenta31032025
Si la cuenta no existe, se crea automáticamente como cuenta de detalle con nombre "Utilidad del ejercicio 2025" o "Perdida del ejercicio 2025". -
Creación del asiento
TipoAsiento = 21(LIQUIDACIONES),Estado = 0(borrador para revisión del contador), fecha01/01/{año+1}, detalle "LIQUIDACION DE CUENTAS DE RESULTADOS {año}", documento y referenciaLIQ{año},TipoDocumento = AJU.
3103. Se configura en Configuración → Parámetros (CF-004).
Cierre de Períodos Contables
Proceso que archiva definitivamente un año fiscal: mueve todos los asientos y movimientos del período a las tablas históricas y genera un asiento de arrastre con los saldos iniciales del nuevo período.
Ruta: /modulos/contabilidad/cierre_periodos/contabilidad_cierre_periodos.php
Pasos del cierre (AJAX streaming)
-
Limpieza de asientos huérfanos (Paso 0)
Elimina cabeceras deContaAsientoque no tienen ninguna línea enContaDiario:
Esto previene que cabeceras vacías bloqueen la validación del año más antiguo.DELETE FROM ContaAsiento WHERE Asiento NOT IN (SELECT Asiento FROM ContaDiario) -
Validación del año
Confirma que el año seleccionado seaMIN(YEAR(FechaContable))deContaAsiento. -
Validación de balance
Verifica que débitos == créditos del año con tolerancia de 0.02. -
Cálculo de saldos por cuenta
Usandocuentas.Naturaleza(1 = deudora, otras = acreedora). -
Asiento de arrastre
Creado conTipoAsiento='99',Estado='2', fecha{año+1}-01-01, período{año+1}01, documento'ARRASTRE', tipo documento'99', referencia'SALDO_INICIAL', CC'00000', oficina'001'.
Creado concontabilidad_insertar_lineas()(nunca INSERT directo). -
Archivado a histórico
Mueve en lotes de 100 filas:ContaAsiento→ContaAsientoHistorico(conFechaCierre=GETDATE())
ContaDiario→ContaDiarioHistorico(conFechaCierre=GETDATE())
Elimina de las tablas activas después de confirmar la copia. -
Bitácora
Registra el evento en la bitácora del sistema.
ContaDiarioHistorico y ContaAsientoHistorico tienen la misma estructura
que sus equivalentes activos más el campo FechaCierre.
Son consultables desde el Conta Diario (CT-016) con el toggle "Histórico".
Ver saldos de un período cerrado
En el panel izquierdo, debajo de "Períodos activos", aparece la lista de Períodos cerrados. Al hacer clic en uno se muestran —de solo lectura, leídos del histórico— sus saldos por asiento y sus saldos por cuenta, igual que con un período activo. El encabezado muestra una etiqueta Histórico.
Reabrir un período (operación inversa)
Deshace un cierre: devuelve los asientos del año desde el histórico a las tablas activas y elimina el asiento de arrastre que ese cierre había generado en el año siguiente (porque al volver los movimientos, ese saldo ya estaría representado dos veces).
- Solo el más reciente: se reabre en orden inverso al cierre. Solo el último año cerrado tiene el botón Reabrir habilitado; los demás aparecen deshabilitados.
- Arrastre encadenado: al volver el año, regresa también su propio asiento de arrastre del año anterior (el saldo se acumula en cadena).
- Renumeración automática: si algún número de asiento del histórico ya existe en lo activo, se le asigna un número nuevo (cabecera + líneas juntas) para no chocar.
- Fusión: si el año a reabrir ya tiene movimientos en activo (se cerró pero después se registraron asientos nuevos), la reapertura fusiona el histórico con lo activo en vez de bloquearse.
- Al terminar se recalculan los saldos de las cuentas afectadas y se registra en bitácora.
Contabilización de Ventas
Las facturas de venta (FVE), tiquetes (TIK) y notas de crédito (NCV) se contabilizan automáticamente usando las APIs centralizadas api_contabilizar_venta.php y api_contabilizar_nc.php. Cada una arma el asiento con débitos y créditos a partir de los totales de VentaHija agrupados por naturaleza del CABYS.
Cuentas utilizadas (parámetros de empresa)
| Param | Descripción |
|---|---|
| 76 | Raíz cuenta de Ventas (se concatenan sufijos 01-06 por tipo mercadería/servicio × gravado/exento/exonerado) |
| 77 | Cuenta CxC (ventas a crédito) |
| 78 | Cuenta de IVA (se usa para IVA cobrado y para IVA devuelto) |
| 79 | Cuenta Impuesto Servicio |
| 83 | Cuenta Caja / Efectivo |
| 89 | Raíz Saldo a Favor (NC genera cuenta 89+ClienteID) |
| 91 | Cuenta Costo de Venta |
| 92 | Cuenta Inventario |
IVA Devuelto en régimen IMAS
Cuando una factura devuelve parte del IVA al cliente (régimen IMAS / devolución parcial), el monto queda registrado en VentaHija.ArticuloIvaDevuelto. El Total de la factura ya viene neto: Total = SubTotal + IvaMonto − IvaDevuelto.
Para mantener trazabilidad del IVA bruto y del devuelto, la contabilización genera dos líneas en la misma cuenta de IVA (param 78):
| Documento | Lado | Monto | Significado |
|---|---|---|---|
| Venta / Tiquete | HABER | SUM(ArticuloIvaMonto) × TC | IVA cobrado bruto al cliente |
| DEBE | SUM(ArticuloIvaDevuelto) × TC | IVA devuelto al cliente (aparece solo si hay) | |
| Nota de Crédito | DEBE | SUM(ArticuloIvaMonto) × TC | Reversión IVA bruto |
| HABER | SUM(ArticuloIvaDevuelto) × TC | Reversión IVA devuelto |
IVA − IVADevuelto, que es exactamente el monto real adeudado a Hacienda. Los dos movimientos quedan separados en el mayor auxiliar para consulta y auditoría.
SUM(ArticuloIvaMonto) sin considerar el devuelto, lo que dejaba el asiento descuadrado por el monto del IVA devuelto. El ajuste automático de redondeo (tope max(50, Total × 1%)) absorbía descuadres chicos, pero en facturas con devolución grande de IVA rompía la contabilización o cargaba la diferencia incorrectamente a caja.
Acción requerida: las facturas ya contabilizadas con IVA devuelto quedaron descuadradas. Se deben re-procesar usando la opción Corregir (operacion=2) desde VE-030 o desde el lote de Ventas sin Contabilizar. Las NC asociadas también deben re-contabilizarse.
Bitácora de contabilización
Tanto al contabilizar como al anular (contabilizar la nula) una venta, NC o ND, queda un registro automático en la bitácora de seguridad con el usuario, la fecha/hora, el documento y el asiento afectado. Permite auditar quién contabilizó o reversó cada documento.
- Se consulta desde el módulo de Bitácora (Seguridad).
- El registro es transparente: no requiere ninguna acción extra y no interrumpe la contabilización aunque la bitácora no esté disponible.
Declaraciones CT-025
Repositorio para guardar y descargar los comprobantes de pago de impuestos y declaraciones de la empresa (IVA D-104, Renta, D-151, RTBF, CCSS, patentes, etc.). Los archivos quedan almacenados dentro de la base de datos, de modo que respaldan y viajan con la empresa: no dependen de una carpeta del servidor.
Ruta: /modules/contabilidad/declaraciones/declaraciones.php — Menú Contabilidad → Cierre y Procesos → Declaraciones. Permiso 831.
Subir un documento
- Clic en Subir documento.
- Tipo de declaración: IVA (D-104), Renta (D-101), Retenciones (D-103), Resumen anual (D-151), RTBF (Transparencia y Beneficiarios Finales), Planilla CCSS, Póliza INS, Patente/Municipal u Otro.
- Periodo (obligatorio, formato mes/año) y Fecha del documento (opcional).
- Descripción corta (opcional) para identificarlo rápido.
- Arrastrá el archivo a la zona de carga o hacé clic para elegirlo, y presioná Subir.
Ver, descargar y eliminar
- Ver — abre el documento en una pestaña nueva (PDF, imágenes y XML de texto).
- Descargar — baja el archivo con su nombre original.
- Eliminar — lo quita de la lista (borrado lógico; queda inactivo, no se elimina físicamente de la base).
La lista se puede filtrar por tipo, periodo y texto (descripción o nombre de archivo).
Tabla de Permisos — Módulo Contabilidad
Los siguientes permisos controlan el acceso a los módulos y acciones del área de Contabilidad. Se asignan desde Configuración → Seguridad → Usuarios.
| Permiso | Módulo / Acción |
|---|---|
| 801 | Ver Catálogo de Cuentas (CT-001) |
| 805 | Ver Monedas y Divisas |
| 806 | Ver Consecutivos |
| 807 | Ver Actividades Económicas (CT-013) |
| 808 | Ver Sucursales / Oficinas |
| 809 | Ver Balance de Comprobación (CT-010) |
| 810 | Ver Balance General |
| 811 | Ver Balance de Resultados (CT-018) |
| 812 | Ver Asientos Contables (CT-002) |
| 813 | Ver Tipos de Cambio (CT-014) |
| 814 | Liquidar Ingresos y Gastos (CT-019) |
| 815 | Crear niveles y cuentas en el Catálogo |
| 816 | Editar cuentas del Catálogo |
| 817 | Activar / Inactivar cuentas del Catálogo |
| 818 | Eliminar cuentas del Catálogo |
| 819 | Ver movimientos de cuenta desde el Catálogo |
| 820 | Mover movimientos entre cuentas |
| 821 | Corregir saldo de una cuenta |
| 822 | Exportar movimientos de cuenta |
| 823 | Crear / editar Monedas |
| 824 | Crear / editar Sucursales |
| 825 | Editar Consecutivos |
| 826 | Editar Tipos de Cambio / Actividades Económicas |
| 827 | Cierre de Períodos Contables |
| 828 | Crear nuevos Asientos manuales |
| 829 | Ver Conta Diario (CT-016) |
| 830 | Ver Centro de Costos (CT-017) |
| 831 | Ver Declaraciones — subir/descargar comprobantes (CT-025) |
Parámetros relacionados con Contabilidad
Los siguientes parámetros de empresa afectan el comportamiento del módulo de Contabilidad. Se configuran desde Configuración → Parámetros de Empresa (CF-004).
| Parámetro | Descripción | Default |
|---|---|---|
| 62 | Nombre de la empresa (aparece en encabezados de reportes) | Razón social completa |
| 66 | Cédula jurídica del emisor (usada para sincronizar Actividades Económicas con Hacienda) | — |
| 85 | Cuenta contable de caja (fallback para cliente genérico SN cuando no hay cuenta de cliente asignada) | 110101 |
| 92 | Prefijo de cuentas de inventario/costos para clasificar el TipoDocumento en ContaDiario | — |
| 191 | Contabilización automática: activa (1) o desactiva (0) el asiento automático al aplicar documentos | 0 |
| 249 | Moneda nacional de la empresa. Nunca hardcodear CRC; siempre leer este parámetro | CRC |
| 401 | Cuenta base para la liquidación de utilidades/pérdidas (CT-019). El sistema crea subcuentas {valor}{año} automáticamente | 3103 |
CRC.
/api/contabilidad/funciones_contabilidad.php. Nunca se inserta directamente en ContaDiario ni se usan transacciones beginTransaction() en módulos externos (para evitar deadlocks con el driver ODBC de SQL Server).