Este artículo reúne las fórmulas más utilizadas al configurar Estructuras Contables. Cada fórmula incluye una breve descripción, su estructura, explicación y un ejemplo práctico.
Plan Contable
Descripción
Esta fórmula permite asignar automáticamente la cuenta contable según
el plan definido en el trabajo (job_custom_attrs.Plan_Contable).
Es útil para escenarios donde distintas áreas (por ejemplo, Administración
u Operaciones) requieren asociarse a cuentas contables diferentes.
💡 Importante: aunque el siguiente ejemplo se basa
en variables de job (trabajo), la misma lógica puede
aplicarse
a otras categorías según el contexto del asiento.
-
centro_costo→ si deseas basar la cuenta contable en un centro de costo. -
area→ si la lógica depende del área asignada. -
empresa→ si las cuentas varían según la empresa.
Fórmula
CASE job_custom_attrs.Plan_Contable
WHEN "ADMINISTRACION" THEN IF(PRESENT(cuenta_custom_attrs.ADMINISTRACION), cuenta_custom_attrs.ADMINISTRACION, cuenta_contable.cuenta_contable)
WHEN "OPERACIONES" THEN IF(PRESENT(cuenta_custom_attrs.OPERACIONES), cuenta_custom_attrs.OPERACIONES, cuenta_contable.cuenta_contable)
ELSE cuenta_contable.cuenta_contable
END
Explicación
-
Evalúa el plan en
job_custom_attrs.Plan_Contable. - Si coincide con Administración u Operaciones, busca el atributo en la cuenta.
- Si el atributo tiene valor → se usa; si no → se usa la cuenta general.
Ejemplo
Plan = OPERACIONES → devuelve
cuenta_custom_attrs.OPERACIONESsi existe, de lo contrariocuenta_contable.cuenta_contable.
RUT según tipo de entidad
Descripción
Esta fórmula obtiene automáticamente el
RUT correspondiente al tipo de entidad
definido en el atributo personalizado
cuenta_custom_attrs.Rut.
Evalúa si se trata de una AFP, Isapre, Empresa, Funcionario, APV
u otro tipo,
y devuelve el RUT asociado dinámicamente.
Utiliza la función rut_sin_puntos() para limpiar el
formato del RUT
(elimina puntos pero mantiene el guion).
Si no deseas aplicar modificaciones, elimina
rut_sin_puntos()
para devolver el RUT completo.
Fórmula
CASE cuenta_custom_attrs.Rut
WHEN "AFP" THEN rut_sin_puntos(plan.rut_afp)
WHEN "SALUD" THEN rut_sin_puntos(plan.rut_isapre)
WHEN "FUNCIONARIO" THEN rut_sin_puntos(employee.rut)
WHEN "EMPRESA" THEN rut_sin_puntos(empresa.rut)
WHEN "AFC" THEN "76237243-6"
WHEN "CCAF" THEN "81826800-9"
WHEN "MUTUAL" THEN rut_sin_puntos(plan.rut_mutual)
WHEN "APV" THEN rut_sin_puntos(plan.rut_apv)
ELSE rut_sin_puntos(cuenta_custom_attrs.Rut)
END
Explicación
-
Evalúa el valor definido en
cuenta_custom_attrs.Rut. - Obtiene el RUT según la entidad (AFP, Isapre, Empresa, etc.).
-
Usa
rut_sin_puntos()para entregar un formato limpio. - Si no coincide con ningún tipo, devuelve el valor original.
Ejemplo
Tipo = "AFP" → devuelve
plan.rut_afpsin puntos.
Tipo = "FUNCIONARIO" → devuelveemployee.rutsin puntos.
Tipo = "EMPRESA" → devuelveempresa.rutsin puntos.
RUT según tipo de entidad y tipo de cuenta contable
Descripción
Versión extendida que obtiene el RUT según el tipo de entidad y
el tipo de cuenta contable (cuenta_contable.nombre_cuenta),
diferenciando entre AFP, APV, Cesantía, Isapre, Empresa o Funcionario.
Fórmula
rut_sin_puntos(
CASE cuenta_custom_attrs.RUT
WHEN "AFP" THEN IF(
cuenta_contable.nombre_cuenta = "apv", plan.rut_apv,
IF(
cuenta_contable.nombre_cuenta = "cuenta_2", plan.rut_cuenta2,
IF(
cuenta_contable.nombre_cuenta = "cesantia" OR
cuenta_contable.nombre_cuenta = "cesantia_empleador_deber" OR
cuenta_contable.nombre_cuenta = "cesantia_empleador_haber",
plan.afp_recaudadora,
plan.rut_afp
)
)
)
WHEN "SALUD" THEN plan.rut_isapre
WHEN "FUNCIONARIO" THEN employee.rut
WHEN "APV" THEN plan.rut_apv
WHEN "EMPRESA" THEN empresa.rut
ELSE cuenta_custom_attrs.RUT
END
)
Explicación
-
Evalúa el tipo de entidad (
cuenta_custom_attrs.RUT). - Si es AFP, revisa además el nombre de la cuenta contable.
- Devuelve el RUT específico (APV, Cesantía, Recaudadora, etc.).
-
Limpia el formato con
rut_sin_puntos().
Ejemplo
Tipo = "AFP" y cuenta = "apv" →
plan.rut_apvsin puntos.
Tipo = "AFP" y cuenta = "cesantia" →plan.afp_recaudadorasin puntos.
Tipo = "FUNCIONARIO" →employee.rutsin puntos.
Limitar caracteres en cualquier campo (LEFT() y RIGHT())
Descripción
Las funciones LEFT() y RIGHT() se utilizan
para
recortar la cantidad de caracteres visibles de un
texto o número.
Son útiles para ajustar los largos de columnas según los requisitos
del sistema contable.
Fórmula
LEFT(CONCAT(cuenta_contable.cuenta_contable, " "), 10)
LEFT(CONCAT(cuenta_custom_attrs.Descripcion, " "), 30)
LEFT(CONCAT(to_s(cuenta_contable.deber), " "), 12)
RIGHT(CONCAT(to_s(cuenta_contable.haber), " "), 8)
Explicación
-
LEFT(valor, n)toma los primerosncaracteres. -
RIGHT(valor, n)toma los últimosncaracteres. -
CONCAT(..., " ")evita errores cuando el valor está vacío. -
Usa
to_s()si el valor es numérico.
Ejemplo
Entrada:
cuenta_contable.cuenta_contable = "110501000123"
Fórmula:LEFT(CONCAT(cuenta_contable.cuenta_contable, " "), 10)
Resultado:1105010001Entrada:
cuenta_contable.nombre_cuenta = "Gastos de administración general"
Fórmula:RIGHT(CONCAT(cuenta_contable.nombre_cuenta, " "), 15)
Resultado:nistración general
Normalizar texto (eliminar tildes y convertir "ñ" → "n")
Descripción
NORMALIZE(texto) elimina tildes y diacríticos del texto
y
convierte la letra “ñ” en “n”.
Útil para búsquedas, comparaciones y generación de claves sin acentos.
Fórmula
NORMALIZE(cuenta_contable.glosa)
Explicación
- Quita tildes: á→a, é→e, í→i, ó→o, ú→u.
- Convierte “ñ” → “n”.
- No altera espacios ni puntuación.
-
Se puede combinar con
UPPER()oLOWER()para comparaciones case-insensitive.
Ejemplo
Entrada:
NORMALIZE("Previsión AFP")
Resultado:Prevision AFP
Rellenar texto con espacios (LPAD)
Descripción
LPAD(texto, ancho) rellena el texto con espacios a la izquierda
hasta alcanzar el largo total indicado en ancho.
Si el texto supera ese tamaño, se recorta automáticamente para ajustarse.
Fórmula
LPAD(cuenta_contable.cuenta_contable, 20)
Explicación
- Toma el valor especificado como texto.
- Calcula cuántos espacios necesita para llegar al largo deseado.
- Agrega espacios por la izquierda hasta completar el ancho total.
- Si el contenido es más largo que el ancho, lo corta al tamaño indicado.
Ejemplo
Entrada:
LPAD("2101001", 20)
Resultado:
"·············2101001"(13 espacios a la izquierda, total 20 caracteres)
Rellenar con carácter personalizado (LPAD)
Descripción
LPAD(texto, ancho, caracter) funciona igual que
LPAD(texto, ancho),
pero permite definir un carácter de relleno distinto
al espacio.
El tercer parámetro es opcional; si no se indica, se
usan espacios.
Fórmula
LPAD("123", 10, '0')
Explicación
-
Toma el valor como texto y calcula cuántos caracteres faltan para
llegar a
ancho. -
Rellena por la izquierda usando el
caracterindicado. -
Si el texto supera el
ancho, se recorta para ajustarse al tamaño. -
Si omites el tercer parámetro, el relleno será con espacios (comportamiento
de
LPAD(texto, ancho)).
Ejemplo
Entrada:
LPAD("123", 10, '0')
Resultado:"0000000123"Aplicación típica:
LPAD(cuenta_contable.cuenta_contable, 20, '0')
Rellenar texto con espacios (RPAD)
Descripción
RPAD(texto, ancho) rellena el texto con espacios a la derecha
hasta alcanzar el largo total indicado en ancho. Si el texto supera ese tamaño,
se recorta automáticamente para ajustarse.
Fórmula
RPAD(cuenta_contable.cuenta_contable, 20)
Explicación
- Toma el valor especificado como texto.
- Calcula cuántos espacios faltan para llegar al largo deseado.
- Agrega espacios por la derecha hasta completar el ancho total.
- Si el contenido es más largo que el ancho, lo corta al tamaño indicado.
Ejemplo
Entrada:
RPAD("2101001", 20)Resultado (literal):
"2101001 "13 espacios a la derecha, total 20 caracteresResultado (visualizado):
"2101001·············"Cada · representa un espacio
Rellenar con carácter personalizado (RPAD)
Descripción
RPAD(texto, ancho, caracter) funciona igual que RPAD(texto, ancho),
pero permite definir un carácter de relleno distinto al espacio.
El tercer parámetro es opcional; si no se indica, se usan espacios.
Fórmula
RPAD("123", 10, '0')
Explicación
- Toma el valor como texto y calcula cuántos caracteres faltan para llegar a
ancho. - Rellena por la derecha usando el
caracterindicado. - Si el texto supera el
ancho, se recorta para ajustarse al tamaño. - Si omites el tercer parámetro, el relleno será con espacios (comportamiento de
RPAD(texto, ancho)).
Ejemplo
Entrada:
RPAD("123", 10, '0')Resultado (literal):
"1230000000"Relleno con ceros a la derecha hasta completar 10 caracteres.
Identificar Débito o Crédito
Descripción
Esta fórmula permite
identificar si una línea contable corresponde a un Débito o un Crédito
según el valor del campo cuenta_contable.deber_o_haber.
Es útil para mostrar etiquetas descriptivas o clasificaciones dentro
de la estructura contable, especialmente
al generar reportes o glosas personalizadas.
💡 Consejo: Puedes adaptar el texto de salida ('DEBITO'
y 'CREDITO')
según el formato que use tu ERP, por ejemplo: 'DEBIT' /
'CREDIT' o
'DR' / 'CR'.
Fórmula
IF(cuenta_contable.deber_o_haber = 'D', 'DEBITO', 'CREDITO')
Explicación
-
Evalúa el valor del campo
cuenta_contable.deber_o_haber. -
Si es igual a
'D', devuelve el texto "DEBITO". -
En cualquier otro caso (por ejemplo,
'C'), devuelve "CREDITO". - Esta estructura condicional puede aplicarse también a otros campos, como glosa, centro de costo o tipo de documento.
Ejemplo
Entrada 1:
cuenta_contable.deber_o_haber = 'D'
Resultado:DEBITOEntrada 2:
cuenta_contable.deber_o_haber = 'C'
Resultado:CREDITO
✅ Buenas prácticas al usar fórmulas
- Respeta mayúsculas y minúsculas en los nombres de variables.
- Verifica que los atributos personalizados existen en tu cuenta.
-
Usa
IF(PRESENT(...))oifmonto(...)para evitar valores vacíos. - Si una fórmula no funciona, revisa el valor real de los atributos.
- En caso de dudas, contacta al equipo de Integraciones.