Commit graph

254 commits

Author SHA1 Message Date
Hyrum Wright
6ccb5e9687 Fix compilation warning: be sure we call the base class copy constructor. 2012-08-14 01:23:04 -04:00
John Wiegley
4681e58d7f Converted the Ledger build system to use CMake 2012-05-20 04:48:05 -05:00
John Wiegley
f4f3058b8c Switch to using Boost.Format 2012-05-14 21:44:00 -06:00
John Wiegley
1cc618a956 Added a * for cleared entries in the time report 2012-05-10 04:03:32 -05:00
John Wiegley
ad7ace902c Allow --invert to work with --monthly
Fixes #770
2012-04-06 01:32:38 -05:00
John Wiegley
f9088f8836 Added --verify-memory and missing TRACE_[CD]TOR calls 2012-03-18 01:01:30 -05:00
John Wiegley
00ff141ee7 Always close the last report output stream
Should fix #701
2012-03-16 15:31:30 -05:00
John Wiegley
c4e942fcb1 Change abbrev_len to int(abbrev_len) 2012-03-13 10:34:51 -05:00
John Wiegley
c8dd3d28e3 Added --time-report option
This is a rather basic option at the moment which only affects the
balance report.  I use it as follows, for entering contractor hours into
a project planning application, where $1 is the contractor's timelog
file, and $2 is the date after which new entries appear in the file:

    ledger -f $1 balance                            \
           --account=payee                          \
           --time-report                            \
           -d "latest > [$2]"                       \
           --datetime-format='%m/%d/%y %I:%M %p'
2012-03-13 03:45:06 -05:00
John Wiegley
cb317f9d39 Added format_datetime valexpr function 2012-03-13 03:40:16 -05:00
John Wiegley
2a4d7e1af0 Added --immediate option 2012-03-10 21:58:28 -06:00
John Wiegley
860610fdaf Added --dc option, for debit/credit style reports 2012-03-10 21:34:51 -06:00
John Wiegley
929a734a30 -H now implies -V 2012-03-09 07:02:34 -06:00
John Wiegley
59f5ebe2df Reworked the way that options are handled 2012-03-09 03:51:53 -06:00
John Wiegley
113fb0ee6a Added --historical option 2012-03-08 01:00:16 -06:00
John Wiegley
21e8b7f6f0 Added nail_down() for pinning market value exprs 2012-03-08 00:55:06 -06:00
John Wiegley
7e250696e0 Many options now have additive effect
For example, -A and -V used to override each other, whereas now:

  -A    report the average amount
  -V    report all amounts at current value
  -AV   report the current value of the average
  -VA   report the average of all current values
2012-03-07 12:46:46 -06:00
John Wiegley
b1107f85ae Removed value_t::price and balance_t::price 2012-03-07 10:32:24 -06:00
John Wiegley
dc9ecc600a Guard against double-freeing of report objects 2012-03-05 15:17:59 -06:00
John Wiegley
e2afc783db Increased file copyrights to 2012 2012-02-29 22:32:23 -06:00
John Wiegley
656e46e182 Renamed actual/effective dates to primary/auxiliary 2012-02-28 03:02:16 -06:00
John Wiegley
aa9b07d79b Added --rich-data for 'convert', and SHA1 checksum checking 2012-02-26 15:45:15 -06:00
John Wiegley
4a18317e7c Added --auto-match option, for use with 'convert' 2012-02-26 02:16:09 -06:00
John Wiegley
37e9ec8030 Report an error in the case of '(1' (missing rparen)
Fixes #557
2011-11-10 00:48:19 -06:00
John Wiegley
8c4e145c57 Added round() and unround() valexpr functions 2011-10-24 15:22:18 -05:00
John Wiegley
f0791bbd72 Cleanup whitespace 2011-08-18 14:48:38 -04:00
John Wiegley
dafe7c891a Added "top_amount" value expr function 2010-12-22 15:32:34 -05:00
John Wiegley
bd5a136ad0 Move balance divider right by prepend-width 2010-06-26 00:36:55 -04:00
John Wiegley
8a29c03490 Added "format" value expression function
This function evaluates formatting strings, returning a string.  For
example:

  format("%(amount)")

This is equivalent to "to_string(amount)".
2010-06-24 20:37:31 -04:00
John Wiegley
2f50e30b89 Scopes can now provide a description of themselves
This isn't being used yet, but it likely will to improve the information
presented to users if their value expressions fail to compile or
evaluate.
2010-06-24 19:53:59 -04:00
John Wiegley
e8e28c794b Added report query modifiers: for, since, until
Now instead of ledger reg expense -p "this month", you can say:

  ledger reg expense for this month

And as a shorthand for "for until this month", you can just say "until
this month" or "since this month".
2010-06-22 21:56:19 -04:00
John Wiegley
81bf38584e Added new --bold-if option 2010-06-22 01:27:05 -04:00
John Wiegley
963161a817 bal was sometimes reporting empty accounts 2010-06-21 18:32:03 -04:00
John Wiegley
9205809d49 Fixed register formatting of postings with payees 2010-06-18 07:27:35 -04:00
John Wiegley
5da1e7756d Added new option --inject=KEY[,KEY...]
If you have a typed metadata key which contains an amount, you can use
--inject=KEY to inject a posting with that amount wherever a match
occurs.  There are two main forms of usage:

  2010-06-18 Sample
      ; Key:: $100
      Expenses:Food                $100.00
      Assets:Checking

The command would be:

  ledger reg --inject=Key

In the above, transactional form, a posting under the account "Key" will
be injected before the first posting reported for this transaction.
It's amount will be $100.  This only happens once for the whole
transaction.

It is also possible to associate the key with a posting:

  2010-06-18 Sample
      Expenses:Food                $100.00
      ; Key:: $100
      Assets:Checking

Now the injected posting is generated whenever that particular post is
reported.
2010-06-18 02:28:12 -04:00
John Wiegley
31e8ed7587 Individual postings may each have their own payee
If a posting has the metadata field "Payee" set to a string, that will
be used as the payee name for that posting.  This affects the register
report, the payees report, and the --by-payee option.

This is useful because sometimes I send, say, 4 checks at a time to my
bank.  So on my bank statement, this is all just one amount:

   2010-06-17 Sample
     Assets:Bank        $400.00
     Income:Check1     $-100.00
     Income:Check2     $-100.00
     Income:Check3     $-100.00
     Income:Check4     $-100.00

Though it's important that the Assets:Bank posting be a single posting
of $400 value, I'd like for income reports to show whom each check came
from.  Now I can say:

   2010-06-17 Sample
     Assets:Bank        $400.00
     Income:Check1     $-100.00  ; Payee: Person One
     Income:Check2     $-100.00  ; Payee: Person Two
     Income:Check3     $-100.00  ; Payee: Person Three
     Income:Check4     $-100.00  ; Payee: Person Four

When I report this, it appears as:

10-Jun-17 Sample             Assets:Bank             $400.00     $400.00
          Person One         Income:Check1          $-100.00     $300.00
          Person Two         Income:Check2          $-100.00     $200.00
          Person Three       Income:Check3          $-100.00     $100.00
          Person Four        Income:Check4          $-100.00           0

This shows that they are all in the same transaction (which is why the
date is not repeated), but they have different payees.
2010-06-17 23:42:23 -04:00
John Wiegley
34fcc62b4d Removed unused --unsorted option 2010-06-15 04:34:16 -04:00
John Wiegley
dcffd218a1 Revised how Ledger handles the "current year"
Now when the Y directive sets the current year for a region, it affects
everything, as if the clock really were set back to that year.
2010-06-14 03:23:09 -04:00
John Wiegley
ea1642b3f9 Completely reworked argument passing in expressions 2010-06-13 05:02:14 -04:00
John Wiegley
536e3e7322 Added a new scope_value() inline helper function 2010-06-13 01:03:48 -04:00
John Wiegley
0555e7f61e Improved value expression function 'commodity'
Without arguments -- and in a posting -- it is equivalent to
"commodity(amount)".  Otherwise, it returns the commodity symbol of its
argument.
2010-06-12 14:58:44 -04:00
John Wiegley
dea2aed0b5 Untabified all source files 2010-06-11 17:02:25 -04:00
John Wiegley
d580079df8 Scrub account totals before applying --percent 2010-06-11 17:02:25 -04:00
John Wiegley
bea90a2b98 Fixed the "generate" command 2010-06-10 14:28:07 -04:00
John Wiegley
920dbc3f00 Corrected some math used by the budget command 2010-06-10 08:17:50 -04:00
John Wiegley
fc09b69fb7 Fixed interaction with -V/X and grouped postings
With -s, -M/Y/D, -n, and a few other flags, postings get "grouped" into
meta-transactions that contain more postings than before.  In all these
cases, -V use the date of the *earliest* posting in that group, which
makes little sense and caused breakages with -J.  It now uses the latest
date.

Fixes #197 / 68EAF363-D0FE-4127-866E-A5AEBACB65D6
2010-06-09 02:22:50 -04:00
John Wiegley
4197c88511 Corrected implementation of --percent 2010-06-06 06:05:51 -04:00
John Wiegley
dbac09405f Added new command: "pricemap [DATE]"
This outputs the pricing relationship of commodities in your data file,
as of DATE (optional), using the DOT language.  If you have graphviz
installed, it can be viewed quite simply using:

  ledger pricemap | dotty -

Each relationship in the graph shows the conversion factor to exchange
one commodity for another, and the date at which this factor was
determined.
2010-06-04 02:53:18 -04:00
John Wiegley
647d4aac2f New: --group-by=EXPR and --group-title-format=FMT
The --group-by option allows for most reports to be split up into
sections based on the varying value of EXPR.  For example, to see
register subtotals by payee, use:

  ledger reg --group-by=payee -s

This works for separated balances too:

  ledger bal --group-by=payee

Another interesting possibility is seeing a register of all the accounts
affected by a related account:

  ledger reg -r --group-by=payee

The option --group-title-format can be used to add a separator bar to
the group titles.  The option --no-titles can be used to drop titles
altogether.
2010-05-30 02:47:40 -06:00
John Wiegley
a41d33fba3 Option --rounding inverted to --no-rounding 2010-05-30 02:47:40 -06:00