docs: dev notes
This commit is contained in:
parent
2f6b82122f
commit
cb11c02df8
186
NOTES
186
NOTES
@ -377,54 +377,17 @@ competitors/fellow niche inhabitants
|
||||
**** usability
|
||||
**** download & usage stats
|
||||
** errors
|
||||
*** balance: stack space overflow on timelog entries with colons
|
||||
<<<
|
||||
i 2010/1/1 09:15:00 a:b
|
||||
o 2010/1/1 09:45:00
|
||||
>>>2
|
||||
Stack space overflow: current size 8388608 bytes.
|
||||
Use `+RTS -Ksize' to increase it.
|
||||
*** a first run with no journal file should give better help
|
||||
*** print: bad layout with mixed amounts
|
||||
*** register: confusing output with mixed amounts
|
||||
$ hledger reg opening
|
||||
2010/01/01 OPENING BALANCES $19690.92 $19690.92
|
||||
eq:opening balances €-35.00 €-35.00
|
||||
*** non-blockers
|
||||
**** parsing: only journals can include, and only another journal
|
||||
**** convert: rules file can't have blank lines after last data
|
||||
|
||||
*** register: eats memory
|
||||
$ hours stats
|
||||
Ledger statistics as of 2010-04-01
|
||||
----------------------------------
|
||||
File : current.timelog
|
||||
Period : 2007-02-05 to 2010-01-31 (1091 days)
|
||||
Last transaction : 2010-01-30 (61 days ago)
|
||||
Transactions : 4333 (4.0 per day)
|
||||
Transactions last 30 days: 0 (0.0 per day)
|
||||
Transactions last 7 days : 0 (0.0 per day)
|
||||
Accounts : 947
|
||||
Account tree depth : 8
|
||||
Commodities : 2 (h, p)
|
||||
$ hours reg ...Nx100Mb...
|
||||
|
||||
*** register: with reporting interval and depth, should aggregate deeper txns to specified depth
|
||||
*** parsing: timelog conversion gives unbalanced txns
|
||||
hledger -f- print
|
||||
<<<
|
||||
i 2009/01/02 10:18:26 work:business:systems:website:outage
|
||||
o 2009/01/02 10:35:03
|
||||
>>>
|
||||
2009/01/02 * 10:18-10:35
|
||||
work:business:systems:website:outage 0.3h
|
||||
|
||||
*** print: virtual parentheses/brackets throw off alignment
|
||||
<<<
|
||||
2009/01/27 (1/2009) Foobar 2
|
||||
VLL:VLL_1_Year -7140.00 USD ; Some comment
|
||||
(Company:Baz) -7140.00 USD
|
||||
FLL:Foreign 6000.0 USD
|
||||
VLL_VAT 1140.0 USD
|
||||
>>>
|
||||
2009/03/27 (000007) Foobar 1
|
||||
FLL 6783.00 USD
|
||||
(Company:Baz) 6783.00 USD
|
||||
VAT -5700.00 USD
|
||||
VLL_VAT -1083.00 USD
|
||||
|
||||
*** parsing: misleading error when final newline missing
|
||||
**** parsing: misleading error when final newline missing
|
||||
hledger -f- balance
|
||||
<<<
|
||||
2010/1/1
|
||||
@ -437,7 +400,7 @@ unexpected "\r"
|
||||
expecting digit, effective date, cleared flag, transaction code or description and/or comment
|
||||
>>>= 1
|
||||
|
||||
*** parsing: wrong line number in error
|
||||
**** parsing: wrong line number in error
|
||||
hledger -f- print
|
||||
<<<
|
||||
2010-03-18 Postage
|
||||
@ -448,7 +411,7 @@ hledger: parse error at (line 1, column 24):
|
||||
unexpected "@"
|
||||
expecting comment or new-line
|
||||
|
||||
*** parsing: errors should include the file name
|
||||
**** parsing: errors should include the file name
|
||||
This one does:
|
||||
$ hledger -b today
|
||||
"/Users/simon/personal/current.journal" (line 4, column 1) in included file "2010.journal":
|
||||
@ -462,14 +425,26 @@ hledger: parse error at (line 1, column 59):
|
||||
unexpected "["
|
||||
expecting comment or new-line
|
||||
|
||||
*** parsing: better leap year checking
|
||||
**** parsing: better leap year checking
|
||||
ledger:
|
||||
While parsing file "/Users/simon/personal/2010.ledger", line 442:
|
||||
While parsing transaction:
|
||||
> 2/27=2/29 (20100201ucla) ucla payment
|
||||
Error: Day of month is not valid for year
|
||||
|
||||
*** convert: rules file can't have blank lines after last data
|
||||
**** print: virtual parentheses/brackets throw off alignment
|
||||
<<<
|
||||
2009/01/27 (1/2009) Foobar 2
|
||||
VLL:VLL_1_Year -7140.00 USD ; Some comment
|
||||
(Company:Baz) -7140.00 USD
|
||||
FLL:Foreign 6000.0 USD
|
||||
VLL_VAT 1140.0 USD
|
||||
>>>
|
||||
2009/03/27 (000007) Foobar 1
|
||||
FLL 6783.00 USD
|
||||
(Company:Baz) 6783.00 USD
|
||||
VAT -5700.00 USD
|
||||
VLL_VAT -1083.00 USD
|
||||
|
||||
** refactoring, cleanup
|
||||
*** more modularity
|
||||
@ -479,7 +454,6 @@ Error: Day of month is not valid for year
|
||||
***** more package splits
|
||||
****** hledger-web
|
||||
****** hledger-vty
|
||||
****** makefile review/update
|
||||
**** plugin strategy
|
||||
**** export lists
|
||||
**** graph and reduce dependencies
|
||||
@ -498,6 +472,10 @@ Error: Day of month is not valid for year
|
||||
*** inspiration
|
||||
http://community.haskell.org/~ndm/downloads/paper-hoogle_overview-19_nov_2008.pdf -> Design Guidelines
|
||||
** features
|
||||
*** register: depth could aggregate deeper txns, or only with reporting interval
|
||||
when you do register --depth 1 and all transactions use depth-2 accounts, should it display synthetic aggregated depth-1 transactions ?
|
||||
I have been wanting that, at least in the case when you have a reporting interval like -p daily
|
||||
|
||||
*** register --wide and/or --format ...
|
||||
*** --related
|
||||
*** Double -> Decimal
|
||||
@ -687,6 +665,110 @@ are there any cashflow, tax, budgetary problems looming ?
|
||||
**** http://lwn.net/Articles/233627/
|
||||
**** http://lwn.net/Articles/314577/
|
||||
**** http://lwn.net/Articles/387967/ (free after 5/27)
|
||||
*** hledger ghci examples
|
||||
This is the main object you'll deal with as a user of the Ledger
|
||||
library.
|
||||
|
||||
The most useful functions also have shorter, lower-case aliases for easier
|
||||
interaction. Here's an example:
|
||||
|
||||
> > import Hledger.Data
|
||||
> > j <- readJournal "sample.ledger"
|
||||
> > let l = journalToLedger nullfilterspec j
|
||||
> > accountnames l
|
||||
> ["assets","assets:bank","assets:bank:checking","assets:bank:saving",...
|
||||
> > accounts l
|
||||
> [Account assets with 0 txns and $-1 balance,Account assets:bank with...
|
||||
> > topaccounts l
|
||||
> [Account assets with 0 txns and $-1 balance,Account expenses with...
|
||||
> > account l "assets"
|
||||
> Account assets with 0 txns and $-1 balance
|
||||
> > accountsmatching ["ch"] l
|
||||
> accountsmatching ["ch"] l
|
||||
> [Account assets:bank:checking with 4 txns and $0 balance]
|
||||
> > subaccounts l (account l "assets")
|
||||
> subaccounts l (account l "assets")
|
||||
> [Account assets:bank with 0 txns and $1 balance,Account assets:cash...
|
||||
> > head $ transactions l
|
||||
> 2008/01/01 income assets:bank:checking $1 RegularPosting
|
||||
> > accounttree 2 l
|
||||
> Node {rootLabel = Account top with 0 txns and 0 balance, subForest = [...
|
||||
> > accounttreeat l (account l "assets")
|
||||
> Just (Node {rootLabel = Account assets with 0 txns and $-1 balance, ...
|
||||
> > datespan l -- disabled
|
||||
> DateSpan (Just 2008-01-01) (Just 2009-01-01)
|
||||
> > rawdatespan l
|
||||
> DateSpan (Just 2008-01-01) (Just 2009-01-01)
|
||||
> > ledgeramounts l
|
||||
> [$1,$-1,$1,$-1,$1,$-1,$1,$1,$-2,$1,$-1]
|
||||
> > commodities l
|
||||
> [Commodity {symbol = "$", side = L, spaced = False, comma = False, ...
|
||||
|
||||
*** ledger budgeting/forecasting
|
||||
seanh:
|
||||
|
||||
With `--budget` you can compare your budgeted transactions to your
|
||||
actual transactions and see whether you are under or over your budget.
|
||||
|
||||
The way it works is this: say you have a budget entry that moves £50
|
||||
from Assets into Expenses:Cash every week:
|
||||
|
||||
~ Weekly
|
||||
Expenses:Cash £50
|
||||
Assets
|
||||
|
||||
When you run register or balance with `--budget` ledger will insert
|
||||
reverse transactions that move £50 _from_ Expenses:Cash _into_ Assets
|
||||
every week. These are called budget entries. The idea is that your real
|
||||
transactions that move money from Assets into Expenses will offset the
|
||||
inserted budget entries that move money the other way. The budget
|
||||
entries and the real transactions should sum to zero, if they don't then
|
||||
it shows how much you have overspent or underspent.
|
||||
|
||||
For example:
|
||||
|
||||
ledger --budget balance '^expenses'
|
||||
|
||||
balances your budgeted expenses against your actual expenses on those
|
||||
budgeted accounts (sub-accounts of expenses that do not appear in the
|
||||
budget are ignored in this calculation). The sum of the budget entries
|
||||
(which move money out of expenses accounts) and your real transactions
|
||||
(which move money into expenses accounts) should be 0. If the sum is
|
||||
positive then it shows how much you've overspent, if it's negative then
|
||||
it shows how much you've underspent.
|
||||
|
||||
You can do the same with register and get a print out of each
|
||||
transaction (budget entries and real transactions) with a running total:
|
||||
|
||||
ledger --budget register '^expenses'
|
||||
|
||||
And you can produce weekly, monthly or yearly budget reports:
|
||||
|
||||
ledger --budget --weekly register '^expenses'
|
||||
ledger --budget --monthly register '^expenses'
|
||||
ledger --budget --yearly register '^expenses'
|
||||
|
||||
These will only output reports for each week, month or year that has
|
||||
passed (your ledger file contains transactions dated later than that
|
||||
week, month, or year). You can see how well you did last week (or month,
|
||||
or year) but you can't see how well you're doing so far this week
|
||||
(month, year).
|
||||
|
||||
The `--unbudgeted` argument will show (and sum) all your expenses for
|
||||
accounts that are _not_ budgeted, and the `--add-budget` argument will
|
||||
consider all your expenses budgeted or not with the budget entries
|
||||
added in.
|
||||
|
||||
With `--forecast` you can project your budget into the future to see,
|
||||
for example, when some account will reach 0. For example, to predict
|
||||
your net worth:
|
||||
|
||||
ledger --forecast 'd<[2012]' register '^assets' '^liabilities'
|
||||
|
||||
Or to see how your expenses will add up:
|
||||
|
||||
ledger --forecast 'd<[2012]' register '^expenses'
|
||||
|
||||
** software
|
||||
*** http://gnucash.org
|
||||
*** http://www.xtuple.com/postbooks
|
||||
|
||||
Loading…
Reference in New Issue
Block a user