Correction : logique préçise
[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/Plan_comptable.hledger]]
88 * Export pour tableur : [[Comptabilité/Document/Plan_comptable/Plan_comptable.csv]]
89
90 ## Édition d’un `FICHIER.hledger`
91 Apprendre à utiliser un éditeur de texte
92 conçu pour manipuler du texte structuré,
93 s’avère — ici comme ailleurs —
94 un investissement hautement rentable
95 pour sculpter tout fichier texte :
96
97 * <http://www.vim.org/>
98 * <https://www.gnu.org/software/emacs/>
99 * <http://notepad-plus-plus.org/fr/>
100 * <https://wiki.gnome.org/Apps/Gedit>
101
102 ### ViM
103 Une coloration syntaxique et un complètement des comptes
104 sont possibles ainsi :
105
106 % mkdir -p ~/.vim/syntax
107 % wget -P ~/.vim/syntax/ <http://autogeree.net/~julm/src/vim/syntax/hledger.vim>
108 % cat >>~/.vimrc <<EOF
109 autocmd BufNewFile,BufRead *.hledger,*.ledger,*.journal setfiletype hledger
110 autocmd Filetype hledger set iskeyword+=.,38,39,40,41,44,45,58
111 EOF
112
113 Ouvrir le `Plan_comptable.hledger` dans un onglet
114 est utile pour renseigner le complètement automatique
115 des comptes :
116
117 % gvim -p FICHIER.hledger Plan_comptable.hledger
118
119
120 ## Mémo d’utilisation courante
121 ### Filtrer des écritures touchant certains comptes
122 % hledger print -f FICHIER.hledger '^6' '^7'
123
124 Quasiment toutes les commandes [[hledger]]
125 acceptent des [motifs](http://hledger.org/manual#query-arguments)
126 pour filtrer les écritures à prendre en compte ;
127 c’est une fonctionnalité plus générale
128 que le concept de « journal » ou « journal divisionnaire »
129 implémenté dans certains logiciels.
130
131 #### Journaux
132 Filtres associés :
133
134 * `BQ` (Banque) : `hledger print -f FICHIER.hledger '^5.Finance:1.Etablissement:2.Banque:'`
135 * `HA` (Achats) : `hledger print -f FICHIER.hledger '^(2.Immobilisation:1.Corporelle:|6.Charge:(0.Achat|1.Service|2.Autre_service):)'`
136 * `Vente` : `hledger print -f FICHIER.hledger '^7.Produit:0.Vente:'`
137 * `Caisse` : `hledger print -f FICHIER.hledger '^5.Finance:3.Caisse:'`
138 * `Paye` : `hledger print -f FICHIER.hledger '6.Charge:(3.Impôt:(1.|3.):|4.Personnel:)'`
139 * `ANV` : `hledger print -f FICHIER.hledger tag:ANV`
140 * `OD` : `hledger print -f FICHIER.hledger tag:OD`
141
142 **ATTENTION** : ces filtres sont exhaustifs
143 seulement dans le cas d’usage des [[cyclofficine]]s.
144
145 ### Afficher des comptes et de leur montant
146 % hledger balance -f FICHIER.hledger
147 % hledger balance -f FICHIER.hledger '^6' '^7' # NOTE: tous les comptes de classe 6 ou 7
148
149 ### Consulter dans une page Web
150 % hledger-web --server -f FICHIER.hledger # NOTE: Ctrl-C plus tard pour couper le serveur
151
152 Puis aller avec un navigateur web à l’adresse indiquée,
153 typiquement : <http://localhost:5000/>
154
155 ### Importer d’[[Oxygène]] dans [[hledger]]
156 % hledger-print-csv -f Plan_comptable.hledger >Plan_comptable.csv
157 % iconv -f latin1 -t utf8 <EXPORT.oxygen.csv |
158 perl ~/src/hledger/extra/hledger-of-oxygen-csv.pl \
159 Plan_comptable.csv \
160 >EXPORT.oxygen.hledger
161
162 Ressources :
163
164 * <http://autogeree.net/~julm/src/hledger/extra/hledger-print-csv.hs>
165 * <http://autogeree.net/~julm/src/hledger/extra/hledger-of-oxygen-csv.pl>
166
167 #### Corrections particulières
168 Substitutions de noms de compte à effectuer
169 sur `EXPORT.Oxygen.hledger` dans le cas
170 des années 2011-2013 des [[cyclofficine]]s :
171
172 % sed -i EXPORT.oxygen.hledger \
173 -e 's/^\t401[^ ]* /\t4.Tiers:0.Fournisseur:1.Fournisseur:1.Bien,Prestation /' \
174 -e 's/^\t512 /\t5.Finance:1.Etablissement:2.Banque:001.Courant /'