[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] Org and ledger
From: |
Sharon Kimble |
Subject: |
Re: [O] Org and ledger |
Date: |
Fri, 07 Nov 2014 13:19:10 +0000 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) |
Alan Schmitt <address@hidden> writes:
Thanks Alan for this. Ledger is something that I would dearly love to be
using, but I can't find a good tutorial [by which I mean, it works in
small steps which build on the previous steps]. I've looked at
http://lists.gnu.org/archive/html/emacs-orgmode/2014-04/msg00727.html
http://orgmode.org/worg/org-tutorials/weaving-a-budget.html
http://hledger.org/step-by-step
The last one looked the most promising until I tried "ledger add" which
replied -
--8<---------------cut here---------------start------------->8---
ledger add -f ~/.emacs.d/ledger/ledger.journal
Error: Unrecognized command 'add'
--8<---------------cut here---------------end--------------->8---
So now I'm stumped!
Sharon.
> On 2014-10-31 12:32, Vikas Rawal <address@hidden> writes:
<snip>.
>
> I generate reports and deal with my budget using org. I describe my
> setup here:
> http://lists.gnu.org/archive/html/emacs-orgmode/2014-04/msg00727.html
>
> Since then, I've slightly refined these functions, here is the current
> version:
>
> #+begin_src org
> #+name: call_ledger
> #+begin_src emacs-lisp :var lcmd="bal" :var bucket="Quotidien" :var
> prefix="Expenses:" :var period=()
> (let* ((name (org-trim bucket))
> (bname (concat "'^" prefix name "'"))
> (ledger "ledger -f ~/Documents/Org/mescomptes.ledger")
> (parg (when period (concat " -p '" period "'")))
> (cutcmd "tail -1 | cut -d ' ' -f 2")
> (cmd
> (concat ledger " -J " parg " " lcmd " " bname " | " cutcmd))
> (res (org-trim (shell-command-to-string cmd))))
> (if (equal res "") 0 res))
> #+end_src
> #+name: monthly_average_since
> #+begin_src emacs-lisp :var start-date="2014-03-01" :var amount=100
> (let ((nbdays (- (time-to-days (current-time))
> (time-to-days (org-read-date nil t start-date)))))
> (calc-eval "round($ / (12 * ($$ / 365.25)), 2)" nil amount nbdays))
> #+end_src
>
> #+name: monthly_average
> #+begin_src emacs-lisp :var starty=2014 :var startm=3 :var amount=100
> (let* ((tm (decode-time))
> (cmonth (nth 4 tm))
> (cyear (nth 5 tm))
> (nbmonths (+ (* 12 (- cyear starty)) (- cmonth startm))))
> (calc-eval "round($ / $$, 2)" nil amount nbmonths))
> #+end_src
>
> #+name: ledger_average
> #+begin_src emacs-lisp :var b="Quotidien" :var sy=2014 :var sm=3 :var
> sd="2014-03-01" :var p="Expenses:"
> (let* ((per (format "from %d-%d-01 to this month" sy sm))
> (a (org-sbe call_ledger (bucket (eval b)) (prefix (eval p)) (period
> (eval per)))))
> (org-sbe monthly_average (amount (eval a)) (starty (eval sy)) (startm
> (eval sm))))
> #+end_src
>
> #+name: ledger_budget
> #+BEGIN_SRC emacs-lisp :results output :var table=budget :var year=2014 :var
> month=04
> (princ (format "%d-%02d-01 * Budget %d %02d\n" year month year month))
> (mapcar
> (lambda (tuple)
> (princ (format " Bucket:Expenses:%s %d €\n" (car tuple) (cadr
> tuple))))
> (butlast (cdr table) 1))
> (princ " Bucket:Unallocated:EUR\n")
> #+END_SRC
> #+end_src
>
> The table looks like this now
>
> #+begin_src org
> #+name: budget
> | Bucket | Planned | Remaining | This Month | Last Month | Average |
> |--------+---------+-----------+------------+------------+---------|
> | Name | & | & | & | & | & |
> |--------+---------+-----------+------------+------------+---------|
> | Total | & | & | & | & | & |
> #+TBLFM: @2$3..@>>$3='(org-sbe call_ledger (bucket (concat "\"" $1 "\""))
> (prefix "\"Bucket:Expenses:\""))
> #+TBLFM: @2$4..@>>$4='(org-sbe call_ledger (bucket (concat "\"" $1 "\""))
> (period "\"this month\""))
> #+TBLFM: @2$5..@>>$5='(org-sbe call_ledger (bucket (concat "\"" $1 "\""))
> (period "\"last month\""))
> #+TBLFM: @2$6..@>>$6='(org-sbe ledger_average (b (concat "\"" $1 "\"")))
> #+TBLFM: @>$2..@>$6=vsum(@address@hidden)
> #+end_src
>
> Best,
>
> Alan
--
A taste of linux = http://www.sharons.org.uk
my git repo = https://bitbucket.org/boudiccas/dots
TGmeds = http://www.tgmeds.org.uk
Debian testing, fluxbox 1.3.5, emacs 24.4.1.0
signature.asc
Description: PGP signature
- Re: [O] Org and ledger, Eric S Fraga, 2014/11/03
- Re: [O] Org and ledger, Alan Schmitt, 2014/11/06
- Re: [O] Org and ledger,
Sharon Kimble <=
- Re: [O] Org and ledger, Eric S Fraga, 2014/11/07
- Re: [O] Org and ledger, Daniel Clemente, 2014/11/08
- Re: [O] Org and ledger, Eric S Fraga, 2014/11/09
- Re: [O] Org and ledger, Bernhard Pröll, 2014/11/10
- Re: [O] Org and ledger, Daniel Clemente, 2014/11/10