[horizontal]
Transparent:: Visibilité de *toutes* les informations.
Pérenne:: Compréhensible sans logiciel particulier pour l’exploiter.
-Modifiable:: Pas de verrou de validation (plus ou moins illusoire).
+Modifiable:: Pas de verrou (plus ou moins illusoire) de validation.
Accès:: Pas de changement d’interface non-consenti.
Versionnable:: Suivi des modifications, fusion des contributions, et sauvegarde simples.
Écrit:: Langage pour s’exprimer clairement (par ex. dans un courriel ou une présentation).
[horizontal]
Modifiable::
-Mais, comme c'est un fichier, un verrou-validant +
+Mais, comme c'est un fichier, un véritable verrou validant +
peut être mis par une **signature cryptographique**.
+
[source,sh]
+
[source,hledger]
----
-2102/03/21 Chèque ; Erreur de date
+2102/03/21 Chèque ; Date suspecte
5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser -145,00
5.Finance:1.Etablissement:2.Banque:001.Courant 145,00
----
Pas tout en un::
Fait de la comptabilité, **et juste** de la comptabilité ;
pas un logiciel intégré type ERP (Enterprise Resource Planning)
-du genre type https://www.odoo.com/[Odoo] (ancien OpenERP) :
+du genre https://www.odoo.com/[Odoo] (anciennement « OpenERP ») :
Comptabilité + Point de vente + Facturation + Paye + Gestion de stock + Adhésion + Calendrier + Wiki + ...
En ligne de commande::
----
.Conventions usuelles
-* Classement des écritures par date
-* Classement des flux par signe, puis compte
+* Classement des écritures par date.
+* Classement des flux par signe, puis compte.
=== Définition formelle
% hledger accounts --flat -f data/exemple-syntaxe.ledger
sys::[hledger accounts --flat -f data/exemple-syntaxe.ledger]
----
+
+[source,sh]
+----
+% hledger accounts --tree '^A' -f data/exemple-syntaxe.ledger
+sys::[hledger accounts --tree '^A' -f data/exemple-syntaxe.ledger]
+----
|
[float]
**comptes**::
latexmath:[$=\{\ (\textbf{compte}\>f)\ \|\ f ← (\textbf{flux}\>e)\ \|\ e ← \mathbb E\ \}$]
**compte_parent**::
latexmath:[$:\>c : \textcolor{#D2691E}{\textbf{compte}} → \textcolor{#D2691E}{\textbf{compte}}\>?$] +
+ = « __plus long compte strictement préfixe d’un compte__ » +
latexmath:[$=\>c_{\lbrack0,\cdots,\|c\|-2\rbrack}\ \mbox{si}\ \|c\| \ge 2$]
**hiérachie_de_compte**::
latexmath:[$:\>\mathbb c : \textcolor{#D2691E}{\textbf{compte}} → \lbrack\textcolor{#D2691E}{\textbf{compte}}\rbrack$] +
+ = « __liste des comptes préfixes d’un compte__ » +
// = « __ensemble des comptes vers lesquels fluent les écritures et leur comptes parents__ » +
latexmath:[$=\>\lbrack{\ c\ :\ \lbrack{\ c\ \|\ c ← (\mathbf{compte\mbox{_}parent}\>{c})}\ \rbrack}\ \rbrack$]
|==================================
-=== Écrire des écritures (`add`)
-
-[source,sh]
-.Sélection d’un modèle selon le libellé
-----
-% hledger add -f /tmp/test.ledger
-Adding transactions to journal file /tmp/test.ledger
-Any command line arguments will be used as defaults.
-Use tab key to complete, readline keys to edit, enter to accept defaults.
-An optional (CODE) may follow transaction dates.
-An optional ; COMMENT may follow descriptions or amounts.
-If you make a mistake, enter < at any prompt to restart the transaction.
-To end a transaction, enter . when prompted.
-To quit, enter . at a date prompt or press control-d or control-c.
-Date [2014/07/30]: 2014/01/01
-Description: Libellé de l’écriture ; UN_TAG:, Autre_tag:Avec_Valeur
-Account 1: A:AA
-Amount 1: -42
-Account 2: B:BB:BBB
-Amount 2 [42.0]: 40
-Account 3: B:A
-Amount 3 [2.0]:
-Account 4 (or . or enter to finish this transaction): .
-2014/01/01 Libellé de l’écriture ; UN_TAG:, Autre_tag:Avec_Valeur
- A:AA -42
- B:BB:BBB 40
- B:A 2.0
+=== Filtrer des écritures (`print`)
-Save this transaction to the journal ? [y]: y
-Saved.
-Starting the next transaction (. or ctrl-D/ctrl-C to quit)
-Date [2014/01/01]:
-Description: Libellé d’une autre écriture
-Using this similar transaction for defaults:
-2014/01/01 Libellé de l’écriture ; UN_TAG:, Autre_tag:Avec_Valeur
- A:AA -42
- B:BB:BBB 40
- B:A 2.0
+++hledger++ permet de filtrer les écritures selon leurs données
+(date, libellé, comptes, montants, tags, ...) ;
+des expressions rationnelles peuvent être utilisées à cette fin.
-Account 1 [A:AA]:
-Amount 1 [-42.0]: 100
-Account 2 [B:BB:BBB]: B
-Amount 2 [-100.0]:
-Account 3 (or . to finish this transaction) [B:A]: .
-2014/01/01 Libellé d’une autre écriture
- A:AA 100
- B -100.0
+NOTE: Cf. manuel : http://hledger.org/manual#query-arguments[]
-Save this transaction to the journal ? [y]: y
-Saved.
-Starting the next transaction (. or ctrl-D/ctrl-C to quit)
-Date [2014/01/01]: .
+[source,hledger]
----
-
-[source,sh]
-.Complètement automatique des comptes
+% hledger print 'A' -f data/exemple-syntaxe.ledger
+sys::[hledger print 'A' -f data/exemple-syntaxe.ledger]
----
-% hledger add -f data/exemple-plan-comptable.ledger
-Adding transactions to journal file /home/julm/admin/cyber.coop/src/tool/hledger/doc/data/exemple-plan-comptable.ledger
-Any command line arguments will be used as defaults.
-Use tab key to complete, readline keys to edit, enter to accept defaults.
-An optional (CODE) may follow transaction dates.
-An optional ; COMMENT may follow descriptions or amounts.
-If you make a mistake, enter < at any prompt to restart the transaction.
-To end a transaction, enter . when prompted.
-To quit, enter . at a date prompt or press control-d or control-c.
-Date [2014/07/30]: yesterday
-Description: Trololo
-Account 1: 1.Capital:
-1.Capital:0.Fonds 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement
-1.Capital:0.Fonds:2.SDR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:1.État
-1.Capital:0.Fonds:2.SDR:4.Apport 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:2.Région
-1.Capital:0.Fonds:2.SDR:6.Sub_invest_BR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:3.Département
-1.Capital:0.Fonds:3.ADR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:4.Commune
-1.Capital:0.Fonds:3.ADR:4.Apport 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:5.Collectivité_publique
-1.Capital:0.Fonds:3.ADR:6.Sub_invest_BR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:6.Entreprise_publique
-1.Capital:0.Fonds:6.Réserve 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:7.Organisme_privé
-1.Capital:0.Fonds:6.Réserve:3.Statutaire 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:8.Autre
-1.Capital:0.Fonds:6.Réserve:8.Autre 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:2.Autre
-1.Capital:1.Report 1.Capital:5.Provision_risque&charge
-1.Capital:1.Report:0.Bénéfice 1.Capital:5.Provision_risque&charge:1.Risque
-1.Capital:1.Report:5.Financeur 1.Capital:5.Provision_risque&charge:5.Impôt
-1.Capital:1.Report:9.Déficit 1.Capital:5.Provision_risque&charge:8.Autre
-1.Capital:2.Résultat 1.Capital:5.Provision_risque&charge:8.Autre:2.Congés_à_payer
-1.Capital:2.Résultat:0.Bénéfice 1.Capital:6.Emprunt,Dette
-1.Capital:2.Résultat:9.Déficit 1.Capital:6.Emprunt,Dette:4.Etablissement_crédit
-1.Capital:3.Sub_invest_BNR 1.Capital:6.Emprunt,Dette:5.Dépôt,Caution
-1.Capital:3.Sub_invest_BNR:1.Equipement 1.Capital:6.Emprunt,Dette:8.Autre
-1.Capital:3.Sub_invest_BNR:1.Equipement:1.État 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt
-1.Capital:3.Sub_invest_BNR:1.Equipement:2.Région 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:1.Bénévole
-1.Capital:3.Sub_invest_BNR:1.Equipement:3.Département 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:2.Salarié-e
-1.Capital:3.Sub_invest_BNR:1.Equipement:4.Commune 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:3.Cyclofficine
-1.Capital:3.Sub_invest_BNR:1.Equipement:5.Collectivité_publique 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:4.Autre
-1.Capital:3.Sub_invest_BNR:1.Equipement:6.Entreprise_publique 1.Capital:6.Emprunt,Dette:8.Autre:7.Dette
-1.Capital:3.Sub_invest_BNR:1.Equipement:7.Organisme_privé 1.Capital:9.Fonds_dédiés
-1.Capital:3.Sub_invest_BNR:1.Equipement:8.Autre 1.Capital:9.Fonds_dédiés:4.Sub_exploit
-1.Capital:3.Sub_invest_BNR:8.Autre 1.Capital:9.Fonds_dédiés:5.Don_affecté
-1.Capital:3.Sub_invest_BNR:9.Compte_résultat
-Account 1: 1.Capital:6.Emprunt,Dette
-1.Capital:6.Emprunt,Dette 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:4.Autre
-1.Capital:6.Emprunt,Dette:4.Etablissement_crédit 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:1.Bénévole 1.Capital:6.Emprunt,Dette:8.Autre:7.Dette
-1.Capital:6.Emprunt,Dette:5.Dépôt,Caution 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:2.Salarié-e
-1.Capital:6.Emprunt,Dette:8.Autre 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:3.Cyclofficine
-Account 1: 1.Capital:6.Emprunt,Dette:4.Etablissement_crédit
-Amount 1: -666 ; Don’t panic
-Account 2: 5.Finance:
-5.Finance:1.Etablissement 5.Finance:1.Etablissement:2.Banque:002.Livret 5.Finance:8.Virement
-5.Finance:1.Etablissement:1.Valeur 5.Finance:3.Caisse 5.Finance:8.Virement:0.Interne
-5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser 5.Finance:3.Caisse:1.Siège 5.Finance:8.Virement:1.Fonds
-5.Finance:1.Etablissement:2.Banque:001.Courant 5.Finance:3.Caisse:2.Atelier
-Account 2: 5.Finance:1.Etablissement:2.Banque:001.Courant
-Amount 2 [666.0]:
-Account 3 (or . or enter to finish this transaction): .
-2014/07/29 Trololo
- 1.Capital:6.Emprunt,Dette:4.Etablissement_crédit -666 ; Don’t panic
- 5.Finance:1.Etablissement:2.Banque:001.Courant 666.0
-Save this transaction to the journal ? [y]: y
-Saved.
-Starting the next transaction (. or ctrl-D/ctrl-C to quit)
-Date [2014/07/29]: .
+[source,hledger]
+----
+% hledger print '^A' -f data/exemple-syntaxe.ledger
+sys::[hledger print '^A' -f data/exemple-syntaxe.ledger]
----
-=== Filtrer des écritures (`print`)
-
-++hledger++ permet de filtrer les écritures selon leurs données
-(date, libellé, comptes, montants, tags, ...) ;
-des expressions rationnelles peuvent être utilisées à cette fin.
-
-NOTE: Cf. manuel : http://hledger.org/manual#query-arguments[]
+[source,hledger]
+----
+% hledger print '^B$' -f data/exemple-syntaxe.ledger
+sys::[hledger print '^B$' -f data/exemple-syntaxe.ledger]
+----
[horizontal]
.Afficher des « journaux auxiliaires » (exemples approximatifs)
----
hledger print -f $fichier.ledger '6.Charge:(3.Impôt:(1.|3.):|4.Personnel:)'
----
-**À NouVeau**::
+**À nouveau**::
+
[source,sh]
----
.Balance sur des comptes filtrés par expression rationnelle
----
% hledger balance 'A' -f data/exemple-syntaxe.ledger
-sys::[hledger balance 'A' -f data/exemple-syntaxe.ledger | sed -e 's/^[-=]/‑/']
+sys::[hledger balance 'A' -f data/exemple-syntaxe.ledger | sed -e 's/^-/‑/']
----
[source,sh]
.Balance sur un compte racine
----
% hledger balance '^A' -f data/exemple-syntaxe.ledger
-sys::[hledger balance '^A' -f data/exemple-syntaxe.ledger | sed -e 's/^[-=]/‑/']
+sys::[hledger balance '^A' -f data/exemple-syntaxe.ledger | sed -e 's/^-/‑/']
----
[source,sh]
.Sans accumulation des soldes d’une période à l’autre
----
% hledger balance --daily -f data/exemple-syntaxe.ledger
-sys::[hledger balance --daily -f data/exemple-syntaxe.ledger | sed -e 's/^[-=]/‑/;s/[|]/\\|/g']
+sys::[hledger balance --daily -f data/exemple-syntaxe.ledger | sed -e 's/^-/‑/;s/[|]/\\|/g']
----
[source,sh]
.Avec accumulation des soldes d’une période à l’autre
----
% hledger balance --daily --historical -f data/exemple-syntaxe.ledger
-sys::[hledger balance --daily --historical -f data/exemple-syntaxe.ledger | sed -e 's/^[-=]/‑/;s/[|]/\\|/g']
+sys::[hledger balance --daily --historical -f data/exemple-syntaxe.ledger | sed -e 's/^-/‑/;s/[|]/\\|/g']
----
//[source,sh]
|==================================
-=== Suivre un compte (`register`)
-
-[source,sh]
-.Suivi de la somme des crédits du compte `5112`
-----
-% hledger register -f Paris.2011.hledger 'amt:<0' '^5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser'
-2011/05/23 Remise chq 0994029 ..Chèque_à_encaisser -100,00€ -100,00€
-2011/09/29 Remise chq 1101801 ..Chèque_à_encaisser -20,00€ -120,00€
-2011/11/18 Remise chq 1101802 ..Chèque_à_encaisser -2000,00€ -2120,00€
-----
-
-[source,sh]
-.Suivi de la somme des débits du compte `5112`
+Balance nulle de toute écriture::
+++hledger++ n’accepte aucune écriture qui ne respecte
+pas cette contrainte de la tâche comptable : +
++
+« __Pour toute écriture, tout ce qui est [black]_débité_ (+++++) dans ses comptes +
+est forcément [black]_crédité_ (++-++) dans ses autres comptes, +
+et réciproquement.__ »
++
+* Formellement : latexmath:[$\forall e : \textcolor{#D2691E}{\textbf{\acute{e}criture}},
+ \ \textbf{balance}\>(\textbf{flux}\>{e}) = 0$]
++
+[source,hledger]
----
-% hledger register -f Paris.2011.hledger 'amt:>0' '^5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser'
-2011/05/15 Prêt ..Chèque_à_encaisser 100,00€ 100,00€
-2011/09/20 Cotisations ..Chèque_à_encaisser 20,00€ 120,00€
-2011/11/10 Prêt ..Chèque_à_encaisser 2000,00€ 2120,00€
+2014/04/12
+ Compte:Crédité -1234,56
+ Compte:Débité ; 1234,56 (montant inféré)
----
=== Calculer les écritures de clôture et ouverture (`equity`)
-++hledger-equity++ calcule une balance de comptes
-et en fait deux écritures, respectivement :
+++hledger-equity++ est du sucre syntaxique autour de ++hledger balance++,
+il calcule une balance de soldes de comptes
+et en fait deux écritures aux montants opposés,
+respectivement :
[horizontal]
de clôture:: pour les solder à zéro en fin d’exercice ;
d’ouverture:: pour les réinitialiser à leur solde du précédent exercice.
|
[float]
+[source,sh]
+.Solde des comptes de gestion et calcul du compte de résultat
+----
+% hledger balance --flat '^6' '^7' -f Paris.2011.hledger
+ 248,87€ 6.Charge:0.Achat:6.Non_stocké:8.Autre_Matière,Fourniture:1.Atelier
+ 441,46€ 6.Charge:1.Service:3.Location:2.Immobilière
+ 24,00€ 6.Charge:2.Autre_service:3.Communication:6.Catalogue,Imprimé
+ 31,25€ 6.Charge:2.Autre_service:7.Service_bancaire
+ 25,00€ 6.Charge:5.Gestion:8.Divers:6.Cotisation_(vie_statutaire)
+ -700,00€ 7.Produit:0.Vente:6.Prest’action
+ -20,00€ 7.Produit:5.Autre_gestion_courante:6.Cotisation
+ -6,00€ 7.Produit:5.Autre_gestion_courante:8.Divers
+‑-------------------
+ 44,58€ # <-- Résultat déficitaire de 44,58€
+----
+
[source,hledger]
-.Solde des compte de gestion
+.La même chose mais au format ++.ledger++
----
% hledger-equity '^6' '^7' -f Paris.2011.hledger
2014/07/29
|==================================
+=== Suivre un compte (`register`)
+
+[source,sh]
+.Suivi de la somme des crédits du compte `5112`
+----
+% hledger register -f Paris.2011.hledger 'amt:<0' '^5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser'
+2011/05/23 Remise chq 0994029 ..Chèque_à_encaisser -100,00€ -100,00€
+2011/09/29 Remise chq 1101801 ..Chèque_à_encaisser -20,00€ -120,00€
+2011/11/18 Remise chq 1101802 ..Chèque_à_encaisser -2000,00€ -2120,00€
+----
+
+[source,sh]
+.Suivi de la somme des débits du compte `5112`
+----
+% hledger register -f Paris.2011.hledger 'amt:>0' '^5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser'
+2011/05/15 Prêt ..Chèque_à_encaisser 100,00€ 100,00€
+2011/09/20 Cotisations ..Chèque_à_encaisser 20,00€ 120,00€
+2011/11/10 Prêt ..Chèque_à_encaisser 2000,00€ 2120,00€
+----
+
+NOTE: Si ces deux commandes ne donnent pas le même montant final
+c’est qu’il reste des chèques à encaisser.
+
=== Observer des statistiques (`stats`, `activity`)
|==================================
+=== Écrire des écritures (`add`)
+
+[source,sh]
+.Sélection d’un modèle selon le libellé
+----
+% hledger add -f /tmp/test.ledger
+Adding transactions to journal file /tmp/test.ledger
+Any command line arguments will be used as defaults.
+Use tab key to complete, readline keys to edit, enter to accept defaults.
+An optional (CODE) may follow transaction dates.
+An optional ; COMMENT may follow descriptions or amounts.
+If you make a mistake, enter < at any prompt to restart the transaction.
+To end a transaction, enter . when prompted.
+To quit, enter . at a date prompt or press control-d or control-c.
+Date [2014/07/30]: 2014/01/01
+Description: Libellé de l’écriture ; UN_TAG:, Autre_tag:Avec_Valeur
+Account 1: A:AA
+Amount 1: -42
+Account 2: B:BB:BBB
+Amount 2 [42.0]: 40
+Account 3: B:A
+Amount 3 [2.0]:
+Account 4 (or . or enter to finish this transaction): .
+2014/01/01 Libellé de l’écriture ; UN_TAG:, Autre_tag:Avec_Valeur
+ A:AA -42
+ B:BB:BBB 40
+ B:A 2.0
+
+Save this transaction to the journal ? [y]: y
+Saved.
+Starting the next transaction (. or ctrl-D/ctrl-C to quit)
+Date [2014/01/01]:
+Description: Libellé d’une autre écriture
+Using this similar transaction for defaults:
+2014/01/01 Libellé de l’écriture ; UN_TAG:, Autre_tag:Avec_Valeur
+ A:AA -42
+ B:BB:BBB 40
+ B:A 2.0
+
+Account 1 [A:AA]:
+Amount 1 [-42.0]: 100
+Account 2 [B:BB:BBB]: B
+Amount 2 [-100.0]:
+Account 3 (or . to finish this transaction) [B:A]: .
+2014/01/01 Libellé d’une autre écriture
+ A:AA 100
+ B -100.0
+
+Save this transaction to the journal ? [y]: y
+Saved.
+Starting the next transaction (. or ctrl-D/ctrl-C to quit)
+Date [2014/01/01]: .
+----
+
+[source,sh]
+.Complètement automatique des comptes
+----
+% hledger add -f data/exemple-plan-comptable.ledger
+Adding transactions to journal file /home/julm/admin/cyber.coop/src/tool/hledger/doc/data/exemple-plan-comptable.ledger
+Any command line arguments will be used as defaults.
+Use tab key to complete, readline keys to edit, enter to accept defaults.
+An optional (CODE) may follow transaction dates.
+An optional ; COMMENT may follow descriptions or amounts.
+If you make a mistake, enter < at any prompt to restart the transaction.
+To end a transaction, enter . when prompted.
+To quit, enter . at a date prompt or press control-d or control-c.
+Date [2014/07/30]: yesterday
+Description: Trololo
+Account 1: 1.Capital:
+1.Capital:0.Fonds 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement
+1.Capital:0.Fonds:2.SDR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:1.État
+1.Capital:0.Fonds:2.SDR:4.Apport 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:2.Région
+1.Capital:0.Fonds:2.SDR:6.Sub_invest_BR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:3.Département
+1.Capital:0.Fonds:3.ADR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:4.Commune
+1.Capital:0.Fonds:3.ADR:4.Apport 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:5.Collectivité_publique
+1.Capital:0.Fonds:3.ADR:6.Sub_invest_BR 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:6.Entreprise_publique
+1.Capital:0.Fonds:6.Réserve 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:7.Organisme_privé
+1.Capital:0.Fonds:6.Réserve:3.Statutaire 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:1.Equipement:8.Autre
+1.Capital:0.Fonds:6.Réserve:8.Autre 1.Capital:3.Sub_invest_BNR:9.Compte_résultat:2.Autre
+1.Capital:1.Report 1.Capital:5.Provision_risque&charge
+1.Capital:1.Report:0.Bénéfice 1.Capital:5.Provision_risque&charge:1.Risque
+1.Capital:1.Report:5.Financeur 1.Capital:5.Provision_risque&charge:5.Impôt
+1.Capital:1.Report:9.Déficit 1.Capital:5.Provision_risque&charge:8.Autre
+1.Capital:2.Résultat 1.Capital:5.Provision_risque&charge:8.Autre:2.Congés_à_payer
+1.Capital:2.Résultat:0.Bénéfice 1.Capital:6.Emprunt,Dette
+1.Capital:2.Résultat:9.Déficit 1.Capital:6.Emprunt,Dette:4.Etablissement_crédit
+1.Capital:3.Sub_invest_BNR 1.Capital:6.Emprunt,Dette:5.Dépôt,Caution
+1.Capital:3.Sub_invest_BNR:1.Equipement 1.Capital:6.Emprunt,Dette:8.Autre
+1.Capital:3.Sub_invest_BNR:1.Equipement:1.État 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt
+1.Capital:3.Sub_invest_BNR:1.Equipement:2.Région 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:1.Bénévole
+1.Capital:3.Sub_invest_BNR:1.Equipement:3.Département 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:2.Salarié-e
+1.Capital:3.Sub_invest_BNR:1.Equipement:4.Commune 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:3.Cyclofficine
+1.Capital:3.Sub_invest_BNR:1.Equipement:5.Collectivité_publique 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:4.Autre
+1.Capital:3.Sub_invest_BNR:1.Equipement:6.Entreprise_publique 1.Capital:6.Emprunt,Dette:8.Autre:7.Dette
+1.Capital:3.Sub_invest_BNR:1.Equipement:7.Organisme_privé 1.Capital:9.Fonds_dédiés
+1.Capital:3.Sub_invest_BNR:1.Equipement:8.Autre 1.Capital:9.Fonds_dédiés:4.Sub_exploit
+1.Capital:3.Sub_invest_BNR:8.Autre 1.Capital:9.Fonds_dédiés:5.Don_affecté
+1.Capital:3.Sub_invest_BNR:9.Compte_résultat
+Account 1: 1.Capital:6.Emprunt,Dette
+1.Capital:6.Emprunt,Dette 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:4.Autre
+1.Capital:6.Emprunt,Dette:4.Etablissement_crédit 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:1.Bénévole 1.Capital:6.Emprunt,Dette:8.Autre:7.Dette
+1.Capital:6.Emprunt,Dette:5.Dépôt,Caution 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:2.Salarié-e
+1.Capital:6.Emprunt,Dette:8.Autre 1.Capital:6.Emprunt,Dette:8.Autre:1.Emprunt:3.Cyclofficine
+Account 1: 1.Capital:6.Emprunt,Dette:4.Etablissement_crédit
+Amount 1: -666 ; Don’t panic
+Account 2: 5.Finance:
+5.Finance:1.Etablissement 5.Finance:1.Etablissement:2.Banque:002.Livret 5.Finance:8.Virement
+5.Finance:1.Etablissement:1.Valeur 5.Finance:3.Caisse 5.Finance:8.Virement:0.Interne
+5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser 5.Finance:3.Caisse:1.Siège 5.Finance:8.Virement:1.Fonds
+5.Finance:1.Etablissement:2.Banque:001.Courant 5.Finance:3.Caisse:2.Atelier
+Account 2: 5.Finance:1.Etablissement:2.Banque:001.Courant
+Amount 2 [666.0]:
+Account 3 (or . or enter to finish this transaction): .
+2014/07/29 Trololo
+ 1.Capital:6.Emprunt,Dette:4.Etablissement_crédit -666 ; Don’t panic
+ 5.Finance:1.Etablissement:2.Banque:001.Courant 666.0
+
+Save this transaction to the journal ? [y]: y
+Saved.
+Starting the next transaction (. or ctrl-D/ctrl-C to quit)
+Date [2014/07/29]: .
+----
== Exercice comptable
ifdef::backend-slidy2[>>>]
=== Plan comptable d’une association
-NOTE: Brouillon de documentation @ https://wiki.cyclocoop.org/Comptabilité/Document/Plan_comptable/[]
+//NOTE: Brouillon de documentation @ https://wiki.cyclocoop.org/Comptabilité/Document/Plan_comptable/[]
[source,hledger]
----
include::data/Cyclofficine.Plan_comptable.hledger[]
----
-=== Comptabiliser en partie double
+//[cols="a,a"]
+//|==================================
+//|
+//[float]
+//+
+//[source,hledger]
+//----
+//01/01 Vélo ; Écriture d’engagement (pièce comptable : facture)
+// 7.Produit:0.Vente:1.Produit_fini:1.Vélo -80
+// 5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser 80
+//01/02 Chèque ; Écriture de paiement (pièce comptable : relevé de compte)
+// 5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser -80
+// 5.Finance:1.Etablissement:2.Banque:001.Courant 80
+//----
+//+
+//NOTE: pour des espèces, transiter par : ++5.Finance:3.Caisse:1.Siège++
-[cols="a,a"]
-|==================================
-|
-[float]
-Balance nulle de toute écriture::
-++hledger++ n’accepte aucune écriture qui ne respecte
-pas cette contrainte de la tâche comptable : +
-+
-« __Pour toute écriture, tout ce qui est [black]_débité_ (+++++) dans ses comptes +
-est forcément [black]_crédité_ (++-++) dans ses autres comptes, +
-et réciproquement.__ »
-+
-* Formellement : latexmath:[$\forall e : \textcolor{#D2691E}{\textbf{\acute{e}criture}},
- \ \textbf{balance}\>(\textbf{flux}\>{e}) = 0$]
-+
-[source,hledger]
-----
-2014/04/12
- Compte:Crédité -1234,56
- Compte:Débité ; 1234,56 (montant inféré)
-----
+//|==================================
+
+=== Relation de Chasles par écritures d’[black]*engagement* et de [black]*paiement*
-|
-[float]
-Relation de Chasles par écritures d’[black]*engagement* et de [black]*paiement*::
++hledger++ laisse l’humain s’occuper de ce principe de la tâche comptable
qui traduit la réalité temporelle des mouvements d’argent.
+
4.Tiers:1.Client:1.Client:1.Bien,Prestation:007.Mairie_du_XI -700,00
5.Finance:1.Etablissement:2.Banque:001.Courant 700,00
----
-//+
-//[source,hledger]
-//----
-//01/01 Vélo ; Écriture d’engagement (pièce comptable : facture)
-// 7.Produit:0.Vente:1.Produit_fini:1.Vélo -80
-// 5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser 80
-//01/02 Chèque ; Écriture de paiement (pièce comptable : relevé de compte)
-// 5.Finance:1.Etablissement:1.Valeur:2.Chèque_à_encaisser -80
-// 5.Finance:1.Etablissement:2.Banque:001.Courant 80
-//----
-//+
-//NOTE: pour des espèces, transiter par : ++5.Finance:3.Caisse:1.Siège++
-
-|==================================
==== Soldes nuls souhaitables
1. latexmath:[$\sum{\mbox{ventes}} + \sum{\mbox{dons}} = \sum{\mbox{espèces entrées en caisse}} + \sum{\mbox{Chèques à encaisser}}$] +
(Total des ventes + dons == Total d’espèces entrée en caisse + chèques à encaisser (5112))
-2. Total chèques à encaisser (5112) == Total remises de chèques à la banque (512) (+/- argent non déposé en banque)
+2. Total chèques à encaisser (5112) == Total remises de chèques à la banque (512) (+/- chèques non déposés en banque)
+
-NOTE: vérifier qu’il ne reste plus de chèque comptabilisés dans le tiroir
+NOTE: vérifier qu’il ne reste plus de chèques comptabilisés dans le tiroir
3. Solde du compte caisse (531) == Total entrées espèces en caisse - Total des sorties
(remises d’espèces en banque - sorties d’achats - erreur de caisse)
+
TODO
-== Import et export avec `hledger`
+== Import et export avec ++hledger++
+
+Comme la plupart des logiciels de comptabilité,
+++hledger++ interropère avec le format de tableaux
+http://en.wikipedia.org/wiki/Comma-separated_values[CSV]
+
+++hledger-print-csv++::
++
+[source,sh]
+----
+% hledger-print-csv -f data/exemple-syntaxe.ledger
+sys::[hledger-print-csv -f data/exemple-syntaxe.ledger]
+----
+
+++*.ledger.rules++:: http://hledger.org/manual#csv-files[]
++
+[source,txt]
+----
+% cat banque-postale.livret_A.csv.rules
+skip 1
+fields date,description,amount
+date-format %-d/%-m/%Y
+
+if .INTERETS ACQUIS DECOMPTE D'INTERETS .
+ account1 Banque:Postale:Livret_A
+ account2 Recette:Intérêts:Inflation
+----
-* https://github.com/eval/total_recall[]
-* https://github.com/quentinsf/icsv2ledger[]
+.Pour des besoins plus complexes
+- https://github.com/eval/total_recall[]
+- https://github.com/quentinsf/icsv2ledger[]
+- ou script sur mesure (ex. ++hledger-of-oxygen-csv.pl++)
=== Feuilles de calculs des documents comptables