Contabilidad AY-016

Plan de cuentas, asientos, balances, cierres fiscales y configuración contable

Menú Ayuda

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:

  1. Cargue primero el rango de fechas deseado en la lista de movimientos.
  2. 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.
  3. Cada línea del banco se compara contra los movimientos de la cuenta y se clasifica.
  4. 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

EstadoSignificado¿Se concilia?
CoincideComprobante, 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/fechaSin comprobante, pero hay un movimiento con el mismo monto en fechas cercanas (±5 días).Marcable — usted decide
Ya conciliadoEl movimiento correspondiente ya estaba conciliado.No aplica
DifiereEl 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 coincidenciasHay varios candidatos posibles y el sistema no puede decidir solo.No — conciliar manual
Sin coincidenciaLa 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.
Nota La comparación se hace contra los movimientos cargados en pantalla: si el archivo del banco cubre fechas que no están en la lista, amplíe primero el rango de fechas y vuelva a analizar. La lectura del archivo con IA requiere la suscripción de IA activa.

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

EstadoDescripciónEditable
0 — BorradorAsiento en preparación, no confirmadoSí (con permiso 828)
1 — ProcesadoAsiento confirmado y cerradoNo (solo lectura)
2 — ArrastreSolo para TipoAsiento=99 (cierre de período)No

Tipos de asiento (TipoAsiento)

ValorNombreDescripción
18Operación / Cierre desde módulosAsiento 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().
21LiquidaciónGenerado exclusivamente por el proceso CT-019 Liquidar I/G.
99ArrastreGenerado por el Cierre de Períodos. Contiene los saldos iniciales trasladados al nuevo período.

Flujo obligatorio de inserción

  1. 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.
  2. Insertar líneas al asiento: Llamar a contabilidad_insertar_lineas($pdo, $asientoId, $lineas). Valida que cada cuenta exista en vista_catalogo_contable, que el asiento cuadre (diferencia < 0.01) y es TODO o NADA.

Campos requeridos por línea de asiento

CampoDescripciónEjemplo
cuentaCódigo de cuenta contable (Nivel 4)41010201
ccCentro de costos (5 dígitos)00000
cod_oficinaCódigo de sucursal (3 dígitos)001
debitoMonto débito (0 si es crédito)1000.00
creditoMonto crédito (0 si es débito)0
detalleDescripción del movimientoVENTA CONTADO #123
documentoNúmero de documento origen00100001040000003670
tipo_documentoCódigo del tipoFVE
fechaFecha del movimiento (Y-m-d)2026-02-02
tipo_cambioTipo de cambio (1 para moneda nacional)1
cod_monedaCódigo ISO de moneda (leer de Param 249)CRC
referenciaReferencia adicional00100001040000003670

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.

  1. Abrí el asiento donde está el documento (contabilidad_asiento_edicion.php?id=ASIENTO).
  2. En la cabecera de cada documento verás un botón verde Mover (junto a Editar y Eliminar).
  3. Se abre un modal con la lista de cierres disponibles. Por defecto muestra el último mes.
  4. Si necesitás un rango distinto, cambiá las fechas Desde / Hasta y presioná Buscar.
  5. 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.Asiento de las líneas afectadas. No cambia FechaContable de 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

PermisoAcción
812Acceder al módulo de Asientos (CT-002), editar líneas, mover documentos entre asientos
828Crear 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

ColumnaDescripción
AsientoNúmero de asiento al que pertenece la línea
Fecha contableFecha del asiento (ContaAsiento.FechaContable)
CuentaCódigo y nombre de la cuenta contable
DocumentoNúmero de documento de origen (factura, recibo, etc.)
Tipo Doc.FVE=Factura Venta, FCO=Factura Compra, ACC=Recibo CxC, NCR, TIK, AJU…
DetalleDescripción del movimiento
DebeMonto deudor
HaberMonto acreedor

Tipos de documento en ContaDiario

CódigoDescripción
FVEFactura de Venta electrónica (tipo 01)
TIKTiquete Electrónico (tipo 04)
NCRNota Crédito Venta
NDBNota Débito Venta
ACCAplicación CxC (recibos de cobro)
FCOFactura de Compra
NCCNota Crédito Compra
NDCNota Débito Compra
AJUAjuste / Liquidación
Código ACO eliminado El código 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.
Permiso requerido Se requiere el permiso 829 para acceder al Conta Diario.

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

ColumnaDescripción
CuentaCódigo y nombre de la cuenta contable
Saldo InicialSaldo acumulado antes del período filtrado
DébitosTotal de cargos en el período
CréditosTotal de abonos en el período
Saldo FinalSaldo al cierre del período (según naturaleza deudora/acreedora)
Permiso requerido Se requiere el permiso 809 para acceder al Balance de Comprobación.

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ónGrupos de cuentas
ActivosGrupo A — naturaleza deudora
PasivosGrupo P — naturaleza acreedora
PatrimonioGrupos T/E — naturaleza acreedora
Permiso requerido Se requiere el permiso 810 para acceder al Balance General.

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), no cd.Fecha (fecha del documento).
  • Exporta a Excel, PDF y vista HTML imprimible.

Fórmula de resultados

ConceptoGrupos
IngresosGrupo I
(−) CostosGrupo C
= Utilidad BrutaIngresos − Costos
(−) GastosGrupo G
= Utilidad / Pérdida NetaUtilidad Bruta − Gastos
Permiso requerido Se requiere el permiso 811 para acceder al Balance de Resultados.

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

CampoTipoDescripción
Cod_CentroCostosVARCHAR(5) PKCódigo único (máx. 5 caracteres, siempre en mayúsculas)
NombreCentroCostosVARCHAR(100)Nombre descriptivo del centro
FechaCreadoDATETIMEFecha 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
Centro por defecto El centro 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

CampoDescripción
CódigoCódigo ISO 4217 (ej: CRC, USD)
NombreNombre completo (ej: "Colón Costarricense")
SímboloSímbolo (ej: , $)
NacionalIndica si es la moneda base de la empresa
Regla crítica Nunca hardcodear '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.
Permiso requerido Se requiere el permiso 805 para acceder al módulo de Monedas. Permiso 823 para crear o editar.

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

CampoDescripción
FechaFecha de vigencia
MonedaCódigo de la divisa (USD, EUR, etc.)
CompraTC de compra del BCCR
VentaTC de venta del BCCR
HaciendaTC oficial de Hacienda para documentos electrónicos
Sincronización automática El botón "Actualizar desde BCCR" consulta en tiempo real la API del Banco Central para obtener el TC del día. Se recomienda sincronizar diariamente al inicio de operaciones.
Conexión actualizada al nuevo servicio del BCCR 2026-05-28 El Banco Central reemplazó su antiguo servicio de Indicadores Económicos (que deja de funcionar el 30 de junio de 2026) por una nueva plataforma. FactuPOS ya quedó conectado a la nueva, así que la actualización del tipo de cambio del dólar sigue funcionando sin que tengas que hacer nada. Si el BCCR no estuviera disponible, el sistema usa automáticamente el tipo de cambio de Hacienda como respaldo.

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.
Permiso requerido Permiso 813 para ver Tipos de Cambio. Permiso 826 para registrar o editar.
Doble clic para editar 2026-05-02 Hacé doble clic sobre cualquier fila del listado para abrir el modal de edición directamente, sin tener que apuntar al botón con ícono de lápiz. El cursor cambia al pasar el mouse sobre las filas y aparece un tooltip "Doble clic para editar".
  • 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 MERGE para 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

CampoDescripción
CódigoCódigo CIIU asignado por Hacienda (máx 20 caracteres)
DescripciónNombre de la actividad (ej: "Comercio al por menor en almacenes")
TipoP = Principal, S = Secundaria
Sincronización usa MERGE (no destructivo) La sincronización con Hacienda usa MERGE: agrega nuevas, actualiza existentes y no borra las agregadas manualmente. El proceso anterior (DELETE + INSERT) era destructivo.
Permisos requeridos Permiso 807 para ver actividades. Permiso 826 para crear, editar, eliminar o sincronizar con Hacienda.

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

CampoDescripción
CódigoNúmero de 3 dígitos (ej: 001). Debe coincidir con el número de sucursal registrado en Hacienda.
NombreDescripción (ej: "Casa Matriz", "Sucursal Norte")
DirecciónDirección física de la sucursal
TeléfonoTeléfono de contacto
EstadoActiva o Inactiva
Importante El código de sucursal debe coincidir exactamente con el registrado ante Hacienda. Un código incorrecto causará rechazo de facturas electrónicas por número de sucursal inválido.
Permisos requeridos Permiso 808 para ver sucursales. Permiso 824 para crear o editar.

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ódigoDocumento
ASIAsientos Contables
FVEFacturas de Venta (electrónicas)
TIKTiquetes Electrónicos
NCRNotas Crédito de Venta
NDBNotas Débito de Venta
FCOFacturas de Compra
NUNCA usar MAX() para el siguiente consecutivo El sistema usa la función obtenerConsecutivo() con validación en tablas activas e históricas. Modificar un consecutivo manualmente sin asesoría puede generar duplicados rechazados por Hacienda.
Permisos requeridos Permiso 806 para ver los consecutivos. Permiso 825 para editar.

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

  1. 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.
  2. 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
  3. Cuenta de patrimonio dinámica
    La diferencia (Ingresos − Costos − Gastos) se registra en la cuenta: {parámetro 401}{año}
    Ejemplo: si param 401 = 3103 y el año es 2025 → cuenta 31032025
    Si la cuenta no existe, se crea automáticamente como cuenta de detalle con nombre "Utilidad del ejercicio 2025" o "Perdida del ejercicio 2025".
  4. Creación del asiento
    TipoAsiento = 21 (LIQUIDACIONES), Estado = 0 (borrador para revisión del contador), fecha 01/01/{año+1}, detalle "LIQUIDACION DE CUENTAS DE RESULTADOS {año}", documento y referencia LIQ{año}, TipoDocumento = AJU.
El asiento queda en Borrador La liquidación no procesa automáticamente el asiento. El contador debe revisarlo y cambiarlo a Estado procesado desde el módulo de Asientos (CT-002, permiso 812).
Parámetro 401 — Cuenta base de liquidación Define el prefijo de la cuenta de patrimonio de resultado. Valor por defecto: 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

Orden cronológico obligatorio Solo se puede cerrar el año más antiguo con movimientos. No se puede cerrar 2025 si aún hay asientos de 2024 en las tablas activas.

Pasos del cierre (AJAX streaming)

  1. Limpieza de asientos huérfanos (Paso 0)
    Elimina cabeceras de ContaAsiento que no tienen ninguna línea en ContaDiario:
    DELETE FROM ContaAsiento
    WHERE Asiento NOT IN (SELECT Asiento FROM ContaDiario)
    Esto previene que cabeceras vacías bloqueen la validación del año más antiguo.
  2. Validación del año
    Confirma que el año seleccionado sea MIN(YEAR(FechaContable)) de ContaAsiento.
  3. Validación de balance
    Verifica que débitos == créditos del año con tolerancia de 0.02.
  4. Cálculo de saldos por cuenta
    Usando cuentas.Naturaleza (1 = deudora, otras = acreedora).
  5. Asiento de arrastre
    Creado con TipoAsiento='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 con contabilidad_insertar_lineas() (nunca INSERT directo).
  6. Archivado a histórico
    Mueve en lotes de 100 filas: ContaAsientoContaAsientoHistorico (con FechaCierre=GETDATE())
    ContaDiarioContaDiarioHistorico (con FechaCierre=GETDATE())
    Elimina de las tablas activas después de confirmar la copia.
  7. Bitácora
    Registra el evento en la bitácora del sistema.
Tablas históricas 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.
Recomendación Evite ciclos repetidos de cerrar/reabrir sobre el mismo año. Si nota saldos de cuentas inflados tras varios ciclos, ejecute el recálculo de saldos contables: los movimientos no se pierden, pero el saldo acumulado de cada cuenta puede requerir refrescarse.

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)

ParamDescripción
76Raíz cuenta de Ventas (se concatenan sufijos 01-06 por tipo mercadería/servicio × gravado/exento/exonerado)
77Cuenta CxC (ventas a crédito)
78Cuenta de IVA (se usa para IVA cobrado y para IVA devuelto)
79Cuenta Impuesto Servicio
83Cuenta Caja / Efectivo
89Raíz Saldo a Favor (NC genera cuenta 89+ClienteID)
91Cuenta Costo de Venta
92Cuenta 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):

DocumentoLadoMontoSignificado
Venta / TiqueteHABERSUM(ArticuloIvaMonto) × TCIVA cobrado bruto al cliente
DEBESUM(ArticuloIvaDevuelto) × TCIVA devuelto al cliente (aparece solo si hay)
Nota de CréditoDEBESUM(ArticuloIvaMonto) × TCReversión IVA bruto
HABERSUM(ArticuloIvaDevuelto) × TCReversión IVA devuelto
Efecto neto en la cuenta de IVA El saldo neto de la cuenta 78 después de las dos líneas es 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.
Fix 2026-04-22 Antes de esta fecha solo se acreditaba 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

  1. Clic en Subir documento.
  2. 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.
  3. Periodo (obligatorio, formato mes/año) y Fecha del documento (opcional).
  4. Descripción corta (opcional) para identificarlo rápido.
  5. 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).

Formatos y tamaño Se aceptan PDF, XML, imágenes (PNG/JPG), Excel (XLS/XLSX/CSV) y ZIP, hasta 15 MB por archivo.
Requiere el permiso 831 El módulo y su botón solo aparecen para los usuarios que tengan asignado el permiso 831 (Configuración → Seguridad → Usuarios).

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.

PermisoMódulo / Acción
801Ver Catálogo de Cuentas (CT-001)
805Ver Monedas y Divisas
806Ver Consecutivos
807Ver Actividades Económicas (CT-013)
808Ver Sucursales / Oficinas
809Ver Balance de Comprobación (CT-010)
810Ver Balance General
811Ver Balance de Resultados (CT-018)
812Ver Asientos Contables (CT-002)
813Ver Tipos de Cambio (CT-014)
814Liquidar Ingresos y Gastos (CT-019)
815Crear niveles y cuentas en el Catálogo
816Editar cuentas del Catálogo
817Activar / Inactivar cuentas del Catálogo
818Eliminar cuentas del Catálogo
819Ver movimientos de cuenta desde el Catálogo
820Mover movimientos entre cuentas
821Corregir saldo de una cuenta
822Exportar movimientos de cuenta
823Crear / editar Monedas
824Crear / editar Sucursales
825Editar Consecutivos
826Editar Tipos de Cambio / Actividades Económicas
827Cierre de Períodos Contables
828Crear nuevos Asientos manuales
829Ver Conta Diario (CT-016)
830Ver Centro de Costos (CT-017)
831Ver Declaraciones — subir/descargar comprobantes (CT-025)
Sin permiso: botón gris, no oculto Cuando un usuario no tiene permiso para una acción, los botones aparecen deshabilitados en gris con tooltip "Sin permiso". No se ocultan para que el usuario sepa que la función existe.

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ámetroDescripciónDefault
62Nombre de la empresa (aparece en encabezados de reportes)Razón social completa
66Cédula jurídica del emisor (usada para sincronizar Actividades Económicas con Hacienda)
85Cuenta contable de caja (fallback para cliente genérico SN cuando no hay cuenta de cliente asignada)110101
92Prefijo de cuentas de inventario/costos para clasificar el TipoDocumento en ContaDiario
191Contabilización automática: activa (1) o desactiva (0) el asiento automático al aplicar documentos0
249Moneda nacional de la empresa. Nunca hardcodear CRC; siempre leer este parámetroCRC
401Cuenta base para la liquidación de utilidades/pérdidas (CT-019). El sistema crea subcuentas {valor}{año} automáticamente3103
NUNCA hardcodear la moneda como 'CRC' Siempre obtener la moneda nacional desde el Parámetro 249. Empresas que operan en otra moneda base fallarán si el código asume CRC.
Funciones centralizadas de contabilidad Todos los asientos contables del sistema pasan obligatoriamente por /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).