hledger: un programme simple pour comptabiliser de la monnaie, du temps, des votes ou tout autre commodité, utilisant un simple fichier de texte brut et les puissants principes de la comptabilité en partie-double.

Resources

  • http://hledger.org/

Installation

Sur Debian Wheezy

% echo 'PATH="$HOME/.cabal/bin:$PATH"' >>~/.profile
% exit # NOTE: recharge ~/.profile
% sudo apt-get install ghc cabal-install
% cabal update
% cabal install cabal # NOTE: met à jour cabal
% sudo apt-get install libncurses5-dev libtinfo-dev zlib1g-dev
% cabal install happy # NOTE: anticipe une dépendance exécutable
% cabal install hledger
% cabal install alex # NOTE: anticipe une dépendance exécutable
% cabal install warp-2.0.3.4 hledger-web # NOTE: aide cabal à sélectionner un warp qui fonctionne

Mise-à-jour

% cabal install --reinstall hledger hledger-web

Version de développement

% git clone http://github.com/simonmichael/hledger.git ~/src/hledger
% cd ~/src/hledger
% cabal install --reinstall --force-reinstalls \
                --disable-library-profiling \
                --disable-executable-profiling \
                ./hledger-lib ./hledger ./hledger-web

Installer un script hledger si besoin

% echo 'PATH="$HOME/src/hledger/extra:$PATH"' >>~/.profile
% exit # NOTE: recharge ~/.profile
% ghc ~/src/hledger/extra/hledger-SCRIPT.hs

NOTE : notamment hledger-equity et hledger-print-csv.

Utilisation

Syntaxe d’un FICHIER.hledger

Un FICHIER.hledger est un fichier de texte brut respectant une syntaxe préçise qui forme une succession d’écritures comptables, ordonnées librement.

NOTE: tout ce qui suit le caractère « ; » est un commentaire libre.

Une écriture a grosso-modo pour exemple général :

2014/01/01 Libellé de l’écriture ; UN_TAG:, UN_autre_TAG:, encore_UN_tag:Avec_Valeur
  Nom:de:Compte                     1,000.00€
  Et:Encore:un:Autre:Nom:de:Compte    100.00€
  Autre:Nom:de:Compte                -500.00€
  Encore:un:Nom:de:Compte            -600.00€

ATTENTION : la date doit commencer en début de ligne, chaque nom de compte doit être précédé d’un blanc sur une ligne propre, et chaque montant doit suivre un nom de compte et au moins deux espaces, il n’est pas nécessaire que les montants soient alignés.

Un compte peut prendre n’importe quel nom et le caractère « : » symbolise le séparateur hiérarchique de l’arborescence des comptes.

Une écriture peut donc ventiler sur plusieurs comptes, mais doit toujours être balancée à 0, il est même donc possible d’ommettre un des montants, qui sera inféré comme l’opposé de la somme des autres.

Les tags peuvent être utiles pour filtrer certaines écritures comme les Opérations Diverses (tag OD:) ou les À nouveaux (tag ANV:), ou stocker certaines informations de manière un minimun structurée.

Plan comptable

Le plan comptable d’une cyclofficine :

Édition d’un FICHIER.hledger

Apprendre à utiliser un éditeur de texte conçu pour manipuler du texte structuré, s’avère — ici comme ailleurs — un investissement hautement rentable pour sculpter tout fichier texte :

ViM

Une coloration syntaxique et un complètement des comptes sont possibles ainsi :

% mkdir -p ~/.vim/syntax
% wget -P ~/.vim/syntax/ <http://autogeree.net/~julm/src/vim/syntax/hledger.vim>
% cat >>~/.vimrc <<EOF
autocmd BufNewFile,BufRead *.hledger,*.ledger,*.journal setfiletype hledger
autocmd Filetype hledger set iskeyword+=.,38,39,40,41,44,45,58
EOF

Ouvrir le Plan_comptable.hledger dans un onglet est utile pour renseigner le complètement automatique des comptes :

% gvim -p FICHIER.hledger Plan_comptable.hledger

Mémo d’utilisation courante

Filtrer des écritures touchant certains comptes

% hledger print -f FICHIER.hledger '^6' '^7'

Quasiment toutes les commandes hledger acceptent des motifs pour filtrer les écritures à prendre en compte ; c’est une fonctionnalité plus générale que le concept de « journal » ou « journal divisionnaire » implémenté dans certains logiciels.

Journaux

Filtres associés :

  • BQ (Banque) : hledger print -f FICHIER.hledger '^5.Finance:1.Etablissement:2.Banque:'
  • HA (Achats) : hledger print -f FICHIER.hledger '^(2.Immobilisation:1.Corporelle:|6.Charge:(0.Achat|1.Service|2.Autre_service):)'
  • Vente : hledger print -f FICHIER.hledger '^7.Produit:0.Vente:'
  • Caisse : hledger print -f FICHIER.hledger '^5.Finance:3.Caisse:'
  • Paye : hledger print -f FICHIER.hledger '6.Charge:(3.Impôt:(1.|3.):|4.Personnel:)'
  • ANV : hledger print -f FICHIER.hledger tag:ANV
  • OD : hledger print -f FICHIER.hledger tag:OD

ATTENTION : ces filtres sont exhaustifs seulement dans le cas d’usage des cyclofficines.

Afficher des comptes et de leur montant

% hledger balance -f FICHIER.hledger
% hledger balance -f FICHIER.hledger '^6' '^7' # NOTE: tous les comptes de classe 6 ou 7

Consulter dans une page Web

% hledger-web --server -f FICHIER.hledger # NOTE: Ctrl-C plus tard pour couper le serveur

Puis aller avec un navigateur web à l’adresse indiquée, typiquement : http://localhost:5000/

Importer d’Oxygène dans hledger

% hledger-print-csv -f Plan_comptable.hledger >Plan_comptable.csv
% iconv -f latin1 -t utf8 <EXPORT.oxygen.csv |
  perl ~/src/hledger/extra/hledger-of-oxygen-csv.pl \
    Plan_comptable.csv \
    >EXPORT.oxygen.hledger

Ressources :

Corrections particulières

Substitutions de noms de compte à effectuer sur EXPORT.Oxygen.hledger dans le cas des années 2011-2013 des cyclofficines :

% sed -i EXPORT.oxygen.hledger \
      -e 's/^\t401[^ ]*  /\t4.Tiers:0.Fournisseur:1.Fournisseur:1.Bien,Prestation  /' \
      -e 's/^\t512  /\t5.Finance:1.Etablissement:2.Banque:001.Courant  /'