> Just curious what other people are using.
I use Emacs, Git and Dropbox.
John
I use git for storage and offsite backup, with multiple files included
into the master file. About 90% of my ledger files are generated from
scripts (PHP and perl).
- Zack
I use emacs, unison (sync) and rsync.net. The last is very interest
paid service.
Unison does not do control version but it can save backup history that
is enough for me. I am thinking in using (emacs + unison + rsync ) on
maemo OS (smartphone N900). But I generate my ledger file by hand
using ledger-mode in emacs. I am interest to know what other people
are doing with those perl and python scripts.
It would be nice if there were some HOWTO and php/python source-code
for setting up a HTTP server(apache) for entering data on ledger file
and getting reports.
And it would be *really* cool if it were integrated with gnuplot for
generating on-the-fly graphs.
Regards,
--
Felipe Magno de Almeida
I use emacs and mercurial.
To reconcile,
i convert the csv file of my bank to an org table, then i split window
in three, one with org table, one with ledger file, and one with the
reconcile buffer.
To add entries to ledger file, i use some functions in addition
ledger.el.
You can find these tools here:
http://mercurial.intuxication.org/hg/emacs-utils
They are for my personal use, so they may not work for you, just adapt
for yourself.(specially csv2org).
--
Thierry Volpiatto
Gpg key: http://pgp.mit.edu/
> To reconcile,
> i convert the csv file of my bank to an org table, then i split window
> in three, one with org table, one with ledger file, and one with the
> reconcile buffer.
Just so you know, Ledger 3.0 has a new command: convert.
Give convert a pathname to a CSV file, where the columns are identified
(with names like Payee, Amount, Total (optional), etc), and it will attempt
to identify the target accounts based on historical usage in your journal
file. It only gets things partly right, but for me it's enough to make
quick headway.
Use it with the --account=NAME option, and --invert, to set the source
account name and whether it's an asset or liability type account.
John
> On Jun 23, 2010, at 1:48 AM, Thierry Volpiatto wrote:
>
>> To reconcile,
>> i convert the csv file of my bank to an org table, then i split window
>> in three, one with org table, one with ledger file, and one with the
>> reconcile buffer.
>
> Just so you know, Ledger 3.0 has a new command: convert.
Nice, i am using 2.6.2 at the moment, i tried to build 3.0 whithout
success some months ago, i guess it is stable now, i will try again.
> Give convert a pathname to a CSV file, where the columns are identified
> (with names like Payee, Amount, Total (optional), etc), and it will attempt
> to identify the target accounts based on historical usage in your journal
> file. It only gets things partly right, but for me it's enough to make
> quick headway.
It seem what you describe convert a ledger file to a CSV one no?
What i need is convert CSV file to something readable.
The best i found to use with emacs is org table.
> Use it with the --account=NAME option, and --invert, to set the source
> account name and whether it's an asset or liability type account.
I keep most frequent options and scripts in a makefile, see part of it at http://gist.github.com/447724 .
I download csv data from banks and use hledger convert (ledger's convert is similar) to convert these to .journal files
(make move-csv convert-csv). When I see postings that weren't automatically categorised to the right account, I add a
suitable regexp to the appropriate .rules file so that next time the conversion will be better. Then I copy/paste new
transactions from the converted journals into my main journal using emacs and ledger-mode.
Other miscellaneous data entry (cash transactions) and edits are also done with emacs and ledger-mode, either by copying
& editing a similar transaction or entering a new one in which case ledger-mode's account name completion is very
useful. I don't use hledger's web ui for data entry, but I'm about to set it up for my girlfriend.
As for security/privacy, all the above is kept in ~/finance/, a separate directory to remind me to keep it more private.
make fixperms sets some restrictive file permissions, for what that's worth. I didn't find a way to keep it encrypted
and still easy to work with. I don't put this data on any permanently-connected server machine.
> It seem what you describe convert a ledger file to a CSV one no?
> What i need is convert CSV file to something readable.
> The best i found to use with emacs is org table.
The "convert" command prints a CSV file as a Ledger file. The "csv" command
prints a Ledger file as a CSV file.
John
> Firstly ensuring that account names are spelt correctly (pre-declaring
> valid account names I guess).
The --strict option will warn you if an uncleared transaction contains a
never-before-seen account name. Cleared transactions are assumed to be
correct -- since you cleared them.
> Second is declaring pairs of accounts between which transfers could
> validly occur, so that e.g money could not be transferred from a
> contingency account to the director's loan account.
You can do this with the "check" keyword and an automated transaction:
= /Checking/
check account =~ /Expense/
2010-06-24 Sample
Expenses:Food $100
Assets:Checking
Use "assert" instead of "check" if you want it to be an error.
> Third the imposition of sanity limits on transaction amounts, e.g.
> flag anything > £5000
Again, using an automated check:
= true
check abs(amount) < 5000
By comparing the amount to an integer, it ignores the commodity and only
compares the magnitude.
NOTE: Be sparing with how many automated transactions you create. Each one
must be evaluated for every posting in your file, so the amount of time required
is N*Y, where N is the number of postings and Y is the number of automated
transactions.
John
>> Second is declaring pairs of accounts between which transfers could
>> validly occur, so that e.g money could not be transferred from a
>> contingency account to the director's loan account.
>
> You can do this with the "check" keyword and an automated transaction:
>
> = /Checking/
> check account =~ /Expense/
>
> 2010-06-24 Sample
> Expenses:Food $100
> Assets:Checking
>
> Use "assert" instead of "check" if you want it to be an error.
Just as a side-note: You can still confirm this at the end of the file
using:
check account("Assets:Checking").all(account =~ /Expense/)
However, this will not tell you where the problem came from. That's OK
if you are actively using version control and can identify which set of
changes introduced the problem, but otherwise automated transactions are
the surest way to find the cause.
John
I'm on Windows and I've got a setup of editing with Vim, store data
file + documentation (various accounts etc.) in a Truecrypt volume on
Dropbox. I've got a bunch of batch files that make for a rudimentary
menu system with the most common queries/reports, and do automatic
mounting of the truecrypt volume. Only been doing it for a few weeks
and I don't sync automatically with bank accts (prefer manual for the
extra checking) but it's working great so far. I love Dropbox.
Apart from this, yesterday I found a great resource with free books
about accounting (requires email address to download + books have some
ads, but the site is legit, i.e. from a mainstream newspaper here in
the Netherlands). It's very nice to get a basis in the fundamentals of
accounting, or refresh things you don't quite remember from your
business accounting classes :) They have books in both Dutch &
English, check out http://www.depers.nl/studieboeken/
cheers,
roel
Alright, I'll weigh in.
The most complicated use of Ledger I have is my extensive expense
reporting. As I spend money on my client's behalf while traveling, I
have to create itemized reports to seek reimbursement. While it sounds
simple, having different clients, sources of money, classifications,
the complexity adds up.
I have a single directory tree which is stored in Bazaar.
I use CSV2Ledger to process my incoming CSV data from my credit card
into Ledger entries, which are written to Queue.dat in my base
directory.
My main ledger file ".ledger" contains nothing but "!include" lines
for each subsequent file.
I assign transactions to expense reports (ie: AISER0000) using
metadata in the Queue file. Once the pending transactions are tagged,
I run a shell script which relocates any transactions from Queue.dat
to Reports/AISER0000.dat, adds any new report files to Bazaar, and
updates the include list in the main file.
I have additional data files in my Data/ directory by year, bin/ for
scripts, Archive/ for previously imported CSV files, and PDF/ for the
resulting PDF expense reports from the ledger data.
The workflow goes pretty smoothly nowadays, I'm happy with it.
I know my data is a specific use case, but it works great!
------------------------------------------------------------------
Russell Adams RLA...@AdamsInfoServ.com
PGP Key ID: 0x1160DCB3 http://www.adamsinfoserv.com/
Fingerprint: 1723 D8CA 4280 1EC9 557F 66E8 1154 E018 1160 DCB3