Hasta ahora hemos visto cómo introducir los datos en nuestro libro diario, ahora toca sacar de él información. Como antes comenzamos por las cuentas, vamos a hacer lo mismo. Hemos ido haciendo apuntes y anotando a cuentas que en realidad no hemos definido en la cabecera. ¿Cómo sabemos cuántas hay, cuántas he necesitado para la contabilidad hasta ahora? Muy fácil, se lo preguntaré a ledger-cli desde la linea de comandos:

ledger -f prueba-ledger.ledger accounts

Llamo al ejecutable ledger diciéndole que utilice el fichero de entrada -f prueba-ledger.ledger y que me liste las cuentas accounts .

El resultado será:

Activo:Bancos:El saqueador y cia Activo:Bancos:Ladrones y cia Activo:Inmuebles:Casa Activo:Metálico Activo:Plan de Pensiones Gastos:Alimentación Gastos:Alimentación:Mencabrona Gastos:Hipoteca amortizado Gastos:Intereses Hipoteca Gastos:Lotería Gastos:Otros Gastos:Metálico Pasivo:Hipoteca Patrimonio:Balance Apertura

Podemos utilizar este listado para generar nuestra lista de cuentas (si no las hemos ido definiendo cuando comenzamos la contabilidad). Como ya he dicho, una opción para encontrar errores de tecleo es utilizar la opción --strict cuando hagamos consultas de nuestras cuentas, eso hará que sólo se tengan en cuenta las anotaciones a cuentas definidas en la cabecera y que lance un error en las demás transacciones. Si no fuera un error, que hubiéramos decidido anotar en una nueva cuenta y se nos ha olvidado definirla, es el recordatorio perfecto para hacerlo.

El sistema de informes de ledger-cli es muy completo y extenso. Puede hacer también cálculos financieros, estudios de gastos, por meses, anuales, y un largo etcétera que se nos iría del objetivo de este minitutorial. Si alguien tiene curiosidad o necesidad de este tipo de cosas, la documentación de ledger-cli es muy completa y exhaustiva con ejemplos que ayudan a clarificar todas las cosas que puede hacer.

En mi caso tengo una serie de informes que me utilizo habitualmente, así que me he creado un archivo informes.el que puedo cargar cuando lo necesito. El contenido es el siguiente:

;;; Listados para ledger-mode (require 'ledger-mode) (setq ledger-reports (quote ((#("asiento apertura" 0 1 (idx 0)) "%(binary) -f %(ledger-file) equity --real --strict Activo Pasivo") (#("balance" 0 1 (idx 1)) "%(binary) -f %(ledger-file) bal --strict --real -y %Y/%m/%d") (#("registro" 0 1 (idx 2)) "%(binary) -f %(ledger-file) reg --strict --real -y %Y/%m/%d") (#("cuenta" 0 1 (idx 3)) "%(binary) -f %(ledger-file) reg %(account) --real -y %Y/%m/%d") (#("por meses" 0 1 (idx 4)) "%(binary) -f %(ledger-file) reg %(account) -M --real -y %Y/%m/%d") (#("resumen" 0 1 (idx 5)) "%(binary) -f %(ledger-file) bal Gastos Ingresos --collapse-if-zero -y %Y/%m/%d") (#("cierre" 0 1 (idx 6)) "%(binary) -f %(ledger-file) bal --real --strict --format \" %-40(account) %10(market(display_total) * -1)

%/\" --no-total --flat") (#("comparado" 0 1 (idx 7)) "%(binary) -f %(ledger-file) --real --strict cleared") (#("estudio de gastos" 0 1 (idx 8)) "%(binary) bal -f %(ledger-file) Gastos --current --format \"%-35((depth_spacer)+(partial_account)) %10(percent(market(display_total), market(parent.total))) %16(market(display_total))

%/\""))))

Lo tengo en un fichero diferente y en código elisp para facilitar su carga cuando es necesario. Se puede tener en el fichero init.el , pero los informes suelen ser algo puntual, no necesito tener ese código cargado cada vez que inicio emacs, ni siquiera cuando estoy en ledger-mode , porque la mayor parte de las veces sólo se introducen datos. Necesitaré ver los informes, sólo cuando debo compara cuentas con las anotadas en el banco, por ejemplo. O cuando necesito saber en qué se ha gastado el dinero. Tan sólo hay que cargar el código con M-x load-file .

No voy a explicar todos los aspectos de los informes, porque cada uno tiene sus manías y le gusta ver la información de una forma distinta y hay tantas que son motivo de un capítulo completo en la documentación de ledger-cli . Sólo destacaré algunos aspectos muy concretos y útiles. Por ejemplo, una opción que se repite bastante en los informes es el formato de fecha -y %Y/%m/%d para ver las fechas en el formato ISO. Otra opción que se repite bastante es --real que le dice al sistema que tenga en cuenta sólo las transacciones reales y deje a un lado las virtuales, como vimos antes en la entrada que marcábamos como (Gastos:Hipoteca amortizado) . La que más se repite es, sin duda, la opción --strict para que sólo haga listado con cuentas definidas.

Para comprobarlo vamos a hacer un balance habiendo introducido un error en una cuenta a propósito como sigue a continuación:

2018/10/31 Compra de chuches Gastos:Otros Gastos:Metálco 2,30€ Activo:Metálico

Si ahora lanzamos una consulta de balance que tenemos en ese fichero, el resultado será el siguiente:

Report: balance Command: ledger -f /home/notxor/Sync/prueba-ledger.ledger bal --strict --real -y %Y/%m/%d =================================================================================================================== Warning: "/home/notxor/Sync/prueba-ledger.ledger", line 61: Unknown account 'Gastos:Otros Gastos:Metálco' 1.890,05€ Activo -364,29€ Bancos -285,34€ El saqueador y cia -78,95€ Ladrones y cia 2.160,04€ Inmuebles:Casa 11,65€ Metálico 82,65€ Plan de Pensiones 98,34€ Gastos 86,76€ Alimentación 85,49€ Mencabrona 24,03€ Intereses Hipoteca -16,00€ Lotería 3,55€ Otros Gastos 2,30€ Metálco 1,25€ Metálico -1.136,76€ Pasivo:Hipoteca -851,63€ Patrimonio:Balance Apertura -------------------- 0

Como vemos, lo hace, sin embargo nos aparece una línea de Warning que nos dice el fichero y la línea donde ha encontrado una cuenta desconocida.

Uno de los informes que más se utiliza es el que muestra un listado de una cuenta en concreto, por ejemplo, para cuadrar el valor que nos dice el banco que tenemos en la cuenta, con el valor que tenemos anotado, que como ya dije antes, no tiene por qué coincidir. Vamos a hacer un ejemplo:

Lanzamos un informe con C-c C-o C-r seleccionamos cuenta . Decimos qué cuenta queremos, en nuestro caso: Activo:Bancos:Ladrones y cia . Además si estamos en el buffer de ledger situados en una línea con una cuenta determinada, ledger-mode nos sugerirá esa cuenta como primera opción. El resultado nos aparece en un buffer de informe:

Report: cuenta Command: ledger -f /home/notxor/Sync/prueba-ledger.ledger reg Activo\:Bancos\:Ladrones\ y\ cia --real -y %Y/%m/%d ================================================================================================================== 2018/10/30 Balance de apertura Activo:Bancos:Ladrones y cia 6,54€ 6,54€ 2018/10/31 Compra semanal Activo:Bancos:Ladrones y cia -85,49€ -78,95€

Como vemos, sólo hay dos registros y sabemos que tenemos un descubierto de -78,95€ aunque el banco nos dice que tenemos 6,54€ en ella. ¿Dónde está el descuadre? Si recordamos, habíamos anotado la Compra semanal como pendiente de anotar, que es lo que ha sucedido ahora. Para comprobar que es así:

Situados en el buffer *Ledger Report* y pulsamos e . Modificamos el comando de informe añadiendo la opción -U y <RET> . Eso ocultará las transacciones pendientes de anotar.