Skip to content

Instantly share code, notes, and snippets.

@simonmichael
Created November 25, 2017 20:03
Show Gist options
  • Save simonmichael/540cee9b53473eb06e4eca43adaf76e9 to your computer and use it in GitHub Desktop.
Save simonmichael/540cee9b53473eb06e4eca43adaf76e9 to your computer and use it in GitHub Desktop.
old:
* Budgeting and forecasting document
* Show percentage of budget spent
* --budget switch for "balance"
* added --auto to balancemode, print, register
* added --forecast to balancemode, print, register
* Make runPeriodicTransaction stricter: it will reject period start days that do not line up with requested interval. This is very helpful for periodic transactions, because in budget mode you need to ensure that no periodic transactions extend past the end of the journal, and in forecast mode you need to make sure that all periodic transactions are strictly after the end of the journal.
* ensure that runPeriodicTransaction does not generate transactions outside of the requested DateSpan
* More AutoTransaction tests. Some of them demonstrate that runPeriodicTransaction could generate transactions ouside of requested DateSpan. This happens because runPeriodicTransaction uses splitSpan internally, and splitSpan always generates dateSpans that fully cover original DateSpan, extending beyound left/right boundary if necessary.
* expanding documentation for existing period expressions, documenting "first day of period" behavior. Documented new period expressions DayOfYear and WeekdayOfMonth
* Now that we have parser for weekdays/abbreviations, lets add 'every <weekday> of week' as another form for of DayOfWeek (alongside with 'every nth day of week')
* Support every 2nd Thurdsay of month. Useful for periodic transactions, if you have events (rent, paycheck) that occur on fixed weekdays rather than fixed days of month.
* Added support for DayOfYear. Without it you can only create once-per-year periodic transactions with "yearly"/"every year", and those always occur on 1st Jan. DayOfYear required to enable yearly transactions on any day you want: "~ every 11th Nov"
* parsePeriodExpr needs to receive lowercased input, otherwise month names are not parsed correctly. Demo: https://gist.github.com/adept/7b532328bdd4aef930a99a63cf53f68b
* Fix splitSpan for nthdayof{week,month} - start of DateSpan was not covered Demo: https://gist.github.com/adept/0c0e932d789adc803e93d219f7e168c9
possible cleanup:
* doc: budgeting and forecasting how-to, demonstrating new features
* bal/bs/is/cf: show percentage of budget spent
* bal/bs/is/cf: --budget shows budget performance
Budget goals specified with periodic transactions (as with
hledger-budget) can now be displayed in all balance reports.
--budget shows the target amount and percentage alongside the actual
amount, per account and period.
Unbudgeted accounts will be hidden, unless --show-unbudgeted is used.
Budgeted accounts are displayed folded (depth-clipped) at a depth
matching the budget specification. Unbudgeted accounts, if shown, are
displayed at their usual depth (in full detail, or according to --depth).
* cli: --auto adds automated postings to reports
Ledger-style automated postings, previously supported only by
hledger-budget, have landed as a first-class feature. The --auto
flag activates them, so that any postings they generate are
included in reports.
* cli: --forecast adds periodic transactions to reports
Ledger-style periodic transactions, previously supported only by
hledger-budget, have landed as a first-class feature. The --forecast
flag activates them, so that any transactions they generate are
included in reports.
* lib: runPeriodicTransaction's start date must line up with interval
This is very helpful for periodic transactions, because in budget mode
you need to ensure that no periodic transactions extend past the end
of the journal, and in forecast mode you need to make sure that all
periodic transactions are strictly after the end of the journal.
* lib: make runPeriodicTransaction respect date bounds
* lib: more periodic transaction tests
Some of these demonstrate that runPeriodicTransaction could generate
transactions ouside of requested DateSpan. This happens because
runPeriodicTransaction uses splitSpan internally, and splitSpan always
generates dateSpans that fully cover original DateSpan, extending
beyound left/right boundary if necessary.
* doc: expand documentation for period expressions
Document "first day of period" behavior. Document new period
expressions DayOfYear and WeekdayOfMonth.
* lib: support "every <weekday>"
A shorter spelling for "every <n>th day of week".
* lib: support "every 2nd Thursday of month" in period expressions
Useful for periodic transactions.
* lib: support "every 11th Nov" in period expressions
Useful for periodic transactions
Without it, once-per-year periodic transactions always occur on 1st Jan.
* lib: make month names in period expressions case-insensitive
Demo: https://gist.github.com/adept/7b532328bdd4aef930a99a63cf53f68b
* lib: Fix splitSpan for nthdayof{week,month} - start of DateSpan was not covered
Demo: https://gist.github.com/adept/0c0e932d789adc803e93d219f7e168c9
[or include pastes inline for permanence ?]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment