Siguiendo con el tema de utilizar herramientas desde un modo texto, por aquello de que soy friki o quizá lo podríamos llamar computación viejuna (o vintage que está más de moda la palabreja en extrangerismo), me pregunté hasta qué punto una herramienta como Emacs me permitiría cubrir todas las necesidades de mi oficina, sin que falte un pero.
Una de las cosas que pensé que sería complicado es el tema de la contabilidad. Me llegué incluso a plantear el practicar un poco mis recientes conocimientos de elisp y hacer algún modo de Emacs que me permitiera llevar alguna tabla de gastos e ingresos --o lo que viene a ser, mayormente-- un libro diario de contabilidad donde poder anotar ingresos y gastos, cobros a clientes, pagos a proveedores y si el negocio va bien, los intereses de las cuentas en Suiza y las Bahamas.
Hasta ahora he venido utilizando un programa de contabilidad con interface gráfica libre, que hace bien su cometido, es sencillo de manejar y bastante completo. No se trata de llevar la contabilidad de una empresa como tal, sino un control de gastos e ingresos para no tener sustos a fin de mes. Utiliza el concepto de «doble entrada» que es, quizás, lo más enrevesado que tiene la contabilidad. Cuando me lo explicaron me acordé del Segundo Principio de la Termodinámica; sí, aquel de «la energía ni se crea ni se destruye, sólo se transforma». Pues con el dinero lo mismo en la contabilidad el dinero no se crea (ni se destruye) sólo se mueve de una cuenta a otra. Y por supuesto, la ecuación fundamental contable:
Activo = Pasivo + Capital (o Patrimonio, o Fondos propios)
o expresado de otro modo
Patrimonio = Activo - Pasivo
Por otro lado, tampoco es que sepa mucho de estos temas, sólo lo suficiente para entender un poco de control sobre mis cosas. Todo este rollo viene a cuento de la última «frikada» que me he encontrado por ahí. Es un sistema de contabilidad para la línea de comandos que permite una gestión bastante flexible del tema.
Todo se basa en un fichero de texto que representa un libro diario donde se anotan las transacciones entre cuentas; en texto plano, sin más y una herramienta, que se llama ledger (libro mayor a la traducción) que analiza dicho fichero y genera informes. Es decir, no es una herramienta para introducir información contable (eso se hace con cualquier editor de texto; por cierto, Emacs tiene un modo mayor para ledger bastante apañado), sino para analizar la información contable que contiene ese fichero.
En la imagen pongo una captura de pantalla de Emacs con un fichero de ejemplo que me he hecho para probar algunas funcionalidades de ledger. Como se puede apreciar las entradas comienzan con una línea donde la fecha (en formato ISO) se encuentra en la primera columna, seguida de una descripción. El resto del asiento lo forman los apuntes de cada cuenta. La suma total debe dar 0 (como he venido explicando). Lo más llamativo es el apunte que dice:
Ingresos:Nómina -1.000 €
A mí me lo explicaron con el famoso «Debe - Haber» en el que los
números son siempre positivos y no llama tanto la atención ese número
negativo. ¿Cómo es posible que los ingresos entren en contabilidad con
un menos delante? Pues porque en realidad estamos aplicando el segundo
principio de la termodinámica: el dinero entra en nuestra cuenta
Activo:Banco
pero tiene que venir de algún sitio. En este caso viene
de la cuenta Ingresos:Nómina
, pero esa cuenta no es «nuestra» es de
nuestro empleador y él tendrá 1.000€ menos que «ingresan» en nuestras
cuentas.
Otro punto a destacar es que si los apuntes son sencillos y evidentes, no tenemos por qué anotar la cantidad, ledger lo hace por nosotros.
Como se puede apreciar el fichero que generamos nosotros sería nuestro «diario» donde anotamos todas las transacciones. Pero tanta información despista más que aclara y necesitamos consultar la información de manera más resumida o «precisa».
La estrella de los informes en contabilidad es el Balance. En la imagen podemos ver como aparece la salida en consola del comando:
ledger -f ejemplo.ledger balance
En consola se puede apreciar que ledger colorea las cadenas para que se aprecie el significado de cada cosa de un vistazo.
También se puede consultar el contenido en forma de «registro» donde se anotan las transacciones como se haría en un libro de cuentas y pedir los movimientos de una determinada cuenta o conjunto de cuentas, por ejemplo como se ha hecho con:
ledger -f ejemplo.ledger register Banco
Que muestra las transacciones y el «balance» de la cuenta Banco
.
Este ejemplo, ya da una pequeña idea de la potencia de la herramienta, que cuenta con muchas opciones que aquí no se han podido ver: como la posibilidad de programar transacciones periódicas; definir cuentas con formatos específicos; trabajar con códigos de cuenta (por ejemplo, para ajustarse al Plan General Contable); trabajar con divisas y cambios, incluso dentro de la misma cuenta.
De momento, seguiré manteniendo mi GnuCash por si no termina de cuajar el modo de trabajo. Pero me he propuesto probar en paralelo este sistema y comparar los dos... las ventajas que le veo es que puedo desde cualquier dispositivo que permita editar un fichero de texto mantener el registro contable, sin necesidad de esperar a llegar a casa para poder arrancar el «programa contable». Los cambios, al ser un fichero de texto, se pueden mantener dentro de un control de versiones sin problemas y aprovechar las ventajas que proporciona. En fin, nunca se sabe lo friki que puede ser uno.