Correction : lien cassé.
[cyclowiki.git] / Logiciel / hledger.mdwn
1 [[!sidebar var=TOC content=""" **Sommaire** [[!toc levels=3]]"""]]
2
3 **`hledger`**: un programme simple pour comptabiliser
4 de la monnaie, du temps, des votes ou tout autre commodité,
5 utilisant un simple fichier de texte brut et les puissants
6 principes de la [[comptabilité]] en partie-double.
7
8 # Resources
9 * `http://hledger.org/`
10
11 # Installation
12 ## Sur Debian Wheezy
13 % echo 'PATH="$HOME/.cabal/bin:$PATH"' >>~/.profile
14 % exit # NOTE: recharge ~/.profile
15 % sudo apt-get install ghc cabal-install
16 % cabal update
17 % cabal install cabal # NOTE: met à jour cabal
18 % sudo apt-get install libncurses5-dev libtinfo-dev zlib1g-dev
19 % cabal install happy # NOTE: anticipe une dépendance exécutable
20 % cabal install hledger
21 % cabal install alex # NOTE: anticipe une dépendance exécutable
22 % cabal install warp-2.0.3.4 hledger-web # NOTE: aide cabal à sélectionner un warp qui fonctionne
23
24 ## Mise-à-jour
25 % cabal install --reinstall hledger hledger-web
26
27 ## Version de développement
28 % git clone http://github.com/simonmichael/hledger.git ~/src/hledger
29 % cabal install --reinstall --force-reinstalls \
30 --disable-library-profiling \
31 --disable-executable-profiling \
32 ./hledger-lib ./hledger ./hledger-web
33
34 ## Installer un script [[hledger]] si besoin
35 % echo 'PATH="$HOME/src/hledger/extra:$PATH"' >>~/.profile
36 % exit # NOTE: recharge ~/.profile
37 % ghc ~/src/hledger/extra/hledger-SCRIPT.hs
38
39 **NOTE** : notamment `hledger-equity` et `hledger-print-csv`.
40
41 * <http://autogeree.net/~julm/src/hledger/extra/hledger-print-csv.hs>
42 * <http://autogeree.net/~julm/src/hledger/extra/hledger-equity.hs>
43 * <http://autogeree.net/~julm/src/hledger/extra/hledger-of-oxygen-csv.pl>
44
45 # Utilisation
46 * Manuel : <http://hledger.org/manual/>
47
48 ## Syntaxe d’un `FICHIER.hledger`
49
50 Un `FICHIER.hledger` est un fichier de texte brut respectant une syntaxe préçise
51 qui forme une succession d’écritures comptables, ordonnées librement.
52
53 NOTE: tout ce qui suit le caractère « `;` » est un commentaire libre.
54
55 Une écriture a grosso-modo pour exemple général :
56
57 2014/01/01 Libellé de l’écriture ; UN_TAG:, UN_AUTRE_TAG:, ENCORE_UN_TAG:Avec_Valeur
58 Nom:de:Compte 1,000.00€
59 Et:Encore:un:Autre:Nom:de:Compte 100.00€
60 Autre:Nom:de:Compte -500.00€
61 Encore:un:Nom:de:Compte -600.00€
62
63
64 **ATTENTION** : la date doit commencer en début de ligne,
65 chaque nom de compte doit être précédé d’un blanc sur une ligne propre,
66 et chaque montant doit suivre un nom de compte et au moins deux espaces,
67 il n’est pas nécessaire que les montants soient aligner.
68
69 Un compte peut prendre n’importe quel nom et le caractère « `:` »
70 symbolise le séparateur hiérarchique de l’arborescence des comptes.
71
72 Une écriture peut donc ventiler sur plusieurs comptes,
73 mais doit toujours être balancée à 0,
74 il est même donc possible d’ommettre un des montants,
75 qui sera inféré comme l’opposé de la somme des autres.
76
77 Les [tags](http://hledger.org/manual#tags)
78 peuvent être utiles pour filtrer certaines écritures
79 comme les **Opérations Diverses** (tag `OD:`) ou les **À nouveaux** (tag `ANV:`),
80 ou stocker certaines informations de manière un minimun structurée.
81
82 ## Plan comptable
83
84 Le plan comptable d’une [[cyclofficine]] :
85
86 * Documentation : [[Comptabilité/Document/Plan_comptable]]
87 * Référence [[hledger]] : [[Comptabilité/Document/Plan_comptable/Cyclofficine.Plan_comptable.hledger]]
88
89 ## Édition d’un `FICHIER.hledger`
90 Apprendre à utiliser un éditeur de texte
91 conçu pour manipuler du texte structuré,
92 s’avère — ici comme ailleurs —
93 un investissement hautement rentable
94 pour sculpter tout fichier texte :
95
96 * <http://www.vim.org/>
97 * <https://www.gnu.org/software/emacs/>
98 * <http://notepad-plus-plus.org/fr/>
99 * <https://wiki.gnome.org/Apps/Gedit>
100
101 ### ViM
102 Une coloration syntaxique et un complètement des comptes
103 sont possibles ainsi :
104
105 % mkdir -p ~/.vim/syntax
106 % wget -P ~/.vim/syntax/ <http://autogeree.net/~julm/src/vim/syntax/hledger.vim>
107 % cat >>~/.vimrc <<EOF
108 autocmd BufNewFile,BufRead *.hledger,*.ledger,*.journal setfiletype hledger
109 autocmd Filetype hledger set iskeyword+=.,38,39,40,41,44,45,58
110 EOF
111
112 Ouvrir le `Plan_comptable.hledger` dans un onglet
113 est utile pour renseigner le complètement automatique
114 des comptes :
115
116 % gvim -p FICHIER.hledger Plan_comptable.hledger
117
118
119 ## Mémo d’utilisation courante
120 ### Filtrer des écritures touchant certains comptes
121 % hledger print -f FICHIER.hledger '^6' '^7'
122
123 Quasiment toutes les commandes [[hledger]]
124 acceptent des [motifs](http://hledger.org/manual#query-arguments)
125 pour filtrer les écritures à prendre en compte ;
126 c’est une fonctionnalité plus générale
127 que le concept de « journal » ou « journal divisionnaire »
128 implémenté dans certains logiciels.
129
130 #### Journaux
131 Filtres associés :
132
133 * `BQ` (Banque) : `hledger print -f FICHIER.hledger '^5.Finance:1.Etablissement:2.Banque:'`
134 * `HA` (Achats) : `hledger print -f FICHIER.hledger '^(2.Immobilisation:1.Corporelle:|6.Charge:(0.Achat|1.Service|2.Autre_service):)'`
135 * `Vente` : `hledger print -f FICHIER.hledger '^7.Produit:0.Vente:'`
136 * `Caisse` : `hledger print -f FICHIER.hledger '^5.Finance:3.Caisse:'`
137 * `Paye` : `hledger print -f FICHIER.hledger '6.Charge:(3.Impôt:(1.|3.):|4.Personnel:)'`
138 * `ANV` : `hledger print -f FICHIER.hledger tag:ANV`
139 * `OD` : `hledger print -f FICHIER.hledger tag:OD`
140
141 **ATTENTION** : ces filtres sont exhaustifs
142 seulement dans le cas d’usage des [[cyclofficine]]s.
143
144 ### Afficher des comptes et de leur montant
145 % hledger balance -f FICHIER.hledger
146 % hledger balance -f FICHIER.hledger '^6' '^7' # NOTE: tous les comptes de classe 6 ou 7
147
148 ### Consulter dans une page Web
149 % hledger-web --server -f FICHIER.hledger # NOTE: Ctrl-C plus tard pour couper le serveur
150
151 Puis aller avec un navigateur web à l’adresse indiquée,
152 typiquement : <http://localhost:5000/>
153
154 ### Importer d’[[Oxygène]] dans [[hledger]]
155 % hledger-print-csv -f Plan_comptable.hledger >Plan_comptable.csv
156 % iconv -f latin1 -t utf8 <EXPORT.oxygen.csv |
157 perl ~/src/hledger/extra/hledger-of-oxygen-csv.pl \
158 Plan_comptable.csv \
159 >EXPORT.oxygen.hledger
160
161 Ressources :
162
163 * <http://autogeree.net/~julm/src/hledger/extra/hledger-print-csv.hs>
164 * <http://autogeree.net/~julm/src/hledger/extra/hledger-of-oxygen-csv.pl>
165
166 #### Corrections particulières
167 Substitutions de noms de compte à effectuer
168 sur `EXPORT.Oxygen.hledger` dans le cas
169 des années 2011-2013 des [[cyclofficine]]s :
170
171 % sed -i EXPORT.oxygen.hledger \
172 -e 's/^\t401[^ ]* /\t4.Tiers:0.Fournisseur:1.Fournisseur:1.Bien,Prestation /' \
173 -e 's/^\t512 /\t5.Finance:1.Etablissement:2.Banque:001.Courant /'