packages feed

hledger 1.4 → 1.5

raw patch · 60 files changed

+15269/−14062 lines, 60 filesdep +Decimaldep ~ansi-terminaldep ~cmdargsdep ~file-embedPVP ok

version bump matches the API change (PVP)

Dependencies added: Decimal

Dependency ranges changed: ansi-terminal, cmdargs, file-embed, haskeline, hledger-lib, megaparsec, shakespeare, split, tabular, utf8-string, wizards

API changes (from Hackage documentation)

+ Hledger.Cli.Utils: generateAutomaticPostings :: ReportOpts -> Journal -> Journal
+ Hledger.Cli.Utils: journalAddForecast :: CliOpts -> Journal -> IO Journal
+ Hledger.Cli.Utils: journalApplyValue :: ReportOpts -> Journal -> IO Journal
- Hledger.Cli.Commands.Activity: printDayWith :: (PrintfType t, PrintfArg t1) => (t2 -> t1) -> (DateSpan, t2) -> t
+ Hledger.Cli.Commands.Activity: printDayWith :: (PrintfType t2, PrintfArg t1) => (t3 -> t1) -> (DateSpan, t3) -> t2
- Hledger.Cli.Commands.Checkdupes: checkdupes :: t -> Journal -> IO ()
+ Hledger.Cli.Commands.Checkdupes: checkdupes :: () => p -> Journal -> IO ()

Files

+ .otherdocs/hledger-api.1 view
@@ -0,0 +1,122 @@++.TH "hledger\-api" "1" "December 2017" "hledger\-api 1.5" "hledger User Manuals"++++.SH NAME+.PP+hledger\-api \- web API server for the hledger accounting tool+.SH SYNOPSIS+.PP+\f[C]hledger\-api\ [OPTIONS]\f[]+.PD 0+.P+.PD+\f[C]hledger\ api\ \-\-\ [OPTIONS]\f[]+.SH DESCRIPTION+.PP+hledger is a cross\-platform program for tracking money, time, or any+other commodity, using double\-entry accounting and a simple, editable+file format.+hledger is inspired by and largely compatible with ledger(1).+.PP+hledger\-api is a simple web API server, intended to support+client\-side web apps operating on hledger data.+It comes with a series of simple client\-side app examples, which drive+its evolution.+.PP+Like hledger, it reads data from one or more files in hledger journal,+timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+For more about this see hledger(1), hledger_journal(5) etc.+.PP+The server listens on IP address 127.0.0.1, accessible only to local+requests, by default.+You can change this with \f[C]\-\-host\f[], eg+\f[C]\-\-host\ 0.0.0.0\f[] to listen on all addresses.+Note there is no other access control, so you will need to hide+hledger\-api behind an authenticating proxy if you want to restrict+access.+You can change the TCP port (default: 8001) with \f[C]\-p\ PORT\f[].+.PP+If invoked as \f[C]hledger\-api\ \-\-swagger\f[], instead of starting a+server the API docs will be printed in Swagger 2.0 format.+.SH OPTIONS+.PP+Note: if invoking hledger\-api as a hledger subcommand, write+\f[C]\-\-\f[] before options as shown above.+.TP+.B \f[C]\-f\ \-\-file=FILE\f[]+use a different input file.+For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or+\f[C]$HOME/.hledger.journal\f[])+.RS+.RE+.TP+.B \f[C]\-d\ \-\-static\-dir=DIR\f[]+serve files from a different directory (default: \f[C]\&.\f[])+.RS+.RE+.TP+.B \f[C]\-\-host=IPADDR\f[]+listen on this IP address (default: 127.0.0.1)+.RS+.RE+.TP+.B \f[C]\-p\ \-\-port=PORT\f[]+listen on this TCP port (default: 8001)+.RS+.RE+.TP+.B \f[C]\-\-swagger\f[]+print API docs in Swagger 2.0 format, and exit+.RS+.RE+.TP+.B \f[C]\-\-version\f[]+show version+.RS+.RE+.TP+.B \f[C]\-h\ \-\-help\f[]+show usage+.RS+.RE+.SH ENVIRONMENT+.PP+\f[B]LEDGER_FILE\f[] The journal file path when not specified with+\f[C]\-f\f[].+Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps+\f[C]C:/Users/USER/.hledger.journal\f[]).+.SH FILES+.PP+Reads data from one or more files in hledger journal, timeclock,+timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+.SH BUGS+.PP+The need to precede options with \f[C]\-\-\f[] when invoked from hledger+is awkward.+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
+ .otherdocs/hledger-api.info view
@@ -0,0 +1,70 @@+This is hledger-api.info, produced by makeinfo version 6.5 from stdin.+++File: hledger-api.info,  Node: Top,  Next: OPTIONS,  Up: (dir)++hledger-api(1) hledger-api 1.5+******************************++hledger-api is a simple web API server, intended to support client-side+web apps operating on hledger data.  It comes with a series of simple+client-side app examples, which drive its evolution.++   Like hledger, it reads data from one or more files in hledger+journal, timeclock, timedot, or CSV format specified with '-f', or+'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps+'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),+hledger_journal(5) etc.++   The server listens on IP address 127.0.0.1, accessible only to local+requests, by default.  You can change this with '--host', eg '--host+0.0.0.0' to listen on all addresses.  Note there is no other access+control, so you will need to hide hledger-api behind an authenticating+proxy if you want to restrict access.  You can change the TCP port+(default: 8001) with '-p PORT'.++   If invoked as 'hledger-api --swagger', instead of starting a server+the API docs will be printed in Swagger 2.0 format.+* Menu:++* OPTIONS::+++File: hledger-api.info,  Node: OPTIONS,  Prev: Top,  Up: Top++1 OPTIONS+*********++Note: if invoking hledger-api as a hledger subcommand, write '--' before+options as shown above.++'-f --file=FILE'++     use a different input file.  For stdin, use - (default:+     '$LEDGER_FILE' or '$HOME/.hledger.journal')+'-d --static-dir=DIR'++     serve files from a different directory (default: '.')+'--host=IPADDR'++     listen on this IP address (default: 127.0.0.1)+'-p --port=PORT'++     listen on this TCP port (default: 8001)+'--swagger'++     print API docs in Swagger 2.0 format, and exit+'--version'++     show version+'-h --help'++     show usage+++Tag Table:+Node: Top72+Node: OPTIONS1216+Ref: #options1301++End Tag Table
+ .otherdocs/hledger-api.txt view
@@ -0,0 +1,105 @@++hledger-api(1)               hledger User Manuals               hledger-api(1)++++NAME+       hledger-api - web API server for the hledger accounting tool++SYNOPSIS+       hledger-api [OPTIONS]+       hledger api -- [OPTIONS]++DESCRIPTION+       hledger  is  a  cross-platform program for tracking money, time, or any+       other commodity, using double-entry accounting and a  simple,  editable+       file  format.   hledger  is  inspired  by  and  largely compatible with+       ledger(1).++       hledger-api is a simple web API server, intended to support client-side+       web  apps  operating on hledger data.  It comes with a series of simple+       client-side app examples, which drive its evolution.++       Like hledger, it reads data from one or more files in hledger  journal,+       timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,+       or       $HOME/.hledger.journal       (on       windows,        perhaps+       C:/Users/USER/.hledger.journal).   For  more about this see hledger(1),+       hledger_journal(5) etc.++       The server listens on IP address 127.0.0.1, accessible  only  to  local+       requests,   by   default.    You   can  change  this  with  --host,  eg+       --host 0.0.0.0 to listen on all addresses.   Note  there  is  no  other+       access  control, so you will need to hide hledger-api behind an authen-+       ticating proxy if you want to restrict access.  You can change the  TCP+       port (default: 8001) with -p PORT.++       If  invoked  as hledger-api --swagger, instead of starting a server the+       API docs will be printed in Swagger 2.0 format.++OPTIONS+       Note: if invoking hledger-api as a hledger subcommand, write --  before+       options as shown above.++       -f --file=FILE+              use  a  different  input  file.   For  stdin,  use  -  (default:+              $LEDGER_FILE or $HOME/.hledger.journal)++       -d --static-dir=DIR+              serve files from a different directory (default: .)++       --host=IPADDR+              listen on this IP address (default: 127.0.0.1)++       -p --port=PORT+              listen on this TCP port (default: 8001)++       --swagger+              print API docs in Swagger 2.0 format, and exit++       --version+              show version++       -h --help+              show usage++ENVIRONMENT+       LEDGER_FILE The journal file path when not specified with -f.  Default:+       ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour-+       nal).++FILES+       Reads data from one or more files in hledger journal, timeclock,  time-+       dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or+       $HOME/.hledger.journal          (on          windows,           perhaps+       C:/Users/USER/.hledger.journal).++BUGS+       The  need  to precede options with -- when invoked from hledger is awk-+       ward.++++REPORTING BUGS+       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger-api 1.5                  December 2017                  hledger-api(1)
+ .otherdocs/hledger-ui.1 view
@@ -0,0 +1,485 @@++.TH "hledger\-ui" "1" "December 2017" "hledger\-ui 1.5" "hledger User Manuals"++++.SH NAME+.PP+hledger\-ui \- curses\-style interface for the hledger accounting tool+.SH SYNOPSIS+.PP+\f[C]hledger\-ui\ [OPTIONS]\ [QUERYARGS]\f[]+.PD 0+.P+.PD+\f[C]hledger\ ui\ \-\-\ [OPTIONS]\ [QUERYARGS]\f[]+.SH DESCRIPTION+.PP+hledger is a cross\-platform program for tracking money, time, or any+other commodity, using double\-entry accounting and a simple, editable+file format.+hledger is inspired by and largely compatible with ledger(1).+.PP+hledger\-ui is hledger's curses\-style interface, providing an efficient+full\-window text UI for viewing accounts and transactions, and some+limited data entry capability.+It is easier than hledger's command\-line interface, and sometimes+quicker and more convenient than the web interface.+.PP+Like hledger, it reads data from one or more files in hledger journal,+timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+For more about this see hledger(1), hledger_journal(5) etc.+.SH OPTIONS+.PP+Note: if invoking hledger\-ui as a hledger subcommand, write+\f[C]\-\-\f[] before options as shown above.+.PP+Any QUERYARGS are interpreted as a hledger search query which filters+the data.+.TP+.B \f[C]\-\-watch\f[]+watch for data and date changes and reload automatically+.RS+.RE+.TP+.B \f[C]\-\-theme=default|terminal|greenterm\f[]+use this custom display theme+.RS+.RE+.TP+.B \f[C]\-\-register=ACCTREGEX\f[]+start in the (first) matched account's register screen+.RS+.RE+.TP+.B \f[C]\-\-change\f[]+show period balances (changes) at startup instead of historical balances+.RS+.RE+.TP+.B \f[C]\-\-flat\f[]+show full account names, unindented+.RS+.RE+.PP+hledger input options:+.TP+.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]+use a different input file.+For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or+\f[C]$HOME/.hledger.journal\f[])+.RS+.RE+.TP+.B \f[C]\-\-rules\-file=RULESFILE\f[]+Conversion rules file to use when reading CSV (default: FILE.rules)+.RS+.RE+.TP+.B \f[C]\-\-alias=OLD=NEW\f[]+rename accounts named OLD to NEW+.RS+.RE+.TP+.B \f[C]\-\-anon\f[]+anonymize accounts and payees+.RS+.RE+.TP+.B \f[C]\-\-pivot\ FIELDNAME\f[]+use some other field or tag for the account name+.RS+.RE+.TP+.B \f[C]\-I\ \-\-ignore\-assertions\f[]+ignore any failing balance assertions+.RS+.RE+.PP+hledger reporting options:+.TP+.B \f[C]\-b\ \-\-begin=DATE\f[]+include postings/txns on or after this date+.RS+.RE+.TP+.B \f[C]\-e\ \-\-end=DATE\f[]+include postings/txns before this date+.RS+.RE+.TP+.B \f[C]\-D\ \-\-daily\f[]+multiperiod/multicolumn report by day+.RS+.RE+.TP+.B \f[C]\-W\ \-\-weekly\f[]+multiperiod/multicolumn report by week+.RS+.RE+.TP+.B \f[C]\-M\ \-\-monthly\f[]+multiperiod/multicolumn report by month+.RS+.RE+.TP+.B \f[C]\-Q\ \-\-quarterly\f[]+multiperiod/multicolumn report by quarter+.RS+.RE+.TP+.B \f[C]\-Y\ \-\-yearly\f[]+multiperiod/multicolumn report by year+.RS+.RE+.TP+.B \f[C]\-p\ \-\-period=PERIODEXP\f[]+set start date, end date, and/or reporting interval all at once using+period expressions syntax (overrides the flags above)+.RS+.RE+.TP+.B \f[C]\-\-date2\f[]+match the secondary date instead (see command help for other effects)+.RS+.RE+.TP+.B \f[C]\-U\ \-\-unmarked\f[]+include only unmarked postings/txns (can combine with \-P or \-C)+.RS+.RE+.TP+.B \f[C]\-P\ \-\-pending\f[]+include only pending postings/txns+.RS+.RE+.TP+.B \f[C]\-C\ \-\-cleared\f[]+include only cleared postings/txns+.RS+.RE+.TP+.B \f[C]\-R\ \-\-real\f[]+include only non\-virtual postings+.RS+.RE+.TP+.B \f[C]\-NUM\ \-\-depth=NUM\f[]+hide/aggregate accounts or postings more than NUM levels deep+.RS+.RE+.TP+.B \f[C]\-E\ \-\-empty\f[]+show items with zero amount, normally hidden+.RS+.RE+.TP+.B \f[C]\-B\ \-\-cost\f[]+convert amounts to their cost at transaction time (using the transaction+price, if any)+.RS+.RE+.TP+.B \f[C]\-V\ \-\-value\f[]+convert amounts to their market value on the report end date (using the+most recent applicable market price, if any)+.RS+.RE+.TP+.B \f[C]\-\-auto\f[]+apply automated posting rules to modify transactions.+.RS+.RE+.TP+.B \f[C]\-\-forecast\f[]+apply periodic transaction rules to generate future transactions, to 6+months from now or report end date.+.RS+.RE+.PP+When a reporting option appears more than once in the command line, the+last one takes precedence.+.PP+Some reporting options can also be written as query arguments.+.PP+hledger help options:+.TP+.B \f[C]\-h\ \-\-help\f[]+show general usage (or after COMMAND, command usage)+.RS+.RE+.TP+.B \f[C]\-\-version\f[]+show version+.RS+.RE+.TP+.B \f[C]\-\-debug[=N]\f[]+show debug output (levels 1\-9, default: 1)+.RS+.RE+.PP+A \@FILE argument will be expanded to the contents of FILE, which should+contain one command line option/argument per line.+(To prevent this, insert a \f[C]\-\-\f[] argument before.)+.SH KEYS+.PP+\f[C]?\f[] shows a help dialog listing all keys.+(Some of these also appear in the quick help at the bottom of each+screen.) Press \f[C]?\f[] again (or \f[C]ESCAPE\f[], or \f[C]LEFT\f[])+to close it.+The following keys work on most screens:+.PP+The cursor keys navigate: \f[C]right\f[] (or \f[C]enter\f[]) goes+deeper, \f[C]left\f[] returns to the previous screen,+\f[C]up\f[]/\f[C]down\f[]/\f[C]page\ up\f[]/\f[C]page\ down\f[]/\f[C]home\f[]/\f[C]end\f[]+move up and down through lists.+Vi\-style (\f[C]h\f[]/\f[C]j\f[]/\f[C]k\f[]/\f[C]l\f[]) and Emacs\-style+(\f[C]CTRL\-p\f[]/\f[C]CTRL\-n\f[]/\f[C]CTRL\-f\f[]/\f[C]CTRL\-b\f[])+movement keys are also supported.+A tip: movement speed is limited by your keyboard repeat rate, to move+faster you may want to adjust it.+(If you're on a mac, the Karabiner app is one way to do that.)+.PP+With shift pressed, the cursor keys adjust the report period, limiting+the transactions to be shown (by default, all are shown).+\f[C]shift\-down/up\f[] steps downward and upward through these standard+report period durations: year, quarter, month, week, day.+Then, \f[C]shift\-left/right\f[] moves to the previous/next period.+\f[C]t\f[] sets the report period to today.+With the \f[C]\-\-watch\f[] option, when viewing a \[lq]current\[rq]+period (the current day, week, month, quarter, or year), the period will+move automatically to track the current date.+To set a non\-standard period, you can use \f[C]/\f[] and a+\f[C]date:\f[] query.+.PP+\f[C]/\f[] lets you set a general filter query limiting the data shown,+using the same query terms as in hledger and hledger\-web.+While editing the query, you can use CTRL\-a/e/d/k, BS, cursor keys;+press \f[C]ENTER\f[] to set it, or \f[C]ESCAPE\f[]to cancel.+There are also keys for quickly adjusting some common filters like+account depth and transaction status (see below).+\f[C]BACKSPACE\f[] or \f[C]DELETE\f[] removes all filters, showing all+transactions.+.PP+\f[C]ESCAPE\f[] removes all filters and jumps back to the top screen.+Or, it cancels a minibuffer edit or help dialog in progress.+.PP+\f[C]CTRL\-l\f[] redraws the screen and centers the selection if+possible (selections near the top won't be centered, since we don't+scroll above the top).+.PP+\f[C]g\f[] reloads from the data file(s) and updates the current screen+and any previous screens.+(With large files, this could cause a noticeable pause.)+.PP+\f[C]I\f[] toggles balance assertion checking.+Disabling balance assertions temporarily can be useful for+troubleshooting.+.PP+\f[C]a\f[] runs command\-line hledger's add command, and reloads the+updated file.+This allows some basic data entry.+.PP+\f[C]A\f[] is like \f[C]a\f[], but runs the hledger\-iadd tool, which+provides a curses\-style interface.+This key will be available if \f[C]hledger\-iadd\f[] is installed in+$PATH.+.PP+\f[C]E\f[] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default+(\f[C]emacsclient\ \-a\ ""\ \-nw\f[]) on the journal file.+With some editors (emacs, vi), the cursor will be positioned at the+current transaction when invoked from the register and transaction+screens, and at the error location (if possible) when invoked from the+error screen.+.PP+\f[C]q\f[] quits the application.+.PP+Additional screen\-specific keys are described below.+.SH SCREENS+.SS Accounts screen+.PP+This is normally the first screen displayed.+It lists accounts and their balances, like hledger's balance command.+By default, it shows all accounts and their latest ending balances+(including the balances of subaccounts).+if you specify a query on the command line, it shows just the matched+accounts and the balances from matched transactions.+.PP+Account names are normally indented to show the hierarchy (tree mode).+To see less detail, set a depth limit by pressing a number key,+\f[C]1\f[] to \f[C]9\f[].+\f[C]0\f[] shows even less detail, collapsing all accounts to a single+total.+\f[C]\-\f[] and \f[C]+\f[] (or \f[C]=\f[]) decrease and increase the+depth limit.+To remove the depth limit, set it higher than the maximum account depth,+or press \f[C]ESCAPE\f[].+.PP+\f[C]F\f[] toggles flat mode, in which accounts are shown as a flat+list, with their full names.+In this mode, account balances exclude subaccounts, except for accounts+at the depth limit (as with hledger's balance command).+.PP+\f[C]H\f[] toggles between showing historical balances or period+balances.+Historical balances (the default) are ending balances at the end of the+report period, taking into account all transactions before that date+(filtered by the filter query if any), including transactions before the+start of the report period.+In other words, historical balances are what you would see on a bank+statement for that account (unless disturbed by a filter query).+Period balances ignore transactions before the report start date, so+they show the change in balance during the report period.+They are more useful eg when viewing a time log.+.PP+\f[C]U\f[] toggles filtering by unmarked status, including or excluding+unmarked postings in the balances.+Similarly, \f[C]P\f[] toggles pending postings, and \f[C]C\f[] toggles+cleared postings.+(By default, balances include all postings; if you activate one or two+status filters, only those postings are included; and if you activate+all three, the filter is removed.)+.PP+\f[C]R\f[] toggles real mode, in which virtual postings are ignored.+.PP+\f[C]Z\f[] toggles nonzero mode, in which only accounts with nonzero+balances are shown (hledger\-ui shows zero items by default, unlike+command\-line hledger).+.PP+Press \f[C]right\f[] or \f[C]enter\f[] to view an account's transactions+register.+.SS Register screen+.PP+This screen shows the transactions affecting a particular account, like+a check register.+Each line represents one transaction and shows:+.IP \[bu] 2+the other account(s) involved, in abbreviated form.+(If there are both real and virtual postings, it shows only the accounts+affected by real postings.)+.IP \[bu] 2+the overall change to the current account's balance; positive for an+inflow to this account, negative for an outflow.+.IP \[bu] 2+the running historical total or period total for the current account,+after the transaction.+This can be toggled with \f[C]H\f[].+Similar to the accounts screen, the historical total is affected by+transactions (filtered by the filter query) before the report start+date, while the period total is not.+If the historical total is not disturbed by a filter query, it will be+the running historical balance you would see on a bank register for the+current account.+.PP+If the accounts screen was in tree mode, the register screen will+include transactions from both the current account and its subaccounts.+If the accounts screen was in flat mode, and a non\-depth\-clipped+account was selected, the register screen will exclude transactions from+subaccounts.+In other words, the register always shows the transactions responsible+for the period balance shown on the accounts screen.+As on the accounts screen, this can be toggled with \f[C]F\f[].+.PP+\f[C]U\f[] toggles filtering by unmarked status, showing or hiding+unmarked transactions.+Similarly, \f[C]P\f[] toggles pending transactions, and \f[C]C\f[]+toggles cleared transactions.+(By default, transactions with all statuses are shown; if you activate+one or two status filters, only those transactions are shown; and if you+activate all three, the filter is removed.)q+.PP+\f[C]R\f[] toggles real mode, in which virtual postings are ignored.+.PP+\f[C]Z\f[] toggles nonzero mode, in which only transactions posting a+nonzero change are shown (hledger\-ui shows zero items by default,+unlike command\-line hledger).+.PP+Press \f[C]right\f[] (or \f[C]enter\f[]) to view the selected+transaction in detail.+.SS Transaction screen+.PP+This screen shows a single transaction, as a general journal entry,+similar to hledger's print command and journal format+(hledger_journal(5)).+.PP+The transaction's date(s) and any cleared flag, transaction code,+description, comments, along with all of its account postings are shown.+Simple transactions have two postings, but there can be more (or in+certain cases, fewer).+.PP+\f[C]up\f[] and \f[C]down\f[] will step through all transactions listed+in the previous account register screen.+In the title bar, the numbers in parentheses show your position within+that account register.+They will vary depending on which account register you came from+(remember most transactions appear in multiple account registers).+The #N number preceding them is the transaction's position within the+complete unfiltered journal, which is a more stable id (at least until+the next reload).+.SS Error screen+.PP+This screen will appear if there is a problem, such as a parse error,+when you press g to reload.+Once you have fixed the problem, press g again to reload and resume+normal operation.+(Or, you can press escape to cancel the reload attempt.)+.SH ENVIRONMENT+.PP+\f[B]COLUMNS\f[] The screen width to use.+Default: the full terminal width.+.PP+\f[B]LEDGER_FILE\f[] The journal file path when not specified with+\f[C]\-f\f[].+Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps+\f[C]C:/Users/USER/.hledger.journal\f[]).+.SH FILES+.PP+Reads data from one or more files in hledger journal, timeclock,+timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+.SH BUGS+.PP+The need to precede options with \f[C]\-\-\f[] when invoked from hledger+is awkward.+.PP+\f[C]\-f\-\f[] doesn't work (hledger\-ui can't read from stdin).+.PP+\f[C]\-V\f[] affects only the accounts screen.+.PP+When you press \f[C]g\f[], the current and all previous screens are+regenerated, which may cause a noticeable pause with large files.+Also there is no visual indication that this is in progress.+.PP+\f[C]\-\-watch\f[] is not yet fully robust.+It works well for normal usage, but many file changes in a short time+(eg saving the file thousands of times with an editor macro) can cause+problems at least on OSX.+Symptoms include: unresponsive UI, periodic resetting of the cursor+position, momentary display of parse errors, high CPU usage eventually+subsiding, and possibly a small but persistent build\-up of CPU usage+until the program is restarted.+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
+ .otherdocs/hledger-ui.info view
@@ -0,0 +1,394 @@+This is hledger-ui.info, produced by makeinfo version 6.5 from stdin.+++File: hledger-ui.info,  Node: Top,  Next: OPTIONS,  Up: (dir)++hledger-ui(1) hledger-ui 1.5+****************************++hledger-ui is hledger's curses-style interface, providing an efficient+full-window text UI for viewing accounts and transactions, and some+limited data entry capability.  It is easier than hledger's command-line+interface, and sometimes quicker and more convenient than the web+interface.++   Like hledger, it reads data from one or more files in hledger+journal, timeclock, timedot, or CSV format specified with '-f', or+'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps+'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),+hledger_journal(5) etc.+* Menu:++* OPTIONS::+* KEYS::+* SCREENS::+++File: hledger-ui.info,  Node: OPTIONS,  Next: KEYS,  Prev: Top,  Up: Top++1 OPTIONS+*********++Note: if invoking hledger-ui as a hledger subcommand, write '--' before+options as shown above.++   Any QUERYARGS are interpreted as a hledger search query which filters+the data.++'--watch'++     watch for data and date changes and reload automatically+'--theme=default|terminal|greenterm'++     use this custom display theme+'--register=ACCTREGEX'++     start in the (first) matched account's register screen+'--change'++     show period balances (changes) at startup instead of historical+     balances+'--flat'++     show full account names, unindented++   hledger input options:++'-f FILE --file=FILE'++     use a different input file.  For stdin, use - (default:+     '$LEDGER_FILE' or '$HOME/.hledger.journal')+'--rules-file=RULESFILE'++     Conversion rules file to use when reading CSV (default: FILE.rules)+'--alias=OLD=NEW'++     rename accounts named OLD to NEW+'--anon'++     anonymize accounts and payees+'--pivot FIELDNAME'++     use some other field or tag for the account name+'-I --ignore-assertions'++     ignore any failing balance assertions++   hledger reporting options:++'-b --begin=DATE'++     include postings/txns on or after this date+'-e --end=DATE'++     include postings/txns before this date+'-D --daily'++     multiperiod/multicolumn report by day+'-W --weekly'++     multiperiod/multicolumn report by week+'-M --monthly'++     multiperiod/multicolumn report by month+'-Q --quarterly'++     multiperiod/multicolumn report by quarter+'-Y --yearly'++     multiperiod/multicolumn report by year+'-p --period=PERIODEXP'++     set start date, end date, and/or reporting interval all at once+     using period expressions syntax (overrides the flags above)+'--date2'++     match the secondary date instead (see command help for other+     effects)+'-U --unmarked'++     include only unmarked postings/txns (can combine with -P or -C)+'-P --pending'++     include only pending postings/txns+'-C --cleared'++     include only cleared postings/txns+'-R --real'++     include only non-virtual postings+'-NUM --depth=NUM'++     hide/aggregate accounts or postings more than NUM levels deep+'-E --empty'++     show items with zero amount, normally hidden+'-B --cost'++     convert amounts to their cost at transaction time (using the+     transaction price, if any)+'-V --value'++     convert amounts to their market value on the report end date (using+     the most recent applicable market price, if any)+'--auto'++     apply automated posting rules to modify transactions.+'--forecast'++     apply periodic transaction rules to generate future transactions,+     to 6 months from now or report end date.++   When a reporting option appears more than once in the command line,+the last one takes precedence.++   Some reporting options can also be written as query arguments.++   hledger help options:++'-h --help'++     show general usage (or after COMMAND, command usage)+'--version'++     show version+'--debug[=N]'++     show debug output (levels 1-9, default: 1)++   A @FILE argument will be expanded to the contents of FILE, which+should contain one command line option/argument per line.  (To prevent+this, insert a '--' argument before.)+++File: hledger-ui.info,  Node: KEYS,  Next: SCREENS,  Prev: OPTIONS,  Up: Top++2 KEYS+******++'?' shows a help dialog listing all keys.  (Some of these also appear in+the quick help at the bottom of each screen.)  Press '?' again (or+'ESCAPE', or 'LEFT') to close it.  The following keys work on most+screens:++   The cursor keys navigate: 'right' (or 'enter') goes deeper, 'left'+returns to the previous screen, 'up'/'down'/'page up'/'page+down'/'home'/'end' move up and down through lists.  Vi-style+('h'/'j'/'k'/'l') and Emacs-style ('CTRL-p'/'CTRL-n'/'CTRL-f'/'CTRL-b')+movement keys are also supported.  A tip: movement speed is limited by+your keyboard repeat rate, to move faster you may want to adjust it.+(If you're on a mac, the Karabiner app is one way to do that.)++   With shift pressed, the cursor keys adjust the report period,+limiting the transactions to be shown (by default, all are shown).+'shift-down/up' steps downward and upward through these standard report+period durations: year, quarter, month, week, day.  Then,+'shift-left/right' moves to the previous/next period.  't' sets the+report period to today.  With the '--watch' option, when viewing a+"current" period (the current day, week, month, quarter, or year), the+period will move automatically to track the current date.  To set a+non-standard period, you can use '/' and a 'date:' query.++   '/' lets you set a general filter query limiting the data shown,+using the same query terms as in hledger and hledger-web.  While editing+the query, you can use CTRL-a/e/d/k, BS, cursor keys; press 'ENTER' to+set it, or 'ESCAPE'to cancel.  There are also keys for quickly adjusting+some common filters like account depth and transaction status (see+below).  'BACKSPACE' or 'DELETE' removes all filters, showing all+transactions.++   'ESCAPE' removes all filters and jumps back to the top screen.  Or,+it cancels a minibuffer edit or help dialog in progress.++   'CTRL-l' redraws the screen and centers the selection if possible+(selections near the top won't be centered, since we don't scroll above+the top).++   'g' reloads from the data file(s) and updates the current screen and+any previous screens.  (With large files, this could cause a noticeable+pause.)++   'I' toggles balance assertion checking.  Disabling balance assertions+temporarily can be useful for troubleshooting.++   'a' runs command-line hledger's add command, and reloads the updated+file.  This allows some basic data entry.++   'A' is like 'a', but runs the hledger-iadd tool, which provides a+curses-style interface.  This key will be available if 'hledger-iadd' is+installed in $PATH.++   'E' runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default ('emacsclient+-a "" -nw') on the journal file.  With some editors (emacs, vi), the+cursor will be positioned at the current transaction when invoked from+the register and transaction screens, and at the error location (if+possible) when invoked from the error screen.++   'q' quits the application.++   Additional screen-specific keys are described below.+++File: hledger-ui.info,  Node: SCREENS,  Prev: KEYS,  Up: Top++3 SCREENS+*********++* Menu:++* Accounts screen::+* Register screen::+* Transaction screen::+* Error screen::+++File: hledger-ui.info,  Node: Accounts screen,  Next: Register screen,  Up: SCREENS++3.1 Accounts screen+===================++This is normally the first screen displayed.  It lists accounts and+their balances, like hledger's balance command.  By default, it shows+all accounts and their latest ending balances (including the balances of+subaccounts).  if you specify a query on the command line, it shows just+the matched accounts and the balances from matched transactions.++   Account names are normally indented to show the hierarchy (tree+mode).  To see less detail, set a depth limit by pressing a number key,+'1' to '9'.  '0' shows even less detail, collapsing all accounts to a+single total.  '-' and '+' (or '=') decrease and increase the depth+limit.  To remove the depth limit, set it higher than the maximum+account depth, or press 'ESCAPE'.++   'F' toggles flat mode, in which accounts are shown as a flat list,+with their full names.  In this mode, account balances exclude+subaccounts, except for accounts at the depth limit (as with hledger's+balance command).++   'H' toggles between showing historical balances or period balances.+Historical balances (the default) are ending balances at the end of the+report period, taking into account all transactions before that date+(filtered by the filter query if any), including transactions before the+start of the report period.  In other words, historical balances are+what you would see on a bank statement for that account (unless+disturbed by a filter query).  Period balances ignore transactions+before the report start date, so they show the change in balance during+the report period.  They are more useful eg when viewing a time log.++   'U' toggles filtering by unmarked status, including or excluding+unmarked postings in the balances.  Similarly, 'P' toggles pending+postings, and 'C' toggles cleared postings.  (By default, balances+include all postings; if you activate one or two status filters, only+those postings are included; and if you activate all three, the filter+is removed.)++   'R' toggles real mode, in which virtual postings are ignored.++   'Z' toggles nonzero mode, in which only accounts with nonzero+balances are shown (hledger-ui shows zero items by default, unlike+command-line hledger).++   Press 'right' or 'enter' to view an account's transactions register.+++File: hledger-ui.info,  Node: Register screen,  Next: Transaction screen,  Prev: Accounts screen,  Up: SCREENS++3.2 Register screen+===================++This screen shows the transactions affecting a particular account, like+a check register.  Each line represents one transaction and shows:++   * the other account(s) involved, in abbreviated form.  (If there are+     both real and virtual postings, it shows only the accounts affected+     by real postings.)++   * the overall change to the current account's balance; positive for+     an inflow to this account, negative for an outflow.++   * the running historical total or period total for the current+     account, after the transaction.  This can be toggled with 'H'.+     Similar to the accounts screen, the historical total is affected by+     transactions (filtered by the filter query) before the report start+     date, while the period total is not.  If the historical total is+     not disturbed by a filter query, it will be the running historical+     balance you would see on a bank register for the current account.++   If the accounts screen was in tree mode, the register screen will+include transactions from both the current account and its subaccounts.+If the accounts screen was in flat mode, and a non-depth-clipped account+was selected, the register screen will exclude transactions from+subaccounts.  In other words, the register always shows the transactions+responsible for the period balance shown on the accounts screen.  As on+the accounts screen, this can be toggled with 'F'.++   'U' toggles filtering by unmarked status, showing or hiding unmarked+transactions.  Similarly, 'P' toggles pending transactions, and 'C'+toggles cleared transactions.  (By default, transactions with all+statuses are shown; if you activate one or two status filters, only+those transactions are shown; and if you activate all three, the filter+is removed.)q++   'R' toggles real mode, in which virtual postings are ignored.++   'Z' toggles nonzero mode, in which only transactions posting a+nonzero change are shown (hledger-ui shows zero items by default, unlike+command-line hledger).++   Press 'right' (or 'enter') to view the selected transaction in+detail.+++File: hledger-ui.info,  Node: Transaction screen,  Next: Error screen,  Prev: Register screen,  Up: SCREENS++3.3 Transaction screen+======================++This screen shows a single transaction, as a general journal entry,+similar to hledger's print command and journal format+(hledger_journal(5)).++   The transaction's date(s) and any cleared flag, transaction code,+description, comments, along with all of its account postings are shown.+Simple transactions have two postings, but there can be more (or in+certain cases, fewer).++   'up' and 'down' will step through all transactions listed in the+previous account register screen.  In the title bar, the numbers in+parentheses show your position within that account register.  They will+vary depending on which account register you came from (remember most+transactions appear in multiple account registers).  The #N number+preceding them is the transaction's position within the complete+unfiltered journal, which is a more stable id (at least until the next+reload).+++File: hledger-ui.info,  Node: Error screen,  Prev: Transaction screen,  Up: SCREENS++3.4 Error screen+================++This screen will appear if there is a problem, such as a parse error,+when you press g to reload.  Once you have fixed the problem, press g+again to reload and resume normal operation.  (Or, you can press escape+to cancel the reload attempt.)+++Tag Table:+Node: Top71+Node: OPTIONS821+Ref: #options918+Node: KEYS4087+Ref: #keys4182+Node: SCREENS7141+Ref: #screens7226+Node: Accounts screen7316+Ref: #accounts-screen7444+Node: Register screen9674+Ref: #register-screen9829+Node: Transaction screen11903+Ref: #transaction-screen12061+Node: Error screen12931+Ref: #error-screen13053++End Tag Table
+ .otherdocs/hledger-ui.txt view
@@ -0,0 +1,386 @@++hledger-ui(1)                hledger User Manuals                hledger-ui(1)++++NAME+       hledger-ui - curses-style interface for the hledger accounting tool++SYNOPSIS+       hledger-ui [OPTIONS] [QUERYARGS]+       hledger ui -- [OPTIONS] [QUERYARGS]++DESCRIPTION+       hledger  is  a  cross-platform program for tracking money, time, or any+       other commodity, using double-entry accounting and a  simple,  editable+       file  format.   hledger  is  inspired  by  and  largely compatible with+       ledger(1).++       hledger-ui is hledger's curses-style interface, providing an  efficient+       full-window  text  UI  for  viewing accounts and transactions, and some+       limited data entry  capability.   It  is  easier  than  hledger's  com-+       mand-line interface, and sometimes quicker and more convenient than the+       web interface.++       Like hledger, it reads data from one or more files in hledger  journal,+       timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,+       or       $HOME/.hledger.journal       (on       windows,        perhaps+       C:/Users/USER/.hledger.journal).   For  more about this see hledger(1),+       hledger_journal(5) etc.++OPTIONS+       Note: if invoking hledger-ui as a hledger subcommand, write  --  before+       options as shown above.++       Any  QUERYARGS  are interpreted as a hledger search query which filters+       the data.++       --watch+              watch for data and date changes and reload automatically++       --theme=default|terminal|greenterm+              use this custom display theme++       --register=ACCTREGEX+              start in the (first) matched account's register screen++       --change+              show period balances (changes) at startup instead of  historical+              balances++       --flat show full account names, unindented++       hledger input options:++       -f FILE --file=FILE+              use  a  different  input  file.   For  stdin,  use  -  (default:+              $LEDGER_FILE or $HOME/.hledger.journal)++       --rules-file=RULESFILE+              Conversion  rules  file  to  use  when  reading  CSV   (default:+              FILE.rules)++       --alias=OLD=NEW+              rename accounts named OLD to NEW++       --anon anonymize accounts and payees++       --pivot FIELDNAME+              use some other field or tag for the account name++       -I --ignore-assertions+              ignore any failing balance assertions++       hledger reporting options:++       -b --begin=DATE+              include postings/txns on or after this date++       -e --end=DATE+              include postings/txns before this date++       -D --daily+              multiperiod/multicolumn report by day++       -W --weekly+              multiperiod/multicolumn report by week++       -M --monthly+              multiperiod/multicolumn report by month++       -Q --quarterly+              multiperiod/multicolumn report by quarter++       -Y --yearly+              multiperiod/multicolumn report by year++       -p --period=PERIODEXP+              set  start date, end date, and/or reporting interval all at once+              using period expressions syntax (overrides the flags above)++       --date2+              match the secondary date instead (see  command  help  for  other+              effects)++       -U --unmarked+              include only unmarked postings/txns (can combine with -P or -C)++       -P --pending+              include only pending postings/txns++       -C --cleared+              include only cleared postings/txns++       -R --real+              include only non-virtual postings++       -NUM --depth=NUM+              hide/aggregate accounts or postings more than NUM levels deep++       -E --empty+              show items with zero amount, normally hidden++       -B --cost+              convert  amounts  to  their  cost at transaction time (using the+              transaction price, if any)++       -V --value+              convert amounts to their market value on  the  report  end  date+              (using the most recent applicable market price, if any)++       --auto apply automated posting rules to modify transactions.++       --forecast+              apply  periodic  transaction  rules  to generate future transac-+              tions, to 6 months from now or report end date.++       When a reporting option appears more than once in the command line, the+       last one takes precedence.++       Some reporting options can also be written as query arguments.++       hledger help options:++       -h --help+              show general usage (or after COMMAND, command usage)++       --version+              show version++       --debug[=N]+              show debug output (levels 1-9, default: 1)++       A @FILE argument will be expanded to the contents of FILE, which should+       contain one command line option/argument per line.  (To  prevent  this,+       insert a -- argument before.)++KEYS+       ?  shows a help dialog listing all keys.  (Some of these also appear in+       the quick help at the bottom of each screen.) Press ? again (or ESCAPE,+       or LEFT) to close it.  The following keys work on most screens:++       The cursor keys navigate: right (or enter) goes deeper, left returns to+       the previous screen,  up/down/page up/page down/home/end  move  up  and+       down    through    lists.     Vi-style    (h/j/k/l)   and   Emacs-style+       (CTRL-p/CTRL-n/CTRL-f/CTRL-b) movement keys are also supported.  A tip:+       movement  speed is limited by your keyboard repeat rate, to move faster+       you may want to adjust it.  (If you're on a mac, the Karabiner  app  is+       one way to do that.)++       With  shift pressed, the cursor keys adjust the report period, limiting+       the  transactions  to  be  shown   (by   default,   all   are   shown).+       shift-down/up  steps  downward and upward through these standard report+       period   durations:   year,   quarter,   month,   week,   day.    Then,+       shift-left/right  moves to the previous/next period.  t sets the report+       period to today.  With the --watch option,  when  viewing  a  "current"+       period  (the  current  day,  week, month, quarter, or year), the period+       will move automatically to track the current date.  To set a  non-stan-+       dard period, you can use / and a date: query.++       /  lets  you  set a general filter query limiting the data shown, using+       the same query terms as in hledger and hledger-web.  While editing  the+       query,  you  can  use CTRL-a/e/d/k, BS, cursor keys; press ENTER to set+       it, or ESCAPEto cancel.  There are also keys for quickly adjusting some+       common  filters  like account depth and transaction status (see below).+       BACKSPACE or DELETE removes all filters, showing all transactions.++       ESCAPE removes all filters and jumps back to the top  screen.   Or,  it+       cancels a minibuffer edit or help dialog in progress.++       CTRL-l redraws the screen and centers the selection if possible (selec-+       tions near the top won't be centered, since we don't scroll  above  the+       top).++       g  reloads from the data file(s) and updates the current screen and any+       previous screens.  (With large files, this  could  cause  a  noticeable+       pause.)++       I  toggles  balance  assertion  checking.  Disabling balance assertions+       temporarily can be useful for troubleshooting.++       a runs command-line hledger's add  command,  and  reloads  the  updated+       file.  This allows some basic data entry.++       A  is  like  a,  but  runs  the  hledger-iadd  tool,  which  provides a+       curses-style interface.  This key will be available if hledger-iadd  is+       installed in $PATH.++       E   runs   $HLEDGER_UI_EDITOR,   or   $EDITOR,   or  a  default  (emac-+       sclient -a "" -nw) on the journal file.  With some editors (emacs, vi),+       the  cursor  will be positioned at the current transaction when invoked+       from the register and transaction screens, and at  the  error  location+       (if possible) when invoked from the error screen.++       q quits the application.++       Additional screen-specific keys are described below.++SCREENS+   Accounts screen+       This  is  normally  the  first screen displayed.  It lists accounts and+       their balances, like hledger's balance command.  By default,  it  shows+       all  accounts  and their latest ending balances (including the balances+       of subaccounts).  if you specify a query on the command line, it  shows+       just the matched accounts and the balances from matched transactions.++       Account  names are normally indented to show the hierarchy (tree mode).+       To see less detail, set a depth limit by pressing a number key, 1 to 9.+       0 shows even less detail, collapsing all accounts to a single total.  -+       and + (or =) decrease and increase the  depth  limit.   To  remove  the+       depth  limit,  set  it  higher than the maximum account depth, or press+       ESCAPE.++       F toggles flat mode, in which accounts are shown as a flat  list,  with+       their  full names.  In this mode, account balances exclude subaccounts,+       except for accounts at the depth limit (as with hledger's balance  com-+       mand).++       H toggles between showing historical balances or period balances.  His-+       torical balances (the default) are ending balances at the  end  of  the+       report  period,  taking  into account all transactions before that date+       (filtered by the filter query if any),  including  transactions  before+       the  start  of  the report period.  In other words, historical balances+       are what you would see on a bank statement  for  that  account  (unless+       disturbed  by  a  filter  query).   Period balances ignore transactions+       before the report start date, so they show the change in balance during+       the report period.  They are more useful eg when viewing a time log.++       U toggles filtering by unmarked status, including or excluding unmarked+       postings in the balances.  Similarly, P toggles pending postings, and C+       toggles  cleared postings.  (By default, balances include all postings;+       if you activate one or two status  filters,  only  those  postings  are+       included; and if you activate all three, the filter is removed.)++       R toggles real mode, in which virtual postings are ignored.++       Z  toggles  nonzero  mode, in which only accounts with nonzero balances+       are shown (hledger-ui shows zero items by default, unlike  command-line+       hledger).++       Press right or enter to view an account's transactions register.++   Register screen+       This screen shows the transactions affecting a particular account, like+       a check register.  Each line represents one transaction and shows:++       o the other account(s) involved, in abbreviated form.   (If  there  are+         both  real  and virtual postings, it shows only the accounts affected+         by real postings.)++       o the overall change to the current account's balance; positive for  an+         inflow to this account, negative for an outflow.++       o the running historical total or period total for the current account,+         after the transaction.  This can be toggled with H.  Similar  to  the+         accounts  screen,  the  historical  total is affected by transactions+         (filtered by the filter query) before the report  start  date,  while+         the period total is not.  If the historical total is not disturbed by+         a filter query, it will be the running historical balance  you  would+         see on a bank register for the current account.++       If  the  accounts  screen  was  in  tree mode, the register screen will+       include transactions from both the current account and its subaccounts.+       If  the  accounts  screen  was  in  flat  mode, and a non-depth-clipped+       account was selected, the register  screen  will  exclude  transactions+       from subaccounts.  In other words, the register always shows the trans-+       actions responsible for  the  period  balance  shown  on  the  accounts+       screen.  As on the accounts screen, this can be toggled with F.++       U  toggles  filtering  by  unmarked  status, showing or hiding unmarked+       transactions.  Similarly, P toggles pending transactions, and C toggles+       cleared  transactions.  (By default, transactions with all statuses are+       shown; if you activate one or two status filters, only  those  transac-+       tions  are  shown;  and  if  you  activate  all  three,  the  filter is+       removed.)q++       R toggles real mode, in which virtual postings are ignored.++       Z toggles nonzero mode, in which only transactions  posting  a  nonzero+       change  are  shown (hledger-ui shows zero items by default, unlike com-+       mand-line hledger).++       Press right (or enter) to view the selected transaction in detail.++   Transaction screen+       This screen shows a single transaction, as  a  general  journal  entry,+       similar  to  hledger's  print command and journal format (hledger_jour-+       nal(5)).++       The transaction's date(s)  and  any  cleared  flag,  transaction  code,+       description,  comments,  along  with  all  of  its account postings are+       shown.  Simple transactions have two postings, but there  can  be  more+       (or in certain cases, fewer).++       up  and  down will step through all transactions listed in the previous+       account register screen.  In the title bar, the numbers in  parentheses+       show  your  position  within  that  account  register.   They will vary+       depending on which account register you came from (remember most trans-+       actions appear in multiple account registers).  The #N number preceding+       them is the transaction's position within the complete unfiltered jour-+       nal, which is a more stable id (at least until the next reload).++   Error screen+       This  screen  will appear if there is a problem, such as a parse error,+       when you press g to reload.  Once you have fixed the problem,  press  g+       again to reload and resume normal operation.  (Or, you can press escape+       to cancel the reload attempt.)++ENVIRONMENT+       COLUMNS The screen width to use.  Default: the full terminal width.++       LEDGER_FILE The journal file path when not specified with -f.  Default:+       ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour-+       nal).++FILES+       Reads data from one or more files in hledger journal, timeclock,  time-+       dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or+       $HOME/.hledger.journal          (on          windows,           perhaps+       C:/Users/USER/.hledger.journal).++BUGS+       The  need  to precede options with -- when invoked from hledger is awk-+       ward.++       -f- doesn't work (hledger-ui can't read from stdin).++       -V affects only the accounts screen.++       When you press g, the current and all previous screens are regenerated,+       which  may cause a noticeable pause with large files.  Also there is no+       visual indication that this is in progress.++       --watch is not yet fully robust.  It works well for normal  usage,  but+       many  file  changes  in  a  short time (eg saving the file thousands of+       times with an editor macro) can cause problems at least on OSX.   Symp-+       toms  include:  unresponsive UI, periodic resetting of the cursor posi-+       tion, momentary display of parse errors, high CPU usage eventually sub-+       siding, and possibly a small but persistent build-up of CPU usage until+       the program is restarted.++++REPORTING BUGS+       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger-ui 1.5                   December 2017                   hledger-ui(1)
+ .otherdocs/hledger-web.1 view
@@ -0,0 +1,326 @@++.TH "hledger\-web" "1" "December 2017" "hledger\-web 1.5" "hledger User Manuals"++++.SH NAME+.PP+hledger\-web \- web interface for the hledger accounting tool+.SH SYNOPSIS+.PP+\f[C]hledger\-web\ [OPTIONS]\f[]+.PD 0+.P+.PD+\f[C]hledger\ web\ \-\-\ [OPTIONS]\f[]+.SH DESCRIPTION+.PP+hledger is a cross\-platform program for tracking money, time, or any+other commodity, using double\-entry accounting and a simple, editable+file format.+hledger is inspired by and largely compatible with ledger(1).+.PP+hledger\-web is hledger's web interface.+It starts a simple web application for browsing and adding transactions,+and optionally opens it in a web browser window if possible.+It provides a more user\-friendly UI than the hledger CLI or hledger\-ui+interface, showing more at once (accounts, the current account register,+balance charts) and allowing history\-aware data entry, interactive+searching, and bookmarking.+.PP+hledger\-web also lets you share a ledger with multiple users, or even+the public web.+There is no access control, so if you need that you should put it behind+a suitable web proxy.+As a small protection against data loss when running an unprotected+instance, it writes a numbered backup of the main journal file (only ?)+on every edit.+.PP+Like hledger, it reads data from one or more files in hledger journal,+timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+For more about this see hledger(1), hledger_journal(5) etc.+.PP+By default, hledger\-web starts the web app in \[lq]transient mode\[rq]+and also opens it in your default web browser if possible.+In this mode the web app will keep running for as long as you have it+open in a browser window, and will exit after two minutes of inactivity+(no requests and no browser windows viewing it).+With \f[C]\-\-serve\f[], it just runs the web app without exiting, and+logs requests to the console.+.PP+By default the server listens on IP address 127.0.0.1, accessible only+to local requests.+You can use \f[C]\-\-host\f[] to change this, eg+\f[C]\-\-host\ 0.0.0.0\f[] to listen on all configured addresses.+.PP+Similarly, use \f[C]\-\-port\f[] to set a TCP port other than 5000, eg+if you are running multiple hledger\-web instances.+.PP+You can use \f[C]\-\-base\-url\f[] to change the protocol, hostname,+port and path that appear in hyperlinks, useful eg for integrating+hledger\-web within a larger website.+The default is \f[C]http://HOST:PORT/\f[] using the server's configured+host address and TCP port (or \f[C]http://HOST\f[] if PORT is 80).+.PP+With \f[C]\-\-file\-url\f[] you can set a different base url for static+files, eg for better caching or cookie\-less serving on high performance+websites.+.PP+Note there is no built\-in access control (aside from listening on+127.0.0.1 by default).+So you will need to hide hledger\-web behind an authenticating proxy+(such as apache or nginx) if you want to restrict who can see and add+entries to your journal.+.PP+Command\-line options and arguments may be used to set an initial filter+on the data.+This is not shown in the web UI, but it will be applied in addition to+any search query entered there.+.PP+With journal and timeclock files (but not CSV files, currently) the web+app detects changes made by other means and will show the new data on+the next request.+If a change makes the file unparseable, hledger\-web will show an error+until the file has been fixed.+.SH OPTIONS+.PP+Note: if invoking hledger\-web as a hledger subcommand, write+\f[C]\-\-\f[] before options as shown above.+.TP+.B \f[C]\-\-serve\f[]+serve and log requests, don't browse or auto\-exit+.RS+.RE+.TP+.B \f[C]\-\-host=IPADDR\f[]+listen on this IP address (default: 127.0.0.1)+.RS+.RE+.TP+.B \f[C]\-\-port=PORT\f[]+listen on this TCP port (default: 5000)+.RS+.RE+.TP+.B \f[C]\-\-base\-url=URL\f[]+set the base url (default: http://IPADDR:PORT).+You would change this when sharing over the network, or integrating+within a larger website.+.RS+.RE+.TP+.B \f[C]\-\-file\-url=URL\f[]+set the static files url (default: BASEURL/static).+hledger\-web normally serves static files itself, but if you wanted to+serve them from another server for efficiency, you would set the url+with this.+.RS+.RE+.PP+hledger input options:+.TP+.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]+use a different input file.+For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or+\f[C]$HOME/.hledger.journal\f[])+.RS+.RE+.TP+.B \f[C]\-\-rules\-file=RULESFILE\f[]+Conversion rules file to use when reading CSV (default: FILE.rules)+.RS+.RE+.TP+.B \f[C]\-\-alias=OLD=NEW\f[]+rename accounts named OLD to NEW+.RS+.RE+.TP+.B \f[C]\-\-anon\f[]+anonymize accounts and payees+.RS+.RE+.TP+.B \f[C]\-\-pivot\ FIELDNAME\f[]+use some other field or tag for the account name+.RS+.RE+.TP+.B \f[C]\-I\ \-\-ignore\-assertions\f[]+ignore any failing balance assertions+.RS+.RE+.PP+hledger reporting options:+.TP+.B \f[C]\-b\ \-\-begin=DATE\f[]+include postings/txns on or after this date+.RS+.RE+.TP+.B \f[C]\-e\ \-\-end=DATE\f[]+include postings/txns before this date+.RS+.RE+.TP+.B \f[C]\-D\ \-\-daily\f[]+multiperiod/multicolumn report by day+.RS+.RE+.TP+.B \f[C]\-W\ \-\-weekly\f[]+multiperiod/multicolumn report by week+.RS+.RE+.TP+.B \f[C]\-M\ \-\-monthly\f[]+multiperiod/multicolumn report by month+.RS+.RE+.TP+.B \f[C]\-Q\ \-\-quarterly\f[]+multiperiod/multicolumn report by quarter+.RS+.RE+.TP+.B \f[C]\-Y\ \-\-yearly\f[]+multiperiod/multicolumn report by year+.RS+.RE+.TP+.B \f[C]\-p\ \-\-period=PERIODEXP\f[]+set start date, end date, and/or reporting interval all at once using+period expressions syntax (overrides the flags above)+.RS+.RE+.TP+.B \f[C]\-\-date2\f[]+match the secondary date instead (see command help for other effects)+.RS+.RE+.TP+.B \f[C]\-U\ \-\-unmarked\f[]+include only unmarked postings/txns (can combine with \-P or \-C)+.RS+.RE+.TP+.B \f[C]\-P\ \-\-pending\f[]+include only pending postings/txns+.RS+.RE+.TP+.B \f[C]\-C\ \-\-cleared\f[]+include only cleared postings/txns+.RS+.RE+.TP+.B \f[C]\-R\ \-\-real\f[]+include only non\-virtual postings+.RS+.RE+.TP+.B \f[C]\-NUM\ \-\-depth=NUM\f[]+hide/aggregate accounts or postings more than NUM levels deep+.RS+.RE+.TP+.B \f[C]\-E\ \-\-empty\f[]+show items with zero amount, normally hidden+.RS+.RE+.TP+.B \f[C]\-B\ \-\-cost\f[]+convert amounts to their cost at transaction time (using the transaction+price, if any)+.RS+.RE+.TP+.B \f[C]\-V\ \-\-value\f[]+convert amounts to their market value on the report end date (using the+most recent applicable market price, if any)+.RS+.RE+.TP+.B \f[C]\-\-auto\f[]+apply automated posting rules to modify transactions.+.RS+.RE+.TP+.B \f[C]\-\-forecast\f[]+apply periodic transaction rules to generate future transactions, to 6+months from now or report end date.+.RS+.RE+.PP+When a reporting option appears more than once in the command line, the+last one takes precedence.+.PP+Some reporting options can also be written as query arguments.+.PP+hledger help options:+.TP+.B \f[C]\-h\ \-\-help\f[]+show general usage (or after COMMAND, command usage)+.RS+.RE+.TP+.B \f[C]\-\-version\f[]+show version+.RS+.RE+.TP+.B \f[C]\-\-debug[=N]\f[]+show debug output (levels 1\-9, default: 1)+.RS+.RE+.PP+A \@FILE argument will be expanded to the contents of FILE, which should+contain one command line option/argument per line.+(To prevent this, insert a \f[C]\-\-\f[] argument before.)+.SH ENVIRONMENT+.PP+\f[B]LEDGER_FILE\f[] The journal file path when not specified with+\f[C]\-f\f[].+Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps+\f[C]C:/Users/USER/.hledger.journal\f[]).+.SH FILES+.PP+Reads data from one or more files in hledger journal, timeclock,+timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+.SH BUGS+.PP+The need to precede options with \f[C]\-\-\f[] when invoked from hledger+is awkward.+.PP+\f[C]\-f\-\f[] doesn't work (hledger\-web can't read from stdin).+.PP+Query arguments and some hledger options are ignored.+.PP+Does not work in text\-mode browsers.+.PP+Does not work well on small screens.+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
+ .otherdocs/hledger-web.info view
@@ -0,0 +1,214 @@+This is hledger-web.info, produced by makeinfo version 6.5 from stdin.+++File: hledger-web.info,  Node: Top,  Next: OPTIONS,  Up: (dir)++hledger-web(1) hledger-web 1.5+******************************++hledger-web is hledger's web interface.  It starts a simple web+application for browsing and adding transactions, and optionally opens+it in a web browser window if possible.  It provides a more+user-friendly UI than the hledger CLI or hledger-ui interface, showing+more at once (accounts, the current account register, balance charts)+and allowing history-aware data entry, interactive searching, and+bookmarking.++   hledger-web also lets you share a ledger with multiple users, or even+the public web.  There is no access control, so if you need that you+should put it behind a suitable web proxy.  As a small protection+against data loss when running an unprotected instance, it writes a+numbered backup of the main journal file (only ?)  on every edit.++   Like hledger, it reads data from one or more files in hledger+journal, timeclock, timedot, or CSV format specified with '-f', or+'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps+'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),+hledger_journal(5) etc.++   By default, hledger-web starts the web app in "transient mode" and+also opens it in your default web browser if possible.  In this mode the+web app will keep running for as long as you have it open in a browser+window, and will exit after two minutes of inactivity (no requests and+no browser windows viewing it).  With '--serve', it just runs the web+app without exiting, and logs requests to the console.++   By default the server listens on IP address 127.0.0.1, accessible+only to local requests.  You can use '--host' to change this, eg '--host+0.0.0.0' to listen on all configured addresses.++   Similarly, use '--port' to set a TCP port other than 5000, eg if you+are running multiple hledger-web instances.++   You can use '--base-url' to change the protocol, hostname, port and+path that appear in hyperlinks, useful eg for integrating hledger-web+within a larger website.  The default is 'http://HOST:PORT/' using the+server's configured host address and TCP port (or 'http://HOST' if PORT+is 80).++   With '--file-url' you can set a different base url for static files,+eg for better caching or cookie-less serving on high performance+websites.++   Note there is no built-in access control (aside from listening on+127.0.0.1 by default).  So you will need to hide hledger-web behind an+authenticating proxy (such as apache or nginx) if you want to restrict+who can see and add entries to your journal.++   Command-line options and arguments may be used to set an initial+filter on the data.  This is not shown in the web UI, but it will be+applied in addition to any search query entered there.++   With journal and timeclock files (but not CSV files, currently) the+web app detects changes made by other means and will show the new data+on the next request.  If a change makes the file unparseable,+hledger-web will show an error until the file has been fixed.+* Menu:++* OPTIONS::+++File: hledger-web.info,  Node: OPTIONS,  Prev: Top,  Up: Top++1 OPTIONS+*********++Note: if invoking hledger-web as a hledger subcommand, write '--' before+options as shown above.++'--serve'++     serve and log requests, don't browse or auto-exit+'--host=IPADDR'++     listen on this IP address (default: 127.0.0.1)+'--port=PORT'++     listen on this TCP port (default: 5000)+'--base-url=URL'++     set the base url (default: http://IPADDR:PORT). You would change+     this when sharing over the network, or integrating within a larger+     website.+'--file-url=URL'++     set the static files url (default: BASEURL/static).  hledger-web+     normally serves static files itself, but if you wanted to serve+     them from another server for efficiency, you would set the url with+     this.++   hledger input options:++'-f FILE --file=FILE'++     use a different input file.  For stdin, use - (default:+     '$LEDGER_FILE' or '$HOME/.hledger.journal')+'--rules-file=RULESFILE'++     Conversion rules file to use when reading CSV (default: FILE.rules)+'--alias=OLD=NEW'++     rename accounts named OLD to NEW+'--anon'++     anonymize accounts and payees+'--pivot FIELDNAME'++     use some other field or tag for the account name+'-I --ignore-assertions'++     ignore any failing balance assertions++   hledger reporting options:++'-b --begin=DATE'++     include postings/txns on or after this date+'-e --end=DATE'++     include postings/txns before this date+'-D --daily'++     multiperiod/multicolumn report by day+'-W --weekly'++     multiperiod/multicolumn report by week+'-M --monthly'++     multiperiod/multicolumn report by month+'-Q --quarterly'++     multiperiod/multicolumn report by quarter+'-Y --yearly'++     multiperiod/multicolumn report by year+'-p --period=PERIODEXP'++     set start date, end date, and/or reporting interval all at once+     using period expressions syntax (overrides the flags above)+'--date2'++     match the secondary date instead (see command help for other+     effects)+'-U --unmarked'++     include only unmarked postings/txns (can combine with -P or -C)+'-P --pending'++     include only pending postings/txns+'-C --cleared'++     include only cleared postings/txns+'-R --real'++     include only non-virtual postings+'-NUM --depth=NUM'++     hide/aggregate accounts or postings more than NUM levels deep+'-E --empty'++     show items with zero amount, normally hidden+'-B --cost'++     convert amounts to their cost at transaction time (using the+     transaction price, if any)+'-V --value'++     convert amounts to their market value on the report end date (using+     the most recent applicable market price, if any)+'--auto'++     apply automated posting rules to modify transactions.+'--forecast'++     apply periodic transaction rules to generate future transactions,+     to 6 months from now or report end date.++   When a reporting option appears more than once in the command line,+the last one takes precedence.++   Some reporting options can also be written as query arguments.++   hledger help options:++'-h --help'++     show general usage (or after COMMAND, command usage)+'--version'++     show version+'--debug[=N]'++     show debug output (levels 1-9, default: 1)++   A @FILE argument will be expanded to the contents of FILE, which+should contain one command line option/argument per line.  (To prevent+this, insert a '--' argument before.)+++Tag Table:+Node: Top72+Node: OPTIONS3152+Ref: #options3237++End Tag Table
+ .otherdocs/hledger-web.txt view
@@ -0,0 +1,250 @@++hledger-web(1)               hledger User Manuals               hledger-web(1)++++NAME+       hledger-web - web interface for the hledger accounting tool++SYNOPSIS+       hledger-web [OPTIONS]+       hledger web -- [OPTIONS]++DESCRIPTION+       hledger  is  a  cross-platform program for tracking money, time, or any+       other commodity, using double-entry accounting and a  simple,  editable+       file  format.   hledger  is  inspired  by  and  largely compatible with+       ledger(1).++       hledger-web is hledger's web interface.  It starts a simple web  appli-+       cation for browsing and adding transactions, and optionally opens it in+       a web browser window if possible.  It provides a more user-friendly  UI+       than  the  hledger  CLI  or  hledger-ui interface, showing more at once+       (accounts, the current account register, balance charts)  and  allowing+       history-aware data entry, interactive searching, and bookmarking.++       hledger-web  also  lets you share a ledger with multiple users, or even+       the public web.  There is no access control, so if you  need  that  you+       should  put  it  behind  a  suitable  web proxy.  As a small protection+       against data loss when running an unprotected  instance,  it  writes  a+       numbered backup of the main journal file (only ?)  on every edit.++       Like  hledger, it reads data from one or more files in hledger journal,+       timeclock, timedot, or CSV format specified with -f,  or  $LEDGER_FILE,+       or        $HOME/.hledger.journal       (on       windows,       perhaps+       C:/Users/USER/.hledger.journal).  For more about this  see  hledger(1),+       hledger_journal(5) etc.++       By default, hledger-web starts the web app in "transient mode" and also+       opens it in your default web browser if possible.  In this mode the web+       app will keep running for as long as you have it open in a browser win-+       dow, and will exit after two minutes of inactivity (no requests and  no+       browser  windows  viewing  it).  With --serve, it just runs the web app+       without exiting, and logs requests to the console.++       By default the server listens on IP address 127.0.0.1, accessible  only+       to   local   requests.    You   can  use  --host  to  change  this,  eg+       --host 0.0.0.0 to listen on all configured addresses.++       Similarly, use --port to set a TCP port other than 5000, eg if you  are+       running multiple hledger-web instances.++       You  can use --base-url to change the protocol, hostname, port and path+       that appear in hyperlinks, useful eg for integrating hledger-web within+       a  larger website.  The default is http://HOST:PORT/ using the server's+       configured host address and TCP port (or http://HOST if PORT is 80).++       With --file-url you can set a different base url for static  files,  eg+       for better caching or cookie-less serving on high performance websites.++       Note there is no built-in  access  control  (aside  from  listening  on+       127.0.0.1  by default).  So you will need to hide hledger-web behind an+       authenticating proxy (such as apache or nginx) if you want to  restrict+       who can see and add entries to your journal.++       Command-line options and arguments may be used to set an initial filter+       on the data.  This is not shown in the web UI, but it will  be  applied+       in addition to any search query entered there.++       With journal and timeclock files (but not CSV files, currently) the web+       app detects changes made by other means and will show the new  data  on+       the  next request.  If a change makes the file unparseable, hledger-web+       will show an error until the file has been fixed.++OPTIONS+       Note: if invoking hledger-web as a hledger subcommand, write --  before+       options as shown above.++       --serve+              serve and log requests, don't browse or auto-exit++       --host=IPADDR+              listen on this IP address (default: 127.0.0.1)++       --port=PORT+              listen on this TCP port (default: 5000)++       --base-url=URL+              set  the  base  url  (default:  http://IPADDR:PORT).   You would+              change this when sharing over the network, or integrating within+              a larger website.++       --file-url=URL+              set the static files url (default: BASEURL/static).  hledger-web+              normally serves static files itself, but if you wanted to  serve+              them  from  another server for efficiency, you would set the url+              with this.++       hledger input options:++       -f FILE --file=FILE+              use  a  different  input  file.   For  stdin,  use  -  (default:+              $LEDGER_FILE or $HOME/.hledger.journal)++       --rules-file=RULESFILE+              Conversion   rules  file  to  use  when  reading  CSV  (default:+              FILE.rules)++       --alias=OLD=NEW+              rename accounts named OLD to NEW++       --anon anonymize accounts and payees++       --pivot FIELDNAME+              use some other field or tag for the account name++       -I --ignore-assertions+              ignore any failing balance assertions++       hledger reporting options:++       -b --begin=DATE+              include postings/txns on or after this date++       -e --end=DATE+              include postings/txns before this date++       -D --daily+              multiperiod/multicolumn report by day++       -W --weekly+              multiperiod/multicolumn report by week++       -M --monthly+              multiperiod/multicolumn report by month++       -Q --quarterly+              multiperiod/multicolumn report by quarter++       -Y --yearly+              multiperiod/multicolumn report by year++       -p --period=PERIODEXP+              set start date, end date, and/or reporting interval all at  once+              using period expressions syntax (overrides the flags above)++       --date2+              match  the  secondary  date  instead (see command help for other+              effects)++       -U --unmarked+              include only unmarked postings/txns (can combine with -P or -C)++       -P --pending+              include only pending postings/txns++       -C --cleared+              include only cleared postings/txns++       -R --real+              include only non-virtual postings++       -NUM --depth=NUM+              hide/aggregate accounts or postings more than NUM levels deep++       -E --empty+              show items with zero amount, normally hidden++       -B --cost+              convert amounts to their cost at  transaction  time  (using  the+              transaction price, if any)++       -V --value+              convert  amounts  to  their  market value on the report end date+              (using the most recent applicable market price, if any)++       --auto apply automated posting rules to modify transactions.++       --forecast+              apply periodic transaction rules  to  generate  future  transac-+              tions, to 6 months from now or report end date.++       When a reporting option appears more than once in the command line, the+       last one takes precedence.++       Some reporting options can also be written as query arguments.++       hledger help options:++       -h --help+              show general usage (or after COMMAND, command usage)++       --version+              show version++       --debug[=N]+              show debug output (levels 1-9, default: 1)++       A @FILE argument will be expanded to the contents of FILE, which should+       contain  one  command line option/argument per line.  (To prevent this,+       insert a -- argument before.)++ENVIRONMENT+       LEDGER_FILE The journal file path when not specified with -f.  Default:+       ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour-+       nal).++FILES+       Reads data from one or more files in hledger journal, timeclock,  time-+       dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or+       $HOME/.hledger.journal          (on          windows,           perhaps+       C:/Users/USER/.hledger.journal).++BUGS+       The  need  to precede options with -- when invoked from hledger is awk-+       ward.++       -f- doesn't work (hledger-web can't read from stdin).++       Query arguments and some hledger options are ignored.++       Does not work in text-mode browsers.++       Does not work well on small screens.++++REPORTING BUGS+       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger-web 1.5                  December 2017                  hledger-web(1)
+ .otherdocs/hledger_csv.5 view
@@ -0,0 +1,334 @@++.TH "hledger_csv" "5" "December 2017" "hledger 1.5" "hledger User Manuals"++++.SH NAME+.PP+CSV \- how hledger reads CSV data, and the CSV rules file format+.SH DESCRIPTION+.PP+hledger can read CSV (comma\-separated value) files as if they were+journal files, automatically converting each CSV record into a+transaction.+(To learn about \f[I]writing\f[] CSV, see CSV output.)+.PP+Converting CSV to transactions requires some special conversion rules.+These do several things:+.IP \[bu] 2+they describe the layout and format of the CSV data+.IP \[bu] 2+they can customize the generated journal entries using a simple+templating language+.IP \[bu] 2+they can add refinements based on patterns in the CSV data, eg+categorizing transactions with more detailed account names.+.PP+When reading a CSV file named \f[C]FILE.csv\f[], hledger looks for a+conversion rules file named \f[C]FILE.csv.rules\f[] in the same+directory.+You can override this with the \f[C]\-\-rules\-file\f[] option.+If the rules file does not exist, hledger will auto\-create one with+some example rules, which you'll need to adjust.+.PP+At minimum, the rules file must identify the \f[C]date\f[] and+\f[C]amount\f[] fields.+It may also be necessary to specify the date format, and the number of+header lines to skip.+Eg:+.IP+.nf+\f[C]+fields\ date,\ _,\ _,\ amount+date\-format\ \ %d/%m/%Y+skip\ 1+\f[]+.fi+.PP+A more complete example:+.IP+.nf+\f[C]+#\ hledger\ CSV\ rules\ for\ amazon.com\ order\ history++#\ sample:+#\ "Date","Type","To/From","Name","Status","Amount","Fees","Transaction\ ID"+#\ "Jul\ 29,\ 2012","Payment","To","Adapteva,\ Inc.","Completed","$25.00","$0.00","17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL"++#\ skip\ one\ header\ line+skip\ 1++#\ name\ the\ csv\ fields\ (and\ assign\ the\ transaction\[aq]s\ date,\ amount\ and\ code)+fields\ date,\ _,\ toorfrom,\ name,\ amzstatus,\ amount,\ fees,\ code++#\ how\ to\ parse\ the\ date+date\-format\ %b\ %\-d,\ %Y++#\ combine\ two\ fields\ to\ make\ the\ description+description\ %toorfrom\ %name++#\ save\ these\ fields\ as\ tags+comment\ \ \ \ \ status:%amzstatus,\ fees:%fees++#\ set\ the\ base\ account\ for\ all\ transactions+account1\ \ \ \ assets:amazon++#\ flip\ the\ sign\ on\ the\ amount+amount\ \ \ \ \ \ \-%amount+\f[]+.fi+.PP+For more examples, see Convert CSV files.+.SH CSV RULES+.PP+The following seven kinds of rule can appear in the rules file, in any+order.+Blank lines and lines beginning with \f[C]#\f[] or \f[C];\f[] are+ignored.+.SS skip+.PP+\f[C]skip\f[]\f[I]\f[CI]N\f[I]\f[]+.PP+Skip this number of CSV records at the beginning.+You'll need this whenever your CSV data contains header lines.+Eg:+.IP+.nf+\f[C]+#\ ignore\ the\ first\ CSV\ line+skip\ 1+\f[]+.fi+.SS date\-format+.PP+\f[C]date\-format\f[]\f[I]\f[CI]DATEFMT\f[I]\f[]+.PP+When your CSV date fields are not formatted like \f[C]YYYY/MM/DD\f[] (or+\f[C]YYYY\-MM\-DD\f[] or \f[C]YYYY.MM.DD\f[]), you'll need to specify+the format.+DATEFMT is a strptime\-like date parsing pattern, which must parse the+date field values completely.+Examples:+.IP+.nf+\f[C]+#\ for\ dates\ like\ "6/11/2013":+date\-format\ %\-d/%\-m/%Y+\f[]+.fi+.IP+.nf+\f[C]+#\ for\ dates\ like\ "11/06/2013":+date\-format\ %m/%d/%Y+\f[]+.fi+.IP+.nf+\f[C]+#\ for\ dates\ like\ "2013\-Nov\-06":+date\-format\ %Y\-%h\-%d+\f[]+.fi+.IP+.nf+\f[C]+#\ for\ dates\ like\ "11/6/2013\ 11:32\ PM":+date\-format\ %\-m/%\-d/%Y\ %l:%M\ %p+\f[]+.fi+.SS field list+.PP+\f[C]fields\f[]\f[I]\f[CI]FIELDNAME1\f[I]\f[],+\f[I]\f[CI]FIELDNAME2\f[I]\f[]\&...+.PP+This (a) names the CSV fields, in order (names may not contain+whitespace; uninteresting names may be left blank), and (b) assigns them+to journal entry fields if you use any of these standard field names:+\f[C]date\f[], \f[C]date2\f[], \f[C]status\f[], \f[C]code\f[],+\f[C]description\f[], \f[C]comment\f[], \f[C]account1\f[],+\f[C]account2\f[], \f[C]amount\f[], \f[C]amount\-in\f[],+\f[C]amount\-out\f[], \f[C]currency\f[], \f[C]balance\f[].+Eg:+.IP+.nf+\f[C]+#\ use\ the\ 1st,\ 2nd\ and\ 4th\ CSV\ fields\ as\ the\ entry\[aq]s\ date,\ description\ and\ amount,+#\ and\ give\ the\ 7th\ and\ 8th\ fields\ meaningful\ names\ for\ later\ reference:+#+#\ CSV\ field:+#\ \ \ \ \ \ 1\ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ 3\ 4\ \ \ \ \ \ \ 5\ 6\ 7\ \ \ \ \ \ \ \ \ \ 8+#\ entry\ field:+fields\ date,\ description,\ ,\ amount,\ ,\ ,\ somefield,\ anotherfield+\f[]+.fi+.SS field assignment+.PP+\f[I]\f[CI]ENTRYFIELDNAME\f[I]\f[] \f[I]\f[CI]FIELDVALUE\f[I]\f[]+.PP+This sets a journal entry field (one of the standard names above) to the+given text value, which can include CSV field values interpolated by+name (\f[C]%CSVFIELDNAME\f[]) or 1\-based position (\f[C]%N\f[]).+ Eg:+.IP+.nf+\f[C]+#\ set\ the\ amount\ to\ the\ 4th\ CSV\ field\ with\ "USD\ "\ prepended+amount\ USD\ %4+\f[]+.fi+.IP+.nf+\f[C]+#\ combine\ three\ fields\ to\ make\ a\ comment\ (containing\ two\ tags)+comment\ note:\ %somefield\ \-\ %anotherfield,\ date:\ %1+\f[]+.fi+.PP+Field assignments can be used instead of or in addition to a field list.+.SS conditional block+.PP+\f[C]if\f[] \f[I]\f[CI]PATTERN\f[I]\f[]+.PD 0+.P+.PD+\ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[]\&...+.PP+\f[C]if\f[]+.PD 0+.P+.PD+\f[I]\f[CI]PATTERN\f[I]\f[]+.PD 0+.P+.PD+\f[I]\f[CI]PATTERN\f[I]\f[]\&...+.PD 0+.P+.PD+\ \ \ \ \f[I]\f[CI]FIELDASSIGNMENTS\f[I]\f[]\&...+.PP+This applies one or more field assignments, only to those CSV records+matched by one of the PATTERNs.+The patterns are case\-insensitive regular expressions which match+anywhere within the whole CSV record (it's not yet possible to match+within a specific field).+When there are multiple patterns they can be written on separate lines,+unindented.+The field assignments are on separate lines indented by at least one+space.+Examples:+.IP+.nf+\f[C]+#\ if\ the\ CSV\ record\ contains\ "groceries",\ set\ account2\ to\ "expenses:groceries"+if\ groceries+\ account2\ expenses:groceries+\f[]+.fi+.IP+.nf+\f[C]+#\ if\ the\ CSV\ record\ contains\ any\ of\ these\ patterns,\ set\ account2\ and\ comment\ as\ shown+if+monthly\ service\ fee+atm\ transaction\ fee+banking\ thru\ software+\ account2\ expenses:business:banking+\ comment\ \ XXX\ deductible\ ?\ check\ it+\f[]+.fi+.SS include+.PP+\f[C]include\f[]\f[I]\f[CI]RULESFILE\f[I]\f[]+.PP+Include another rules file at this point.+\f[C]RULESFILE\f[] is either an absolute file path or a path relative to+the current file's directory.+Eg:+.IP+.nf+\f[C]+#\ rules\ reused\ with\ several\ CSV\ files+include\ common.rules+\f[]+.fi+.SS newest\-first+.PP+\f[C]newest\-first\f[]+.PP+Consider adding this rule if all of the following are true: you might be+processing just one day of data, your CSV records are in reverse+chronological order (newest first), and you care about preserving the+order of same\-day transactions.+It usually isn't needed, because hledger autodetects the CSV order, but+when all CSV records have the same date it will assume they are oldest+first.+.SH CSV TIPS+.SS CSV ordering+.PP+The generated journal entries will be sorted by date.+The order of same\-day entries will be preserved (except in the special+case where you might need \f[C]newest\-first\f[], see above).+.SS CSV accounts+.PP+Each journal entry will have two postings, to \f[C]account1\f[] and+\f[C]account2\f[] respectively.+It's not yet possible to generate entries with more than two postings.+It's conventional and recommended to use \f[C]account1\f[] for the+account whose CSV we are reading.+.SS CSV amounts+.PP+The \f[C]amount\f[] field sets the amount of the \f[C]account1\f[]+posting.+.PP+If the CSV has debit/credit amounts in separate fields, assign to the+\f[C]amount\-in\f[] and \f[C]amount\-out\f[] pseudo fields instead.+(Whichever one has a value will be used, with appropriate sign.+If both contain a value, it may not work so well.)+.PP+If an amount value is parenthesised, it will be de\-parenthesised and+sign\-flipped.+.PP+If an amount value begins with a double minus sign, those will cancel+out and be removed.+.PP+If the CSV has the currency symbol in a separate field, assign that to+the \f[C]currency\f[] pseudo field to have it prepended to the amount.+Or, you can use a field assignment to \f[C]amount\f[] that interpolates+both CSV fields (giving more control, eg to put the currency symbol on+the right).+.SS CSV balance assertions+.PP+If the CSV includes a running balance, you can assign that to the+\f[C]balance\f[] pseudo field; whenever the running balance value is+non\-empty, it will be asserted as the balance after the+\f[C]account1\f[] posting.+.SS Reading multiple CSV files+.PP+You can read multiple CSV files at once using multiple \f[C]\-f\f[]+arguments on the command line, and hledger will look for a+correspondingly\-named rules file for each.+Note if you use the \f[C]\-\-rules\-file\f[] option, this one rules file+will be used for all the CSV files being read.+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
+ .otherdocs/hledger_csv.info view
@@ -0,0 +1,349 @@+This is hledger_csv.info, produced by makeinfo version 6.5 from stdin.+++File: hledger_csv.info,  Node: Top,  Next: CSV RULES,  Up: (dir)++hledger_csv(5) hledger 1.5+**************************++hledger can read CSV (comma-separated value) files as if they were+journal files, automatically converting each CSV record into a+transaction.  (To learn about _writing_ CSV, see CSV output.)++   Converting CSV to transactions requires some special conversion+rules.  These do several things:++   * they describe the layout and format of the CSV data+   * they can customize the generated journal entries using a simple+     templating language+   * they can add refinements based on patterns in the CSV data, eg+     categorizing transactions with more detailed account names.++   When reading a CSV file named 'FILE.csv', hledger looks for a+conversion rules file named 'FILE.csv.rules' in the same directory.  You+can override this with the '--rules-file' option.  If the rules file+does not exist, hledger will auto-create one with some example rules,+which you'll need to adjust.++   At minimum, the rules file must identify the 'date' and 'amount'+fields.  It may also be necessary to specify the date format, and the+number of header lines to skip.  Eg:++fields date, _, _, amount+date-format  %d/%m/%Y+skip 1++   A more complete example:++# hledger CSV rules for amazon.com order history++# sample:+# "Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID"+# "Jul 29, 2012","Payment","To","Adapteva, Inc.","Completed","$25.00","$0.00","17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL"++# skip one header line+skip 1++# name the csv fields (and assign the transaction's date, amount and code)+fields date, _, toorfrom, name, amzstatus, amount, fees, code++# how to parse the date+date-format %b %-d, %Y++# combine two fields to make the description+description %toorfrom %name++# save these fields as tags+comment     status:%amzstatus, fees:%fees++# set the base account for all transactions+account1    assets:amazon++# flip the sign on the amount+amount      -%amount++   For more examples, see Convert CSV files.+* Menu:++* CSV RULES::+* CSV TIPS::+++File: hledger_csv.info,  Node: CSV RULES,  Next: CSV TIPS,  Prev: Top,  Up: Top++1 CSV RULES+***********++The following seven kinds of rule can appear in the rules file, in any+order.  Blank lines and lines beginning with '#' or ';' are ignored.+* Menu:++* skip::+* date-format::+* field list::+* field assignment::+* conditional block::+* include::+* newest-first::+++File: hledger_csv.info,  Node: skip,  Next: date-format,  Up: CSV RULES++1.1 skip+========++'skip'_'N'_++   Skip this number of CSV records at the beginning.  You'll need this+whenever your CSV data contains header lines.  Eg:++# ignore the first CSV line+skip 1+++File: hledger_csv.info,  Node: date-format,  Next: field list,  Prev: skip,  Up: CSV RULES++1.2 date-format+===============++'date-format'_'DATEFMT'_++   When your CSV date fields are not formatted like 'YYYY/MM/DD' (or+'YYYY-MM-DD' or 'YYYY.MM.DD'), you'll need to specify the format.+DATEFMT is a strptime-like date parsing pattern, which must parse the+date field values completely.  Examples:++# for dates like "6/11/2013":+date-format %-d/%-m/%Y++# for dates like "11/06/2013":+date-format %m/%d/%Y++# for dates like "2013-Nov-06":+date-format %Y-%h-%d++# for dates like "11/6/2013 11:32 PM":+date-format %-m/%-d/%Y %l:%M %p+++File: hledger_csv.info,  Node: field list,  Next: field assignment,  Prev: date-format,  Up: CSV RULES++1.3 field list+==============++'fields'_'FIELDNAME1'_, _'FIELDNAME2'_...++   This (a) names the CSV fields, in order (names may not contain+whitespace; uninteresting names may be left blank), and (b) assigns them+to journal entry fields if you use any of these standard field names:+'date', 'date2', 'status', 'code', 'description', 'comment', 'account1',+'account2', 'amount', 'amount-in', 'amount-out', 'currency', 'balance'.+Eg:++# use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,+# and give the 7th and 8th fields meaningful names for later reference:+#+# CSV field:+#      1     2            3 4       5 6 7          8+# entry field:+fields date, description, , amount, , , somefield, anotherfield+++File: hledger_csv.info,  Node: field assignment,  Next: conditional block,  Prev: field list,  Up: CSV RULES++1.4 field assignment+====================++_'ENTRYFIELDNAME'_ _'FIELDVALUE'_++   This sets a journal entry field (one of the standard names above) to+the given text value, which can include CSV field values interpolated by+name ('%CSVFIELDNAME') or 1-based position ('%N').  Eg:++# set the amount to the 4th CSV field with "USD " prepended+amount USD %4++# combine three fields to make a comment (containing two tags)+comment note: %somefield - %anotherfield, date: %1++   Field assignments can be used instead of or in addition to a field+list.+++File: hledger_csv.info,  Node: conditional block,  Next: include,  Prev: field assignment,  Up: CSV RULES++1.5 conditional block+=====================++'if' _'PATTERN'_+    _'FIELDASSIGNMENTS'_...++   'if'+_'PATTERN'_+_'PATTERN'_...+    _'FIELDASSIGNMENTS'_...++   This applies one or more field assignments, only to those CSV records+matched by one of the PATTERNs.  The patterns are case-insensitive+regular expressions which match anywhere within the whole CSV record+(it's not yet possible to match within a specific field).  When there+are multiple patterns they can be written on separate lines, unindented.+The field assignments are on separate lines indented by at least one+space.  Examples:++# if the CSV record contains "groceries", set account2 to "expenses:groceries"+if groceries+ account2 expenses:groceries++# if the CSV record contains any of these patterns, set account2 and comment as shown+if+monthly service fee+atm transaction fee+banking thru software+ account2 expenses:business:banking+ comment  XXX deductible ? check it+++File: hledger_csv.info,  Node: include,  Next: newest-first,  Prev: conditional block,  Up: CSV RULES++1.6 include+===========++'include'_'RULESFILE'_++   Include another rules file at this point.  'RULESFILE' is either an+absolute file path or a path relative to the current file's directory.+Eg:++# rules reused with several CSV files+include common.rules+++File: hledger_csv.info,  Node: newest-first,  Prev: include,  Up: CSV RULES++1.7 newest-first+================++'newest-first'++   Consider adding this rule if all of the following are true: you might+be processing just one day of data, your CSV records are in reverse+chronological order (newest first), and you care about preserving the+order of same-day transactions.  It usually isn't needed, because+hledger autodetects the CSV order, but when all CSV records have the+same date it will assume they are oldest first.+++File: hledger_csv.info,  Node: CSV TIPS,  Prev: CSV RULES,  Up: Top++2 CSV TIPS+**********++* Menu:++* CSV ordering::+* CSV accounts::+* CSV amounts::+* CSV balance assertions::+* Reading multiple CSV files::+++File: hledger_csv.info,  Node: CSV ordering,  Next: CSV accounts,  Up: CSV TIPS++2.1 CSV ordering+================++The generated journal entries will be sorted by date.  The order of+same-day entries will be preserved (except in the special case where you+might need 'newest-first', see above).+++File: hledger_csv.info,  Node: CSV accounts,  Next: CSV amounts,  Prev: CSV ordering,  Up: CSV TIPS++2.2 CSV accounts+================++Each journal entry will have two postings, to 'account1' and 'account2'+respectively.  It's not yet possible to generate entries with more than+two postings.  It's conventional and recommended to use 'account1' for+the account whose CSV we are reading.+++File: hledger_csv.info,  Node: CSV amounts,  Next: CSV balance assertions,  Prev: CSV accounts,  Up: CSV TIPS++2.3 CSV amounts+===============++The 'amount' field sets the amount of the 'account1' posting.++   If the CSV has debit/credit amounts in separate fields, assign to the+'amount-in' and 'amount-out' pseudo fields instead.  (Whichever one has+a value will be used, with appropriate sign.  If both contain a value,+it may not work so well.)++   If an amount value is parenthesised, it will be de-parenthesised and+sign-flipped.++   If an amount value begins with a double minus sign, those will cancel+out and be removed.++   If the CSV has the currency symbol in a separate field, assign that+to the 'currency' pseudo field to have it prepended to the amount.  Or,+you can use a field assignment to 'amount' that interpolates both CSV+fields (giving more control, eg to put the currency symbol on the+right).+++File: hledger_csv.info,  Node: CSV balance assertions,  Next: Reading multiple CSV files,  Prev: CSV amounts,  Up: CSV TIPS++2.4 CSV balance assertions+==========================++If the CSV includes a running balance, you can assign that to the+'balance' pseudo field; whenever the running balance value is non-empty,+it will be asserted as the balance after the 'account1' posting.+++File: hledger_csv.info,  Node: Reading multiple CSV files,  Prev: CSV balance assertions,  Up: CSV TIPS++2.5 Reading multiple CSV files+==============================++You can read multiple CSV files at once using multiple '-f' arguments on+the command line, and hledger will look for a correspondingly-named+rules file for each.  Note if you use the '--rules-file' option, this+one rules file will be used for all the CSV files being read.+++Tag Table:+Node: Top72+Node: CSV RULES2161+Ref: #csv-rules2269+Node: skip2531+Ref: #skip2625+Node: date-format2797+Ref: #date-format2924+Node: field list3430+Ref: #field-list3567+Node: field assignment4272+Ref: #field-assignment4427+Node: conditional block4931+Ref: #conditional-block5085+Node: include5981+Ref: #include6111+Node: newest-first6342+Ref: #newest-first6456+Node: CSV TIPS6867+Ref: #csv-tips6961+Node: CSV ordering7079+Ref: #csv-ordering7197+Node: CSV accounts7378+Ref: #csv-accounts7516+Node: CSV amounts7770+Ref: #csv-amounts7916+Node: CSV balance assertions8691+Ref: #csv-balance-assertions8873+Node: Reading multiple CSV files9078+Ref: #reading-multiple-csv-files9248++End Tag Table
+ .otherdocs/hledger_csv.txt view
@@ -0,0 +1,252 @@++hledger_csv(5)               hledger User Manuals               hledger_csv(5)++++NAME+       CSV - how hledger reads CSV data, and the CSV rules file format++DESCRIPTION+       hledger  can  read  CSV  (comma-separated  value) files as if they were+       journal files, automatically converting each CSV record into a transac-+       tion.  (To learn about writing CSV, see CSV output.)++       Converting  CSV to transactions requires some special conversion rules.+       These do several things:++       o they describe the layout and format of the CSV data++       o they can customize the generated journal entries using a simple  tem-+         plating language++       o they  can add refinements based on patterns in the CSV data, eg cate-+         gorizing transactions with more detailed account names.++       When reading a CSV file named FILE.csv, hledger looks for a  conversion+       rules  file  named FILE.csv.rules in the same directory.  You can over-+       ride this with the --rules-file option.  If the  rules  file  does  not+       exist,  hledger  will  auto-create  one  with some example rules, which+       you'll need to adjust.++       At minimum, the rules file must identify the date  and  amount  fields.+       It  may also be necessary to specify the date format, and the number of+       header lines to skip.  Eg:++              fields date, _, _, amount+              date-format  %d/%m/%Y+              skip 1++       A more complete example:++              # hledger CSV rules for amazon.com order history++              # sample:+              # "Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID"+              # "Jul 29, 2012","Payment","To","Adapteva, Inc.","Completed","$25.00","$0.00","17LA58JSK6PRD4HDGLNJQPI1PB9N8DKPVHL"++              # skip one header line+              skip 1++              # name the csv fields (and assign the transaction's date, amount and code)+              fields date, _, toorfrom, name, amzstatus, amount, fees, code++              # how to parse the date+              date-format %b %-d, %Y++              # combine two fields to make the description+              description %toorfrom %name++              # save these fields as tags+              comment     status:%amzstatus, fees:%fees++              # set the base account for all transactions+              account1    assets:amazon++              # flip the sign on the amount+              amount      -%amount++       For more examples, see Convert CSV files.++CSV RULES+       The following seven kinds of rule can appear in the rules file, in  any+       order.  Blank lines and lines beginning with # or ; are ignored.++   skip+       skipN++       Skip  this  number  of  CSV records at the beginning.  You'll need this+       whenever your CSV data contains header lines.  Eg:++              # ignore the first CSV line+              skip 1++   date-format+       date-formatDATEFMT++       When your CSV  date  fields  are  not  formatted  like  YYYY/MM/DD  (or+       YYYY-MM-DD  or YYYY.MM.DD), you'll need to specify the format.  DATEFMT+       is a strptime-like date parsing pattern,  which  must  parse  the  date+       field values completely.  Examples:++              # for dates like "6/11/2013":+              date-format %-d/%-m/%Y++              # for dates like "11/06/2013":+              date-format %m/%d/%Y++              # for dates like "2013-Nov-06":+              date-format %Y-%h-%d++              # for dates like "11/6/2013 11:32 PM":+              date-format %-m/%-d/%Y %l:%M %p++   field list+       fieldsFIELDNAME1, FIELDNAME2...++       This  (a)  names the CSV fields, in order (names may not contain white-+       space; uninteresting names may be left blank), and (b) assigns them  to+       journal  entry  fields  if  you  use any of these standard field names:+       date, date2, status, code, description,  comment,  account1,  account2,+       amount, amount-in, amount-out, currency, balance.  Eg:++              # use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,+              # and give the 7th and 8th fields meaningful names for later reference:+              #+              # CSV field:+              #      1     2            3 4       5 6 7          8+              # entry field:+              fields date, description, , amount, , , somefield, anotherfield++   field assignment+       ENTRYFIELDNAME FIELDVALUE++       This  sets  a  journal entry field (one of the standard names above) to+       the given text value, which can include CSV field  values  interpolated+       by name (%CSVFIELDNAME) or 1-based position (%N).+        Eg:++              # set the amount to the 4th CSV field with "USD " prepended+              amount USD %4++              # combine three fields to make a comment (containing two tags)+              comment note: %somefield - %anotherfield, date: %1++       Field  assignments  can  be  used  instead of or in addition to a field+       list.++   conditional block+       if PATTERN+           FIELDASSIGNMENTS...++       if+       PATTERN+       PATTERN...+           FIELDASSIGNMENTS...++       This applies one or more field assignments, only to those  CSV  records+       matched by one of the PATTERNs.  The patterns are case-insensitive reg-+       ular expressions which match anywhere within the whole CSV record (it's+       not  yet  possible  to  match within a specific field).  When there are+       multiple patterns they can be written on  separate  lines,  unindented.+       The  field  assignments  are on separate lines indented by at least one+       space.  Examples:++              # if the CSV record contains "groceries", set account2 to "expenses:groceries"+              if groceries+               account2 expenses:groceries++              # if the CSV record contains any of these patterns, set account2 and comment as shown+              if+              monthly service fee+              atm transaction fee+              banking thru software+               account2 expenses:business:banking+               comment  XXX deductible ? check it++   include+       includeRULESFILE++       Include another rules file at this point.  RULESFILE is either an abso-+       lute file path or a path relative to the current file's directory.  Eg:++              # rules reused with several CSV files+              include common.rules++   newest-first+       newest-first++       Consider adding this rule if all of the following are true:  you  might+       be  processing  just  one  day of data, your CSV records are in reverse+       chronological order (newest first), and you care about  preserving  the+       order  of  same-day  transactions.   It  usually  isn't needed, because+       hledger autodetects the CSV order, but when all CSV  records  have  the+       same date it will assume they are oldest first.++CSV TIPS+   CSV ordering+       The  generated  journal  entries  will be sorted by date.  The order of+       same-day entries will be preserved (except in the  special  case  where+       you might need newest-first, see above).++   CSV accounts+       Each  journal  entry  will  have two postings, to account1 and account2+       respectively.  It's not yet possible to generate entries with more than+       two  postings.   It's  conventional and recommended to use account1 for+       the account whose CSV we are reading.++   CSV amounts+       The amount field sets the amount of the account1 posting.++       If the CSV has debit/credit amounts in separate fields, assign  to  the+       amount-in  and  amount-out pseudo fields instead.  (Whichever one has a+       value will be used, with appropriate sign.  If both contain a value, it+       may not work so well.)++       If  an  amount  value is parenthesised, it will be de-parenthesised and+       sign-flipped.++       If an amount value begins with a double minus sign, those  will  cancel+       out and be removed.++       If  the CSV has the currency symbol in a separate field, assign that to+       the currency pseudo field to have it prepended to the amount.  Or,  you+       can  use a field assignment to amount that interpolates both CSV fields+       (giving more control, eg to put the currency symbol on the right).++   CSV balance assertions+       If the CSV includes a running balance, you can assign that to the  bal-+       ance  pseudo field; whenever the running balance value is non-empty, it+       will be asserted as the balance after the account1 posting.++   Reading multiple CSV files+       You can read multiple CSV files at once using multiple -f arguments  on+       the  command  line,  and  hledger will look for a correspondingly-named+       rules file for each.  Note if you use the --rules-file option, this one+       rules file will be used for all the CSV files being read.++++REPORTING BUGS+       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger 1.5                      December 2017                  hledger_csv(5)
+ .otherdocs/hledger_journal.5 view
@@ -0,0 +1,1249 @@+.\"t++.TH "hledger_journal" "5" "December 2017" "hledger 1.5" "hledger User Manuals"++++.SH NAME+.PP+Journal \- hledger's default file format, representing a General Journal+.SH DESCRIPTION+.PP+hledger's usual data source is a plain text file containing journal+entries in hledger journal format.+This file represents a standard accounting general journal.+I use file names ending in \f[C]\&.journal\f[], but that's not required.+The journal file contains a number of transaction entries, each+describing a transfer of money (or any commodity) between two or more+named accounts, in a simple format readable by both hledger and humans.+.PP+hledger's journal format is a compatible subset, mostly, of ledger's+journal format, so hledger can work with compatible ledger journal files+as well.+It's safe, and encouraged, to run both hledger and ledger on the same+journal file, eg to validate the results you're getting.+.PP+You can use hledger without learning any more about this file; just use+the add or web commands to create and update it.+Many users, though, also edit the journal file directly with a text+editor, perhaps assisted by the helper modes for emacs or vim.+.PP+Here's an example:+.IP+.nf+\f[C]+;\ A\ sample\ journal\ file.\ This\ is\ a\ comment.++2008/01/01\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ transaction\[aq]s\ first\ line\ starts\ in\ column\ 0,\ contains\ date\ and\ description+\ \ \ \ assets:bank:checking\ \ $1\ \ \ \ ;\ <\-\ posting\ lines\ start\ with\ whitespace,\ each\ contains\ an\ account\ name+\ \ \ \ income:salary\ \ \ \ \ \ \ \ $\-1\ \ \ \ ;\ \ \ \ followed\ by\ at\ least\ two\ spaces\ and\ an\ amount++2008/06/01\ gift+\ \ \ \ assets:bank:checking\ \ $1\ \ \ \ ;\ <\-\ at\ least\ two\ postings\ in\ a\ transaction+\ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ ;\ <\-\ their\ amounts\ must\ balance\ to\ 0++2008/06/02\ save+\ \ \ \ assets:bank:saving\ \ \ \ $1+\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ ;\ <\-\ one\ amount\ may\ be\ omitted;\ here\ $\-1\ is\ inferred++2008/06/03\ eat\ &\ shop\ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ description\ can\ be\ anything+\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ $1+\ \ \ \ expenses:supplies\ \ \ \ \ $1\ \ \ \ ;\ <\-\ this\ transaction\ debits\ two\ expense\ accounts+\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ $\-2\ inferred++2008/10/01\ take\ a\ loan+\ \ \ \ assets:bank:checking\ \ $1+\ \ \ \ liabilities:debts\ \ \ \ $\-1++2008/12/31\ *\ pay\ off\ \ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ an\ optional\ *\ or\ !\ after\ the\ date\ means\ "cleared"\ (or\ anything\ you\ want)+\ \ \ \ liabilities:debts\ \ \ \ \ $1+\ \ \ \ assets:bank:checking+\f[]+.fi+.SH FILE FORMAT+.SS Transactions+.PP+Transactions are movements of some quantity of commodities between named+accounts.+Each transaction is represented by a journal entry beginning with a+simple date in column 0.+This can be followed by any of the following, separated by spaces:+.IP \[bu] 2+(optional) a status character (empty, \f[C]!\f[], or \f[C]*\f[])+.IP \[bu] 2+(optional) a transaction code (any short number or text, enclosed in+parentheses)+.IP \[bu] 2+(optional) a transaction description (any remaining text until end of+line or a semicolon)+.IP \[bu] 2+(optional) a transaction comment (any remaining text following a+semicolon until end of line)+.PP+Then comes zero or more (but usually at least 2) indented lines+representing\&...+.SS Postings+.PP+A posting is an addition of some amount to, or removal of some amount+from, an account.+Each posting line begins with at least one space or tab (2 or 4 spaces+is common), followed by:+.IP \[bu] 2+(optional) a status character (empty, \f[C]!\f[], or \f[C]*\f[]),+followed by a space+.IP \[bu] 2+(required) an account name (any text, optionally containing \f[B]single+spaces\f[], until end of line or a double space)+.IP \[bu] 2+(optional) \f[B]two or more spaces\f[] or tabs followed by an amount.+.PP+Positive amounts are being added to the account, negative amounts are+being removed.+.PP+The amounts within a transaction must always sum up to zero.+As a convenience, one amount may be left blank; it will be inferred so+as to balance the transaction.+.PP+Be sure to note the unusual two\-space delimiter between account name+and amount.+This makes it easy to write account names containing spaces.+But if you accidentally leave only one space (or tab) before the amount,+the amount will be considered part of the account name.+.SS Dates+.SS Simple dates+.PP+Within a journal file, transaction dates use Y/M/D (or Y\-M\-D or Y.M.D)+Leading zeros are optional.+The year may be omitted, in which case it will be inferred from the+context \- the current transaction, the default year set with a default+year directive, or the current date when the command is run.+Some examples: \f[C]2010/01/31\f[], \f[C]1/31\f[],+\f[C]2010\-01\-31\f[], \f[C]2010.1.31\f[].+.SS Secondary dates+.PP+Real\-life transactions sometimes involve more than one date \- eg the+date you write a cheque, and the date it clears in your bank.+When you want to model this, eg for more accurate balances, you can+specify individual posting dates, which I recommend.+Or, you can use the secondary dates (aka auxiliary/effective dates)+feature, supported for compatibility with Ledger.+.PP+A secondary date can be written after the primary date, separated by an+equals sign.+The primary date, on the left, is used by default; the secondary date,+on the right, is used when the \f[C]\-\-date2\f[] flag is specified+(\f[C]\-\-aux\-date\f[] or \f[C]\-\-effective\f[] also work).+.PP+The meaning of secondary dates is up to you, but it's best to follow a+consistent rule.+Eg write the bank's clearing date as primary, and when needed, the date+the transaction was initiated as secondary.+.PP+Here's an example.+Note that a secondary date will use the year of the primary date if+unspecified.+.IP+.nf+\f[C]+2010/2/23=2/19\ movie\ ticket+\ \ expenses:cinema\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10+\ \ assets:checking+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ register\ checking+2010/02/23\ movie\ ticket\ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ $\-10+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ register\ checking\ \-\-date2+2010/02/19\ movie\ ticket\ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ $\-10+\f[]+.fi+.PP+Secondary dates require some effort; you must use them consistently in+your journal entries and remember whether to use or not use the+\f[C]\-\-date2\f[] flag for your reports.+They are included in hledger for Ledger compatibility, but posting dates+are a more powerful and less confusing alternative.+.SS Posting dates+.PP+You can give individual postings a different date from their parent+transaction, by adding a posting comment containing a tag (see below)+like \f[C]date:DATE\f[].+This is probably the best way to control posting dates precisely.+Eg in this example the expense should appear in May reports, and the+deduction from checking should be reported on 6/1 for easy bank+reconciliation:+.IP+.nf+\f[C]+2015/5/30+\ \ \ \ expenses:food\ \ \ \ \ $10\ \ \ ;\ food\ purchased\ on\ saturday\ 5/30+\ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ ;\ bank\ cleared\ it\ on\ monday,\ date:6/1+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.j\ register\ food+2015/05/30\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ \ \ \ \ \ \ \ \ \ $10+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.j\ register\ checking+2015/06/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ \ $\-10+\f[]+.fi+.PP+DATE should be a simple date; if the year is not specified it will use+the year of the transaction's date.+You can set the secondary date similarly, with \f[C]date2:DATE2\f[].+The \f[C]date:\f[] or \f[C]date2:\f[] tags must have a valid simple date+value if they are present, eg a \f[C]date:\f[] tag with no value is not+allowed.+.PP+Ledger's earlier, more compact bracketed date syntax is also supported:+\f[C][DATE]\f[], \f[C][DATE=DATE2]\f[] or \f[C][=DATE2]\f[].+hledger will attempt to parse any square\-bracketed sequence of the+\f[C]0123456789/\-.=\f[] characters in this way.+With this syntax, DATE infers its year from the transaction and DATE2+infers its year from DATE.+.SS Status+.PP+Transactions, or individual postings within a transaction, can have a+status mark, which is a single character before the transaction+description or posting account name, separated from it by a space,+indicating one of three statuses:+.PP+.TS+tab(@);+l l.+T{+mark \ +T}@T{+status+T}+_+T{+\ +T}@T{+unmarked+T}+T{+\f[C]!\f[]+T}@T{+pending+T}+T{+\f[C]*\f[]+T}@T{+cleared+T}+.TE+.PP+When reporting, you can filter by status with the+\f[C]\-U/\-\-unmarked\f[], \f[C]\-P/\-\-pending\f[], and+\f[C]\-C/\-\-cleared\f[] flags; or the \f[C]status:\f[],+\f[C]status:!\f[], and \f[C]status:*\f[] queries; or the U, P, C keys in+hledger\-ui.+.PP+Note, in Ledger and in older versions of hledger, the \[lq]unmarked\[rq]+state is called \[lq]uncleared\[rq].+As of hledger 1.3 we have renamed it to unmarked for clarity.+.PP+To replicate Ledger and old hledger's behaviour of also matching+pending, combine \-U and \-P.+.PP+Status marks are optional, but can be helpful eg for reconciling with+real\-world accounts.+Some editor modes provide highlighting and shortcuts for working with+status.+Eg in Emacs ledger\-mode, you can toggle transaction status with C\-c+C\-e, or posting status with C\-c C\-c.+.PP+What \[lq]uncleared\[rq], \[lq]pending\[rq], and \[lq]cleared\[rq]+actually mean is up to you.+Here's one suggestion:+.PP+.TS+tab(@);+lw(9.9n) lw(60.1n).+T{+status+T}@T{+meaning+T}+_+T{+uncleared+T}@T{+recorded but not yet reconciled; needs review+T}+T{+pending+T}@T{+tentatively reconciled (if needed, eg during a big reconciliation)+T}+T{+cleared+T}@T{+complete, reconciled as far as possible, and considered correct+T}+.TE+.PP+With this scheme, you would use \f[C]\-PC\f[] to see the current balance+at your bank, \f[C]\-U\f[] to see things which will probably hit your+bank soon (like uncashed checks), and no flags to see the most+up\-to\-date state of your finances.+.SS Description+.PP+A transaction's description is the rest of the line following the date+and status mark (or until a comment begins).+Sometimes called the \[lq]narration\[rq] in traditional bookkeeping, it+can be used for whatever you wish, or left blank.+Transaction descriptions can be queried, unlike comments.+.SS Payee and note+.PP+You can optionally include a \f[C]|\f[] (pipe) character in a+description to subdivide it into a payee/payer name on the left and+additional notes on the right.+This may be worthwhile if you need to do more precise querying and+pivoting by payee.+.SS Account names+.PP+Account names typically have several parts separated by a full colon,+from which hledger derives a hierarchical chart of accounts.+They can be anything you like, but in finance there are traditionally+five top\-level accounts: \f[C]assets\f[], \f[C]liabilities\f[],+\f[C]income\f[], \f[C]expenses\f[], and \f[C]equity\f[].+.PP+Account names may contain single spaces, eg:+\f[C]assets:accounts\ receivable\f[].+Because of this, they must always be followed by \f[B]two or more+spaces\f[] (or newline).+.PP+Account names can be aliased.+.SS Amounts+.PP+After the account name, there is usually an amount.+Important: between account name and amount, there must be \f[B]two or+more spaces\f[].+.PP+Amounts consist of a number and (usually) a currency symbol or commodity+name.+Some examples:+.PP+\f[C]2.00001\f[]+.PD 0+.P+.PD+\f[C]$1\f[]+.PD 0+.P+.PD+\f[C]4000\ AAPL\f[]+.PD 0+.P+.PD+\f[C]3\ "green\ apples"\f[]+.PD 0+.P+.PD+\f[C]\-$1,000,000.00\f[]+.PD 0+.P+.PD+\f[C]INR\ 9,99,99,999.00\f[]+.PD 0+.P+.PD+\f[C]EUR\ \-2.000.000,00\f[]+.PD 0+.P+.PD+\f[C]1\ 999\ 999.9455\f[]+.PP+As you can see, the amount format is somewhat flexible:+.IP \[bu] 2+amounts are a number (the \[lq]quantity\[rq]) and optionally a currency+symbol/commodity name (the \[lq]commodity\[rq]).+.IP \[bu] 2+the commodity is a symbol, word, or phrase, on the left or right, with+or without a separating space.+If the commodity contains numbers, spaces or non\-word punctuation it+must be enclosed in double quotes.+.IP \[bu] 2+negative amounts with a commodity on the left can have the minus sign+before or after it+.IP \[bu] 2+digit groups (thousands, or any other grouping) can be separated by+space or comma or period and should be used as separator between all+groups+.IP \[bu] 2+decimal part can be separated by comma or period and should be different+from digit groups separator+.PP+You can use any of these variations when recording data.+However, there is some ambiguous way of representing numbers like+\f[C]$1.000\f[] and \f[C]$1,000\f[] both may mean either one thousand or+one dollar.+By default hledger will assume that this is sole delimiter is used only+for decimals.+On the other hand commodity format declared prior to that line will help+to resolve that ambiguity differently:+.IP+.nf+\f[C]+commodity\ $1,000.00++2017/12/25\ New\ life\ of\ Scrooge+\ \ \ \ expenses:gifts\ \ $1,000+\ \ \ \ assets+\f[]+.fi+.PP+Though journal may contain mixed styles to represent amount, when+hledger displays amounts, it will choose a consistent format for each+commodity.+(Except for price amounts, which are always formatted as written).+The display format is chosen as follows:+.IP \[bu] 2+if there is a commodity directive specifying the format, that is used+.IP \[bu] 2+otherwise the format is inferred from the first posting amount in that+commodity in the journal, and the precision (number of decimal places)+will be the maximum from all posting amounts in that commmodity+.IP \[bu] 2+or if there are no such amounts in the journal, a default format is used+(like \f[C]$1000.00\f[]).+.PP+Price amounts and amounts in D directives usually don't affect amount+format inference, but in some situations they can do so indirectly.+(Eg when D's default commodity is applied to a commodity\-less amount,+or when an amountless posting is balanced using a price's commodity, or+when \-V is used.) If you find this causing problems, set the desired+format with a commodity directive.+.SS Virtual Postings+.PP+When you parenthesise the account name in a posting, we call that a+\f[I]virtual posting\f[], which means:+.IP \[bu] 2+it is ignored when checking that the transaction is balanced+.IP \[bu] 2+it is excluded from reports when the \f[C]\-\-real/\-R\f[] flag is used,+or the \f[C]real:1\f[] query.+.PP+You could use this, eg, to set an account's opening balance without+needing to use the \f[C]equity:opening\ balances\f[] account:+.IP+.nf+\f[C]+1/1\ special\ unbalanced\ posting\ to\ set\ initial\ balance+\ \ (assets:checking)\ \ \ $1000+\f[]+.fi+.PP+When the account name is bracketed, we call it a \f[I]balanced virtual+posting\f[].+This is like an ordinary virtual posting except the balanced virtual+postings in a transaction must balance to 0, like the real postings (but+separately from them).+Balanced virtual postings are also excluded by \f[C]\-\-real/\-R\f[] or+\f[C]real:1\f[].+.IP+.nf+\f[C]+1/1\ buy\ food\ with\ cash,\ and\ update\ some\ budget\-tracking\ subaccounts\ elsewhere+\ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10+\ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10+\ \ [assets:checking:available]\ \ \ \ \ $10+\ \ [assets:checking:budget:food]\ \ $\-10+\f[]+.fi+.PP+Virtual postings have some legitimate uses, but those are few.+You can usually find an equivalent journal entry using real postings,+which is more correct and provides better error checking.+.SS Balance Assertions+.PP+hledger supports Ledger\-style balance assertions in journal files.+These look like \f[C]=EXPECTEDBALANCE\f[] following a posting's amount.+Eg in this example we assert the expected dollar balance in accounts a+and b after each posting:+.IP+.nf+\f[C]+2013/1/1+\ \ a\ \ \ $1\ \ =$1+\ \ b\ \ \ \ \ \ \ =$\-1++2013/1/2+\ \ a\ \ \ $1\ \ =$2+\ \ b\ \ $\-1\ \ =$\-2+\f[]+.fi+.PP+After reading a journal file, hledger will check all balance assertions+and report an error if any of them fail.+Balance assertions can protect you from, eg, inadvertently disrupting+reconciled balances while cleaning up old entries.+You can disable them temporarily with the+\f[C]\-\-ignore\-assertions\f[] flag, which can be useful for+troubleshooting or for reading Ledger files.+.SS Assertions and ordering+.PP+hledger sorts an account's postings and assertions first by date and+then (for postings on the same day) by parse order.+Note this is different from Ledger, which sorts assertions only by parse+order.+(Also, Ledger assertions do not see the accumulated effect of repeated+postings to the same account within a transaction.)+.PP+So, hledger balance assertions keep working if you reorder+differently\-dated transactions within the journal.+But if you reorder same\-dated transactions or postings, assertions+might break and require updating.+This order dependence does bring an advantage: precise control over the+order of postings and assertions within a day, so you can assert+intra\-day balances.+.SS Assertions and included files+.PP+With included files, things are a little more complicated.+Including preserves the ordering of postings and assertions.+If you have multiple postings to an account on the same day, split+across different files, and you also want to assert the account's+balance on the same day, you'll have to put the assertion in the right+file.+.SS Assertions and multiple \-f options+.PP+Balance assertions don't work well across files specified with multiple+\-f options.+Use include or concatenate the files instead.+.SS Assertions and commodities+.PP+The asserted balance must be a simple single\-commodity amount, and in+fact the assertion checks only this commodity's balance within the+(possibly multi\-commodity) account balance.+We could call this a partial balance assertion.+This is compatible with Ledger, and makes it possible to make assertions+about accounts containing multiple commodities.+.PP+To assert each commodity's balance in such a multi\-commodity account,+you can add multiple postings (with amount 0 if necessary).+But note that no matter how many assertions you add, you can't be sure+the account does not contain some unexpected commodity.+(We'll add support for this kind of total balance assertion if there's+demand.)+.SS Assertions and subaccounts+.PP+Balance assertions do not count the balance from subaccounts; they check+the posted account's exclusive balance.+For example:+.IP+.nf+\f[C]+1/1+\ \ checking:fund\ \ \ 1\ =\ 1\ \ ;\ post\ to\ this\ subaccount,\ its\ balance\ is\ now\ 1+\ \ checking\ \ \ \ \ \ \ \ 1\ =\ 1\ \ ;\ post\ to\ the\ parent\ account,\ its\ exclusive\ balance\ is\ now\ 1+\ \ equity+\f[]+.fi+.PP+The balance report's flat mode shows these exclusive balances more+clearly:+.IP+.nf+\f[C]+$\ hledger\ bal\ checking\ \-\-flat+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \ checking+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \ checking:fund+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2+\f[]+.fi+.SS Assertions and virtual postings+.PP+Balance assertions are checked against all postings, both real and+virtual.+They are not affected by the \f[C]\-\-real/\-R\f[] flag or+\f[C]real:\f[] query.+.SS Balance Assignments+.PP+Ledger\-style balance assignments are also supported.+These are like balance assertions, but with no posting amount on the+left side of the equals sign; instead it is calculated automatically so+as to satisfy the assertion.+This can be a convenience during data entry, eg when setting opening+balances:+.IP+.nf+\f[C]+;\ starting\ a\ new\ journal,\ set\ asset\ account\ balances\ +2016/1/1\ opening\ balances+\ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ =\ $409.32+\ \ assets:savings\ \ \ \ \ \ \ \ \ \ \ \ \ =\ $735.24+\ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ $42+\ \ equity:opening\ balances+\f[]+.fi+.PP+or when adjusting a balance to reality:+.IP+.nf+\f[C]+;\ no\ cash\ left;\ update\ balance,\ record\ any\ untracked\ spending\ as\ a\ generic\ expense+2016/1/15+\ \ assets:cash\ \ \ \ =\ $0+\ \ expenses:misc+\f[]+.fi+.PP+The calculated amount depends on the account's balance in the commodity+at that point (which depends on the previously\-dated postings of the+commodity to that account since the last balance assertion or+assignment).+Note that using balance assignments makes your journal a little less+explicit; to know the exact amount posted, you have to run hledger or do+the calculations yourself, instead of just reading it.+.SS Prices+.SS Transaction prices+.PP+Within a transaction, you can note an amount's price in another+commodity.+This can be used to document the cost (in a purchase) or selling price+(in a sale).+For example, transaction prices are useful to record purchases of a+foreign currency.+.PP+Transaction prices are fixed, and do not change over time.+(Ledger users: Ledger uses a different syntax for fixed prices,+\f[C]{=UNITPRICE}\f[], which hledger currently ignores).+.PP+There are several ways to record a transaction price:+.IP "1." 3+Write the price per unit, as \f[C]\@\ UNITPRICE\f[] after the amount:+.RS 4+.IP+.nf+\f[C]+2009/1/1+\ \ assets:euros\ \ \ \ \ €100\ \@\ $1.35\ \ ;\ one\ hundred\ euros\ purchased\ at\ $1.35\ each+\ \ assets:dollars\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ balancing\ amount\ is\ \-$135.00+\f[]+.fi+.RE+.IP "2." 3+Write the total price, as \f[C]\@\@\ TOTALPRICE\f[] after the amount:+.RS 4+.IP+.nf+\f[C]+2009/1/1+\ \ assets:euros\ \ \ \ \ €100\ \@\@\ $135\ \ ;\ one\ hundred\ euros\ purchased\ at\ $135\ for\ the\ lot+\ \ assets:dollars+\f[]+.fi+.RE+.IP "3." 3+Specify amounts for all postings, using exactly two commodities, and let+hledger infer the price that balances the transaction:+.RS 4+.IP+.nf+\f[C]+2009/1/1+\ \ assets:euros\ \ \ \ \ €100\ \ \ \ \ \ \ \ \ \ ;\ one\ hundred\ euros\ purchased+\ \ assets:dollars\ \ $\-135\ \ \ \ \ \ \ \ \ \ ;\ for\ $135+\f[]+.fi+.RE+.PP+Amounts with transaction prices can be displayed in the transaction+price's commodity by using the \f[C]\-B/\-\-cost\f[] flag (except for+#551) (\[lq]B\[rq] is from \[lq]cost Basis\[rq]).+Eg for the above, here is how \-B affects the balance report:+.IP+.nf+\f[C]+$\ hledger\ bal\ \-N\ \-\-flat+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-135\ \ assets:dollars+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €100\ \ assets:euros+$\ hledger\ bal\ \-N\ \-\-flat\ \-B+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-135\ \ assets:dollars+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $135\ \ assets:euros\ \ \ \ #\ <\-\ the\ euros\[aq]\ cost+\f[]+.fi+.PP+Note \-B is sensitive to the order of postings when a transaction price+is inferred: the inferred price will be in the commodity of the last+amount.+So if example 3's postings are reversed, while the transaction is+equivalent, \-B shows something different:+.IP+.nf+\f[C]+2009/1/1+\ \ assets:dollars\ \ $\-135\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ 135\ dollars\ sold+\ \ assets:euros\ \ \ \ \ €100\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ for\ 100\ euros+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ bal\ \-N\ \-\-flat\ \-B+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €\-100\ \ assets:dollars\ \ #\ <\-\ the\ dollars\[aq]\ selling\ price+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €100\ \ assets:euros+\f[]+.fi+.SS Market prices+.PP+Market prices are not tied to a particular transaction; they represent+historical exchange rates between two commodities.+(Ledger calls them historical prices.) For example, the prices published+by a stock exchange or the foreign exchange market.+hledger can use these prices to show the market value of things at a+given date, see market value.+.PP+To record market prices, use P directives in the main journal or in an+included file.+Their format is:+.IP+.nf+\f[C]+P\ DATE\ COMMODITYBEINGPRICED\ UNITPRICE+\f[]+.fi+.PP+DATE is a simple date as usual.+COMMODITYBEINGPRICED is the symbol of the commodity being priced.+UNITPRICE is an ordinary amount (symbol and quantity) in a second+commodity, specifying the unit price or conversion rate for the first+commodity in terms of the second, on the given date.+.PP+For example, the following directives say that one euro was worth 1.35+US dollars during 2009, and $1.40 from 2010 onward:+.IP+.nf+\f[C]+P\ 2009/1/1\ €\ $1.35+P\ 2010/1/1\ €\ $1.40+\f[]+.fi+.SS Comments+.PP+Lines in the journal beginning with a semicolon (\f[C];\f[]) or hash+(\f[C]#\f[]) or star (\f[C]*\f[]) are comments, and will be ignored.+(Star comments cause org\-mode nodes to be ignored, allowing emacs users+to fold and navigate their journals with org\-mode or orgstruct\-mode.)+.PP+Also, anything between \f[C]comment\f[] and \f[C]end\ comment\f[]+directives is a (multi\-line) comment.+If there is no \f[C]end\ comment\f[], the comment extends to the end of+the file.+.PP+You can attach comments to a transaction by writing them after the+description and/or indented on the following lines (before the+postings).+Similarly, you can attach comments to an individual posting by writing+them after the amount and/or indented on the following lines.+Transaction and posting comments must begin with a semicolon+(\f[C];\f[]).+.PP+Some examples:+.IP+.nf+\f[C]+#\ a\ file\ comment++;\ also\ a\ file\ comment++comment+This\ is\ a\ multiline\ file\ comment,+which\ continues\ until\ a\ line+where\ the\ "end\ comment"\ string+appears\ on\ its\ own\ (or\ end\ of\ file).+end\ comment++2012/5/14\ something\ \ ;\ a\ transaction\ comment+\ \ \ \ ;\ the\ transaction\ comment,\ continued+\ \ \ \ posting1\ \ 1\ \ ;\ a\ comment\ for\ posting\ 1+\ \ \ \ posting2+\ \ \ \ ;\ a\ comment\ for\ posting\ 2+\ \ \ \ ;\ another\ comment\ line\ for\ posting\ 2+;\ a\ file\ comment\ (because\ not\ indented)+\f[]+.fi+.SS Tags+.PP+Tags are a way to add extra labels or labelled data to postings and+transactions, which you can then search or pivot on.+.PP+A simple tag is a word (which may contain hyphens) followed by a full+colon, written inside a transaction or posting comment line:+.IP+.nf+\f[C]+2017/1/16\ bought\ groceries\ \ \ \ ;\ sometag:+\f[]+.fi+.PP+Tags can have a value, which is the text after the colon, up to the next+comma or end of line, with leading/trailing whitespace removed:+.IP+.nf+\f[C]+\ \ \ \ expenses:food\ \ \ \ $10\ \ \ ;\ a\-posting\-tag:\ the\ tag\ value+\f[]+.fi+.PP+Note this means hledger's tag values can not contain commas or newlines.+Ending at commas means you can write multiple short tags on one line,+comma separated:+.IP+.nf+\f[C]+\ \ \ \ assets:checking\ \ \ \ \ \ \ ;\ a\ comment\ containing\ tag1:,\ tag2:\ some\ value\ ...+\f[]+.fi+.PP+Here,+.IP \[bu] 2+\[lq]\f[C]a\ comment\ containing\f[]\[rq] is just comment text, not a+tag+.IP \[bu] 2+\[lq]\f[C]tag1\f[]\[rq] is a tag with no value+.IP \[bu] 2+\[lq]\f[C]tag2\f[]\[rq] is another tag, whose value is+\[lq]\f[C]some\ value\ ...\f[]\[rq]+.PP+Tags in a transaction comment affect the transaction and all of its+postings, while tags in a posting comment affect only that posting.+For example, the following transaction has three tags (\f[C]A\f[],+\f[C]TAG2\f[], \f[C]third\-tag\f[]) and the posting has four (those plus+\f[C]posting\-tag\f[]):+.IP+.nf+\f[C]+1/1\ a\ transaction\ \ ;\ A:,\ TAG2:+\ \ \ \ ;\ third\-tag:\ a\ third\ transaction\ tag,\ <\-\ with\ a\ value+\ \ \ \ (a)\ \ $1\ \ ;\ posting\-tag:+\f[]+.fi+.PP+Tags are like Ledger's metadata feature, except hledger's tag values are+simple strings.+.SS Directives+.SS Account aliases+.PP+You can define aliases which rewrite your account names (after reading+the journal, before generating reports).+hledger's account aliases can be useful for:+.IP \[bu] 2+expanding shorthand account names to their full form, allowing easier+data entry and a less verbose journal+.IP \[bu] 2+adapting old journals to your current chart of accounts+.IP \[bu] 2+experimenting with new account organisations, like a new hierarchy or+combining two accounts into one+.IP \[bu] 2+customising reports+.PP+See also Cookbook: rewrite account names.+.SS Basic aliases+.PP+To set an account alias, use the \f[C]alias\f[] directive in your+journal file.+This affects all subsequent journal entries in the current file or its+included files.+The spaces around the = are optional:+.IP+.nf+\f[C]+alias\ OLD\ =\ NEW+\f[]+.fi+.PP+Or, you can use the \f[C]\-\-alias\ \[aq]OLD=NEW\[aq]\f[] option on the+command line.+This affects all entries.+It's useful for trying out aliases interactively.+.PP+OLD and NEW are full account names.+hledger will replace any occurrence of the old account name with the new+one.+Subaccounts are also affected.+Eg:+.IP+.nf+\f[C]+alias\ checking\ =\ assets:bank:wells\ fargo:checking+#\ rewrites\ "checking"\ to\ "assets:bank:wells\ fargo:checking",\ or\ "checking:a"\ to\ "assets:bank:wells\ fargo:checking:a"+\f[]+.fi+.SS Regex aliases+.PP+There is also a more powerful variant that uses a regular expression,+indicated by the forward slashes:+.IP+.nf+\f[C]+alias\ /REGEX/\ =\ REPLACEMENT+\f[]+.fi+.PP+or \f[C]\-\-alias\ \[aq]/REGEX/=REPLACEMENT\[aq]\f[].+.PP+REGEX is a case\-insensitive regular expression.+Anywhere it matches inside an account name, the matched part will be+replaced by REPLACEMENT.+If REGEX contains parenthesised match groups, these can be referenced by+the usual numeric backreferences in REPLACEMENT.+Eg:+.IP+.nf+\f[C]+alias\ /^(.+):bank:([^:]+)(.*)/\ =\ \\1:\\2\ \\3+#\ rewrites\ "assets:bank:wells\ fargo:checking"\ to\ \ "assets:wells\ fargo\ checking"+\f[]+.fi+.PP+Also note that REPLACEMENT continues to the end of line (or on command+line, to end of option argument), so it can contain trailing whitespace.+.SS Multiple aliases+.PP+You can define as many aliases as you like using directives or+command\-line options.+Aliases are recursive \- each alias sees the result of applying previous+ones.+(This is different from Ledger, where aliases are non\-recursive by+default).+Aliases are applied in the following order:+.IP "1." 3+alias directives, most recently seen first (recent directives take+precedence over earlier ones; directives not yet seen are ignored)+.IP "2." 3+alias options, in the order they appear on the command line+.SS end aliases+.PP+You can clear (forget) all currently defined aliases with the+\f[C]end\ aliases\f[] directive:+.IP+.nf+\f[C]+end\ aliases+\f[]+.fi+.SS account directive+.PP+The \f[C]account\f[] directive predefines account names, as in Ledger+and Beancount.+This may be useful for your own documentation; hledger doesn't make use+of it yet.+.IP+.nf+\f[C]+;\ account\ ACCT+;\ \ \ OPTIONAL\ COMMENTS/TAGS...++account\ assets:bank:checking+\ a\ comment+\ acct\-no:12345++account\ expenses:food++;\ etc.+\f[]+.fi+.SS apply account directive+.PP+You can specify a parent account which will be prepended to all accounts+within a section of the journal.+Use the \f[C]apply\ account\f[] and \f[C]end\ apply\ account\f[]+directives like so:+.IP+.nf+\f[C]+apply\ account\ home++2010/1/1+\ \ \ \ food\ \ \ \ $10+\ \ \ \ cash++end\ apply\ account+\f[]+.fi+.PP+which is equivalent to:+.IP+.nf+\f[C]+2010/01/01+\ \ \ \ home:food\ \ \ \ \ \ \ \ \ \ \ $10+\ \ \ \ home:cash\ \ \ \ \ \ \ \ \ \ $\-10+\f[]+.fi+.PP+If \f[C]end\ apply\ account\f[] is omitted, the effect lasts to the end+of the file.+Included files are also affected, eg:+.IP+.nf+\f[C]+apply\ account\ business+include\ biz.journal+end\ apply\ account+apply\ account\ personal+include\ personal.journal+\f[]+.fi+.PP+Prior to hledger 1.0, legacy \f[C]account\f[] and \f[C]end\f[] spellings+were also supported.+.SS Multi\-line comments+.PP+A line containing just \f[C]comment\f[] starts a multi\-line comment,+and a line containing just \f[C]end\ comment\f[] ends it.+See comments.+.SS commodity directive+.PP+The \f[C]commodity\f[] directive predefines commodities (currently this+is just informational), and also it may define the display format for+amounts in this commodity (overriding the automatically inferred+format).+.PP+It may be written on a single line, like this:+.IP+.nf+\f[C]+;\ commodity\ EXAMPLEAMOUNT++;\ display\ AAAA\ amounts\ with\ the\ symbol\ on\ the\ right,\ space\-separated,+;\ using\ period\ as\ decimal\ point,\ with\ four\ decimal\ places,\ and+;\ separating\ thousands\ with\ comma.+commodity\ 1,000.0000\ AAAA+\f[]+.fi+.PP+or on multiple lines, using the \[lq]format\[rq] subdirective.+In this case the commodity symbol appears twice and should be the same+in both places:+.IP+.nf+\f[C]+;\ commodity\ SYMBOL+;\ \ \ format\ EXAMPLEAMOUNT++;\ display\ indian\ rupees\ with\ currency\ name\ on\ the\ left,+;\ thousands,\ lakhs\ and\ crores\ comma\-separated,+;\ period\ as\ decimal\ point,\ and\ two\ decimal\ places.+commodity\ INR+\ \ format\ INR\ 9,99,99,999.00+\f[]+.fi+.SS Default commodity+.PP+The D directive sets a default commodity (and display format), to be+used for amounts without a commodity symbol (ie, plain numbers).+(Note this differs from Ledger's default commodity directive.) The+commodity and display format will be applied to all subsequent+commodity\-less amounts, or until the next D directive.+.IP+.nf+\f[C]+#\ commodity\-less\ amounts\ should\ be\ treated\ as\ dollars+#\ (and\ displayed\ with\ symbol\ on\ the\ left,\ thousands\ separators\ and\ two\ decimal\ places)+D\ $1,000.00++1/1+\ \ a\ \ \ \ \ 5\ \ \ \ ;\ <\-\ commodity\-less\ amount,\ becomes\ $1+\ \ b+\f[]+.fi+.SS Default year+.PP+You can set a default year to be used for subsequent dates which don't+specify a year.+This is a line beginning with \f[C]Y\f[] followed by the year.+Eg:+.IP+.nf+\f[C]+Y2009\ \ \ \ \ \ ;\ set\ default\ year\ to\ 2009++12/15\ \ \ \ \ \ ;\ equivalent\ to\ 2009/12/15+\ \ expenses\ \ 1+\ \ assets++Y2010\ \ \ \ \ \ ;\ change\ default\ year\ to\ 2010++2009/1/30\ \ ;\ specifies\ the\ year,\ not\ affected+\ \ expenses\ \ 1+\ \ assets++1/31\ \ \ \ \ \ \ ;\ equivalent\ to\ 2010/1/31+\ \ expenses\ \ 1+\ \ assets+\f[]+.fi+.SS Including other files+.PP+You can pull in the content of additional journal files by writing an+include directive, like this:+.IP+.nf+\f[C]+include\ path/to/file.journal+\f[]+.fi+.PP+If the path does not begin with a slash, it is relative to the current+file.+Glob patterns (\f[C]*\f[]) are not currently supported.+.PP+The \f[C]include\f[] directive can only be used in journal files.+It can include journal, timeclock or timedot files, but not CSV files.+.SH Periodic transactions+.PP+A periodic transaction starts with a tilde `~' in place of a date+followed by a period expression:+.IP+.nf+\f[C]+~\ weekly+\ \ assets:bank:checking\ \ \ $400\ ;\ paycheck+\ \ income:acme\ inc+\f[]+.fi+.PP+Periodic transactions are used for forecasting and budgeting only, they+have no effect unless the \f[C]\-\-forecast\f[] or \f[C]\-\-budget\f[]+flag is used.+With \f[C]\-\-forecast\f[], each periodic transaction rule generates+recurring forecast transactions at the specified interval, beginning the+day after the last recorded journal transaction and ending 6 months from+today, or at the specified report end date.+With \f[C]balance\ \-\-budget\f[], each periodic transaction declares+recurring budget goals for one or more accounts.+.PD 0+.P+.PD+For more details, see: balance > Budgeting, Budgeting and Forecasting.+.SH Automated posting rules+.PP+Automated posting rule starts with an equal sign `=' in place of a date,+followed by a query:+.IP+.nf+\f[C]+=\ expenses:gifts+\ \ \ \ budget:gifts\ \ *\-1+\ \ \ \ assets:budget\ \ *1+\f[]+.fi+.PP+When \f[C]\-\-auto\f[] option is specified on the command line,+automated posting rule will add its postings to all transactions that+match the query.+.PP+If amount in the automated posting rule includes commodity name, new+posting will be made in the given commodity, otherwise commodity of the+matched transaction will be used.+.PP+When amount in the automated posting rule begins with the '*', amount+will be treated as a multiplier that is applied to the amount of the+first posting in the matched transaction.+.PP+In example above, every transaction in \f[C]expenses:gifts\f[] account+will have two additional postings added to it: amount of the original+gift will be debited from \f[C]budget:gifts\f[] and credited into+\f[C]assets:budget\f[]:+.IP+.nf+\f[C]+;\ Original\ transaction+2017\-12\-14+\ \ expenses:gifts\ \ $20+\ \ assets++;\ With\ automated\ postings\ applied+2017/12/14+\ \ \ \ expenses:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ $20+\ \ \ \ assets+\ \ \ \ budget:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-20+\ \ \ \ assets:budget\ \ \ \ \ \ \ \ \ \ \ \ \ \ $20+\f[]+.fi+.SH EDITOR SUPPORT+.PP+Add\-on modes exist for various text editors, to make working with+journal files easier.+They add colour, navigation aids and helpful commands.+For hledger users who edit the journal file directly (the majority),+using one of these modes is quite recommended.+.PP+These were written with Ledger in mind, but also work with hledger+files:+.PP+.TS+tab(@);+lw(16.5n) lw(53.5n).+T{+Emacs+T}@T{+http://www.ledger\-cli.org/3.0/doc/ledger\-mode.html+T}+T{+Vim+T}@T{+https://github.com/ledger/ledger/wiki/Getting\-started+T}+T{+Sublime Text+T}@T{+https://github.com/ledger/ledger/wiki/Using\-Sublime\-Text+T}+T{+Textmate+T}@T{+https://github.com/ledger/ledger/wiki/Using\-TextMate\-2+T}+T{+Text Wrangler \ +T}@T{+https://github.com/ledger/ledger/wiki/Editing\-Ledger\-files\-with\-TextWrangler+T}+T{+Visual Studio Code+T}@T{+https://marketplace.visualstudio.com/items?itemName=mark\-hansen.hledger\-vscode+T}+.TE+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
+ .otherdocs/hledger_journal.info view
@@ -0,0 +1,1235 @@+This is hledger_journal.info, produced by makeinfo version 6.5 from+stdin.+++File: hledger_journal.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir)++hledger_journal(5) hledger 1.5+******************************++hledger's usual data source is a plain text file containing journal+entries in hledger journal format.  This file represents a standard+accounting general journal.  I use file names ending in '.journal', but+that's not required.  The journal file contains a number of transaction+entries, each describing a transfer of money (or any commodity) between+two or more named accounts, in a simple format readable by both hledger+and humans.++   hledger's journal format is a compatible subset, mostly, of ledger's+journal format, so hledger can work with compatible ledger journal files+as well.  It's safe, and encouraged, to run both hledger and ledger on+the same journal file, eg to validate the results you're getting.++   You can use hledger without learning any more about this file; just+use the add or web commands to create and update it.  Many users,+though, also edit the journal file directly with a text editor, perhaps+assisted by the helper modes for emacs or vim.++   Here's an example:++; A sample journal file. This is a comment.++2008/01/01 income               ; <- transaction's first line starts in column 0, contains date and description+    assets:bank:checking  $1    ; <- posting lines start with whitespace, each contains an account name+    income:salary        $-1    ;    followed by at least two spaces and an amount++2008/06/01 gift+    assets:bank:checking  $1    ; <- at least two postings in a transaction+    income:gifts         $-1    ; <- their amounts must balance to 0++2008/06/02 save+    assets:bank:saving    $1+    assets:bank:checking        ; <- one amount may be omitted; here $-1 is inferred++2008/06/03 eat & shop           ; <- description can be anything+    expenses:food         $1+    expenses:supplies     $1    ; <- this transaction debits two expense accounts+    assets:cash                 ; <- $-2 inferred++2008/10/01 take a loan+    assets:bank:checking  $1+    liabilities:debts    $-1++2008/12/31 * pay off            ; <- an optional * or ! after the date means "cleared" (or anything you want)+    liabilities:debts     $1+    assets:bank:checking++* Menu:++* FILE FORMAT::+* Periodic transactions::+* Automated posting rules::+* EDITOR SUPPORT::+++File: hledger_journal.info,  Node: FILE FORMAT,  Next: Periodic transactions,  Prev: Top,  Up: Top++1 FILE FORMAT+*************++* Menu:++* Transactions::+* Postings::+* Dates::+* Status::+* Description::+* Account names::+* Amounts::+* Virtual Postings::+* Balance Assertions::+* Balance Assignments::+* Prices::+* Comments::+* Tags::+* Directives::+++File: hledger_journal.info,  Node: Transactions,  Next: Postings,  Up: FILE FORMAT++1.1 Transactions+================++Transactions are movements of some quantity of commodities between named+accounts.  Each transaction is represented by a journal entry beginning+with a simple date in column 0.  This can be followed by any of the+following, separated by spaces:++   * (optional) a status character (empty, '!', or '*')+   * (optional) a transaction code (any short number or text, enclosed+     in parentheses)+   * (optional) a transaction description (any remaining text until end+     of line or a semicolon)+   * (optional) a transaction comment (any remaining text following a+     semicolon until end of line)++   Then comes zero or more (but usually at least 2) indented lines+representing...+++File: hledger_journal.info,  Node: Postings,  Next: Dates,  Prev: Transactions,  Up: FILE FORMAT++1.2 Postings+============++A posting is an addition of some amount to, or removal of some amount+from, an account.  Each posting line begins with at least one space or+tab (2 or 4 spaces is common), followed by:++   * (optional) a status character (empty, '!', or '*'), followed by a+     space+   * (required) an account name (any text, optionally containing *single+     spaces*, until end of line or a double space)+   * (optional) *two or more spaces* or tabs followed by an amount.++   Positive amounts are being added to the account, negative amounts are+being removed.++   The amounts within a transaction must always sum up to zero.  As a+convenience, one amount may be left blank; it will be inferred so as to+balance the transaction.++   Be sure to note the unusual two-space delimiter between account name+and amount.  This makes it easy to write account names containing+spaces.  But if you accidentally leave only one space (or tab) before+the amount, the amount will be considered part of the account name.+++File: hledger_journal.info,  Node: Dates,  Next: Status,  Prev: Postings,  Up: FILE FORMAT++1.3 Dates+=========++* Menu:++* Simple dates::+* Secondary dates::+* Posting dates::+++File: hledger_journal.info,  Node: Simple dates,  Next: Secondary dates,  Up: Dates++1.3.1 Simple dates+------------------++Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)+Leading zeros are optional.  The year may be omitted, in which case it+will be inferred from the context - the current transaction, the default+year set with a default year directive, or the current date when the+command is run.  Some examples: '2010/01/31', '1/31', '2010-01-31',+'2010.1.31'.+++File: hledger_journal.info,  Node: Secondary dates,  Next: Posting dates,  Prev: Simple dates,  Up: Dates++1.3.2 Secondary dates+---------------------++Real-life transactions sometimes involve more than one date - eg the+date you write a cheque, and the date it clears in your bank.  When you+want to model this, eg for more accurate balances, you can specify+individual posting dates, which I recommend.  Or, you can use the+secondary dates (aka auxiliary/effective dates) feature, supported for+compatibility with Ledger.++   A secondary date can be written after the primary date, separated by+an equals sign.  The primary date, on the left, is used by default; the+secondary date, on the right, is used when the '--date2' flag is+specified ('--aux-date' or '--effective' also work).++   The meaning of secondary dates is up to you, but it's best to follow+a consistent rule.  Eg write the bank's clearing date as primary, and+when needed, the date the transaction was initiated as secondary.++   Here's an example.  Note that a secondary date will use the year of+the primary date if unspecified.++2010/2/23=2/19 movie ticket+  expenses:cinema                   $10+  assets:checking++$ hledger register checking+2010/02/23 movie ticket         assets:checking                $-10         $-10++$ hledger register checking --date2+2010/02/19 movie ticket         assets:checking                $-10         $-10++   Secondary dates require some effort; you must use them consistently+in your journal entries and remember whether to use or not use the+'--date2' flag for your reports.  They are included in hledger for+Ledger compatibility, but posting dates are a more powerful and less+confusing alternative.+++File: hledger_journal.info,  Node: Posting dates,  Prev: Secondary dates,  Up: Dates++1.3.3 Posting dates+-------------------++You can give individual postings a different date from their parent+transaction, by adding a posting comment containing a tag (see below)+like 'date:DATE'.  This is probably the best way to control posting+dates precisely.  Eg in this example the expense should appear in May+reports, and the deduction from checking should be reported on 6/1 for+easy bank reconciliation:++2015/5/30+    expenses:food     $10   ; food purchased on saturday 5/30+    assets:checking         ; bank cleared it on monday, date:6/1++$ hledger -f t.j register food+2015/05/30                      expenses:food                  $10           $10++$ hledger -f t.j register checking+2015/06/01                      assets:checking               $-10          $-10++   DATE should be a simple date; if the year is not specified it will+use the year of the transaction's date.  You can set the secondary date+similarly, with 'date2:DATE2'.  The 'date:' or 'date2:' tags must have a+valid simple date value if they are present, eg a 'date:' tag with no+value is not allowed.++   Ledger's earlier, more compact bracketed date syntax is also+supported: '[DATE]', '[DATE=DATE2]' or '[=DATE2]'.  hledger will attempt+to parse any square-bracketed sequence of the '0123456789/-.='+characters in this way.  With this syntax, DATE infers its year from the+transaction and DATE2 infers its year from DATE.+++File: hledger_journal.info,  Node: Status,  Next: Description,  Prev: Dates,  Up: FILE FORMAT++1.4 Status+==========++Transactions, or individual postings within a transaction, can have a+status mark, which is a single character before the transaction+description or posting account name, separated from it by a space,+indicating one of three statuses:++mark  status+ +-----------------+      unmarked+'!'   pending+'*'   cleared++   When reporting, you can filter by status with the '-U/--unmarked',+'-P/--pending', and '-C/--cleared' flags; or the 'status:', 'status:!',+and 'status:*' queries; or the U, P, C keys in hledger-ui.++   Note, in Ledger and in older versions of hledger, the "unmarked"+state is called "uncleared".  As of hledger 1.3 we have renamed it to+unmarked for clarity.++   To replicate Ledger and old hledger's behaviour of also matching+pending, combine -U and -P.++   Status marks are optional, but can be helpful eg for reconciling with+real-world accounts.  Some editor modes provide highlighting and+shortcuts for working with status.  Eg in Emacs ledger-mode, you can+toggle transaction status with C-c C-e, or posting status with C-c C-c.++   What "uncleared", "pending", and "cleared" actually mean is up to+you.  Here's one suggestion:++status     meaning+--------------------------------------------------------------------------+uncleared  recorded but not yet reconciled; needs review+pending    tentatively reconciled (if needed, eg during a big+           reconciliation)+cleared    complete, reconciled as far as possible, and considered+           correct++   With this scheme, you would use '-PC' to see the current balance at+your bank, '-U' to see things which will probably hit your bank soon+(like uncashed checks), and no flags to see the most up-to-date state of+your finances.+++File: hledger_journal.info,  Node: Description,  Next: Account names,  Prev: Status,  Up: FILE FORMAT++1.5 Description+===============++A transaction's description is the rest of the line following the date+and status mark (or until a comment begins).  Sometimes called the+"narration" in traditional bookkeeping, it can be used for whatever you+wish, or left blank.  Transaction descriptions can be queried, unlike+comments.+* Menu:++* Payee and note::+++File: hledger_journal.info,  Node: Payee and note,  Up: Description++1.5.1 Payee and note+--------------------++You can optionally include a '|' (pipe) character in a description to+subdivide it into a payee/payer name on the left and additional notes on+the right.  This may be worthwhile if you need to do more precise+querying and pivoting by payee.+++File: hledger_journal.info,  Node: Account names,  Next: Amounts,  Prev: Description,  Up: FILE FORMAT++1.6 Account names+=================++Account names typically have several parts separated by a full colon,+from which hledger derives a hierarchical chart of accounts.  They can+be anything you like, but in finance there are traditionally five+top-level accounts: 'assets', 'liabilities', 'income', 'expenses', and+'equity'.++   Account names may contain single spaces, eg: 'assets:accounts+receivable'.  Because of this, they must always be followed by *two or+more spaces* (or newline).++   Account names can be aliased.+++File: hledger_journal.info,  Node: Amounts,  Next: Virtual Postings,  Prev: Account names,  Up: FILE FORMAT++1.7 Amounts+===========++After the account name, there is usually an amount.  Important: between+account name and amount, there must be *two or more spaces*.++   Amounts consist of a number and (usually) a currency symbol or+commodity name.  Some examples:++   '2.00001'+'$1'+'4000 AAPL'+'3 "green apples"'+'-$1,000,000.00'+'INR 9,99,99,999.00'+'EUR -2.000.000,00'+'1 999 999.9455'++   As you can see, the amount format is somewhat flexible:++   * amounts are a number (the "quantity") and optionally a currency+     symbol/commodity name (the "commodity").+   * the commodity is a symbol, word, or phrase, on the left or right,+     with or without a separating space.  If the commodity contains+     numbers, spaces or non-word punctuation it must be enclosed in+     double quotes.+   * negative amounts with a commodity on the left can have the minus+     sign before or after it+   * digit groups (thousands, or any other grouping) can be separated by+     space or comma or period and should be used as separator between+     all groups+   * decimal part can be separated by comma or period and should be+     different from digit groups separator++   You can use any of these variations when recording data.  However,+there is some ambiguous way of representing numbers like '$1.000' and+'$1,000' both may mean either one thousand or one dollar.  By default+hledger will assume that this is sole delimiter is used only for+decimals.  On the other hand commodity format declared prior to that+line will help to resolve that ambiguity differently:++commodity $1,000.00++2017/12/25 New life of Scrooge+    expenses:gifts  $1,000+    assets++   Though journal may contain mixed styles to represent amount, when+hledger displays amounts, it will choose a consistent format for each+commodity.  (Except for price amounts, which are always formatted as+written).  The display format is chosen as follows:++   * if there is a commodity directive specifying the format, that is+     used+   * otherwise the format is inferred from the first posting amount in+     that commodity in the journal, and the precision (number of decimal+     places) will be the maximum from all posting amounts in that+     commmodity+   * or if there are no such amounts in the journal, a default format is+     used (like '$1000.00').++   Price amounts and amounts in D directives usually don't affect amount+format inference, but in some situations they can do so indirectly.  (Eg+when D's default commodity is applied to a commodity-less amount, or+when an amountless posting is balanced using a price's commodity, or+when -V is used.)  If you find this causing problems, set the desired+format with a commodity directive.+++File: hledger_journal.info,  Node: Virtual Postings,  Next: Balance Assertions,  Prev: Amounts,  Up: FILE FORMAT++1.8 Virtual Postings+====================++When you parenthesise the account name in a posting, we call that a+_virtual posting_, which means:++   * it is ignored when checking that the transaction is balanced+   * it is excluded from reports when the '--real/-R' flag is used, or+     the 'real:1' query.++   You could use this, eg, to set an account's opening balance without+needing to use the 'equity:opening balances' account:++1/1 special unbalanced posting to set initial balance+  (assets:checking)   $1000++   When the account name is bracketed, we call it a _balanced virtual+posting_.  This is like an ordinary virtual posting except the balanced+virtual postings in a transaction must balance to 0, like the real+postings (but separately from them).  Balanced virtual postings are also+excluded by '--real/-R' or 'real:1'.++1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere+  expenses:food                   $10+  assets:cash                    $-10+  [assets:checking:available]     $10+  [assets:checking:budget:food]  $-10++   Virtual postings have some legitimate uses, but those are few.  You+can usually find an equivalent journal entry using real postings, which+is more correct and provides better error checking.+++File: hledger_journal.info,  Node: Balance Assertions,  Next: Balance Assignments,  Prev: Virtual Postings,  Up: FILE FORMAT++1.9 Balance Assertions+======================++hledger supports Ledger-style balance assertions in journal files.+These look like '=EXPECTEDBALANCE' following a posting's amount.  Eg in+this example we assert the expected dollar balance in accounts a and b+after each posting:++2013/1/1+  a   $1  =$1+  b       =$-1++2013/1/2+  a   $1  =$2+  b  $-1  =$-2++   After reading a journal file, hledger will check all balance+assertions and report an error if any of them fail.  Balance assertions+can protect you from, eg, inadvertently disrupting reconciled balances+while cleaning up old entries.  You can disable them temporarily with+the '--ignore-assertions' flag, which can be useful for troubleshooting+or for reading Ledger files.+* Menu:++* Assertions and ordering::+* Assertions and included files::+* Assertions and multiple -f options::+* Assertions and commodities::+* Assertions and subaccounts::+* Assertions and virtual postings::+++File: hledger_journal.info,  Node: Assertions and ordering,  Next: Assertions and included files,  Up: Balance Assertions++1.9.1 Assertions and ordering+-----------------------------++hledger sorts an account's postings and assertions first by date and+then (for postings on the same day) by parse order.  Note this is+different from Ledger, which sorts assertions only by parse order.+(Also, Ledger assertions do not see the accumulated effect of repeated+postings to the same account within a transaction.)++   So, hledger balance assertions keep working if you reorder+differently-dated transactions within the journal.  But if you reorder+same-dated transactions or postings, assertions might break and require+updating.  This order dependence does bring an advantage: precise+control over the order of postings and assertions within a day, so you+can assert intra-day balances.+++File: hledger_journal.info,  Node: Assertions and included files,  Next: Assertions and multiple -f options,  Prev: Assertions and ordering,  Up: Balance Assertions++1.9.2 Assertions and included files+-----------------------------------++With included files, things are a little more complicated.  Including+preserves the ordering of postings and assertions.  If you have multiple+postings to an account on the same day, split across different files,+and you also want to assert the account's balance on the same day,+you'll have to put the assertion in the right file.+++File: hledger_journal.info,  Node: Assertions and multiple -f options,  Next: Assertions and commodities,  Prev: Assertions and included files,  Up: Balance Assertions++1.9.3 Assertions and multiple -f options+----------------------------------------++Balance assertions don't work well across files specified with multiple+-f options.  Use include or concatenate the files instead.+++File: hledger_journal.info,  Node: Assertions and commodities,  Next: Assertions and subaccounts,  Prev: Assertions and multiple -f options,  Up: Balance Assertions++1.9.4 Assertions and commodities+--------------------------------++The asserted balance must be a simple single-commodity amount, and in+fact the assertion checks only this commodity's balance within the+(possibly multi-commodity) account balance.  We could call this a+partial balance assertion.  This is compatible with Ledger, and makes it+possible to make assertions about accounts containing multiple+commodities.++   To assert each commodity's balance in such a multi-commodity account,+you can add multiple postings (with amount 0 if necessary).  But note+that no matter how many assertions you add, you can't be sure the+account does not contain some unexpected commodity.  (We'll add support+for this kind of total balance assertion if there's demand.)+++File: hledger_journal.info,  Node: Assertions and subaccounts,  Next: Assertions and virtual postings,  Prev: Assertions and commodities,  Up: Balance Assertions++1.9.5 Assertions and subaccounts+--------------------------------++Balance assertions do not count the balance from subaccounts; they check+the posted account's exclusive balance.  For example:++1/1+  checking:fund   1 = 1  ; post to this subaccount, its balance is now 1+  checking        1 = 1  ; post to the parent account, its exclusive balance is now 1+  equity++   The balance report's flat mode shows these exclusive balances more+clearly:++$ hledger bal checking --flat+                   1  checking+                   1  checking:fund+--------------------+                   2+++File: hledger_journal.info,  Node: Assertions and virtual postings,  Prev: Assertions and subaccounts,  Up: Balance Assertions++1.9.6 Assertions and virtual postings+-------------------------------------++Balance assertions are checked against all postings, both real and+virtual.  They are not affected by the '--real/-R' flag or 'real:'+query.+++File: hledger_journal.info,  Node: Balance Assignments,  Next: Prices,  Prev: Balance Assertions,  Up: FILE FORMAT++1.10 Balance Assignments+========================++Ledger-style balance assignments are also supported.  These are like+balance assertions, but with no posting amount on the left side of the+equals sign; instead it is calculated automatically so as to satisfy the+assertion.  This can be a convenience during data entry, eg when setting+opening balances:++; starting a new journal, set asset account balances +2016/1/1 opening balances+  assets:checking            = $409.32+  assets:savings             = $735.24+  assets:cash                 = $42+  equity:opening balances++   or when adjusting a balance to reality:++; no cash left; update balance, record any untracked spending as a generic expense+2016/1/15+  assets:cash    = $0+  expenses:misc++   The calculated amount depends on the account's balance in the+commodity at that point (which depends on the previously-dated postings+of the commodity to that account since the last balance assertion or+assignment).  Note that using balance assignments makes your journal a+little less explicit; to know the exact amount posted, you have to run+hledger or do the calculations yourself, instead of just reading it.+++File: hledger_journal.info,  Node: Prices,  Next: Comments,  Prev: Balance Assignments,  Up: FILE FORMAT++1.11 Prices+===========++* Menu:++* Transaction prices::+* Market prices::+++File: hledger_journal.info,  Node: Transaction prices,  Next: Market prices,  Up: Prices++1.11.1 Transaction prices+-------------------------++Within a transaction, you can note an amount's price in another+commodity.  This can be used to document the cost (in a purchase) or+selling price (in a sale).  For example, transaction prices are useful+to record purchases of a foreign currency.++   Transaction prices are fixed, and do not change over time.  (Ledger+users: Ledger uses a different syntax for fixed prices, '{=UNITPRICE}',+which hledger currently ignores).++   There are several ways to record a transaction price:++  1. Write the price per unit, as '@ UNITPRICE' after the amount:++     2009/1/1+       assets:euros     €100 @ $1.35  ; one hundred euros purchased at $1.35 each+       assets:dollars                 ; balancing amount is -$135.00++  2. Write the total price, as '@@ TOTALPRICE' after the amount:++     2009/1/1+       assets:euros     €100 @@ $135  ; one hundred euros purchased at $135 for the lot+       assets:dollars++  3. Specify amounts for all postings, using exactly two commodities,+     and let hledger infer the price that balances the transaction:++     2009/1/1+       assets:euros     €100          ; one hundred euros purchased+       assets:dollars  $-135          ; for $135++   Amounts with transaction prices can be displayed in the transaction+price's commodity by using the '-B/--cost' flag (except for #551) ("B"+is from "cost Basis").  Eg for the above, here is how -B affects the+balance report:++$ hledger bal -N --flat+               $-135  assets:dollars+                €100  assets:euros+$ hledger bal -N --flat -B+               $-135  assets:dollars+                $135  assets:euros    # <- the euros' cost++   Note -B is sensitive to the order of postings when a transaction+price is inferred: the inferred price will be in the commodity of the+last amount.  So if example 3's postings are reversed, while the+transaction is equivalent, -B shows something different:++2009/1/1+  assets:dollars  $-135               ; 135 dollars sold+  assets:euros     €100               ; for 100 euros++$ hledger bal -N --flat -B+               €-100  assets:dollars  # <- the dollars' selling price+                €100  assets:euros+++File: hledger_journal.info,  Node: Market prices,  Prev: Transaction prices,  Up: Prices++1.11.2 Market prices+--------------------++Market prices are not tied to a particular transaction; they represent+historical exchange rates between two commodities.  (Ledger calls them+historical prices.)  For example, the prices published by a stock+exchange or the foreign exchange market.  hledger can use these prices+to show the market value of things at a given date, see market value.++   To record market prices, use P directives in the main journal or in+an included file.  Their format is:++P DATE COMMODITYBEINGPRICED UNITPRICE++   DATE is a simple date as usual.  COMMODITYBEINGPRICED is the symbol+of the commodity being priced.  UNITPRICE is an ordinary amount (symbol+and quantity) in a second commodity, specifying the unit price or+conversion rate for the first commodity in terms of the second, on the+given date.++   For example, the following directives say that one euro was worth+1.35 US dollars during 2009, and $1.40 from 2010 onward:++P 2009/1/1 € $1.35+P 2010/1/1 € $1.40+++File: hledger_journal.info,  Node: Comments,  Next: Tags,  Prev: Prices,  Up: FILE FORMAT++1.12 Comments+=============++Lines in the journal beginning with a semicolon (';') or hash ('#') or+star ('*') are comments, and will be ignored.  (Star comments cause+org-mode nodes to be ignored, allowing emacs users to fold and navigate+their journals with org-mode or orgstruct-mode.)++   Also, anything between 'comment' and 'end comment' directives is a+(multi-line) comment.  If there is no 'end comment', the comment extends+to the end of the file.++   You can attach comments to a transaction by writing them after the+description and/or indented on the following lines (before the+postings).  Similarly, you can attach comments to an individual posting+by writing them after the amount and/or indented on the following lines.+Transaction and posting comments must begin with a semicolon (';').++   Some examples:++# a file comment++; also a file comment++comment+This is a multiline file comment,+which continues until a line+where the "end comment" string+appears on its own (or end of file).+end comment++2012/5/14 something  ; a transaction comment+    ; the transaction comment, continued+    posting1  1  ; a comment for posting 1+    posting2+    ; a comment for posting 2+    ; another comment line for posting 2+; a file comment (because not indented)+++File: hledger_journal.info,  Node: Tags,  Next: Directives,  Prev: Comments,  Up: FILE FORMAT++1.13 Tags+=========++Tags are a way to add extra labels or labelled data to postings and+transactions, which you can then search or pivot on.++   A simple tag is a word (which may contain hyphens) followed by a full+colon, written inside a transaction or posting comment line:++2017/1/16 bought groceries    ; sometag:++   Tags can have a value, which is the text after the colon, up to the+next comma or end of line, with leading/trailing whitespace removed:++    expenses:food    $10   ; a-posting-tag: the tag value++   Note this means hledger's tag values can not contain commas or+newlines.  Ending at commas means you can write multiple short tags on+one line, comma separated:++    assets:checking       ; a comment containing tag1:, tag2: some value ...++   Here,++   * "'a comment containing'" is just comment text, not a tag+   * "'tag1'" is a tag with no value+   * "'tag2'" is another tag, whose value is "'some value ...'"++   Tags in a transaction comment affect the transaction and all of its+postings, while tags in a posting comment affect only that posting.  For+example, the following transaction has three tags ('A', 'TAG2',+'third-tag') and the posting has four (those plus 'posting-tag'):++1/1 a transaction  ; A:, TAG2:+    ; third-tag: a third transaction tag, <- with a value+    (a)  $1  ; posting-tag:++   Tags are like Ledger's metadata feature, except hledger's tag values+are simple strings.+++File: hledger_journal.info,  Node: Directives,  Prev: Tags,  Up: FILE FORMAT++1.14 Directives+===============++* Menu:++* Account aliases::+* account directive::+* apply account directive::+* Multi-line comments::+* commodity directive::+* Default commodity::+* Default year::+* Including other files::+++File: hledger_journal.info,  Node: Account aliases,  Next: account directive,  Up: Directives++1.14.1 Account aliases+----------------------++You can define aliases which rewrite your account names (after reading+the journal, before generating reports).  hledger's account aliases can+be useful for:++   * expanding shorthand account names to their full form, allowing+     easier data entry and a less verbose journal+   * adapting old journals to your current chart of accounts+   * experimenting with new account organisations, like a new hierarchy+     or combining two accounts into one+   * customising reports++   See also Cookbook: rewrite account names.+* Menu:++* Basic aliases::+* Regex aliases::+* Multiple aliases::+* end aliases::+++File: hledger_journal.info,  Node: Basic aliases,  Next: Regex aliases,  Up: Account aliases++1.14.1.1 Basic aliases+......................++To set an account alias, use the 'alias' directive in your journal file.+This affects all subsequent journal entries in the current file or its+included files.  The spaces around the = are optional:++alias OLD = NEW++   Or, you can use the '--alias 'OLD=NEW'' option on the command line.+This affects all entries.  It's useful for trying out aliases+interactively.++   OLD and NEW are full account names.  hledger will replace any+occurrence of the old account name with the new one.  Subaccounts are+also affected.  Eg:++alias checking = assets:bank:wells fargo:checking+# rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"+++File: hledger_journal.info,  Node: Regex aliases,  Next: Multiple aliases,  Prev: Basic aliases,  Up: Account aliases++1.14.1.2 Regex aliases+......................++There is also a more powerful variant that uses a regular expression,+indicated by the forward slashes:++alias /REGEX/ = REPLACEMENT++   or '--alias '/REGEX/=REPLACEMENT''.++   REGEX is a case-insensitive regular expression.  Anywhere it matches+inside an account name, the matched part will be replaced by+REPLACEMENT. If REGEX contains parenthesised match groups, these can be+referenced by the usual numeric backreferences in REPLACEMENT. Eg:++alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3+# rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking"++   Also note that REPLACEMENT continues to the end of line (or on+command line, to end of option argument), so it can contain trailing+whitespace.+++File: hledger_journal.info,  Node: Multiple aliases,  Next: end aliases,  Prev: Regex aliases,  Up: Account aliases++1.14.1.3 Multiple aliases+.........................++You can define as many aliases as you like using directives or+command-line options.  Aliases are recursive - each alias sees the+result of applying previous ones.  (This is different from Ledger, where+aliases are non-recursive by default).  Aliases are applied in the+following order:++  1. alias directives, most recently seen first (recent directives take+     precedence over earlier ones; directives not yet seen are ignored)+  2. alias options, in the order they appear on the command line+++File: hledger_journal.info,  Node: end aliases,  Prev: Multiple aliases,  Up: Account aliases++1.14.1.4 end aliases+....................++You can clear (forget) all currently defined aliases with the 'end+aliases' directive:++end aliases+++File: hledger_journal.info,  Node: account directive,  Next: apply account directive,  Prev: Account aliases,  Up: Directives++1.14.2 account directive+------------------------++The 'account' directive predefines account names, as in Ledger and+Beancount.  This may be useful for your own documentation; hledger+doesn't make use of it yet.++; account ACCT+;   OPTIONAL COMMENTS/TAGS...++account assets:bank:checking+ a comment+ acct-no:12345++account expenses:food++; etc.+++File: hledger_journal.info,  Node: apply account directive,  Next: Multi-line comments,  Prev: account directive,  Up: Directives++1.14.3 apply account directive+------------------------------++You can specify a parent account which will be prepended to all accounts+within a section of the journal.  Use the 'apply account' and 'end apply+account' directives like so:++apply account home++2010/1/1+    food    $10+    cash++end apply account++   which is equivalent to:++2010/01/01+    home:food           $10+    home:cash          $-10++   If 'end apply account' is omitted, the effect lasts to the end of the+file.  Included files are also affected, eg:++apply account business+include biz.journal+end apply account+apply account personal+include personal.journal++   Prior to hledger 1.0, legacy 'account' and 'end' spellings were also+supported.+++File: hledger_journal.info,  Node: Multi-line comments,  Next: commodity directive,  Prev: apply account directive,  Up: Directives++1.14.4 Multi-line comments+--------------------------++A line containing just 'comment' starts a multi-line comment, and a line+containing just 'end comment' ends it.  See comments.+++File: hledger_journal.info,  Node: commodity directive,  Next: Default commodity,  Prev: Multi-line comments,  Up: Directives++1.14.5 commodity directive+--------------------------++The 'commodity' directive predefines commodities (currently this is just+informational), and also it may define the display format for amounts in+this commodity (overriding the automatically inferred format).++   It may be written on a single line, like this:++; commodity EXAMPLEAMOUNT++; display AAAA amounts with the symbol on the right, space-separated,+; using period as decimal point, with four decimal places, and+; separating thousands with comma.+commodity 1,000.0000 AAAA++   or on multiple lines, using the "format" subdirective.  In this case+the commodity symbol appears twice and should be the same in both+places:++; commodity SYMBOL+;   format EXAMPLEAMOUNT++; display indian rupees with currency name on the left,+; thousands, lakhs and crores comma-separated,+; period as decimal point, and two decimal places.+commodity INR+  format INR 9,99,99,999.00+++File: hledger_journal.info,  Node: Default commodity,  Next: Default year,  Prev: commodity directive,  Up: Directives++1.14.6 Default commodity+------------------------++The D directive sets a default commodity (and display format), to be+used for amounts without a commodity symbol (ie, plain numbers).  (Note+this differs from Ledger's default commodity directive.)  The commodity+and display format will be applied to all subsequent commodity-less+amounts, or until the next D directive.++# commodity-less amounts should be treated as dollars+# (and displayed with symbol on the left, thousands separators and two decimal places)+D $1,000.00++1/1+  a     5    ; <- commodity-less amount, becomes $1+  b+++File: hledger_journal.info,  Node: Default year,  Next: Including other files,  Prev: Default commodity,  Up: Directives++1.14.7 Default year+-------------------++You can set a default year to be used for subsequent dates which don't+specify a year.  This is a line beginning with 'Y' followed by the year.+Eg:++Y2009      ; set default year to 2009++12/15      ; equivalent to 2009/12/15+  expenses  1+  assets++Y2010      ; change default year to 2010++2009/1/30  ; specifies the year, not affected+  expenses  1+  assets++1/31       ; equivalent to 2010/1/31+  expenses  1+  assets+++File: hledger_journal.info,  Node: Including other files,  Prev: Default year,  Up: Directives++1.14.8 Including other files+----------------------------++You can pull in the content of additional journal files by writing an+include directive, like this:++include path/to/file.journal++   If the path does not begin with a slash, it is relative to the+current file.  Glob patterns ('*') are not currently supported.++   The 'include' directive can only be used in journal files.  It can+include journal, timeclock or timedot files, but not CSV files.+++File: hledger_journal.info,  Node: Periodic transactions,  Next: Automated posting rules,  Prev: FILE FORMAT,  Up: Top++2 Periodic transactions+***********************++A periodic transaction starts with a tilde '~' in place of a date+followed by a period expression:++~ weekly+  assets:bank:checking   $400 ; paycheck+  income:acme inc++   Periodic transactions are used for forecasting and budgeting only,+they have no effect unless the '--forecast' or '--budget' flag is used.+With '--forecast', each periodic transaction rule generates recurring+forecast transactions at the specified interval, beginning the day after+the last recorded journal transaction and ending 6 months from today, or+at the specified report end date.  With 'balance --budget', each+periodic transaction declares recurring budget goals for one or more+accounts.+For more details, see: balance > Budgeting, Budgeting and Forecasting.+++File: hledger_journal.info,  Node: Automated posting rules,  Next: EDITOR SUPPORT,  Prev: Periodic transactions,  Up: Top++3 Automated posting rules+*************************++Automated posting rule starts with an equal sign '=' in place of a date,+followed by a query:++= expenses:gifts+    budget:gifts  *-1+    assets:budget  *1++   When '--auto' option is specified on the command line, automated+posting rule will add its postings to all transactions that match the+query.++   If amount in the automated posting rule includes commodity name, new+posting will be made in the given commodity, otherwise commodity of the+matched transaction will be used.++   When amount in the automated posting rule begins with the '*', amount+will be treated as a multiplier that is applied to the amount of the+first posting in the matched transaction.++   In example above, every transaction in 'expenses:gifts' account will+have two additional postings added to it: amount of the original gift+will be debited from 'budget:gifts' and credited into 'assets:budget':++; Original transaction+2017-12-14+  expenses:gifts  $20+  assets++; With automated postings applied+2017/12/14+    expenses:gifts             $20+    assets+    budget:gifts              $-20+    assets:budget              $20+++File: hledger_journal.info,  Node: EDITOR SUPPORT,  Prev: Automated posting rules,  Up: Top++4 EDITOR SUPPORT+****************++Add-on modes exist for various text editors, to make working with+journal files easier.  They add colour, navigation aids and helpful+commands.  For hledger users who edit the journal file directly (the+majority), using one of these modes is quite recommended.++   These were written with Ledger in mind, but also work with hledger+files:++Emacs             http://www.ledger-cli.org/3.0/doc/ledger-mode.html+Vim               https://github.com/ledger/ledger/wiki/Getting-started+Sublime Text      https://github.com/ledger/ledger/wiki/Using-Sublime-Text+Textmate          https://github.com/ledger/ledger/wiki/Using-TextMate-2+Text Wrangler     https://github.com/ledger/ledger/wiki/Editing-Ledger-files-with-TextWrangler+Visual Studio     https://marketplace.visualstudio.com/items?itemName=mark-hansen.hledger-vscode+Code+++Tag Table:+Node: Top76+Node: FILE FORMAT2424+Ref: #file-format2555+Node: Transactions2778+Ref: #transactions2899+Node: Postings3583+Ref: #postings3710+Node: Dates4705+Ref: #dates4820+Node: Simple dates4885+Ref: #simple-dates5011+Node: Secondary dates5377+Ref: #secondary-dates5531+Node: Posting dates7094+Ref: #posting-dates7223+Node: Status8597+Ref: #status8717+Node: Description10425+Ref: #description10563+Node: Payee and note10882+Ref: #payee-and-note10996+Node: Account names11238+Ref: #account-names11381+Node: Amounts11868+Ref: #amounts12004+Node: Virtual Postings14684+Ref: #virtual-postings14843+Node: Balance Assertions16063+Ref: #balance-assertions16238+Node: Assertions and ordering17134+Ref: #assertions-and-ordering17320+Node: Assertions and included files18020+Ref: #assertions-and-included-files18261+Node: Assertions and multiple -f options18594+Ref: #assertions-and-multiple--f-options18848+Node: Assertions and commodities18980+Ref: #assertions-and-commodities19215+Node: Assertions and subaccounts19911+Ref: #assertions-and-subaccounts20143+Node: Assertions and virtual postings20664+Ref: #assertions-and-virtual-postings20871+Node: Balance Assignments21013+Ref: #balance-assignments21182+Node: Prices22302+Ref: #prices22435+Node: Transaction prices22486+Ref: #transaction-prices22631+Node: Market prices24787+Ref: #market-prices24922+Node: Comments25882+Ref: #comments26004+Node: Tags27246+Ref: #tags27364+Node: Directives28766+Ref: #directives28879+Node: Account aliases29072+Ref: #account-aliases29216+Node: Basic aliases29820+Ref: #basic-aliases29963+Node: Regex aliases30653+Ref: #regex-aliases30821+Node: Multiple aliases31539+Ref: #multiple-aliases31711+Node: end aliases32209+Ref: #end-aliases32349+Node: account directive32450+Ref: #account-directive32630+Node: apply account directive32926+Ref: #apply-account-directive33122+Node: Multi-line comments33781+Ref: #multi-line-comments33971+Node: commodity directive34099+Ref: #commodity-directive34283+Node: Default commodity35155+Ref: #default-commodity35328+Node: Default year35865+Ref: #default-year36030+Node: Including other files36453+Ref: #including-other-files36610+Node: Periodic transactions37007+Ref: #periodic-transactions37178+Node: Automated posting rules37921+Ref: #automated-posting-rules38099+Node: EDITOR SUPPORT39208+Ref: #editor-support39338++End Tag Table
+ .otherdocs/hledger_journal.txt view
@@ -0,0 +1,918 @@++hledger_journal(5)           hledger User Manuals           hledger_journal(5)++++NAME+       Journal - hledger's default file format, representing a General Journal++DESCRIPTION+       hledger's usual data source is a plain  text  file  containing  journal+       entries  in  hledger  journal  format.  This file represents a standard+       accounting general journal.  I use file names ending in  .journal,  but+       that's not required.  The journal file contains a number of transaction+       entries, each describing a transfer of money (or any commodity) between+       two or more named accounts, in a simple format readable by both hledger+       and humans.++       hledger's journal format is a compatible subset,  mostly,  of  ledger's+       journal  format,  so  hledger  can  work with compatible ledger journal+       files as well.  It's safe, and encouraged,  to  run  both  hledger  and+       ledger on the same journal file, eg to validate the results you're get-+       ting.++       You can use hledger without learning any more about this file; just use+       the  add  or web commands to create and update it.  Many users, though,+       also edit the  journal  file  directly  with  a  text  editor,  perhaps+       assisted by the helper modes for emacs or vim.++       Here's an example:++              ; A sample journal file. This is a comment.++              2008/01/01 income               ; <- transaction's first line starts in column 0, contains date and description+                  assets:bank:checking  $1    ; <- posting lines start with whitespace, each contains an account name+                  income:salary        $-1    ;    followed by at least two spaces and an amount++              2008/06/01 gift+                  assets:bank:checking  $1    ; <- at least two postings in a transaction+                  income:gifts         $-1    ; <- their amounts must balance to 0++              2008/06/02 save+                  assets:bank:saving    $1+                  assets:bank:checking        ; <- one amount may be omitted; here $-1 is inferred++              2008/06/03 eat & shop           ; <- description can be anything+                  expenses:food         $1+                  expenses:supplies     $1    ; <- this transaction debits two expense accounts+                  assets:cash                 ; <- $-2 inferred++              2008/10/01 take a loan+                  assets:bank:checking  $1+                  liabilities:debts    $-1++              2008/12/31 * pay off            ; <- an optional * or ! after the date means "cleared" (or anything you want)+                  liabilities:debts     $1+                  assets:bank:checking++FILE FORMAT+   Transactions+       Transactions  are  movements  of  some  quantity of commodities between+       named accounts.  Each transaction is represented  by  a  journal  entry+       beginning  with a simple date in column 0.  This can be followed by any+       of the following, separated by spaces:++       o (optional) a status character (empty, !, or *)++       o (optional) a transaction code (any short number or text, enclosed  in+         parentheses)++       o (optional) a transaction description (any remaining text until end of+         line or a semicolon)++       o (optional) a transaction comment  (any  remaining  text  following  a+         semicolon until end of line)++       Then  comes zero or more (but usually at least 2) indented lines repre-+       senting...++   Postings+       A posting is an addition of some amount to, or removal of  some  amount+       from,  an account.  Each posting line begins with at least one space or+       tab (2 or 4 spaces is common), followed by:++       o (optional) a status character (empty, !, or *), followed by a space++       o (required) an account name (any text,  optionally  containing  single+         spaces, until end of line or a double space)++       o (optional) two or more spaces or tabs followed by an amount.++       Positive  amounts  are being added to the account, negative amounts are+       being removed.++       The amounts within a transaction must always sum up to zero.  As a con-+       venience,  one  amount  may be left blank; it will be inferred so as to+       balance the transaction.++       Be sure to note the unusual two-space delimiter  between  account  name+       and  amount.  This makes it easy to write account names containing spa-+       ces.  But if you accidentally leave only one space (or tab) before  the+       amount, the amount will be considered part of the account name.++   Dates+   Simple dates+       Within  a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)+       Leading zeros are optional.  The year may be omitted, in which case  it+       will  be  inferred  from  the  context  -  the current transaction, the+       default year set with a default year directive,  or  the  current  date+       when  the command is run.  Some examples: 2010/01/31, 1/31, 2010-01-31,+       2010.1.31.++   Secondary dates+       Real-life transactions sometimes involve more than one date  -  eg  the+       date you write a cheque, and the date it clears in your bank.  When you+       want to model this, eg for more  accurate  balances,  you  can  specify+       individual  posting dates, which I recommend.  Or, you can use the sec-+       ondary dates (aka auxiliary/effective  dates)  feature,  supported  for+       compatibility with Ledger.++       A secondary date can be written after the primary date, separated by an+       equals sign.  The primary date, on the left, is used  by  default;  the+       secondary  date,  on the right, is used when the --date2 flag is speci-+       fied (--aux-date or --effective also work).++       The meaning of secondary dates is up to you, but it's best to follow  a+       consistent  rule.   Eg  write  the bank's clearing date as primary, and+       when needed, the date the transaction was initiated as secondary.++       Here's an example.  Note that a secondary date will use the year of the+       primary date if unspecified.++              2010/2/23=2/19 movie ticket+                expenses:cinema                   $10+                assets:checking++              $ hledger register checking+              2010/02/23 movie ticket         assets:checking                $-10         $-10++              $ hledger register checking --date2+              2010/02/19 movie ticket         assets:checking                $-10         $-10++       Secondary  dates require some effort; you must use them consistently in+       your journal entries and remember whether to use or not use the --date2+       flag for your reports.  They are included in hledger for Ledger compat-+       ibility, but posting dates are  a  more  powerful  and  less  confusing+       alternative.++   Posting dates+       You  can  give  individual  postings a different date from their parent+       transaction, by adding a posting comment containing a tag  (see  below)+       like date:DATE.  This is probably the best way to control posting dates+       precisely.  Eg in  this  example  the  expense  should  appear  in  May+       reports,  and the deduction from checking should be reported on 6/1 for+       easy bank reconciliation:++              2015/5/30+                  expenses:food     $10   ; food purchased on saturday 5/30+                  assets:checking         ; bank cleared it on monday, date:6/1++              $ hledger -f t.j register food+              2015/05/30                      expenses:food                  $10           $10++              $ hledger -f t.j register checking+              2015/06/01                      assets:checking               $-10          $-10++       DATE should be a simple date; if the year is not specified it will  use+       the  year  of  the  transaction's date.  You can set the secondary date+       similarly, with date2:DATE2.  The date: or  date2:  tags  must  have  a+       valid  simple  date  value  if they are present, eg a date: tag with no+       value is not allowed.++       Ledger's earlier, more compact bracketed date syntax is also supported:+       [DATE],  [DATE=DATE2]  or  [=DATE2].  hledger will attempt to parse any+       square-bracketed sequence of the 0123456789/-.= characters in this way.+       With  this  syntax, DATE infers its year from the transaction and DATE2+       infers its year from DATE.++   Status+       Transactions, or individual postings within a transaction, can  have  a+       status  mark,  which  is  a  single  character  before  the transaction+       description or posting account name, separated  from  it  by  a  space,+       indicating one of three statuses:+++       mark     status+       ------------------+                unmarked+       !        pending+       *        cleared++       When  reporting,  you  can  filter  by  status  with the -U/--unmarked,+       -P/--pending, and -C/--cleared flags; or  the  status:,  status:!,  and+       status:* queries; or the U, P, C keys in hledger-ui.++       Note,  in Ledger and in older versions of hledger, the "unmarked" state+       is called "uncleared".  As  of  hledger  1.3  we  have  renamed  it  to+       unmarked for clarity.++       To  replicate Ledger and old hledger's behaviour of also matching pend-+       ing, combine -U and -P.++       Status marks are optional, but can be helpful eg for  reconciling  with+       real-world accounts.  Some editor modes provide highlighting and short-+       cuts for working with status.  Eg in Emacs ledger-mode, you can  toggle+       transaction status with C-c C-e, or posting status with C-c C-c.++       What  "uncleared", "pending", and "cleared" actually mean is up to you.+       Here's one suggestion:+++       status       meaning+       --------------------------------------------------------------------------+       uncleared    recorded but not yet reconciled; needs review+       pending      tentatively reconciled (if needed, eg during a big reconcil-+                    iation)+       cleared      complete, reconciled as far as possible, and considered cor-+                    rect++       With this scheme, you would use -PC to see the current balance at  your+       bank,  -U  to  see  things which will probably hit your bank soon (like+       uncashed checks), and no flags to see the most up-to-date state of your+       finances.++   Description+       A  transaction's description is the rest of the line following the date+       and status mark (or until a  comment  begins).   Sometimes  called  the+       "narration" in traditional bookkeeping, it can be used for whatever you+       wish, or left blank.  Transaction descriptions can be  queried,  unlike+       comments.++   Payee and note+       You  can  optionally  include  a | (pipe) character in a description to+       subdivide it into a payee/payer name on the left and  additional  notes+       on  the  right.   This may be worthwhile if you need to do more precise+       querying and pivoting by payee.++   Account names+       Account names typically have several parts separated by a  full  colon,+       from  which hledger derives a hierarchical chart of accounts.  They can+       be anything you like, but  in  finance  there  are  traditionally  five+       top-level  accounts: assets, liabilities, income, expenses, and equity.++       Account names may contain single  spaces,  eg:  assets:accounts receiv-+       able.   Because  of  this,  they must always be followed by two or more+       spaces (or newline).++       Account names can be aliased.++   Amounts+       After the account name, there is usually an amount.  Important: between+       account name and amount, there must be two or more spaces.++       Amounts  consist of a number and (usually) a currency symbol or commod-+       ity name.  Some examples:++       2.00001+       $1+       4000 AAPL+       3 "green apples"+       -$1,000,000.00+       INR 9,99,99,999.00+       EUR -2.000.000,00+       1 999 999.9455++       As you can see, the amount format is somewhat flexible:++       o amounts are a number (the "quantity") and optionally a currency  sym-+         bol/commodity name (the "commodity").++       o the  commodity  is  a  symbol, word, or phrase, on the left or right,+         with or without a separating space.  If the commodity  contains  num-+         bers,  spaces  or  non-word punctuation it must be enclosed in double+         quotes.++       o negative amounts with a commodity on the left can have the minus sign+         before or after it++       o digit  groups  (thousands, or any other grouping) can be separated by+         space or comma or period and should be used as separator between  all+         groups++       o decimal  part  can be separated by comma or period and should be dif-+         ferent from digit groups separator++       You can use any of these  variations  when  recording  data.   However,+       there  is  some  ambiguous  way of representing numbers like $1.000 and+       $1,000 both may mean either one thousand or  one  dollar.   By  default+       hledger  will assume that this is sole delimiter is used only for deci-+       mals.  On the other hand commodity format declared prior to  that  line+       will help to resolve that ambiguity differently:++              commodity $1,000.00++              2017/12/25 New life of Scrooge+                  expenses:gifts  $1,000+                  assets++       Though  journal  may  contain  mixed  styles  to represent amount, when+       hledger displays amounts, it will choose a consistent format  for  each+       commodity.   (Except  for  price amounts, which are always formatted as+       written).  The display format is chosen as follows:++       o if there is a commodity directive specifying the format, that is used++       o otherwise  the  format  is  inferred from the first posting amount in+         that commodity in the journal, and the precision (number  of  decimal+         places) will be the maximum from all posting amounts in that commmod-+         ity++       o or if there are no such amounts in the journal, a default  format  is+         used (like $1000.00).++       Price  amounts  and amounts in D directives usually don't affect amount+       format inference, but in some situations they  can  do  so  indirectly.+       (Eg  when  D's default commodity is applied to a commodity-less amount,+       or when an amountless posting is balanced using a price's commodity, or+       when  -V  is  used.) If you find this causing problems, set the desired+       format with a commodity directive.++   Virtual Postings+       When you parenthesise the account name in a posting,  we  call  that  a+       virtual posting, which means:++       o it is ignored when checking that the transaction is balanced++       o it  is  excluded from reports when the --real/-R flag is used, or the+         real:1 query.++       You could use this, eg, to set an  account's  opening  balance  without+       needing to use the equity:opening balances account:++              1/1 special unbalanced posting to set initial balance+                (assets:checking)   $1000++       When the account name is bracketed, we call it a balanced virtual post-+       ing.  This is like an ordinary virtual posting except the balanced vir-+       tual  postings  in a transaction must balance to 0, like the real post-+       ings (but separately from them).  Balanced virtual  postings  are  also+       excluded by --real/-R or real:1.++              1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere+                expenses:food                   $10+                assets:cash                    $-10+                [assets:checking:available]     $10+                [assets:checking:budget:food]  $-10++       Virtual postings have some legitimate uses, but those are few.  You can+       usually find an equivalent journal entry using real postings, which  is+       more correct and provides better error checking.++   Balance Assertions+       hledger  supports  Ledger-style  balance  assertions  in journal files.+       These look like =EXPECTEDBALANCE following a posting's amount.   Eg  in+       this  example we assert the expected dollar balance in accounts a and b+       after each posting:++              2013/1/1+                a   $1  =$1+                b       =$-1++              2013/1/2+                a   $1  =$2+                b  $-1  =$-2++       After reading a journal file, hledger will check all balance assertions+       and  report  an error if any of them fail.  Balance assertions can pro-+       tect you from, eg, inadvertently disrupting reconciled  balances  while+       cleaning  up  old  entries.   You can disable them temporarily with the+       --ignore-assertions flag, which can be useful  for  troubleshooting  or+       for reading Ledger files.++   Assertions and ordering+       hledger  sorts  an  account's postings and assertions first by date and+       then (for postings on the same day) by parse order.  Note this is  dif-+       ferent from Ledger, which sorts assertions only by parse order.  (Also,+       Ledger assertions do not see the accumulated effect of  repeated  post-+       ings to the same account within a transaction.)++       So,  hledger  balance  assertions  keep  working if you reorder differ-+       ently-dated transactions  within  the  journal.   But  if  you  reorder+       same-dated transactions or postings, assertions might break and require+       updating.  This order dependence does bring an advantage: precise  con-+       trol over the order of postings and assertions within a day, so you can+       assert intra-day balances.++   Assertions and included files+       With included files, things are a little more  complicated.   Including+       preserves  the ordering of postings and assertions.  If you have multi-+       ple postings to an account on the  same  day,  split  across  different+       files,  and  you  also want to assert the account's balance on the same+       day, you'll have to put the assertion in the right file.++   Assertions and multiple -f options+       Balance assertions don't work well across files specified with multiple+       -f options.  Use include or concatenate the files instead.++   Assertions and commodities+       The  asserted  balance must be a simple single-commodity amount, and in+       fact the assertion checks only  this  commodity's  balance  within  the+       (possibly  multi-commodity) account balance.  We could call this a par-+       tial balance assertion.  This is compatible with Ledger, and  makes  it+       possible to make assertions about accounts containing multiple commodi-+       ties.++       To assert each commodity's balance in such a  multi-commodity  account,+       you  can  add multiple postings (with amount 0 if necessary).  But note+       that no matter how many assertions you  add,  you  can't  be  sure  the+       account does not contain some unexpected commodity.  (We'll add support+       for this kind of total balance assertion if there's demand.)++   Assertions and subaccounts+       Balance assertions do not count  the  balance  from  subaccounts;  they+       check the posted account's exclusive balance.  For example:++              1/1+                checking:fund   1 = 1  ; post to this subaccount, its balance is now 1+                checking        1 = 1  ; post to the parent account, its exclusive balance is now 1+                equity++       The  balance  report's  flat  mode  shows these exclusive balances more+       clearly:++              $ hledger bal checking --flat+                                 1  checking+                                 1  checking:fund+              --------------------+                                 2++   Assertions and virtual postings+       Balance assertions are checked against all postings, both real and vir-+       tual.  They are not affected by the --real/-R flag or real: query.++   Balance Assignments+       Ledger-style  balance  assignments  are also supported.  These are like+       balance assertions, but with no posting amount on the left side of  the+       equals  sign;  instead  it is calculated automatically so as to satisfy+       the assertion.  This can be a convenience during data  entry,  eg  when+       setting opening balances:++              ; starting a new journal, set asset account balances+              2016/1/1 opening balances+                assets:checking            = $409.32+                assets:savings             = $735.24+                assets:cash                 = $42+                equity:opening balances++       or when adjusting a balance to reality:++              ; no cash left; update balance, record any untracked spending as a generic expense+              2016/1/15+                assets:cash    = $0+                expenses:misc++       The calculated amount depends on the account's balance in the commodity+       at that point (which depends on the previously-dated  postings  of  the+       commodity  to  that account since the last balance assertion or assign-+       ment).  Note that using balance assignments makes your journal a little+       less explicit; to know the exact amount posted, you have to run hledger+       or do the calculations yourself, instead of just reading it.++   Prices+   Transaction prices+       Within a transaction, you can note an amount's price in another commod-+       ity.   This can be used to document the cost (in a purchase) or selling+       price (in a sale).  For  example,  transaction  prices  are  useful  to+       record purchases of a foreign currency.++       Transaction  prices  are  fixed,  and do not change over time.  (Ledger+       users: Ledger uses a different syntax for fixed  prices,  {=UNITPRICE},+       which hledger currently ignores).++       There are several ways to record a transaction price:++       1. Write the price per unit, as @ UNITPRICE after the amount:++                  2009/1/1+                    assets:euros     100 @ $1.35  ; one hundred euros purchased at $1.35 each+                    assets:dollars                 ; balancing amount is -$135.00++       2. Write the total price, as @@ TOTALPRICE after the amount:++                  2009/1/1+                    assets:euros     100 @@ $135  ; one hundred euros purchased at $135 for the lot+                    assets:dollars++       3. Specify amounts for all postings, using exactly two commodities, and+          let hledger infer the price that balances the transaction:++                  2009/1/1+                    assets:euros     100          ; one hundred euros purchased+                    assets:dollars  $-135          ; for $135++       Amounts with transaction prices can be  displayed  in  the  transaction+       price's commodity by using the -B/--cost flag (except for #551) ("B" is+       from "cost Basis").  Eg for the above, here is how -B affects the  bal-+       ance report:++              $ hledger bal -N --flat+                             $-135  assets:dollars+                              100  assets:euros+              $ hledger bal -N --flat -B+                             $-135  assets:dollars+                              $135  assets:euros    # <- the euros' cost++       Note  -B is sensitive to the order of postings when a transaction price+       is inferred: the inferred price will be in the commodity  of  the  last+       amount.  So if example 3's postings are reversed, while the transaction+       is equivalent, -B shows something different:++              2009/1/1+                assets:dollars  $-135               ; 135 dollars sold+                assets:euros     100               ; for 100 euros++              $ hledger bal -N --flat -B+                             -100  assets:dollars  # <- the dollars' selling price+                              100  assets:euros++   Market prices+       Market prices are not tied to a particular transaction; they  represent+       historical  exchange rates between two commodities.  (Ledger calls them+       historical prices.) For  example,  the  prices  published  by  a  stock+       exchange  or the foreign exchange market.  hledger can use these prices+       to show the market value of things at a given date, see market value.++       To record market prices, use P directives in the main journal or in  an+       included file.  Their format is:++              P DATE COMMODITYBEINGPRICED UNITPRICE++       DATE  is a simple date as usual.  COMMODITYBEINGPRICED is the symbol of+       the commodity being priced.  UNITPRICE is an  ordinary  amount  (symbol+       and  quantity) in a second commodity, specifying the unit price or con-+       version rate for the first commodity in terms of  the  second,  on  the+       given date.++       For  example, the following directives say that one euro was worth 1.35+       US dollars during 2009, and $1.40 from 2010 onward:++              P 2009/1/1  $1.35+              P 2010/1/1  $1.40++   Comments+       Lines in the journal beginning with a semicolon (;) or hash (#) or star+       (*)  are  comments, and will be ignored.  (Star comments cause org-mode+       nodes to be ignored, allowing emacs users to fold  and  navigate  their+       journals with org-mode or orgstruct-mode.)++       Also,   anything  between  comment  and  end comment  directives  is  a+       (multi-line) comment.  If there is no end comment, the comment  extends+       to the end of the file.++       You  can  attach  comments  to  a transaction by writing them after the+       description and/or indented on the following lines  (before  the  post-+       ings).   Similarly, you can attach comments to an individual posting by+       writing them after the amount and/or indented on the  following  lines.+       Transaction and posting comments must begin with a semicolon (;).++       Some examples:++              # a file comment++              ; also a file comment++              comment+              This is a multiline file comment,+              which continues until a line+              where the "end comment" string+              appears on its own (or end of file).+              end comment++              2012/5/14 something  ; a transaction comment+                  ; the transaction comment, continued+                  posting1  1  ; a comment for posting 1+                  posting2+                  ; a comment for posting 2+                  ; another comment line for posting 2+              ; a file comment (because not indented)++   Tags+       Tags  are  a  way  to add extra labels or labelled data to postings and+       transactions, which you can then search or pivot on.++       A simple tag is a word (which may contain hyphens) followed by  a  full+       colon, written inside a transaction or posting comment line:++              2017/1/16 bought groceries    ; sometag:++       Tags  can  have  a  value, which is the text after the colon, up to the+       next comma or end of line, with leading/trailing whitespace removed:++                  expenses:food    $10   ; a-posting-tag: the tag value++       Note this means hledger's tag values can not  contain  commas  or  new-+       lines.  Ending at commas means you can write multiple short tags on one+       line, comma separated:++                  assets:checking       ; a comment containing tag1:, tag2: some value ...++       Here,++       o "a comment containing" is just comment text, not a tag++       o "tag1" is a tag with no value++       o "tag2" is another tag, whose value is "some value ..."++       Tags in a transaction comment affect the transaction  and  all  of  its+       postings,  while  tags  in  a posting comment affect only that posting.+       For example,  the  following  transaction  has  three  tags  (A,  TAG2,+       third-tag) and the posting has four (those plus posting-tag):++              1/1 a transaction  ; A:, TAG2:+                  ; third-tag: a third transaction tag, <- with a value+                  (a)  $1  ; posting-tag:++       Tags  are  like  Ledger's metadata feature, except hledger's tag values+       are simple strings.++   Directives+   Account aliases+       You can define aliases which rewrite your account names (after  reading+       the journal, before generating reports).  hledger's account aliases can+       be useful for:++       o expanding shorthand account names to their full form, allowing easier+         data entry and a less verbose journal++       o adapting old journals to your current chart of accounts++       o experimenting with new account organisations, like a new hierarchy or+         combining two accounts into one++       o customising reports++       See also Cookbook: rewrite account names.++   Basic aliases+       To set an account alias, use the alias directive in your journal  file.+       This  affects all subsequent journal entries in the current file or its+       included files.  The spaces around the = are optional:++              alias OLD = NEW++       Or, you can use the --alias 'OLD=NEW' option on the command line.  This+       affects all entries.  It's useful for trying out aliases interactively.++       OLD and NEW are full account names.  hledger will  replace  any  occur-+       rence  of  the old account name with the new one.  Subaccounts are also+       affected.  Eg:++              alias checking = assets:bank:wells fargo:checking+              # rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"++   Regex aliases+       There is also a more powerful variant that uses a  regular  expression,+       indicated by the forward slashes:++              alias /REGEX/ = REPLACEMENT++       or --alias '/REGEX/=REPLACEMENT'.++       REGEX  is  a  case-insensitive regular expression.  Anywhere it matches+       inside an account name, the matched part will be replaced  by  REPLACE-+       MENT.   If REGEX contains parenthesised match groups, these can be ref-+       erenced by the usual numeric backreferences in REPLACEMENT.  Eg:++              alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3+              # rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking"++       Also note that REPLACEMENT continues to the end of line (or on  command+       line,  to  end  of  option argument), so it can contain trailing white-+       space.++   Multiple aliases+       You can define as many aliases as you like  using  directives  or  com-+       mand-line  options.  Aliases are recursive - each alias sees the result+       of applying previous ones.   (This  is  different  from  Ledger,  where+       aliases are non-recursive by default).  Aliases are applied in the fol-+       lowing order:++       1. alias directives, most recently seen first (recent  directives  take+          precedence over earlier ones; directives not yet seen are ignored)++       2. alias options, in the order they appear on the command line++   end aliases+       You   can  clear  (forget)  all  currently  defined  aliases  with  the+       end aliases directive:++              end aliases++   account directive+       The account directive predefines account names, as in Ledger and  Bean-+       count.   This may be useful for your own documentation; hledger doesn't+       make use of it yet.++              ; account ACCT+              ;   OPTIONAL COMMENTS/TAGS...++              account assets:bank:checking+               a comment+               acct-no:12345++              account expenses:food++              ; etc.++   apply account directive+       You can specify a  parent  account  which  will  be  prepended  to  all+       accounts  within  a  section of the journal.  Use the apply account and+       end apply account directives like so:++              apply account home++              2010/1/1+                  food    $10+                  cash++              end apply account++       which is equivalent to:++              2010/01/01+                  home:food           $10+                  home:cash          $-10++       If end apply account is omitted, the effect lasts to  the  end  of  the+       file.  Included files are also affected, eg:++              apply account business+              include biz.journal+              end apply account+              apply account personal+              include personal.journal++       Prior  to  hledger 1.0, legacy account and end spellings were also sup-+       ported.++   Multi-line comments+       A line containing just comment starts a multi-line comment, and a  line+       containing just end comment ends it.  See comments.++   commodity directive+       The  commodity directive predefines commodities (currently this is just+       informational), and also it may define the display format  for  amounts+       in this commodity (overriding the automatically inferred format).++       It may be written on a single line, like this:++              ; commodity EXAMPLEAMOUNT++              ; display AAAA amounts with the symbol on the right, space-separated,+              ; using period as decimal point, with four decimal places, and+              ; separating thousands with comma.+              commodity 1,000.0000 AAAA++       or  on  multiple  lines, using the "format" subdirective.  In this case+       the commodity symbol appears twice and  should  be  the  same  in  both+       places:++              ; commodity SYMBOL+              ;   format EXAMPLEAMOUNT++              ; display indian rupees with currency name on the left,+              ; thousands, lakhs and crores comma-separated,+              ; period as decimal point, and two decimal places.+              commodity INR+                format INR 9,99,99,999.00++   Default commodity+       The  D  directive  sets a default commodity (and display format), to be+       used for amounts without a commodity symbol (ie, plain numbers).  (Note+       this  differs from Ledger's default commodity directive.) The commodity+       and display format will be applied  to  all  subsequent  commodity-less+       amounts, or until the next D directive.++              # commodity-less amounts should be treated as dollars+              # (and displayed with symbol on the left, thousands separators and two decimal places)+              D $1,000.00++              1/1+                a     5    ; <- commodity-less amount, becomes $1+                b++   Default year+       You  can set a default year to be used for subsequent dates which don't+       specify a year.  This is a line beginning with Y followed by the  year.+       Eg:++              Y2009      ; set default year to 2009++              12/15      ; equivalent to 2009/12/15+                expenses  1+                assets++              Y2010      ; change default year to 2010++              2009/1/30  ; specifies the year, not affected+                expenses  1+                assets++              1/31       ; equivalent to 2010/1/31+                expenses  1+                assets++   Including other files+       You  can  pull in the content of additional journal files by writing an+       include directive, like this:++              include path/to/file.journal++       If the path does not begin with a slash, it is relative to the  current+       file.  Glob patterns (*) are not currently supported.++       The  include  directive  can  only  be  used  in journal files.  It can+       include journal, timeclock or timedot files, but not CSV files.++Periodic transactions+       A periodic transaction starts with a tilde `~' in place of a date  fol-+       lowed by a period expression:++              ~ weekly+                assets:bank:checking   $400 ; paycheck+                income:acme inc++       Periodic transactions are used for forecasting and budgeting only, they+       have no effect unless the --forecast or --budget flag  is  used.   With+       --forecast, each periodic transaction rule generates recurring forecast+       transactions at the specified interval, beginning  the  day  after  the+       last recorded journal transaction and ending 6 months from today, or at+       the specified report end date.  With  balance --budget,  each  periodic+       transaction declares recurring budget goals for one or more accounts.+       For  more details, see: balance > Budgeting, Budgeting and Forecasting.++Automated posting rules+       Automated posting rule starts with an equal sign  `='  in  place  of  a+       date, followed by a query:++              = expenses:gifts+                  budget:gifts  *-1+                  assets:budget  *1++       When  --auto option is specified on the command line, automated posting+       rule will add its postings to all transactions that match the query.++       If amount in the automated posting rule includes  commodity  name,  new+       posting will be made in the given commodity, otherwise commodity of the+       matched transaction will be used.++       When amount in the automated posting rule begins with the  '*',  amount+       will  be  treated  as a multiplier that is applied to the amount of the+       first posting in the matched transaction.++       In example above, every transaction in expenses:gifts account will have+       two  additional  postings added to it: amount of the original gift will+       be debited from budget:gifts and credited into assets:budget:++              ; Original transaction+              2017-12-14+                expenses:gifts  $20+                assets++              ; With automated postings applied+              2017/12/14+                  expenses:gifts             $20+                  assets+                  budget:gifts              $-20+                  assets:budget              $20++EDITOR SUPPORT+       Add-on modes exist for various text editors, to make working with jour-+       nal  files  easier.   They add colour, navigation aids and helpful com-+       mands.  For hledger users who  edit  the  journal  file  directly  (the+       majority), using one of these modes is quite recommended.++       These  were  written  with  Ledger  in mind, but also work with hledger+       files:+++       Emacs              http://www.ledger-cli.org/3.0/doc/ledger-mode.html+       Vim                https://github.com/ledger/ledger/wiki/Getting-started+++       Sublime Text       https://github.com/ledger/ledger/wiki/Using-Sub-+                          lime-Text+       Textmate           https://github.com/ledger/ledger/wiki/Using-Text-+                          Mate-2+       Text Wrangler      https://github.com/ledger/ledger/wiki/Edit-+                          ing-Ledger-files-with-TextWrangler+       Visual    Studio   https://marketplace.visualstudio.com/items?item-+       Code               Name=mark-hansen.hledger-vscode++++REPORTING BUGS+       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger 1.5                      December 2017              hledger_journal(5)
+ .otherdocs/hledger_timeclock.5 view
@@ -0,0 +1,92 @@++.TH "hledger_timeclock" "5" "December 2017" "hledger 1.5" "hledger User Manuals"++++.SH NAME+.PP+Timeclock \- the time logging format of timeclock.el, as read by hledger+.SH DESCRIPTION+.PP+hledger can read timeclock files.+As with Ledger, these are (a subset of) timeclock.el's format,+containing clock\-in and clock\-out entries as in the example below.+The date is a simple date.+The time format is HH:MM[:SS][+\-ZZZZ].+Seconds and timezone are optional.+The timezone, if present, must be four digits and is ignored (currently+the time is always interpreted as a local time).+.IP+.nf+\f[C]+i\ 2015/03/30\ 09:00:00\ some:account\ name\ \ optional\ description\ after\ two\ spaces+o\ 2015/03/30\ 09:20:00+i\ 2015/03/31\ 22:21:45\ another\ account+o\ 2015/04/01\ 02:00:34+\f[]+.fi+.PP+hledger treats each clock\-in/clock\-out pair as a transaction posting+some number of hours to an account.+Or if the session spans more than one day, it is split into several+transactions, one for each day.+For the above time log, \f[C]hledger\ print\f[] generates these journal+entries:+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.timeclock\ print+2015/03/30\ *\ optional\ description\ after\ two\ spaces+\ \ \ \ (some:account\ name)\ \ \ \ \ \ \ \ \ 0.33h++2015/03/31\ *\ 22:21\-23:59+\ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 1.64h++2015/04/01\ *\ 00:00\-02:00+\ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 2.01h+\f[]+.fi+.PP+Here is a sample.timeclock to download and some queries to try:+.IP+.nf+\f[C]+$\ hledger\ \-f\ sample.timeclock\ balance\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ current\ time\ balances+$\ hledger\ \-f\ sample.timeclock\ register\ \-p\ 2009/3\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ sessions\ in\ march\ 2009+$\ hledger\ \-f\ sample.timeclock\ register\ \-p\ weekly\ \-\-depth\ 1\ \-\-empty\ \ #\ time\ summary\ by\ week+\f[]+.fi+.PP+To generate time logs, ie to clock in and clock out, you could:+.IP \[bu] 2+use emacs and the built\-in timeclock.el, or the extended+timeclock\-x.el and perhaps the extras in ledgerutils.el+.IP \[bu] 2+at the command line, use these bash aliases:+\f[C]shell\ \ \ alias\ ti="echo\ i\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ \\$*\ >>$TIMELOG"\ \ \ alias\ to="echo\ o\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ >>$TIMELOG"\f[]+.IP \[bu] 2+or use the old \f[C]ti\f[] and \f[C]to\f[] scripts in the ledger 2.x+repository.+These rely on a \[lq]timeclock\[rq] executable which I think is just the+ledger 2 executable renamed.+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
+ .otherdocs/hledger_timeclock.info view
@@ -0,0 +1,60 @@+This is hledger_timeclock.info, produced by makeinfo version 6.5 from+stdin.+++File: hledger_timeclock.info,  Node: Top,  Up: (dir)++hledger_timeclock(5) hledger 1.5+********************************++hledger can read timeclock files.  As with Ledger, these are (a subset+of) timeclock.el's format, containing clock-in and clock-out entries as+in the example below.  The date is a simple date.  The time format is+HH:MM[:SS][+-ZZZZ]. Seconds and timezone are optional.  The timezone, if+present, must be four digits and is ignored (currently the time is+always interpreted as a local time).++i 2015/03/30 09:00:00 some:account name  optional description after two spaces+o 2015/03/30 09:20:00+i 2015/03/31 22:21:45 another account+o 2015/04/01 02:00:34++   hledger treats each clock-in/clock-out pair as a transaction posting+some number of hours to an account.  Or if the session spans more than+one day, it is split into several transactions, one for each day.  For+the above time log, 'hledger print' generates these journal entries:++$ hledger -f t.timeclock print+2015/03/30 * optional description after two spaces+    (some:account name)         0.33h++2015/03/31 * 22:21-23:59+    (another account)         1.64h++2015/04/01 * 00:00-02:00+    (another account)         2.01h++   Here is a sample.timeclock to download and some queries to try:++$ hledger -f sample.timeclock balance                               # current time balances+$ hledger -f sample.timeclock register -p 2009/3                    # sessions in march 2009+$ hledger -f sample.timeclock register -p weekly --depth 1 --empty  # time summary by week++   To generate time logs, ie to clock in and clock out, you could:++   * use emacs and the built-in timeclock.el, or the extended+     timeclock-x.el and perhaps the extras in ledgerutils.el++   * at the command line, use these bash aliases: 'shell alias ti="echo+     i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG" alias to="echo o+     `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"'+   * or use the old 'ti' and 'to' scripts in the ledger 2.x repository.+     These rely on a "timeclock" executable which I think is just the+     ledger 2 executable renamed.++++Tag Table:+Node: Top78++End Tag Table
+ .otherdocs/hledger_timeclock.txt view
@@ -0,0 +1,80 @@++hledger_timeclock(5)         hledger User Manuals         hledger_timeclock(5)++++NAME+       Timeclock - the time logging format of timeclock.el, as read by hledger++DESCRIPTION+       hledger can read timeclock files.  As with Ledger, these are (a  subset+       of) timeclock.el's format, containing clock-in and clock-out entries as+       in the example below.  The date is a simple date.  The time  format  is+       HH:MM[:SS][+-ZZZZ].   Seconds and timezone are optional.  The timezone,+       if present, must be four digits and is ignored (currently the  time  is+       always interpreted as a local time).++              i 2015/03/30 09:00:00 some:account name  optional description after two spaces+              o 2015/03/30 09:20:00+              i 2015/03/31 22:21:45 another account+              o 2015/04/01 02:00:34++       hledger  treats  each  clock-in/clock-out pair as a transaction posting+       some number of hours to an account.  Or if the session spans more  than+       one  day, it is split into several transactions, one for each day.  For+       the above time log, hledger print generates these journal entries:++              $ hledger -f t.timeclock print+              2015/03/30 * optional description after two spaces+                  (some:account name)         0.33h++              2015/03/31 * 22:21-23:59+                  (another account)         1.64h++              2015/04/01 * 00:00-02:00+                  (another account)         2.01h++       Here is a sample.timeclock to download and some queries to try:++              $ hledger -f sample.timeclock balance                               # current time balances+              $ hledger -f sample.timeclock register -p 2009/3                    # sessions in march 2009+              $ hledger -f sample.timeclock register -p weekly --depth 1 --empty  # time summary by week++       To generate time logs, ie to clock in and clock out, you could:++       o use emacs and  the  built-in  timeclock.el,  or  the  extended  time-+         clock-x.el and perhaps the extras in ledgerutils.el++       o at     the     command     line,     use    these    bash    aliases:+         shell   alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"   alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"++       o or use the old ti and to scripts in the ledger 2.x repository.  These+         rely on a "timeclock" executable which I think is just the  ledger  2+         executable renamed.++++REPORTING BUGS+       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger 1.5                      December 2017            hledger_timeclock(5)
+ .otherdocs/hledger_timedot.5 view
@@ -0,0 +1,154 @@++.TH "hledger_timedot" "5" "December 2017" "hledger 1.5" "hledger User Manuals"++++.SH NAME+.PP+Timedot \- hledger's human\-friendly time logging format+.SH DESCRIPTION+.PP+Timedot is a plain text format for logging dated, categorised quantities+(of time, usually), supported by hledger.+It is convenient for approximate and retroactive time logging, eg when+the real\-time clock\-in/out required with a timeclock file is too+precise or too interruptive.+It can be formatted like a bar chart, making clear at a glance where+time was spent.+.PP+Though called \[lq]timedot\[rq], this format is read by hledger as+commodityless quantities, so it could be used to represent dated+quantities other than time.+In the docs below we'll assume it's time.+.SH FILE FORMAT+.PP+A timedot file contains a series of day entries.+A day entry begins with a date, and is followed by category/quantity+pairs, one per line.+Dates are hledger\-style simple dates (see hledger_journal(5)).+Categories are hledger\-style account names, optionally indented.+As in a hledger journal, there must be at least two spaces between the+category (account name) and the quantity.+.PP+Quantities can be written as:+.IP \[bu] 2+a sequence of dots (.) representing quarter hours.+Spaces may optionally be used for grouping and readability.+Eg: \&....+\&..+.IP \[bu] 2+an integral or decimal number, representing hours.+Eg: 1.5+.IP \[bu] 2+an integral or decimal number immediately followed by a unit symbol+\f[C]s\f[], \f[C]m\f[], \f[C]h\f[], \f[C]d\f[], \f[C]w\f[], \f[C]mo\f[],+or \f[C]y\f[], representing seconds, minutes, hours, days weeks, months+or years respectively.+Eg: 90m.+The following equivalencies are assumed, currently: 1m = 60s, 1h = 60m,+1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d.+.PP+Blank lines and lines beginning with #, ; or * are ignored.+An example:+.IP+.nf+\f[C]+#\ on\ this\ day,\ 6h\ was\ spent\ on\ client\ work,\ 1.5h\ on\ haskell\ FOSS\ work,\ etc.+2016/2/1+inc:client1\ \ \ ....\ ....\ ....\ ....\ ....\ ....+fos:haskell\ \ \ ....\ ..\ +biz:research\ \ .++2016/2/2+inc:client1\ \ \ ....\ ....+biz:research\ \ .+\f[]+.fi+.PP+Or with numbers:+.IP+.nf+\f[C]+2016/2/3+inc:client1\ \ \ 4+fos:hledger\ \ \ 3+biz:research\ \ 1+\f[]+.fi+.PP+Reporting:+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.timedot\ print\ date:2016/2/2+2016/02/02\ *+\ \ \ \ (inc:client1)\ \ \ \ \ \ \ \ \ \ 2.00++2016/02/02\ *+\ \ \ \ (biz:research)\ \ \ \ \ \ \ \ \ \ 0.25+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.timedot\ bal\ \-\-daily\ \-\-tree+Balance\ changes\ in\ 2016/02/01\-2016/02/03:++\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2016/02/01d\ \ 2016/02/02d\ \ 2016/02/03d\ +============++========================================+\ biz\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\ +\ \ \ research\ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\ +\ fos\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\ +\ \ \ haskell\ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\ +\ \ \ hledger\ \ ||\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\ +\ inc\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\ +\ \ \ client1\ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\ +\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 7.75\ \ \ \ \ \ \ \ \ 2.25\ \ \ \ \ \ \ \ \ 8.00\ +\f[]+.fi+.PP+I prefer to use period for separating account components.+We can make this work with an account alias:+.IP+.nf+\f[C]+2016/2/4+fos.hledger.timedot\ \ 4+fos.ledger\ \ \ \ \ \ \ \ \ \ \ ..+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.timedot\ \-\-alias\ /\\\\./=:\ bal\ date:2016/2/4+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50\ \ fos+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.00\ \ \ \ hledger:timedot+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0.50\ \ \ \ ledger+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50+\f[]+.fi+.PP+Here is a sample.timedot.+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
+ .otherdocs/hledger_timedot.info view
@@ -0,0 +1,116 @@+This is hledger_timedot.info, produced by makeinfo version 6.5 from+stdin.+++File: hledger_timedot.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir)++hledger_timedot(5) hledger 1.5+******************************++Timedot is a plain text format for logging dated, categorised quantities+(of time, usually), supported by hledger.  It is convenient for+approximate and retroactive time logging, eg when the real-time+clock-in/out required with a timeclock file is too precise or too+interruptive.  It can be formatted like a bar chart, making clear at a+glance where time was spent.++   Though called "timedot", this format is read by hledger as+commodityless quantities, so it could be used to represent dated+quantities other than time.  In the docs below we'll assume it's time.+* Menu:++* FILE FORMAT::+++File: hledger_timedot.info,  Node: FILE FORMAT,  Prev: Top,  Up: Top++1 FILE FORMAT+*************++A timedot file contains a series of day entries.  A day entry begins+with a date, and is followed by category/quantity pairs, one per line.+Dates are hledger-style simple dates (see hledger_journal(5)).+Categories are hledger-style account names, optionally indented.  As in+a hledger journal, there must be at least two spaces between the+category (account name) and the quantity.++   Quantities can be written as:++   * a sequence of dots (.)  representing quarter hours.  Spaces may+     optionally be used for grouping and readability.  Eg: ....  ..++   * an integral or decimal number, representing hours.  Eg: 1.5++   * an integral or decimal number immediately followed by a unit symbol+     's', 'm', 'h', 'd', 'w', 'mo', or 'y', representing seconds,+     minutes, hours, days weeks, months or years respectively.  Eg: 90m.+     The following equivalencies are assumed, currently: 1m = 60s, 1h =+     60m, 1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d.++   Blank lines and lines beginning with #, ; or * are ignored.  An+example:++# on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.+2016/2/1+inc:client1   .... .... .... .... .... ....+fos:haskell   .... .. +biz:research  .++2016/2/2+inc:client1   .... ....+biz:research  .++   Or with numbers:++2016/2/3+inc:client1   4+fos:hledger   3+biz:research  1++   Reporting:++$ hledger -f t.timedot print date:2016/2/2+2016/02/02 *+    (inc:client1)          2.00++2016/02/02 *+    (biz:research)          0.25++$ hledger -f t.timedot bal --daily --tree+Balance changes in 2016/02/01-2016/02/03:++            ||  2016/02/01d  2016/02/02d  2016/02/03d +============++========================================+ biz        ||         0.25         0.25         1.00 +   research ||         0.25         0.25         1.00 + fos        ||         1.50            0         3.00 +   haskell  ||         1.50            0            0 +   hledger  ||            0            0         3.00 + inc        ||         6.00         2.00         4.00 +   client1  ||         6.00         2.00         4.00 +------------++----------------------------------------+            ||         7.75         2.25         8.00 ++   I prefer to use period for separating account components.  We can+make this work with an account alias:++2016/2/4+fos.hledger.timedot  4+fos.ledger           ..++$ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4+                4.50  fos+                4.00    hledger:timedot+                0.50    ledger+--------------------+                4.50++   Here is a sample.timedot.+++Tag Table:+Node: Top76+Node: FILE FORMAT805+Ref: #file-format906++End Tag Table
+ .otherdocs/hledger_timedot.txt view
@@ -0,0 +1,127 @@++hledger_timedot(5)           hledger User Manuals           hledger_timedot(5)++++NAME+       Timedot - hledger's human-friendly time logging format++DESCRIPTION+       Timedot  is  a plain text format for logging dated, categorised quanti-+       ties (of time, usually), supported by hledger.  It  is  convenient  for+       approximate  and  retroactive  time  logging,  eg  when  the  real-time+       clock-in/out required with a timeclock  file  is  too  precise  or  too+       interruptive.   It can be formatted like a bar chart, making clear at a+       glance where time was spent.++       Though called "timedot", this format is read by hledger  as  commodity-+       less  quantities,  so  it  could  be used to represent dated quantities+       other than time.  In the docs below we'll assume it's time.++FILE FORMAT+       A timedot file contains a series of day entries.  A  day  entry  begins+       with  a date, and is followed by category/quantity pairs, one per line.+       Dates are hledger-style simple dates (see  hledger_journal(5)).   Cate-+       gories  are  hledger-style account names, optionally indented.  As in a+       hledger journal, there must be at least two spaces between the category+       (account name) and the quantity.++       Quantities can be written as:++       o a  sequence  of  dots  (.)  representing  quarter  hours.  Spaces may+         optionally be used for grouping and readability.  Eg: ....  ..++       o an integral or decimal number, representing hours.  Eg: 1.5++       o an integral or decimal number immediately followed by a  unit  symbol+         s,  m,  h, d, w, mo, or y, representing seconds, minutes, hours, days+         weeks, months or years respectively.  Eg: 90m.  The following equiva-+         lencies  are  assumed,  currently: 1m = 60s, 1h = 60m, 1d = 24h, 1w =+         7d, 1mo = 30d, 1y=365d.++       Blank lines and lines beginning with #, ; or * are ignored.   An  exam-+       ple:++              # on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.+              2016/2/1+              inc:client1   .... .... .... .... .... ....+              fos:haskell   .... ..+              biz:research  .++              2016/2/2+              inc:client1   .... ....+              biz:research  .++       Or with numbers:++              2016/2/3+              inc:client1   4+              fos:hledger   3+              biz:research  1++       Reporting:++              $ hledger -f t.timedot print date:2016/2/2+              2016/02/02 *+                  (inc:client1)          2.00++              2016/02/02 *+                  (biz:research)          0.25++              $ hledger -f t.timedot bal --daily --tree+              Balance changes in 2016/02/01-2016/02/03:++                          ||  2016/02/01d  2016/02/02d  2016/02/03d+              ============++========================================+               biz        ||         0.25         0.25         1.00+                 research ||         0.25         0.25         1.00+               fos        ||         1.50            0         3.00+                 haskell  ||         1.50            0            0+                 hledger  ||            0            0         3.00+               inc        ||         6.00         2.00         4.00+                 client1  ||         6.00         2.00         4.00+              ------------++----------------------------------------+                          ||         7.75         2.25         8.00++       I  prefer to use period for separating account components.  We can make+       this work with an account alias:++              2016/2/4+              fos.hledger.timedot  4+              fos.ledger           ..++              $ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4+                              4.50  fos+                              4.00    hledger:timedot+                              0.50    ledger+              --------------------+                              4.50++       Here is a sample.timedot.++++REPORTING BUGS+       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger 1.5                      December 2017              hledger_timedot(5)
CHANGES view
@@ -1,5 +1,31 @@-User-visible changes in the hledger and hledger-lib packages.-See also the project change log.+User-visible changes in the hledger CLI tool. See also hledger-lib.+++# 1.5 (2017/12/31)++* --auto adds Ledger-style automated postings to transactions (Dmitry Astapov, Mykola Orliuk)++* --forecast generates Ledger-style periodic transactions in the future (Dmitry Astapov, Mykola Orliuk)++* -V/--value uses today's market prices by default, not those of last transaction date. #683, #648++* add: suggest implied (parent) and declared (by account directives) account names also++* bal: --budget shows performance compared to budget goals defined+  with periodic transactions.  Accounts with budget goals are+  displayed folded (depth-clipped) at a depth matching the budget+  specification.  Unbudgeted accounts are hidden, or with+  --show-unbudgeted, shown at their usual depth. (Dmitry Astapov)++* import: the output of --dry-run is now valid journal format++* print: -B shows converted amounts again, as in 1.1, even without+  -x. #551 (Mykola Orliuk, Simon Michael)++* tag: the first argument now filters tag names, additional arguments+  filter transactions (#261)++* remove upper bounds on all but hledger* and base (experimental)   # 1.4 (2017/9/30)
Hledger/Cli/CliOptions.hs view
@@ -155,6 +155,8 @@  ,flagNone ["empty","E"]     (setboolopt "empty") "show items with zero amount, normally hidden"  ,flagNone ["cost","B"]      (setboolopt "cost") "convert amounts to their cost at transaction time (using the transaction price, if any)"  ,flagNone ["value","V"]     (setboolopt "value") "convert amounts to their market value on the report end date (using the most recent applicable market price, if any)"+ ,flagNone ["auto"]          (setboolopt "auto") "apply automated posting rules to modify transactions"+ ,flagNone ["forecast"]      (setboolopt "forecast") "apply periodic transaction rules to generate future transactions, to 6 months from now or report end date"  ]  -- | Common output-related flags: --output-file, --output-format...
Hledger/Cli/Commands/Add.hs view
@@ -262,7 +262,7 @@           flip evalState esJournal $ runParserT (accountnamep <* eof) "" (T.pack s) -- otherwise, try to parse the input as an accountname         where           validateAccount :: Text -> Maybe Text-          validateAccount t | no_new_accounts_ esOpts && not (t `elem` journalAccountNames esJournal) = Nothing+          validateAccount t | no_new_accounts_ esOpts && not (t `elem` journalAccountNamesDeclaredOrImplied esJournal) = Nothing                             | otherwise = Just t       dbg1 = id -- strace @@ -337,7 +337,7 @@ descriptionCompleter j = completer (map T.unpack $ journalDescriptions j)  accountCompleter :: Journal -> String -> CompletionFunc IO-accountCompleter j = completer (map T.unpack $ journalAccountNamesUsed j)+accountCompleter j = completer (map T.unpack $ journalAccountNamesDeclaredOrImplied j)  amountCompleter :: String -> CompletionFunc IO amountCompleter = completer []
Hledger/Cli/Commands/Balance.hs view
@@ -246,11 +246,13 @@  ,tests_Hledger_Cli_Commands_Balance ) where -import Data.List (intercalate)+import Data.List (intercalate, nub) import Data.Maybe+import qualified Data.Map as Map -- import Data.Monoid import qualified Data.Text as T import System.Console.CmdArgs.Explicit as C+import Data.Decimal (roundTo) import Text.CSV import Test.HUnit import Text.Printf (printf)@@ -281,8 +283,10 @@      ,flagReq  ["drop"] (\s opts -> Right $ setopt "drop" s opts) "N" "omit N leading account name parts (in flat mode)"      ,flagNone ["no-elide"] (\opts -> setboolopt "no-elide" opts) "don't squash boring parent accounts (in tree mode)"      ,flagReq  ["format"] (\s opts -> Right $ setopt "format" s opts) "FORMATSTR" "use this custom line format (in simple reports)"-     ,flagNone ["pretty-tables"] (\opts -> setboolopt "pretty-tables" opts) "use unicode when displaying tables"-     ,flagNone ["sort-amount","S"] (\opts -> setboolopt "sort-amount" opts) "sort by amount instead of account name"+     ,flagNone ["pretty-tables"] (\opts -> setboolopt "pretty-tables" opts) "use unicode to display prettier tables"+     ,flagNone ["sort-amount","S"] (\opts -> setboolopt "sort-amount" opts) "sort by amount instead of account name (in flat mode). With multiple columns, sorts by the row total, or by row average if that is displayed."+     ,flagNone ["budget"] (setboolopt "budget") "show performance compared to budget goals defined by periodic transactions"+     ,flagNone ["show-unbudgeted"] (setboolopt "show-unbudgeted") "with --budget, show unbudgeted accounts also"      ]      ++ outputflags     ,groupHidden = []@@ -293,7 +297,7 @@  -- | The balance command, prints a balance report. balance :: CliOpts -> Journal -> IO ()-balance opts@CliOpts{reportopts_=ropts} j = do+balance opts@CliOpts{rawopts_=rawopts,reportopts_=ropts} j = do   d <- getCurrentDay   case lineFormatFromOpts ropts of     Left err -> error' $ unlines [err]@@ -319,13 +323,59 @@                 "csv" -> \ropts r -> (++ "\n") $ printCSV $ balanceReportAsCsv ropts r                 _     -> balanceReportAsText           writeOutput opts $ render ropts report-        _ -> do+          +        _ | boolopt "budget" rawopts -> do+          let budget = budgetJournal opts j+              j' = budgetRollUp opts budget j+              report = multiBalanceReport ropts (queryFromOpts d ropts) j'+              budgetReport = multiBalanceReport ropts (queryFromOpts d ropts) budget+              render = case format of+                -- XXX: implement csv rendering+                "csv" -> (++ "\n") . printCSV . multiBalanceReportAsCsv ropts+                _     -> multiBalanceReportWithBudgetAsText ropts budgetReport+          writeOutput opts $ render report+          +          | otherwise -> do           let report = multiBalanceReport ropts (queryFromOpts d ropts) j               render = case format of-                "csv" -> \ropts r -> (++ "\n") $ printCSV $ multiBalanceReportAsCsv ropts r-                _     -> multiBalanceReportAsText-          writeOutput opts $ render ropts report+                "csv" -> (++ "\n") . printCSV . multiBalanceReportAsCsv ropts+                _     -> multiBalanceReportAsText ropts+          writeOutput opts $ render report +-- | Re-map account names to closet parent with periodic transaction from budget.+-- Accounts that dont have suitable parent are either remapped to "<unbudgeted>:topAccount" +-- or left as-is if --show-unbudgeted is provided +budgetRollUp :: CliOpts -> Journal -> Journal -> Journal+budgetRollUp CliOpts{rawopts_=rawopts} budget j = j { jtxns = remapTxn <$> jtxns j }+    where+        budgetAccounts = nub $ concatMap (map paccount . ptpostings) $ jperiodictxns budget+        remapAccount origAcctName = remapAccount' origAcctName+          where +            remapAccount' acctName+              | acctName `elem` budgetAccounts = acctName+              | otherwise = +                case parentAccountName acctName of+                  "" | boolopt "show-unbudgeted" rawopts -> origAcctName+                     | otherwise              -> T.append (T.pack "<unbudgeted>:") acctName+                  parent -> remapAccount' parent+        remapPosting p = p { paccount = remapAccount $ paccount p, porigin = Just . fromMaybe p $ porigin p }+        remapTxn = mapPostings (map remapPosting)+        mapPostings f t = txnTieKnot $ t { tpostings = f $ tpostings t }++-- | Generate journal of all periodic transactions in the given journal for the+-- entireity of its history or reporting period, whatever is smaller+budgetJournal :: CliOpts -> Journal -> Journal+budgetJournal opts j = journalBalanceTransactions' opts j { jtxns = budget }+  where +    dates = spanIntersect (jdatespan j) (periodAsDateSpan $ period_ $ reportopts_ opts)+    budget = [makeBudget t | pt <- jperiodictxns j, t <- runPeriodicTransaction pt dates]+    makeBudget t = txnTieKnot $ t { tdescription = T.pack "Budget transaction" }+    journalBalanceTransactions' opts j =+      let assrt = not . ignore_assertions_ $ inputopts_ opts+      in+       either error' id $ journalBalanceTransactions assrt j++ -- single-column balance reports  -- | Find the best commodity to convert to when asked to show the@@ -494,16 +544,78 @@         CumulativeChange -> "Ending balances (cumulative)"         HistoricalBalance -> "Ending balances (historical)" +-- | Render two multi-column balance reports as plain text suitable for console output.+-- They are assumed to have same number of columns, one of them representing+-- a budget+multiBalanceReportWithBudgetAsText :: ReportOpts -> MultiBalanceReport -> MultiBalanceReport -> String+multiBalanceReportWithBudgetAsText opts budget r =+    printf "%s in %s:\n\n" typeStr (showDateSpan $ multiBalanceReportSpan r)+      ++ renderBalanceReportTable' opts showcell tabl+  where+    tabl = combine (balanceReportAsTable opts r) (balanceReportAsTable opts budget)+    typeStr :: String+    typeStr = case balancetype_ opts of+        PeriodChange -> "Balance changes"+        CumulativeChange -> "Ending balances (cumulative)"+        HistoricalBalance -> "Ending balances (historical)"+    showcell (real, Nothing)     = showamt real+    showcell (real, Just budget) = +      case percentage real budget of+        Just pct -> printf "%s [%s%% of %s]" (showamt real) (show $ roundTo 0 pct) (showamt budget)+        Nothing  -> printf "%s [%s]" (showamt real) (showamt budget)+    percentage real budget =+      -- percentage of budget consumed is always computed in the cost basis+      case (toCost real, toCost budget) of+        (Mixed [a1], Mixed [a2]) +          | isReallyZeroAmount a1 -> Just 0 -- if there are no postings, we consumed 0% of budget+          | acommodity a1 == acommodity a2 && aquantity a2 /= 0 -> +            Just $ 100 * aquantity a1 / aquantity a2+        _ -> Nothing+        where+          toCost = normaliseMixedAmount . costOfMixedAmount+    showamt | color_ opts  = cshowMixedAmountOneLineWithoutPrice+            | otherwise    = showMixedAmountOneLineWithoutPrice+    -- combine reportTable budgetTable will combine them into a single table where cells+    -- are tuples of (actual, Maybe budget) numbers. Main assumptions is that+    -- row/column titles of budgetTable are subset of row/column titles or reportTable,+    -- and there are now row/column titles in budgetTable that are not mentioned in reporTable.+    -- Both of these are satisfied by construction of budget report and process of rolling up+    -- account names.+    combine (Table l t d) (Table l' t' d') = Table l t combinedRows+      where +        -- For all accounts that are present in the budget, zip real amounts with budget amounts+        combinedRows = [ combineRow row budgetRow +                       | (acct, row) <- zip (headerContents l) d+                       , let budgetRow = +                               if acct == "" then [] -- "" is totals row+                               else fromMaybe [] $ Map.lookup acct budgetAccts+                       ]+        -- Budget could cover smaller interval of time than the whole journal.+        -- Headers for budget row will always be a sublist of headers of row+        combineRow r br =+          let reportRow = zip (headerContents t) r+              budgetRow = Map.fromList $ zip (headerContents t') br +              findBudgetVal hdr = Map.lookup hdr budgetRow +          in map (\(hdr, val) -> (val, findBudgetVal hdr)) reportRow+        budgetAccts = Map.fromList $ zip (headerContents l') d'+                                                            -- | Given a table representing a multi-column balance report (for example, -- made using 'balanceReportAsTable'), render it in a format suitable for -- console output. renderBalanceReportTable :: ReportOpts -> Table String String MixedAmount -> String-renderBalanceReportTable (ReportOpts { pretty_tables_ = pretty, color_=usecolor }) = +renderBalanceReportTable ropts = +  renderBalanceReportTable' ropts showamt+  where+    showamt | color_ ropts = cshowMixedAmountOneLineWithoutPrice+            | otherwise    = showMixedAmountOneLineWithoutPrice+  +renderBalanceReportTable' :: ReportOpts -> (a -> String) -> Table String String a -> String+renderBalanceReportTable' (ReportOpts { pretty_tables_ = pretty}) showCell =    unlines   . addtrailingblank   . trimborder    . lines-  . render pretty id id showamt+  . render pretty id id showCell   . align   where     addtrailingblank = (++[""])@@ -512,8 +624,6 @@       where         acctswidth = maximum' $ map strWidth (headerContents l)         l'         = padRightWide acctswidth <$> l-    showamt | usecolor  = cshowMixedAmountOneLineWithoutPrice-            | otherwise = showMixedAmountOneLineWithoutPrice  -- | Build a 'Table' from a multi-column balance report. balanceReportAsTable :: ReportOpts -> MultiBalanceReport -> Table String String MixedAmount
Hledger/Cli/Commands/Equity.hs view
@@ -66,7 +66,7 @@       balancingamt = negate $ sum $ map (\(_,_,_,b) -> normaliseMixedAmountSquashPricesForDisplay b) acctbals       ps = [posting{paccount=a                    ,pamount=mixed [b]-                   ,pbalanceassertion=Just b+                   ,pbalanceassertion=Just (b,nullsourcepos)                    }            |(a,_,_,mb) <- acctbals            ,b <- amounts $ normaliseMixedAmountSquashPricesForDisplay mb@@ -75,7 +75,7 @@       enddate = fromMaybe today $ queryEndDate (date2_ ropts_) q       nps = [posting{paccount=a                     ,pamount=mixed [negate b]-                    ,pbalanceassertion=Just b{aquantity=0}+                    ,pbalanceassertion=Just (b{aquantity=0}, nullsourcepos)                     }             |(a,_,_,mb) <- acctbals             ,b <- amounts $ normaliseMixedAmountSquashPricesForDisplay mb
Hledger/Cli/Commands/Import.hs view
@@ -51,7 +51,7 @@           case sortBy (comparing tdate) $ jtxns newj of             [] -> putStrLn "no new transactions"             newts | dryrun -> do-              printf "would import %d new transactions:\n\n" (length newts)+              printf "; would import %d new transactions:\n\n" (length newts)               -- TODO how to force output here ?               -- length (jtxns newj) `seq` print' opts{rawopts_=("explicit",""):rawopts} newj               mapM_ (putStr . showTransactionUnelided) newts
Hledger/Cli/Commands/Print.hs view
@@ -66,8 +66,15 @@ entriesReportAsText :: CliOpts -> EntriesReport -> String entriesReportAsText opts = concatMap (showTransactionUnelided . gettxn)    where-    gettxn | boolopt "explicit" $ rawopts_ opts = id                   -- use the fully inferred/explicit txn-           | otherwise                          = originalTransaction  -- use the original txn (more or less)+    gettxn | useexplicittxn = id                   -- use the fully inferred/explicit txn+           | otherwise      = originalTransaction  -- use the original as-written txn, more or less+    -- Original vs inferred transactions/postings were causing problems here, disabling -B (#551).+    -- Use the explicit one if -B or -x are active.+    -- This passes tests; does it also mean -B sometimes shows missing amounts unnecessarily ?  +    useexplicittxn = or+      [ boolopt "explicit" $ rawopts_ opts+      , cost_ $ reportopts_ opts+      ]  -- Replace this transaction's postings with the original postings if any, but keep the -- current possibly rewritten account names.
Hledger/Cli/Commands/Tags.hs view
@@ -9,26 +9,34 @@  import Data.List import Data.String.Here-import qualified Data.Text.IO as T+import qualified Data.Text as T+import Safe import Hledger import Hledger.Cli.CliOptions  tagsmode = hledgerCommandMode   [here| tags-List all the tag names in use.-With a query, only matched transactions' tags are shown.+List all the tag names used in the journal. With a TAGREGEX argument,+only tag names matching the regular expression (case insensitive) are shown. +With QUERY arguments, only transactions matching the query are considered.   Reads the default journal file, or another specified with -f. FLAGS   |]   [] -- [flagNone ["strict"] (\opts -> setboolopt "strict" opts) "makes date comparing strict"] --    [generalflagsgroup1]   []-  ([], Just $ argsFlag "[QUERY]")+  ([], Just $ argsFlag "[TAGREGEX [QUERY...]]") -tags CliOpts{rawopts_=_rawopts,reportopts_=ropts} j = do+tags CliOpts{rawopts_=rawopts,reportopts_=ropts} j = do   d <- getCurrentDay   let-    q = queryFromOpts d ropts-    ts = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j-    tags = nub $ sort $ map fst $ concatMap transactionAllTags ts-  mapM_ T.putStrLn tags+    args      = listofstringopt "args" rawopts+    mtagpats  = headMay args+    queryargs = drop 1 args+    q = queryFromOpts d $ ropts{query_ = unwords queryargs} +    txns = filter (q `matchesTransaction`) $ jtxns $ journalSelectingAmountFromOpts ropts j+    tags = +      nub $ sort $ +      (maybe id (filter . regexMatchesCI) mtagpats) $ +      map (T.unpack . fst) $ concatMap transactionAllTags txns+  mapM_ putStrLn tags
Hledger/Cli/DocFiles.hs view
@@ -35,44 +35,44 @@ docFiles :: IsString a => [(Topic, (a, a, a))] docFiles = [    ("hledger",-    ($(makeRelativeToProject "doc/hledger.1" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/hledger.1.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/hledger.1.info" >>= embedStringFile)+    ($(makeRelativeToProject "hledger.1" >>= embedStringFile)+    ,$(makeRelativeToProject "hledger.txt" >>= embedStringFile)+    ,$(makeRelativeToProject "hledger.info" >>= embedStringFile)     ))   ,("hledger-ui",-    ($(makeRelativeToProject "doc/other/hledger-ui.1" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger-ui.1.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger-ui.1.info" >>= embedStringFile)+    ($(makeRelativeToProject ".otherdocs/hledger-ui.1" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger-ui.txt" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger-ui.info" >>= embedStringFile)     ))   ,("hledger-web",-    ($(makeRelativeToProject "doc/other/hledger-web.1" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger-web.1.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger-web.1.info" >>= embedStringFile)+    ($(makeRelativeToProject ".otherdocs/hledger-web.1" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger-web.txt" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger-web.info" >>= embedStringFile)     ))   ,("hledger-api",-    ($(makeRelativeToProject "doc/other/hledger-api.1" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger-api.1.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger-api.1.info" >>= embedStringFile)+    ($(makeRelativeToProject ".otherdocs/hledger-api.1" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger-api.txt" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger-api.info" >>= embedStringFile)     ))   ,("journal",-    ($(makeRelativeToProject "doc/other/hledger_journal.5" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_journal.5.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_journal.5.info" >>= embedStringFile)+    ($(makeRelativeToProject ".otherdocs/hledger_journal.5" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_journal.txt" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_journal.info" >>= embedStringFile)     ))   ,("csv",-    ($(makeRelativeToProject "doc/other/hledger_csv.5" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_csv.5.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_csv.5.info" >>= embedStringFile)+    ($(makeRelativeToProject ".otherdocs/hledger_csv.5" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_csv.txt" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_csv.info" >>= embedStringFile)     ))   ,("timeclock",-    ($(makeRelativeToProject "doc/other/hledger_timeclock.5" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_timeclock.5.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_timeclock.5.info" >>= embedStringFile)+    ($(makeRelativeToProject ".otherdocs/hledger_timeclock.5" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_timeclock.txt" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_timeclock.info" >>= embedStringFile)     ))   ,("timedot",-    ($(makeRelativeToProject "doc/other/hledger_timedot.5" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_timedot.5.txt" >>= embedStringFile)-    ,$(makeRelativeToProject "doc/other/hledger_timedot.5.info" >>= embedStringFile)+    ($(makeRelativeToProject ".otherdocs/hledger_timedot.5" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_timedot.txt" >>= embedStringFile)+    ,$(makeRelativeToProject ".otherdocs/hledger_timedot.info" >>= embedStringFile)     ))   ] 
Hledger/Cli/Utils.hs view
@@ -10,6 +10,9 @@     (      withJournalDo,      writeOutput,+     journalApplyValue, +     journalAddForecast,+     generateAutomaticPostings,      journalReload,      journalReloadIfChanged,      journalFileIsNewer,@@ -31,7 +34,7 @@ import Data.Maybe import qualified Data.Text as T import qualified Data.Text.IO as T-import Data.Time (Day)+import Data.Time (Day, addDays) import Data.Word import Numeric import Safe (readMay)@@ -54,6 +57,7 @@ import Hledger.Read import Hledger.Reports import Hledger.Utils+import Hledger.Query (Query(Any))   -- | Parse the user's specified journal file, maybe apply some transformations@@ -70,6 +74,8 @@           . anonymiseByOpts opts           . journalApplyAliases (aliasesFromOpts opts)         <=< journalApplyValue (reportopts_ opts)+        <=< journalAddForecast opts+          . generateAutomaticPostings (reportopts_ opts)   either error' f ej  -- | Apply the pivot transformation on a journal, if option is present.@@ -103,19 +109,52 @@   where     anon = T.pack . flip showHex "" . (fromIntegral :: Int -> Word32) . hash --- XXX as of since 2017/4 this is used instead of --- balanceReportValue/multiBalanceReportValue (mostly; not yet hledger-ui)+-- TODO move journalApplyValue and friends to Hledger.Data.Journal ? They are here because they use ReportOpts+ -- | If -V/--value was requested, convert all journal amounts to their market value -- as of the report end date. Cf http://hledger.org/manual.html#market-value+-- Since 2017/4 we do this early, before commands run, which affects all commands+-- and seems to have the same effect as doing it last on the reported values. journalApplyValue :: ReportOpts -> Journal -> IO Journal journalApplyValue ropts j = do-    mvaluedate <- reportEndDate j ropts-    let convert | value_ ropts-                , Just d <- mvaluedate-                = overJournalAmounts (amountValue j d)-                | otherwise-                = id+    today <- getCurrentDay+    mspecifiedenddate <- specifiedEndDate ropts+    let d = fromMaybe today mspecifiedenddate+        convert | value_ ropts = overJournalAmounts (amountValue j d)+                | otherwise    = id     return $ convert j++-- | Run PeriodicTransactions from journal from today or journal end to requested end day.+-- Add generated transactions to the journal+journalAddForecast :: CliOpts -> Journal -> IO Journal+journalAddForecast opts j = do+  today <- getCurrentDay+  -- Create forecast starting from end of journal + 1 day, and until the end of requested reporting period+  -- If end is not provided, do 180 days of forecast.+  -- Note that jdatespan already returns last day + 1+  let startDate = fromMaybe today $ spanEnd (jdatespan j) +      endDate = fromMaybe (addDays 180 today) $ periodEnd (period_ ropts)+      dates = DateSpan (Just startDate) (Just endDate)+      withForecast = [makeForecast t | pt <- jperiodictxns j, t <- runPeriodicTransaction pt dates, spanContainsDate dates (tdate t) ] ++ (jtxns j)+      makeForecast t = txnTieKnot $ t { tdescription = T.pack "Forecast transaction" }+      ropts = reportopts_ opts+  if forecast_ ropts +    then return $ journalBalanceTransactions' opts j { jtxns = withForecast }+    else return j+  where      +    journalBalanceTransactions' opts j =+      let assrt = not . ignore_assertions_ $ inputopts_ opts+      in+       either error' id $ journalBalanceTransactions assrt j++-- | Generate Automatic postings and add them to the current journal.+generateAutomaticPostings :: ReportOpts -> Journal -> Journal+generateAutomaticPostings ropts j = +  if auto_ ropts then j { jtxns = map modifier $ jtxns j } else j+  where+    modifier = foldr (flip (.) . runModifierTransaction') id mtxns+    runModifierTransaction' = fmap txnTieKnot . runModifierTransaction Any+    mtxns = jmodifiertxns j  -- | Write some output to stdout or to a file selected by --output-file. -- If the file exists it will be overwritten.
README.md view
@@ -27,7 +27,7 @@  For more, see http://hledger.org. -##Support+## Support  ### Backers Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/hledger#backer)]
− doc/hledger.1
@@ -1,2715 +0,0 @@-.\"t--.TH "hledger" "1" "September 2017" "hledger 1.4" "hledger User Manuals"----.SH NAME-.PP-hledger \- a command\-line accounting tool-.SH SYNOPSIS-.PP-\f[C]hledger\ [\-f\ FILE]\ COMMAND\ [OPTIONS]\ [ARGS]\f[]-.PD 0-.P-.PD-\f[C]hledger\ [\-f\ FILE]\ ADDONCMD\ \-\-\ [OPTIONS]\ [ARGS]\f[]-.PD 0-.P-.PD-\f[C]hledger\f[]-.SH DESCRIPTION-.PP-hledger is a cross\-platform program for tracking money, time, or any-other commodity, using double\-entry accounting and a simple, editable-file format.-hledger is inspired by and largely compatible with ledger(1).-.PD 0-.P-.PD-Tested on unix, mac, windows, hledger aims to be a reliable, practical-tool for daily use.-.PP-This is hledger's command\-line interface (there are also curses and web-interfaces).-Its basic function is to read a plain text file describing financial-transactions (in accounting terms, a general journal) and print useful-reports on standard output, or export them as CSV.-hledger can also read some other file formats such as CSV files,-translating them to journal format.-Additionally, hledger lists other hledger\-* executables found in the-user's $PATH and can invoke them as subcommands.-.PP-hledger reads data from one or more files in hledger journal, timeclock,-timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-If using \f[C]$LEDGER_FILE\f[], note this must be a real environment-variable, not a shell variable.-You can specify standard input with \f[C]\-f\-\f[].-.PP-Transactions are dated movements of money between two (or more) named-accounts, and are recorded with journal entries like this:-.IP-.nf-\f[C]-2015/10/16\ bought\ food-\ expenses:food\ \ \ \ \ \ \ \ \ \ $10-\ assets:cash-\f[]-.fi-.PP-For more about this format, see hledger_journal(5).-.PP-Most users use a text editor to edit the journal, usually with an editor-mode such as ledger\-mode for added convenience.-hledger's interactive add command is another way to record new-transactions.-hledger never changes existing transactions.-.PP-To get started, you can either save some entries like the above in-\f[C]~/.hledger.journal\f[], or run \f[C]hledger\ add\f[] and follow the-prompts.-Then try some commands like \f[C]hledger\ print\f[] or-\f[C]hledger\ balance\f[].-Run \f[C]hledger\f[] with no arguments for a list of commands.-.SH EXAMPLES-.PP-Two simple transactions in hledger journal format:-.IP-.nf-\f[C]-2015/9/30\ gift\ received-\ \ assets:cash\ \ \ $20-\ \ income:gifts--2015/10/16\ farmers\ market-\ \ expenses:food\ \ \ \ $10-\ \ assets:cash-\f[]-.fi-.PP-Some basic reports:-.IP-.nf-\f[C]-$\ hledger\ print-2015/09/30\ gift\ received-\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ $20-\ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ $\-20--2015/10/16\ farmers\ market-\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ $10-\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ $\-10-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ accounts\ \-\-tree-assets-\ \ cash-expenses-\ \ food-income-\ \ gifts-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ balance-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ assets:cash-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ expenses:food-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-20\ \ income:gifts-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ register\ cash-2015/09/30\ gift\ received\ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $20\ \ \ \ \ \ \ \ \ \ \ $20-2015/10/16\ farmers\ market\ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ \ \ $10-\f[]-.fi-.PP-More commands:-.IP-.nf-\f[C]-$\ hledger\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ available\ commands-$\ hledger\ add\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ add\ more\ transactions\ to\ the\ journal\ file-$\ hledger\ balance\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ all\ accounts\ with\ aggregated\ balances-$\ hledger\ balance\ \-\-help\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ detailed\ help\ for\ balance\ command-$\ hledger\ balance\ \-\-depth\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ only\ top\-level\ accounts-$\ hledger\ register\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ account\ postings,\ with\ running\ total-$\ hledger\ reg\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ postings\ to/from\ income\ accounts-$\ hledger\ reg\ \[aq]assets:some\ bank:checking\[aq]\ #\ show\ postings\ to/from\ this\ checking\ account-$\ hledger\ print\ desc:shop\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transactions\ with\ shop\ in\ the\ description-$\ hledger\ activity\ \-W\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transaction\ counts\ per\ week\ as\ a\ bar\ chart-\f[]-.fi-.SH OPTIONS-.SS General options-.PP-To see general usage help, including general options which are supported-by most hledger commands, run \f[C]hledger\ \-h\f[].-.PP-General help options:-.TP-.B \f[C]\-h\ \-\-help\f[]-show general usage (or after COMMAND, command usage)-.RS-.RE-.TP-.B \f[C]\-\-version\f[]-show version-.RS-.RE-.TP-.B \f[C]\-\-debug[=N]\f[]-show debug output (levels 1\-9, default: 1)-.RS-.RE-.PP-General input options:-.TP-.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]-use a different input file.-For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or-\f[C]$HOME/.hledger.journal\f[])-.RS-.RE-.TP-.B \f[C]\-\-rules\-file=RULESFILE\f[]-Conversion rules file to use when reading CSV (default: FILE.rules)-.RS-.RE-.TP-.B \f[C]\-\-alias=OLD=NEW\f[]-rename accounts named OLD to NEW-.RS-.RE-.TP-.B \f[C]\-\-anon\f[]-anonymize accounts and payees-.RS-.RE-.TP-.B \f[C]\-\-pivot\ FIELDNAME\f[]-use some other field or tag for the account name-.RS-.RE-.TP-.B \f[C]\-I\ \-\-ignore\-assertions\f[]-ignore any failing balance assertions-.RS-.RE-.PP-General reporting options:-.TP-.B \f[C]\-b\ \-\-begin=DATE\f[]-include postings/txns on or after this date-.RS-.RE-.TP-.B \f[C]\-e\ \-\-end=DATE\f[]-include postings/txns before this date-.RS-.RE-.TP-.B \f[C]\-D\ \-\-daily\f[]-multiperiod/multicolumn report by day-.RS-.RE-.TP-.B \f[C]\-W\ \-\-weekly\f[]-multiperiod/multicolumn report by week-.RS-.RE-.TP-.B \f[C]\-M\ \-\-monthly\f[]-multiperiod/multicolumn report by month-.RS-.RE-.TP-.B \f[C]\-Q\ \-\-quarterly\f[]-multiperiod/multicolumn report by quarter-.RS-.RE-.TP-.B \f[C]\-Y\ \-\-yearly\f[]-multiperiod/multicolumn report by year-.RS-.RE-.TP-.B \f[C]\-p\ \-\-period=PERIODEXP\f[]-set start date, end date, and/or reporting interval all at once-(overrides the flags above)-.RS-.RE-.TP-.B \f[C]\-\-date2\f[]-match the secondary date instead (see command help for other effects)-.RS-.RE-.TP-.B \f[C]\-U\ \-\-unmarked\f[]-include only unmarked postings/txns (can combine with \-P or \-C)-.RS-.RE-.TP-.B \f[C]\-P\ \-\-pending\f[]-include only pending postings/txns-.RS-.RE-.TP-.B \f[C]\-C\ \-\-cleared\f[]-include only cleared postings/txns-.RS-.RE-.TP-.B \f[C]\-R\ \-\-real\f[]-include only non\-virtual postings-.RS-.RE-.TP-.B \f[C]\-NUM\ \-\-depth=NUM\f[]-hide/aggregate accounts or postings more than NUM levels deep-.RS-.RE-.TP-.B \f[C]\-E\ \-\-empty\f[]-show items with zero amount, normally hidden-.RS-.RE-.TP-.B \f[C]\-B\ \-\-cost\f[]-convert amounts to their cost at transaction time (using the transaction-price, if any)-.RS-.RE-.TP-.B \f[C]\-V\ \-\-value\f[]-convert amounts to their market value on the report end date (using the-most recent applicable market price, if any)-.RS-.RE-.PP-When a reporting option appears more than once in the command line, the-last one takes precedence.-.PP-Some reporting options can also be written as query arguments.-.SS Command options-.PP-To see options for a particular command, including command\-specific-options, run: \f[C]hledger\ COMMAND\ \-h\f[].-.PP-Command\-specific options must be written after the command name, eg:-\f[C]hledger\ print\ \-x\f[].-.PP-Additionally, if the command is an addon, you may need to put its-options after a double\-hyphen, eg:-\f[C]hledger\ ui\ \-\-\ \-\-watch\f[].-Or, you can run the addon executable directly:-\f[C]hledger\-ui\ \-\-watch\f[].-.SS Command arguments-.PP-Most hledger commands accept arguments after the command name, which are-often a query, filtering the data in some way.-.SS Argument expansion-.PP-You can save a set of command line options/arguments in a file, one per-line, and then reuse them by writing \f[C]\@FILE\f[] in a command line.-(To prevent this expansion of \f[C]\@\f[]\-arguments, precede them with-a \f[C]\-\-\f[] argument.)-.SS Special characters-.PP-Option and argument values which contain problematic characters should-be escaped with double quotes, backslashes, or (best) single quotes.-Problematic characters means spaces, and also characters which are-significant to your command shell, such as less\-than/greater\-than.-Eg:-\f[C]hledger\ register\ \-p\ \[aq]last\ year\[aq]\ "accounts\ receivable\ (receivable|payable)"\ amt:\\>100\f[].-.PP-Characters which are significant both to the shell and in regular-expressions sometimes need to be double\-escaped.-These include parentheses, the pipe symbol and the dollar sign.-Eg, to match the dollar symbol, bash users should do:-\f[C]hledger\ balance\ cur:\[aq]\\$\[aq]\f[] or-\f[C]hledger\ balance\ cur:\\\\$\f[].-.PP-When hledger is invoking an addon executable (like hledger\-ui), options-and arguments get de\-escaped once more, so you might need-\f[I]triple\f[]\-escaping.-Eg: \f[C]hledger\ ui\ cur:\[aq]\\\\$\[aq]\f[] or-\f[C]hledger\ ui\ cur:\\\\\\\\$\f[] in bash.-(The number of backslashes in fish shell is left as an exercise for the-reader.)-.PP-Inside a file used for argument expansion, one less level of escaping is-enough.-(And in this case, backslashes seem to work better than quotes.-Eg: \f[C]cur:\\$\f[]).-.PP-If in doubt, keep things simple:-.IP \[bu] 2-run add\-on executables directly-.IP \[bu] 2-write options after the command-.IP \[bu] 2-enclose problematic args in single quotes-.IP \[bu] 2-if needed, also add a backslash to escape regexp metacharacters-.PP-If you\[aq]re really stumped, add \f[C]\-\-debug=2\f[] to troubleshoot.-.SS Input files-.PP-hledger reads transactions from a data file (and the add command writes-to it).-By default this file is \f[C]$HOME/.hledger.journal\f[] (or on Windows,-something like \f[C]C:/Users/USER/.hledger.journal\f[]).-You can override this with the \f[C]$LEDGER_FILE\f[] environment-variable:-.IP-.nf-\f[C]-$\ setenv\ LEDGER_FILE\ ~/finance/2016.journal-$\ hledger\ stats-\f[]-.fi-.PP-or with the \f[C]\-f/\-\-file\f[] option:-.IP-.nf-\f[C]-$\ hledger\ \-f\ /some/file\ stats-\f[]-.fi-.PP-The file name \f[C]\-\f[] (hyphen) means standard input:-.IP-.nf-\f[C]-$\ cat\ some.journal\ |\ hledger\ \-f\--\f[]-.fi-.PP-Usually the data file is in hledger\[aq]s journal format, but it can-also be one of several other formats, listed below.-hledger detects the format automatically based on the file extension, or-if that is not recognised, by trying each built\-in "reader" in turn:-.PP-.TS-tab(@);-lw(10.7n) lw(33.2n) lw(26.1n).-T{-Reader:-T}@T{-Reads:-T}@T{-Used for file extensions:-T}-_-T{-\f[C]journal\f[]-T}@T{-hledger\[aq]s journal format, also some Ledger journals-T}@T{-\f[C]\&.journal\f[] \f[C]\&.j\f[] \f[C]\&.hledger\f[] \f[C]\&.ledger\f[]-T}-T{-\f[C]timeclock\f[]-T}@T{-timeclock files (precise time logging)-T}@T{-\f[C]\&.timeclock\f[]-T}-T{-\f[C]timedot\f[]-T}@T{-timedot files (approximate time logging)-T}@T{-\f[C]\&.timedot\f[]-T}-T{-\f[C]csv\f[]-T}@T{-comma\-separated values (data interchange)-T}@T{-\f[C]\&.csv\f[]-T}-.TE-.PP-If needed (eg to ensure correct error messages when a file has the-"wrong" extension), you can force a specific reader/format by prepending-it to the file path with a colon.-Examples:-.IP-.nf-\f[C]-$\ hledger\ \-f\ csv:/some/csv\-file.dat\ stats-$\ echo\ \[aq]i\ 2009/13/1\ 08:00:00\[aq]\ |\ hledger\ print\ \-ftimeclock:\--\f[]-.fi-.PP-You can also specify multiple \f[C]\-f\f[] options, to read multiple-files as one big journal.-There are some limitations with this:-.IP \[bu] 2-directives in one file will not affect the other files-.IP \[bu] 2-balance assertions will not see any account balances from previous files-.PP-If you need those, either use the include directive, or concatenate the-files, eg: \f[C]cat\ a.journal\ b.journal\ |\ hledger\ \-f\-\ CMD\f[].-.SS Smart dates-.PP-hledger\[aq]s user interfaces accept a flexible "smart date" syntax-(unlike dates in the journal file).-Smart dates allow some english words, can be relative to today\[aq]s-date, and can have less\-significant date parts omitted (defaulting to-1).-.PP-Examples:-.PP-.TS-tab(@);-l l.-T{-\f[C]2009/1/1\f[], \f[C]2009/01/01\f[], \f[C]2009\-1\-1\f[],-\f[C]2009.1.1\f[]-T}@T{-simple dates, several separators allowed-T}-T{-\f[C]2009/1\f[], \f[C]2009\f[]-T}@T{-same as above \- a missing day or month defaults to 1-T}-T{-\f[C]1/1\f[], \f[C]january\f[], \f[C]jan\f[], \f[C]this\ year\f[]-T}@T{-relative dates, meaning january 1 of the current year-T}-T{-\f[C]next\ year\f[]-T}@T{-january 1 of next year-T}-T{-\f[C]this\ month\f[]-T}@T{-the 1st of the current month-T}-T{-\f[C]this\ week\f[]-T}@T{-the most recent monday-T}-T{-\f[C]last\ week\f[]-T}@T{-the monday of the week before this one-T}-T{-\f[C]lastweek\f[]-T}@T{-spaces are optional-T}-T{-\f[C]today\f[], \f[C]yesterday\f[], \f[C]tomorrow\f[]-T}@T{-T}-.TE-.SS Report start & end date-.PP-Most hledger reports show the full span of time represented by the-journal data, by default.-So, the effective report start and end dates will be the earliest and-latest transaction or posting dates found in the journal.-.PP-Often you will want to see a shorter time span, such as the current-month.-You can specify a start and/or end date using \f[C]\-b/\-\-begin\f[],-\f[C]\-e/\-\-end\f[], \f[C]\-p/\-\-period\f[] or a \f[C]date:\f[] query-(described below).-All of these accept the smart date syntax.-One important thing to be aware of when specifying end dates: as in-Ledger, end dates are exclusive, so you need to write the date-\f[I]after\f[] the last day you want to include.-.PP-Examples:-.PP-.TS-tab(@);-l l.-T{-\f[C]\-b\ 2016/3/17\f[]-T}@T{-begin on St.-Patrick\[aq]s day 2016-T}-T{-\f[C]\-e\ 12/1\f[]-T}@T{-end at the start of december 1st of the current year (11/30 will be the-last date included)-T}-T{-\f[C]\-b\ thismonth\f[]-T}@T{-all transactions on or after the 1st of the current month-T}-T{-\f[C]\-p\ thismonth\f[]-T}@T{-all transactions in the current month-T}-T{-\f[C]date:2016/3/17\-\f[]-T}@T{-the above written as queries instead-T}-T{-\f[C]date:\-12/1\f[]-T}@T{-T}-T{-\f[C]date:thismonth\-\f[]-T}@T{-T}-T{-\f[C]date:thismonth\f[]-T}@T{-T}-.TE-.SS Report intervals-.PP-A report interval can be specified so that commands like register,-balance and activity will divide their reports into multiple subperiods.-The basic intervals can be selected with one of \f[C]\-D/\-\-daily\f[],-\f[C]\-W/\-\-weekly\f[], \f[C]\-M/\-\-monthly\f[],-\f[C]\-Q/\-\-quarterly\f[], or \f[C]\-Y/\-\-yearly\f[].-More complex intervals may be specified with a period expression.-Report intervals can not be specified with a query, currently.-.SS Period expressions-.PP-The \f[C]\-p/\-\-period\f[] option accepts period expressions, a-shorthand way of expressing a start date, end date, and/or report-interval all at once.-.PP-Here\[aq]s a basic period expression specifying the first quarter of-2009.-Note, hledger always treats start dates as inclusive and end dates as-exclusive:-.PP-\f[C]\-p\ "from\ 2009/1/1\ to\ 2009/4/1"\f[]-.PP-Keywords like "from" and "to" are optional, and so are the spaces, as-long as you don\[aq]t run two dates together.-"to" can also be written as "\-".-These are equivalent to the above:-.PP-.TS-tab(@);-l.-T{-\f[C]\-p\ "2009/1/1\ 2009/4/1"\f[]-T}-T{-\f[C]\-p2009/1/1to2009/4/1\f[]-T}-T{-\f[C]\-p2009/1/1\-2009/4/1\f[]-T}-.TE-.PP-Dates are smart dates, so if the current year is 2009, the above can-also be written as:-.PP-.TS-tab(@);-l.-T{-\f[C]\-p\ "1/1\ 4/1"\f[]-T}-T{-\f[C]\-p\ "january\-apr"\f[]-T}-T{-\f[C]\-p\ "this\ year\ to\ 4/1"\f[]-T}-.TE-.PP-If you specify only one date, the missing start or end date will be the-earliest or latest transaction in your journal:-.PP-.TS-tab(@);-l l.-T{-\f[C]\-p\ "from\ 2009/1/1"\f[]-T}@T{-everything after january 1, 2009-T}-T{-\f[C]\-p\ "from\ 2009/1"\f[]-T}@T{-the same-T}-T{-\f[C]\-p\ "from\ 2009"\f[]-T}@T{-the same-T}-T{-\f[C]\-p\ "to\ 2009"\f[]-T}@T{-everything before january 1, 2009-T}-.TE-.PP-A single date with no "from" or "to" defines both the start and end date-like so:-.PP-.TS-tab(@);-l l.-T{-\f[C]\-p\ "2009"\f[]-T}@T{-the year 2009; equivalent to "2009/1/1 to 2010/1/1"-T}-T{-\f[C]\-p\ "2009/1"\f[]-T}@T{-the month of jan; equivalent to "2009/1/1 to 2009/2/1"-T}-T{-\f[C]\-p\ "2009/1/1"\f[]-T}@T{-just that day; equivalent to "2009/1/1 to 2009/1/2"-T}-.TE-.PP-The argument of \f[C]\-p\f[] can also begin with, or be, a report-interval expression.-The basic report intervals are \f[C]daily\f[], \f[C]weekly\f[],-\f[C]monthly\f[], \f[C]quarterly\f[], or \f[C]yearly\f[], which have the-same effect as the \f[C]\-D\f[],\f[C]\-W\f[],\f[C]\-M\f[],\f[C]\-Q\f[],-or \f[C]\-Y\f[] flags.-Between report interval and start/end dates (if any), the word-\f[C]in\f[] is optional.-Examples:-.PP-.TS-tab(@);-l.-T{-\f[C]\-p\ "weekly\ from\ 2009/1/1\ to\ 2009/4/1"\f[]-T}-T{-\f[C]\-p\ "monthly\ in\ 2008"\f[]-T}-T{-\f[C]\-p\ "quarterly"\f[]-T}-.TE-.PP-The following more complex report intervals are also supported:-\f[C]biweekly\f[], \f[C]bimonthly\f[],-\f[C]every\ N\ days|weeks|months|quarters|years\f[],-\f[C]every\ Nth\ day\ [of\ month]\f[],-\f[C]every\ Nth\ day\ of\ week\f[].-.PP-Examples:-.PP-.TS-tab(@);-l.-T{-\f[C]\-p\ "bimonthly\ from\ 2008"\f[]-T}-T{-\f[C]\-p\ "every\ 2\ weeks"\f[]-T}-T{-\f[C]\-p\ "every\ 5\ days\ from\ 1/3"\f[]-T}-.TE-.PP-Show historical balances at end of 15th each month (N is exclusive end-date):-.PP-\f[C]hledger\ balance\ \-H\ \-p\ "every\ 16th\ day"\f[]-.PP-Group postings from start of wednesday to end of next tuesday (N is-start date and exclusive end date):-.PP-\f[C]hledger\ register\ checking\ \-p\ "every\ 3rd\ day\ of\ week"\f[]-.SS Depth limiting-.PP-With the \f[C]\-\-depth\ N\f[] option (short form: \f[C]\-N\f[]),-commands like account, balance and register will show only the uppermost-accounts in the account tree, down to level N.-Use this when you want a summary with less detail.-This flag has the same effect as a \f[C]depth:\f[] query argument (so-\f[C]\-2\f[], \f[C]\-\-depth=2\f[] or \f[C]depth:2\f[] are basically-equivalent).-.SS Pivoting-.PP-Normally hledger sums amounts, and organizes them in a hierarchy, based-on account name.-The \f[C]\-\-pivot\ FIELD\f[] option causes it to sum and organize-hierarchy based on the value of some other field instead.-FIELD can be: \f[C]code\f[], \f[C]description\f[], \f[C]payee\f[],-\f[C]note\f[], or the full name (case insensitive) of any tag.-As with account names, values containing \f[C]colon:separated:parts\f[]-will be displayed hierarchically in reports.-.PP-\f[C]\-\-pivot\f[] is a general option affecting all reports; you can-think of hledger transforming the journal before any other processing,-replacing every posting\[aq]s account name with the value of the-specified field on that posting, inheriting it from the transaction or-using a blank value if it\[aq]s not present.-.PP-An example:-.IP-.nf-\f[C]-2016/02/16\ Member\ Fee\ Payment-\ \ \ \ assets:bank\ account\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR-\ \ \ \ income:member\ fees\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ ;\ member:\ John\ Doe-\f[]-.fi-.PP-Normal balance report showing account names:-.IP-.nf-\f[C]-$\ hledger\ balance-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR\ \ assets:bank\ account-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ income:member\ fees-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-Pivoted balance report, using member: tag values instead:-.IP-.nf-\f[C]-$\ hledger\ balance\ \-\-pivot\ member-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ John\ Doe-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-One way to show only amounts with a member: value (using a query,-described below):-.IP-.nf-\f[C]-$\ hledger\ balance\ \-\-pivot\ member\ tag:member=.-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ John\ Doe-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR-\f[]-.fi-.PP-Another way (the acct: query matches against the pivoted "account-name"):-.IP-.nf-\f[C]-$\ hledger\ balance\ \-\-pivot\ member\ acct:.-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ John\ Doe-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR-\f[]-.fi-.SS Cost-.PP-The \f[C]\-B/\-\-cost\f[] flag converts amounts to their cost at-transaction time, if they have a transaction price specified.-.SS Market value-.PP-The \f[C]\-V/\-\-value\f[] flag converts the reported amounts to their-market value on the report end date, using the most recent applicable-market prices, when known.-Specifically, when there is a market price (P directive) for the-amount\[aq]s commodity, dated on or before the report end date (see-hledger \-> Report start & end date), the amount will be converted to-the price\[aq]s commodity.-If multiple applicable prices are defined, the latest\-dated one is used-(and if dates are equal, the one last parsed).-.PP-For example:-.IP-.nf-\f[C]-#\ one\ euro\ is\ worth\ this\ many\ dollars\ from\ nov\ 1-P\ 2016/11/01\ €\ $1.10--#\ purchase\ some\ euros\ on\ nov\ 3-2016/11/3-\ \ \ \ assets:euros\ \ \ \ \ \ \ \ €100-\ \ \ \ assets:checking--#\ the\ euro\ is\ worth\ fewer\ dollars\ by\ dec\ 21-P\ 2016/12/21\ €\ $1.03-\f[]-.fi-.PP-How many euros do I have ?-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.j\ bal\ euros-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €100\ \ assets:euros-\f[]-.fi-.PP-What are they worth on nov 3 ?-(no report end date specified, defaults to the last date in the journal)-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.j\ bal\ euros\ \-V-\ \ \ \ \ \ \ \ \ \ \ \ \ $110.00\ \ assets:euros-\f[]-.fi-.PP-What are they worth on dec 21 ?-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.j\ bal\ euros\ \-V\ \-e\ 2016/12/21-\ \ \ \ \ \ \ \ \ \ \ \ \ $103.00\ \ assets:euros-\f[]-.fi-.PP-Currently, hledger\[aq]s \-V only uses market prices recorded with P-directives, not transaction prices (unlike Ledger).-.PP-Using \-B and \-V together is allowed.-.SS Regular expressions-.PP-hledger uses regular expressions in a number of places:-.IP \[bu] 2-query terms, on the command line and in the hledger\-web search form:-\f[C]REGEX\f[], \f[C]desc:REGEX\f[], \f[C]cur:REGEX\f[],-\f[C]tag:...=REGEX\f[]-.IP \[bu] 2-CSV rules conditional blocks: \f[C]if\ REGEX\ ...\f[]-.IP \[bu] 2-account alias directives and options:-\f[C]alias\ /REGEX/\ =\ REPLACEMENT\f[],-\f[C]\-\-alias\ /REGEX/=REPLACEMENT\f[]-.PP-hledger\[aq]s regular expressions come from the regex\-tdfa library.-In general they:-.IP \[bu] 2-are case insensitive-.IP \[bu] 2-are infix matching (do not need to match the entire thing being matched)-.IP \[bu] 2-are POSIX extended regular expressions-.IP \[bu] 2-also support GNU word boundaries (\\<, \\>, \\b, \\B)-.IP \[bu] 2-and parenthesised capturing groups and numeric backreferences in-replacement strings-.IP \[bu] 2-do not support mode modifiers like (?s)-.PP-Some things to note:-.IP \[bu] 2-In the \f[C]alias\f[] directive and \f[C]\-\-alias\f[] option, regular-expressions must be enclosed in forward slashes (\f[C]/REGEX/\f[]).-Elsewhere in hledger, these are not required.-.IP \[bu] 2-In queries, to match a regular expression metacharacter like \f[C]$\f[]-as a literal character, prepend a backslash.-Eg to search for amounts with the dollar sign in hledger\-web, write-\f[C]cur:\\$\f[].-.IP \[bu] 2-On the command line, some metacharacters like \f[C]$\f[] have a special-meaning to the shell and so must be escaped at least once more.-See Special characters.-.SH QUERIES-.PP-One of hledger\[aq]s strengths is being able to quickly report on-precise subsets of your data.-Most commands accept an optional query expression, written as arguments-after the command name, to filter the data by date, account name or-other criteria.-The syntax is similar to a web search: one or more space\-separated-search terms, quotes to enclose whitespace, prefixes to match specific-fields, a not: prefix to negate the match.-.PP-We do not yet support arbitrary boolean combinations of search terms;-instead most commands show transactions/postings/accounts which match-(or negatively match):-.IP \[bu] 2-any of the description terms AND-.IP \[bu] 2-any of the account terms AND-.IP \[bu] 2-any of the status terms AND-.IP \[bu] 2-all the other terms.-.PP-The print command instead shows transactions which:-.IP \[bu] 2-match any of the description terms AND-.IP \[bu] 2-have any postings matching any of the positive account terms AND-.IP \[bu] 2-have no postings matching any of the negative account terms AND-.IP \[bu] 2-match all the other terms.-.PP-The following kinds of search terms can be used.-Remember these can also be prefixed with \f[B]\f[C]not:\f[]\f[], eg to-exclude a particular subaccount.-.TP-.B \f[B]\f[C]REGEX\f[]\f[]-match account names by this regular expression.-(No prefix is equivalent to \f[C]acct:\f[]).-.RS-.RE-.TP-.B \f[B]\f[C]acct:REGEX\f[]\f[]-same as above-.RS-.RE-.TP-.B \f[B]\f[C]amt:N,\ amt:<N,\ amt:<=N,\ amt:>N,\ amt:>=N\f[]\f[]-match postings with a single\-commodity amount that is equal to, less-than, or greater than N.-(Multi\-commodity amounts are not tested, and will always match.) The-comparison has two modes: if N is preceded by a + or \- sign (or is 0),-the two signed numbers are compared.-Otherwise, the absolute magnitudes are compared, ignoring sign.-.RS-.RE-.TP-.B \f[B]\f[C]code:REGEX\f[]\f[]-match by transaction code (eg check number)-.RS-.RE-.TP-.B \f[B]\f[C]cur:REGEX\f[]\f[]-match postings or transactions including any amounts whose-currency/commodity symbol is fully matched by REGEX.-(For a partial match, use \f[C]\&.*REGEX.*\f[]).-Note, to match characters which are regex\-significant, like the dollar-sign (\f[C]$\f[]), you need to prepend \f[C]\\\f[].-And when using the command line you need to add one more level of-quoting to hide it from the shell, so eg do:-\f[C]hledger\ print\ cur:\[aq]\\$\[aq]\f[] or-\f[C]hledger\ print\ cur:\\\\$\f[].-.RS-.RE-.TP-.B \f[B]\f[C]desc:REGEX\f[]\f[]-match transaction descriptions.-.RS-.RE-.TP-.B \f[B]\f[C]date:PERIODEXPR\f[]\f[]-match dates within the specified period.-PERIODEXPR is a period expression (with no report interval).-Examples: \f[C]date:2016\f[], \f[C]date:thismonth\f[],-\f[C]date:2000/2/1\-2/15\f[], \f[C]date:lastweek\-\f[].-If the \f[C]\-\-date2\f[] command line flag is present, this matches-secondary dates instead.-.RS-.RE-.TP-.B \f[B]\f[C]date2:PERIODEXPR\f[]\f[]-match secondary dates within the specified period.-.RS-.RE-.TP-.B \f[B]\f[C]depth:N\f[]\f[]-match (or display, depending on command) accounts at or above this depth-.RS-.RE-.TP-.B \f[B]\f[C]note:REGEX\f[]\f[]-match transaction notes (part of description right of \f[C]|\f[], or-whole description when there\[aq]s no \f[C]|\f[])-.RS-.RE-.TP-.B \f[B]\f[C]payee:REGEX\f[]\f[]-match transaction payee/payer names (part of description left of-\f[C]|\f[], or whole description when there\[aq]s no \f[C]|\f[])-.RS-.RE-.TP-.B \f[B]\f[C]real:,\ real:0\f[]\f[]-match real or virtual postings respectively-.RS-.RE-.TP-.B \f[B]\f[C]status:,\ status:!,\ status:*\f[]\f[]-match unmarked, pending, or cleared transactions respectively-.RS-.RE-.TP-.B \f[B]\f[C]tag:REGEX[=REGEX]\f[]\f[]-match by tag name, and optionally also by tag value.-Note a tag: query is considered to match a transaction if it matches any-of the postings.-Also remember that postings inherit the tags of their parent-transaction.-.RS-.RE-.PP-The following special search term is used automatically in hledger\-web,-only:-.TP-.B \f[B]\f[C]inacct:ACCTNAME\f[]\f[]-tells hledger\-web to show the transaction register for this account.-Can be filtered further with \f[C]acct\f[] etc.-.RS-.RE-.PP-Some of these can also be expressed as command\-line options (eg-\f[C]depth:2\f[] is equivalent to \f[C]\-\-depth\ 2\f[]).-Generally you can mix options and query arguments, and the resulting-query will be their intersection (perhaps excluding the-\f[C]\-p/\-\-period\f[] option).-.SH COMMANDS-.PP-hledger provides a number of subcommands; \f[C]hledger\f[] with no-arguments shows a list.-.PP-If you install additional \f[C]hledger\-*\f[] packages, or if you put-programs or scripts named \f[C]hledger\-NAME\f[] in your PATH, these-will also be listed as subcommands.-.PP-Run a subcommand by writing its name as first argument (eg-\f[C]hledger\ incomestatement\f[]).-You can also write one of the standard short aliases displayed in-parentheses in the command list (\f[C]hledger\ b\f[]), or any any-unambiguous prefix of a command name (\f[C]hledger\ inc\f[]).-.PP-Here are all the builtin commands in alphabetical order.-See also \f[C]hledger\f[] for a more organised command list, and-\f[C]hledger\ CMD\ \-h\f[] for detailed command help.-.SS accounts-.PP-Show account names.-Alias: a.-.TP-.B \f[C]\-\-tree\f[]-show short account names, as a tree-.RS-.RE-.TP-.B \f[C]\-\-flat\f[]-show full account names, as a list (default)-.RS-.RE-.TP-.B \f[C]\-\-drop=N\f[]-in flat mode: omit N leading account name parts-.RS-.RE-.PP-This command lists all account names that are in use (ie, all the-accounts which have at least one transaction posting to them).-With query arguments, only matched account names are shown.-.PP-It shows a flat list by default.-With \f[C]\-\-tree\f[], it uses indentation to show the account-hierarchy.-.PP-In flat mode you can add \f[C]\-\-drop\ N\f[] to omit the first few-account name components.-.PP-Examples:-.IP-.nf-\f[C]-$\ hledger\ accounts\ \-\-tree-assets-\ \ bank-\ \ \ \ checking-\ \ \ \ saving-\ \ cash-expenses-\ \ food-\ \ supplies-income-\ \ gifts-\ \ salary-liabilities-\ \ debts-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ accounts\ \-\-drop\ 1-bank:checking-bank:saving-cash-food-supplies-gifts-salary-debts-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ accounts-assets:bank:checking-assets:bank:saving-assets:cash-expenses:food-expenses:supplies-income:gifts-income:salary-liabilities:debts-\f[]-.fi-.SS activity-.PP-Show an ascii barchart of posting counts per interval.-.PP-The activity command displays an ascii histogram showing transaction-counts by day, week, month or other reporting interval (by day is the-default).-With query arguments, it counts only matched transactions.-.IP-.nf-\f[C]-$\ hledger\ activity\ \-\-quarterly-2008\-01\-01\ **-2008\-04\-01\ *******-2008\-07\-01\ -2008\-10\-01\ **-\f[]-.fi-.SS add-.PP-Prompt for transactions and add them to the journal.-.TP-.B \f[C]\-\-no\-new\-accounts\f[]-don\[aq]t allow creating new accounts; helps prevent typos when entering-account names-.RS-.RE-.PP-Many hledger users edit their journals directly with a text editor, or-generate them from CSV.-For more interactive data entry, there is the \f[C]add\f[] command,-which prompts interactively on the console for new transactions, and-appends them to the journal file (if there are multiple-\f[C]\-f\ FILE\f[] options, the first file is used.) Existing-transactions are not changed.-This is the only hledger command that writes to the journal file.-.PP-To use it, just run \f[C]hledger\ add\f[] and follow the prompts.-You can add as many transactions as you like; when you are finished,-enter \f[C]\&.\f[] or press control\-d or control\-c to exit.-.PP-Features:-.IP \[bu] 2-add tries to provide useful defaults, using the most similar recent-transaction (by description) as a template.-.IP \[bu] 2-You can also set the initial defaults with command line arguments.-.IP \[bu] 2-Readline\-style edit keys can be used during data entry.-.IP \[bu] 2-The tab key will auto\-complete whenever possible \- accounts,-descriptions, dates (\f[C]yesterday\f[], \f[C]today\f[],-\f[C]tomorrow\f[]).-If the input area is empty, it will insert the default value.-.IP \[bu] 2-If the journal defines a default commodity, it will be added to any bare-numbers entered.-.IP \[bu] 2-A parenthesised transaction code may be entered following a date.-.IP \[bu] 2-Comments and tags may be entered following a description or amount.-.IP \[bu] 2-If you make a mistake, enter \f[C]<\f[] at any prompt to restart the-transaction.-.IP \[bu] 2-Input prompts are displayed in a different colour when the terminal-supports it.-.PP-Example (see the tutorial for a detailed explanation):-.IP-.nf-\f[C]-$\ hledger\ add-Adding\ transactions\ to\ journal\ file\ /src/hledger/examples/sample.journal-Any\ command\ line\ arguments\ will\ be\ used\ as\ defaults.-Use\ tab\ key\ to\ complete,\ readline\ keys\ to\ edit,\ enter\ to\ accept\ defaults.-An\ optional\ (CODE)\ may\ follow\ transaction\ dates.-An\ optional\ ;\ COMMENT\ may\ follow\ descriptions\ or\ amounts.-If\ you\ make\ a\ mistake,\ enter\ <\ at\ any\ prompt\ to\ restart\ the\ transaction.-To\ end\ a\ transaction,\ enter\ .\ when\ prompted.-To\ quit,\ enter\ .\ at\ a\ date\ prompt\ or\ press\ control\-d\ or\ control\-c.-Date\ [2015/05/22]:\ -Description:\ supermarket-Account\ 1:\ expenses:food-Amount\ \ 1:\ $10-Account\ 2:\ assets:checking-Amount\ \ 2\ [$\-10.0]:\ -Account\ 3\ (or\ .\ or\ enter\ to\ finish\ this\ transaction):\ .-2015/05/22\ supermarket-\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ $10-\ \ \ \ assets:checking\ \ \ \ \ \ \ \ $\-10.0--Save\ this\ transaction\ to\ the\ journal\ ?\ [y]:\ -Saved.-Starting\ the\ next\ transaction\ (.\ or\ ctrl\-D/ctrl\-C\ to\ quit)-Date\ [2015/05/22]:\ <CTRL\-D>\ $-\f[]-.fi-.SS balance-.PP-Show accounts and their balances.-Aliases: b, bal.-.TP-.B \f[C]\-\-change\f[]-show balance change in each period (default)-.RS-.RE-.TP-.B \f[C]\-\-cumulative\f[]-show balance change accumulated across periods (in multicolumn reports)-.RS-.RE-.TP-.B \f[C]\-H\ \-\-historical\f[]-show historical ending balance in each period (includes postings before-report start date)-.RS-.RE-.TP-.B \f[C]\-\-tree\f[]-show accounts as a tree; amounts include subaccounts (default in simple-reports)-.RS-.RE-.TP-.B \f[C]\-\-flat\f[]-show accounts as a list; amounts exclude subaccounts except when account-is depth\-clipped (default in multicolumn reports)-.RS-.RE-.TP-.B \f[C]\-A\ \-\-average\f[]-show a row average column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-T\ \-\-row\-total\f[]-show a row total column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-N\ \-\-no\-total\f[]-don\[aq]t show the final total row-.RS-.RE-.TP-.B \f[C]\-\-drop=N\f[]-omit N leading account name parts (in flat mode)-.RS-.RE-.TP-.B \f[C]\-\-no\-elide\f[]-don\[aq]t squash boring parent accounts (in tree mode)-.RS-.RE-.TP-.B \f[C]\-\-format=LINEFORMAT\f[]-in single\-column balance reports: use this custom line format-.RS-.RE-.TP-.B \f[C]\-O\ FMT\ \-\-output\-format=FMT\f[]-select the output format.-Supported formats: txt, csv.-.RS-.RE-.TP-.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]-write output to FILE.-A file extension matching one of the above formats selects that format.-.RS-.RE-.TP-.B \f[C]\-\-pretty\-tables\f[]-Use unicode to display prettier tables.-.RS-.RE-.TP-.B \f[C]\-\-sort\-amount\f[]-Sort by amount (total row amount, or by average if that is displayed),-instead of account name (in flat mode)-.RS-.RE-.PP-The balance command displays accounts and balances.-It is hledger\[aq]s most featureful and versatile command.-.IP-.nf-\f[C]-$\ hledger\ balance-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ \ \ cash-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ food-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ supplies-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ income-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ gifts-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ salary-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities:debts-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-More precisely, the balance command shows the \f[I]change\f[] to each-account\[aq]s balance caused by all (matched) postings.-In the common case where you do not filter by date and your journal sets-the correct opening balances, this is the same as the account\[aq]s-ending balance.-.PP-By default, accounts are displayed hierarchically, with subaccounts-indented below their parent.-"Boring" accounts, which contain a single interesting subaccount and no-balance of their own, are elided into the following line for more-compact output.-(Use \f[C]\-\-no\-elide\f[] to prevent this.-Eliding of boring accounts is not yet supported in multicolumn reports.)-.PP-Each account\[aq]s balance is the "inclusive" balance \- it includes the-balances of any subaccounts.-.PP-Accounts which have zero balance (and no non\-zero subaccounts) are-omitted.-Use \f[C]\-E/\-\-empty\f[] to show them.-.PP-A final total is displayed by default; use \f[C]\-N/\-\-no\-total\f[] to-suppress it:-.IP-.nf-\f[C]-$\ hledger\ balance\ \-p\ 2008/6\ expenses\ \-\-no\-total-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ food-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ supplies-\f[]-.fi-.SS Flat mode-.PP-To see a flat list of full account names instead of the default-hierarchical display, use \f[C]\-\-flat\f[].-In this mode, accounts (unless depth\-clipped) show their "exclusive"-balance, excluding any subaccount balances.-In this mode, you can also use \f[C]\-\-drop\ N\f[] to omit the first-few account name components.-.IP-.nf-\f[C]-$\ hledger\ balance\ \-p\ 2008/6\ expenses\ \-N\ \-\-flat\ \-\-drop\ 1-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ food-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ supplies-\f[]-.fi-.SS Depth limited balance reports-.PP-With \f[C]\-\-depth\ N\f[], balance shows accounts only to the specified-depth.-This is very useful to show a complex charts of accounts in less detail.-In flat mode, balances from accounts below the depth limit will be shown-as part of a parent account at the depth limit.-.IP-.nf-\f[C]-$\ hledger\ balance\ \-N\ \-\-depth\ 1-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ income-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities-\f[]-.fi-.SS Multicolumn balance reports-.PP-With a reporting interval, multiple balance columns will be shown, one-for each report period.-There are three types of multi\-column balance report, showing different-information:-.IP "1." 3-By default: each column shows the sum of postings in that period, ie the-account\[aq]s change of balance in that period.-This is useful eg for a monthly income statement:-.RS 4-.IP-.nf-\f[C]-$\ hledger\ balance\ \-\-quarterly\ income\ expenses\ \-E-Balance\ changes\ in\ 2008:--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008q1\ \ 2008q2\ \ 2008q3\ \ 2008q4\ -===================++=================================-\ expenses:food\ \ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ -\ expenses:supplies\ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ -\ income:gifts\ \ \ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ -\ income:salary\ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ -\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ -\f[]-.fi-.RE-.IP "2." 3-With \f[C]\-\-cumulative\f[]: each column shows the ending balance for-that period, accumulating the changes across periods, starting from 0 at-the report start date:-.RS 4-.IP-.nf-\f[C]-$\ hledger\ balance\ \-\-quarterly\ income\ expenses\ \-E\ \-\-cumulative-Ending\ balances\ (cumulative)\ in\ 2008:--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008/03/31\ \ 2008/06/30\ \ 2008/09/30\ \ 2008/12/31\ -===================++=================================================-\ expenses:food\ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ -\ expenses:supplies\ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ -\ income:gifts\ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ -\ income:salary\ \ \ \ \ ||\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ -\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ -\f[]-.fi-.RE-.IP "3." 3-With \f[C]\-\-historical/\-H\f[]: each column shows the actual-historical ending balance for that period, accumulating the changes-across periods, starting from the actual balance at the report start-date.-This is useful eg for a multi\-period balance sheet, and when you are-showing only the data after a certain start date:-.RS 4-.IP-.nf-\f[C]-$\ hledger\ balance\ ^assets\ ^liabilities\ \-\-quarterly\ \-\-historical\ \-\-begin\ 2008/4/1-Ending\ balances\ (historical)\ in\ 2008/04/01\-2008/12/31:--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008/06/30\ \ 2008/09/30\ \ 2008/12/31\ -======================++=====================================-\ assets:bank:checking\ ||\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ 0\ -\ assets:bank:saving\ \ \ ||\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ -\ assets:cash\ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ $\-2\ \ \ \ \ \ \ \ \ $\-2\ \ \ \ \ \ \ \ \ $\-2\ -\ liabilities:debts\ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ $1\ -\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ -\f[]-.fi-.RE-.PP-Multi\-column balance reports display accounts in flat mode by default;-to see the hierarchy, use \f[C]\-\-tree\f[].-.PP-With a reporting interval (like \f[C]\-\-quarterly\f[] above), the-report start/end dates will be adjusted if necessary so that they-encompass the displayed report periods.-This is so that the first and last periods will be "full" and comparable-to the others.-.PP-The \f[C]\-E/\-\-empty\f[] flag does two things in multicolumn balance-reports: first, the report will show all columns within the specified-report period (without \-E, leading and trailing columns with all zeroes-are not shown).-Second, all accounts which existed at the report start date will be-considered, not just the ones with activity during the report period-(use \-E to include low\-activity accounts which would otherwise would-be omitted).-.PP-The \f[C]\-T/\-\-row\-total\f[] flag adds an additional column showing-the total for each row.-.PP-The \f[C]\-A/\-\-average\f[] flag adds a column showing the average-value in each row.-.PP-Here\[aq]s an example of all three:-.IP-.nf-\f[C]-$\ hledger\ balance\ \-Q\ income\ expenses\ \-\-tree\ \-ETA-Balance\ changes\ in\ 2008:--\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008q1\ \ 2008q2\ \ 2008q3\ \ 2008q4\ \ \ \ Total\ \ Average\ -============++===================================================-\ expenses\ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $2\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ $2\ \ \ \ \ \ \ $1\ -\ \ \ food\ \ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ 0\ -\ \ \ supplies\ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ 0\ -\ income\ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ $\-2\ \ \ \ \ \ $\-1\ -\ \ \ gifts\ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ 0\ -\ \ \ salary\ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ 0\ -\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ 0\ --#\ Average\ is\ rounded\ to\ the\ dollar\ here\ since\ all\ journal\ amounts\ are-\f[]-.fi-.SS Custom balance output-.PP-In simple (non\-multi\-column) balance reports, you can customise the-output with \f[C]\-\-format\ FMT\f[]:-.IP-.nf-\f[C]-$\ hledger\ balance\ \-\-format\ "%20(account)\ %12(total)"-\ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ $\-1-\ \ \ \ \ \ \ \ \ bank:saving\ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cash\ \ \ \ \ \ \ \ \ \ $\-2-\ \ \ \ \ \ \ \ \ \ \ \ expenses\ \ \ \ \ \ \ \ \ \ \ $2-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ food\ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ \ \ \ \ \ \ \ \ supplies\ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ \ \ \ \ \ \ \ \ \ \ income\ \ \ \ \ \ \ \ \ \ $\-2-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ gifts\ \ \ \ \ \ \ \ \ \ $\-1-\ \ \ \ \ \ \ \ \ \ \ \ \ \ salary\ \ \ \ \ \ \ \ \ \ $\-1-\ \ \ liabilities:debts\ \ \ \ \ \ \ \ \ \ \ $1-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-The FMT format string (plus a newline) specifies the formatting applied-to each account/balance pair.-It may contain any suitable text, with data fields interpolated like so:-.PP-\f[C]%[MIN][.MAX](FIELDNAME)\f[]-.IP \[bu] 2-MIN pads with spaces to at least this width (optional)-.IP \[bu] 2-MAX truncates at this width (optional)-.IP \[bu] 2-FIELDNAME must be enclosed in parentheses, and can be one of:-.RS 2-.IP \[bu] 2-\f[C]depth_spacer\f[] \- a number of spaces equal to the account\[aq]s-depth, or if MIN is specified, MIN * depth spaces.-.IP \[bu] 2-\f[C]account\f[] \- the account\[aq]s name-.IP \[bu] 2-\f[C]total\f[] \- the account\[aq]s balance/posted total, right-justified-.RE-.PP-Also, FMT can begin with an optional prefix to control how-multi\-commodity amounts are rendered:-.IP \[bu] 2-\f[C]%_\f[] \- render on multiple lines, bottom\-aligned (the default)-.IP \[bu] 2-\f[C]%^\f[] \- render on multiple lines, top\-aligned-.IP \[bu] 2-\f[C]%,\f[] \- render on one line, comma\-separated-.PP-There are some quirks.-Eg in one\-line mode, \f[C]%(depth_spacer)\f[] has no effect, instead-\f[C]%(account)\f[] has indentation built in.- Experimentation may be needed to get pleasing results.-.PP-Some example formats:-.IP \[bu] 2-\f[C]%(total)\f[] \- the account\[aq]s total-.IP \[bu] 2-\f[C]%\-20.20(account)\f[] \- the account\[aq]s name, left justified,-padded to 20 characters and clipped at 20 characters-.IP \[bu] 2-\f[C]%,%\-50(account)\ \ %25(total)\f[] \- account name padded to 50-characters, total padded to 20 characters, with multiple commodities-rendered on one line-.IP \[bu] 2-\f[C]%20(total)\ \ %2(depth_spacer)%\-(account)\f[] \- the default-format for the single\-column balance report-.SS Colour support-.PP-The balance command shows negative amounts in red, if:-.IP \[bu] 2-the \f[C]TERM\f[] environment variable is not set to \f[C]dumb\f[]-.IP \[bu] 2-the output is not being redirected or piped anywhere-.SS Output destination-.PP-The balance, print, register and stats commands can write their output-to a destination other than the console.-This is controlled by the \f[C]\-o/\-\-output\-file\f[] option.-.IP-.nf-\f[C]-$\ hledger\ balance\ \-o\ \-\ \ \ \ \ #\ write\ to\ stdout\ (the\ default)-$\ hledger\ balance\ \-o\ FILE\ \ #\ write\ to\ FILE-\f[]-.fi-.SS CSV output-.PP-The balance, print and register commands can write their output as CSV.-This is useful for exporting data to other applications, eg to make-charts in a spreadsheet.-This is controlled by the \f[C]\-O/\-\-output\-format\f[] option, or by-specifying a \f[C]\&.csv\f[] file extension with-\f[C]\-o/\-\-output\-file\f[].-.IP-.nf-\f[C]-$\ hledger\ balance\ \-O\ csv\ \ \ \ \ \ \ #\ write\ CSV\ to\ stdout-$\ hledger\ balance\ \-o\ FILE.csv\ \ #\ write\ CSV\ to\ FILE.csv-\f[]-.fi-.SS balancesheet-.PP-Show a balance sheet.-Alias: bs.-.TP-.B \f[C]\-\-change\f[]-show balance change in each period, instead of historical ending-balances-.RS-.RE-.TP-.B \f[C]\-\-cumulative\f[]-show balance change accumulated across periods (in multicolumn reports),-instead of historical ending balances-.RS-.RE-.TP-.B \f[C]\-H\ \-\-historical\f[]-show historical ending balance in each period (includes postings before-report start date) (default)-.RS-.RE-.TP-.B \f[C]\-\-tree\f[]-show accounts as a tree; amounts include subaccounts (default in simple-reports)-.RS-.RE-.TP-.B \f[C]\-\-flat\f[]-show accounts as a list; amounts exclude subaccounts except when account-is depth\-clipped (default in multicolumn reports)-.RS-.RE-.TP-.B \f[C]\-A\ \-\-average\f[]-show a row average column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-T\ \-\-row\-total\f[]-show a row total column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-N\ \-\-no\-total\f[]-don\[aq]t show the final total row-.RS-.RE-.TP-.B \f[C]\-\-drop=N\f[]-omit N leading account name parts (in flat mode)-.RS-.RE-.TP-.B \f[C]\-\-no\-elide\f[]-don\[aq]t squash boring parent accounts (in tree mode)-.RS-.RE-.TP-.B \f[C]\-\-format=LINEFORMAT\f[]-in single\-column balance reports: use this custom line format-.RS-.RE-.TP-.B \f[C]\-\-sort\-amount\f[]-sort by amount instead of account name-.RS-.RE-.PP-This command displays a simple balance sheet.-It currently assumes that you have top\-level accounts named-\f[C]asset\f[] and \f[C]liability\f[] (plural forms also allowed.)-.IP-.nf-\f[C]-$\ hledger\ balancesheet-Balance\ Sheet--Assets:-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ \ \ cash-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1--Liabilities:-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities:debts-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1--Total:-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-With a reporting interval, multiple columns will be shown, one for each-report period.-As with multicolumn balance reports, you can alter the report mode with-\f[C]\-\-change\f[]/\f[C]\-\-cumulative\f[]/\f[C]\-\-historical\f[].-Normally balancesheet shows historical ending balances, which is what-you need for a balance sheet; note this means it ignores report begin-dates.-.SS balancesheetequity-.PP-Show a balance sheet including equity.-Alias: bse.-.PP-Other than showing the equity accounts, this command is exactly the same-as the command balancesheet.-Please refer to it for the available options.-.PP-This command displays a balancesheet.-It currently assumes that you have top\-level accounts named-\f[C]asset\f[], \f[C]liability\f[] and \f[C]equity\f[] (plural forms-also allowed.)-.IP-.nf-\f[C]-$\ hledger\ balancesheetequity-Balance\ Sheet\ With\ Equity--Assets:-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ assets-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-3\ \ \ \ cash-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2--Liabilities:-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities:debts-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1--Equity:-\ \ \ \ \ \ \ \ \ \ $1\ \ equity:owner-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ $1--Total:-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.SS cashflow-.PP-Show a cashflow statement.-Alias: cf.-.TP-.B \f[C]\-\-change\f[]-show balance change in each period (default)-.RS-.RE-.TP-.B \f[C]\-\-cumulative\f[]-show balance change accumulated across periods (in multicolumn reports),-instead of changes during periods-.RS-.RE-.TP-.B \f[C]\-H\ \-\-historical\f[]-show historical ending balance in each period (includes postings before-report start date), instead of changes during each period-.RS-.RE-.TP-.B \f[C]\-\-tree\f[]-show accounts as a tree; amounts include subaccounts (default in simple-reports)-.RS-.RE-.TP-.B \f[C]\-\-flat\f[]-show accounts as a list; amounts exclude subaccounts except when account-is depth\-clipped (default in multicolumn reports)-.RS-.RE-.TP-.B \f[C]\-A\ \-\-average\f[]-show a row average column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-T\ \-\-row\-total\f[]-show a row total column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-N\ \-\-no\-total\f[]-don\[aq]t show the final total row (in simple reports)-.RS-.RE-.TP-.B \f[C]\-\-drop=N\f[]-omit N leading account name parts (in flat mode)-.RS-.RE-.TP-.B \f[C]\-\-no\-elide\f[]-don\[aq]t squash boring parent accounts (in tree mode)-.RS-.RE-.TP-.B \f[C]\-\-format=LINEFORMAT\f[]-in single\-column balance reports: use this custom line format-.RS-.RE-.TP-.B \f[C]\-\-sort\-amount\f[]-sort by amount instead of account name-.RS-.RE-.PP-This command displays a simple cashflow statement It shows the change in-all "cash" (ie, liquid assets) accounts for the period.-It currently assumes that cash accounts are under a top\-level account-named \f[C]asset\f[] and do not contain \f[C]receivable\f[],-\f[C]:A/R\f[] or \f[C]:fixed\f[].-.IP-.nf-\f[C]-$\ hledger\ cashflow-Cashflow\ Statement--Cash\ flows:-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ \ \ cash-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1--Total:-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1-\f[]-.fi-.PP-With a reporting interval, multiple columns will be shown, one for each-report period.-Normally cashflow shows changes in assets per period, though as with-multicolumn balance reports you can alter the report mode with-\f[C]\-\-change\f[]/\f[C]\-\-cumulative\f[]/\f[C]\-\-historical\f[].-.SS check\-dates-.PP-Check that transactions are sorted by increasing date.-With a query, only matched transactions\[aq] dates are checked.-.SS check\-dupes-.PP-Report account names having the same leaf but different prefixes.-An example: http://stefanorodighiero.net/software/hledger\-dupes.html-.SS equity-.PP-Print closing/opening transactions that bring some or all account-balances to zero and back.-Can be useful for bringing account balances across file boundaries.-.SS help-.PP-Show any of the hledger manuals.-.PP-The \f[C]help\f[] command displays any of the main hledger manuals, in-one of several ways.-Run it with no argument to list the manuals, or provide a full or-partial manual name to select one.-.PP-hledger manuals are available in several formats.-hledger help will use the first of these display methods that it finds:-info, man, $PAGER, less, stdout (or when non\-interactive, just stdout).-You can force a particular viewer with the \f[C]\-\-info\f[],-\f[C]\-\-man\f[], \f[C]\-\-pager\f[], \f[C]\-\-cat\f[] flags.-.IP-.nf-\f[C]-$\ hledger\ help-Please\ choose\ a\ manual\ by\ typing\ "hledger\ help\ MANUAL"\ (a\ substring\ is\ ok).-Manuals:\ hledger\ hledger\-ui\ hledger\-web\ hledger\-api\ journal\ csv\ timeclock\ timedot-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ help\ h\ \-\-man--hledger(1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ hledger\ User\ Manuals\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ hledger(1)--NAME-\ \ \ \ \ \ \ hledger\ \-\ a\ command\-line\ accounting\ tool--SYNOPSIS-\ \ \ \ \ \ \ hledger\ [\-f\ FILE]\ COMMAND\ [OPTIONS]\ [ARGS]-\ \ \ \ \ \ \ hledger\ [\-f\ FILE]\ ADDONCMD\ \-\-\ [OPTIONS]\ [ARGS]-\ \ \ \ \ \ \ hledger--DESCRIPTION-\ \ \ \ \ \ \ hledger\ \ is\ \ a\ \ cross\-platform\ \ program\ \ for\ tracking\ money,\ time,\ or\ any-\&...-\f[]-.fi-.SS import-.PP-Read new transactions added to each FILE since last run, and add them to-the main journal file.-.TP-.B \f[C]\-\-dry\-run\f[]-just show the transactions to be imported-.RS-.RE-.PP-Input files are provided as arguments, or glob patterns.-So eg to add new transactions from all CSV files to the main journal:-hledger import *.csv-.PP-New transactions are detected like print \-\-new (using .latest.FILE-state files).-.SS incomestatement-.PP-Show an income statement.-Alias: is.-.TP-.B \f[C]\-\-change\f[]-show balance change in each period (default)-.RS-.RE-.TP-.B \f[C]\-\-cumulative\f[]-show balance change accumulated across periods (in multicolumn reports),-instead of changes during periods-.RS-.RE-.TP-.B \f[C]\-H\ \-\-historical\f[]-show historical ending balance in each period (includes postings before-report start date), instead of changes during each period-.RS-.RE-.TP-.B \f[C]\-\-tree\f[]-show accounts as a tree; amounts include subaccounts (default in simple-reports)-.RS-.RE-.TP-.B \f[C]\-\-flat\f[]-show accounts as a list; amounts exclude subaccounts except when account-is depth\-clipped (default in multicolumn reports)-.RS-.RE-.TP-.B \f[C]\-A\ \-\-average\f[]-show a row average column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-T\ \-\-row\-total\f[]-show a row total column (in multicolumn mode)-.RS-.RE-.TP-.B \f[C]\-N\ \-\-no\-total\f[]-don\[aq]t show the final total row-.RS-.RE-.TP-.B \f[C]\-\-drop=N\f[]-omit N leading account name parts (in flat mode)-.RS-.RE-.TP-.B \f[C]\-\-no\-elide\f[]-don\[aq]t squash boring parent accounts (in tree mode)-.RS-.RE-.TP-.B \f[C]\-\-format=LINEFORMAT\f[]-in single\-column balance reports: use this custom line format-.RS-.RE-.TP-.B \f[C]\-\-sort\-amount\f[]-sort by amount instead of account name-.RS-.RE-.PP-This command displays a simple income statement.-It currently assumes that you have top\-level accounts named-\f[C]income\f[] (or \f[C]revenue\f[]) and \f[C]expense\f[] (plural forms-also allowed.)-.IP-.nf-\f[C]-$\ hledger\ incomestatement-Income\ Statement--Revenues:-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ income-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ gifts-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ salary-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2--Expenses:-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ food-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ supplies-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2--Total:-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-With a reporting interval, multiple columns will be shown, one for each-report period.-Normally incomestatement shows revenues/expenses per period, though as-with multicolumn balance reports you can alter the report mode with-\f[C]\-\-change\f[]/\f[C]\-\-cumulative\f[]/\f[C]\-\-historical\f[].-.SS prices-.PP-Print all market prices from the journal.-.SS print-.PP-Show transactions from the journal.-Aliases: p, txns.-.TP-.B \f[C]\-m\ STR\ \-\-match=STR\f[]-show the transaction whose description is most similar to STR, and is-most recent-.RS-.RE-.TP-.B \f[C]\-\-new\f[]-show only newer\-dated transactions added in each file since last run-.RS-.RE-.TP-.B \f[C]\-x\ \ \ \ \ \-\-explicit\f[]-show all amounts explicitly-.RS-.RE-.TP-.B \f[C]\-O\ FMT\ \-\-output\-format=FMT\f[]-select the output format.-Supported formats: txt, csv.-.RS-.RE-.TP-.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]-write output to FILE.-A file extension matching one of the above formats selects that format.-.RS-.RE-.IP-.nf-\f[C]-$\ hledger\ print-2008/01/01\ income-\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ income:salary\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1--2008/06/01\ gift-\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1--2008/06/02\ save-\ \ \ \ assets:bank:saving\ \ \ \ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1--2008/06/03\ *\ eat\ &\ shop-\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ expenses:supplies\ \ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2--2008/12/31\ *\ pay\ off-\ \ \ \ liabilities:debts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1-\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1-\f[]-.fi-.PP-The print command displays full journal entries (transactions) from the-journal file in date order, tidily formatted.-print\[aq]s output is always a valid hledger journal.-It preserves all transaction information, but it does not preserve-directives or inter\-transaction comments-.PP-Normally, the journal entry\[aq]s explicit or implicit amount style is-preserved.-Ie when an amount is omitted in the journal, it will be omitted in the-output.-You can use the \f[C]\-x\f[]/\f[C]\-\-explicit\f[] flag to make all-amounts explicit, which can be useful for troubleshooting or for making-your journal more readable and robust against data entry errors.-Note, \f[C]\-x\f[] will cause postings with a multi\-commodity amount-(these can arise when a multi\-commodity transaction has an implicit-amount) will be split into multiple single\-commodity postings, for-valid journal output.-.PP-With \f[C]\-B\f[]/\f[C]\-\-cost\f[], amounts with transaction prices are-converted to cost using that price.-.PP-With \f[C]\-m\f[]/\f[C]\-\-match\f[] and a STR argument, print will show-at most one transaction: the one one whose description is most similar-to STR, and is most recent.-STR should contain at least two characters.-If there is no similar\-enough match, no transaction will be shown.-.PP-With \f[C]\-\-new\f[], for each FILE being read, hledger reads (and-writes) a special state file (\f[C]\&.latest.FILE\f[] in the same-directory), containing the latest transaction date(s) that were seen-last time FILE was read.-When this file is found, only transactions with newer dates (and new-transactions on the latest date) are printed.-This is useful for ignoring already\-seen entries in import data, such-as downloaded CSV files.-Eg:-.IP-.nf-\f[C]-$\ hledger\ \-f\ bank1.csv\ print\ \-\-new-#\ shows\ transactions\ added\ since\ last\ print\ \-\-new\ on\ this\ file-\f[]-.fi-.PP-This assumes that transactions added to FILE always have same or-increasing dates, and that transactions on the same day do not get-reordered.-See also the import command.-.PP-The print command also supports output destination and CSV output.-Here\[aq]s an example of print\[aq]s CSV output:-.IP-.nf-\f[C]-$\ hledger\ print\ \-Ocsv-"txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting\-status","posting\-comment"-"1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""-"1","2008/01/01","","","","income","","income:salary","\-1","$","1","","",""-"2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""-"2","2008/06/01","","","","gift","","income:gifts","\-1","$","1","","",""-"3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""-"3","2008/06/02","","","","save","","assets:bank:checking","\-1","$","1","","",""-"4","2008/06/03","","*","","eat\ &\ shop","","expenses:food","1","$","","1","",""-"4","2008/06/03","","*","","eat\ &\ shop","","expenses:supplies","1","$","","1","",""-"4","2008/06/03","","*","","eat\ &\ shop","","assets:cash","\-2","$","2","","",""-"5","2008/12/31","","*","","pay\ off","","liabilities:debts","1","$","","1","",""-"5","2008/12/31","","*","","pay\ off","","assets:bank:checking","\-1","$","1","","",""-\f[]-.fi-.IP \[bu] 2-There is one CSV record per posting, with the parent transaction\[aq]s-fields repeated.-.IP \[bu] 2-The "txnidx" (transaction index) field shows which postings belong to-the same transaction.-(This number might change if transactions are reordered within the file,-files are parsed/included in a different order, etc.)-.IP \[bu] 2-The amount is separated into "commodity" (the symbol) and "amount"-(numeric quantity) fields.-.IP \[bu] 2-The numeric amount is repeated in either the "credit" or "debit" column,-for convenience.-(Those names are not accurate in the accounting sense; it just puts-negative amounts under credit and zero or greater amounts under debit.)-.SS print\-unique-.PP-Print transactions which do not reuse an already\-seen description.-.SS register-.PP-Show postings and their running total.-Aliases: r, reg.-.TP-.B \f[C]\-\-cumulative\f[]-show running total from report start date (default)-.RS-.RE-.TP-.B \f[C]\-H\ \-\-historical\f[]-show historical running total/balance (includes postings before report-start date)-.RS-.RE-.TP-.B \f[C]\-A\ \-\-average\f[]-show running average of posting amounts instead of total (implies-\-\-empty)-.RS-.RE-.TP-.B \f[C]\-r\ \-\-related\f[]-show postings\[aq] siblings instead-.RS-.RE-.TP-.B \f[C]\-w\ N\ \-\-width=N\f[]-set output width (default: terminal width or COLUMNS.-\-wN,M sets description width as well)-.RS-.RE-.TP-.B \f[C]\-O\ FMT\ \-\-output\-format=FMT\f[]-select the output format.-Supported formats: txt, csv.-.RS-.RE-.TP-.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]-write output to FILE.-A file extension matching one of the above formats selects that format.-.RS-.RE-.PP-The register command displays postings, one per line, and their running-total.-This is typically used with a query selecting a particular account, to-see that account\[aq]s activity:-.IP-.nf-\f[C]-$\ hledger\ register\ checking-2008/01/01\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $1-2008/06/01\ gift\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $2-2008/06/02\ save\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ $1-2008/12/31\ pay\ off\ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-The \f[C]\-\-historical\f[]/\f[C]\-H\f[] flag adds the balance from any-undisplayed prior postings to the running total.-This is useful when you want to see only recent activity, with a-historically accurate running balance:-.IP-.nf-\f[C]-$\ hledger\ register\ checking\ \-b\ 2008/6\ \-\-historical-2008/06/01\ gift\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $2-2008/06/02\ save\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ $1-2008/12/31\ pay\ off\ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ \ 0-\f[]-.fi-.PP-The \f[C]\-\-depth\f[] option limits the amount of sub\-account detail-displayed.-.PP-The \f[C]\-\-average\f[]/\f[C]\-A\f[] flag shows the running average-posting amount instead of the running total (so, the final number-displayed is the average for the whole report period).-This flag implies \f[C]\-\-empty\f[] (see below).-It is affected by \f[C]\-\-historical\f[].-It works best when showing just one account and one commodity.-.PP-The \f[C]\-\-related\f[]/\f[C]\-r\f[] flag shows the \f[I]other\f[]-postings in the transactions of the postings which would normally be-shown.-.PP-With a reporting interval, register shows summary postings, one per-interval, aggregating the postings to each account:-.IP-.nf-\f[C]-$\ hledger\ register\ \-\-monthly\ income-2008/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:salary\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-1-2008/06\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-2-\f[]-.fi-.PP-Periods with no activity, and summary postings with a zero amount, are-not shown by default; use the \f[C]\-\-empty\f[]/\f[C]\-E\f[] flag to-see them:-.IP-.nf-\f[C]-$\ hledger\ register\ \-\-monthly\ income\ \-E-2008/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:salary\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-1-2008/02\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1-2008/03\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1-2008/04\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1-2008/05\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1-2008/06\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-2-2008/07\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2-2008/08\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2-2008/09\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2-2008/10\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2-2008/11\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2-2008/12\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2-\f[]-.fi-.PP-Often, you\[aq]ll want to see just one line per interval.-The \f[C]\-\-depth\f[] option helps with this, causing subaccounts to be-aggregated:-.IP-.nf-\f[C]-$\ hledger\ register\ \-\-monthly\ assets\ \-\-depth\ 1h-2008/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $1-2008/06\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ \ 0-2008/12\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-1-\f[]-.fi-.PP-Note when using report intervals, if you specify start/end dates these-will be adjusted outward if necessary to contain a whole number of-intervals.-This ensures that the first and last intervals are full length and-comparable to the others in the report.-.SS Custom register output-.PP-register uses the full terminal width by default, except on windows.-You can override this by setting the \f[C]COLUMNS\f[] environment-variable (not a bash shell variable) or by using the-\f[C]\-\-width\f[]/\f[C]\-w\f[] option.-.PP-The description and account columns normally share the space equally-(about half of (width \- 40) each).-You can adjust this by adding a description width as part of-\-\-width\[aq]s argument, comma\-separated: \f[C]\-\-width\ W,D\f[] .-Here\[aq]s a diagram:-.IP-.nf-\f[C]-<\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\ width\ (W)\ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\->-date\ (10)\ \ description\ (D)\ \ \ \ \ \ \ account\ (W\-41\-D)\ \ \ \ \ amount\ (12)\ \ \ balance\ (12)-DDDDDDDDDD\ dddddddddddddddddddd\ \ aaaaaaaaaaaaaaaaaaa\ \ AAAAAAAAAAAA\ \ AAAAAAAAAAAA-\f[]-.fi-.PP-and some examples:-.IP-.nf-\f[C]-$\ hledger\ reg\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ use\ terminal\ width\ (or\ 80\ on\ windows)-$\ hledger\ reg\ \-w\ 100\ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ use\ width\ 100-$\ COLUMNS=100\ hledger\ reg\ \ \ \ \ \ \ \ \ #\ set\ with\ one\-time\ environment\ variable-$\ export\ COLUMNS=100;\ hledger\ reg\ #\ set\ till\ session\ end\ (or\ window\ resize)-$\ hledger\ reg\ \-w\ 100,40\ \ \ \ \ \ \ \ \ \ \ #\ set\ overall\ width\ 100,\ description\ width\ 40-$\ hledger\ reg\ \-w\ $COLUMNS,40\ \ \ \ \ \ #\ use\ terminal\ width,\ and\ set\ description\ width-\f[]-.fi-.PP-The register command also supports the \f[C]\-o/\-\-output\-file\f[] and-\f[C]\-O/\-\-output\-format\f[] options for controlling output-destination and CSV output.-.SS register\-match-.PP-Print the one posting whose transaction description is closest to DESC,-in the style of the register command.-Helps ledger\-autosync detect already\-seen transactions when importing.-.SS rewrite-.PP-Print all transactions, adding custom postings to the matched ones.-.SS stats-.PP-Show some journal statistics.-.TP-.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]-write output to FILE.-A file extension matching one of the above formats selects that format.-.RS-.RE-.IP-.nf-\f[C]-$\ hledger\ stats-Main\ journal\ file\ \ \ \ \ \ \ \ :\ /src/hledger/examples/sample.journal-Included\ journal\ files\ \ \ :\ -Transactions\ span\ \ \ \ \ \ \ \ :\ 2008\-01\-01\ to\ 2009\-01\-01\ (366\ days)-Last\ transaction\ \ \ \ \ \ \ \ \ :\ 2008\-12\-31\ (2333\ days\ ago)-Transactions\ \ \ \ \ \ \ \ \ \ \ \ \ :\ 5\ (0.0\ per\ day)-Transactions\ last\ 30\ days:\ 0\ (0.0\ per\ day)-Transactions\ last\ 7\ days\ :\ 0\ (0.0\ per\ day)-Payees/descriptions\ \ \ \ \ \ :\ 5-Accounts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ 8\ (depth\ 3)-Commodities\ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ 1\ ($)-\f[]-.fi-.PP-The stats command displays summary information for the whole journal, or-a matched part of it.-With a reporting interval, it shows a report for each report period.-.PP-The stats command also supports \f[C]\-o/\-\-output\-file\f[] for-controlling output destination.-.SS tags-.PP-List all the tag names in use.-.SS test-.PP-Run built\-in unit tests.-.IP-.nf-\f[C]-$\ hledger\ test-Cases:\ 74\ \ Tried:\ 74\ \ Errors:\ 0\ \ Failures:\ 0-\f[]-.fi-.PP-This command runs hledger\[aq]s built\-in unit tests and displays a-quick report.-With a regular expression argument, it selects only tests with matching-names.-It\[aq]s mainly used in development, but it\[aq]s also nice to be able-to check your hledger executable for smoke at any time.-.SH ADD\-ON COMMANDS-.PP-hledger also searches for external add\-on commands, and will include-these in the commands list.-These are programs or scripts in your PATH whose name starts with-\f[C]hledger\-\f[] and ends with a recognised file extension (currently:-no extension, \f[C]bat\f[],\f[C]com\f[],\f[C]exe\f[],-\f[C]hs\f[],\f[C]lhs\f[],\f[C]pl\f[],\f[C]py\f[],\f[C]rb\f[],\f[C]rkt\f[],\f[C]sh\f[]).-.PP-Add\-ons can be invoked like any hledger command, but there are a few-things to be aware of.-Eg if the \f[C]hledger\-web\f[] add\-on is installed,-.IP \[bu] 2-\f[C]hledger\ \-h\ web\f[] shows hledger\[aq]s help, while-\f[C]hledger\ web\ \-h\f[] shows hledger\-web\[aq]s help.-.IP \[bu] 2-Flags specific to the add\-on must have a preceding \f[C]\-\-\f[] to-hide them from hledger.-So \f[C]hledger\ web\ \-\-serve\ \-\-port\ 9000\f[] will be rejected;-you must use \f[C]hledger\ web\ \-\-\ \-\-serve\ \-\-port\ 9000\f[].-.IP \[bu] 2-You can always run add\-ons directly if preferred:-\f[C]hledger\-web\ \-\-serve\ \-\-port\ 9000\f[].-.PP-Add\-ons are a relatively easy way to add local features or experiment-with new ideas.-They can be written in any language, but haskell scripts have a big-advantage: they can use the same hledger (and haskell) library functions-that built\-in commands do, for command\-line options, journal parsing,-reporting, etc.-.PP-Here are some hledger add\-ons available:-.SS Official add\-ons-.PP-These are maintained and released along with hledger.-.SS api-.PP-hledger\-api serves hledger data as a JSON web API.-.SS ui-.PP-hledger\-ui provides an efficient curses\-style interface.-.SS web-.PP-hledger\-web provides a simple web interface.-.SS Third party add\-ons-.PP-These are maintained separately, and usually updated shortly after a-hledger release.-.SS diff-.PP-hledger\-diff shows differences in an account\[aq]s transactions between-one journal file and another.-.SS iadd-.PP-hledger\-iadd is a curses\-style, more interactive replacement for the-add command.-.SS interest-.PP-hledger\-interest generates interest transactions for an account-according to various schemes.-.SS irr-.PP-hledger\-irr calculates the internal rate of return of an investment-account.-.SS Experimental add\-ons-.PP-These are available in source form in the hledger repo\[aq]s bin/-directory; installing them is pretty easy.-They may be less mature and documented than built\-in commands.-Reading and tweaking these is a good way to start making your own!-.SS autosync-.PP-hledger\-autosync is a symbolic link for easily running-ledger\-autosync, if installed.-ledger\-autosync does deduplicating conversion of OFX data and some CSV-formats, and can also download the data if your bank offers OFX Direct-Connect.-.SS budget-.PP-hledger\-budget.hs adds more budget\-tracking features to hledger.-.SS chart-.PP-hledger\-chart.hs is an old pie chart generator, in need of some love.-.SS check-.PP-hledger\-check.hs checks more powerful account balance assertions.-.SH ENVIRONMENT-.PP-\f[B]COLUMNS\f[] The screen width used by the register command.-Default: the full terminal width.-.PP-\f[B]LEDGER_FILE\f[] The journal file path when not specified with-\f[C]\-f\f[].-Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps-\f[C]C:/Users/USER/.hledger.journal\f[]).-.SH FILES-.PP-Reads data from one or more files in hledger journal, timeclock,-timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-.SH BUGS-.PP-The need to precede addon command options with \f[C]\-\-\f[] when-invoked from hledger is awkward.-.PP-When input data contains non\-ascii characters, a suitable system locale-must be configured (or there will be an unhelpful error).-Eg on POSIX, set LANG to something other than C.-.PP-In a Microsoft Windows CMD window, non\-ascii characters and colours are-not supported.-.PP-In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger-add.-.PP-Not all of Ledger\[aq]s journal file syntax is supported.-See file format differences.-.PP-On large data files, hledger is slower and uses more memory than Ledger.-.SH TROUBLESHOOTING-.PP-Here are some issues you might encounter when you run hledger (and-remember you can also seek help from the IRC channel, mail list or bug-tracker):-.PP-\f[B]Successfully installed, but "No command \[aq]hledger\[aq]-found"\f[]-.PD 0-.P-.PD-stack and cabal install binaries into a special directory, which should-be added to your PATH environment variable.-Eg on unix\-like systems, that is ~/.local/bin and ~/.cabal/bin-respectively.-.PP-\f[B]I set a custom LEDGER_FILE, but hledger is still using the default-file\f[]-.PD 0-.P-.PD-\f[C]LEDGER_FILE\f[] should be a real environment variable, not just a-shell variable.-The command \f[C]env\ |\ grep\ LEDGER_FILE\f[] should show it.-You may need to use \f[C]export\f[].-Here\[aq]s an explanation.-.PP-\f[B]"Illegal byte sequence" or "Invalid or incomplete multibyte or wide-character" errors\f[]-.PD 0-.P-.PD-In order to handle non\-ascii letters and symbols (like £), hledger-needs an appropriate locale.-This is usually configured system\-wide; you can also configure it-temporarily.-The locale may need to be one that supports UTF\-8, if you built hledger-with GHC < 7.2 (or possibly always, I\[aq]m not sure yet).-.PP-Here\[aq]s an example of setting the locale temporarily, on ubuntu-gnu/linux:-.IP-.nf-\f[C]-$\ file\ my.journal-my.journal:\ UTF\-8\ Unicode\ text\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ <\-\ the\ file\ is\ UTF8\-encoded-$\ locale\ \-a-C-en_US.utf8\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ <\-\ a\ UTF8\-aware\ locale\ is\ available-POSIX-$\ LANG=en_US.utf8\ hledger\ \-f\ my.journal\ print\ \ \ #\ <\-\ use\ it\ for\ this\ command-\f[]-.fi-.PP-Here\[aq]s one way to set it permanently, there are probably better-ways:-.IP-.nf-\f[C]-$\ echo\ "export\ LANG=en_US.UTF\-8"\ >>~/.bash_profile-$\ bash\ \-\-login-\f[]-.fi-.PP-If we preferred to use eg \f[C]fr_FR.utf8\f[], we might have to install-that first:-.IP-.nf-\f[C]-$\ apt\-get\ install\ language\-pack\-fr-$\ locale\ \-a-C-en_US.utf8-fr_BE.utf8-fr_CA.utf8-fr_CH.utf8-fr_FR.utf8-fr_LU.utf8-POSIX-$\ LANG=fr_FR.utf8\ hledger\ \-f\ my.journal\ print-\f[]-.fi-.PP-Note some platforms allow variant locale spellings, but not all (ubuntu-accepts \f[C]fr_FR.UTF8\f[], mac osx requires exactly-\f[C]fr_FR.UTF\-8\f[]).---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/hledger.1.info
@@ -1,2341 +0,0 @@-This is hledger.1.info, produced by makeinfo version 6.0 from stdin.---File: hledger.1.info,  Node: Top,  Next: EXAMPLES,  Up: (dir)--hledger(1) hledger 1.4-**********************--This is hledger's command-line interface (there are also curses and web-interfaces).  Its basic function is to read a plain text file describing-financial transactions (in accounting terms, a general journal) and-print useful reports on standard output, or export them as CSV. hledger-can also read some other file formats such as CSV files, translating-them to journal format.  Additionally, hledger lists other hledger-*-executables found in the user's $PATH and can invoke them as-subcommands.--   hledger reads data from one or more files in hledger journal,-timeclock, timedot, or CSV format specified with '-f', or-'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps-'C:/Users/USER/.hledger.journal').  If using '$LEDGER_FILE', note this-must be a real environment variable, not a shell variable.  You can-specify standard input with '-f-'.--   Transactions are dated movements of money between two (or more) named-accounts, and are recorded with journal entries like this:--2015/10/16 bought food- expenses:food          $10- assets:cash--   For more about this format, see hledger_journal(5).--   Most users use a text editor to edit the journal, usually with an-editor mode such as ledger-mode for added convenience.  hledger's-interactive add command is another way to record new transactions.-hledger never changes existing transactions.--   To get started, you can either save some entries like the above in-'~/.hledger.journal', or run 'hledger add' and follow the prompts.  Then-try some commands like 'hledger print' or 'hledger balance'.  Run-'hledger' with no arguments for a list of commands.-* Menu:--* EXAMPLES::-* OPTIONS::-* QUERIES::-* COMMANDS::-* ADD-ON COMMANDS::---File: hledger.1.info,  Node: EXAMPLES,  Next: OPTIONS,  Prev: Top,  Up: Top--1 EXAMPLES-**********--Two simple transactions in hledger journal format:--2015/9/30 gift received-  assets:cash   $20-  income:gifts--2015/10/16 farmers market-  expenses:food    $10-  assets:cash--   Some basic reports:--$ hledger print-2015/09/30 gift received-    assets:cash            $20-    income:gifts          $-20--2015/10/16 farmers market-    expenses:food           $10-    assets:cash            $-10--$ hledger accounts --tree-assets-  cash-expenses-  food-income-  gifts--$ hledger balance-                 $10  assets:cash-                 $10  expenses:food-                $-20  income:gifts----------------------                   0--$ hledger register cash-2015/09/30 gift received   assets:cash               $20           $20-2015/10/16 farmers market  assets:cash              $-10           $10--   More commands:--$ hledger                                 # show available commands-$ hledger add                             # add more transactions to the journal file-$ hledger balance                         # all accounts with aggregated balances-$ hledger balance --help                  # show detailed help for balance command-$ hledger balance --depth 1               # only top-level accounts-$ hledger register                        # show account postings, with running total-$ hledger reg income                      # show postings to/from income accounts-$ hledger reg 'assets:some bank:checking' # show postings to/from this checking account-$ hledger print desc:shop                 # show transactions with shop in the description-$ hledger activity -W                     # show transaction counts per week as a bar chart---File: hledger.1.info,  Node: OPTIONS,  Next: QUERIES,  Prev: EXAMPLES,  Up: Top--2 OPTIONS-*********--* Menu:--* General options::-* Command options::-* Command arguments::-* Argument expansion::-* Special characters::-* Input files::-* Smart dates::-* Report start & end date::-* Report intervals::-* Period expressions::-* Depth limiting::-* Pivoting::-* Cost::-* Market value::-* Regular expressions::---File: hledger.1.info,  Node: General options,  Next: Command options,  Up: OPTIONS--2.1 General options-===================--To see general usage help, including general options which are supported-by most hledger commands, run 'hledger -h'.--   General help options:--'-h --help'--     show general usage (or after COMMAND, command usage)-'--version'--     show version-'--debug[=N]'--     show debug output (levels 1-9, default: 1)--   General input options:--'-f FILE --file=FILE'--     use a different input file.  For stdin, use - (default:-     '$LEDGER_FILE' or '$HOME/.hledger.journal')-'--rules-file=RULESFILE'--     Conversion rules file to use when reading CSV (default: FILE.rules)-'--alias=OLD=NEW'--     rename accounts named OLD to NEW-'--anon'--     anonymize accounts and payees-'--pivot FIELDNAME'--     use some other field or tag for the account name-'-I --ignore-assertions'--     ignore any failing balance assertions--   General reporting options:--'-b --begin=DATE'--     include postings/txns on or after this date-'-e --end=DATE'--     include postings/txns before this date-'-D --daily'--     multiperiod/multicolumn report by day-'-W --weekly'--     multiperiod/multicolumn report by week-'-M --monthly'--     multiperiod/multicolumn report by month-'-Q --quarterly'--     multiperiod/multicolumn report by quarter-'-Y --yearly'--     multiperiod/multicolumn report by year-'-p --period=PERIODEXP'--     set start date, end date, and/or reporting interval all at once-     (overrides the flags above)-'--date2'--     match the secondary date instead (see command help for other-     effects)-'-U --unmarked'--     include only unmarked postings/txns (can combine with -P or -C)-'-P --pending'--     include only pending postings/txns-'-C --cleared'--     include only cleared postings/txns-'-R --real'--     include only non-virtual postings-'-NUM --depth=NUM'--     hide/aggregate accounts or postings more than NUM levels deep-'-E --empty'--     show items with zero amount, normally hidden-'-B --cost'--     convert amounts to their cost at transaction time (using the-     transaction price, if any)-'-V --value'--     convert amounts to their market value on the report end date (using-     the most recent applicable market price, if any)--   When a reporting option appears more than once in the command line,-the last one takes precedence.--   Some reporting options can also be written as query arguments.---File: hledger.1.info,  Node: Command options,  Next: Command arguments,  Prev: General options,  Up: OPTIONS--2.2 Command options-===================--To see options for a particular command, including command-specific-options, run: 'hledger COMMAND -h'.--   Command-specific options must be written after the command name, eg:-'hledger print -x'.--   Additionally, if the command is an addon, you may need to put its-options after a double-hyphen, eg: 'hledger ui -- --watch'.  Or, you can-run the addon executable directly: 'hledger-ui --watch'.---File: hledger.1.info,  Node: Command arguments,  Next: Argument expansion,  Prev: Command options,  Up: OPTIONS--2.3 Command arguments-=====================--Most hledger commands accept arguments after the command name, which are-often a query, filtering the data in some way.---File: hledger.1.info,  Node: Argument expansion,  Next: Special characters,  Prev: Command arguments,  Up: OPTIONS--2.4 Argument expansion-======================--You can save a set of command line options/arguments in a file, one per-line, and then reuse them by writing '@FILE' in a command line.  (To-prevent this expansion of '@'-arguments, precede them with a '--'-argument.)---File: hledger.1.info,  Node: Special characters,  Next: Input files,  Prev: Argument expansion,  Up: OPTIONS--2.5 Special characters-======================--Option and argument values which contain problematic characters should-be escaped with double quotes, backslashes, or (best) single quotes.-Problematic characters means spaces, and also characters which are-significant to your command shell, such as less-than/greater-than.  Eg:-'hledger register -p 'last year' "accounts receivable-(receivable|payable)" amt:\>100'.--   Characters which are significant both to the shell and in regular-expressions sometimes need to be double-escaped.  These include-parentheses, the pipe symbol and the dollar sign.  Eg, to match the-dollar symbol, bash users should do: 'hledger balance cur:'\$'' or-'hledger balance cur:\\$'.--   When hledger is invoking an addon executable (like hledger-ui),-options and arguments get de-escaped once more, so you might need-_triple_-escaping.  Eg: 'hledger ui cur:'\\$'' or 'hledger ui cur:\\\\$'-in bash.  (The number of backslashes in fish shell is left as an-exercise for the reader.)--   Inside a file used for argument expansion, one less level of escaping-is enough.  (And in this case, backslashes seem to work better than-quotes.  Eg: 'cur:\$').--   If in doubt, keep things simple:--   * run add-on executables directly-   * write options after the command-   * enclose problematic args in single quotes-   * if needed, also add a backslash to escape regexp metacharacters--   If you're really stumped, add '--debug=2' to troubleshoot.---File: hledger.1.info,  Node: Input files,  Next: Smart dates,  Prev: Special characters,  Up: OPTIONS--2.6 Input files-===============--hledger reads transactions from a data file (and the add command writes-to it).  By default this file is '$HOME/.hledger.journal' (or on-Windows, something like 'C:/Users/USER/.hledger.journal').  You can-override this with the '$LEDGER_FILE' environment variable:--$ setenv LEDGER_FILE ~/finance/2016.journal-$ hledger stats--   or with the '-f/--file' option:--$ hledger -f /some/file stats--   The file name '-' (hyphen) means standard input:--$ cat some.journal | hledger -f---   Usually the data file is in hledger's journal format, but it can also-be one of several other formats, listed below.  hledger detects the-format automatically based on the file extension, or if that is not-recognised, by trying each built-in "reader" in turn:--Reader:     Reads:                             Used for file extensions:-----------------------------------------------------------------------------'journal'   hledger's journal format, also     '.journal' '.j'-            some Ledger journals               '.hledger' '.ledger'-'timeclock' timeclock files (precise time      '.timeclock'-            logging)-'timedot'   timedot files (approximate time    '.timedot'-            logging)-'csv'       comma-separated values (data       '.csv'-            interchange)--   If needed (eg to ensure correct error messages when a file has the-"wrong" extension), you can force a specific reader/format by prepending-it to the file path with a colon.  Examples:--$ hledger -f csv:/some/csv-file.dat stats-$ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:---   You can also specify multiple '-f' options, to read multiple files as-one big journal.  There are some limitations with this:--   * directives in one file will not affect the other files-   * balance assertions will not see any account balances from previous-     files--   If you need those, either use the include directive, or concatenate-the files, eg: 'cat a.journal b.journal | hledger -f- CMD'.---File: hledger.1.info,  Node: Smart dates,  Next: Report start & end date,  Prev: Input files,  Up: OPTIONS--2.7 Smart dates-===============--hledger's user interfaces accept a flexible "smart date" syntax (unlike-dates in the journal file).  Smart dates allow some english words, can-be relative to today's date, and can have less-significant date parts-omitted (defaulting to 1).--   Examples:--'2009/1/1', '2009/01/01', '2009-1-1', '2009.1.1'   simple dates, several separators allowed-'2009/1', '2009'                                   same as above - a missing day or month defaults to 1-'1/1', 'january', 'jan', 'this year'               relative dates, meaning january 1 of the current year-'next year'                                        january 1 of next year-'this month'                                       the 1st of the current month-'this week'                                        the most recent monday-'last week'                                        the monday of the week before this one-'lastweek'                                         spaces are optional-'today', 'yesterday', 'tomorrow'---File: hledger.1.info,  Node: Report start & end date,  Next: Report intervals,  Prev: Smart dates,  Up: OPTIONS--2.8 Report start & end date-===========================--Most hledger reports show the full span of time represented by the-journal data, by default.  So, the effective report start and end dates-will be the earliest and latest transaction or posting dates found in-the journal.--   Often you will want to see a shorter time span, such as the current-month.  You can specify a start and/or end date using '-b/--begin',-'-e/--end', '-p/--period' or a 'date:' query (described below).  All of-these accept the smart date syntax.  One important thing to be aware of-when specifying end dates: as in Ledger, end dates are exclusive, so you-need to write the date _after_ the last day you want to include.--   Examples:--'-b 2016/3/17'      begin on St.  Patrick's day 2016-'-e 12/1'           end at the start of december 1st of the current year (11/30 will be the last date included)-'-b thismonth'      all transactions on or after the 1st of the current month-'-p thismonth'      all transactions in the current month-'date:2016/3/17-'   the above written as queries instead-'date:-12/1'-'date:thismonth-'-'date:thismonth'---File: hledger.1.info,  Node: Report intervals,  Next: Period expressions,  Prev: Report start & end date,  Up: OPTIONS--2.9 Report intervals-====================--A report interval can be specified so that commands like register,-balance and activity will divide their reports into multiple subperiods.-The basic intervals can be selected with one of '-D/--daily',-'-W/--weekly', '-M/--monthly', '-Q/--quarterly', or '-Y/--yearly'.  More-complex intervals may be specified with a period expression.  Report-intervals can not be specified with a query, currently.---File: hledger.1.info,  Node: Period expressions,  Next: Depth limiting,  Prev: Report intervals,  Up: OPTIONS--2.10 Period expressions-=======================--The '-p/--period' option accepts period expressions, a shorthand way of-expressing a start date, end date, and/or report interval all at once.--   Here's a basic period expression specifying the first quarter of-2009.  Note, hledger always treats start dates as inclusive and end-dates as exclusive:--   '-p "from 2009/1/1 to 2009/4/1"'--   Keywords like "from" and "to" are optional, and so are the spaces, as-long as you don't run two dates together.  "to" can also be written as-"-".  These are equivalent to the above:--'-p "2009/1/1 2009/4/1"'-'-p2009/1/1to2009/4/1'-'-p2009/1/1-2009/4/1'--   Dates are smart dates, so if the current year is 2009, the above can-also be written as:--'-p "1/1 4/1"'-'-p "january-apr"'-'-p "this year to 4/1"'--   If you specify only one date, the missing start or end date will be-the earliest or latest transaction in your journal:--'-p "from 2009/1/1"'   everything after january 1, 2009-'-p "from 2009/1"'     the same-'-p "from 2009"'       the same-'-p "to 2009"'         everything before january 1, 2009--   A single date with no "from" or "to" defines both the start and end-date like so:--'-p "2009"'       the year 2009; equivalent to "2009/1/1 to 2010/1/1"-'-p "2009/1"'     the month of jan; equivalent to "2009/1/1 to 2009/2/1"-'-p "2009/1/1"'   just that day; equivalent to "2009/1/1 to 2009/1/2"--   The argument of '-p' can also begin with, or be, a report interval-expression.  The basic report intervals are 'daily', 'weekly',-'monthly', 'quarterly', or 'yearly', which have the same effect as the-'-D','-W','-M','-Q', or '-Y' flags.  Between report interval and-start/end dates (if any), the word 'in' is optional.  Examples:--'-p "weekly from 2009/1/1 to 2009/4/1"'-'-p "monthly in 2008"'-'-p "quarterly"'--   The following more complex report intervals are also supported:-'biweekly', 'bimonthly', 'every N days|weeks|months|quarters|years',-'every Nth day [of month]', 'every Nth day of week'.--   Examples:--'-p "bimonthly from 2008"'-'-p "every 2 weeks"'-'-p "every 5 days from 1/3"'--   Show historical balances at end of 15th each month (N is exclusive-end date):--   'hledger balance -H -p "every 16th day"'--   Group postings from start of wednesday to end of next tuesday (N is-start date and exclusive end date):--   'hledger register checking -p "every 3rd day of week"'---File: hledger.1.info,  Node: Depth limiting,  Next: Pivoting,  Prev: Period expressions,  Up: OPTIONS--2.11 Depth limiting-===================--With the '--depth N' option (short form: '-N'), commands like account,-balance and register will show only the uppermost accounts in the-account tree, down to level N. Use this when you want a summary with-less detail.  This flag has the same effect as a 'depth:' query argument-(so '-2', '--depth=2' or 'depth:2' are basically equivalent).---File: hledger.1.info,  Node: Pivoting,  Next: Cost,  Prev: Depth limiting,  Up: OPTIONS--2.12 Pivoting-=============--Normally hledger sums amounts, and organizes them in a hierarchy, based-on account name.  The '--pivot FIELD' option causes it to sum and-organize hierarchy based on the value of some other field instead.-FIELD can be: 'code', 'description', 'payee', 'note', or the full name-(case insensitive) of any tag.  As with account names, values containing-'colon:separated:parts' will be displayed hierarchically in reports.--   '--pivot' is a general option affecting all reports; you can think of-hledger transforming the journal before any other processing, replacing-every posting's account name with the value of the specified field on-that posting, inheriting it from the transaction or using a blank value-if it's not present.--   An example:--2016/02/16 Member Fee Payment-    assets:bank account                    2 EUR-    income:member fees                    -2 EUR  ; member: John Doe--   Normal balance report showing account names:--$ hledger balance-               2 EUR  assets:bank account-              -2 EUR  income:member fees----------------------                   0--   Pivoted balance report, using member: tag values instead:--$ hledger balance --pivot member-               2 EUR-              -2 EUR  John Doe----------------------                   0--   One way to show only amounts with a member: value (using a query,-described below):--$ hledger balance --pivot member tag:member=.-              -2 EUR  John Doe----------------------              -2 EUR--   Another way (the acct: query matches against the pivoted "account-name"):--$ hledger balance --pivot member acct:.-              -2 EUR  John Doe----------------------              -2 EUR---File: hledger.1.info,  Node: Cost,  Next: Market value,  Prev: Pivoting,  Up: OPTIONS--2.13 Cost-=========--The '-B/--cost' flag converts amounts to their cost at transaction time,-if they have a transaction price specified.---File: hledger.1.info,  Node: Market value,  Next: Regular expressions,  Prev: Cost,  Up: OPTIONS--2.14 Market value-=================--The '-V/--value' flag converts the reported amounts to their market-value on the report end date, using the most recent applicable market-prices, when known.  Specifically, when there is a market price (P-directive) for the amount's commodity, dated on or before the report end-date (see hledger -> Report start & end date), the amount will be-converted to the price's commodity.  If multiple applicable prices are-defined, the latest-dated one is used (and if dates are equal, the one-last parsed).--   For example:--# one euro is worth this many dollars from nov 1-P 2016/11/01 € $1.10--# purchase some euros on nov 3-2016/11/3-    assets:euros        €100-    assets:checking--# the euro is worth fewer dollars by dec 21-P 2016/12/21 € $1.03--   How many euros do I have ?--$ hledger -f t.j bal euros-                €100  assets:euros--   What are they worth on nov 3 ?  (no report end date specified,-defaults to the last date in the journal)--$ hledger -f t.j bal euros -V-             $110.00  assets:euros--   What are they worth on dec 21 ?--$ hledger -f t.j bal euros -V -e 2016/12/21-             $103.00  assets:euros--   Currently, hledger's -V only uses market prices recorded with P-directives, not transaction prices (unlike Ledger).--   Using -B and -V together is allowed.---File: hledger.1.info,  Node: Regular expressions,  Prev: Market value,  Up: OPTIONS--2.15 Regular expressions-========================--hledger uses regular expressions in a number of places:--   * query terms, on the command line and in the hledger-web search-     form: 'REGEX', 'desc:REGEX', 'cur:REGEX', 'tag:...=REGEX'-   * CSV rules conditional blocks: 'if REGEX ...'-   * account alias directives and options: 'alias /REGEX/ =-     REPLACEMENT', '--alias /REGEX/=REPLACEMENT'--   hledger's regular expressions come from the regex-tdfa library.  In-general they:--   * are case insensitive-   * are infix matching (do not need to match the entire thing being-     matched)-   * are POSIX extended regular expressions-   * also support GNU word boundaries (\<, \>, \b, \B)-   * and parenthesised capturing groups and numeric backreferences in-     replacement strings-   * do not support mode modifiers like (?s)--   Some things to note:--   * In the 'alias' directive and '--alias' option, regular expressions-     must be enclosed in forward slashes ('/REGEX/').  Elsewhere in-     hledger, these are not required.--   * In queries, to match a regular expression metacharacter like '$' as-     a literal character, prepend a backslash.  Eg to search for amounts-     with the dollar sign in hledger-web, write 'cur:\$'.--   * On the command line, some metacharacters like '$' have a special-     meaning to the shell and so must be escaped at least once more.-     See Special characters.---File: hledger.1.info,  Node: QUERIES,  Next: COMMANDS,  Prev: OPTIONS,  Up: Top--3 QUERIES-*********--One of hledger's strengths is being able to quickly report on precise-subsets of your data.  Most commands accept an optional query-expression, written as arguments after the command name, to filter the-data by date, account name or other criteria.  The syntax is similar to-a web search: one or more space-separated search terms, quotes to-enclose whitespace, prefixes to match specific fields, a not: prefix to-negate the match.--   We do not yet support arbitrary boolean combinations of search terms;-instead most commands show transactions/postings/accounts which match-(or negatively match):--   * any of the description terms AND-   * any of the account terms AND-   * any of the status terms AND-   * all the other terms.--   The print command instead shows transactions which:--   * match any of the description terms AND-   * have any postings matching any of the positive account terms AND-   * have no postings matching any of the negative account terms AND-   * match all the other terms.--   The following kinds of search terms can be used.  Remember these can-also be prefixed with *'not:'*, eg to exclude a particular subaccount.--*'REGEX'*--     match account names by this regular expression.  (No prefix is-     equivalent to 'acct:').-*'acct:REGEX'*--     same as above-*'amt:N, amt:<N, amt:<=N, amt:>N, amt:>=N'*--     match postings with a single-commodity amount that is equal to,-     less than, or greater than N. (Multi-commodity amounts are not-     tested, and will always match.)  The comparison has two modes: if N-     is preceded by a + or - sign (or is 0), the two signed numbers are-     compared.  Otherwise, the absolute magnitudes are compared,-     ignoring sign.-*'code:REGEX'*--     match by transaction code (eg check number)-*'cur:REGEX'*--     match postings or transactions including any amounts whose-     currency/commodity symbol is fully matched by REGEX. (For a partial-     match, use '.*REGEX.*').  Note, to match characters which are-     regex-significant, like the dollar sign ('$'), you need to prepend-     '\'.  And when using the command line you need to add one more-     level of quoting to hide it from the shell, so eg do: 'hledger-     print cur:'\$'' or 'hledger print cur:\\$'.-*'desc:REGEX'*--     match transaction descriptions.-*'date:PERIODEXPR'*--     match dates within the specified period.  PERIODEXPR is a period-     expression (with no report interval).  Examples: 'date:2016',-     'date:thismonth', 'date:2000/2/1-2/15', 'date:lastweek-'.  If the-     '--date2' command line flag is present, this matches secondary-     dates instead.-*'date2:PERIODEXPR'*--     match secondary dates within the specified period.-*'depth:N'*--     match (or display, depending on command) accounts at or above this-     depth-*'note:REGEX'*--     match transaction notes (part of description right of '|', or whole-     description when there's no '|')-*'payee:REGEX'*--     match transaction payee/payer names (part of description left of-     '|', or whole description when there's no '|')-*'real:, real:0'*--     match real or virtual postings respectively-*'status:, status:!, status:*'*--     match unmarked, pending, or cleared transactions respectively-*'tag:REGEX[=REGEX]'*--     match by tag name, and optionally also by tag value.  Note a tag:-     query is considered to match a transaction if it matches any of the-     postings.  Also remember that postings inherit the tags of their-     parent transaction.--   The following special search term is used automatically in-hledger-web, only:--*'inacct:ACCTNAME'*--     tells hledger-web to show the transaction register for this-     account.  Can be filtered further with 'acct' etc.--   Some of these can also be expressed as command-line options (eg-'depth:2' is equivalent to '--depth 2').  Generally you can mix options-and query arguments, and the resulting query will be their intersection-(perhaps excluding the '-p/--period' option).---File: hledger.1.info,  Node: COMMANDS,  Next: ADD-ON COMMANDS,  Prev: QUERIES,  Up: Top--4 COMMANDS-**********--hledger provides a number of subcommands; 'hledger' with no arguments-shows a list.--   If you install additional 'hledger-*' packages, or if you put-programs or scripts named 'hledger-NAME' in your PATH, these will also-be listed as subcommands.--   Run a subcommand by writing its name as first argument (eg 'hledger-incomestatement').  You can also write one of the standard short aliases-displayed in parentheses in the command list ('hledger b'), or any any-unambiguous prefix of a command name ('hledger inc').--   Here are all the builtin commands in alphabetical order.  See also-'hledger' for a more organised command list, and 'hledger CMD -h' for-detailed command help.-* Menu:--* accounts::-* activity::-* add::-* balance::-* balancesheet::-* balancesheetequity::-* cashflow::-* check-dates::-* check-dupes::-* equity::-* help::-* import::-* incomestatement::-* prices::-* print::-* print-unique::-* register::-* register-match::-* rewrite::-* stats::-* tags::-* test::---File: hledger.1.info,  Node: accounts,  Next: activity,  Up: COMMANDS--4.1 accounts-============--Show account names.  Alias: a.--'--tree'--     show short account names, as a tree-'--flat'--     show full account names, as a list (default)-'--drop=N'--     in flat mode: omit N leading account name parts--   This command lists all account names that are in use (ie, all the-accounts which have at least one transaction posting to them).  With-query arguments, only matched account names are shown.--   It shows a flat list by default.  With '--tree', it uses indentation-to show the account hierarchy.--   In flat mode you can add '--drop N' to omit the first few account-name components.--   Examples:--$ hledger accounts --tree-assets-  bank-    checking-    saving-  cash-expenses-  food-  supplies-income-  gifts-  salary-liabilities-  debts--$ hledger accounts --drop 1-bank:checking-bank:saving-cash-food-supplies-gifts-salary-debts--$ hledger accounts-assets:bank:checking-assets:bank:saving-assets:cash-expenses:food-expenses:supplies-income:gifts-income:salary-liabilities:debts---File: hledger.1.info,  Node: activity,  Next: add,  Prev: accounts,  Up: COMMANDS--4.2 activity-============--Show an ascii barchart of posting counts per interval.--   The activity command displays an ascii histogram showing transaction-counts by day, week, month or other reporting interval (by day is the-default).  With query arguments, it counts only matched transactions.--$ hledger activity --quarterly-2008-01-01 **-2008-04-01 *******-2008-07-01-2008-10-01 **---File: hledger.1.info,  Node: add,  Next: balance,  Prev: activity,  Up: COMMANDS--4.3 add-=======--Prompt for transactions and add them to the journal.--'--no-new-accounts'--     don't allow creating new accounts; helps prevent typos when-     entering account names--   Many hledger users edit their journals directly with a text editor,-or generate them from CSV. For more interactive data entry, there is the-'add' command, which prompts interactively on the console for new-transactions, and appends them to the journal file (if there are-multiple '-f FILE' options, the first file is used.)  Existing-transactions are not changed.  This is the only hledger command that-writes to the journal file.--   To use it, just run 'hledger add' and follow the prompts.  You can-add as many transactions as you like; when you are finished, enter '.'-or press control-d or control-c to exit.--   Features:--   * add tries to provide useful defaults, using the most similar recent-     transaction (by description) as a template.-   * You can also set the initial defaults with command line arguments.-   * Readline-style edit keys can be used during data entry.-   * The tab key will auto-complete whenever possible - accounts,-     descriptions, dates ('yesterday', 'today', 'tomorrow').  If the-     input area is empty, it will insert the default value.-   * If the journal defines a default commodity, it will be added to any-     bare numbers entered.-   * A parenthesised transaction code may be entered following a date.-   * Comments and tags may be entered following a description or amount.-   * If you make a mistake, enter '<' at any prompt to restart the-     transaction.-   * Input prompts are displayed in a different colour when the terminal-     supports it.--   Example (see the tutorial for a detailed explanation):--$ hledger add-Adding transactions to journal file /src/hledger/examples/sample.journal-Any command line arguments will be used as defaults.-Use tab key to complete, readline keys to edit, enter to accept defaults.-An optional (CODE) may follow transaction dates.-An optional ; COMMENT may follow descriptions or amounts.-If you make a mistake, enter < at any prompt to restart the transaction.-To end a transaction, enter . when prompted.-To quit, enter . at a date prompt or press control-d or control-c.-Date [2015/05/22]:-Description: supermarket-Account 1: expenses:food-Amount  1: $10-Account 2: assets:checking-Amount  2 [$-10.0]:-Account 3 (or . or enter to finish this transaction): .-2015/05/22 supermarket-    expenses:food             $10-    assets:checking        $-10.0--Save this transaction to the journal ? [y]:-Saved.-Starting the next transaction (. or ctrl-D/ctrl-C to quit)-Date [2015/05/22]: <CTRL-D> $---File: hledger.1.info,  Node: balance,  Next: balancesheet,  Prev: add,  Up: COMMANDS--4.4 balance-===========--Show accounts and their balances.  Aliases: b, bal.--'--change'--     show balance change in each period (default)-'--cumulative'--     show balance change accumulated across periods (in multicolumn-     reports)-'-H --historical'--     show historical ending balance in each period (includes postings-     before report start date)-'--tree'--     show accounts as a tree; amounts include subaccounts (default in-     simple reports)-'--flat'--     show accounts as a list; amounts exclude subaccounts except when-     account is depth-clipped (default in multicolumn reports)-'-A --average'--     show a row average column (in multicolumn mode)-'-T --row-total'--     show a row total column (in multicolumn mode)-'-N --no-total'--     don't show the final total row-'--drop=N'--     omit N leading account name parts (in flat mode)-'--no-elide'--     don't squash boring parent accounts (in tree mode)-'--format=LINEFORMAT'--     in single-column balance reports: use this custom line format-'-O FMT --output-format=FMT'--     select the output format.  Supported formats: txt, csv.-'-o FILE --output-file=FILE'--     write output to FILE. A file extension matching one of the above-     formats selects that format.-'--pretty-tables'--     Use unicode to display prettier tables.-'--sort-amount'--     Sort by amount (total row amount, or by average if that is-     displayed), instead of account name (in flat mode)--   The balance command displays accounts and balances.  It is hledger's-most featureful and versatile command.--$ hledger balance-                 $-1  assets-                  $1    bank:saving-                 $-2    cash-                  $2  expenses-                  $1    food-                  $1    supplies-                 $-2  income-                 $-1    gifts-                 $-1    salary-                  $1  liabilities:debts----------------------                   0--   More precisely, the balance command shows the _change_ to each-account's balance caused by all (matched) postings.  In the common case-where you do not filter by date and your journal sets the correct-opening balances, this is the same as the account's ending balance.--   By default, accounts are displayed hierarchically, with subaccounts-indented below their parent.  "Boring" accounts, which contain a single-interesting subaccount and no balance of their own, are elided into the-following line for more compact output.  (Use '--no-elide' to prevent-this.  Eliding of boring accounts is not yet supported in multicolumn-reports.)--   Each account's balance is the "inclusive" balance - it includes the-balances of any subaccounts.--   Accounts which have zero balance (and no non-zero subaccounts) are-omitted.  Use '-E/--empty' to show them.--   A final total is displayed by default; use '-N/--no-total' to-suppress it:--$ hledger balance -p 2008/6 expenses --no-total-                  $2  expenses-                  $1    food-                  $1    supplies--* Menu:--* Flat mode::-* Depth limited balance reports::-* Multicolumn balance reports::-* Custom balance output::-* Colour support::-* Output destination::-* CSV output::---File: hledger.1.info,  Node: Flat mode,  Next: Depth limited balance reports,  Up: balance--4.4.1 Flat mode------------------To see a flat list of full account names instead of the default-hierarchical display, use '--flat'.  In this mode, accounts (unless-depth-clipped) show their "exclusive" balance, excluding any subaccount-balances.  In this mode, you can also use '--drop N' to omit the first-few account name components.--$ hledger balance -p 2008/6 expenses -N --flat --drop 1-                  $1  food-                  $1  supplies---File: hledger.1.info,  Node: Depth limited balance reports,  Next: Multicolumn balance reports,  Prev: Flat mode,  Up: balance--4.4.2 Depth limited balance reports--------------------------------------With '--depth N', balance shows accounts only to the specified depth.-This is very useful to show a complex charts of accounts in less detail.-In flat mode, balances from accounts below the depth limit will be shown-as part of a parent account at the depth limit.--$ hledger balance -N --depth 1-                 $-1  assets-                  $2  expenses-                 $-2  income-                  $1  liabilities---File: hledger.1.info,  Node: Multicolumn balance reports,  Next: Custom balance output,  Prev: Depth limited balance reports,  Up: balance--4.4.3 Multicolumn balance reports------------------------------------With a reporting interval, multiple balance columns will be shown, one-for each report period.  There are three types of multi-column balance-report, showing different information:--  1. By default: each column shows the sum of postings in that period,-     ie the account's change of balance in that period.  This is useful-     eg for a monthly income statement:--     $ hledger balance --quarterly income expenses -E-     Balance changes in 2008:--                        ||  2008q1  2008q2  2008q3  2008q4-     ===================++=================================-      expenses:food     ||       0      $1       0       0-      expenses:supplies ||       0      $1       0       0-      income:gifts      ||       0     $-1       0       0-      income:salary     ||     $-1       0       0       0-     -------------------++----------------------------------                        ||     $-1      $1       0       0--  2. With '--cumulative': each column shows the ending balance for that-     period, accumulating the changes across periods, starting from 0 at-     the report start date:--     $ hledger balance --quarterly income expenses -E --cumulative-     Ending balances (cumulative) in 2008:--                        ||  2008/03/31  2008/06/30  2008/09/30  2008/12/31-     ===================++=================================================-      expenses:food     ||           0          $1          $1          $1-      expenses:supplies ||           0          $1          $1          $1-      income:gifts      ||           0         $-1         $-1         $-1-      income:salary     ||         $-1         $-1         $-1         $-1-     -------------------++--------------------------------------------------                        ||         $-1           0           0           0--  3. With '--historical/-H': each column shows the actual historical-     ending balance for that period, accumulating the changes across-     periods, starting from the actual balance at the report start date.-     This is useful eg for a multi-period balance sheet, and when you-     are showing only the data after a certain start date:--     $ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1-     Ending balances (historical) in 2008/04/01-2008/12/31:--                           ||  2008/06/30  2008/09/30  2008/12/31-     ======================++=====================================-      assets:bank:checking ||          $1          $1           0-      assets:bank:saving   ||          $1          $1          $1-      assets:cash          ||         $-2         $-2         $-2-      liabilities:debts    ||           0           0          $1-     ----------------------++--------------------------------------                           ||           0           0           0--   Multi-column balance reports display accounts in flat mode by-default; to see the hierarchy, use '--tree'.--   With a reporting interval (like '--quarterly' above), the report-start/end dates will be adjusted if necessary so that they encompass the-displayed report periods.  This is so that the first and last periods-will be "full" and comparable to the others.--   The '-E/--empty' flag does two things in multicolumn balance reports:-first, the report will show all columns within the specified report-period (without -E, leading and trailing columns with all zeroes are not-shown).  Second, all accounts which existed at the report start date-will be considered, not just the ones with activity during the report-period (use -E to include low-activity accounts which would otherwise-would be omitted).--   The '-T/--row-total' flag adds an additional column showing the total-for each row.--   The '-A/--average' flag adds a column showing the average value in-each row.--   Here's an example of all three:--$ hledger balance -Q income expenses --tree -ETA-Balance changes in 2008:--            ||  2008q1  2008q2  2008q3  2008q4    Total  Average-============++===================================================- expenses   ||       0      $2       0       0       $2       $1-   food     ||       0      $1       0       0       $1        0-   supplies ||       0      $1       0       0       $1        0- income     ||     $-1     $-1       0       0      $-2      $-1-   gifts    ||       0     $-1       0       0      $-1        0-   salary   ||     $-1       0       0       0      $-1        0-------------++----------------------------------------------------            ||     $-1      $1       0       0        0        0--# Average is rounded to the dollar here since all journal amounts are---File: hledger.1.info,  Node: Custom balance output,  Next: Colour support,  Prev: Multicolumn balance reports,  Up: balance--4.4.4 Custom balance output------------------------------In simple (non-multi-column) balance reports, you can customise the-output with '--format FMT':--$ hledger balance --format "%20(account) %12(total)"-              assets          $-1-         bank:saving           $1-                cash          $-2-            expenses           $2-                food           $1-            supplies           $1-              income          $-2-               gifts          $-1-              salary          $-1-   liabilities:debts           $1-----------------------------------                                0--   The FMT format string (plus a newline) specifies the formatting-applied to each account/balance pair.  It may contain any suitable text,-with data fields interpolated like so:--   '%[MIN][.MAX](FIELDNAME)'--   * MIN pads with spaces to at least this width (optional)-   * MAX truncates at this width (optional)-   * FIELDNAME must be enclosed in parentheses, and can be one of:--        * 'depth_spacer' - a number of spaces equal to the account's-          depth, or if MIN is specified, MIN * depth spaces.-        * 'account' - the account's name-        * 'total' - the account's balance/posted total, right justified--   Also, FMT can begin with an optional prefix to control how-multi-commodity amounts are rendered:--   * '%_' - render on multiple lines, bottom-aligned (the default)-   * '%^' - render on multiple lines, top-aligned-   * '%,' - render on one line, comma-separated--   There are some quirks.  Eg in one-line mode, '%(depth_spacer)' has no-effect, instead '%(account)' has indentation built in.  Experimentation-may be needed to get pleasing results.--   Some example formats:--   * '%(total)' - the account's total-   * '%-20.20(account)' - the account's name, left justified, padded to-     20 characters and clipped at 20 characters-   * '%,%-50(account) %25(total)' - account name padded to 50-     characters, total padded to 20 characters, with multiple-     commodities rendered on one line-   * '%20(total) %2(depth_spacer)%-(account)' - the default format for-     the single-column balance report---File: hledger.1.info,  Node: Colour support,  Next: Output destination,  Prev: Custom balance output,  Up: balance--4.4.5 Colour support-----------------------The balance command shows negative amounts in red, if:--   * the 'TERM' environment variable is not set to 'dumb'-   * the output is not being redirected or piped anywhere---File: hledger.1.info,  Node: Output destination,  Next: CSV output,  Prev: Colour support,  Up: balance--4.4.6 Output destination---------------------------The balance, print, register and stats commands can write their output-to a destination other than the console.  This is controlled by the-'-o/--output-file' option.--$ hledger balance -o -     # write to stdout (the default)-$ hledger balance -o FILE  # write to FILE---File: hledger.1.info,  Node: CSV output,  Prev: Output destination,  Up: balance--4.4.7 CSV output-------------------The balance, print and register commands can write their output as CSV.-This is useful for exporting data to other applications, eg to make-charts in a spreadsheet.  This is controlled by the '-O/--output-format'-option, or by specifying a '.csv' file extension with-'-o/--output-file'.--$ hledger balance -O csv       # write CSV to stdout-$ hledger balance -o FILE.csv  # write CSV to FILE.csv---File: hledger.1.info,  Node: balancesheet,  Next: balancesheetequity,  Prev: balance,  Up: COMMANDS--4.5 balancesheet-================--Show a balance sheet.  Alias: bs.--'--change'--     show balance change in each period, instead of historical ending-     balances-'--cumulative'--     show balance change accumulated across periods (in multicolumn-     reports), instead of historical ending balances-'-H --historical'--     show historical ending balance in each period (includes postings-     before report start date) (default)-'--tree'--     show accounts as a tree; amounts include subaccounts (default in-     simple reports)-'--flat'--     show accounts as a list; amounts exclude subaccounts except when-     account is depth-clipped (default in multicolumn reports)-'-A --average'--     show a row average column (in multicolumn mode)-'-T --row-total'--     show a row total column (in multicolumn mode)-'-N --no-total'--     don't show the final total row-'--drop=N'--     omit N leading account name parts (in flat mode)-'--no-elide'--     don't squash boring parent accounts (in tree mode)-'--format=LINEFORMAT'--     in single-column balance reports: use this custom line format-'--sort-amount'--     sort by amount instead of account name--   This command displays a simple balance sheet.  It currently assumes-that you have top-level accounts named 'asset' and 'liability' (plural-forms also allowed.)--$ hledger balancesheet-Balance Sheet--Assets:-                 $-1  assets-                  $1    bank:saving-                 $-2    cash----------------------                 $-1--Liabilities:-                  $1  liabilities:debts----------------------                  $1--Total:----------------------                   0--   With a reporting interval, multiple columns will be shown, one for-each report period.  As with multicolumn balance reports, you can alter-the report mode with '--change'/'--cumulative'/'--historical'.  Normally-balancesheet shows historical ending balances, which is what you need-for a balance sheet; note this means it ignores report begin dates.---File: hledger.1.info,  Node: balancesheetequity,  Next: cashflow,  Prev: balancesheet,  Up: COMMANDS--4.6 balancesheetequity-======================--Show a balance sheet including equity.  Alias: bse.--   Other than showing the equity accounts, this command is exactly the-same as the command balancesheet.  Please refer to it for the available-options.--   This command displays a balancesheet.  It currently assumes that you-have top-level accounts named 'asset', 'liability' and 'equity' (plural-forms also allowed.)--$ hledger balancesheetequity-Balance Sheet With Equity--Assets:-                 $-2  assets-                  $1    bank:saving-                 $-3    cash----------------------                 $-2--Liabilities:-                  $1  liabilities:debts----------------------                  $1--Equity:-          $1  equity:owner----------------------          $1--Total:----------------------                   0---File: hledger.1.info,  Node: cashflow,  Next: check-dates,  Prev: balancesheetequity,  Up: COMMANDS--4.7 cashflow-============--Show a cashflow statement.  Alias: cf.--'--change'--     show balance change in each period (default)-'--cumulative'--     show balance change accumulated across periods (in multicolumn-     reports), instead of changes during periods-'-H --historical'--     show historical ending balance in each period (includes postings-     before report start date), instead of changes during each period-'--tree'--     show accounts as a tree; amounts include subaccounts (default in-     simple reports)-'--flat'--     show accounts as a list; amounts exclude subaccounts except when-     account is depth-clipped (default in multicolumn reports)-'-A --average'--     show a row average column (in multicolumn mode)-'-T --row-total'--     show a row total column (in multicolumn mode)-'-N --no-total'--     don't show the final total row (in simple reports)-'--drop=N'--     omit N leading account name parts (in flat mode)-'--no-elide'--     don't squash boring parent accounts (in tree mode)-'--format=LINEFORMAT'--     in single-column balance reports: use this custom line format-'--sort-amount'--     sort by amount instead of account name--   This command displays a simple cashflow statement It shows the change-in all "cash" (ie, liquid assets) accounts for the period.  It currently-assumes that cash accounts are under a top-level account named 'asset'-and do not contain 'receivable', ':A/R' or ':fixed'.--$ hledger cashflow-Cashflow Statement--Cash flows:-                 $-1  assets-                  $1    bank:saving-                 $-2    cash----------------------                 $-1--Total:----------------------                 $-1--   With a reporting interval, multiple columns will be shown, one for-each report period.  Normally cashflow shows changes in assets per-period, though as with multicolumn balance reports you can alter the-report mode with '--change'/'--cumulative'/'--historical'.---File: hledger.1.info,  Node: check-dates,  Next: check-dupes,  Prev: cashflow,  Up: COMMANDS--4.8 check-dates-===============--Check that transactions are sorted by increasing date.  With a query,-only matched transactions' dates are checked.---File: hledger.1.info,  Node: check-dupes,  Next: equity,  Prev: check-dates,  Up: COMMANDS--4.9 check-dupes-===============--Report account names having the same leaf but different prefixes.  An-example: http://stefanorodighiero.net/software/hledger-dupes.html---File: hledger.1.info,  Node: equity,  Next: help,  Prev: check-dupes,  Up: COMMANDS--4.10 equity-===========--Print closing/opening transactions that bring some or all account-balances to zero and back.  Can be useful for bringing account balances-across file boundaries.---File: hledger.1.info,  Node: help,  Next: import,  Prev: equity,  Up: COMMANDS--4.11 help-=========--Show any of the hledger manuals.--   The 'help' command displays any of the main hledger manuals, in one-of several ways.  Run it with no argument to list the manuals, or-provide a full or partial manual name to select one.--   hledger manuals are available in several formats.  hledger help will-use the first of these display methods that it finds: info, man, $PAGER,-less, stdout (or when non-interactive, just stdout).  You can force a-particular viewer with the '--info', '--man', '--pager', '--cat' flags.--$ hledger help-Please choose a manual by typing "hledger help MANUAL" (a substring is ok).-Manuals: hledger hledger-ui hledger-web hledger-api journal csv timeclock timedot--$ hledger help h --man--hledger(1)                    hledger User Manuals                    hledger(1)--NAME-       hledger - a command-line accounting tool--SYNOPSIS-       hledger [-f FILE] COMMAND [OPTIONS] [ARGS]-       hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]-       hledger--DESCRIPTION-       hledger  is  a  cross-platform  program  for tracking money, time, or any-...---File: hledger.1.info,  Node: import,  Next: incomestatement,  Prev: help,  Up: COMMANDS--4.12 import-===========--Read new transactions added to each FILE since last run, and add them to-the main journal file.--'--dry-run'--     just show the transactions to be imported--   Input files are provided as arguments, or glob patterns.  So eg to-add new transactions from all CSV files to the main journal: hledger-import *.csv--   New transactions are detected like print -new (using .latest.FILE-state files).---File: hledger.1.info,  Node: incomestatement,  Next: prices,  Prev: import,  Up: COMMANDS--4.13 incomestatement-====================--Show an income statement.  Alias: is.--'--change'--     show balance change in each period (default)-'--cumulative'--     show balance change accumulated across periods (in multicolumn-     reports), instead of changes during periods-'-H --historical'--     show historical ending balance in each period (includes postings-     before report start date), instead of changes during each period-'--tree'--     show accounts as a tree; amounts include subaccounts (default in-     simple reports)-'--flat'--     show accounts as a list; amounts exclude subaccounts except when-     account is depth-clipped (default in multicolumn reports)-'-A --average'--     show a row average column (in multicolumn mode)-'-T --row-total'--     show a row total column (in multicolumn mode)-'-N --no-total'--     don't show the final total row-'--drop=N'--     omit N leading account name parts (in flat mode)-'--no-elide'--     don't squash boring parent accounts (in tree mode)-'--format=LINEFORMAT'--     in single-column balance reports: use this custom line format-'--sort-amount'--     sort by amount instead of account name--   This command displays a simple income statement.  It currently-assumes that you have top-level accounts named 'income' (or 'revenue')-and 'expense' (plural forms also allowed.)--$ hledger incomestatement-Income Statement--Revenues:-                 $-2  income-                 $-1    gifts-                 $-1    salary----------------------                 $-2--Expenses:-                  $2  expenses-                  $1    food-                  $1    supplies----------------------                  $2--Total:----------------------                   0--   With a reporting interval, multiple columns will be shown, one for-each report period.  Normally incomestatement shows revenues/expenses-per period, though as with multicolumn balance reports you can alter the-report mode with '--change'/'--cumulative'/'--historical'.---File: hledger.1.info,  Node: prices,  Next: print,  Prev: incomestatement,  Up: COMMANDS--4.14 prices-===========--Print all market prices from the journal.---File: hledger.1.info,  Node: print,  Next: print-unique,  Prev: prices,  Up: COMMANDS--4.15 print-==========--Show transactions from the journal.  Aliases: p, txns.--'-m STR --match=STR'--     show the transaction whose description is most similar to STR, and-     is most recent-'--new'--     show only newer-dated transactions added in each file since last-     run-'-x --explicit'--     show all amounts explicitly-'-O FMT --output-format=FMT'--     select the output format.  Supported formats: txt, csv.-'-o FILE --output-file=FILE'--     write output to FILE. A file extension matching one of the above-     formats selects that format.--$ hledger print-2008/01/01 income-    assets:bank:checking            $1-    income:salary                  $-1--2008/06/01 gift-    assets:bank:checking            $1-    income:gifts                   $-1--2008/06/02 save-    assets:bank:saving              $1-    assets:bank:checking           $-1--2008/06/03 * eat & shop-    expenses:food                $1-    expenses:supplies            $1-    assets:cash                 $-2--2008/12/31 * pay off-    liabilities:debts               $1-    assets:bank:checking           $-1--   The print command displays full journal entries (transactions) from-the journal file in date order, tidily formatted.  print's output is-always a valid hledger journal.  It preserves all transaction-information, but it does not preserve directives or inter-transaction-comments--   Normally, the journal entry's explicit or implicit amount style is-preserved.  Ie when an amount is omitted in the journal, it will be-omitted in the output.  You can use the '-x'/'--explicit' flag to make-all amounts explicit, which can be useful for troubleshooting or for-making your journal more readable and robust against data entry errors.-Note, '-x' will cause postings with a multi-commodity amount (these can-arise when a multi-commodity transaction has an implicit amount) will be-split into multiple single-commodity postings, for valid journal output.--   With '-B'/'--cost', amounts with transaction prices are converted to-cost using that price.--   With '-m'/'--match' and a STR argument, print will show at most one-transaction: the one one whose description is most similar to STR, and-is most recent.  STR should contain at least two characters.  If there-is no similar-enough match, no transaction will be shown.--   With '--new', for each FILE being read, hledger reads (and writes) a-special state file ('.latest.FILE' in the same directory), containing-the latest transaction date(s) that were seen last time FILE was read.-When this file is found, only transactions with newer dates (and new-transactions on the latest date) are printed.  This is useful for-ignoring already-seen entries in import data, such as downloaded CSV-files.  Eg:--$ hledger -f bank1.csv print --new-# shows transactions added since last print --new on this file--   This assumes that transactions added to FILE always have same or-increasing dates, and that transactions on the same day do not get-reordered.  See also the import command.--   The print command also supports output destination and CSV output.-Here's an example of print's CSV output:--$ hledger print -Ocsv-"txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting-status","posting-comment"-"1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""-"1","2008/01/01","","","","income","","income:salary","-1","$","1","","",""-"2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""-"2","2008/06/01","","","","gift","","income:gifts","-1","$","1","","",""-"3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""-"3","2008/06/02","","","","save","","assets:bank:checking","-1","$","1","","",""-"4","2008/06/03","","*","","eat & shop","","expenses:food","1","$","","1","",""-"4","2008/06/03","","*","","eat & shop","","expenses:supplies","1","$","","1","",""-"4","2008/06/03","","*","","eat & shop","","assets:cash","-2","$","2","","",""-"5","2008/12/31","","*","","pay off","","liabilities:debts","1","$","","1","",""-"5","2008/12/31","","*","","pay off","","assets:bank:checking","-1","$","1","","",""--   * There is one CSV record per posting, with the parent transaction's-     fields repeated.-   * The "txnidx" (transaction index) field shows which postings belong-     to the same transaction.  (This number might change if transactions-     are reordered within the file, files are parsed/included in a-     different order, etc.)-   * The amount is separated into "commodity" (the symbol) and "amount"-     (numeric quantity) fields.-   * The numeric amount is repeated in either the "credit" or "debit"-     column, for convenience.  (Those names are not accurate in the-     accounting sense; it just puts negative amounts under credit and-     zero or greater amounts under debit.)---File: hledger.1.info,  Node: print-unique,  Next: register,  Prev: print,  Up: COMMANDS--4.16 print-unique-=================--Print transactions which do not reuse an already-seen description.---File: hledger.1.info,  Node: register,  Next: register-match,  Prev: print-unique,  Up: COMMANDS--4.17 register-=============--Show postings and their running total.  Aliases: r, reg.--'--cumulative'--     show running total from report start date (default)-'-H --historical'--     show historical running total/balance (includes postings before-     report start date)-'-A --average'--     show running average of posting amounts instead of total (implies-     -empty)-'-r --related'--     show postings' siblings instead-'-w N --width=N'--     set output width (default: terminal width or COLUMNS. -wN,M sets-     description width as well)-'-O FMT --output-format=FMT'--     select the output format.  Supported formats: txt, csv.-'-o FILE --output-file=FILE'--     write output to FILE. A file extension matching one of the above-     formats selects that format.--   The register command displays postings, one per line, and their-running total.  This is typically used with a query selecting a-particular account, to see that account's activity:--$ hledger register checking-2008/01/01 income               assets:bank:checking            $1            $1-2008/06/01 gift                 assets:bank:checking            $1            $2-2008/06/02 save                 assets:bank:checking           $-1            $1-2008/12/31 pay off              assets:bank:checking           $-1             0--   The '--historical'/'-H' flag adds the balance from any undisplayed-prior postings to the running total.  This is useful when you want to-see only recent activity, with a historically accurate running balance:--$ hledger register checking -b 2008/6 --historical-2008/06/01 gift                 assets:bank:checking            $1            $2-2008/06/02 save                 assets:bank:checking           $-1            $1-2008/12/31 pay off              assets:bank:checking           $-1             0--   The '--depth' option limits the amount of sub-account detail-displayed.--   The '--average'/'-A' flag shows the running average posting amount-instead of the running total (so, the final number displayed is the-average for the whole report period).  This flag implies '--empty' (see-below).  It is affected by '--historical'.  It works best when showing-just one account and one commodity.--   The '--related'/'-r' flag shows the _other_ postings in the-transactions of the postings which would normally be shown.--   With a reporting interval, register shows summary postings, one per-interval, aggregating the postings to each account:--$ hledger register --monthly income-2008/01                 income:salary                          $-1           $-1-2008/06                 income:gifts                           $-1           $-2--   Periods with no activity, and summary postings with a zero amount,-are not shown by default; use the '--empty'/'-E' flag to see them:--$ hledger register --monthly income -E-2008/01                 income:salary                          $-1           $-1-2008/02                                                          0           $-1-2008/03                                                          0           $-1-2008/04                                                          0           $-1-2008/05                                                          0           $-1-2008/06                 income:gifts                           $-1           $-2-2008/07                                                          0           $-2-2008/08                                                          0           $-2-2008/09                                                          0           $-2-2008/10                                                          0           $-2-2008/11                                                          0           $-2-2008/12                                                          0           $-2--   Often, you'll want to see just one line per interval.  The '--depth'-option helps with this, causing subaccounts to be aggregated:--$ hledger register --monthly assets --depth 1h-2008/01                 assets                                  $1            $1-2008/06                 assets                                 $-1             0-2008/12                 assets                                 $-1           $-1--   Note when using report intervals, if you specify start/end dates-these will be adjusted outward if necessary to contain a whole number of-intervals.  This ensures that the first and last intervals are full-length and comparable to the others in the report.-* Menu:--* Custom register output::---File: hledger.1.info,  Node: Custom register output,  Up: register--4.17.1 Custom register output--------------------------------register uses the full terminal width by default, except on windows.-You can override this by setting the 'COLUMNS' environment variable (not-a bash shell variable) or by using the '--width'/'-w' option.--   The description and account columns normally share the space equally-(about half of (width - 40) each).  You can adjust this by adding a-description width as part of -width's argument, comma-separated:-'--width W,D' .  Here's a diagram:--<--------------------------------- width (W) ---------------------------------->-date (10)  description (D)       account (W-41-D)     amount (12)   balance (12)-DDDDDDDDDD dddddddddddddddddddd  aaaaaaaaaaaaaaaaaaa  AAAAAAAAAAAA  AAAAAAAAAAAA--   and some examples:--$ hledger reg                     # use terminal width (or 80 on windows)-$ hledger reg -w 100              # use width 100-$ COLUMNS=100 hledger reg         # set with one-time environment variable-$ export COLUMNS=100; hledger reg # set till session end (or window resize)-$ hledger reg -w 100,40           # set overall width 100, description width 40-$ hledger reg -w $COLUMNS,40      # use terminal width, and set description width--   The register command also supports the '-o/--output-file' and-'-O/--output-format' options for controlling output destination and CSV-output.---File: hledger.1.info,  Node: register-match,  Next: rewrite,  Prev: register,  Up: COMMANDS--4.18 register-match-===================--Print the one posting whose transaction description is closest to DESC,-in the style of the register command.  Helps ledger-autosync detect-already-seen transactions when importing.---File: hledger.1.info,  Node: rewrite,  Next: stats,  Prev: register-match,  Up: COMMANDS--4.19 rewrite-============--Print all transactions, adding custom postings to the matched ones.---File: hledger.1.info,  Node: stats,  Next: tags,  Prev: rewrite,  Up: COMMANDS--4.20 stats-==========--Show some journal statistics.--'-o FILE --output-file=FILE'--     write output to FILE. A file extension matching one of the above-     formats selects that format.--$ hledger stats-Main journal file        : /src/hledger/examples/sample.journal-Included journal files   :-Transactions span        : 2008-01-01 to 2009-01-01 (366 days)-Last transaction         : 2008-12-31 (2333 days ago)-Transactions             : 5 (0.0 per day)-Transactions last 30 days: 0 (0.0 per day)-Transactions last 7 days : 0 (0.0 per day)-Payees/descriptions      : 5-Accounts                 : 8 (depth 3)-Commodities              : 1 ($)--   The stats command displays summary information for the whole journal,-or a matched part of it.  With a reporting interval, it shows a report-for each report period.--   The stats command also supports '-o/--output-file' for controlling-output destination.---File: hledger.1.info,  Node: tags,  Next: test,  Prev: stats,  Up: COMMANDS--4.21 tags-=========--List all the tag names in use.---File: hledger.1.info,  Node: test,  Prev: tags,  Up: COMMANDS--4.22 test-=========--Run built-in unit tests.--$ hledger test-Cases: 74  Tried: 74  Errors: 0  Failures: 0--   This command runs hledger's built-in unit tests and displays a quick-report.  With a regular expression argument, it selects only tests with-matching names.  It's mainly used in development, but it's also nice to-be able to check your hledger executable for smoke at any time.---File: hledger.1.info,  Node: ADD-ON COMMANDS,  Prev: COMMANDS,  Up: Top--5 ADD-ON COMMANDS-*****************--hledger also searches for external add-on commands, and will include-these in the commands list.  These are programs or scripts in your PATH-whose name starts with 'hledger-' and ends with a recognised file-extension (currently: no extension, 'bat','com','exe',-'hs','lhs','pl','py','rb','rkt','sh').--   Add-ons can be invoked like any hledger command, but there are a few-things to be aware of.  Eg if the 'hledger-web' add-on is installed,--   * 'hledger -h web' shows hledger's help, while 'hledger web -h' shows-     hledger-web's help.--   * Flags specific to the add-on must have a preceding '--' to hide-     them from hledger.  So 'hledger web --serve --port 9000' will be-     rejected; you must use 'hledger web -- --serve --port 9000'.--   * You can always run add-ons directly if preferred: 'hledger-web-     --serve --port 9000'.--   Add-ons are a relatively easy way to add local features or experiment-with new ideas.  They can be written in any language, but haskell-scripts have a big advantage: they can use the same hledger (and-haskell) library functions that built-in commands do, for command-line-options, journal parsing, reporting, etc.--   Here are some hledger add-ons available:-* Menu:--* Official add-ons::-* Third party add-ons::-* Experimental add-ons::---File: hledger.1.info,  Node: Official add-ons,  Next: Third party add-ons,  Up: ADD-ON COMMANDS--5.1 Official add-ons-====================--These are maintained and released along with hledger.-* Menu:--* api::-* ui::-* web::---File: hledger.1.info,  Node: api,  Next: ui,  Up: Official add-ons--5.1.1 api------------hledger-api serves hledger data as a JSON web API.---File: hledger.1.info,  Node: ui,  Next: web,  Prev: api,  Up: Official add-ons--5.1.2 ui-----------hledger-ui provides an efficient curses-style interface.---File: hledger.1.info,  Node: web,  Prev: ui,  Up: Official add-ons--5.1.3 web------------hledger-web provides a simple web interface.---File: hledger.1.info,  Node: Third party add-ons,  Next: Experimental add-ons,  Prev: Official add-ons,  Up: ADD-ON COMMANDS--5.2 Third party add-ons-=======================--These are maintained separately, and usually updated shortly after a-hledger release.-* Menu:--* diff::-* iadd::-* interest::-* irr::---File: hledger.1.info,  Node: diff,  Next: iadd,  Up: Third party add-ons--5.2.1 diff-------------hledger-diff shows differences in an account's transactions between one-journal file and another.---File: hledger.1.info,  Node: iadd,  Next: interest,  Prev: diff,  Up: Third party add-ons--5.2.2 iadd-------------hledger-iadd is a curses-style, more interactive replacement for the add-command.---File: hledger.1.info,  Node: interest,  Next: irr,  Prev: iadd,  Up: Third party add-ons--5.2.3 interest-----------------hledger-interest generates interest transactions for an account-according to various schemes.---File: hledger.1.info,  Node: irr,  Prev: interest,  Up: Third party add-ons--5.2.4 irr------------hledger-irr calculates the internal rate of return of an investment-account.---File: hledger.1.info,  Node: Experimental add-ons,  Prev: Third party add-ons,  Up: ADD-ON COMMANDS--5.3 Experimental add-ons-========================--These are available in source form in the hledger repo's bin/ directory;-installing them is pretty easy.  They may be less mature and documented-than built-in commands.  Reading and tweaking these is a good way to-start making your own!-* Menu:--* autosync::-* budget::-* chart::-* check::---File: hledger.1.info,  Node: autosync,  Next: budget,  Up: Experimental add-ons--5.3.1 autosync-----------------hledger-autosync is a symbolic link for easily running ledger-autosync,-if installed.  ledger-autosync does deduplicating conversion of OFX data-and some CSV formats, and can also download the data if your bank offers-OFX Direct Connect.---File: hledger.1.info,  Node: budget,  Next: chart,  Prev: autosync,  Up: Experimental add-ons--5.3.2 budget---------------hledger-budget.hs adds more budget-tracking features to hledger.---File: hledger.1.info,  Node: chart,  Next: check,  Prev: budget,  Up: Experimental add-ons--5.3.3 chart--------------hledger-chart.hs is an old pie chart generator, in need of some love.---File: hledger.1.info,  Node: check,  Prev: chart,  Up: Experimental add-ons--5.3.4 check--------------hledger-check.hs checks more powerful account balance assertions.---Tag Table:-Node: Top70-Node: EXAMPLES1886-Ref: #examples1988-Node: OPTIONS3634-Ref: #options3738-Node: General options4042-Ref: #general-options4169-Node: Command options6488-Ref: #command-options6641-Node: Command arguments7039-Ref: #command-arguments7199-Node: Argument expansion7320-Ref: #argument-expansion7485-Node: Special characters7704-Ref: #special-characters7863-Node: Input files9282-Ref: #input-files9420-Node: Smart dates11383-Ref: #smart-dates11526-Node: Report start & end date12505-Ref: #report-start-end-date12677-Node: Report intervals13743-Ref: #report-intervals13908-Node: Period expressions14309-Ref: #period-expressions14471-Node: Depth limiting16811-Ref: #depth-limiting16957-Node: Pivoting17299-Ref: #pivoting17419-Node: Cost19095-Ref: #cost19205-Node: Market value19323-Ref: #market-value19460-Node: Regular expressions20760-Ref: #regular-expressions20898-Node: QUERIES22259-Ref: #queries22363-Node: COMMANDS26330-Ref: #commands26444-Node: accounts27427-Ref: #accounts27527-Node: activity28520-Ref: #activity28632-Node: add28991-Ref: #add29092-Node: balance31750-Ref: #balance31863-Node: Flat mode35020-Ref: #flat-mode35147-Node: Depth limited balance reports35567-Ref: #depth-limited-balance-reports35770-Node: Multicolumn balance reports36190-Ref: #multicolumn-balance-reports36401-Node: Custom balance output41049-Ref: #custom-balance-output41233-Node: Colour support43326-Ref: #colour-support43487-Node: Output destination43660-Ref: #output-destination43818-Node: CSV output44088-Ref: #csv-output44207-Node: balancesheet44604-Ref: #balancesheet44742-Node: balancesheetequity46710-Ref: #balancesheetequity46861-Node: cashflow47650-Ref: #cashflow47780-Node: check-dates49692-Ref: #check-dates49821-Node: check-dupes49938-Ref: #check-dupes50065-Node: equity50202-Ref: #equity50314-Node: help50477-Ref: #help50580-Node: import51654-Ref: #import51770-Node: incomestatement52165-Ref: #incomestatement52301-Node: prices54254-Ref: #prices54371-Node: print54414-Ref: #print54526-Node: print-unique59372-Ref: #print-unique59500-Node: register59568-Ref: #register59697-Node: Custom register output64198-Ref: #custom-register-output64329-Node: register-match65626-Ref: #register-match65762-Node: rewrite65945-Ref: #rewrite66064-Node: stats66133-Ref: #stats66238-Node: tags67119-Ref: #tags67219-Node: test67251-Ref: #test67337-Node: ADD-ON COMMANDS67705-Ref: #add-on-commands67817-Node: Official add-ons69104-Ref: #official-add-ons69246-Node: api69333-Ref: #api69424-Node: ui69476-Ref: #ui69577-Node: web69635-Ref: #web69726-Node: Third party add-ons69772-Ref: #third-party-add-ons69949-Node: diff70084-Ref: #diff70183-Node: iadd70282-Ref: #iadd70398-Node: interest70481-Ref: #interest70604-Node: irr70699-Ref: #irr70799-Node: Experimental add-ons70877-Ref: #experimental-add-ons71031-Node: autosync71322-Ref: #autosync71436-Node: budget71675-Ref: #budget71799-Node: chart71865-Ref: #chart71984-Node: check72055-Ref: #check72159--End Tag Table
− doc/hledger.1.txt
@@ -1,1969 +0,0 @@--hledger(1)                   hledger User Manuals                   hledger(1)----NAME-       hledger - a command-line accounting tool--SYNOPSIS-       hledger [-f FILE] COMMAND [OPTIONS] [ARGS]-       hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]-       hledger--DESCRIPTION-       hledger  is  a  cross-platform program for tracking money, time, or any-       other commodity, using double-entry accounting and a  simple,  editable-       file  format.   hledger  is  inspired  by  and  largely compatible with-       ledger(1).-       Tested on unix, mac, windows, hledger aims to be a reliable,  practical-       tool for daily use.--       This is hledger's command-line interface (there are also curses and web-       interfaces).  Its basic function is to read a plain text file  describ--       ing financial transactions (in accounting terms, a general journal) and-       print useful reports  on  standard  output,  or  export  them  as  CSV.-       hledger can also read some other file formats such as CSV files, trans--       lating them to  journal  format.   Additionally,  hledger  lists  other-       hledger-*  executables found in the user's $PATH and can invoke them as-       subcommands.--       hledger reads data from one or more files  in  hledger  journal,  time--       clock,  timedot,  or  CSV format specified with -f, or $LEDGER_FILE, or-       $HOME/.hledger.journal          (on          windows,           perhaps-       C:/Users/USER/.hledger.journal).  If using $LEDGER_FILE, note this must-       be a real environment variable, not a shell variable.  You can  specify-       standard input with -f-.--       Transactions  are  dated movements of money between two (or more) named-       accounts, and are recorded with journal entries like this:--              2015/10/16 bought food-               expenses:food          $10-               assets:cash--       For more about this format, see hledger_journal(5).--       Most users use a text editor to edit the journal, usually with an  edi--       tor mode such as ledger-mode for added convenience.  hledger's interac--       tive add command is another way to record  new  transactions.   hledger-       never changes existing transactions.--       To  get  started,  you  can  either save some entries like the above in-       ~/.hledger.journal, or run hledger add and follow  the  prompts.   Then-       try  some  commands like hledger print or hledger balance.  Run hledger-       with no arguments for a list of commands.--EXAMPLES-       Two simple transactions in hledger journal format:--              2015/9/30 gift received-                assets:cash   $20-                income:gifts--              2015/10/16 farmers market-                expenses:food    $10-                assets:cash--       Some basic reports:--              $ hledger print-              2015/09/30 gift received-                  assets:cash            $20-                  income:gifts          $-20--              2015/10/16 farmers market-                  expenses:food           $10-                  assets:cash            $-10--              $ hledger accounts --tree-              assets-                cash-              expenses-                food-              income-                gifts--              $ hledger balance-                               $10  assets:cash-                               $10  expenses:food-                              $-20  income:gifts-              ---------------------                                 0--              $ hledger register cash-              2015/09/30 gift received   assets:cash               $20           $20-              2015/10/16 farmers market  assets:cash              $-10           $10--       More commands:--              $ hledger                                 # show available commands-              $ hledger add                             # add more transactions to the journal file-              $ hledger balance                         # all accounts with aggregated balances-              $ hledger balance --help                  # show detailed help for balance command-              $ hledger balance --depth 1               # only top-level accounts-              $ hledger register                        # show account postings, with running total-              $ hledger reg income                      # show postings to/from income accounts-              $ hledger reg 'assets:some bank:checking' # show postings to/from this checking account-              $ hledger print desc:shop                 # show transactions with shop in the description-              $ hledger activity -W                     # show transaction counts per week as a bar chart--OPTIONS-   General options-       To see general usage help, including general  options  which  are  sup--       ported by most hledger commands, run hledger -h.--       General help options:--       -h --help-              show general usage (or after COMMAND, command usage)--       --version-              show version--       --debug[=N]-              show debug output (levels 1-9, default: 1)--       General input options:--       -f FILE --file=FILE-              use  a  different  input  file.   For  stdin,  use  -  (default:-              $LEDGER_FILE or $HOME/.hledger.journal)--       --rules-file=RULESFILE-              Conversion  rules  file  to  use  when  reading  CSV   (default:-              FILE.rules)--       --alias=OLD=NEW-              rename accounts named OLD to NEW--       --anon anonymize accounts and payees--       --pivot FIELDNAME-              use some other field or tag for the account name--       -I --ignore-assertions-              ignore any failing balance assertions--       General reporting options:--       -b --begin=DATE-              include postings/txns on or after this date--       -e --end=DATE-              include postings/txns before this date--       -D --daily-              multiperiod/multicolumn report by day--       -W --weekly-              multiperiod/multicolumn report by week--       -M --monthly-              multiperiod/multicolumn report by month--       -Q --quarterly-              multiperiod/multicolumn report by quarter--       -Y --yearly-              multiperiod/multicolumn report by year--       -p --period=PERIODEXP-              set  start date, end date, and/or reporting interval all at once-              (overrides the flags above)--       --date2-              match the secondary date instead (see  command  help  for  other-              effects)--       -U --unmarked-              include only unmarked postings/txns (can combine with -P or -C)--       -P --pending-              include only pending postings/txns--       -C --cleared-              include only cleared postings/txns--       -R --real-              include only non-virtual postings--       -NUM --depth=NUM-              hide/aggregate accounts or postings more than NUM levels deep--       -E --empty-              show items with zero amount, normally hidden--       -B --cost-              convert  amounts  to  their  cost at transaction time (using the-              transaction price, if any)--       -V --value-              convert amounts to their market value on  the  report  end  date-              (using the most recent applicable market price, if any)--       When a reporting option appears more than once in the command line, the-       last one takes precedence.--       Some reporting options can also be written as query arguments.--   Command options-       To see options for a  particular  command,  including  command-specific-       options, run: hledger COMMAND -h.--       Command-specific  options  must  be written after the command name, eg:-       hledger print -x.--       Additionally, if the command is an addon,  you  may  need  to  put  its-       options  after a double-hyphen, eg: hledger ui -- --watch.  Or, you can-       run the addon executable directly: hledger-ui --watch.--   Command arguments-       Most hledger commands accept arguments after the  command  name,  which-       are often a query, filtering the data in some way.--   Argument expansion-       You can save a set of command line options/arguments in a file, one per-       line, and then reuse them by writing @FILE in a command line.  (To pre--       vent this expansion of @-arguments, precede them with a -- argument.)--   Special characters-       Option  and argument values which contain problematic characters should-       be escaped with double quotes, backslashes, or  (best)  single  quotes.-       Problematic characters means spaces, and also characters which are sig--       nificant to your command shell, such  as  less-than/greater-than.   Eg:-       hledger register -p 'last year' "accounts receivable (receiv--       able|payable)" amt:\>100.--       Characters which are significant both  to  the  shell  and  in  regular-       expressions  sometimes need to be double-escaped.  These include paren--       theses, the pipe symbol and the dollar sign.  Eg, to match  the  dollar-       symbol,  bash users should do: hledger balance cur:'\$' or hledger bal--       ance cur:\\$.--       When hledger is invoking an addon executable (like hledger-ui), options-       and arguments get de-escaped once more, so you might need triple-escap--       ing.  Eg: hledger ui cur:'\\$' or hledger ui cur:\\\\$ in  bash.   (The-       number  of  backslashes  in  fish  shell is left as an exercise for the-       reader.)--       Inside a file used for argument expansion, one less level  of  escaping-       is  enough.   (And  in  this case, backslashes seem to work better than-       quotes.  Eg: cur:\$).--       If in doubt, keep things simple:--       o run add-on executables directly--       o write options after the command--       o enclose problematic args in single quotes--       o if needed, also add a backslash to escape regexp metacharacters--       If you're really stumped, add --debug=2 to troubleshoot.--   Input files-       hledger reads transactions from a data file (and the add command writes-       to it).  By default this file is $HOME/.hledger.journal (or on Windows,-       something like C:/Users/USER/.hledger.journal).  You can override  this-       with the $LEDGER_FILE environment variable:--              $ setenv LEDGER_FILE ~/finance/2016.journal-              $ hledger stats--       or with the -f/--file option:--              $ hledger -f /some/file stats--       The file name - (hyphen) means standard input:--              $ cat some.journal | hledger -f---       Usually  the  data file is in hledger's journal format, but it can also-       be one of several other formats, listed  below.   hledger  detects  the-       format  automatically  based  on  the file extension, or if that is not-       recognised, by trying each built-in "reader" in turn:---       Reader:       Reads:                              Used for file extensions:-       ------------------------------------------------------------------------------       journal       hledger's  journal  format,  also   .journal    .j    .hledger-                     some Ledger journals                .ledger-       timeclock     timeclock  files  (precise   time   .timeclock-                     logging)-       timedot       timedot  files  (approximate time   .timedot-                     logging)-       csv           comma-separated   values    (data   .csv-                     interchange)--       If  needed  (eg  to  ensure  correct error messages when a file has the-       "wrong" extension), you can force a specific reader/format by  prepend--       ing it to the file path with a colon.  Examples:--              $ hledger -f csv:/some/csv-file.dat stats-              $ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:---       You can also specify multiple -f options, to read multiple files as one-       big journal.  There are some limitations with this:--       o directives in one file will not affect the other files--       o balance assertions will not see any account  balances  from  previous-         files--       If you need those, either use the include directive, or concatenate the-       files, eg: cat a.journal b.journal | hledger -f- CMD.--   Smart dates-       hledger's user interfaces accept a flexible "smart date" syntax (unlike-       dates  in the journal file).  Smart dates allow some english words, can-       be relative to today's date, and can have less-significant  date  parts-       omitted (defaulting to 1).--       Examples:---       2009/1/1,      2009/01/01,   simple dates, several sep--       2009-1-1, 2009.1.1           arators allowed-       2009/1, 2009                 same  as above - a missing-                                    day or month defaults to 1-       1/1,     january,     jan,   relative  dates,   meaning-       this year                    january  1  of the current-                                    year-       next year                    january 1 of next year-       this month                   the  1st  of  the  current-                                    month--       this week                    the most recent monday-       last week                    the  monday  of  the  week-                                    before this one-       lastweek                     spaces are optional-       today, yesterday, tomorrow--   Report start & end date-       Most  hledger  reports  show  the  full span of time represented by the-       journal data, by default.  So, the effective report start and end dates-       will  be  the earliest and latest transaction or posting dates found in-       the journal.--       Often you will want to see a shorter time span,  such  as  the  current-       month.   You  can  specify  a  start  and/or end date using -b/--begin,-       -e/--end, -p/--period or a date: query (described below).  All of these-       accept  the smart date syntax.  One important thing to be aware of when-       specifying end dates: as in Ledger, end dates  are  exclusive,  so  you-       need to write the date after the last day you want to include.--       Examples:---       -b 2016/3/17      begin  on  St.   Patrick's-                         day 2016-       -e 12/1           end at the start of decem--                         ber  1st  of  the  current-                         year (11/30  will  be  the-                         last date included)-       -b thismonth      all   transactions  on  or-                         after the 1st of the  cur--                         rent month-       -p thismonth      all  transactions  in  the-                         current month-       date:2016/3/17-   the   above   written   as-                         queries instead-       date:-12/1-       date:thismonth--       date:thismonth--   Report intervals-       A report interval can be specified so that commands like register, bal--       ance and activity will divide their reports into  multiple  subperiods.-       The   basic   intervals   can  be  selected  with  one  of  -D/--daily,-       -W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly.   More  com--       plex  intervals  may  be  specified  with  a period expression.  Report-       intervals can not be specified with a query, currently.--   Period expressions-       The -p/--period option accepts period expressions, a shorthand  way  of-       expressing  a start date, end date, and/or report interval all at once.--       Here's a basic period expression specifying the first quarter of  2009.-       Note,  hledger  always treats start dates as inclusive and end dates as-       exclusive:--       -p "from 2009/1/1 to 2009/4/1"--       Keywords like "from" and "to" are optional, and so are the  spaces,  as-       long  as you don't run two dates together.  "to" can also be written as-       "-".  These are equivalent to the above:---       -p "2009/1/1 2009/4/1"-       -p2009/1/1to2009/4/1-       -p2009/1/1-2009/4/1--       Dates are smart dates, so if the current year is 2009,  the  above  can-       also be written as:---       -p "1/1 4/1"-       -p "january-apr"-       -p "this year to 4/1"--       If you specify only one date, the missing start or end date will be the-       earliest or latest transaction in your journal:---       -p "from 2009/1/1"   everything  after  january-                            1, 2009-       -p "from 2009/1"     the same-       -p "from 2009"       the same-       -p "to 2009"         everything  before january-                            1, 2009--       A single date with no "from" or "to" defines both  the  start  and  end-       date like so:---       -p "2009"       the  year 2009; equivalent-                       to "2009/1/1 to 2010/1/1"-       -p "2009/1"     the month of jan;  equiva--                       lent   to   "2009/1/1   to-                       2009/2/1"-       -p "2009/1/1"   just that day;  equivalent-                       to "2009/1/1 to 2009/1/2"--       The  argument  of  -p  can  also  begin  with, or be, a report interval-       expression.  The basic report intervals  are  daily,  weekly,  monthly,-       quarterly, or yearly, which have the same effect as the -D,-W,-M,-Q, or-       -Y flags.  Between report interval and start/end dates  (if  any),  the-       word in is optional.  Examples:---       -p "weekly from 2009/1/1 to 2009/4/1"-       -p "monthly in 2008"-       -p "quarterly"--       The  following  more  complex  report  intervals  are  also  supported:-       biweekly,     bimonthly,      every N days|weeks|months|quarters|years,-       every Nth day [of month], every Nth day of week.--       Examples:---       -p "bimonthly from 2008"-       -p "every 2 weeks"-       -p "every 5 days from 1/3"--       Show  historical balances at end of 15th each month (N is exclusive end-       date):--       hledger balance -H -p "every 16th day"--       Group postings from start of wednesday to end of  next  tuesday  (N  is-       start date and exclusive end date):--       hledger register checking -p "every 3rd day of week"--   Depth limiting-       With the --depth N option (short form: -N), commands like account, bal--       ance and register will show only the uppermost accounts in the  account-       tree,  down  to  level  N.   Use this when you want a summary with less-       detail.  This flag has the same effect as a depth: query  argument  (so-       -2, --depth=2 or depth:2 are basically equivalent).--   Pivoting-       Normally hledger sums amounts, and organizes them in a hierarchy, based-       on account name.  The --pivot FIELD option causes it to sum  and  orga--       nize  hierarchy  based on the value of some other field instead.  FIELD-       can be: code, description, payee, note, or the full name (case insensi--       tive) of any tag.  As with account names, values containing colon:sepa--       rated:parts will be displayed hierarchically in reports.--       --pivot is a general option affecting all reports;  you  can  think  of-       hledger transforming the journal before any other processing, replacing-       every posting's account name with the value of the specified  field  on-       that posting, inheriting it from the transaction or using a blank value-       if it's not present.--       An example:--              2016/02/16 Member Fee Payment-                  assets:bank account                    2 EUR-                  income:member fees                    -2 EUR  ; member: John Doe--       Normal balance report showing account names:--              $ hledger balance-                             2 EUR  assets:bank account-                            -2 EUR  income:member fees-              ---------------------                                 0--       Pivoted balance report, using member: tag values instead:--              $ hledger balance --pivot member-                             2 EUR-                            -2 EUR  John Doe-              ---------------------                                 0--       One way to show only amounts with  a  member:  value  (using  a  query,-       described below):--              $ hledger balance --pivot member tag:member=.-                            -2 EUR  John Doe-              ---------------------                            -2 EUR--       Another  way  (the  acct:  query  matches  against the pivoted "account-       name"):--              $ hledger balance --pivot member acct:.-                            -2 EUR  John Doe-              ---------------------                            -2 EUR--   Cost-       The -B/--cost flag converts amounts to their cost at transaction  time,-       if they have a transaction price specified.--   Market value-       The -V/--value flag converts the reported amounts to their market value-       on the report end date, using the most recent applicable market prices,-       when  known.   Specifically, when there is a market price (P directive)-       for the amount's commodity, dated on or before the report end date (see-       hledger  ->  Report  start & end date), the amount will be converted to-       the price's commodity.  If multiple applicable prices are defined,  the-       latest-dated one is used (and if dates are equal, the one last parsed).--       For example:--              # one euro is worth this many dollars from nov 1-              P 2016/11/01  $1.10--              # purchase some euros on nov 3-              2016/11/3-                  assets:euros        100-                  assets:checking--              # the euro is worth fewer dollars by dec 21-              P 2016/12/21  $1.03--       How many euros do I have ?--              $ hledger -f t.j bal euros-                              100  assets:euros--       What are they worth on nov 3 ?  (no report end date specified, defaults-       to the last date in the journal)--              $ hledger -f t.j bal euros -V-                           $110.00  assets:euros--       What are they worth on dec 21 ?--              $ hledger -f t.j bal euros -V -e 2016/12/21-                           $103.00  assets:euros--       Currently,  hledger's -V only uses market prices recorded with P direc--       tives, not transaction prices (unlike Ledger).--       Using -B and -V together is allowed.--   Regular expressions-       hledger uses regular expressions in a number of places:--       o query terms, on the command line and in the hledger-web search  form:-         REGEX, desc:REGEX, cur:REGEX, tag:...=REGEX--       o CSV rules conditional blocks: if REGEX ...--       o account  alias  directives  and options: alias /REGEX/ = REPLACEMENT,-         --alias /REGEX/=REPLACEMENT--       hledger's regular expressions come from  the  regex-tdfa  library.   In-       general they:--       o are case insensitive--       o are  infix  matching  (do  not  need  to match the entire thing being-         matched)--       o are POSIX extended regular expressions--       o also support GNU word boundaries (\<, \>, \b, \B)--       o and parenthesised capturing  groups  and  numeric  backreferences  in-         replacement strings--       o do not support mode modifiers like (?s)--       Some things to note:--       o In  the  alias directive and --alias option, regular expressions must-         be enclosed in forward  slashes  (/REGEX/).   Elsewhere  in  hledger,-         these are not required.--       o In  queries,  to match a regular expression metacharacter like $ as a-         literal character, prepend a backslash.  Eg  to  search  for  amounts-         with the dollar sign in hledger-web, write cur:\$.--       o On  the command line, some metacharacters like $ have a special mean--         ing to the shell and so must be escaped at least once more.  See Spe--         cial characters.--QUERIES-       One  of  hledger's strengths is being able to quickly report on precise-       subsets of your data.  Most commands accept an optional  query  expres--       sion,  written  as arguments after the command name, to filter the data-       by date, account name or other criteria.  The syntax is  similar  to  a-       web search: one or more space-separated search terms, quotes to enclose-       whitespace, prefixes to match specific fields, a not: prefix to  negate-       the match.--       We  do  not yet support arbitrary boolean combinations of search terms;-       instead most commands show transactions/postings/accounts  which  match-       (or negatively match):--       o any of the description terms AND--       o any of the account terms AND--       o any of the status terms AND--       o all the other terms.--       The print command instead shows transactions which:--       o match any of the description terms AND--       o have any postings matching any of the positive account terms AND--       o have no postings matching any of the negative account terms AND--       o match all the other terms.--       The  following  kinds  of search terms can be used.  Remember these can-       also be prefixed with not:, eg to exclude a particular subaccount.--       REGEX  match account names by this regular expression.  (No  prefix  is-              equivalent to acct:).--       acct:REGEX-              same as above--       amt:N, amt:<N, amt:<=N, amt:>N, amt:>=N-              match  postings with a single-commodity amount that is equal to,-              less than, or greater than N.  (Multi-commodity amounts are  not-              tested, and will always match.) The comparison has two modes: if-              N is preceded by a + or - sign (or is 0), the two signed numbers-              are  compared.  Otherwise, the absolute magnitudes are compared,-              ignoring sign.--       code:REGEX-              match by transaction code (eg check number)--       cur:REGEX-              match postings or transactions including any amounts whose  cur--              rency/commodity  symbol  is fully matched by REGEX.  (For a par--              tial match, use .*REGEX.*).  Note, to match characters which are-              regex-significant, like the dollar sign ($), you need to prepend-              \.  And when using the command line you need  to  add  one  more-              level  of  quoting  to  hide  it  from  the  shell,  so  eg  do:-              hledger print cur:'\$' or hledger print cur:\\$.--       desc:REGEX-              match transaction descriptions.--       date:PERIODEXPR-              match dates within the specified period.  PERIODEXPR is a period-              expression  (with  no  report  interval).   Examples: date:2016,-              date:thismonth,  date:2000/2/1-2/15,  date:lastweek-.   If   the-              --date2  command  line  flag  is present, this matches secondary-              dates instead.--       date2:PERIODEXPR-              match secondary dates within the specified period.--       depth:N-              match (or display, depending on command) accounts  at  or  above-              this depth--       note:REGEX-              match  transaction  notes  (part  of  description right of |, or-              whole description when there's no |)--       payee:REGEX-              match transaction payee/payer names (part of description left of-              |, or whole description when there's no |)--       real:, real:0-              match real or virtual postings respectively--       status:, status:!, status:*-              match unmarked, pending, or cleared transactions respectively--       tag:REGEX[=REGEX]-              match  by  tag  name,  and optionally also by tag value.  Note a-              tag: query is considered to match a transaction  if  it  matches-              any  of  the  postings.  Also remember that postings inherit the-              tags of their parent transaction.--       The following special search term is used automatically in hledger-web,-       only:--       inacct:ACCTNAME-              tells  hledger-web  to  show  the  transaction register for this-              account.  Can be filtered further with acct etc.--       Some of these can also be expressed as command-line options (eg depth:2-       is  equivalent  to --depth 2).  Generally you can mix options and query-       arguments, and the resulting query will be their intersection  (perhaps-       excluding the -p/--period option).--COMMANDS-       hledger  provides  a  number  of subcommands; hledger with no arguments-       shows a list.--       If you install additional hledger-* packages, or if you put programs or-       scripts  named  hledger-NAME in your PATH, these will also be listed as-       subcommands.--       Run  a  subcommand  by  writing  its  name  as   first   argument   (eg-       hledger incomestatement).  You can also write one of the standard short-       aliases displayed in parentheses in the command  list  (hledger b),  or-       any any unambiguous prefix of a command name (hledger inc).--       Here  are  all  the  builtin  commands in alphabetical order.  See also-       hledger for a more  organised  command  list,  and  hledger CMD -h  for-       detailed command help.--   accounts-       Show account names.  Alias: a.--       --tree show short account names, as a tree--       --flat show full account names, as a list (default)--       --drop=N-              in flat mode: omit N leading account name parts--       This  command  lists  all  account  names  that are in use (ie, all the-       accounts which have at least one transaction posting  to  them).   With-       query arguments, only matched account names are shown.--       It  shows  a flat list by default.  With --tree, it uses indentation to-       show the account hierarchy.--       In flat mode you can add --drop N to omit the first  few  account  name-       components.--       Examples:--              $ hledger accounts --tree-              assets-                bank-                  checking-                  saving-                cash-              expenses-                food-                supplies-              income-                gifts-                salary-              liabilities-                debts--              $ hledger accounts --drop 1-              bank:checking-              bank:saving-              cash-              food-              supplies-              gifts-              salary-              debts--              $ hledger accounts-              assets:bank:checking-              assets:bank:saving-              assets:cash-              expenses:food-              expenses:supplies-              income:gifts-              income:salary-              liabilities:debts--   activity-       Show an ascii barchart of posting counts per interval.--       The  activity  command  displays an ascii histogram showing transaction-       counts by day, week, month or other reporting interval (by day  is  the-       default).  With query arguments, it counts only matched transactions.--              $ hledger activity --quarterly-              2008-01-01 **-              2008-04-01 *******-              2008-07-01-              2008-10-01 **--   add-       Prompt for transactions and add them to the journal.--       --no-new-accounts-              don't  allow  creating  new  accounts;  helps prevent typos when-              entering account names--       Many hledger users edit their journals directly with a text editor,  or-       generate  them from CSV.  For more interactive data entry, there is the-       add command, which prompts interactively on the console for new  trans--       actions,  and  appends  them to the journal file (if there are multiple-       -f FILE options, the first file is used.) Existing transactions are not-       changed.   This  is the only hledger command that writes to the journal-       file.--       To use it, just run hledger add and follow the prompts.  You can add as-       many  transactions as you like; when you are finished, enter . or press-       control-d or control-c to exit.--       Features:--       o add tries to provide useful defaults, using the most  similar  recent-         transaction (by description) as a template.--       o You can also set the initial defaults with command line arguments.--       o Readline-style edit keys can be used during data entry.--       o The tab key will auto-complete whenever possible - accounts, descrip--         tions, dates (yesterday, today, tomorrow).   If  the  input  area  is-         empty, it will insert the default value.--       o If  the  journal defines a default commodity, it will be added to any-         bare numbers entered.--       o A parenthesised transaction code may be entered following a date.--       o Comments and tags may be entered following a description or amount.--       o If you make a mistake, enter < at any prompt to restart the  transac--         tion.--       o Input  prompts  are displayed in a different colour when the terminal-         supports it.--       Example (see the tutorial for a detailed explanation):--              $ hledger add-              Adding transactions to journal file /src/hledger/examples/sample.journal-              Any command line arguments will be used as defaults.-              Use tab key to complete, readline keys to edit, enter to accept defaults.-              An optional (CODE) may follow transaction dates.-              An optional ; COMMENT may follow descriptions or amounts.-              If you make a mistake, enter < at any prompt to restart the transaction.-              To end a transaction, enter . when prompted.-              To quit, enter . at a date prompt or press control-d or control-c.-              Date [2015/05/22]:-              Description: supermarket-              Account 1: expenses:food-              Amount  1: $10-              Account 2: assets:checking-              Amount  2 [$-10.0]:-              Account 3 (or . or enter to finish this transaction): .-              2015/05/22 supermarket-                  expenses:food             $10-                  assets:checking        $-10.0--              Save this transaction to the journal ? [y]:-              Saved.-              Starting the next transaction (. or ctrl-D/ctrl-C to quit)-              Date [2015/05/22]: <CTRL-D> $--   balance-       Show accounts and their balances.  Aliases: b, bal.--       --change-              show balance change in each period (default)--       --cumulative-              show balance change accumulated across periods  (in  multicolumn-              reports)--       -H --historical-              show historical ending balance in each period (includes postings-              before report start date)--       --tree show accounts as a tree; amounts include subaccounts (default in-              simple reports)--       --flat show accounts as a list; amounts exclude subaccounts except when-              account is depth-clipped (default in multicolumn reports)--       -A --average-              show a row average column (in multicolumn mode)--       -T --row-total-              show a row total column (in multicolumn mode)--       -N --no-total-              don't show the final total row--       --drop=N-              omit N leading account name parts (in flat mode)--       --no-elide-              don't squash boring parent accounts (in tree mode)--       --format=LINEFORMAT-              in single-column balance reports: use this custom line format--       -O FMT --output-format=FMT-              select the output format.  Supported formats: txt, csv.--       -o FILE --output-file=FILE-              write output to FILE.  A file  extension  matching  one  of  the-              above formats selects that format.--       --pretty-tables-              Use unicode to display prettier tables.--       --sort-amount-              Sort  by amount (total row amount, or by average if that is dis--              played), instead of account name (in flat mode)--       The balance command displays accounts and balances.   It  is  hledger's-       most featureful and versatile command.--              $ hledger balance-                               $-1  assets-                                $1    bank:saving-                               $-2    cash-                                $2  expenses-                                $1    food-                                $1    supplies-                               $-2  income-                               $-1    gifts-                               $-1    salary-                                $1  liabilities:debts-              ---------------------                                 0--       More  precisely, the balance command shows the change to each account's-       balance caused by all (matched) postings.  In the common case where you-       do  not  filter  by date and your journal sets the correct opening bal--       ances, this is the same as the account's ending balance.--       By default, accounts are  displayed  hierarchically,  with  subaccounts-       indented below their parent.  "Boring" accounts, which contain a single-       interesting subaccount and no balance of their own, are elided into the-       following  line  for  more  compact output.  (Use --no-elide to prevent-       this.  Eliding of boring accounts is not yet supported  in  multicolumn-       reports.)--       Each  account's  balance  is  the "inclusive" balance - it includes the-       balances of any subaccounts.--       Accounts which have zero balance  (and  no  non-zero  subaccounts)  are-       omitted.  Use -E/--empty to show them.--       A  final  total  is displayed by default; use -N/--no-total to suppress-       it:--              $ hledger balance -p 2008/6 expenses --no-total-                                $2  expenses-                                $1    food-                                $1    supplies--   Flat mode-       To see a flat list of full account names instead of the default hierar--       chical   display,   use   --flat.    In  this  mode,  accounts  (unless-       depth-clipped) show their "exclusive" balance, excluding any subaccount-       balances.   In  this  mode, you can also use --drop N to omit the first-       few account name components.--              $ hledger balance -p 2008/6 expenses -N --flat --drop 1-                                $1  food-                                $1  supplies--   Depth limited balance reports-       With --depth N, balance shows accounts only  to  the  specified  depth.-       This  is  very  useful  to  show  a  complex charts of accounts in less-       detail.  In flat mode, balances from accounts  below  the  depth  limit-       will be shown as part of a parent account at the depth limit.--              $ hledger balance -N --depth 1-                               $-1  assets-                                $2  expenses-                               $-2  income-                                $1  liabilities--   Multicolumn balance reports-       With  a reporting interval, multiple balance columns will be shown, one-       for each report period.  There are three types of multi-column  balance-       report, showing different information:--       1. By default: each column shows the sum of postings in that period, ie-          the account's change of balance in that period.  This is  useful  eg-          for a monthly income statement:--                  $ hledger balance --quarterly income expenses -E-                  Balance changes in 2008:--                                     ||  2008q1  2008q2  2008q3  2008q4-                  ===================++=================================-                   expenses:food     ||       0      $1       0       0-                   expenses:supplies ||       0      $1       0       0-                   income:gifts      ||       0     $-1       0       0-                   income:salary     ||     $-1       0       0       0-                  -------------------++----------------------------------                                     ||     $-1      $1       0       0--       2. With  --cumulative:  each  column  shows the ending balance for that-          period, accumulating the changes across periods, starting from 0  at-          the report start date:--                  $ hledger balance --quarterly income expenses -E --cumulative-                  Ending balances (cumulative) in 2008:--                                     ||  2008/03/31  2008/06/30  2008/09/30  2008/12/31-                  ===================++=================================================-                   expenses:food     ||           0          $1          $1          $1-                   expenses:supplies ||           0          $1          $1          $1-                   income:gifts      ||           0         $-1         $-1         $-1-                   income:salary     ||         $-1         $-1         $-1         $-1-                  -------------------++--------------------------------------------------                                     ||         $-1           0           0           0--       3. With --historical/-H: each column shows the actual historical ending-          balance for that period, accumulating the  changes  across  periods,-          starting  from the actual balance at the report start date.  This is-          useful eg for a multi-period balance sheet, and when you are showing-          only the data after a certain start date:--                  $ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1-                  Ending balances (historical) in 2008/04/01-2008/12/31:--                                        ||  2008/06/30  2008/09/30  2008/12/31-                  ======================++=====================================-                   assets:bank:checking ||          $1          $1           0-                   assets:bank:saving   ||          $1          $1          $1-                   assets:cash          ||         $-2         $-2         $-2-                   liabilities:debts    ||           0           0          $1-                  ----------------------++--------------------------------------                                        ||           0           0           0--       Multi-column  balance reports display accounts in flat mode by default;-       to see the hierarchy, use --tree.--       With  a  reporting  interval  (like  --quarterly  above),  the   report-       start/end  dates  will  be adjusted if necessary so that they encompass-       the displayed report periods.  This is so that the first and last peri--       ods will be "full" and comparable to the others.--       The  -E/--empty  flag  does  two things in multicolumn balance reports:-       first, the report will show all columns  within  the  specified  report-       period  (without  -E,  leading and trailing columns with all zeroes are-       not shown).  Second, all accounts which existed  at  the  report  start-       date  will  be  considered,  not just the ones with activity during the-       report period (use -E to include low-activity accounts which would oth--       erwise would be omitted).--       The -T/--row-total flag adds an additional column showing the total for-       each row.--       The -A/--average flag adds a column showing the average value  in  each-       row.--       Here's an example of all three:--              $ hledger balance -Q income expenses --tree -ETA-              Balance changes in 2008:--                          ||  2008q1  2008q2  2008q3  2008q4    Total  Average-              ============++===================================================-               expenses   ||       0      $2       0       0       $2       $1-                 food     ||       0      $1       0       0       $1        0-                 supplies ||       0      $1       0       0       $1        0-               income     ||     $-1     $-1       0       0      $-2      $-1-                 gifts    ||       0     $-1       0       0      $-1        0-                 salary   ||     $-1       0       0       0      $-1        0-              ------------++----------------------------------------------------                          ||     $-1      $1       0       0        0        0--              # Average is rounded to the dollar here since all journal amounts are--   Custom balance output-       In  simple  (non-multi-column)  balance  reports, you can customise the-       output with --format FMT:--              $ hledger balance --format "%20(account) %12(total)"-                            assets          $-1-                       bank:saving           $1-                              cash          $-2-                          expenses           $2-                              food           $1-                          supplies           $1-                            income          $-2-                             gifts          $-1-                            salary          $-1-                 liabilities:debts           $1-              ----------------------------------                                              0--       The FMT format string (plus a newline) specifies the formatting applied-       to  each  account/balance pair.  It may contain any suitable text, with-       data fields interpolated like so:--       %[MIN][.MAX](FIELDNAME)--       o MIN pads with spaces to at least this width (optional)--       o MAX truncates at this width (optional)--       o FIELDNAME must be enclosed in parentheses, and can be one of:--         o depth_spacer - a number of spaces equal to the account's depth,  or-           if MIN is specified, MIN * depth spaces.--         o account - the account's name--         o total - the account's balance/posted total, right justified--       Also,  FMT  can begin with an optional prefix to control how multi-com--       modity amounts are rendered:--       o %_ - render on multiple lines, bottom-aligned (the default)--       o %^ - render on multiple lines, top-aligned--       o %, - render on one line, comma-separated--       There are some quirks.  Eg in one-line  mode,  %(depth_spacer)  has  no-       effect, instead %(account) has indentation built in.-        Experimentation may be needed to get pleasing results.--       Some example formats:--       o %(total) - the account's total--       o %-20.20(account)  -  the account's name, left justified, padded to 20-         characters and clipped at 20 characters--       o %,%-50(account)  %25(total) - account name padded to  50  characters,-         total  padded to 20 characters, with multiple commodities rendered on-         one line--       o %20(total)  %2(depth_spacer)%-(account) - the default format for  the-         single-column balance report--   Colour support-       The balance command shows negative amounts in red, if:--       o the TERM environment variable is not set to dumb--       o the output is not being redirected or piped anywhere--   Output destination-       The  balance, print, register and stats commands can write their output-       to a destination other than the console.  This  is  controlled  by  the-       -o/--output-file option.--              $ hledger balance -o -     # write to stdout (the default)-              $ hledger balance -o FILE  # write to FILE--   CSV output-       The balance, print and register commands can write their output as CSV.-       This is useful for exporting data to other  applications,  eg  to  make-       charts  in a spreadsheet.  This is controlled by the -O/--output-format-       option, or by specifying a .csv file extension with -o/--output-file.--              $ hledger balance -O csv       # write CSV to stdout-              $ hledger balance -o FILE.csv  # write CSV to FILE.csv--   balancesheet-       Show a balance sheet.  Alias: bs.--       --change-              show balance change in each period, instead of historical ending-              balances--       --cumulative-              show  balance  change accumulated across periods (in multicolumn-              reports), instead of historical ending balances--       -H --historical-              show historical ending balance in each period (includes postings-              before report start date) (default)--       --tree show accounts as a tree; amounts include subaccounts (default in-              simple reports)--       --flat show accounts as a list; amounts exclude subaccounts except when-              account is depth-clipped (default in multicolumn reports)--       -A --average-              show a row average column (in multicolumn mode)--       -T --row-total-              show a row total column (in multicolumn mode)--       -N --no-total-              don't show the final total row--       --drop=N-              omit N leading account name parts (in flat mode)--       --no-elide-              don't squash boring parent accounts (in tree mode)--       --format=LINEFORMAT-              in single-column balance reports: use this custom line format--       --sort-amount-              sort by amount instead of account name--       This  command  displays  a  simple balance sheet.  It currently assumes-       that you have top-level accounts  named  asset  and  liability  (plural-       forms also allowed.)--              $ hledger balancesheet-              Balance Sheet--              Assets:-                               $-1  assets-                                $1    bank:saving-                               $-2    cash-              ---------------------                               $-1--              Liabilities:-                                $1  liabilities:debts-              ---------------------                                $1--              Total:-              ---------------------                                 0--       With a reporting interval, multiple columns will be shown, one for each-       report period.  As with multicolumn balance reports, you can alter  the-       report  mode  with  --change/--cumulative/--historical.   Normally bal--       ancesheet shows historical ending balances, which is what you need  for-       a balance sheet; note this means it ignores report begin dates.--   balancesheetequity-       Show a balance sheet including equity.  Alias: bse.--       Other  than  showing  the  equity accounts, this command is exactly the-       same as the command balancesheet.  Please refer to it for the available-       options.--       This  command  displays  a balancesheet.  It currently assumes that you-       have top-level accounts named asset, liability and equity (plural forms-       also allowed.)--              $ hledger balancesheetequity-              Balance Sheet With Equity--              Assets:-                               $-2  assets-                                $1    bank:saving-                               $-3    cash-              ---------------------                               $-2--              Liabilities:-                                $1  liabilities:debts-              ---------------------                                $1--              Equity:-                        $1  equity:owner-              ---------------------                        $1--              Total:-              ---------------------                                 0--   cashflow-       Show a cashflow statement.  Alias: cf.--       --change-              show balance change in each period (default)--       --cumulative-              show  balance  change accumulated across periods (in multicolumn-              reports), instead of changes during periods--       -H --historical-              show historical ending balance in each period (includes postings-              before report start date), instead of changes during each period--       --tree show accounts as a tree; amounts include subaccounts (default in-              simple reports)--       --flat show accounts as a list; amounts exclude subaccounts except when-              account is depth-clipped (default in multicolumn reports)--       -A --average-              show a row average column (in multicolumn mode)--       -T --row-total-              show a row total column (in multicolumn mode)--       -N --no-total-              don't show the final total row (in simple reports)--       --drop=N-              omit N leading account name parts (in flat mode)--       --no-elide-              don't squash boring parent accounts (in tree mode)--       --format=LINEFORMAT-              in single-column balance reports: use this custom line format--       --sort-amount-              sort by amount instead of account name--       This command displays a simple cashflow statement It shows  the  change-       in  all  "cash"  (ie,  liquid assets) accounts for the period.  It cur--       rently assumes that cash accounts are under a top-level  account  named-       asset and do not contain receivable, :A/R or :fixed.--              $ hledger cashflow-              Cashflow Statement--              Cash flows:-                               $-1  assets-                                $1    bank:saving-                               $-2    cash-              ---------------------                               $-1--              Total:-              ---------------------                               $-1--       With a reporting interval, multiple columns will be shown, one for each-       report period.  Normally cashflow shows changes in assets  per  period,-       though  as  with  multicolumn  balance reports you can alter the report-       mode with --change/--cumulative/--historical.--   check-dates-       Check that transactions are sorted by increasing date.  With  a  query,-       only matched transactions' dates are checked.--   check-dupes-       Report  account  names having the same leaf but different prefixes.  An-       example: http://stefanorodighiero.net/software/hledger-dupes.html--   equity-       Print closing/opening transactions that bring some or all account  bal--       ances  to  zero  and back.  Can be useful for bringing account balances-       across file boundaries.--   help-       Show any of the hledger manuals.--       The help command displays any of the main hledger manuals,  in  one  of-       several  ways.  Run it with no argument to list the manuals, or provide-       a full or partial manual name to select one.--       hledger manuals are available in several formats.   hledger  help  will-       use  the  first  of  these  display  methods  that it finds: info, man,-       $PAGER, less, stdout (or when non-interactive, just stdout).   You  can-       force a particular viewer with the --info, --man, --pager, --cat flags.--              $ hledger help-              Please choose a manual by typing "hledger help MANUAL" (a substring is ok).-              Manuals: hledger hledger-ui hledger-web hledger-api journal csv timeclock timedot--              $ hledger help h --man--              hledger(1)                    hledger User Manuals                    hledger(1)--              NAME-                     hledger - a command-line accounting tool--              SYNOPSIS-                     hledger [-f FILE] COMMAND [OPTIONS] [ARGS]-                     hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]-                     hledger--              DESCRIPTION-                     hledger  is  a  cross-platform  program  for tracking money, time, or any-              ...--   import-       Read new transactions added to each FILE since last run, and  add  them-       to the main journal file.--       --dry-run-              just show the transactions to be imported--       Input  files are provided as arguments, or glob patterns.  So eg to add-       new transactions from all CSV files to the main journal: hledger import-       *.csv--       New  transactions  are  detected  like  print --new (using .latest.FILE-       state files).--   incomestatement-       Show an income statement.  Alias: is.--       --change-              show balance change in each period (default)--       --cumulative-              show balance change accumulated across periods  (in  multicolumn-              reports), instead of changes during periods--       -H --historical-              show historical ending balance in each period (includes postings-              before report start date), instead of changes during each period--       --tree show accounts as a tree; amounts include subaccounts (default in-              simple reports)--       --flat show accounts as a list; amounts exclude subaccounts except when-              account is depth-clipped (default in multicolumn reports)--       -A --average-              show a row average column (in multicolumn mode)--       -T --row-total-              show a row total column (in multicolumn mode)--       -N --no-total-              don't show the final total row--       --drop=N-              omit N leading account name parts (in flat mode)--       --no-elide-              don't squash boring parent accounts (in tree mode)--       --format=LINEFORMAT-              in single-column balance reports: use this custom line format--       --sort-amount-              sort by amount instead of account name--       This  command displays a simple income statement.  It currently assumes-       that you have top-level accounts named income (or revenue) and  expense-       (plural forms also allowed.)--              $ hledger incomestatement-              Income Statement--              Revenues:-                               $-2  income-                               $-1    gifts-                               $-1    salary-              ---------------------                               $-2--              Expenses:-                                $2  expenses-                                $1    food-                                $1    supplies-              ---------------------                                $2--              Total:-              ---------------------                                 0--       With a reporting interval, multiple columns will be shown, one for each-       report period.  Normally incomestatement  shows  revenues/expenses  per-       period,  though  as  with multicolumn balance reports you can alter the-       report mode with --change/--cumulative/--historical.--   prices-       Print all market prices from the journal.--   print-       Show transactions from the journal.  Aliases: p, txns.--       -m STR --match=STR-              show the transaction whose description is most similar  to  STR,-              and is most recent--       --new  show only newer-dated transactions added in each file since last-              run--       -x     --explicit-              show all amounts explicitly--       -O FMT --output-format=FMT-              select the output format.  Supported formats: txt, csv.--       -o FILE --output-file=FILE-              write output to FILE.  A file  extension  matching  one  of  the-              above formats selects that format.--              $ hledger print-              2008/01/01 income-                  assets:bank:checking            $1-                  income:salary                  $-1--              2008/06/01 gift-                  assets:bank:checking            $1-                  income:gifts                   $-1--              2008/06/02 save-                  assets:bank:saving              $1-                  assets:bank:checking           $-1--              2008/06/03 * eat & shop-                  expenses:food                $1-                  expenses:supplies            $1-                  assets:cash                 $-2--              2008/12/31 * pay off-                  liabilities:debts               $1-                  assets:bank:checking           $-1--       The print command displays full journal entries (transactions) from the-       journal file in date order, tidily formatted.  print's output is always-       a valid hledger journal.  It preserves all transaction information, but-       it does not preserve directives or inter-transaction comments--       Normally, the journal entry's explicit or implicit amount style is pre--       served.   Ie when an amount is omitted in the journal, it will be omit--       ted in the output.  You can use the  -x/--explicit  flag  to  make  all-       amounts explicit, which can be useful for troubleshooting or for making-       your journal more readable and robust against data entry errors.  Note,-       -x  will  cause postings with a multi-commodity amount (these can arise-       when a multi-commodity transaction has  an  implicit  amount)  will  be-       split  into  multiple single-commodity postings, for valid journal out--       put.--       With -B/--cost, amounts with transaction prices are converted  to  cost-       using that price.--       With  -m/--match and a STR argument, print will show at most one trans--       action: the one one whose description is most similar to  STR,  and  is-       most  recent.  STR should contain at least two characters.  If there is-       no similar-enough match, no transaction will be shown.--       With --new, for each FILE being read, hledger reads (and writes) a spe--       cial  state  file  (.latest.FILE in the same directory), containing the-       latest transaction date(s) that were seen  last  time  FILE  was  read.-       When  this  file  is found, only transactions with newer dates (and new-       transactions on the latest date)  are  printed.   This  is  useful  for-       ignoring  already-seen  entries  in import data, such as downloaded CSV-       files.  Eg:--              $ hledger -f bank1.csv print --new-              # shows transactions added since last print --new on this file--       This assumes that transactions  added  to  FILE  always  have  same  or-       increasing  dates,  and  that  transactions  on the same day do not get-       reordered.  See also the import command.--       The print command also supports  output  destination  and  CSV  output.-       Here's an example of print's CSV output:--              $ hledger print -Ocsv-              "txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting-status","posting-comment"-              "1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""-              "1","2008/01/01","","","","income","","income:salary","-1","$","1","","",""-              "2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""-              "2","2008/06/01","","","","gift","","income:gifts","-1","$","1","","",""-              "3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""-              "3","2008/06/02","","","","save","","assets:bank:checking","-1","$","1","","",""-              "4","2008/06/03","","*","","eat & shop","","expenses:food","1","$","","1","",""-              "4","2008/06/03","","*","","eat & shop","","expenses:supplies","1","$","","1","",""-              "4","2008/06/03","","*","","eat & shop","","assets:cash","-2","$","2","","",""-              "5","2008/12/31","","*","","pay off","","liabilities:debts","1","$","","1","",""-              "5","2008/12/31","","*","","pay off","","assets:bank:checking","-1","$","1","","",""--       o There  is  one  CSV record per posting, with the parent transaction's-         fields repeated.--       o The "txnidx" (transaction index) field shows which postings belong to-         the  same transaction.  (This number might change if transactions are-         reordered within the file, files are parsed/included in  a  different-         order, etc.)--       o The  amount  is  separated into "commodity" (the symbol) and "amount"-         (numeric quantity) fields.--       o The numeric amount is repeated in either the "credit" or "debit" col--         umn,  for convenience.  (Those names are not accurate in the account--         ing sense; it just puts negative amounts under  credit  and  zero  or-         greater amounts under debit.)--   print-unique-       Print transactions which do not reuse an already-seen description.--   register-       Show postings and their running total.  Aliases: r, reg.--       --cumulative-              show running total from report start date (default)--       -H --historical-              show  historical running total/balance (includes postings before-              report start date)--       -A --average-              show  running  average  of  posting  amounts  instead  of  total-              (implies --empty)--       -r --related-              show postings' siblings instead--       -w N --width=N-              set  output  width  (default:  terminal width or COLUMNS.  -wN,M-              sets description width as well)--       -O FMT --output-format=FMT-              select the output format.  Supported formats: txt, csv.--       -o FILE --output-file=FILE-              write output to FILE.  A file  extension  matching  one  of  the-              above formats selects that format.--       The register command displays postings, one per line, and their running-       total.  This is typically used with  a  query  selecting  a  particular-       account, to see that account's activity:--              $ hledger register checking-              2008/01/01 income               assets:bank:checking            $1            $1-              2008/06/01 gift                 assets:bank:checking            $1            $2-              2008/06/02 save                 assets:bank:checking           $-1            $1-              2008/12/31 pay off              assets:bank:checking           $-1             0--       The  --historical/-H  flag  adds the balance from any undisplayed prior-       postings to the running total.  This is useful when  you  want  to  see-       only recent activity, with a historically accurate running balance:--              $ hledger register checking -b 2008/6 --historical-              2008/06/01 gift                 assets:bank:checking            $1            $2-              2008/06/02 save                 assets:bank:checking           $-1            $1-              2008/12/31 pay off              assets:bank:checking           $-1             0--       The --depth option limits the amount of sub-account detail displayed.--       The  --average/-A flag shows the running average posting amount instead-       of the running total (so, the final number displayed is the average for-       the  whole  report period).  This flag implies --empty (see below).  It-       is affected by --historical.  It  works  best  when  showing  just  one-       account and one commodity.--       The  --related/-r  flag shows the other postings in the transactions of-       the postings which would normally be shown.--       With a reporting interval, register shows  summary  postings,  one  per-       interval, aggregating the postings to each account:--              $ hledger register --monthly income-              2008/01                 income:salary                          $-1           $-1-              2008/06                 income:gifts                           $-1           $-2--       Periods  with no activity, and summary postings with a zero amount, are-       not shown by default; use the --empty/-E flag to see them:--              $ hledger register --monthly income -E-              2008/01                 income:salary                          $-1           $-1-              2008/02                                                          0           $-1-              2008/03                                                          0           $-1-              2008/04                                                          0           $-1-              2008/05                                                          0           $-1-              2008/06                 income:gifts                           $-1           $-2-              2008/07                                                          0           $-2-              2008/08                                                          0           $-2-              2008/09                                                          0           $-2-              2008/10                                                          0           $-2-              2008/11                                                          0           $-2-              2008/12                                                          0           $-2--       Often, you'll want to see just one  line  per  interval.   The  --depth-       option helps with this, causing subaccounts to be aggregated:--              $ hledger register --monthly assets --depth 1h-              2008/01                 assets                                  $1            $1-              2008/06                 assets                                 $-1             0-              2008/12                 assets                                 $-1           $-1--       Note  when using report intervals, if you specify start/end dates these-       will be adjusted outward if necessary to  contain  a  whole  number  of-       intervals.   This  ensures  that  the first and last intervals are full-       length and comparable to the others in the report.--   Custom register output-       register uses the full terminal width by default,  except  on  windows.-       You  can override this by setting the COLUMNS environment variable (not-       a bash shell variable) or by using the --width/-w option.--       The description and account columns normally share  the  space  equally-       (about  half  of  (width  - 40) each).  You can adjust this by adding a-       description width  as  part  of  --width's  argument,  comma-separated:-       --width W,D .  Here's a diagram:--              <--------------------------------- width (W) ---------------------------------->-              date (10)  description (D)       account (W-41-D)     amount (12)   balance (12)-              DDDDDDDDDD dddddddddddddddddddd  aaaaaaaaaaaaaaaaaaa  AAAAAAAAAAAA  AAAAAAAAAAAA--       and some examples:--              $ hledger reg                     # use terminal width (or 80 on windows)-              $ hledger reg -w 100              # use width 100-              $ COLUMNS=100 hledger reg         # set with one-time environment variable-              $ export COLUMNS=100; hledger reg # set till session end (or window resize)-              $ hledger reg -w 100,40           # set overall width 100, description width 40-              $ hledger reg -w $COLUMNS,40      # use terminal width, and set description width--       The  register  command also supports the -o/--output-file and -O/--out--       put-format options for controlling output destination and CSV output.--   register-match-       Print the one posting whose transaction description is closest to DESC,-       in  the  style  of  the register command.  Helps ledger-autosync detect-       already-seen transactions when importing.--   rewrite-       Print all transactions, adding custom postings to the matched ones.--   stats-       Show some journal statistics.--       -o FILE --output-file=FILE-              write output to FILE.  A file  extension  matching  one  of  the-              above formats selects that format.--              $ hledger stats-              Main journal file        : /src/hledger/examples/sample.journal-              Included journal files   :-              Transactions span        : 2008-01-01 to 2009-01-01 (366 days)-              Last transaction         : 2008-12-31 (2333 days ago)-              Transactions             : 5 (0.0 per day)-              Transactions last 30 days: 0 (0.0 per day)-              Transactions last 7 days : 0 (0.0 per day)-              Payees/descriptions      : 5-              Accounts                 : 8 (depth 3)-              Commodities              : 1 ($)--       The  stats  command displays summary information for the whole journal,-       or a matched part of it.  With a reporting interval, it shows a  report-       for each report period.--       The stats command also supports -o/--output-file for controlling output-       destination.--   tags-       List all the tag names in use.--   test-       Run built-in unit tests.--              $ hledger test-              Cases: 74  Tried: 74  Errors: 0  Failures: 0--       This command runs hledger's built-in unit tests and  displays  a  quick-       report.  With a regular expression argument, it selects only tests with-       matching names.  It's mainly used in development, but it's also nice to-       be able to check your hledger executable for smoke at any time.--ADD-ON COMMANDS-       hledger  also  searches  for external add-on commands, and will include-       these in the commands list.  These are programs or scripts in your PATH-       whose  name starts with hledger- and ends with a recognised file exten--       sion (currently: no extension, bat,com,exe, hs,lhs,pl,py,rb,rkt,sh).--       Add-ons can be invoked like any hledger command, but there  are  a  few-       things to be aware of.  Eg if the hledger-web add-on is installed,--       o hledger -h web  shows  hledger's  help,  while  hledger web -h  shows-         hledger-web's help.--       o Flags specific to the add-on must have a preceding --  to  hide  them-         from  hledger.   So hledger web --serve --port 9000 will be rejected;-         you must use hledger web -- --serve --port 9000.--       o You   can    always    run    add-ons    directly    if    preferred:-         hledger-web --serve --port 9000.--       Add-ons  are  a relatively easy way to add local features or experiment-       with new ideas.  They can be  written  in  any  language,  but  haskell-       scripts  have  a  big  advantage:  they  can  use the same hledger (and-       haskell) library functions that built-in commands do, for  command-line-       options, journal parsing, reporting, etc.--       Here are some hledger add-ons available:--   Official add-ons-       These are maintained and released along with hledger.--   api-       hledger-api serves hledger data as a JSON web API.--   ui-       hledger-ui provides an efficient curses-style interface.--   web-       hledger-web provides a simple web interface.--   Third party add-ons-       These  are  maintained  separately, and usually updated shortly after a-       hledger release.--   diff-       hledger-diff shows differences in an account's transactions between one-       journal file and another.--   iadd-       hledger-iadd  is  a  curses-style, more interactive replacement for the-       add command.--   interest-       hledger-interest generates interest transactions for an account accord--       ing to various schemes.--   irr-       hledger-irr  calculates  the  internal  rate of return of an investment-       account.--   Experimental add-ons-       These are available in source form in the hledger  repo's  bin/  direc--       tory; installing them is pretty easy.  They may be less mature and doc--       umented than built-in commands.  Reading and tweaking these is  a  good-       way to start making your own!--   autosync-       hledger-autosync is a symbolic link for easily running ledger-autosync,-       if installed.  ledger-autosync does  deduplicating  conversion  of  OFX-       data  and some CSV formats, and can also download the data if your bank-       offers OFX Direct Connect.--   budget-       hledger-budget.hs adds more budget-tracking features to hledger.--   chart-       hledger-chart.hs is an old pie chart generator, in need of some love.--   check-       hledger-check.hs checks more powerful account balance assertions.--ENVIRONMENT-       COLUMNS The screen width used by the register  command.   Default:  the-       full terminal width.--       LEDGER_FILE The journal file path when not specified with -f.  Default:-       ~/.hledger.journal (on  windows,  perhaps  C:/Users/USER/.hledger.jour--       nal).--FILES-       Reads  data from one or more files in hledger journal, timeclock, time--       dot,  or  CSV  format  specified   with   -f,   or   $LEDGER_FILE,   or-       $HOME/.hledger.journal           (on          windows,          perhaps-       C:/Users/USER/.hledger.journal).--BUGS-       The need to precede addon command options with  --  when  invoked  from-       hledger is awkward.--       When input data contains non-ascii characters, a suitable system locale-       must be configured (or there will be an unhelpful error).  Eg on POSIX,-       set LANG to something other than C.--       In a Microsoft Windows CMD window, non-ascii characters and colours are-       not supported.--       In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger-       add.--       Not  all of Ledger's journal file syntax is supported.  See file format-       differences.--       On large data files, hledger  is  slower  and  uses  more  memory  than-       Ledger.--TROUBLESHOOTING-       Here  are  some  issues  you  might encounter when you run hledger (and-       remember you can also seek help from the IRC channel, mail list or  bug-       tracker):--       Successfully installed, but "No command 'hledger' found"-       stack and cabal install binaries into a special directory, which should-       be added to your PATH environment variable.  Eg on  unix-like  systems,-       that is ~/.local/bin and ~/.cabal/bin respectively.--       I set a custom LEDGER_FILE, but hledger is still using the default file-       LEDGER_FILE should be a real environment variable,  not  just  a  shell-       variable.   The command env | grep LEDGER_FILE should show it.  You may-       need to use export.  Here's an explanation.--       "Illegal byte sequence" or "Invalid or  incomplete  multibyte  or  wide-       character" errors-       In order to handle non-ascii letters and symbols (like ), hledger needs-       an appropriate locale.  This is usually configured system-wide; you can-       also configure it temporarily.  The locale may need to be one that sup--       ports UTF-8, if you built hledger with GHC < 7.2 (or  possibly  always,-       I'm not sure yet).--       Here's  an  example  of  setting  the  locale  temporarily,  on  ubuntu-       gnu/linux:--              $ file my.journal-              my.journal: UTF-8 Unicode text                 # <- the file is UTF8-encoded-              $ locale -a-              C-              en_US.utf8                             # <- a UTF8-aware locale is available-              POSIX-              $ LANG=en_US.utf8 hledger -f my.journal print   # <- use it for this command--       Here's one way to set it permanently, there are probably better ways:--              $ echo "export LANG=en_US.UTF-8" >>~/.bash_profile-              $ bash --login--       If we preferred to use eg fr_FR.utf8, we might  have  to  install  that-       first:--              $ apt-get install language-pack-fr-              $ locale -a-              C-              en_US.utf8-              fr_BE.utf8-              fr_CA.utf8-              fr_CH.utf8-              fr_FR.utf8-              fr_LU.utf8-              POSIX-              $ LANG=fr_FR.utf8 hledger -f my.journal print--       Note some platforms allow variant locale spellings, but not all (ubuntu-       accepts fr_FR.UTF8, mac osx requires exactly fr_FR.UTF-8).----REPORTING BUGS-       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger 1.4                     September 2017                      hledger(1)
− doc/other/hledger-api.1
@@ -1,122 +0,0 @@--.TH "hledger\-api" "1" "September 2017" "hledger\-api 1.4" "hledger User Manuals"----.SH NAME-.PP-hledger\-api \- web API server for the hledger accounting tool-.SH SYNOPSIS-.PP-\f[C]hledger\-api\ [OPTIONS]\f[]-.PD 0-.P-.PD-\f[C]hledger\ api\ \-\-\ [OPTIONS]\f[]-.SH DESCRIPTION-.PP-hledger is a cross\-platform program for tracking money, time, or any-other commodity, using double\-entry accounting and a simple, editable-file format.-hledger is inspired by and largely compatible with ledger(1).-.PP-hledger\-api is a simple web API server, intended to support-client\-side web apps operating on hledger data.-It comes with a series of simple client\-side app examples, which drive-its evolution.-.PP-Like hledger, it reads data from one or more files in hledger journal,-timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-For more about this see hledger(1), hledger_journal(5) etc.-.PP-The server listens on IP address 127.0.0.1, accessible only to local-requests, by default.-You can change this with \f[C]\-\-host\f[], eg-\f[C]\-\-host\ 0.0.0.0\f[] to listen on all addresses.-Note there is no other access control, so you will need to hide-hledger\-api behind an authenticating proxy if you want to restrict-access.-You can change the TCP port (default: 8001) with \f[C]\-p\ PORT\f[].-.PP-If invoked as \f[C]hledger\-api\ \-\-swagger\f[], instead of starting a-server the API docs will be printed in Swagger 2.0 format.-.SH OPTIONS-.PP-Note: if invoking hledger\-api as a hledger subcommand, write-\f[C]\-\-\f[] before options as shown above.-.TP-.B \f[C]\-f\ \-\-file=FILE\f[]-use a different input file.-For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or-\f[C]$HOME/.hledger.journal\f[])-.RS-.RE-.TP-.B \f[C]\-d\ \-\-static\-dir=DIR\f[]-serve files from a different directory (default: \f[C]\&.\f[])-.RS-.RE-.TP-.B \f[C]\-\-host=IPADDR\f[]-listen on this IP address (default: 127.0.0.1)-.RS-.RE-.TP-.B \f[C]\-p\ \-\-port=PORT\f[]-listen on this TCP port (default: 8001)-.RS-.RE-.TP-.B \f[C]\-\-swagger\f[]-print API docs in Swagger 2.0 format, and exit-.RS-.RE-.TP-.B \f[C]\-\-version\f[]-show version-.RS-.RE-.TP-.B \f[C]\-h\ \-\-help\f[]-show usage-.RS-.RE-.SH ENVIRONMENT-.PP-\f[B]LEDGER_FILE\f[] The journal file path when not specified with-\f[C]\-f\f[].-Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps-\f[C]C:/Users/USER/.hledger.journal\f[]).-.SH FILES-.PP-Reads data from one or more files in hledger journal, timeclock,-timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-.SH BUGS-.PP-The need to precede options with \f[C]\-\-\f[] when invoked from hledger-is awkward.---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/other/hledger-api.1.info
@@ -1,70 +0,0 @@-This is hledger-api.1.info, produced by makeinfo version 6.0 from stdin.---File: hledger-api.1.info,  Node: Top,  Next: OPTIONS,  Up: (dir)--hledger-api(1) hledger-api 1.4-******************************--hledger-api is a simple web API server, intended to support client-side-web apps operating on hledger data.  It comes with a series of simple-client-side app examples, which drive its evolution.--   Like hledger, it reads data from one or more files in hledger-journal, timeclock, timedot, or CSV format specified with '-f', or-'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps-'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),-hledger_journal(5) etc.--   The server listens on IP address 127.0.0.1, accessible only to local-requests, by default.  You can change this with '--host', eg '--host-0.0.0.0' to listen on all addresses.  Note there is no other access-control, so you will need to hide hledger-api behind an authenticating-proxy if you want to restrict access.  You can change the TCP port-(default: 8001) with '-p PORT'.--   If invoked as 'hledger-api --swagger', instead of starting a server-the API docs will be printed in Swagger 2.0 format.-* Menu:--* OPTIONS::---File: hledger-api.1.info,  Node: OPTIONS,  Prev: Top,  Up: Top--1 OPTIONS-*********--Note: if invoking hledger-api as a hledger subcommand, write '--' before-options as shown above.--'-f --file=FILE'--     use a different input file.  For stdin, use - (default:-     '$LEDGER_FILE' or '$HOME/.hledger.journal')-'-d --static-dir=DIR'--     serve files from a different directory (default: '.')-'--host=IPADDR'--     listen on this IP address (default: 127.0.0.1)-'-p --port=PORT'--     listen on this TCP port (default: 8001)-'--swagger'--     print API docs in Swagger 2.0 format, and exit-'--version'--     show version-'-h --help'--     show usage---Tag Table:-Node: Top74-Node: OPTIONS1220-Ref: #options1307--End Tag Table
− doc/other/hledger-api.1.txt
@@ -1,105 +0,0 @@--hledger-api(1)               hledger User Manuals               hledger-api(1)----NAME-       hledger-api - web API server for the hledger accounting tool--SYNOPSIS-       hledger-api [OPTIONS]-       hledger api -- [OPTIONS]--DESCRIPTION-       hledger  is  a  cross-platform program for tracking money, time, or any-       other commodity, using double-entry accounting and a  simple,  editable-       file  format.   hledger  is  inspired  by  and  largely compatible with-       ledger(1).--       hledger-api is a simple web API server, intended to support client-side-       web  apps  operating on hledger data.  It comes with a series of simple-       client-side app examples, which drive its evolution.--       Like hledger, it reads data from one or more files in hledger  journal,-       timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,-       or       $HOME/.hledger.journal       (on       windows,        perhaps-       C:/Users/USER/.hledger.journal).   For  more about this see hledger(1),-       hledger_journal(5) etc.--       The server listens on IP address 127.0.0.1, accessible  only  to  local-       requests,   by   default.    You   can  change  this  with  --host,  eg-       --host 0.0.0.0 to listen on all addresses.   Note  there  is  no  other-       access  control, so you will need to hide hledger-api behind an authen--       ticating proxy if you want to restrict access.  You can change the  TCP-       port (default: 8001) with -p PORT.--       If  invoked  as hledger-api --swagger, instead of starting a server the-       API docs will be printed in Swagger 2.0 format.--OPTIONS-       Note: if invoking hledger-api as a hledger subcommand, write --  before-       options as shown above.--       -f --file=FILE-              use  a  different  input  file.   For  stdin,  use  -  (default:-              $LEDGER_FILE or $HOME/.hledger.journal)--       -d --static-dir=DIR-              serve files from a different directory (default: .)--       --host=IPADDR-              listen on this IP address (default: 127.0.0.1)--       -p --port=PORT-              listen on this TCP port (default: 8001)--       --swagger-              print API docs in Swagger 2.0 format, and exit--       --version-              show version--       -h --help-              show usage--ENVIRONMENT-       LEDGER_FILE The journal file path when not specified with -f.  Default:-       ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour--       nal).--FILES-       Reads data from one or more files in hledger journal, timeclock,  time--       dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or-       $HOME/.hledger.journal          (on          windows,           perhaps-       C:/Users/USER/.hledger.journal).--BUGS-       The  need  to precede options with -- when invoked from hledger is awk--       ward.----REPORTING BUGS-       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger-api 1.4                 September 2017                  hledger-api(1)
− doc/other/hledger-ui.1
@@ -1,470 +0,0 @@--.TH "hledger\-ui" "1" "September 2017" "hledger\-ui 1.4" "hledger User Manuals"----.SH NAME-.PP-hledger\-ui \- curses\-style interface for the hledger accounting tool-.SH SYNOPSIS-.PP-\f[C]hledger\-ui\ [OPTIONS]\ [QUERYARGS]\f[]-.PD 0-.P-.PD-\f[C]hledger\ ui\ \-\-\ [OPTIONS]\ [QUERYARGS]\f[]-.SH DESCRIPTION-.PP-hledger is a cross\-platform program for tracking money, time, or any-other commodity, using double\-entry accounting and a simple, editable-file format.-hledger is inspired by and largely compatible with ledger(1).-.PP-hledger\-ui is hledger\[aq]s curses\-style interface, providing an-efficient full\-window text UI for viewing accounts and transactions,-and some limited data entry capability.-It is easier than hledger\[aq]s command\-line interface, and sometimes-quicker and more convenient than the web interface.-.PP-Like hledger, it reads data from one or more files in hledger journal,-timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-For more about this see hledger(1), hledger_journal(5) etc.-.SH OPTIONS-.PP-Note: if invoking hledger\-ui as a hledger subcommand, write-\f[C]\-\-\f[] before options as shown above.-.PP-Any QUERYARGS are interpreted as a hledger search query which filters-the data.-.TP-.B \f[C]\-\-watch\f[]-watch for data and date changes and reload automatically-.RS-.RE-.TP-.B \f[C]\-\-theme=default|terminal|greenterm\f[]-use this custom display theme-.RS-.RE-.TP-.B \f[C]\-\-register=ACCTREGEX\f[]-start in the (first) matched account\[aq]s register screen-.RS-.RE-.TP-.B \f[C]\-\-change\f[]-show period balances (changes) at startup instead of historical balances-.RS-.RE-.TP-.B \f[C]\-\-flat\f[]-show full account names, unindented-.RS-.RE-.PP-hledger input options:-.TP-.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]-use a different input file.-For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or-\f[C]$HOME/.hledger.journal\f[])-.RS-.RE-.TP-.B \f[C]\-\-rules\-file=RULESFILE\f[]-Conversion rules file to use when reading CSV (default: FILE.rules)-.RS-.RE-.TP-.B \f[C]\-\-alias=OLD=NEW\f[]-rename accounts named OLD to NEW-.RS-.RE-.TP-.B \f[C]\-\-anon\f[]-anonymize accounts and payees-.RS-.RE-.TP-.B \f[C]\-\-pivot\ FIELDNAME\f[]-use some other field or tag for the account name-.RS-.RE-.TP-.B \f[C]\-I\ \-\-ignore\-assertions\f[]-ignore any failing balance assertions-.RS-.RE-.PP-hledger reporting options:-.TP-.B \f[C]\-b\ \-\-begin=DATE\f[]-include postings/txns on or after this date-.RS-.RE-.TP-.B \f[C]\-e\ \-\-end=DATE\f[]-include postings/txns before this date-.RS-.RE-.TP-.B \f[C]\-D\ \-\-daily\f[]-multiperiod/multicolumn report by day-.RS-.RE-.TP-.B \f[C]\-W\ \-\-weekly\f[]-multiperiod/multicolumn report by week-.RS-.RE-.TP-.B \f[C]\-M\ \-\-monthly\f[]-multiperiod/multicolumn report by month-.RS-.RE-.TP-.B \f[C]\-Q\ \-\-quarterly\f[]-multiperiod/multicolumn report by quarter-.RS-.RE-.TP-.B \f[C]\-Y\ \-\-yearly\f[]-multiperiod/multicolumn report by year-.RS-.RE-.TP-.B \f[C]\-p\ \-\-period=PERIODEXP\f[]-set start date, end date, and/or reporting interval all at once-(overrides the flags above)-.RS-.RE-.TP-.B \f[C]\-\-date2\f[]-match the secondary date instead (see command help for other effects)-.RS-.RE-.TP-.B \f[C]\-U\ \-\-unmarked\f[]-include only unmarked postings/txns (can combine with \-P or \-C)-.RS-.RE-.TP-.B \f[C]\-P\ \-\-pending\f[]-include only pending postings/txns-.RS-.RE-.TP-.B \f[C]\-C\ \-\-cleared\f[]-include only cleared postings/txns-.RS-.RE-.TP-.B \f[C]\-R\ \-\-real\f[]-include only non\-virtual postings-.RS-.RE-.TP-.B \f[C]\-NUM\ \-\-depth=NUM\f[]-hide/aggregate accounts or postings more than NUM levels deep-.RS-.RE-.TP-.B \f[C]\-E\ \-\-empty\f[]-show items with zero amount, normally hidden-.RS-.RE-.TP-.B \f[C]\-B\ \-\-cost\f[]-convert amounts to their cost at transaction time (using the transaction-price, if any)-.RS-.RE-.TP-.B \f[C]\-V\ \-\-value\f[]-convert amounts to their market value on the report end date (using the-most recent applicable market price, if any)-.RS-.RE-.PP-When a reporting option appears more than once in the command line, the-last one takes precedence.-.PP-Some reporting options can also be written as query arguments.-.PP-hledger help options:-.TP-.B \f[C]\-h\ \-\-help\f[]-show general usage (or after COMMAND, command usage)-.RS-.RE-.TP-.B \f[C]\-\-version\f[]-show version-.RS-.RE-.TP-.B \f[C]\-\-debug[=N]\f[]-show debug output (levels 1\-9, default: 1)-.RS-.RE-.PP-A \@FILE argument will be expanded to the contents of FILE, which should-contain one command line option/argument per line.-(To prevent this, insert a \f[C]\-\-\f[] argument before.)-.SH KEYS-.PP-\f[C]?\f[] shows a help dialog listing all keys.-(Some of these also appear in the quick help at the bottom of each-screen.) Press \f[C]?\f[] again (or \f[C]ESCAPE\f[], or \f[C]LEFT\f[])-to close it.-The following keys work on most screens:-.PP-The cursor keys navigate: \f[C]right\f[] (or \f[C]enter\f[]) goes-deeper, \f[C]left\f[] returns to the previous screen,-\f[C]up\f[]/\f[C]down\f[]/\f[C]page\ up\f[]/\f[C]page\ down\f[]/\f[C]home\f[]/\f[C]end\f[]-move up and down through lists.-Vi\-style (\f[C]h\f[]/\f[C]j\f[]/\f[C]k\f[]/\f[C]l\f[]) and Emacs\-style-(\f[C]CTRL\-p\f[]/\f[C]CTRL\-n\f[]/\f[C]CTRL\-f\f[]/\f[C]CTRL\-b\f[])-movement keys are also supported.-A tip: movement speed is limited by your keyboard repeat rate, to move-faster you may want to adjust it.-(If you\[aq]re on a mac, the Karabiner app is one way to do that.)-.PP-With shift pressed, the cursor keys adjust the report period, limiting-the transactions to be shown (by default, all are shown).-\f[C]shift\-down/up\f[] steps downward and upward through these standard-report period durations: year, quarter, month, week, day.-Then, \f[C]shift\-left/right\f[] moves to the previous/next period.-\f[C]t\f[] sets the report period to today.-With the \f[C]\-\-watch\f[] option, when viewing a "current" period (the-current day, week, month, quarter, or year), the period will move-automatically to track the current date.-To set a non\-standard period, you can use \f[C]/\f[] and a-\f[C]date:\f[] query.-.PP-\f[C]/\f[] lets you set a general filter query limiting the data shown,-using the same query terms as in hledger and hledger\-web.-While editing the query, you can use CTRL\-a/e/d/k, BS, cursor keys;-press \f[C]ENTER\f[] to set it, or \f[C]ESCAPE\f[]to cancel.-There are also keys for quickly adjusting some common filters like-account depth and transaction status (see below).-\f[C]BACKSPACE\f[] or \f[C]DELETE\f[] removes all filters, showing all-transactions.-.PP-\f[C]ESCAPE\f[] removes all filters and jumps back to the top screen.-Or, it cancels a minibuffer edit or help dialog in progress.-.PP-\f[C]CTRL\-l\f[] redraws the screen and centers the selection if-possible (selections near the top won\[aq]t be centered, since we-don\[aq]t scroll above the top).-.PP-\f[C]g\f[] reloads from the data file(s) and updates the current screen-and any previous screens.-(With large files, this could cause a noticeable pause.)-.PP-\f[C]I\f[] toggles balance assertion checking.-Disabling balance assertions temporarily can be useful for-troubleshooting.-.PP-\f[C]a\f[] runs command\-line hledger\[aq]s add command, and reloads the-updated file.-This allows some basic data entry.-.PP-\f[C]E\f[] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default-(\f[C]emacsclient\ \-a\ ""\ \-nw\f[]) on the journal file.-With some editors (emacs, vi), the cursor will be positioned at the-current transaction when invoked from the register and transaction-screens, and at the error location (if possible) when invoked from the-error screen.-.PP-\f[C]q\f[] quits the application.-.PP-Additional screen\-specific keys are described below.-.SH SCREENS-.SS Accounts screen-.PP-This is normally the first screen displayed.-It lists accounts and their balances, like hledger\[aq]s balance-command.-By default, it shows all accounts and their latest ending balances-(including the balances of subaccounts).-if you specify a query on the command line, it shows just the matched-accounts and the balances from matched transactions.-.PP-Account names are normally indented to show the hierarchy (tree mode).-To see less detail, set a depth limit by pressing a number key,-\f[C]1\f[] to \f[C]9\f[].-\f[C]0\f[] shows even less detail, collapsing all accounts to a single-total.-\f[C]\-\f[] and \f[C]+\f[] (or \f[C]=\f[]) decrease and increase the-depth limit.-To remove the depth limit, set it higher than the maximum account depth,-or press \f[C]ESCAPE\f[].-.PP-\f[C]F\f[] toggles flat mode, in which accounts are shown as a flat-list, with their full names.-In this mode, account balances exclude subaccounts, except for accounts-at the depth limit (as with hledger\[aq]s balance command).-.PP-\f[C]H\f[] toggles between showing historical balances or period-balances.-Historical balances (the default) are ending balances at the end of the-report period, taking into account all transactions before that date-(filtered by the filter query if any), including transactions before the-start of the report period.-In other words, historical balances are what you would see on a bank-statement for that account (unless disturbed by a filter query).-Period balances ignore transactions before the report start date, so-they show the change in balance during the report period.-They are more useful eg when viewing a time log.-.PP-\f[C]U\f[] toggles filtering by unmarked status, including or excluding-unmarked postings in the balances.-Similarly, \f[C]P\f[] toggles pending postings, and \f[C]C\f[] toggles-cleared postings.-(By default, balances include all postings; if you activate one or two-status filters, only those postings are included; and if you activate-all three, the filter is removed.)-.PP-\f[C]R\f[] toggles real mode, in which virtual postings are ignored.-.PP-\f[C]Z\f[] toggles nonzero mode, in which only accounts with nonzero-balances are shown (hledger\-ui shows zero items by default, unlike-command\-line hledger).-.PP-Press \f[C]right\f[] or \f[C]enter\f[] to view an account\[aq]s-transactions register.-.SS Register screen-.PP-This screen shows the transactions affecting a particular account, like-a check register.-Each line represents one transaction and shows:-.IP \[bu] 2-the other account(s) involved, in abbreviated form.-(If there are both real and virtual postings, it shows only the accounts-affected by real postings.)-.IP \[bu] 2-the overall change to the current account\[aq]s balance; positive for an-inflow to this account, negative for an outflow.-.IP \[bu] 2-the running historical total or period total for the current account,-after the transaction.-This can be toggled with \f[C]H\f[].-Similar to the accounts screen, the historical total is affected by-transactions (filtered by the filter query) before the report start-date, while the period total is not.-If the historical total is not disturbed by a filter query, it will be-the running historical balance you would see on a bank register for the-current account.-.PP-If the accounts screen was in tree mode, the register screen will-include transactions from both the current account and its subaccounts.-If the accounts screen was in flat mode, and a non\-depth\-clipped-account was selected, the register screen will exclude transactions from-subaccounts.-In other words, the register always shows the transactions responsible-for the period balance shown on the accounts screen.-As on the accounts screen, this can be toggled with \f[C]F\f[].-.PP-\f[C]U\f[] toggles filtering by unmarked status, showing or hiding-unmarked transactions.-Similarly, \f[C]P\f[] toggles pending transactions, and \f[C]C\f[]-toggles cleared transactions.-(By default, transactions with all statuses are shown; if you activate-one or two status filters, only those transactions are shown; and if you-activate all three, the filter is removed.)q-.PP-\f[C]R\f[] toggles real mode, in which virtual postings are ignored.-.PP-\f[C]Z\f[] toggles nonzero mode, in which only transactions posting a-nonzero change are shown (hledger\-ui shows zero items by default,-unlike command\-line hledger).-.PP-Press \f[C]right\f[] (or \f[C]enter\f[]) to view the selected-transaction in detail.-.SS Transaction screen-.PP-This screen shows a single transaction, as a general journal entry,-similar to hledger\[aq]s print command and journal format-(hledger_journal(5)).-.PP-The transaction\[aq]s date(s) and any cleared flag, transaction code,-description, comments, along with all of its account postings are shown.-Simple transactions have two postings, but there can be more (or in-certain cases, fewer).-.PP-\f[C]up\f[] and \f[C]down\f[] will step through all transactions listed-in the previous account register screen.-In the title bar, the numbers in parentheses show your position within-that account register.-They will vary depending on which account register you came from-(remember most transactions appear in multiple account registers).-The #N number preceding them is the transaction\[aq]s position within-the complete unfiltered journal, which is a more stable id (at least-until the next reload).-.SS Error screen-.PP-This screen will appear if there is a problem, such as a parse error,-when you press g to reload.-Once you have fixed the problem, press g again to reload and resume-normal operation.-(Or, you can press escape to cancel the reload attempt.)-.SH ENVIRONMENT-.PP-\f[B]COLUMNS\f[] The screen width to use.-Default: the full terminal width.-.PP-\f[B]LEDGER_FILE\f[] The journal file path when not specified with-\f[C]\-f\f[].-Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps-\f[C]C:/Users/USER/.hledger.journal\f[]).-.SH FILES-.PP-Reads data from one or more files in hledger journal, timeclock,-timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-.SH BUGS-.PP-The need to precede options with \f[C]\-\-\f[] when invoked from hledger-is awkward.-.PP-\f[C]\-f\-\f[] doesn\[aq]t work (hledger\-ui can\[aq]t read from stdin).-.PP-\f[C]\-V\f[] affects only the accounts screen.-.PP-When you press \f[C]g\f[], the current and all previous screens are-regenerated, which may cause a noticeable pause with large files.-Also there is no visual indication that this is in progress.-.PP-\f[C]\-\-watch\f[] is not yet fully robust.-It works well for normal usage, but many file changes in a short time-(eg saving the file thousands of times with an editor macro) can cause-problems at least on OSX.-Symptoms include: unresponsive UI, periodic resetting of the cursor-position, momentary display of parse errors, high CPU usage eventually-subsiding, and possibly a small but persistent build\-up of CPU usage-until the program is restarted.---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/other/hledger-ui.1.info
@@ -1,383 +0,0 @@-This is hledger-ui.1.info, produced by makeinfo version 6.0 from stdin.---File: hledger-ui.1.info,  Node: Top,  Next: OPTIONS,  Up: (dir)--hledger-ui(1) hledger-ui 1.4-****************************--hledger-ui is hledger's curses-style interface, providing an efficient-full-window text UI for viewing accounts and transactions, and some-limited data entry capability.  It is easier than hledger's command-line-interface, and sometimes quicker and more convenient than the web-interface.--   Like hledger, it reads data from one or more files in hledger-journal, timeclock, timedot, or CSV format specified with '-f', or-'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps-'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),-hledger_journal(5) etc.-* Menu:--* OPTIONS::-* KEYS::-* SCREENS::---File: hledger-ui.1.info,  Node: OPTIONS,  Next: KEYS,  Prev: Top,  Up: Top--1 OPTIONS-*********--Note: if invoking hledger-ui as a hledger subcommand, write '--' before-options as shown above.--   Any QUERYARGS are interpreted as a hledger search query which filters-the data.--'--watch'--     watch for data and date changes and reload automatically-'--theme=default|terminal|greenterm'--     use this custom display theme-'--register=ACCTREGEX'--     start in the (first) matched account's register screen-'--change'--     show period balances (changes) at startup instead of historical-     balances-'--flat'--     show full account names, unindented--   hledger input options:--'-f FILE --file=FILE'--     use a different input file.  For stdin, use - (default:-     '$LEDGER_FILE' or '$HOME/.hledger.journal')-'--rules-file=RULESFILE'--     Conversion rules file to use when reading CSV (default: FILE.rules)-'--alias=OLD=NEW'--     rename accounts named OLD to NEW-'--anon'--     anonymize accounts and payees-'--pivot FIELDNAME'--     use some other field or tag for the account name-'-I --ignore-assertions'--     ignore any failing balance assertions--   hledger reporting options:--'-b --begin=DATE'--     include postings/txns on or after this date-'-e --end=DATE'--     include postings/txns before this date-'-D --daily'--     multiperiod/multicolumn report by day-'-W --weekly'--     multiperiod/multicolumn report by week-'-M --monthly'--     multiperiod/multicolumn report by month-'-Q --quarterly'--     multiperiod/multicolumn report by quarter-'-Y --yearly'--     multiperiod/multicolumn report by year-'-p --period=PERIODEXP'--     set start date, end date, and/or reporting interval all at once-     (overrides the flags above)-'--date2'--     match the secondary date instead (see command help for other-     effects)-'-U --unmarked'--     include only unmarked postings/txns (can combine with -P or -C)-'-P --pending'--     include only pending postings/txns-'-C --cleared'--     include only cleared postings/txns-'-R --real'--     include only non-virtual postings-'-NUM --depth=NUM'--     hide/aggregate accounts or postings more than NUM levels deep-'-E --empty'--     show items with zero amount, normally hidden-'-B --cost'--     convert amounts to their cost at transaction time (using the-     transaction price, if any)-'-V --value'--     convert amounts to their market value on the report end date (using-     the most recent applicable market price, if any)--   When a reporting option appears more than once in the command line,-the last one takes precedence.--   Some reporting options can also be written as query arguments.--   hledger help options:--'-h --help'--     show general usage (or after COMMAND, command usage)-'--version'--     show version-'--debug[=N]'--     show debug output (levels 1-9, default: 1)--   A @FILE argument will be expanded to the contents of FILE, which-should contain one command line option/argument per line.  (To prevent-this, insert a '--' argument before.)---File: hledger-ui.1.info,  Node: KEYS,  Next: SCREENS,  Prev: OPTIONS,  Up: Top--2 KEYS-******--'?' shows a help dialog listing all keys.  (Some of these also appear in-the quick help at the bottom of each screen.)  Press '?' again (or-'ESCAPE', or 'LEFT') to close it.  The following keys work on most-screens:--   The cursor keys navigate: 'right' (or 'enter') goes deeper, 'left'-returns to the previous screen, 'up'/'down'/'page up'/'page-down'/'home'/'end' move up and down through lists.  Vi-style-('h'/'j'/'k'/'l') and Emacs-style ('CTRL-p'/'CTRL-n'/'CTRL-f'/'CTRL-b')-movement keys are also supported.  A tip: movement speed is limited by-your keyboard repeat rate, to move faster you may want to adjust it.-(If you're on a mac, the Karabiner app is one way to do that.)--   With shift pressed, the cursor keys adjust the report period,-limiting the transactions to be shown (by default, all are shown).-'shift-down/up' steps downward and upward through these standard report-period durations: year, quarter, month, week, day.  Then,-'shift-left/right' moves to the previous/next period.  't' sets the-report period to today.  With the '--watch' option, when viewing a-"current" period (the current day, week, month, quarter, or year), the-period will move automatically to track the current date.  To set a-non-standard period, you can use '/' and a 'date:' query.--   '/' lets you set a general filter query limiting the data shown,-using the same query terms as in hledger and hledger-web.  While editing-the query, you can use CTRL-a/e/d/k, BS, cursor keys; press 'ENTER' to-set it, or 'ESCAPE'to cancel.  There are also keys for quickly adjusting-some common filters like account depth and transaction status (see-below).  'BACKSPACE' or 'DELETE' removes all filters, showing all-transactions.--   'ESCAPE' removes all filters and jumps back to the top screen.  Or,-it cancels a minibuffer edit or help dialog in progress.--   'CTRL-l' redraws the screen and centers the selection if possible-(selections near the top won't be centered, since we don't scroll above-the top).--   'g' reloads from the data file(s) and updates the current screen and-any previous screens.  (With large files, this could cause a noticeable-pause.)--   'I' toggles balance assertion checking.  Disabling balance assertions-temporarily can be useful for troubleshooting.--   'a' runs command-line hledger's add command, and reloads the updated-file.  This allows some basic data entry.--   'E' runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default ('emacsclient--a "" -nw') on the journal file.  With some editors (emacs, vi), the-cursor will be positioned at the current transaction when invoked from-the register and transaction screens, and at the error location (if-possible) when invoked from the error screen.--   'q' quits the application.--   Additional screen-specific keys are described below.---File: hledger-ui.1.info,  Node: SCREENS,  Prev: KEYS,  Up: Top--3 SCREENS-*********--* Menu:--* Accounts screen::-* Register screen::-* Transaction screen::-* Error screen::---File: hledger-ui.1.info,  Node: Accounts screen,  Next: Register screen,  Up: SCREENS--3.1 Accounts screen-===================--This is normally the first screen displayed.  It lists accounts and-their balances, like hledger's balance command.  By default, it shows-all accounts and their latest ending balances (including the balances of-subaccounts).  if you specify a query on the command line, it shows just-the matched accounts and the balances from matched transactions.--   Account names are normally indented to show the hierarchy (tree-mode).  To see less detail, set a depth limit by pressing a number key,-'1' to '9'.  '0' shows even less detail, collapsing all accounts to a-single total.  '-' and '+' (or '=') decrease and increase the depth-limit.  To remove the depth limit, set it higher than the maximum-account depth, or press 'ESCAPE'.--   'F' toggles flat mode, in which accounts are shown as a flat list,-with their full names.  In this mode, account balances exclude-subaccounts, except for accounts at the depth limit (as with hledger's-balance command).--   'H' toggles between showing historical balances or period balances.-Historical balances (the default) are ending balances at the end of the-report period, taking into account all transactions before that date-(filtered by the filter query if any), including transactions before the-start of the report period.  In other words, historical balances are-what you would see on a bank statement for that account (unless-disturbed by a filter query).  Period balances ignore transactions-before the report start date, so they show the change in balance during-the report period.  They are more useful eg when viewing a time log.--   'U' toggles filtering by unmarked status, including or excluding-unmarked postings in the balances.  Similarly, 'P' toggles pending-postings, and 'C' toggles cleared postings.  (By default, balances-include all postings; if you activate one or two status filters, only-those postings are included; and if you activate all three, the filter-is removed.)--   'R' toggles real mode, in which virtual postings are ignored.--   'Z' toggles nonzero mode, in which only accounts with nonzero-balances are shown (hledger-ui shows zero items by default, unlike-command-line hledger).--   Press 'right' or 'enter' to view an account's transactions register.---File: hledger-ui.1.info,  Node: Register screen,  Next: Transaction screen,  Prev: Accounts screen,  Up: SCREENS--3.2 Register screen-===================--This screen shows the transactions affecting a particular account, like-a check register.  Each line represents one transaction and shows:--   * the other account(s) involved, in abbreviated form.  (If there are-     both real and virtual postings, it shows only the accounts affected-     by real postings.)--   * the overall change to the current account's balance; positive for-     an inflow to this account, negative for an outflow.--   * the running historical total or period total for the current-     account, after the transaction.  This can be toggled with 'H'.-     Similar to the accounts screen, the historical total is affected by-     transactions (filtered by the filter query) before the report start-     date, while the period total is not.  If the historical total is-     not disturbed by a filter query, it will be the running historical-     balance you would see on a bank register for the current account.--   If the accounts screen was in tree mode, the register screen will-include transactions from both the current account and its subaccounts.-If the accounts screen was in flat mode, and a non-depth-clipped account-was selected, the register screen will exclude transactions from-subaccounts.  In other words, the register always shows the transactions-responsible for the period balance shown on the accounts screen.  As on-the accounts screen, this can be toggled with 'F'.--   'U' toggles filtering by unmarked status, showing or hiding unmarked-transactions.  Similarly, 'P' toggles pending transactions, and 'C'-toggles cleared transactions.  (By default, transactions with all-statuses are shown; if you activate one or two status filters, only-those transactions are shown; and if you activate all three, the filter-is removed.)q--   'R' toggles real mode, in which virtual postings are ignored.--   'Z' toggles nonzero mode, in which only transactions posting a-nonzero change are shown (hledger-ui shows zero items by default, unlike-command-line hledger).--   Press 'right' (or 'enter') to view the selected transaction in-detail.---File: hledger-ui.1.info,  Node: Transaction screen,  Next: Error screen,  Prev: Register screen,  Up: SCREENS--3.3 Transaction screen-======================--This screen shows a single transaction, as a general journal entry,-similar to hledger's print command and journal format-(hledger_journal(5)).--   The transaction's date(s) and any cleared flag, transaction code,-description, comments, along with all of its account postings are shown.-Simple transactions have two postings, but there can be more (or in-certain cases, fewer).--   'up' and 'down' will step through all transactions listed in the-previous account register screen.  In the title bar, the numbers in-parentheses show your position within that account register.  They will-vary depending on which account register you came from (remember most-transactions appear in multiple account registers).  The #N number-preceding them is the transaction's position within the complete-unfiltered journal, which is a more stable id (at least until the next-reload).---File: hledger-ui.1.info,  Node: Error screen,  Prev: Transaction screen,  Up: SCREENS--3.4 Error screen-================--This screen will appear if there is a problem, such as a parse error,-when you press g to reload.  Once you have fixed the problem, press g-again to reload and resume normal operation.  (Or, you can press escape-to cancel the reload attempt.)---Tag Table:-Node: Top73-Node: OPTIONS825-Ref: #options924-Node: KEYS3861-Ref: #keys3958-Node: SCREENS6754-Ref: #screens6841-Node: Accounts screen6931-Ref: #accounts-screen7061-Node: Register screen9291-Ref: #register-screen9448-Node: Transaction screen11522-Ref: #transaction-screen11682-Node: Error screen12552-Ref: #error-screen12676--End Tag Table
− doc/other/hledger-ui.1.txt
@@ -1,376 +0,0 @@--hledger-ui(1)                hledger User Manuals                hledger-ui(1)----NAME-       hledger-ui - curses-style interface for the hledger accounting tool--SYNOPSIS-       hledger-ui [OPTIONS] [QUERYARGS]-       hledger ui -- [OPTIONS] [QUERYARGS]--DESCRIPTION-       hledger  is  a  cross-platform program for tracking money, time, or any-       other commodity, using double-entry accounting and a  simple,  editable-       file  format.   hledger  is  inspired  by  and  largely compatible with-       ledger(1).--       hledger-ui is hledger's curses-style interface, providing an  efficient-       full-window  text  UI  for  viewing accounts and transactions, and some-       limited data entry  capability.   It  is  easier  than  hledger's  com--       mand-line interface, and sometimes quicker and more convenient than the-       web interface.--       Like hledger, it reads data from one or more files in hledger  journal,-       timeclock,  timedot,  or CSV format specified with -f, or $LEDGER_FILE,-       or       $HOME/.hledger.journal       (on       windows,        perhaps-       C:/Users/USER/.hledger.journal).   For  more about this see hledger(1),-       hledger_journal(5) etc.--OPTIONS-       Note: if invoking hledger-ui as a hledger subcommand, write  --  before-       options as shown above.--       Any  QUERYARGS  are interpreted as a hledger search query which filters-       the data.--       --watch-              watch for data and date changes and reload automatically--       --theme=default|terminal|greenterm-              use this custom display theme--       --register=ACCTREGEX-              start in the (first) matched account's register screen--       --change-              show period balances (changes) at startup instead of  historical-              balances--       --flat show full account names, unindented--       hledger input options:--       -f FILE --file=FILE-              use  a  different  input  file.   For  stdin,  use  -  (default:-              $LEDGER_FILE or $HOME/.hledger.journal)--       --rules-file=RULESFILE-              Conversion  rules  file  to  use  when  reading  CSV   (default:-              FILE.rules)--       --alias=OLD=NEW-              rename accounts named OLD to NEW--       --anon anonymize accounts and payees--       --pivot FIELDNAME-              use some other field or tag for the account name--       -I --ignore-assertions-              ignore any failing balance assertions--       hledger reporting options:--       -b --begin=DATE-              include postings/txns on or after this date--       -e --end=DATE-              include postings/txns before this date--       -D --daily-              multiperiod/multicolumn report by day--       -W --weekly-              multiperiod/multicolumn report by week--       -M --monthly-              multiperiod/multicolumn report by month--       -Q --quarterly-              multiperiod/multicolumn report by quarter--       -Y --yearly-              multiperiod/multicolumn report by year--       -p --period=PERIODEXP-              set  start date, end date, and/or reporting interval all at once-              (overrides the flags above)--       --date2-              match the secondary date instead (see  command  help  for  other-              effects)--       -U --unmarked-              include only unmarked postings/txns (can combine with -P or -C)--       -P --pending-              include only pending postings/txns--       -C --cleared-              include only cleared postings/txns--       -R --real-              include only non-virtual postings--       -NUM --depth=NUM-              hide/aggregate accounts or postings more than NUM levels deep--       -E --empty-              show items with zero amount, normally hidden--       -B --cost-              convert  amounts  to  their  cost at transaction time (using the-              transaction price, if any)--       -V --value-              convert amounts to their market value on  the  report  end  date-              (using the most recent applicable market price, if any)--       When a reporting option appears more than once in the command line, the-       last one takes precedence.--       Some reporting options can also be written as query arguments.--       hledger help options:--       -h --help-              show general usage (or after COMMAND, command usage)--       --version-              show version--       --debug[=N]-              show debug output (levels 1-9, default: 1)--       A @FILE argument will be expanded to the contents of FILE, which should-       contain  one  command line option/argument per line.  (To prevent this,-       insert a -- argument before.)--KEYS-       ? shows a help dialog listing all keys.  (Some of these also appear  in-       the quick help at the bottom of each screen.) Press ? again (or ESCAPE,-       or LEFT) to close it.  The following keys work on most screens:--       The cursor keys navigate: right (or enter) goes deeper, left returns to-       the  previous  screen,  up/down/page up/page down/home/end  move up and-       down   through   lists.     Vi-style    (h/j/k/l)    and    Emacs-style-       (CTRL-p/CTRL-n/CTRL-f/CTRL-b) movement keys are also supported.  A tip:-       movement speed is limited by your keyboard repeat rate, to move  faster-       you  may  want to adjust it.  (If you're on a mac, the Karabiner app is-       one way to do that.)--       With shift pressed, the cursor keys adjust the report period,  limiting-       the   transactions   to   be   shown   (by  default,  all  are  shown).-       shift-down/up steps downward and upward through these  standard  report-       period   durations:   year,   quarter,   month,   week,   day.    Then,-       shift-left/right moves to the previous/next period.  t sets the  report-       period  to  today.   With  the --watch option, when viewing a "current"-       period (the current day, week, month, quarter,  or  year),  the  period-       will  move automatically to track the current date.  To set a non-stan--       dard period, you can use / and a date: query.--       / lets you set a general filter query limiting the  data  shown,  using-       the  same query terms as in hledger and hledger-web.  While editing the-       query, you can use CTRL-a/e/d/k, BS, cursor keys; press  ENTER  to  set-       it, or ESCAPEto cancel.  There are also keys for quickly adjusting some-       common filters like account depth and transaction status  (see  below).-       BACKSPACE or DELETE removes all filters, showing all transactions.--       ESCAPE  removes  all  filters and jumps back to the top screen.  Or, it-       cancels a minibuffer edit or help dialog in progress.--       CTRL-l redraws the screen and centers the selection if possible (selec--       tions  near  the top won't be centered, since we don't scroll above the-       top).--       g reloads from the data file(s) and updates the current screen and  any-       previous  screens.   (With  large  files, this could cause a noticeable-       pause.)--       I toggles balance assertion  checking.   Disabling  balance  assertions-       temporarily can be useful for troubleshooting.--       a  runs  command-line  hledger's  add  command, and reloads the updated-       file.  This allows some basic data entry.--       E  runs  $HLEDGER_UI_EDITOR,  or   $EDITOR,   or   a   default   (emac--       sclient -a "" -nw) on the journal file.  With some editors (emacs, vi),-       the cursor will be positioned at the current transaction  when  invoked-       from  the  register  and transaction screens, and at the error location-       (if possible) when invoked from the error screen.--       q quits the application.--       Additional screen-specific keys are described below.--SCREENS-   Accounts screen-       This is normally the first screen displayed.   It  lists  accounts  and-       their  balances,  like hledger's balance command.  By default, it shows-       all accounts and their latest ending balances (including  the  balances-       of  subaccounts).  if you specify a query on the command line, it shows-       just the matched accounts and the balances from matched transactions.--       Account names are normally indented to show the hierarchy (tree  mode).-       To see less detail, set a depth limit by pressing a number key, 1 to 9.-       0 shows even less detail, collapsing all accounts to a single total.  --       and  +  (or  =)  decrease  and increase the depth limit.  To remove the-       depth limit, set it higher than the maximum  account  depth,  or  press-       ESCAPE.--       F  toggles  flat mode, in which accounts are shown as a flat list, with-       their full names.  In this mode, account balances exclude  subaccounts,-       except  for accounts at the depth limit (as with hledger's balance com--       mand).--       H toggles between showing historical balances or period balances.  His--       torical  balances  (the  default) are ending balances at the end of the-       report period, taking into account all transactions  before  that  date-       (filtered  by  the  filter query if any), including transactions before-       the start of the report period.  In other  words,  historical  balances-       are  what  you  would  see on a bank statement for that account (unless-       disturbed by a filter  query).   Period  balances  ignore  transactions-       before the report start date, so they show the change in balance during-       the report period.  They are more useful eg when viewing a time log.--       U toggles filtering by unmarked status, including or excluding unmarked-       postings in the balances.  Similarly, P toggles pending postings, and C-       toggles cleared postings.  (By default, balances include all  postings;-       if  you  activate  one  or  two status filters, only those postings are-       included; and if you activate all three, the filter is removed.)--       R toggles real mode, in which virtual postings are ignored.--       Z toggles nonzero mode, in which only accounts  with  nonzero  balances-       are  shown (hledger-ui shows zero items by default, unlike command-line-       hledger).--       Press right or enter to view an account's transactions register.--   Register screen-       This screen shows the transactions affecting a particular account, like-       a check register.  Each line represents one transaction and shows:--       o the  other  account(s)  involved, in abbreviated form.  (If there are-         both real and virtual postings, it shows only the  accounts  affected-         by real postings.)--       o the  overall change to the current account's balance; positive for an-         inflow to this account, negative for an outflow.--       o the running historical total or period total for the current account,-         after  the  transaction.  This can be toggled with H.  Similar to the-         accounts screen, the historical total  is  affected  by  transactions-         (filtered  by  the  filter query) before the report start date, while-         the period total is not.  If the historical total is not disturbed by-         a  filter  query, it will be the running historical balance you would-         see on a bank register for the current account.--       If the accounts screen was in  tree  mode,  the  register  screen  will-       include transactions from both the current account and its subaccounts.-       If the accounts screen  was  in  flat  mode,  and  a  non-depth-clipped-       account  was  selected,  the  register screen will exclude transactions-       from subaccounts.  In other words, the register always shows the trans--       actions  responsible  for  the  period  balance  shown  on the accounts-       screen.  As on the accounts screen, this can be toggled with F.--       U toggles filtering by unmarked  status,  showing  or  hiding  unmarked-       transactions.  Similarly, P toggles pending transactions, and C toggles-       cleared transactions.  (By default, transactions with all statuses  are-       shown;  if  you activate one or two status filters, only those transac--       tions are  shown;  and  if  you  activate  all  three,  the  filter  is-       removed.)q--       R toggles real mode, in which virtual postings are ignored.--       Z  toggles  nonzero  mode, in which only transactions posting a nonzero-       change are shown (hledger-ui shows zero items by default,  unlike  com--       mand-line hledger).--       Press right (or enter) to view the selected transaction in detail.--   Transaction screen-       This  screen  shows  a  single transaction, as a general journal entry,-       similar to hledger's print command and  journal  format  (hledger_jour--       nal(5)).--       The  transaction's  date(s)  and  any  cleared  flag, transaction code,-       description, comments, along with  all  of  its  account  postings  are-       shown.   Simple  transactions  have two postings, but there can be more-       (or in certain cases, fewer).--       up and down will step through all transactions listed in  the  previous-       account  register screen.  In the title bar, the numbers in parentheses-       show your position  within  that  account  register.   They  will  vary-       depending on which account register you came from (remember most trans--       actions appear in multiple account registers).  The #N number preceding-       them is the transaction's position within the complete unfiltered jour--       nal, which is a more stable id (at least until the next reload).--   Error screen-       This screen will appear if there is a problem, such as a  parse  error,-       when  you  press g to reload.  Once you have fixed the problem, press g-       again to reload and resume normal operation.  (Or, you can press escape-       to cancel the reload attempt.)--ENVIRONMENT-       COLUMNS The screen width to use.  Default: the full terminal width.--       LEDGER_FILE The journal file path when not specified with -f.  Default:-       ~/.hledger.journal (on  windows,  perhaps  C:/Users/USER/.hledger.jour--       nal).--FILES-       Reads  data from one or more files in hledger journal, timeclock, time--       dot,  or  CSV  format  specified   with   -f,   or   $LEDGER_FILE,   or-       $HOME/.hledger.journal           (on          windows,          perhaps-       C:/Users/USER/.hledger.journal).--BUGS-       The need to precede options with -- when invoked from hledger  is  awk--       ward.--       -f- doesn't work (hledger-ui can't read from stdin).--       -V affects only the accounts screen.--       When you press g, the current and all previous screens are regenerated,-       which may cause a noticeable pause with large files.  Also there is  no-       visual indication that this is in progress.--       --watch  is  not yet fully robust.  It works well for normal usage, but-       many file changes in a short time (eg  saving  the  file  thousands  of-       times  with an editor macro) can cause problems at least on OSX.  Symp--       toms include: unresponsive UI, periodic resetting of the  cursor  posi--       tion, momentary display of parse errors, high CPU usage eventually sub--       siding, and possibly a small but persistent build-up of CPU usage until-       the program is restarted.----REPORTING BUGS-       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger-ui 1.4                  September 2017                   hledger-ui(1)
− doc/other/hledger-web.1
@@ -1,317 +0,0 @@--.TH "hledger\-web" "1" "September 2017" "hledger\-web 1.4" "hledger User Manuals"----.SH NAME-.PP-hledger\-web \- web interface for the hledger accounting tool-.SH SYNOPSIS-.PP-\f[C]hledger\-web\ [OPTIONS]\f[]-.PD 0-.P-.PD-\f[C]hledger\ web\ \-\-\ [OPTIONS]\f[]-.SH DESCRIPTION-.PP-hledger is a cross\-platform program for tracking money, time, or any-other commodity, using double\-entry accounting and a simple, editable-file format.-hledger is inspired by and largely compatible with ledger(1).-.PP-hledger\-web is hledger\[aq]s web interface.-It starts a simple web application for browsing and adding transactions,-and optionally opens it in a web browser window if possible.-It provides a more user\-friendly UI than the hledger CLI or hledger\-ui-interface, showing more at once (accounts, the current account register,-balance charts) and allowing history\-aware data entry, interactive-searching, and bookmarking.-.PP-hledger\-web also lets you share a ledger with multiple users, or even-the public web.-There is no access control, so if you need that you should put it behind-a suitable web proxy.-As a small protection against data loss when running an unprotected-instance, it writes a numbered backup of the main journal file (only ?)-on every edit.-.PP-Like hledger, it reads data from one or more files in hledger journal,-timeclock, timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-For more about this see hledger(1), hledger_journal(5) etc.-.PP-By default, hledger\-web starts the web app in "transient mode" and also-opens it in your default web browser if possible.-In this mode the web app will keep running for as long as you have it-open in a browser window, and will exit after two minutes of inactivity-(no requests and no browser windows viewing it).-With \f[C]\-\-serve\f[], it just runs the web app without exiting, and-logs requests to the console.-.PP-By default the server listens on IP address 127.0.0.1, accessible only-to local requests.-You can use \f[C]\-\-host\f[] to change this, eg-\f[C]\-\-host\ 0.0.0.0\f[] to listen on all configured addresses.-.PP-Similarly, use \f[C]\-\-port\f[] to set a TCP port other than 5000, eg-if you are running multiple hledger\-web instances.-.PP-You can use \f[C]\-\-base\-url\f[] to change the protocol, hostname,-port and path that appear in hyperlinks, useful eg for integrating-hledger\-web within a larger website.-The default is \f[C]http://HOST:PORT/\f[] using the server\[aq]s-configured host address and TCP port (or \f[C]http://HOST\f[] if PORT is-80).-.PP-With \f[C]\-\-file\-url\f[] you can set a different base url for static-files, eg for better caching or cookie\-less serving on high performance-websites.-.PP-Note there is no built\-in access control (aside from listening on-127.0.0.1 by default).-So you will need to hide hledger\-web behind an authenticating proxy-(such as apache or nginx) if you want to restrict who can see and add-entries to your journal.-.PP-Command\-line options and arguments may be used to set an initial filter-on the data.-This is not shown in the web UI, but it will be applied in addition to-any search query entered there.-.PP-With journal and timeclock files (but not CSV files, currently) the web-app detects changes made by other means and will show the new data on-the next request.-If a change makes the file unparseable, hledger\-web will show an error-until the file has been fixed.-.SH OPTIONS-.PP-Note: if invoking hledger\-web as a hledger subcommand, write-\f[C]\-\-\f[] before options as shown above.-.TP-.B \f[C]\-\-serve\f[]-serve and log requests, don\[aq]t browse or auto\-exit-.RS-.RE-.TP-.B \f[C]\-\-host=IPADDR\f[]-listen on this IP address (default: 127.0.0.1)-.RS-.RE-.TP-.B \f[C]\-\-port=PORT\f[]-listen on this TCP port (default: 5000)-.RS-.RE-.TP-.B \f[C]\-\-base\-url=URL\f[]-set the base url (default: http://IPADDR:PORT).-You would change this when sharing over the network, or integrating-within a larger website.-.RS-.RE-.TP-.B \f[C]\-\-file\-url=URL\f[]-set the static files url (default: BASEURL/static).-hledger\-web normally serves static files itself, but if you wanted to-serve them from another server for efficiency, you would set the url-with this.-.RS-.RE-.PP-hledger input options:-.TP-.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]-use a different input file.-For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or-\f[C]$HOME/.hledger.journal\f[])-.RS-.RE-.TP-.B \f[C]\-\-rules\-file=RULESFILE\f[]-Conversion rules file to use when reading CSV (default: FILE.rules)-.RS-.RE-.TP-.B \f[C]\-\-alias=OLD=NEW\f[]-rename accounts named OLD to NEW-.RS-.RE-.TP-.B \f[C]\-\-anon\f[]-anonymize accounts and payees-.RS-.RE-.TP-.B \f[C]\-\-pivot\ FIELDNAME\f[]-use some other field or tag for the account name-.RS-.RE-.TP-.B \f[C]\-I\ \-\-ignore\-assertions\f[]-ignore any failing balance assertions-.RS-.RE-.PP-hledger reporting options:-.TP-.B \f[C]\-b\ \-\-begin=DATE\f[]-include postings/txns on or after this date-.RS-.RE-.TP-.B \f[C]\-e\ \-\-end=DATE\f[]-include postings/txns before this date-.RS-.RE-.TP-.B \f[C]\-D\ \-\-daily\f[]-multiperiod/multicolumn report by day-.RS-.RE-.TP-.B \f[C]\-W\ \-\-weekly\f[]-multiperiod/multicolumn report by week-.RS-.RE-.TP-.B \f[C]\-M\ \-\-monthly\f[]-multiperiod/multicolumn report by month-.RS-.RE-.TP-.B \f[C]\-Q\ \-\-quarterly\f[]-multiperiod/multicolumn report by quarter-.RS-.RE-.TP-.B \f[C]\-Y\ \-\-yearly\f[]-multiperiod/multicolumn report by year-.RS-.RE-.TP-.B \f[C]\-p\ \-\-period=PERIODEXP\f[]-set start date, end date, and/or reporting interval all at once-(overrides the flags above)-.RS-.RE-.TP-.B \f[C]\-\-date2\f[]-match the secondary date instead (see command help for other effects)-.RS-.RE-.TP-.B \f[C]\-U\ \-\-unmarked\f[]-include only unmarked postings/txns (can combine with \-P or \-C)-.RS-.RE-.TP-.B \f[C]\-P\ \-\-pending\f[]-include only pending postings/txns-.RS-.RE-.TP-.B \f[C]\-C\ \-\-cleared\f[]-include only cleared postings/txns-.RS-.RE-.TP-.B \f[C]\-R\ \-\-real\f[]-include only non\-virtual postings-.RS-.RE-.TP-.B \f[C]\-NUM\ \-\-depth=NUM\f[]-hide/aggregate accounts or postings more than NUM levels deep-.RS-.RE-.TP-.B \f[C]\-E\ \-\-empty\f[]-show items with zero amount, normally hidden-.RS-.RE-.TP-.B \f[C]\-B\ \-\-cost\f[]-convert amounts to their cost at transaction time (using the transaction-price, if any)-.RS-.RE-.TP-.B \f[C]\-V\ \-\-value\f[]-convert amounts to their market value on the report end date (using the-most recent applicable market price, if any)-.RS-.RE-.PP-When a reporting option appears more than once in the command line, the-last one takes precedence.-.PP-Some reporting options can also be written as query arguments.-.PP-hledger help options:-.TP-.B \f[C]\-h\ \-\-help\f[]-show general usage (or after COMMAND, command usage)-.RS-.RE-.TP-.B \f[C]\-\-version\f[]-show version-.RS-.RE-.TP-.B \f[C]\-\-debug[=N]\f[]-show debug output (levels 1\-9, default: 1)-.RS-.RE-.PP-A \@FILE argument will be expanded to the contents of FILE, which should-contain one command line option/argument per line.-(To prevent this, insert a \f[C]\-\-\f[] argument before.)-.SH ENVIRONMENT-.PP-\f[B]LEDGER_FILE\f[] The journal file path when not specified with-\f[C]\-f\f[].-Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps-\f[C]C:/Users/USER/.hledger.journal\f[]).-.SH FILES-.PP-Reads data from one or more files in hledger journal, timeclock,-timedot, or CSV format specified with \f[C]\-f\f[], or-\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,-perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).-.SH BUGS-.PP-The need to precede options with \f[C]\-\-\f[] when invoked from hledger-is awkward.-.PP-\f[C]\-f\-\f[] doesn\[aq]t work (hledger\-web can\[aq]t read from-stdin).-.PP-Query arguments and some hledger options are ignored.-.PP-Does not work in text\-mode browsers.-.PP-Does not work well on small screens.---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/other/hledger-web.1.info
@@ -1,207 +0,0 @@-This is hledger-web.1.info, produced by makeinfo version 6.0 from stdin.---File: hledger-web.1.info,  Node: Top,  Next: OPTIONS,  Up: (dir)--hledger-web(1) hledger-web 1.4-******************************--hledger-web is hledger's web interface.  It starts a simple web-application for browsing and adding transactions, and optionally opens-it in a web browser window if possible.  It provides a more-user-friendly UI than the hledger CLI or hledger-ui interface, showing-more at once (accounts, the current account register, balance charts)-and allowing history-aware data entry, interactive searching, and-bookmarking.--   hledger-web also lets you share a ledger with multiple users, or even-the public web.  There is no access control, so if you need that you-should put it behind a suitable web proxy.  As a small protection-against data loss when running an unprotected instance, it writes a-numbered backup of the main journal file (only ?)  on every edit.--   Like hledger, it reads data from one or more files in hledger-journal, timeclock, timedot, or CSV format specified with '-f', or-'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps-'C:/Users/USER/.hledger.journal').  For more about this see hledger(1),-hledger_journal(5) etc.--   By default, hledger-web starts the web app in "transient mode" and-also opens it in your default web browser if possible.  In this mode the-web app will keep running for as long as you have it open in a browser-window, and will exit after two minutes of inactivity (no requests and-no browser windows viewing it).  With '--serve', it just runs the web-app without exiting, and logs requests to the console.--   By default the server listens on IP address 127.0.0.1, accessible-only to local requests.  You can use '--host' to change this, eg '--host-0.0.0.0' to listen on all configured addresses.--   Similarly, use '--port' to set a TCP port other than 5000, eg if you-are running multiple hledger-web instances.--   You can use '--base-url' to change the protocol, hostname, port and-path that appear in hyperlinks, useful eg for integrating hledger-web-within a larger website.  The default is 'http://HOST:PORT/' using the-server's configured host address and TCP port (or 'http://HOST' if PORT-is 80).--   With '--file-url' you can set a different base url for static files,-eg for better caching or cookie-less serving on high performance-websites.--   Note there is no built-in access control (aside from listening on-127.0.0.1 by default).  So you will need to hide hledger-web behind an-authenticating proxy (such as apache or nginx) if you want to restrict-who can see and add entries to your journal.--   Command-line options and arguments may be used to set an initial-filter on the data.  This is not shown in the web UI, but it will be-applied in addition to any search query entered there.--   With journal and timeclock files (but not CSV files, currently) the-web app detects changes made by other means and will show the new data-on the next request.  If a change makes the file unparseable,-hledger-web will show an error until the file has been fixed.-* Menu:--* OPTIONS::---File: hledger-web.1.info,  Node: OPTIONS,  Prev: Top,  Up: Top--1 OPTIONS-*********--Note: if invoking hledger-web as a hledger subcommand, write '--' before-options as shown above.--'--serve'--     serve and log requests, don't browse or auto-exit-'--host=IPADDR'--     listen on this IP address (default: 127.0.0.1)-'--port=PORT'--     listen on this TCP port (default: 5000)-'--base-url=URL'--     set the base url (default: http://IPADDR:PORT). You would change-     this when sharing over the network, or integrating within a larger-     website.-'--file-url=URL'--     set the static files url (default: BASEURL/static).  hledger-web-     normally serves static files itself, but if you wanted to serve-     them from another server for efficiency, you would set the url with-     this.--   hledger input options:--'-f FILE --file=FILE'--     use a different input file.  For stdin, use - (default:-     '$LEDGER_FILE' or '$HOME/.hledger.journal')-'--rules-file=RULESFILE'--     Conversion rules file to use when reading CSV (default: FILE.rules)-'--alias=OLD=NEW'--     rename accounts named OLD to NEW-'--anon'--     anonymize accounts and payees-'--pivot FIELDNAME'--     use some other field or tag for the account name-'-I --ignore-assertions'--     ignore any failing balance assertions--   hledger reporting options:--'-b --begin=DATE'--     include postings/txns on or after this date-'-e --end=DATE'--     include postings/txns before this date-'-D --daily'--     multiperiod/multicolumn report by day-'-W --weekly'--     multiperiod/multicolumn report by week-'-M --monthly'--     multiperiod/multicolumn report by month-'-Q --quarterly'--     multiperiod/multicolumn report by quarter-'-Y --yearly'--     multiperiod/multicolumn report by year-'-p --period=PERIODEXP'--     set start date, end date, and/or reporting interval all at once-     (overrides the flags above)-'--date2'--     match the secondary date instead (see command help for other-     effects)-'-U --unmarked'--     include only unmarked postings/txns (can combine with -P or -C)-'-P --pending'--     include only pending postings/txns-'-C --cleared'--     include only cleared postings/txns-'-R --real'--     include only non-virtual postings-'-NUM --depth=NUM'--     hide/aggregate accounts or postings more than NUM levels deep-'-E --empty'--     show items with zero amount, normally hidden-'-B --cost'--     convert amounts to their cost at transaction time (using the-     transaction price, if any)-'-V --value'--     convert amounts to their market value on the report end date (using-     the most recent applicable market price, if any)--   When a reporting option appears more than once in the command line,-the last one takes precedence.--   Some reporting options can also be written as query arguments.--   hledger help options:--'-h --help'--     show general usage (or after COMMAND, command usage)-'--version'--     show version-'--debug[=N]'--     show debug output (levels 1-9, default: 1)--   A @FILE argument will be expanded to the contents of FILE, which-should contain one command line option/argument per line.  (To prevent-this, insert a '--' argument before.)---Tag Table:-Node: Top74-Node: OPTIONS3156-Ref: #options3243--End Tag Table
− doc/other/hledger-web.1.txt
@@ -1,244 +0,0 @@--hledger-web(1)               hledger User Manuals               hledger-web(1)----NAME-       hledger-web - web interface for the hledger accounting tool--SYNOPSIS-       hledger-web [OPTIONS]-       hledger web -- [OPTIONS]--DESCRIPTION-       hledger  is  a  cross-platform program for tracking money, time, or any-       other commodity, using double-entry accounting and a  simple,  editable-       file  format.   hledger  is  inspired  by  and  largely compatible with-       ledger(1).--       hledger-web is hledger's web interface.  It starts a simple web  appli--       cation for browsing and adding transactions, and optionally opens it in-       a web browser window if possible.  It provides a more user-friendly  UI-       than  the  hledger  CLI  or  hledger-ui interface, showing more at once-       (accounts, the current account register, balance charts)  and  allowing-       history-aware data entry, interactive searching, and bookmarking.--       hledger-web  also  lets you share a ledger with multiple users, or even-       the public web.  There is no access control, so if you  need  that  you-       should  put  it  behind  a  suitable  web proxy.  As a small protection-       against data loss when running an unprotected  instance,  it  writes  a-       numbered backup of the main journal file (only ?)  on every edit.--       Like  hledger, it reads data from one or more files in hledger journal,-       timeclock, timedot, or CSV format specified with -f,  or  $LEDGER_FILE,-       or        $HOME/.hledger.journal       (on       windows,       perhaps-       C:/Users/USER/.hledger.journal).  For more about this  see  hledger(1),-       hledger_journal(5) etc.--       By default, hledger-web starts the web app in "transient mode" and also-       opens it in your default web browser if possible.  In this mode the web-       app will keep running for as long as you have it open in a browser win--       dow, and will exit after two minutes of inactivity (no requests and  no-       browser  windows  viewing  it).  With --serve, it just runs the web app-       without exiting, and logs requests to the console.--       By default the server listens on IP address 127.0.0.1, accessible  only-       to   local   requests.    You   can  use  --host  to  change  this,  eg-       --host 0.0.0.0 to listen on all configured addresses.--       Similarly, use --port to set a TCP port other than 5000, eg if you  are-       running multiple hledger-web instances.--       You  can use --base-url to change the protocol, hostname, port and path-       that appear in hyperlinks, useful eg for integrating hledger-web within-       a  larger website.  The default is http://HOST:PORT/ using the server's-       configured host address and TCP port (or http://HOST if PORT is 80).--       With --file-url you can set a different base url for static  files,  eg-       for better caching or cookie-less serving on high performance websites.--       Note there is no built-in  access  control  (aside  from  listening  on-       127.0.0.1  by default).  So you will need to hide hledger-web behind an-       authenticating proxy (such as apache or nginx) if you want to  restrict-       who can see and add entries to your journal.--       Command-line options and arguments may be used to set an initial filter-       on the data.  This is not shown in the web UI, but it will  be  applied-       in addition to any search query entered there.--       With journal and timeclock files (but not CSV files, currently) the web-       app detects changes made by other means and will show the new  data  on-       the  next request.  If a change makes the file unparseable, hledger-web-       will show an error until the file has been fixed.--OPTIONS-       Note: if invoking hledger-web as a hledger subcommand, write --  before-       options as shown above.--       --serve-              serve and log requests, don't browse or auto-exit--       --host=IPADDR-              listen on this IP address (default: 127.0.0.1)--       --port=PORT-              listen on this TCP port (default: 5000)--       --base-url=URL-              set  the  base  url  (default:  http://IPADDR:PORT).   You would-              change this when sharing over the network, or integrating within-              a larger website.--       --file-url=URL-              set the static files url (default: BASEURL/static).  hledger-web-              normally serves static files itself, but if you wanted to  serve-              them  from  another server for efficiency, you would set the url-              with this.--       hledger input options:--       -f FILE --file=FILE-              use  a  different  input  file.   For  stdin,  use  -  (default:-              $LEDGER_FILE or $HOME/.hledger.journal)--       --rules-file=RULESFILE-              Conversion   rules  file  to  use  when  reading  CSV  (default:-              FILE.rules)--       --alias=OLD=NEW-              rename accounts named OLD to NEW--       --anon anonymize accounts and payees--       --pivot FIELDNAME-              use some other field or tag for the account name--       -I --ignore-assertions-              ignore any failing balance assertions--       hledger reporting options:--       -b --begin=DATE-              include postings/txns on or after this date--       -e --end=DATE-              include postings/txns before this date--       -D --daily-              multiperiod/multicolumn report by day--       -W --weekly-              multiperiod/multicolumn report by week--       -M --monthly-              multiperiod/multicolumn report by month--       -Q --quarterly-              multiperiod/multicolumn report by quarter--       -Y --yearly-              multiperiod/multicolumn report by year--       -p --period=PERIODEXP-              set start date, end date, and/or reporting interval all at  once-              (overrides the flags above)--       --date2-              match  the  secondary  date  instead (see command help for other-              effects)--       -U --unmarked-              include only unmarked postings/txns (can combine with -P or -C)--       -P --pending-              include only pending postings/txns--       -C --cleared-              include only cleared postings/txns--       -R --real-              include only non-virtual postings--       -NUM --depth=NUM-              hide/aggregate accounts or postings more than NUM levels deep--       -E --empty-              show items with zero amount, normally hidden--       -B --cost-              convert amounts to their cost at  transaction  time  (using  the-              transaction price, if any)--       -V --value-              convert  amounts  to  their  market value on the report end date-              (using the most recent applicable market price, if any)--       When a reporting option appears more than once in the command line, the-       last one takes precedence.--       Some reporting options can also be written as query arguments.--       hledger help options:--       -h --help-              show general usage (or after COMMAND, command usage)--       --version-              show version--       --debug[=N]-              show debug output (levels 1-9, default: 1)--       A @FILE argument will be expanded to the contents of FILE, which should-       contain one command line option/argument per line.  (To  prevent  this,-       insert a -- argument before.)--ENVIRONMENT-       LEDGER_FILE The journal file path when not specified with -f.  Default:-       ~/.hledger.journal (on  windows,  perhaps  C:/Users/USER/.hledger.jour--       nal).--FILES-       Reads  data from one or more files in hledger journal, timeclock, time--       dot,  or  CSV  format  specified   with   -f,   or   $LEDGER_FILE,   or-       $HOME/.hledger.journal           (on          windows,          perhaps-       C:/Users/USER/.hledger.journal).--BUGS-       The need to precede options with -- when invoked from hledger  is  awk--       ward.--       -f- doesn't work (hledger-web can't read from stdin).--       Query arguments and some hledger options are ignored.--       Does not work in text-mode browsers.--       Does not work well on small screens.----REPORTING BUGS-       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger-web 1.4                 September 2017                  hledger-web(1)
− doc/other/hledger_csv.5
@@ -1,277 +0,0 @@--.TH "hledger_csv" "5" "September 2017" "hledger 1.4" "hledger User Manuals"----.SH NAME-.PP-CSV \- how hledger reads CSV data, and the CSV rules file format-.SH DESCRIPTION-.PP-hledger can read CSV files, converting each CSV record into a journal-entry (transaction), if you provide some conversion hints in a "rules-file".-This file should be named like the CSV file with an additional-\f[C]\&.rules\f[] suffix (eg: \f[C]mybank.csv.rules\f[]); or, you can-specify the file with \f[C]\-\-rules\-file\ PATH\f[].-hledger will create it if necessary, with some default rules which-you\[aq]ll need to adjust.-At minimum, the rules file must specify the \f[C]date\f[] and-\f[C]amount\f[] fields.-For an example, see Cookbook: convert CSV files.-.PP-To learn about \f[I]exporting\f[] CSV, see CSV output.-.SH CSV RULES-.PP-The following seven kinds of rule can appear in the rules file, in any-order.-Blank lines and lines beginning with \f[C]#\f[] or \f[C];\f[] are-ignored.-.SS skip-.PP-\f[C]skip\f[]\f[I]\f[C]N\f[]\f[]-.PP-Skip this number of CSV records at the beginning.-You\[aq]ll need this whenever your CSV data contains header lines.-Eg:-.IP-.nf-\f[C]-#\ ignore\ the\ first\ CSV\ line-skip\ 1-\f[]-.fi-.SS date\-format-.PP-\f[C]date\-format\f[]\f[I]\f[C]DATEFMT\f[]\f[]-.PP-When your CSV date fields are not formatted like \f[C]YYYY/MM/DD\f[] (or-\f[C]YYYY\-MM\-DD\f[] or \f[C]YYYY.MM.DD\f[]), you\[aq]ll need to-specify the format.-DATEFMT is a strptime\-like date parsing pattern, which must parse the-date field values completely.-Examples:-.IP-.nf-\f[C]-#\ for\ dates\ like\ "6/11/2013":-date\-format\ %\-d/%\-m/%Y-\f[]-.fi-.IP-.nf-\f[C]-#\ for\ dates\ like\ "11/06/2013":-date\-format\ %m/%d/%Y-\f[]-.fi-.IP-.nf-\f[C]-#\ for\ dates\ like\ "2013\-Nov\-06":-date\-format\ %Y\-%h\-%d-\f[]-.fi-.IP-.nf-\f[C]-#\ for\ dates\ like\ "11/6/2013\ 11:32\ PM":-date\-format\ %\-m/%\-d/%Y\ %l:%M\ %p-\f[]-.fi-.SS field list-.PP-\f[C]fields\f[]\f[I]\f[C]FIELDNAME1\f[]\f[],-\f[I]\f[C]FIELDNAME2\f[]\f[]...-.PP-This (a) names the CSV fields, in order (names may not contain-whitespace; uninteresting names may be left blank), and (b) assigns them-to journal entry fields if you use any of these standard field names:-\f[C]date\f[], \f[C]date2\f[], \f[C]status\f[], \f[C]code\f[],-\f[C]description\f[], \f[C]comment\f[], \f[C]account1\f[],-\f[C]account2\f[], \f[C]amount\f[], \f[C]amount\-in\f[],-\f[C]amount\-out\f[], \f[C]currency\f[], \f[C]balance\f[].-Eg:-.IP-.nf-\f[C]-#\ use\ the\ 1st,\ 2nd\ and\ 4th\ CSV\ fields\ as\ the\ entry\[aq]s\ date,\ description\ and\ amount,-#\ and\ give\ the\ 7th\ and\ 8th\ fields\ meaningful\ names\ for\ later\ reference:-#-#\ CSV\ field:-#\ \ \ \ \ \ 1\ \ \ \ \ 2\ \ \ \ \ \ \ \ \ \ \ \ 3\ 4\ \ \ \ \ \ \ 5\ 6\ 7\ \ \ \ \ \ \ \ \ \ 8-#\ entry\ field:-fields\ date,\ description,\ ,\ amount,\ ,\ ,\ somefield,\ anotherfield-\f[]-.fi-.SS field assignment-.PP-\f[I]\f[C]ENTRYFIELDNAME\f[]\f[] \f[I]\f[C]FIELDVALUE\f[]\f[]-.PP-This sets a journal entry field (one of the standard names above) to the-given text value, which can include CSV field values interpolated by-name (\f[C]%CSVFIELDNAME\f[]) or 1\-based position (\f[C]%N\f[]).- Eg:-.IP-.nf-\f[C]-#\ set\ the\ amount\ to\ the\ 4th\ CSV\ field\ with\ "USD\ "\ prepended-amount\ USD\ %4-\f[]-.fi-.IP-.nf-\f[C]-#\ combine\ three\ fields\ to\ make\ a\ comment\ (containing\ two\ tags)-comment\ note:\ %somefield\ \-\ %anotherfield,\ date:\ %1-\f[]-.fi-.PP-Field assignments can be used instead of or in addition to a field list.-.SS conditional block-.PP-\f[C]if\f[] \f[I]\f[C]PATTERN\f[]\f[]-.PD 0-.P-.PD-\ \ \ \ \f[I]\f[C]FIELDASSIGNMENTS\f[]\f[]...-.PP-\f[C]if\f[]-.PD 0-.P-.PD-\f[I]\f[C]PATTERN\f[]\f[]-.PD 0-.P-.PD-\f[I]\f[C]PATTERN\f[]\f[]...-.PD 0-.P-.PD-\ \ \ \ \f[I]\f[C]FIELDASSIGNMENTS\f[]\f[]...-.PP-This applies one or more field assignments, only to those CSV records-matched by one of the PATTERNs.-The patterns are case\-insensitive regular expressions which match-anywhere within the whole CSV record (it\[aq]s not yet possible to match-within a specific field).-When there are multiple patterns they can be written on separate lines,-unindented.-The field assignments are on separate lines indented by at least one-space.-Examples:-.IP-.nf-\f[C]-#\ if\ the\ CSV\ record\ contains\ "groceries",\ set\ account2\ to\ "expenses:groceries"-if\ groceries-\ account2\ expenses:groceries-\f[]-.fi-.IP-.nf-\f[C]-#\ if\ the\ CSV\ record\ contains\ any\ of\ these\ patterns,\ set\ account2\ and\ comment\ as\ shown-if-monthly\ service\ fee-atm\ transaction\ fee-banking\ thru\ software-\ account2\ expenses:business:banking-\ comment\ \ XXX\ deductible\ ?\ check\ it-\f[]-.fi-.SS include-.PP-\f[C]include\f[]\f[I]\f[C]RULESFILE\f[]\f[]-.PP-Include another rules file at this point.-\f[C]RULESFILE\f[] is either an absolute file path or a path relative to-the current file\[aq]s directory.-Eg:-.IP-.nf-\f[C]-#\ rules\ reused\ with\ several\ CSV\ files-include\ common.rules-\f[]-.fi-.SS newest\-first-.PP-\f[C]newest\-first\f[]-.PP-Consider adding this rule if all of the following are true: you might be-processing just one day of data, your CSV records are in reverse-chronological order (newest first), and you care about preserving the-order of same\-day transactions.-It usually isn\[aq]t needed, because hledger autodetects the CSV order,-but when all CSV records have the same date it will assume they are-oldest first.-.SH CSV TIPS-.SS CSV ordering-.PP-The generated journal entries will be sorted by date.-The order of same\-day entries will be preserved (except in the special-case where you might need \f[C]newest\-first\f[], see above).-.SS CSV accounts-.PP-Each journal entry will have two postings, to \f[C]account1\f[] and-\f[C]account2\f[] respectively.-It\[aq]s not yet possible to generate entries with more than two-postings.-It\[aq]s conventional and recommended to use \f[C]account1\f[] for the-account whose CSV we are reading.-.SS CSV amounts-.PP-The \f[C]amount\f[] field sets the amount of the \f[C]account1\f[]-posting.-.PP-If the CSV has debit/credit amounts in separate fields, assign to the-\f[C]amount\-in\f[] and \f[C]amount\-out\f[] pseudo fields instead.-(Whichever one has a value will be used, with appropriate sign.-If both contain a value, it may not work so well.)-.PP-If an amount value is parenthesised, it will be de\-parenthesised and-sign\-flipped.-.PP-If an amount value begins with a double minus sign, those will cancel-out and be removed.-.PP-If the CSV has the currency symbol in a separate field, assign that to-the \f[C]currency\f[] pseudo field to have it prepended to the amount.-Or, you can use a field assignment to \f[C]amount\f[] that interpolates-both CSV fields (giving more control, eg to put the currency symbol on-the right).-.SS CSV balance assertions-.PP-If the CSV includes a running balance, you can assign that to the-\f[C]balance\f[] pseudo field; whenever the running balance value is-non\-empty, it will be asserted as the balance after the-\f[C]account1\f[] posting.-.SS Reading multiple CSV files-.PP-You can read multiple CSV files at once using multiple \f[C]\-f\f[]-arguments on the command line, and hledger will look for a-correspondingly\-named rules file for each.-Note if you use the \f[C]\-\-rules\-file\f[] option, this one rules file-will be used for all the CSV files being read.---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/other/hledger_csv.5.info
@@ -1,302 +0,0 @@-This is hledger_csv.5.info, produced by makeinfo version 6.0 from stdin.---File: hledger_csv.5.info,  Node: Top,  Next: CSV RULES,  Up: (dir)--hledger_csv(5) hledger 1.4-**************************--hledger can read CSV files, converting each CSV record into a journal-entry (transaction), if you provide some conversion hints in a "rules-file".  This file should be named like the CSV file with an additional-'.rules' suffix (eg: 'mybank.csv.rules'); or, you can specify the file-with '--rules-file PATH'.  hledger will create it if necessary, with-some default rules which you'll need to adjust.  At minimum, the rules-file must specify the 'date' and 'amount' fields.  For an example, see-Cookbook: convert CSV files.--   To learn about _exporting_ CSV, see CSV output.-* Menu:--* CSV RULES::-* CSV TIPS::---File: hledger_csv.5.info,  Node: CSV RULES,  Next: CSV TIPS,  Prev: Top,  Up: Top--1 CSV RULES-***********--The following seven kinds of rule can appear in the rules file, in any-order.  Blank lines and lines beginning with '#' or ';' are ignored.-* Menu:--* skip::-* date-format::-* field list::-* field assignment::-* conditional block::-* include::-* newest-first::---File: hledger_csv.5.info,  Node: skip,  Next: date-format,  Up: CSV RULES--1.1 skip-========--'skip'_'N'_--   Skip this number of CSV records at the beginning.  You'll need this-whenever your CSV data contains header lines.  Eg:--# ignore the first CSV line-skip 1---File: hledger_csv.5.info,  Node: date-format,  Next: field list,  Prev: skip,  Up: CSV RULES--1.2 date-format-===============--'date-format'_'DATEFMT'_--   When your CSV date fields are not formatted like 'YYYY/MM/DD' (or-'YYYY-MM-DD' or 'YYYY.MM.DD'), you'll need to specify the format.-DATEFMT is a strptime-like date parsing pattern, which must parse the-date field values completely.  Examples:--# for dates like "6/11/2013":-date-format %-d/%-m/%Y--# for dates like "11/06/2013":-date-format %m/%d/%Y--# for dates like "2013-Nov-06":-date-format %Y-%h-%d--# for dates like "11/6/2013 11:32 PM":-date-format %-m/%-d/%Y %l:%M %p---File: hledger_csv.5.info,  Node: field list,  Next: field assignment,  Prev: date-format,  Up: CSV RULES--1.3 field list-==============--'fields'_'FIELDNAME1'_, _'FIELDNAME2'_...--   This (a) names the CSV fields, in order (names may not contain-whitespace; uninteresting names may be left blank), and (b) assigns them-to journal entry fields if you use any of these standard field names:-'date', 'date2', 'status', 'code', 'description', 'comment', 'account1',-'account2', 'amount', 'amount-in', 'amount-out', 'currency', 'balance'.-Eg:--# use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,-# and give the 7th and 8th fields meaningful names for later reference:-#-# CSV field:-#      1     2            3 4       5 6 7          8-# entry field:-fields date, description, , amount, , , somefield, anotherfield---File: hledger_csv.5.info,  Node: field assignment,  Next: conditional block,  Prev: field list,  Up: CSV RULES--1.4 field assignment-====================--_'ENTRYFIELDNAME'_ _'FIELDVALUE'_--   This sets a journal entry field (one of the standard names above) to-the given text value, which can include CSV field values interpolated by-name ('%CSVFIELDNAME') or 1-based position ('%N').  Eg:--# set the amount to the 4th CSV field with "USD " prepended-amount USD %4--# combine three fields to make a comment (containing two tags)-comment note: %somefield - %anotherfield, date: %1--   Field assignments can be used instead of or in addition to a field-list.---File: hledger_csv.5.info,  Node: conditional block,  Next: include,  Prev: field assignment,  Up: CSV RULES--1.5 conditional block-=====================--'if' _'PATTERN'_-    _'FIELDASSIGNMENTS'_...--   'if'-_'PATTERN'_-_'PATTERN'_...-    _'FIELDASSIGNMENTS'_...--   This applies one or more field assignments, only to those CSV records-matched by one of the PATTERNs.  The patterns are case-insensitive-regular expressions which match anywhere within the whole CSV record-(it's not yet possible to match within a specific field).  When there-are multiple patterns they can be written on separate lines, unindented.-The field assignments are on separate lines indented by at least one-space.  Examples:--# if the CSV record contains "groceries", set account2 to "expenses:groceries"-if groceries- account2 expenses:groceries--# if the CSV record contains any of these patterns, set account2 and comment as shown-if-monthly service fee-atm transaction fee-banking thru software- account2 expenses:business:banking- comment  XXX deductible ? check it---File: hledger_csv.5.info,  Node: include,  Next: newest-first,  Prev: conditional block,  Up: CSV RULES--1.6 include-===========--'include'_'RULESFILE'_--   Include another rules file at this point.  'RULESFILE' is either an-absolute file path or a path relative to the current file's directory.-Eg:--# rules reused with several CSV files-include common.rules---File: hledger_csv.5.info,  Node: newest-first,  Prev: include,  Up: CSV RULES--1.7 newest-first-================--'newest-first'--   Consider adding this rule if all of the following are true: you might-be processing just one day of data, your CSV records are in reverse-chronological order (newest first), and you care about preserving the-order of same-day transactions.  It usually isn't needed, because-hledger autodetects the CSV order, but when all CSV records have the-same date it will assume they are oldest first.---File: hledger_csv.5.info,  Node: CSV TIPS,  Prev: CSV RULES,  Up: Top--2 CSV TIPS-**********--* Menu:--* CSV ordering::-* CSV accounts::-* CSV amounts::-* CSV balance assertions::-* Reading multiple CSV files::---File: hledger_csv.5.info,  Node: CSV ordering,  Next: CSV accounts,  Up: CSV TIPS--2.1 CSV ordering-================--The generated journal entries will be sorted by date.  The order of-same-day entries will be preserved (except in the special case where you-might need 'newest-first', see above).---File: hledger_csv.5.info,  Node: CSV accounts,  Next: CSV amounts,  Prev: CSV ordering,  Up: CSV TIPS--2.2 CSV accounts-================--Each journal entry will have two postings, to 'account1' and 'account2'-respectively.  It's not yet possible to generate entries with more than-two postings.  It's conventional and recommended to use 'account1' for-the account whose CSV we are reading.---File: hledger_csv.5.info,  Node: CSV amounts,  Next: CSV balance assertions,  Prev: CSV accounts,  Up: CSV TIPS--2.3 CSV amounts-===============--The 'amount' field sets the amount of the 'account1' posting.--   If the CSV has debit/credit amounts in separate fields, assign to the-'amount-in' and 'amount-out' pseudo fields instead.  (Whichever one has-a value will be used, with appropriate sign.  If both contain a value,-it may not work so well.)--   If an amount value is parenthesised, it will be de-parenthesised and-sign-flipped.--   If an amount value begins with a double minus sign, those will cancel-out and be removed.--   If the CSV has the currency symbol in a separate field, assign that-to the 'currency' pseudo field to have it prepended to the amount.  Or,-you can use a field assignment to 'amount' that interpolates both CSV-fields (giving more control, eg to put the currency symbol on the-right).---File: hledger_csv.5.info,  Node: CSV balance assertions,  Next: Reading multiple CSV files,  Prev: CSV amounts,  Up: CSV TIPS--2.4 CSV balance assertions-==========================--If the CSV includes a running balance, you can assign that to the-'balance' pseudo field; whenever the running balance value is non-empty,-it will be asserted as the balance after the 'account1' posting.---File: hledger_csv.5.info,  Node: Reading multiple CSV files,  Prev: CSV balance assertions,  Up: CSV TIPS--2.5 Reading multiple CSV files-==============================--You can read multiple CSV files at once using multiple '-f' arguments on-the command line, and hledger will look for a correspondingly-named-rules file for each.  Note if you use the '--rules-file' option, this-one rules file will be used for all the CSV files being read.---Tag Table:-Node: Top74-Node: CSV RULES810-Ref: #csv-rules920-Node: skip1182-Ref: #skip1278-Node: date-format1450-Ref: #date-format1579-Node: field list2085-Ref: #field-list2224-Node: field assignment2929-Ref: #field-assignment3086-Node: conditional block3590-Ref: #conditional-block3746-Node: include4642-Ref: #include4774-Node: newest-first5005-Ref: #newest-first5121-Node: CSV TIPS5532-Ref: #csv-tips5628-Node: CSV ordering5746-Ref: #csv-ordering5866-Node: CSV accounts6047-Ref: #csv-accounts6187-Node: CSV amounts6441-Ref: #csv-amounts6589-Node: CSV balance assertions7364-Ref: #csv-balance-assertions7548-Node: Reading multiple CSV files7753-Ref: #reading-multiple-csv-files7925--End Tag Table
− doc/other/hledger_csv.5.txt
@@ -1,203 +0,0 @@--hledger_csv(5)               hledger User Manuals               hledger_csv(5)----NAME-       CSV - how hledger reads CSV data, and the CSV rules file format--DESCRIPTION-       hledger  can  read CSV files, converting each CSV record into a journal-       entry (transaction), if you provide some conversion hints in  a  "rules-       file".   This file should be named like the CSV file with an additional-       .rules suffix (eg: mybank.csv.rules); or, you can specify the file with-       --rules-file PATH.   hledger  will  create  it  if necessary, with some-       default rules which you'll need to adjust.  At minimum, the rules  file-       must specify the date and amount fields.  For an example, see Cookbook:-       convert CSV files.--       To learn about exporting CSV, see CSV output.--CSV RULES-       The following seven kinds of rule can appear in the rules file, in  any-       order.  Blank lines and lines beginning with # or ; are ignored.--   skip-       skipN--       Skip  this  number  of  CSV records at the beginning.  You'll need this-       whenever your CSV data contains header lines.  Eg:--              # ignore the first CSV line-              skip 1--   date-format-       date-formatDATEFMT--       When your CSV  date  fields  are  not  formatted  like  YYYY/MM/DD  (or-       YYYY-MM-DD  or YYYY.MM.DD), you'll need to specify the format.  DATEFMT-       is a strptime-like date parsing pattern,  which  must  parse  the  date-       field values completely.  Examples:--              # for dates like "6/11/2013":-              date-format %-d/%-m/%Y--              # for dates like "11/06/2013":-              date-format %m/%d/%Y--              # for dates like "2013-Nov-06":-              date-format %Y-%h-%d--              # for dates like "11/6/2013 11:32 PM":-              date-format %-m/%-d/%Y %l:%M %p--   field list-       fieldsFIELDNAME1, FIELDNAME2...--       This  (a)  names the CSV fields, in order (names may not contain white--       space; uninteresting names may be left blank), and (b) assigns them  to-       journal  entry  fields  if  you  use any of these standard field names:-       date, date2, status, code, description,  comment,  account1,  account2,-       amount, amount-in, amount-out, currency, balance.  Eg:--              # use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,-              # and give the 7th and 8th fields meaningful names for later reference:-              #-              # CSV field:-              #      1     2            3 4       5 6 7          8-              # entry field:-              fields date, description, , amount, , , somefield, anotherfield--   field assignment-       ENTRYFIELDNAME FIELDVALUE--       This  sets  a  journal entry field (one of the standard names above) to-       the given text value, which can include CSV field  values  interpolated-       by name (%CSVFIELDNAME) or 1-based position (%N).-        Eg:--              # set the amount to the 4th CSV field with "USD " prepended-              amount USD %4--              # combine three fields to make a comment (containing two tags)-              comment note: %somefield - %anotherfield, date: %1--       Field  assignments  can  be  used  instead of or in addition to a field-       list.--   conditional block-       if PATTERN-           FIELDASSIGNMENTS...--       if-       PATTERN-       PATTERN...-           FIELDASSIGNMENTS...--       This applies one or more field assignments, only to those  CSV  records-       matched by one of the PATTERNs.  The patterns are case-insensitive reg--       ular expressions which match anywhere within the whole CSV record (it's-       not  yet  possible  to  match within a specific field).  When there are-       multiple patterns they can be written on  separate  lines,  unindented.-       The  field  assignments  are on separate lines indented by at least one-       space.  Examples:--              # if the CSV record contains "groceries", set account2 to "expenses:groceries"-              if groceries-               account2 expenses:groceries--              # if the CSV record contains any of these patterns, set account2 and comment as shown-              if-              monthly service fee-              atm transaction fee-              banking thru software-               account2 expenses:business:banking-               comment  XXX deductible ? check it--   include-       includeRULESFILE--       Include another rules file at this point.  RULESFILE is either an abso--       lute file path or a path relative to the current file's directory.  Eg:--              # rules reused with several CSV files-              include common.rules--   newest-first-       newest-first--       Consider adding this rule if all of the following are true:  you  might-       be  processing  just  one  day of data, your CSV records are in reverse-       chronological order (newest first), and you care about  preserving  the-       order  of  same-day  transactions.   It  usually  isn't needed, because-       hledger autodetects the CSV order, but when all CSV  records  have  the-       same date it will assume they are oldest first.--CSV TIPS-   CSV ordering-       The  generated  journal  entries  will be sorted by date.  The order of-       same-day entries will be preserved (except in the  special  case  where-       you might need newest-first, see above).--   CSV accounts-       Each  journal  entry  will  have two postings, to account1 and account2-       respectively.  It's not yet possible to generate entries with more than-       two  postings.   It's  conventional and recommended to use account1 for-       the account whose CSV we are reading.--   CSV amounts-       The amount field sets the amount of the account1 posting.--       If the CSV has debit/credit amounts in separate fields, assign  to  the-       amount-in  and  amount-out pseudo fields instead.  (Whichever one has a-       value will be used, with appropriate sign.  If both contain a value, it-       may not work so well.)--       If  an  amount  value is parenthesised, it will be de-parenthesised and-       sign-flipped.--       If an amount value begins with a double minus sign, those  will  cancel-       out and be removed.--       If  the CSV has the currency symbol in a separate field, assign that to-       the currency pseudo field to have it prepended to the amount.  Or,  you-       can  use a field assignment to amount that interpolates both CSV fields-       (giving more control, eg to put the currency symbol on the right).--   CSV balance assertions-       If the CSV includes a running balance, you can assign that to the  bal--       ance  pseudo field; whenever the running balance value is non-empty, it-       will be asserted as the balance after the account1 posting.--   Reading multiple CSV files-       You can read multiple CSV files at once using multiple -f arguments  on-       the  command  line,  and  hledger will look for a correspondingly-named-       rules file for each.  Note if you use the --rules-file option, this one-       rules file will be used for all the CSV files being read.----REPORTING BUGS-       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger 1.4                     September 2017                  hledger_csv(5)
− doc/other/hledger_journal.5
@@ -1,1153 +0,0 @@-.\"t--.TH "hledger_journal" "5" "September 2017" "hledger 1.4" "hledger User Manuals"----.SH NAME-.PP-Journal \- hledger\[aq]s default file format, representing a General-Journal-.SH DESCRIPTION-.PP-hledger\[aq]s usual data source is a plain text file containing journal-entries in hledger journal format.-This file represents a standard accounting general journal.-I use file names ending in \f[C]\&.journal\f[], but that\[aq]s not-required.-The journal file contains a number of transaction entries, each-describing a transfer of money (or any commodity) between two or more-named accounts, in a simple format readable by both hledger and humans.-.PP-hledger\[aq]s journal format is a compatible subset, mostly, of-ledger\[aq]s journal format, so hledger can work with compatible ledger-journal files as well.-It\[aq]s safe, and encouraged, to run both hledger and ledger on the-same journal file, eg to validate the results you\[aq]re getting.-.PP-You can use hledger without learning any more about this file; just use-the add or web commands to create and update it.-Many users, though, also edit the journal file directly with a text-editor, perhaps assisted by the helper modes for emacs or vim.-.PP-Here\[aq]s an example:-.IP-.nf-\f[C]-;\ A\ sample\ journal\ file.\ This\ is\ a\ comment.--2008/01/01\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ transaction\[aq]s\ first\ line\ starts\ in\ column\ 0,\ contains\ date\ and\ description-\ \ \ \ assets:bank:checking\ \ $1\ \ \ \ ;\ <\-\ posting\ lines\ start\ with\ whitespace,\ each\ contains\ an\ account\ name-\ \ \ \ income:salary\ \ \ \ \ \ \ \ $\-1\ \ \ \ ;\ \ \ \ followed\ by\ at\ least\ two\ spaces\ and\ an\ amount--2008/06/01\ gift-\ \ \ \ assets:bank:checking\ \ $1\ \ \ \ ;\ <\-\ at\ least\ two\ postings\ in\ a\ transaction-\ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ ;\ <\-\ their\ amounts\ must\ balance\ to\ 0--2008/06/02\ save-\ \ \ \ assets:bank:saving\ \ \ \ $1-\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ ;\ <\-\ one\ amount\ may\ be\ omitted;\ here\ $\-1\ is\ inferred--2008/06/03\ eat\ &\ shop\ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ description\ can\ be\ anything-\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ $1-\ \ \ \ expenses:supplies\ \ \ \ \ $1\ \ \ \ ;\ <\-\ this\ transaction\ debits\ two\ expense\ accounts-\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ $\-2\ inferred--2008/10/01\ take\ a\ loan-\ \ \ \ assets:bank:checking\ \ $1-\ \ \ \ liabilities:debts\ \ \ \ $\-1--2008/12/31\ *\ pay\ off\ \ \ \ \ \ \ \ \ \ \ \ ;\ <\-\ an\ optional\ *\ or\ !\ after\ the\ date\ means\ "cleared"\ (or\ anything\ you\ want)-\ \ \ \ liabilities:debts\ \ \ \ \ $1-\ \ \ \ assets:bank:checking-\f[]-.fi-.SH FILE FORMAT-.SS Transactions-.PP-Transactions are movements of some quantity of commodities between named-accounts.-Each transaction is represented by a journal entry beginning with a-simple date in column 0.-This can be followed by any of the following, separated by spaces:-.IP \[bu] 2-(optional) a status character (empty, \f[C]!\f[], or \f[C]*\f[])-.IP \[bu] 2-(optional) a transaction code (any short number or text, enclosed in-parentheses)-.IP \[bu] 2-(optional) a transaction description (any remaining text until end of-line or a semicolon)-.IP \[bu] 2-(optional) a transaction comment (any remaining text following a-semicolon until end of line)-.PP-Then comes zero or more (but usually at least 2) indented lines-representing...-.SS Postings-.PP-A posting is an addition of some amount to, or removal of some amount-from, an account.-Each posting line begins with at least one space or tab (2 or 4 spaces-is common), followed by:-.IP \[bu] 2-(optional) a status character (empty, \f[C]!\f[], or \f[C]*\f[]),-followed by a space-.IP \[bu] 2-(required) an account name (any text, optionally containing \f[B]single-spaces\f[], until end of line or a double space)-.IP \[bu] 2-(optional) \f[B]two or more spaces\f[] or tabs followed by an amount.-.PP-Positive amounts are being added to the account, negative amounts are-being removed.-.PP-The amounts within a transaction must always sum up to zero.-As a convenience, one amount may be left blank; it will be inferred so-as to balance the transaction.-.PP-Be sure to note the unusual two\-space delimiter between account name-and amount.-This makes it easy to write account names containing spaces.-But if you accidentally leave only one space (or tab) before the amount,-the amount will be considered part of the account name.-.SS Dates-.SS Simple dates-.PP-Within a journal file, transaction dates use Y/M/D (or Y\-M\-D or Y.M.D)-Leading zeros are optional.-The year may be omitted, in which case it will be inferred from the-context \- the current transaction, the default year set with a default-year directive, or the current date when the command is run.-Some examples: \f[C]2010/01/31\f[], \f[C]1/31\f[],-\f[C]2010\-01\-31\f[], \f[C]2010.1.31\f[].-.SS Secondary dates-.PP-Real\-life transactions sometimes involve more than one date \- eg the-date you write a cheque, and the date it clears in your bank.-When you want to model this, eg for more accurate balances, you can-specify individual posting dates, which I recommend.-Or, you can use the secondary dates (aka auxiliary/effective dates)-feature, supported for compatibility with Ledger.-.PP-A secondary date can be written after the primary date, separated by an-equals sign.-The primary date, on the left, is used by default; the secondary date,-on the right, is used when the \f[C]\-\-date2\f[] flag is specified-(\f[C]\-\-aux\-date\f[] or \f[C]\-\-effective\f[] also work).-.PP-The meaning of secondary dates is up to you, but it\[aq]s best to follow-a consistent rule.-Eg write the bank\[aq]s clearing date as primary, and when needed, the-date the transaction was initiated as secondary.-.PP-Here\[aq]s an example.-Note that a secondary date will use the year of the primary date if-unspecified.-.IP-.nf-\f[C]-2010/2/23=2/19\ movie\ ticket-\ \ expenses:cinema\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10-\ \ assets:checking-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ register\ checking-2010/02/23\ movie\ ticket\ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ $\-10-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ register\ checking\ \-\-date2-2010/02/19\ movie\ ticket\ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ $\-10-\f[]-.fi-.PP-Secondary dates require some effort; you must use them consistently in-your journal entries and remember whether to use or not use the-\f[C]\-\-date2\f[] flag for your reports.-They are included in hledger for Ledger compatibility, but posting dates-are a more powerful and less confusing alternative.-.SS Posting dates-.PP-You can give individual postings a different date from their parent-transaction, by adding a posting comment containing a tag (see below)-like \f[C]date:DATE\f[].-This is probably the best way to control posting dates precisely.-Eg in this example the expense should appear in May reports, and the-deduction from checking should be reported on 6/1 for easy bank-reconciliation:-.IP-.nf-\f[C]-2015/5/30-\ \ \ \ expenses:food\ \ \ \ \ $10\ \ \ ;\ food\ purchased\ on\ saturday\ 5/30-\ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ ;\ bank\ cleared\ it\ on\ monday,\ date:6/1-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.j\ register\ food-2015/05/30\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ \ \ \ \ \ \ \ \ \ $10-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.j\ register\ checking-2015/06/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ \ $\-10-\f[]-.fi-.PP-DATE should be a simple date; if the year is not specified it will use-the year of the transaction\[aq]s date.-You can set the secondary date similarly, with \f[C]date2:DATE2\f[].-The \f[C]date:\f[] or \f[C]date2:\f[] tags must have a valid simple date-value if they are present, eg a \f[C]date:\f[] tag with no value is not-allowed.-.PP-Ledger\[aq]s earlier, more compact bracketed date syntax is also-supported: \f[C][DATE]\f[], \f[C][DATE=DATE2]\f[] or \f[C][=DATE2]\f[].-hledger will attempt to parse any square\-bracketed sequence of the-\f[C]0123456789/\-.=\f[] characters in this way.-With this syntax, DATE infers its year from the transaction and DATE2-infers its year from DATE.-.SS Status-.PP-Transactions, or individual postings within a transaction, can have a-status mark, which is a single character before the transaction-description or posting account name, separated from it by a space,-indicating one of three statuses:-.PP-.TS-tab(@);-l l.-T{-mark \ -T}@T{-status-T}-_-T{-\ -T}@T{-unmarked-T}-T{-\f[C]!\f[]-T}@T{-pending-T}-T{-\f[C]*\f[]-T}@T{-cleared-T}-.TE-.PP-When reporting, you can filter by status with the-\f[C]\-U/\-\-unmarked\f[], \f[C]\-P/\-\-pending\f[], and-\f[C]\-C/\-\-cleared\f[] flags; or the \f[C]status:\f[],-\f[C]status:!\f[], and \f[C]status:*\f[] queries; or the U, P, C keys in-hledger\-ui.-.PP-Note, in Ledger and in older versions of hledger, the "unmarked" state-is called "uncleared".-As of hledger 1.3 we have renamed it to unmarked for clarity.-.PP-To replicate Ledger and old hledger\[aq]s behaviour of also matching-pending, combine \-U and \-P.-.PP-Status marks are optional, but can be helpful eg for reconciling with-real\-world accounts.-Some editor modes provide highlighting and shortcuts for working with-status.-Eg in Emacs ledger\-mode, you can toggle transaction status with C\-c-C\-e, or posting status with C\-c C\-c.-.PP-What "uncleared", "pending", and "cleared" actually mean is up to you.-Here\[aq]s one suggestion:-.PP-.TS-tab(@);-lw(10.5n) lw(59.5n).-T{-status-T}@T{-meaning-T}-_-T{-uncleared-T}@T{-recorded but not yet reconciled; needs review-T}-T{-pending-T}@T{-tentatively reconciled (if needed, eg during a big reconciliation)-T}-T{-cleared-T}@T{-complete, reconciled as far as possible, and considered correct-T}-.TE-.PP-With this scheme, you would use \f[C]\-PC\f[] to see the current balance-at your bank, \f[C]\-U\f[] to see things which will probably hit your-bank soon (like uncashed checks), and no flags to see the most-up\-to\-date state of your finances.-.SS Description-.PP-A transaction\[aq]s description is the rest of the line following the-date and status mark (or until a comment begins).-Sometimes called the "narration" in traditional bookkeeping, it can be-used for whatever you wish, or left blank.-Transaction descriptions can be queried, unlike comments.-.SS Payee and note-.PP-You can optionally include a \f[C]|\f[] (pipe) character in a-description to subdivide it into a payee/payer name on the left and-additional notes on the right.-This may be worthwhile if you need to do more precise querying and-pivoting by payee.-.SS Account names-.PP-Account names typically have several parts separated by a full colon,-from which hledger derives a hierarchical chart of accounts.-They can be anything you like, but in finance there are traditionally-five top\-level accounts: \f[C]assets\f[], \f[C]liabilities\f[],-\f[C]income\f[], \f[C]expenses\f[], and \f[C]equity\f[].-.PP-Account names may contain single spaces, eg:-\f[C]assets:accounts\ receivable\f[].-Because of this, they must always be followed by \f[B]two or more-spaces\f[] (or newline).-.PP-Account names can be aliased.-.SS Amounts-.PP-After the account name, there is usually an amount.-Important: between account name and amount, there must be \f[B]two or-more spaces\f[].-.PP-Amounts consist of a number and (usually) a currency symbol or commodity-name.-Some examples:-.PP-\f[C]2.00001\f[]-.PD 0-.P-.PD-\f[C]$1\f[]-.PD 0-.P-.PD-\f[C]4000\ AAPL\f[]-.PD 0-.P-.PD-\f[C]3\ "green\ apples"\f[]-.PD 0-.P-.PD-\f[C]\-$1,000,000.00\f[]-.PD 0-.P-.PD-\f[C]INR\ 9,99,99,999.00\f[]-.PD 0-.P-.PD-\f[C]EUR\ \-2.000.000,00\f[]-.PP-As you can see, the amount format is somewhat flexible:-.IP \[bu] 2-amounts are a number (the "quantity") and optionally a currency-symbol/commodity name (the "commodity").-.IP \[bu] 2-the commodity is a symbol, word, or phrase, on the left or right, with-or without a separating space.-If the commodity contains numbers, spaces or non\-word punctuation it-must be enclosed in double quotes.-.IP \[bu] 2-negative amounts with a commodity on the left can have the minus sign-before or after it-.IP \[bu] 2-digit groups (thousands, or any other grouping) can be separated by-commas (in which case period is used for decimal point) or periods (in-which case comma is used for decimal point)-.PP-You can use any of these variations when recording data, but when-hledger displays amounts, it will choose a consistent format for each-commodity.-(Except for price amounts, which are always formatted as written).-The display format is chosen as follows:-.IP \[bu] 2-if there is a commodity directive specifying the format, that is used-.IP \[bu] 2-otherwise the format is inferred from the first posting amount in that-commodity in the journal, and the precision (number of decimal places)-will be the maximum from all posting amounts in that commmodity-.IP \[bu] 2-or if there are no such amounts in the journal, a default format is used-(like \f[C]$1000.00\f[]).-.PP-Price amounts and amounts in D directives usually don\[aq]t affect-amount format inference, but in some situations they can do so-indirectly.-(Eg when D\[aq]s default commodity is applied to a commodity\-less-amount, or when an amountless posting is balanced using a price\[aq]s-commodity, or when \-V is used.) If you find this causing problems, set-the desired format with a commodity directive.-.SS Virtual Postings-.PP-When you parenthesise the account name in a posting, we call that a-\f[I]virtual posting\f[], which means:-.IP \[bu] 2-it is ignored when checking that the transaction is balanced-.IP \[bu] 2-it is excluded from reports when the \f[C]\-\-real/\-R\f[] flag is used,-or the \f[C]real:1\f[] query.-.PP-You could use this, eg, to set an account\[aq]s opening balance without-needing to use the \f[C]equity:opening\ balances\f[] account:-.IP-.nf-\f[C]-1/1\ special\ unbalanced\ posting\ to\ set\ initial\ balance-\ \ (assets:checking)\ \ \ $1000-\f[]-.fi-.PP-When the account name is bracketed, we call it a \f[I]balanced virtual-posting\f[].-This is like an ordinary virtual posting except the balanced virtual-postings in a transaction must balance to 0, like the real postings (but-separately from them).-Balanced virtual postings are also excluded by \f[C]\-\-real/\-R\f[] or-\f[C]real:1\f[].-.IP-.nf-\f[C]-1/1\ buy\ food\ with\ cash,\ and\ update\ some\ budget\-tracking\ subaccounts\ elsewhere-\ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10-\ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10-\ \ [assets:checking:available]\ \ \ \ \ $10-\ \ [assets:checking:budget:food]\ \ $\-10-\f[]-.fi-.PP-Virtual postings have some legitimate uses, but those are few.-You can usually find an equivalent journal entry using real postings,-which is more correct and provides better error checking.-.SS Balance Assertions-.PP-hledger supports Ledger\-style balance assertions in journal files.-These look like \f[C]=EXPECTEDBALANCE\f[] following a posting\[aq]s-amount.-Eg in this example we assert the expected dollar balance in accounts a-and b after each posting:-.IP-.nf-\f[C]-2013/1/1-\ \ a\ \ \ $1\ \ =$1-\ \ b\ \ \ \ \ \ \ =$\-1--2013/1/2-\ \ a\ \ \ $1\ \ =$2-\ \ b\ \ $\-1\ \ =$\-2-\f[]-.fi-.PP-After reading a journal file, hledger will check all balance assertions-and report an error if any of them fail.-Balance assertions can protect you from, eg, inadvertently disrupting-reconciled balances while cleaning up old entries.-You can disable them temporarily with the-\f[C]\-\-ignore\-assertions\f[] flag, which can be useful for-troubleshooting or for reading Ledger files.-.SS Assertions and ordering-.PP-hledger sorts an account\[aq]s postings and assertions first by date and-then (for postings on the same day) by parse order.-Note this is different from Ledger, which sorts assertions only by parse-order.-(Also, Ledger assertions do not see the accumulated effect of repeated-postings to the same account within a transaction.)-.PP-So, hledger balance assertions keep working if you reorder-differently\-dated transactions within the journal.-But if you reorder same\-dated transactions or postings, assertions-might break and require updating.-This order dependence does bring an advantage: precise control over the-order of postings and assertions within a day, so you can assert-intra\-day balances.-.SS Assertions and included files-.PP-With included files, things are a little more complicated.-Including preserves the ordering of postings and assertions.-If you have multiple postings to an account on the same day, split-across different files, and you also want to assert the account\[aq]s-balance on the same day, you\[aq]ll have to put the assertion in the-right file.-.SS Assertions and multiple \-f options-.PP-Balance assertions don\[aq]t work well across files specified with-multiple \-f options.-Use include or concatenate the files instead.-.SS Assertions and commodities-.PP-The asserted balance must be a simple single\-commodity amount, and in-fact the assertion checks only this commodity\[aq]s balance within the-(possibly multi\-commodity) account balance.-We could call this a partial balance assertion.-This is compatible with Ledger, and makes it possible to make assertions-about accounts containing multiple commodities.-.PP-To assert each commodity\[aq]s balance in such a multi\-commodity-account, you can add multiple postings (with amount 0 if necessary).-But note that no matter how many assertions you add, you can\[aq]t be-sure the account does not contain some unexpected commodity.-(We\[aq]ll add support for this kind of total balance assertion if-there\[aq]s demand.)-.SS Assertions and subaccounts-.PP-Balance assertions do not count the balance from subaccounts; they check-the posted account\[aq]s exclusive balance.-For example:-.IP-.nf-\f[C]-1/1-\ \ checking:fund\ \ \ 1\ =\ 1\ \ ;\ post\ to\ this\ subaccount,\ its\ balance\ is\ now\ 1-\ \ checking\ \ \ \ \ \ \ \ 1\ =\ 1\ \ ;\ post\ to\ the\ parent\ account,\ its\ exclusive\ balance\ is\ now\ 1-\ \ equity-\f[]-.fi-.PP-The balance report\[aq]s flat mode shows these exclusive balances more-clearly:-.IP-.nf-\f[C]-$\ hledger\ bal\ checking\ \-\-flat-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \ checking-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \ checking:fund-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2-\f[]-.fi-.SS Assertions and virtual postings-.PP-Balance assertions are checked against all postings, both real and-virtual.-They are not affected by the \f[C]\-\-real/\-R\f[] flag or-\f[C]real:\f[] query.-.SS Balance Assignments-.PP-Ledger\-style balance assignments are also supported.-These are like balance assertions, but with no posting amount on the-left side of the equals sign; instead it is calculated automatically so-as to satisfy the assertion.-This can be a convenience during data entry, eg when setting opening-balances:-.IP-.nf-\f[C]-;\ starting\ a\ new\ journal,\ set\ asset\ account\ balances\ -2016/1/1\ opening\ balances-\ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ =\ $409.32-\ \ assets:savings\ \ \ \ \ \ \ \ \ \ \ \ \ =\ $735.24-\ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\ $42-\ \ equity:opening\ balances-\f[]-.fi-.PP-or when adjusting a balance to reality:-.IP-.nf-\f[C]-;\ no\ cash\ left;\ update\ balance,\ record\ any\ untracked\ spending\ as\ a\ generic\ expense-2016/1/15-\ \ assets:cash\ \ \ \ =\ $0-\ \ expenses:misc-\f[]-.fi-.PP-The calculated amount depends on the account\[aq]s balance in the-commodity at that point (which depends on the previously\-dated postings-of the commodity to that account since the last balance assertion or-assignment).-Note that using balance assignments makes your journal a little less-explicit; to know the exact amount posted, you have to run hledger or do-the calculations yourself, instead of just reading it.-.SS Prices-.SS Transaction prices-.PP-Within a transaction, you can note an amount\[aq]s price in another-commodity.-This can be used to document the cost (in a purchase) or selling price-(in a sale).-For example, transaction prices are useful to record purchases of a-foreign currency.-.PP-Transaction prices are fixed, and do not change over time.-(Ledger users: Ledger uses a different syntax for fixed prices,-\f[C]{=UNITPRICE}\f[], which hledger currently ignores).-.PP-There are several ways to record a transaction price:-.IP "1." 3-Write the price per unit, as \f[C]\@\ UNITPRICE\f[] after the amount:-.RS 4-.IP-.nf-\f[C]-2009/1/1-\ \ assets:euros\ \ \ \ \ €100\ \@\ $1.35\ \ ;\ one\ hundred\ euros\ purchased\ at\ $1.35\ each-\ \ assets:dollars\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ balancing\ amount\ is\ \-$135.00-\f[]-.fi-.RE-.IP "2." 3-Write the total price, as \f[C]\@\@\ TOTALPRICE\f[] after the amount:-.RS 4-.IP-.nf-\f[C]-2009/1/1-\ \ assets:euros\ \ \ \ \ €100\ \@\@\ $135\ \ ;\ one\ hundred\ euros\ purchased\ at\ $135\ for\ the\ lot-\ \ assets:dollars-\f[]-.fi-.RE-.IP "3." 3-Specify amounts for all postings, using exactly two commodities, and let-hledger infer the price that balances the transaction:-.RS 4-.IP-.nf-\f[C]-2009/1/1-\ \ assets:euros\ \ \ \ \ €100\ \ \ \ \ \ \ \ \ \ ;\ one\ hundred\ euros\ purchased-\ \ assets:dollars\ \ $\-135\ \ \ \ \ \ \ \ \ \ ;\ for\ $135-\f[]-.fi-.RE-.PP-Amounts with transaction prices can be displayed in the transaction-price\[aq]s commodity by using the \f[C]\-B/\-\-cost\f[] flag (except-for #551) ("B" is from "cost Basis").-Eg for the above, here is how \-B affects the balance report:-.IP-.nf-\f[C]-$\ hledger\ bal\ \-N\ \-\-flat-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-135\ \ assets:dollars-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €100\ \ assets:euros-$\ hledger\ bal\ \-N\ \-\-flat\ \-B-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-135\ \ assets:dollars-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $135\ \ assets:euros\ \ \ \ #\ <\-\ the\ euros\[aq]\ cost-\f[]-.fi-.PP-Note \-B is sensitive to the order of postings when a transaction price-is inferred: the inferred price will be in the commodity of the last-amount.-So if example 3\[aq]s postings are reversed, while the transaction is-equivalent, \-B shows something different:-.IP-.nf-\f[C]-2009/1/1-\ \ assets:dollars\ \ $\-135\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ 135\ dollars\ sold-\ \ assets:euros\ \ \ \ \ €100\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ;\ for\ 100\ euros-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ bal\ \-N\ \-\-flat\ \-B-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €\-100\ \ assets:dollars\ \ #\ <\-\ the\ dollars\[aq]\ selling\ price-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €100\ \ assets:euros-\f[]-.fi-.SS Market prices-.PP-Market prices are not tied to a particular transaction; they represent-historical exchange rates between two commodities.-(Ledger calls them historical prices.) For example, the prices published-by a stock exchange or the foreign exchange market.-hledger can use these prices to show the market value of things at a-given date, see market value.-.PP-To record market prices, use P directives in the main journal or in an-included file.-Their format is:-.IP-.nf-\f[C]-P\ DATE\ COMMODITYBEINGPRICED\ UNITPRICE-\f[]-.fi-.PP-DATE is a simple date as usual.-COMMODITYBEINGPRICED is the symbol of the commodity being priced.-UNITPRICE is an ordinary amount (symbol and quantity) in a second-commodity, specifying the unit price or conversion rate for the first-commodity in terms of the second, on the given date.-.PP-For example, the following directives say that one euro was worth 1.35-US dollars during 2009, and $1.40 from 2010 onward:-.IP-.nf-\f[C]-P\ 2009/1/1\ €\ $1.35-P\ 2010/1/1\ €\ $1.40-\f[]-.fi-.SS Comments-.PP-Lines in the journal beginning with a semicolon (\f[C];\f[]) or hash-(\f[C]#\f[]) or asterisk (\f[C]*\f[]) are comments, and will be ignored.-(Asterisk comments make it easy to treat your journal like an org\-mode-outline in emacs.)-.PP-Also, anything between \f[C]comment\f[] and \f[C]end\ comment\f[]-directives is a (multi\-line) comment.-If there is no \f[C]end\ comment\f[], the comment extends to the end of-the file.-.PP-You can attach comments to a transaction by writing them after the-description and/or indented on the following lines (before the-postings).-Similarly, you can attach comments to an individual posting by writing-them after the amount and/or indented on the following lines.-.PP-Some examples:-.IP-.nf-\f[C]-#\ a\ journal\ comment--;\ also\ a\ journal\ comment--comment-This\ is\ a\ multiline\ comment,-which\ continues\ until\ a\ line-where\ the\ "end\ comment"\ string-appears\ on\ its\ own.-end\ comment--2012/5/14\ something\ \ ;\ a\ transaction\ comment-\ \ \ \ ;\ the\ transaction\ comment,\ continued-\ \ \ \ posting1\ \ 1\ \ ;\ a\ comment\ for\ posting\ 1-\ \ \ \ posting2-\ \ \ \ ;\ a\ comment\ for\ posting\ 2-\ \ \ \ ;\ another\ comment\ line\ for\ posting\ 2-;\ a\ journal\ comment\ (because\ not\ indented)-\f[]-.fi-.SS Tags-.PP-Tags are a way to add extra labels or labelled data to postings and-transactions, which you can then search or pivot on.-.PP-A simple tag is a word (which may contain hyphens) followed by a full-colon, written inside a transaction or posting comment line:-.IP-.nf-\f[C]-2017/1/16\ bought\ groceries\ \ \ \ ;\ sometag:-\f[]-.fi-.PP-Tags can have a value, which is the text after the colon, up to the next-comma or end of line, with leading/trailing whitespace removed:-.IP-.nf-\f[C]-\ \ \ \ expenses:food\ \ \ \ $10\ \ \ ;\ a\-posting\-tag:\ the\ tag\ value-\f[]-.fi-.PP-Note this means hledger\[aq]s tag values can not contain commas or-newlines.-Ending at commas means you can write multiple short tags on one line,-comma separated:-.IP-.nf-\f[C]-\ \ \ \ assets:checking\ \ \ \ \ \ \ ;\ a\ comment\ containing\ tag1:,\ tag2:\ some\ value\ ...-\f[]-.fi-.PP-Here,-.IP \[bu] 2-"\f[C]a\ comment\ containing\f[]" is just comment text, not a tag-.IP \[bu] 2-"\f[C]tag1\f[]" is a tag with no value-.IP \[bu] 2-"\f[C]tag2\f[]" is another tag, whose value is-"\f[C]some\ value\ ...\f[]"-.PP-Tags in a transaction comment affect the transaction and all of its-postings, while tags in a posting comment affect only that posting.-For example, the following transaction has three tags (\f[C]A\f[],-\f[C]TAG2\f[], \f[C]third\-tag\f[]) and the posting has four (those plus-\f[C]posting\-tag\f[]):-.IP-.nf-\f[C]-1/1\ a\ transaction\ \ ;\ A:,\ TAG2:-\ \ \ \ ;\ third\-tag:\ a\ third\ transaction\ tag,\ <\-\ with\ a\ value-\ \ \ \ (a)\ \ $1\ \ ;\ posting\-tag:-\f[]-.fi-.PP-Tags are like Ledger\[aq]s metadata feature, except hledger\[aq]s tag-values are simple strings.-.SS Directives-.SS Account aliases-.PP-You can define aliases which rewrite your account names (after reading-the journal, before generating reports).-hledger\[aq]s account aliases can be useful for:-.IP \[bu] 2-expanding shorthand account names to their full form, allowing easier-data entry and a less verbose journal-.IP \[bu] 2-adapting old journals to your current chart of accounts-.IP \[bu] 2-experimenting with new account organisations, like a new hierarchy or-combining two accounts into one-.IP \[bu] 2-customising reports-.PP-See also Cookbook: rewrite account names.-.SS Basic aliases-.PP-To set an account alias, use the \f[C]alias\f[] directive in your-journal file.-This affects all subsequent journal entries in the current file or its-included files.-The spaces around the = are optional:-.IP-.nf-\f[C]-alias\ OLD\ =\ NEW-\f[]-.fi-.PP-Or, you can use the \f[C]\-\-alias\ \[aq]OLD=NEW\[aq]\f[] option on the-command line.-This affects all entries.-It\[aq]s useful for trying out aliases interactively.-.PP-OLD and NEW are full account names.-hledger will replace any occurrence of the old account name with the new-one.-Subaccounts are also affected.-Eg:-.IP-.nf-\f[C]-alias\ checking\ =\ assets:bank:wells\ fargo:checking-#\ rewrites\ "checking"\ to\ "assets:bank:wells\ fargo:checking",\ or\ "checking:a"\ to\ "assets:bank:wells\ fargo:checking:a"-\f[]-.fi-.SS Regex aliases-.PP-There is also a more powerful variant that uses a regular expression,-indicated by the forward slashes:-.IP-.nf-\f[C]-alias\ /REGEX/\ =\ REPLACEMENT-\f[]-.fi-.PP-or \f[C]\-\-alias\ \[aq]/REGEX/=REPLACEMENT\[aq]\f[].-.PP-REGEX is a case\-insensitive regular expression.-Anywhere it matches inside an account name, the matched part will be-replaced by REPLACEMENT.-If REGEX contains parenthesised match groups, these can be referenced by-the usual numeric backreferences in REPLACEMENT.-Eg:-.IP-.nf-\f[C]-alias\ /^(.+):bank:([^:]+)(.*)/\ =\ \\1:\\2\ \\3-#\ rewrites\ "assets:bank:wells\ fargo:checking"\ to\ \ "assets:wells\ fargo\ checking"-\f[]-.fi-.PP-Also note that REPLACEMENT continues to the end of line (or on command-line, to end of option argument), so it can contain trailing whitespace.-.SS Multiple aliases-.PP-You can define as many aliases as you like using directives or-command\-line options.-Aliases are recursive \- each alias sees the result of applying previous-ones.-(This is different from Ledger, where aliases are non\-recursive by-default).-Aliases are applied in the following order:-.IP "1." 3-alias directives, most recently seen first (recent directives take-precedence over earlier ones; directives not yet seen are ignored)-.IP "2." 3-alias options, in the order they appear on the command line-.SS end aliases-.PP-You can clear (forget) all currently defined aliases with the-\f[C]end\ aliases\f[] directive:-.IP-.nf-\f[C]-end\ aliases-\f[]-.fi-.SS account directive-.PP-The \f[C]account\f[] directive predefines account names, as in Ledger-and Beancount.-This may be useful for your own documentation; hledger doesn\[aq]t make-use of it yet.-.IP-.nf-\f[C]-;\ account\ ACCT-;\ \ \ OPTIONAL\ COMMENTS/TAGS...--account\ assets:bank:checking-\ a\ comment-\ acct\-no:12345--account\ expenses:food--;\ etc.-\f[]-.fi-.SS apply account directive-.PP-You can specify a parent account which will be prepended to all accounts-within a section of the journal.-Use the \f[C]apply\ account\f[] and \f[C]end\ apply\ account\f[]-directives like so:-.IP-.nf-\f[C]-apply\ account\ home--2010/1/1-\ \ \ \ food\ \ \ \ $10-\ \ \ \ cash--end\ apply\ account-\f[]-.fi-.PP-which is equivalent to:-.IP-.nf-\f[C]-2010/01/01-\ \ \ \ home:food\ \ \ \ \ \ \ \ \ \ \ $10-\ \ \ \ home:cash\ \ \ \ \ \ \ \ \ \ $\-10-\f[]-.fi-.PP-If \f[C]end\ apply\ account\f[] is omitted, the effect lasts to the end-of the file.-Included files are also affected, eg:-.IP-.nf-\f[C]-apply\ account\ business-include\ biz.journal-end\ apply\ account-apply\ account\ personal-include\ personal.journal-\f[]-.fi-.PP-Prior to hledger 1.0, legacy \f[C]account\f[] and \f[C]end\f[] spellings-were also supported.-.SS Multi\-line comments-.PP-A line containing just \f[C]comment\f[] starts a multi\-line comment,-and a line containing just \f[C]end\ comment\f[] ends it.-See comments.-.SS commodity directive-.PP-The \f[C]commodity\f[] directive predefines commodities (currently this-is just informational), and also it may define the display format for-amounts in this commodity (overriding the automatically inferred-format).-.PP-It may be written on a single line, like this:-.IP-.nf-\f[C]-;\ commodity\ EXAMPLEAMOUNT--;\ display\ AAAA\ amounts\ with\ the\ symbol\ on\ the\ right,\ space\-separated,-;\ using\ period\ as\ decimal\ point,\ with\ four\ decimal\ places,\ and-;\ separating\ thousands\ with\ comma.-commodity\ 1,000.0000\ AAAA-\f[]-.fi-.PP-or on multiple lines, using the "format" subdirective.-In this case the commodity symbol appears twice and should be the same-in both places:-.IP-.nf-\f[C]-;\ commodity\ SYMBOL-;\ \ \ format\ EXAMPLEAMOUNT--;\ display\ indian\ rupees\ with\ currency\ name\ on\ the\ left,-;\ thousands,\ lakhs\ and\ crores\ comma\-separated,-;\ period\ as\ decimal\ point,\ and\ two\ decimal\ places.-commodity\ INR-\ \ format\ INR\ 9,99,99,999.00-\f[]-.fi-.SS Default commodity-.PP-The D directive sets a default commodity (and display format), to be-used for amounts without a commodity symbol (ie, plain numbers).-(Note this differs from Ledger\[aq]s default commodity directive.) The-commodity and display format will be applied to all subsequent-commodity\-less amounts, or until the next D directive.-.IP-.nf-\f[C]-#\ commodity\-less\ amounts\ should\ be\ treated\ as\ dollars-#\ (and\ displayed\ with\ symbol\ on\ the\ left,\ thousands\ separators\ and\ two\ decimal\ places)-D\ $1,000.00--1/1-\ \ a\ \ \ \ \ 5\ \ \ \ #\ <\-\ commodity\-less\ amount,\ becomes\ $1-\ \ b-\f[]-.fi-.SS Default year-.PP-You can set a default year to be used for subsequent dates which-don\[aq]t specify a year.-This is a line beginning with \f[C]Y\f[] followed by the year.-Eg:-.IP-.nf-\f[C]-Y2009\ \ \ \ \ \ ;\ set\ default\ year\ to\ 2009--12/15\ \ \ \ \ \ ;\ equivalent\ to\ 2009/12/15-\ \ expenses\ \ 1-\ \ assets--Y2010\ \ \ \ \ \ ;\ change\ default\ year\ to\ 2010--2009/1/30\ \ ;\ specifies\ the\ year,\ not\ affected-\ \ expenses\ \ 1-\ \ assets--1/31\ \ \ \ \ \ \ ;\ equivalent\ to\ 2010/1/31-\ \ expenses\ \ 1-\ \ assets-\f[]-.fi-.SS Including other files-.PP-You can pull in the content of additional journal files by writing an-include directive, like this:-.IP-.nf-\f[C]-include\ path/to/file.journal-\f[]-.fi-.PP-If the path does not begin with a slash, it is relative to the current-file.-Glob patterns (\f[C]*\f[]) are not currently supported.-.PP-The \f[C]include\f[] directive can only be used in journal files.-It can include journal, timeclock or timedot files, but not CSV files.-.SH EDITOR SUPPORT-.PP-Add\-on modes exist for various text editors, to make working with-journal files easier.-They add colour, navigation aids and helpful commands.-For hledger users who edit the journal file directly (the majority),-using one of these modes is quite recommended.-.PP-These were written with Ledger in mind, but also work with hledger-files:-.PP-.TS-tab(@);-lw(16.5n) lw(51.5n).-T{-Emacs-T}@T{-http://www.ledger\-cli.org/3.0/doc/ledger\-mode.html-T}-T{-Vim-T}@T{-https://github.com/ledger/ledger/wiki/Getting\-started-T}-T{-Sublime Text-T}@T{-https://github.com/ledger/ledger/wiki/Using\-Sublime\-Text-T}-T{-Textmate-T}@T{-https://github.com/ledger/ledger/wiki/Using\-TextMate\-2-T}-T{-Text Wrangler \ -T}@T{-https://github.com/ledger/ledger/wiki/Editing\-Ledger\-files\-with\-TextWrangler-T}-T{-Visual Studio Code-T}@T{-https://marketplace.visualstudio.com/items?itemName=mark\-hansen.hledger\-vscode-T}-.TE---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/other/hledger_journal.5.info
@@ -1,1147 +0,0 @@-This is hledger_journal.5.info, produced by makeinfo version 6.0 from-stdin.---File: hledger_journal.5.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir)--hledger_journal(5) hledger 1.4-******************************--hledger's usual data source is a plain text file containing journal-entries in hledger journal format.  This file represents a standard-accounting general journal.  I use file names ending in '.journal', but-that's not required.  The journal file contains a number of transaction-entries, each describing a transfer of money (or any commodity) between-two or more named accounts, in a simple format readable by both hledger-and humans.--   hledger's journal format is a compatible subset, mostly, of ledger's-journal format, so hledger can work with compatible ledger journal files-as well.  It's safe, and encouraged, to run both hledger and ledger on-the same journal file, eg to validate the results you're getting.--   You can use hledger without learning any more about this file; just-use the add or web commands to create and update it.  Many users,-though, also edit the journal file directly with a text editor, perhaps-assisted by the helper modes for emacs or vim.--   Here's an example:--; A sample journal file. This is a comment.--2008/01/01 income               ; <- transaction's first line starts in column 0, contains date and description-    assets:bank:checking  $1    ; <- posting lines start with whitespace, each contains an account name-    income:salary        $-1    ;    followed by at least two spaces and an amount--2008/06/01 gift-    assets:bank:checking  $1    ; <- at least two postings in a transaction-    income:gifts         $-1    ; <- their amounts must balance to 0--2008/06/02 save-    assets:bank:saving    $1-    assets:bank:checking        ; <- one amount may be omitted; here $-1 is inferred--2008/06/03 eat & shop           ; <- description can be anything-    expenses:food         $1-    expenses:supplies     $1    ; <- this transaction debits two expense accounts-    assets:cash                 ; <- $-2 inferred--2008/10/01 take a loan-    assets:bank:checking  $1-    liabilities:debts    $-1--2008/12/31 * pay off            ; <- an optional * or ! after the date means "cleared" (or anything you want)-    liabilities:debts     $1-    assets:bank:checking--* Menu:--* FILE FORMAT::-* EDITOR SUPPORT::---File: hledger_journal.5.info,  Node: FILE FORMAT,  Next: EDITOR SUPPORT,  Prev: Top,  Up: Top--1 FILE FORMAT-*************--* Menu:--* Transactions::-* Postings::-* Dates::-* Status::-* Description::-* Account names::-* Amounts::-* Virtual Postings::-* Balance Assertions::-* Balance Assignments::-* Prices::-* Comments::-* Tags::-* Directives::---File: hledger_journal.5.info,  Node: Transactions,  Next: Postings,  Up: FILE FORMAT--1.1 Transactions-================--Transactions are movements of some quantity of commodities between named-accounts.  Each transaction is represented by a journal entry beginning-with a simple date in column 0.  This can be followed by any of the-following, separated by spaces:--   * (optional) a status character (empty, '!', or '*')-   * (optional) a transaction code (any short number or text, enclosed-     in parentheses)-   * (optional) a transaction description (any remaining text until end-     of line or a semicolon)-   * (optional) a transaction comment (any remaining text following a-     semicolon until end of line)--   Then comes zero or more (but usually at least 2) indented lines-representing...---File: hledger_journal.5.info,  Node: Postings,  Next: Dates,  Prev: Transactions,  Up: FILE FORMAT--1.2 Postings-============--A posting is an addition of some amount to, or removal of some amount-from, an account.  Each posting line begins with at least one space or-tab (2 or 4 spaces is common), followed by:--   * (optional) a status character (empty, '!', or '*'), followed by a-     space-   * (required) an account name (any text, optionally containing *single-     spaces*, until end of line or a double space)-   * (optional) *two or more spaces* or tabs followed by an amount.--   Positive amounts are being added to the account, negative amounts are-being removed.--   The amounts within a transaction must always sum up to zero.  As a-convenience, one amount may be left blank; it will be inferred so as to-balance the transaction.--   Be sure to note the unusual two-space delimiter between account name-and amount.  This makes it easy to write account names containing-spaces.  But if you accidentally leave only one space (or tab) before-the amount, the amount will be considered part of the account name.---File: hledger_journal.5.info,  Node: Dates,  Next: Status,  Prev: Postings,  Up: FILE FORMAT--1.3 Dates-=========--* Menu:--* Simple dates::-* Secondary dates::-* Posting dates::---File: hledger_journal.5.info,  Node: Simple dates,  Next: Secondary dates,  Up: Dates--1.3.1 Simple dates---------------------Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)-Leading zeros are optional.  The year may be omitted, in which case it-will be inferred from the context - the current transaction, the default-year set with a default year directive, or the current date when the-command is run.  Some examples: '2010/01/31', '1/31', '2010-01-31',-'2010.1.31'.---File: hledger_journal.5.info,  Node: Secondary dates,  Next: Posting dates,  Prev: Simple dates,  Up: Dates--1.3.2 Secondary dates------------------------Real-life transactions sometimes involve more than one date - eg the-date you write a cheque, and the date it clears in your bank.  When you-want to model this, eg for more accurate balances, you can specify-individual posting dates, which I recommend.  Or, you can use the-secondary dates (aka auxiliary/effective dates) feature, supported for-compatibility with Ledger.--   A secondary date can be written after the primary date, separated by-an equals sign.  The primary date, on the left, is used by default; the-secondary date, on the right, is used when the '--date2' flag is-specified ('--aux-date' or '--effective' also work).--   The meaning of secondary dates is up to you, but it's best to follow-a consistent rule.  Eg write the bank's clearing date as primary, and-when needed, the date the transaction was initiated as secondary.--   Here's an example.  Note that a secondary date will use the year of-the primary date if unspecified.--2010/2/23=2/19 movie ticket-  expenses:cinema                   $10-  assets:checking--$ hledger register checking-2010/02/23 movie ticket         assets:checking                $-10         $-10--$ hledger register checking --date2-2010/02/19 movie ticket         assets:checking                $-10         $-10--   Secondary dates require some effort; you must use them consistently-in your journal entries and remember whether to use or not use the-'--date2' flag for your reports.  They are included in hledger for-Ledger compatibility, but posting dates are a more powerful and less-confusing alternative.---File: hledger_journal.5.info,  Node: Posting dates,  Prev: Secondary dates,  Up: Dates--1.3.3 Posting dates----------------------You can give individual postings a different date from their parent-transaction, by adding a posting comment containing a tag (see below)-like 'date:DATE'.  This is probably the best way to control posting-dates precisely.  Eg in this example the expense should appear in May-reports, and the deduction from checking should be reported on 6/1 for-easy bank reconciliation:--2015/5/30-    expenses:food     $10   ; food purchased on saturday 5/30-    assets:checking         ; bank cleared it on monday, date:6/1--$ hledger -f t.j register food-2015/05/30                      expenses:food                  $10           $10--$ hledger -f t.j register checking-2015/06/01                      assets:checking               $-10          $-10--   DATE should be a simple date; if the year is not specified it will-use the year of the transaction's date.  You can set the secondary date-similarly, with 'date2:DATE2'.  The 'date:' or 'date2:' tags must have a-valid simple date value if they are present, eg a 'date:' tag with no-value is not allowed.--   Ledger's earlier, more compact bracketed date syntax is also-supported: '[DATE]', '[DATE=DATE2]' or '[=DATE2]'.  hledger will attempt-to parse any square-bracketed sequence of the '0123456789/-.='-characters in this way.  With this syntax, DATE infers its year from the-transaction and DATE2 infers its year from DATE.---File: hledger_journal.5.info,  Node: Status,  Next: Description,  Prev: Dates,  Up: FILE FORMAT--1.4 Status-==========--Transactions, or individual postings within a transaction, can have a-status mark, which is a single character before the transaction-description or posting account name, separated from it by a space,-indicating one of three statuses:--mark  status- -------------------      unmarked-'!'   pending-'*'   cleared--   When reporting, you can filter by status with the '-U/--unmarked',-'-P/--pending', and '-C/--cleared' flags; or the 'status:', 'status:!',-and 'status:*' queries; or the U, P, C keys in hledger-ui.--   Note, in Ledger and in older versions of hledger, the "unmarked"-state is called "uncleared".  As of hledger 1.3 we have renamed it to-unmarked for clarity.--   To replicate Ledger and old hledger's behaviour of also matching-pending, combine -U and -P.--   Status marks are optional, but can be helpful eg for reconciling with-real-world accounts.  Some editor modes provide highlighting and-shortcuts for working with status.  Eg in Emacs ledger-mode, you can-toggle transaction status with C-c C-e, or posting status with C-c C-c.--   What "uncleared", "pending", and "cleared" actually mean is up to-you.  Here's one suggestion:--status      meaning----------------------------------------------------------------------------uncleared   recorded but not yet reconciled; needs review-pending     tentatively reconciled (if needed, eg during a big-            reconciliation)-cleared     complete, reconciled as far as possible, and considered-            correct--   With this scheme, you would use '-PC' to see the current balance at-your bank, '-U' to see things which will probably hit your bank soon-(like uncashed checks), and no flags to see the most up-to-date state of-your finances.---File: hledger_journal.5.info,  Node: Description,  Next: Account names,  Prev: Status,  Up: FILE FORMAT--1.5 Description-===============--A transaction's description is the rest of the line following the date-and status mark (or until a comment begins).  Sometimes called the-"narration" in traditional bookkeeping, it can be used for whatever you-wish, or left blank.  Transaction descriptions can be queried, unlike-comments.-* Menu:--* Payee and note::---File: hledger_journal.5.info,  Node: Payee and note,  Up: Description--1.5.1 Payee and note-----------------------You can optionally include a '|' (pipe) character in a description to-subdivide it into a payee/payer name on the left and additional notes on-the right.  This may be worthwhile if you need to do more precise-querying and pivoting by payee.---File: hledger_journal.5.info,  Node: Account names,  Next: Amounts,  Prev: Description,  Up: FILE FORMAT--1.6 Account names-=================--Account names typically have several parts separated by a full colon,-from which hledger derives a hierarchical chart of accounts.  They can-be anything you like, but in finance there are traditionally five-top-level accounts: 'assets', 'liabilities', 'income', 'expenses', and-'equity'.--   Account names may contain single spaces, eg: 'assets:accounts-receivable'.  Because of this, they must always be followed by *two or-more spaces* (or newline).--   Account names can be aliased.---File: hledger_journal.5.info,  Node: Amounts,  Next: Virtual Postings,  Prev: Account names,  Up: FILE FORMAT--1.7 Amounts-===========--After the account name, there is usually an amount.  Important: between-account name and amount, there must be *two or more spaces*.--   Amounts consist of a number and (usually) a currency symbol or-commodity name.  Some examples:--   '2.00001'-'$1'-'4000 AAPL'-'3 "green apples"'-'-$1,000,000.00'-'INR 9,99,99,999.00'-'EUR -2.000.000,00'--   As you can see, the amount format is somewhat flexible:--   * amounts are a number (the "quantity") and optionally a currency-     symbol/commodity name (the "commodity").-   * the commodity is a symbol, word, or phrase, on the left or right,-     with or without a separating space.  If the commodity contains-     numbers, spaces or non-word punctuation it must be enclosed in-     double quotes.-   * negative amounts with a commodity on the left can have the minus-     sign before or after it-   * digit groups (thousands, or any other grouping) can be separated by-     commas (in which case period is used for decimal point) or periods-     (in which case comma is used for decimal point)--   You can use any of these variations when recording data, but when-hledger displays amounts, it will choose a consistent format for each-commodity.  (Except for price amounts, which are always formatted as-written).  The display format is chosen as follows:--   * if there is a commodity directive specifying the format, that is-     used-   * otherwise the format is inferred from the first posting amount in-     that commodity in the journal, and the precision (number of decimal-     places) will be the maximum from all posting amounts in that-     commmodity-   * or if there are no such amounts in the journal, a default format is-     used (like '$1000.00').--   Price amounts and amounts in D directives usually don't affect amount-format inference, but in some situations they can do so indirectly.  (Eg-when D's default commodity is applied to a commodity-less amount, or-when an amountless posting is balanced using a price's commodity, or-when -V is used.)  If you find this causing problems, set the desired-format with a commodity directive.---File: hledger_journal.5.info,  Node: Virtual Postings,  Next: Balance Assertions,  Prev: Amounts,  Up: FILE FORMAT--1.8 Virtual Postings-====================--When you parenthesise the account name in a posting, we call that a-_virtual posting_, which means:--   * it is ignored when checking that the transaction is balanced-   * it is excluded from reports when the '--real/-R' flag is used, or-     the 'real:1' query.--   You could use this, eg, to set an account's opening balance without-needing to use the 'equity:opening balances' account:--1/1 special unbalanced posting to set initial balance-  (assets:checking)   $1000--   When the account name is bracketed, we call it a _balanced virtual-posting_.  This is like an ordinary virtual posting except the balanced-virtual postings in a transaction must balance to 0, like the real-postings (but separately from them).  Balanced virtual postings are also-excluded by '--real/-R' or 'real:1'.--1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere-  expenses:food                   $10-  assets:cash                    $-10-  [assets:checking:available]     $10-  [assets:checking:budget:food]  $-10--   Virtual postings have some legitimate uses, but those are few.  You-can usually find an equivalent journal entry using real postings, which-is more correct and provides better error checking.---File: hledger_journal.5.info,  Node: Balance Assertions,  Next: Balance Assignments,  Prev: Virtual Postings,  Up: FILE FORMAT--1.9 Balance Assertions-======================--hledger supports Ledger-style balance assertions in journal files.-These look like '=EXPECTEDBALANCE' following a posting's amount.  Eg in-this example we assert the expected dollar balance in accounts a and b-after each posting:--2013/1/1-  a   $1  =$1-  b       =$-1--2013/1/2-  a   $1  =$2-  b  $-1  =$-2--   After reading a journal file, hledger will check all balance-assertions and report an error if any of them fail.  Balance assertions-can protect you from, eg, inadvertently disrupting reconciled balances-while cleaning up old entries.  You can disable them temporarily with-the '--ignore-assertions' flag, which can be useful for troubleshooting-or for reading Ledger files.-* Menu:--* Assertions and ordering::-* Assertions and included files::-* Assertions and multiple -f options::-* Assertions and commodities::-* Assertions and subaccounts::-* Assertions and virtual postings::---File: hledger_journal.5.info,  Node: Assertions and ordering,  Next: Assertions and included files,  Up: Balance Assertions--1.9.1 Assertions and ordering--------------------------------hledger sorts an account's postings and assertions first by date and-then (for postings on the same day) by parse order.  Note this is-different from Ledger, which sorts assertions only by parse order.-(Also, Ledger assertions do not see the accumulated effect of repeated-postings to the same account within a transaction.)--   So, hledger balance assertions keep working if you reorder-differently-dated transactions within the journal.  But if you reorder-same-dated transactions or postings, assertions might break and require-updating.  This order dependence does bring an advantage: precise-control over the order of postings and assertions within a day, so you-can assert intra-day balances.---File: hledger_journal.5.info,  Node: Assertions and included files,  Next: Assertions and multiple -f options,  Prev: Assertions and ordering,  Up: Balance Assertions--1.9.2 Assertions and included files--------------------------------------With included files, things are a little more complicated.  Including-preserves the ordering of postings and assertions.  If you have multiple-postings to an account on the same day, split across different files,-and you also want to assert the account's balance on the same day,-you'll have to put the assertion in the right file.---File: hledger_journal.5.info,  Node: Assertions and multiple -f options,  Next: Assertions and commodities,  Prev: Assertions and included files,  Up: Balance Assertions--1.9.3 Assertions and multiple -f options-------------------------------------------Balance assertions don't work well across files specified with multiple--f options.  Use include or concatenate the files instead.---File: hledger_journal.5.info,  Node: Assertions and commodities,  Next: Assertions and subaccounts,  Prev: Assertions and multiple -f options,  Up: Balance Assertions--1.9.4 Assertions and commodities-----------------------------------The asserted balance must be a simple single-commodity amount, and in-fact the assertion checks only this commodity's balance within the-(possibly multi-commodity) account balance.  We could call this a-partial balance assertion.  This is compatible with Ledger, and makes it-possible to make assertions about accounts containing multiple-commodities.--   To assert each commodity's balance in such a multi-commodity account,-you can add multiple postings (with amount 0 if necessary).  But note-that no matter how many assertions you add, you can't be sure the-account does not contain some unexpected commodity.  (We'll add support-for this kind of total balance assertion if there's demand.)---File: hledger_journal.5.info,  Node: Assertions and subaccounts,  Next: Assertions and virtual postings,  Prev: Assertions and commodities,  Up: Balance Assertions--1.9.5 Assertions and subaccounts-----------------------------------Balance assertions do not count the balance from subaccounts; they check-the posted account's exclusive balance.  For example:--1/1-  checking:fund   1 = 1  ; post to this subaccount, its balance is now 1-  checking        1 = 1  ; post to the parent account, its exclusive balance is now 1-  equity--   The balance report's flat mode shows these exclusive balances more-clearly:--$ hledger bal checking --flat-                   1  checking-                   1  checking:fund----------------------                   2---File: hledger_journal.5.info,  Node: Assertions and virtual postings,  Prev: Assertions and subaccounts,  Up: Balance Assertions--1.9.6 Assertions and virtual postings----------------------------------------Balance assertions are checked against all postings, both real and-virtual.  They are not affected by the '--real/-R' flag or 'real:'-query.---File: hledger_journal.5.info,  Node: Balance Assignments,  Next: Prices,  Prev: Balance Assertions,  Up: FILE FORMAT--1.10 Balance Assignments-========================--Ledger-style balance assignments are also supported.  These are like-balance assertions, but with no posting amount on the left side of the-equals sign; instead it is calculated automatically so as to satisfy the-assertion.  This can be a convenience during data entry, eg when setting-opening balances:--; starting a new journal, set asset account balances-2016/1/1 opening balances-  assets:checking            = $409.32-  assets:savings             = $735.24-  assets:cash                 = $42-  equity:opening balances--   or when adjusting a balance to reality:--; no cash left; update balance, record any untracked spending as a generic expense-2016/1/15-  assets:cash    = $0-  expenses:misc--   The calculated amount depends on the account's balance in the-commodity at that point (which depends on the previously-dated postings-of the commodity to that account since the last balance assertion or-assignment).  Note that using balance assignments makes your journal a-little less explicit; to know the exact amount posted, you have to run-hledger or do the calculations yourself, instead of just reading it.---File: hledger_journal.5.info,  Node: Prices,  Next: Comments,  Prev: Balance Assignments,  Up: FILE FORMAT--1.11 Prices-===========--* Menu:--* Transaction prices::-* Market prices::---File: hledger_journal.5.info,  Node: Transaction prices,  Next: Market prices,  Up: Prices--1.11.1 Transaction prices----------------------------Within a transaction, you can note an amount's price in another-commodity.  This can be used to document the cost (in a purchase) or-selling price (in a sale).  For example, transaction prices are useful-to record purchases of a foreign currency.--   Transaction prices are fixed, and do not change over time.  (Ledger-users: Ledger uses a different syntax for fixed prices, '{=UNITPRICE}',-which hledger currently ignores).--   There are several ways to record a transaction price:--  1. Write the price per unit, as '@ UNITPRICE' after the amount:--     2009/1/1-       assets:euros     €100 @ $1.35  ; one hundred euros purchased at $1.35 each-       assets:dollars                 ; balancing amount is -$135.00--  2. Write the total price, as '@@ TOTALPRICE' after the amount:--     2009/1/1-       assets:euros     €100 @@ $135  ; one hundred euros purchased at $135 for the lot-       assets:dollars--  3. Specify amounts for all postings, using exactly two commodities,-     and let hledger infer the price that balances the transaction:--     2009/1/1-       assets:euros     €100          ; one hundred euros purchased-       assets:dollars  $-135          ; for $135--   Amounts with transaction prices can be displayed in the transaction-price's commodity by using the '-B/--cost' flag (except for #551) ("B"-is from "cost Basis").  Eg for the above, here is how -B affects the-balance report:--$ hledger bal -N --flat-               $-135  assets:dollars-                €100  assets:euros-$ hledger bal -N --flat -B-               $-135  assets:dollars-                $135  assets:euros    # <- the euros' cost--   Note -B is sensitive to the order of postings when a transaction-price is inferred: the inferred price will be in the commodity of the-last amount.  So if example 3's postings are reversed, while the-transaction is equivalent, -B shows something different:--2009/1/1-  assets:dollars  $-135               ; 135 dollars sold-  assets:euros     €100               ; for 100 euros--$ hledger bal -N --flat -B-               €-100  assets:dollars  # <- the dollars' selling price-                €100  assets:euros---File: hledger_journal.5.info,  Node: Market prices,  Prev: Transaction prices,  Up: Prices--1.11.2 Market prices-----------------------Market prices are not tied to a particular transaction; they represent-historical exchange rates between two commodities.  (Ledger calls them-historical prices.)  For example, the prices published by a stock-exchange or the foreign exchange market.  hledger can use these prices-to show the market value of things at a given date, see market value.--   To record market prices, use P directives in the main journal or in-an included file.  Their format is:--P DATE COMMODITYBEINGPRICED UNITPRICE--   DATE is a simple date as usual.  COMMODITYBEINGPRICED is the symbol-of the commodity being priced.  UNITPRICE is an ordinary amount (symbol-and quantity) in a second commodity, specifying the unit price or-conversion rate for the first commodity in terms of the second, on the-given date.--   For example, the following directives say that one euro was worth-1.35 US dollars during 2009, and $1.40 from 2010 onward:--P 2009/1/1 € $1.35-P 2010/1/1 € $1.40---File: hledger_journal.5.info,  Node: Comments,  Next: Tags,  Prev: Prices,  Up: FILE FORMAT--1.12 Comments-=============--Lines in the journal beginning with a semicolon (';') or hash ('#') or-asterisk ('*') are comments, and will be ignored.  (Asterisk comments-make it easy to treat your journal like an org-mode outline in emacs.)--   Also, anything between 'comment' and 'end comment' directives is a-(multi-line) comment.  If there is no 'end comment', the comment extends-to the end of the file.--   You can attach comments to a transaction by writing them after the-description and/or indented on the following lines (before the-postings).  Similarly, you can attach comments to an individual posting-by writing them after the amount and/or indented on the following lines.--   Some examples:--# a journal comment--; also a journal comment--comment-This is a multiline comment,-which continues until a line-where the "end comment" string-appears on its own.-end comment--2012/5/14 something  ; a transaction comment-    ; the transaction comment, continued-    posting1  1  ; a comment for posting 1-    posting2-    ; a comment for posting 2-    ; another comment line for posting 2-; a journal comment (because not indented)---File: hledger_journal.5.info,  Node: Tags,  Next: Directives,  Prev: Comments,  Up: FILE FORMAT--1.13 Tags-=========--Tags are a way to add extra labels or labelled data to postings and-transactions, which you can then search or pivot on.--   A simple tag is a word (which may contain hyphens) followed by a full-colon, written inside a transaction or posting comment line:--2017/1/16 bought groceries    ; sometag:--   Tags can have a value, which is the text after the colon, up to the-next comma or end of line, with leading/trailing whitespace removed:--    expenses:food    $10   ; a-posting-tag: the tag value--   Note this means hledger's tag values can not contain commas or-newlines.  Ending at commas means you can write multiple short tags on-one line, comma separated:--    assets:checking       ; a comment containing tag1:, tag2: some value ...--   Here,--   * "'a comment containing'" is just comment text, not a tag-   * "'tag1'" is a tag with no value-   * "'tag2'" is another tag, whose value is "'some value ...'"--   Tags in a transaction comment affect the transaction and all of its-postings, while tags in a posting comment affect only that posting.  For-example, the following transaction has three tags ('A', 'TAG2',-'third-tag') and the posting has four (those plus 'posting-tag'):--1/1 a transaction  ; A:, TAG2:-    ; third-tag: a third transaction tag, <- with a value-    (a)  $1  ; posting-tag:--   Tags are like Ledger's metadata feature, except hledger's tag values-are simple strings.---File: hledger_journal.5.info,  Node: Directives,  Prev: Tags,  Up: FILE FORMAT--1.14 Directives-===============--* Menu:--* Account aliases::-* account directive::-* apply account directive::-* Multi-line comments::-* commodity directive::-* Default commodity::-* Default year::-* Including other files::---File: hledger_journal.5.info,  Node: Account aliases,  Next: account directive,  Up: Directives--1.14.1 Account aliases-------------------------You can define aliases which rewrite your account names (after reading-the journal, before generating reports).  hledger's account aliases can-be useful for:--   * expanding shorthand account names to their full form, allowing-     easier data entry and a less verbose journal-   * adapting old journals to your current chart of accounts-   * experimenting with new account organisations, like a new hierarchy-     or combining two accounts into one-   * customising reports--   See also Cookbook: rewrite account names.-* Menu:--* Basic aliases::-* Regex aliases::-* Multiple aliases::-* end aliases::---File: hledger_journal.5.info,  Node: Basic aliases,  Next: Regex aliases,  Up: Account aliases--1.14.1.1 Basic aliases-......................--To set an account alias, use the 'alias' directive in your journal file.-This affects all subsequent journal entries in the current file or its-included files.  The spaces around the = are optional:--alias OLD = NEW--   Or, you can use the '--alias 'OLD=NEW'' option on the command line.-This affects all entries.  It's useful for trying out aliases-interactively.--   OLD and NEW are full account names.  hledger will replace any-occurrence of the old account name with the new one.  Subaccounts are-also affected.  Eg:--alias checking = assets:bank:wells fargo:checking-# rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"---File: hledger_journal.5.info,  Node: Regex aliases,  Next: Multiple aliases,  Prev: Basic aliases,  Up: Account aliases--1.14.1.2 Regex aliases-......................--There is also a more powerful variant that uses a regular expression,-indicated by the forward slashes:--alias /REGEX/ = REPLACEMENT--   or '--alias '/REGEX/=REPLACEMENT''.--   REGEX is a case-insensitive regular expression.  Anywhere it matches-inside an account name, the matched part will be replaced by-REPLACEMENT. If REGEX contains parenthesised match groups, these can be-referenced by the usual numeric backreferences in REPLACEMENT. Eg:--alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3-# rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking"--   Also note that REPLACEMENT continues to the end of line (or on-command line, to end of option argument), so it can contain trailing-whitespace.---File: hledger_journal.5.info,  Node: Multiple aliases,  Next: end aliases,  Prev: Regex aliases,  Up: Account aliases--1.14.1.3 Multiple aliases-.........................--You can define as many aliases as you like using directives or-command-line options.  Aliases are recursive - each alias sees the-result of applying previous ones.  (This is different from Ledger, where-aliases are non-recursive by default).  Aliases are applied in the-following order:--  1. alias directives, most recently seen first (recent directives take-     precedence over earlier ones; directives not yet seen are ignored)-  2. alias options, in the order they appear on the command line---File: hledger_journal.5.info,  Node: end aliases,  Prev: Multiple aliases,  Up: Account aliases--1.14.1.4 end aliases-....................--You can clear (forget) all currently defined aliases with the 'end-aliases' directive:--end aliases---File: hledger_journal.5.info,  Node: account directive,  Next: apply account directive,  Prev: Account aliases,  Up: Directives--1.14.2 account directive---------------------------The 'account' directive predefines account names, as in Ledger and-Beancount.  This may be useful for your own documentation; hledger-doesn't make use of it yet.--; account ACCT-;   OPTIONAL COMMENTS/TAGS...--account assets:bank:checking- a comment- acct-no:12345--account expenses:food--; etc.---File: hledger_journal.5.info,  Node: apply account directive,  Next: Multi-line comments,  Prev: account directive,  Up: Directives--1.14.3 apply account directive---------------------------------You can specify a parent account which will be prepended to all accounts-within a section of the journal.  Use the 'apply account' and 'end apply-account' directives like so:--apply account home--2010/1/1-    food    $10-    cash--end apply account--   which is equivalent to:--2010/01/01-    home:food           $10-    home:cash          $-10--   If 'end apply account' is omitted, the effect lasts to the end of the-file.  Included files are also affected, eg:--apply account business-include biz.journal-end apply account-apply account personal-include personal.journal--   Prior to hledger 1.0, legacy 'account' and 'end' spellings were also-supported.---File: hledger_journal.5.info,  Node: Multi-line comments,  Next: commodity directive,  Prev: apply account directive,  Up: Directives--1.14.4 Multi-line comments-----------------------------A line containing just 'comment' starts a multi-line comment, and a line-containing just 'end comment' ends it.  See comments.---File: hledger_journal.5.info,  Node: commodity directive,  Next: Default commodity,  Prev: Multi-line comments,  Up: Directives--1.14.5 commodity directive-----------------------------The 'commodity' directive predefines commodities (currently this is just-informational), and also it may define the display format for amounts in-this commodity (overriding the automatically inferred format).--   It may be written on a single line, like this:--; commodity EXAMPLEAMOUNT--; display AAAA amounts with the symbol on the right, space-separated,-; using period as decimal point, with four decimal places, and-; separating thousands with comma.-commodity 1,000.0000 AAAA--   or on multiple lines, using the "format" subdirective.  In this case-the commodity symbol appears twice and should be the same in both-places:--; commodity SYMBOL-;   format EXAMPLEAMOUNT--; display indian rupees with currency name on the left,-; thousands, lakhs and crores comma-separated,-; period as decimal point, and two decimal places.-commodity INR-  format INR 9,99,99,999.00---File: hledger_journal.5.info,  Node: Default commodity,  Next: Default year,  Prev: commodity directive,  Up: Directives--1.14.6 Default commodity---------------------------The D directive sets a default commodity (and display format), to be-used for amounts without a commodity symbol (ie, plain numbers).  (Note-this differs from Ledger's default commodity directive.)  The commodity-and display format will be applied to all subsequent commodity-less-amounts, or until the next D directive.--# commodity-less amounts should be treated as dollars-# (and displayed with symbol on the left, thousands separators and two decimal places)-D $1,000.00--1/1-  a     5    # <- commodity-less amount, becomes $1-  b---File: hledger_journal.5.info,  Node: Default year,  Next: Including other files,  Prev: Default commodity,  Up: Directives--1.14.7 Default year----------------------You can set a default year to be used for subsequent dates which don't-specify a year.  This is a line beginning with 'Y' followed by the year.-Eg:--Y2009      ; set default year to 2009--12/15      ; equivalent to 2009/12/15-  expenses  1-  assets--Y2010      ; change default year to 2010--2009/1/30  ; specifies the year, not affected-  expenses  1-  assets--1/31       ; equivalent to 2010/1/31-  expenses  1-  assets---File: hledger_journal.5.info,  Node: Including other files,  Prev: Default year,  Up: Directives--1.14.8 Including other files-------------------------------You can pull in the content of additional journal files by writing an-include directive, like this:--include path/to/file.journal--   If the path does not begin with a slash, it is relative to the-current file.  Glob patterns ('*') are not currently supported.--   The 'include' directive can only be used in journal files.  It can-include journal, timeclock or timedot files, but not CSV files.---File: hledger_journal.5.info,  Node: EDITOR SUPPORT,  Prev: FILE FORMAT,  Up: Top--2 EDITOR SUPPORT-****************--Add-on modes exist for various text editors, to make working with-journal files easier.  They add colour, navigation aids and helpful-commands.  For hledger users who edit the journal file directly (the-majority), using one of these modes is quite recommended.--   These were written with Ledger in mind, but also work with hledger-files:--Emacs             http://www.ledger-cli.org/3.0/doc/ledger-mode.html-Vim               https://github.com/ledger/ledger/wiki/Getting-started-Sublime Text      https://github.com/ledger/ledger/wiki/Using-Sublime-Text-Textmate          https://github.com/ledger/ledger/wiki/Using-TextMate-2-Text Wrangler     https://github.com/ledger/ledger/wiki/Editing-Ledger-files-with-TextWrangler-Visual Studio     https://marketplace.visualstudio.com/items?itemName=mark-hansen.hledger-vscode-Code---Tag Table:-Node: Top78-Node: FILE FORMAT2374-Ref: #file-format2500-Node: Transactions2723-Ref: #transactions2846-Node: Postings3530-Ref: #postings3659-Node: Dates4654-Ref: #dates4771-Node: Simple dates4836-Ref: #simple-dates4964-Node: Secondary dates5330-Ref: #secondary-dates5486-Node: Posting dates7049-Ref: #posting-dates7180-Node: Status8554-Ref: #status8676-Node: Description10390-Ref: #description10530-Node: Payee and note10849-Ref: #payee-and-note10965-Node: Account names11207-Ref: #account-names11352-Node: Amounts11839-Ref: #amounts11977-Node: Virtual Postings14078-Ref: #virtual-postings14239-Node: Balance Assertions15459-Ref: #balance-assertions15636-Node: Assertions and ordering16532-Ref: #assertions-and-ordering16720-Node: Assertions and included files17420-Ref: #assertions-and-included-files17663-Node: Assertions and multiple -f options17996-Ref: #assertions-and-multiple--f-options18252-Node: Assertions and commodities18384-Ref: #assertions-and-commodities18621-Node: Assertions and subaccounts19317-Ref: #assertions-and-subaccounts19551-Node: Assertions and virtual postings20072-Ref: #assertions-and-virtual-postings20281-Node: Balance Assignments20423-Ref: #balance-assignments20594-Node: Prices21713-Ref: #prices21848-Node: Transaction prices21899-Ref: #transaction-prices22046-Node: Market prices24202-Ref: #market-prices24339-Node: Comments25299-Ref: #comments25423-Node: Tags26536-Ref: #tags26656-Node: Directives28058-Ref: #directives28173-Node: Account aliases28366-Ref: #account-aliases28512-Node: Basic aliases29116-Ref: #basic-aliases29261-Node: Regex aliases29951-Ref: #regex-aliases30121-Node: Multiple aliases30839-Ref: #multiple-aliases31013-Node: end aliases31511-Ref: #end-aliases31653-Node: account directive31754-Ref: #account-directive31936-Node: apply account directive32232-Ref: #apply-account-directive32430-Node: Multi-line comments33089-Ref: #multi-line-comments33281-Node: commodity directive33409-Ref: #commodity-directive33595-Node: Default commodity34467-Ref: #default-commodity34642-Node: Default year35179-Ref: #default-year35346-Node: Including other files35769-Ref: #including-other-files35928-Node: EDITOR SUPPORT36325-Ref: #editor-support36445--End Tag Table
− doc/other/hledger_journal.5.txt
@@ -1,848 +0,0 @@--hledger_journal(5)           hledger User Manuals           hledger_journal(5)----NAME-       Journal - hledger's default file format, representing a General Journal--DESCRIPTION-       hledger's usual data source is a plain  text  file  containing  journal-       entries  in  hledger  journal  format.  This file represents a standard-       accounting general journal.  I use file names ending in  .journal,  but-       that's not required.  The journal file contains a number of transaction-       entries, each describing a transfer of money (or any commodity) between-       two or more named accounts, in a simple format readable by both hledger-       and humans.--       hledger's journal format is a compatible subset,  mostly,  of  ledger's-       journal  format,  so  hledger  can  work with compatible ledger journal-       files as well.  It's safe, and encouraged,  to  run  both  hledger  and-       ledger on the same journal file, eg to validate the results you're get--       ting.--       You can use hledger without learning any more about this file; just use-       the  add  or web commands to create and update it.  Many users, though,-       also edit the  journal  file  directly  with  a  text  editor,  perhaps-       assisted by the helper modes for emacs or vim.--       Here's an example:--              ; A sample journal file. This is a comment.--              2008/01/01 income               ; <- transaction's first line starts in column 0, contains date and description-                  assets:bank:checking  $1    ; <- posting lines start with whitespace, each contains an account name-                  income:salary        $-1    ;    followed by at least two spaces and an amount--              2008/06/01 gift-                  assets:bank:checking  $1    ; <- at least two postings in a transaction-                  income:gifts         $-1    ; <- their amounts must balance to 0--              2008/06/02 save-                  assets:bank:saving    $1-                  assets:bank:checking        ; <- one amount may be omitted; here $-1 is inferred--              2008/06/03 eat & shop           ; <- description can be anything-                  expenses:food         $1-                  expenses:supplies     $1    ; <- this transaction debits two expense accounts-                  assets:cash                 ; <- $-2 inferred--              2008/10/01 take a loan-                  assets:bank:checking  $1-                  liabilities:debts    $-1--              2008/12/31 * pay off            ; <- an optional * or ! after the date means "cleared" (or anything you want)-                  liabilities:debts     $1-                  assets:bank:checking--FILE FORMAT-   Transactions-       Transactions  are  movements  of  some  quantity of commodities between-       named accounts.  Each transaction is represented  by  a  journal  entry-       beginning  with a simple date in column 0.  This can be followed by any-       of the following, separated by spaces:--       o (optional) a status character (empty, !, or *)--       o (optional) a transaction code (any short number or text, enclosed  in-         parentheses)--       o (optional) a transaction description (any remaining text until end of-         line or a semicolon)--       o (optional) a transaction comment  (any  remaining  text  following  a-         semicolon until end of line)--       Then  comes zero or more (but usually at least 2) indented lines repre--       senting...--   Postings-       A posting is an addition of some amount to, or removal of  some  amount-       from,  an account.  Each posting line begins with at least one space or-       tab (2 or 4 spaces is common), followed by:--       o (optional) a status character (empty, !, or *), followed by a space--       o (required) an account name (any text,  optionally  containing  single-         spaces, until end of line or a double space)--       o (optional) two or more spaces or tabs followed by an amount.--       Positive  amounts  are being added to the account, negative amounts are-       being removed.--       The amounts within a transaction must always sum up to zero.  As a con--       venience,  one  amount  may be left blank; it will be inferred so as to-       balance the transaction.--       Be sure to note the unusual two-space delimiter  between  account  name-       and  amount.  This makes it easy to write account names containing spa--       ces.  But if you accidentally leave only one space (or tab) before  the-       amount, the amount will be considered part of the account name.--   Dates-   Simple dates-       Within  a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)-       Leading zeros are optional.  The year may be omitted, in which case  it-       will  be  inferred  from  the  context  -  the current transaction, the-       default year set with a default year directive,  or  the  current  date-       when  the command is run.  Some examples: 2010/01/31, 1/31, 2010-01-31,-       2010.1.31.--   Secondary dates-       Real-life transactions sometimes involve more than one date  -  eg  the-       date you write a cheque, and the date it clears in your bank.  When you-       want to model this, eg for more  accurate  balances,  you  can  specify-       individual  posting dates, which I recommend.  Or, you can use the sec--       ondary dates (aka auxiliary/effective  dates)  feature,  supported  for-       compatibility with Ledger.--       A secondary date can be written after the primary date, separated by an-       equals sign.  The primary date, on the left, is used  by  default;  the-       secondary  date,  on the right, is used when the --date2 flag is speci--       fied (--aux-date or --effective also work).--       The meaning of secondary dates is up to you, but it's best to follow  a-       consistent  rule.   Eg  write  the bank's clearing date as primary, and-       when needed, the date the transaction was initiated as secondary.--       Here's an example.  Note that a secondary date will use the year of the-       primary date if unspecified.--              2010/2/23=2/19 movie ticket-                expenses:cinema                   $10-                assets:checking--              $ hledger register checking-              2010/02/23 movie ticket         assets:checking                $-10         $-10--              $ hledger register checking --date2-              2010/02/19 movie ticket         assets:checking                $-10         $-10--       Secondary  dates require some effort; you must use them consistently in-       your journal entries and remember whether to use or not use the --date2-       flag for your reports.  They are included in hledger for Ledger compat--       ibility, but posting dates are  a  more  powerful  and  less  confusing-       alternative.--   Posting dates-       You  can  give  individual  postings a different date from their parent-       transaction, by adding a posting comment containing a tag  (see  below)-       like date:DATE.  This is probably the best way to control posting dates-       precisely.  Eg in  this  example  the  expense  should  appear  in  May-       reports,  and the deduction from checking should be reported on 6/1 for-       easy bank reconciliation:--              2015/5/30-                  expenses:food     $10   ; food purchased on saturday 5/30-                  assets:checking         ; bank cleared it on monday, date:6/1--              $ hledger -f t.j register food-              2015/05/30                      expenses:food                  $10           $10--              $ hledger -f t.j register checking-              2015/06/01                      assets:checking               $-10          $-10--       DATE should be a simple date; if the year is not specified it will  use-       the  year  of  the  transaction's date.  You can set the secondary date-       similarly, with date2:DATE2.  The date: or  date2:  tags  must  have  a-       valid  simple  date  value  if they are present, eg a date: tag with no-       value is not allowed.--       Ledger's earlier, more compact bracketed date syntax is also supported:-       [DATE],  [DATE=DATE2]  or  [=DATE2].  hledger will attempt to parse any-       square-bracketed sequence of the 0123456789/-.= characters in this way.-       With  this  syntax, DATE infers its year from the transaction and DATE2-       infers its year from DATE.--   Status-       Transactions, or individual postings within a transaction, can  have  a-       status  mark,  which  is  a  single  character  before  the transaction-       description or posting account name, separated  from  it  by  a  space,-       indicating one of three statuses:---       mark     status-       -------------------                unmarked-       !        pending-       *        cleared--       When  reporting,  you  can  filter  by  status  with the -U/--unmarked,-       -P/--pending, and -C/--cleared flags; or  the  status:,  status:!,  and-       status:* queries; or the U, P, C keys in hledger-ui.--       Note,  in Ledger and in older versions of hledger, the "unmarked" state-       is called "uncleared".  As  of  hledger  1.3  we  have  renamed  it  to-       unmarked for clarity.--       To  replicate Ledger and old hledger's behaviour of also matching pend--       ing, combine -U and -P.--       Status marks are optional, but can be helpful eg for  reconciling  with-       real-world accounts.  Some editor modes provide highlighting and short--       cuts for working with status.  Eg in Emacs ledger-mode, you can  toggle-       transaction status with C-c C-e, or posting status with C-c C-c.--       What  "uncleared", "pending", and "cleared" actually mean is up to you.-       Here's one suggestion:---       status       meaning-       ---------------------------------------------------------------------------       uncleared    recorded but not yet reconciled; needs review-       pending      tentatively reconciled (if needed, eg during a  big  recon--                    ciliation)-       cleared      complete,  reconciled  as  far  as possible, and considered-                    correct--       With this scheme, you would use -PC to see the current balance at  your-       bank,  -U  to  see  things which will probably hit your bank soon (like-       uncashed checks), and no flags to see the most up-to-date state of your-       finances.--   Description-       A  transaction's description is the rest of the line following the date-       and status mark (or until a  comment  begins).   Sometimes  called  the-       "narration" in traditional bookkeeping, it can be used for whatever you-       wish, or left blank.  Transaction descriptions can be  queried,  unlike-       comments.--   Payee and note-       You  can  optionally  include  a | (pipe) character in a description to-       subdivide it into a payee/payer name on the left and  additional  notes-       on  the  right.   This may be worthwhile if you need to do more precise-       querying and pivoting by payee.--   Account names-       Account names typically have several parts separated by a  full  colon,-       from  which hledger derives a hierarchical chart of accounts.  They can-       be anything you like, but  in  finance  there  are  traditionally  five-       top-level  accounts: assets, liabilities, income, expenses, and equity.--       Account names may contain single  spaces,  eg:  assets:accounts receiv--       able.   Because  of  this,  they must always be followed by two or more-       spaces (or newline).--       Account names can be aliased.--   Amounts-       After the account name, there is usually an amount.  Important: between-       account name and amount, there must be two or more spaces.--       Amounts  consist of a number and (usually) a currency symbol or commod--       ity name.  Some examples:--       2.00001-       $1-       4000 AAPL-       3 "green apples"-       -$1,000,000.00-       INR 9,99,99,999.00-       EUR -2.000.000,00--       As you can see, the amount format is somewhat flexible:--       o amounts are a number (the "quantity") and optionally a currency  sym--         bol/commodity name (the "commodity").--       o the  commodity  is  a  symbol, word, or phrase, on the left or right,-         with or without a separating space.  If the commodity  contains  num--         bers,  spaces  or  non-word punctuation it must be enclosed in double-         quotes.--       o negative amounts with a commodity on the left can have the minus sign-         before or after it--       o digit  groups  (thousands, or any other grouping) can be separated by-         commas (in which case period is used for decimal  point)  or  periods-         (in which case comma is used for decimal point)--       You  can  use  any  of  these  variations when recording data, but when-       hledger displays amounts, it will choose a consistent format  for  each-       commodity.   (Except  for  price amounts, which are always formatted as-       written).  The display format is chosen as follows:--       o if there is a commodity directive specifying the format, that is used--       o otherwise  the  format  is  inferred from the first posting amount in-         that commodity in the journal, and the precision (number  of  decimal-         places) will be the maximum from all posting amounts in that commmod--         ity--       o or if there are no such amounts in the journal, a default  format  is-         used (like $1000.00).--       Price  amounts  and amounts in D directives usually don't affect amount-       format inference, but in some situations they  can  do  so  indirectly.-       (Eg  when  D's default commodity is applied to a commodity-less amount,-       or when an amountless posting is balanced using a price's commodity, or-       when  -V  is  used.) If you find this causing problems, set the desired-       format with a commodity directive.--   Virtual Postings-       When you parenthesise the account name in a posting,  we  call  that  a-       virtual posting, which means:--       o it is ignored when checking that the transaction is balanced--       o it  is  excluded from reports when the --real/-R flag is used, or the-         real:1 query.--       You could use this, eg, to set an  account's  opening  balance  without-       needing to use the equity:opening balances account:--              1/1 special unbalanced posting to set initial balance-                (assets:checking)   $1000--       When the account name is bracketed, we call it a balanced virtual post--       ing.  This is like an ordinary virtual posting except the balanced vir--       tual  postings  in a transaction must balance to 0, like the real post--       ings (but separately from them).  Balanced virtual  postings  are  also-       excluded by --real/-R or real:1.--              1/1 buy food with cash, and update some budget-tracking subaccounts elsewhere-                expenses:food                   $10-                assets:cash                    $-10-                [assets:checking:available]     $10-                [assets:checking:budget:food]  $-10--       Virtual postings have some legitimate uses, but those are few.  You can-       usually find an equivalent journal entry using real postings, which  is-       more correct and provides better error checking.--   Balance Assertions-       hledger  supports  Ledger-style  balance  assertions  in journal files.-       These look like =EXPECTEDBALANCE following a posting's amount.   Eg  in-       this  example we assert the expected dollar balance in accounts a and b-       after each posting:--              2013/1/1-                a   $1  =$1-                b       =$-1--              2013/1/2-                a   $1  =$2-                b  $-1  =$-2--       After reading a journal file, hledger will check all balance assertions-       and  report  an error if any of them fail.  Balance assertions can pro--       tect you from, eg, inadvertently disrupting reconciled  balances  while-       cleaning  up  old  entries.   You can disable them temporarily with the-       --ignore-assertions flag, which can be useful  for  troubleshooting  or-       for reading Ledger files.--   Assertions and ordering-       hledger  sorts  an  account's postings and assertions first by date and-       then (for postings on the same day) by parse order.  Note this is  dif--       ferent from Ledger, which sorts assertions only by parse order.  (Also,-       Ledger assertions do not see the accumulated effect of  repeated  post--       ings to the same account within a transaction.)--       So,  hledger  balance  assertions  keep  working if you reorder differ--       ently-dated transactions  within  the  journal.   But  if  you  reorder-       same-dated transactions or postings, assertions might break and require-       updating.  This order dependence does bring an advantage: precise  con--       trol over the order of postings and assertions within a day, so you can-       assert intra-day balances.--   Assertions and included files-       With included files, things are a little more  complicated.   Including-       preserves  the ordering of postings and assertions.  If you have multi--       ple postings to an account on the  same  day,  split  across  different-       files,  and  you  also want to assert the account's balance on the same-       day, you'll have to put the assertion in the right file.--   Assertions and multiple -f options-       Balance assertions don't work well across files specified with multiple-       -f options.  Use include or concatenate the files instead.--   Assertions and commodities-       The  asserted  balance must be a simple single-commodity amount, and in-       fact the assertion checks only  this  commodity's  balance  within  the-       (possibly  multi-commodity) account balance.  We could call this a par--       tial balance assertion.  This is compatible with Ledger, and  makes  it-       possible to make assertions about accounts containing multiple commodi--       ties.--       To assert each commodity's balance in such a  multi-commodity  account,-       you  can  add multiple postings (with amount 0 if necessary).  But note-       that no matter how many assertions you  add,  you  can't  be  sure  the-       account does not contain some unexpected commodity.  (We'll add support-       for this kind of total balance assertion if there's demand.)--   Assertions and subaccounts-       Balance assertions do not count  the  balance  from  subaccounts;  they-       check the posted account's exclusive balance.  For example:--              1/1-                checking:fund   1 = 1  ; post to this subaccount, its balance is now 1-                checking        1 = 1  ; post to the parent account, its exclusive balance is now 1-                equity--       The  balance  report's  flat  mode  shows these exclusive balances more-       clearly:--              $ hledger bal checking --flat-                                 1  checking-                                 1  checking:fund-              ---------------------                                 2--   Assertions and virtual postings-       Balance assertions are checked against all postings, both real and vir--       tual.  They are not affected by the --real/-R flag or real: query.--   Balance Assignments-       Ledger-style  balance  assignments  are also supported.  These are like-       balance assertions, but with no posting amount on the left side of  the-       equals  sign;  instead  it is calculated automatically so as to satisfy-       the assertion.  This can be a convenience during data  entry,  eg  when-       setting opening balances:--              ; starting a new journal, set asset account balances-              2016/1/1 opening balances-                assets:checking            = $409.32-                assets:savings             = $735.24-                assets:cash                 = $42-                equity:opening balances--       or when adjusting a balance to reality:--              ; no cash left; update balance, record any untracked spending as a generic expense-              2016/1/15-                assets:cash    = $0-                expenses:misc--       The calculated amount depends on the account's balance in the commodity-       at that point (which depends on the previously-dated  postings  of  the-       commodity  to  that account since the last balance assertion or assign--       ment).  Note that using balance assignments makes your journal a little-       less explicit; to know the exact amount posted, you have to run hledger-       or do the calculations yourself, instead of just reading it.--   Prices-   Transaction prices-       Within a transaction, you can note an amount's price in another commod--       ity.   This can be used to document the cost (in a purchase) or selling-       price (in a sale).  For  example,  transaction  prices  are  useful  to-       record purchases of a foreign currency.--       Transaction  prices  are  fixed,  and do not change over time.  (Ledger-       users: Ledger uses a different syntax for fixed  prices,  {=UNITPRICE},-       which hledger currently ignores).--       There are several ways to record a transaction price:--       1. Write the price per unit, as @ UNITPRICE after the amount:--                  2009/1/1-                    assets:euros     100 @ $1.35  ; one hundred euros purchased at $1.35 each-                    assets:dollars                 ; balancing amount is -$135.00--       2. Write the total price, as @@ TOTALPRICE after the amount:--                  2009/1/1-                    assets:euros     100 @@ $135  ; one hundred euros purchased at $135 for the lot-                    assets:dollars--       3. Specify amounts for all postings, using exactly two commodities, and-          let hledger infer the price that balances the transaction:--                  2009/1/1-                    assets:euros     100          ; one hundred euros purchased-                    assets:dollars  $-135          ; for $135--       Amounts with transaction prices can be  displayed  in  the  transaction-       price's commodity by using the -B/--cost flag (except for #551) ("B" is-       from "cost Basis").  Eg for the above, here is how -B affects the  bal--       ance report:--              $ hledger bal -N --flat-                             $-135  assets:dollars-                              100  assets:euros-              $ hledger bal -N --flat -B-                             $-135  assets:dollars-                              $135  assets:euros    # <- the euros' cost--       Note  -B is sensitive to the order of postings when a transaction price-       is inferred: the inferred price will be in the commodity  of  the  last-       amount.  So if example 3's postings are reversed, while the transaction-       is equivalent, -B shows something different:--              2009/1/1-                assets:dollars  $-135               ; 135 dollars sold-                assets:euros     100               ; for 100 euros--              $ hledger bal -N --flat -B-                             -100  assets:dollars  # <- the dollars' selling price-                              100  assets:euros--   Market prices-       Market prices are not tied to a particular transaction; they  represent-       historical  exchange rates between two commodities.  (Ledger calls them-       historical prices.) For  example,  the  prices  published  by  a  stock-       exchange  or the foreign exchange market.  hledger can use these prices-       to show the market value of things at a given date, see market value.--       To record market prices, use P directives in the main journal or in  an-       included file.  Their format is:--              P DATE COMMODITYBEINGPRICED UNITPRICE--       DATE  is a simple date as usual.  COMMODITYBEINGPRICED is the symbol of-       the commodity being priced.  UNITPRICE is an  ordinary  amount  (symbol-       and  quantity) in a second commodity, specifying the unit price or con--       version rate for the first commodity in terms of  the  second,  on  the-       given date.--       For  example, the following directives say that one euro was worth 1.35-       US dollars during 2009, and $1.40 from 2010 onward:--              P 2009/1/1  $1.35-              P 2010/1/1  $1.40--   Comments-       Lines in the journal beginning with a semicolon  (;)  or  hash  (#)  or-       asterisk  (*)  are  comments,  and will be ignored.  (Asterisk comments-       make it easy to treat your journal like an org-mode outline in  emacs.)--       Also,   anything  between  comment  and  end comment  directives  is  a-       (multi-line) comment.  If there is no end comment, the comment  extends-       to the end of the file.--       You  can  attach  comments  to  a transaction by writing them after the-       description and/or indented on the following lines  (before  the  post--       ings).   Similarly, you can attach comments to an individual posting by-       writing them after the amount and/or indented on the following lines.--       Some examples:--              # a journal comment--              ; also a journal comment--              comment-              This is a multiline comment,-              which continues until a line-              where the "end comment" string-              appears on its own.-              end comment--              2012/5/14 something  ; a transaction comment-                  ; the transaction comment, continued-                  posting1  1  ; a comment for posting 1-                  posting2-                  ; a comment for posting 2-                  ; another comment line for posting 2-              ; a journal comment (because not indented)--   Tags-       Tags are a way to add extra labels or labelled  data  to  postings  and-       transactions, which you can then search or pivot on.--       A  simple  tag is a word (which may contain hyphens) followed by a full-       colon, written inside a transaction or posting comment line:--              2017/1/16 bought groceries    ; sometag:--       Tags can have a value, which is the text after the  colon,  up  to  the-       next comma or end of line, with leading/trailing whitespace removed:--                  expenses:food    $10   ; a-posting-tag: the tag value--       Note  this  means  hledger's  tag values can not contain commas or new--       lines.  Ending at commas means you can write multiple short tags on one-       line, comma separated:--                  assets:checking       ; a comment containing tag1:, tag2: some value ...--       Here,--       o "a comment containing" is just comment text, not a tag--       o "tag1" is a tag with no value--       o "tag2" is another tag, whose value is "some value ..."--       Tags  in  a  transaction  comment affect the transaction and all of its-       postings, while tags in a posting comment  affect  only  that  posting.-       For  example,  the  following  transaction  has  three  tags  (A, TAG2,-       third-tag) and the posting has four (those plus posting-tag):--              1/1 a transaction  ; A:, TAG2:-                  ; third-tag: a third transaction tag, <- with a value-                  (a)  $1  ; posting-tag:--       Tags are like Ledger's metadata feature, except  hledger's  tag  values-       are simple strings.--   Directives-   Account aliases-       You  can define aliases which rewrite your account names (after reading-       the journal, before generating reports).  hledger's account aliases can-       be useful for:--       o expanding shorthand account names to their full form, allowing easier-         data entry and a less verbose journal--       o adapting old journals to your current chart of accounts--       o experimenting with new account organisations, like a new hierarchy or-         combining two accounts into one--       o customising reports--       See also Cookbook: rewrite account names.--   Basic aliases-       To  set an account alias, use the alias directive in your journal file.-       This affects all subsequent journal entries in the current file or  its-       included files.  The spaces around the = are optional:--              alias OLD = NEW--       Or, you can use the --alias 'OLD=NEW' option on the command line.  This-       affects all entries.  It's useful for trying out aliases interactively.--       OLD  and  NEW  are full account names.  hledger will replace any occur--       rence of the old account name with the new one.  Subaccounts  are  also-       affected.  Eg:--              alias checking = assets:bank:wells fargo:checking-              # rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"--   Regex aliases-       There  is  also a more powerful variant that uses a regular expression,-       indicated by the forward slashes:--              alias /REGEX/ = REPLACEMENT--       or --alias '/REGEX/=REPLACEMENT'.--       REGEX is a case-insensitive regular expression.   Anywhere  it  matches-       inside  an  account name, the matched part will be replaced by REPLACE--       MENT.  If REGEX contains parenthesised match groups, these can be  ref--       erenced by the usual numeric backreferences in REPLACEMENT.  Eg:--              alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3-              # rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking"--       Also  note that REPLACEMENT continues to the end of line (or on command-       line, to end of option argument), so it  can  contain  trailing  white--       space.--   Multiple aliases-       You  can  define  as  many aliases as you like using directives or com--       mand-line options.  Aliases are recursive - each alias sees the  result-       of  applying  previous  ones.   (This  is  different from Ledger, where-       aliases are non-recursive by default).  Aliases are applied in the fol--       lowing order:--       1. alias  directives,  most recently seen first (recent directives take-          precedence over earlier ones; directives not yet seen are ignored)--       2. alias options, in the order they appear on the command line--   end aliases-       You  can  clear  (forget)  all  currently  defined  aliases  with   the-       end aliases directive:--              end aliases--   account directive-       The  account directive predefines account names, as in Ledger and Bean--       count.  This may be useful for your own documentation; hledger  doesn't-       make use of it yet.--              ; account ACCT-              ;   OPTIONAL COMMENTS/TAGS...--              account assets:bank:checking-               a comment-               acct-no:12345--              account expenses:food--              ; etc.--   apply account directive-       You  can  specify  a  parent  account  which  will  be prepended to all-       accounts within a section of the journal.  Use  the  apply account  and-       end apply account directives like so:--              apply account home--              2010/1/1-                  food    $10-                  cash--              end apply account--       which is equivalent to:--              2010/01/01-                  home:food           $10-                  home:cash          $-10--       If  end apply account  is  omitted,  the effect lasts to the end of the-       file.  Included files are also affected, eg:--              apply account business-              include biz.journal-              end apply account-              apply account personal-              include personal.journal--       Prior to hledger 1.0, legacy account and end spellings were  also  sup--       ported.--   Multi-line comments-       A  line containing just comment starts a multi-line comment, and a line-       containing just end comment ends it.  See comments.--   commodity directive-       The commodity directive predefines commodities (currently this is  just-       informational),  and  also it may define the display format for amounts-       in this commodity (overriding the automatically inferred format).--       It may be written on a single line, like this:--              ; commodity EXAMPLEAMOUNT--              ; display AAAA amounts with the symbol on the right, space-separated,-              ; using period as decimal point, with four decimal places, and-              ; separating thousands with comma.-              commodity 1,000.0000 AAAA--       or on multiple lines, using the "format" subdirective.   In  this  case-       the  commodity  symbol  appears  twice  and  should be the same in both-       places:--              ; commodity SYMBOL-              ;   format EXAMPLEAMOUNT--              ; display indian rupees with currency name on the left,-              ; thousands, lakhs and crores comma-separated,-              ; period as decimal point, and two decimal places.-              commodity INR-                format INR 9,99,99,999.00--   Default commodity-       The D directive sets a default commodity (and display  format),  to  be-       used for amounts without a commodity symbol (ie, plain numbers).  (Note-       this differs from Ledger's default commodity directive.) The  commodity-       and  display  format  will  be applied to all subsequent commodity-less-       amounts, or until the next D directive.--              # commodity-less amounts should be treated as dollars-              # (and displayed with symbol on the left, thousands separators and two decimal places)-              D $1,000.00--              1/1-                a     5    # <- commodity-less amount, becomes $1-                b--   Default year-       You can set a default year to be used for subsequent dates which  don't-       specify  a year.  This is a line beginning with Y followed by the year.-       Eg:--              Y2009      ; set default year to 2009--              12/15      ; equivalent to 2009/12/15-                expenses  1-                assets--              Y2010      ; change default year to 2010--              2009/1/30  ; specifies the year, not affected-                expenses  1-                assets--              1/31       ; equivalent to 2010/1/31-                expenses  1-                assets--   Including other files-       You can pull in the content of additional journal files by  writing  an-       include directive, like this:--              include path/to/file.journal--       If  the path does not begin with a slash, it is relative to the current-       file.  Glob patterns (*) are not currently supported.--       The include directive can only  be  used  in  journal  files.   It  can-       include journal, timeclock or timedot files, but not CSV files.--EDITOR SUPPORT-       Add-on modes exist for various text editors, to make working with jour--       nal files easier.  They add colour, navigation aids  and  helpful  com--       mands.   For  hledger  users  who  edit  the journal file directly (the-       majority), using one of these modes is quite recommended.--       These were written with Ledger in mind,  but  also  work  with  hledger-       files:---       Emacs              http://www.ledger-cli.org/3.0/doc/ledger-mode.html-       Vim                https://github.com/ledger/ledger/wiki/Get--                          ting-started-       Sublime Text       https://github.com/ledger/ledger/wiki/Using-Sub--                          lime-Text-       Textmate           https://github.com/ledger/ledger/wiki/Using-Text--                          Mate-2-       Text Wrangler      https://github.com/ledger/ledger/wiki/Edit--                          ing-Ledger-files-with-TextWrangler---       Visual    Studio   https://marketplace.visualstudio.com/items?item--       Code               Name=mark-hansen.hledger-vscode----REPORTING BUGS-       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger 1.4                     September 2017              hledger_journal(5)
− doc/other/hledger_timeclock.5
@@ -1,100 +0,0 @@--.TH "hledger_timeclock" "5" "September 2017" "hledger 1.4" "hledger User Manuals"----.SH NAME-.PP-Timeclock \- the time logging format of timeclock.el, as read by hledger-.SH DESCRIPTION-.PP-hledger can read timeclock files.-As with Ledger, these are (a subset of) timeclock.el\[aq]s format,-containing clock\-in and clock\-out entries as in the example below.-The date is a simple date.-The time format is HH:MM[:SS][+\-ZZZZ].-Seconds and timezone are optional.-The timezone, if present, must be four digits and is ignored (currently-the time is always interpreted as a local time).-.IP-.nf-\f[C]-i\ 2015/03/30\ 09:00:00\ some:account\ name\ \ optional\ description\ after\ two\ spaces-o\ 2015/03/30\ 09:20:00-i\ 2015/03/31\ 22:21:45\ another\ account-o\ 2015/04/01\ 02:00:34-\f[]-.fi-.PP-hledger treats each clock\-in/clock\-out pair as a transaction posting-some number of hours to an account.-Or if the session spans more than one day, it is split into several-transactions, one for each day.-For the above time log, \f[C]hledger\ print\f[] generates these journal-entries:-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.timeclock\ print-2015/03/30\ *\ optional\ description\ after\ two\ spaces-\ \ \ \ (some:account\ name)\ \ \ \ \ \ \ \ \ 0.33h--2015/03/31\ *\ 22:21\-23:59-\ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 1.64h--2015/04/01\ *\ 00:00\-02:00-\ \ \ \ (another\ account)\ \ \ \ \ \ \ \ \ 2.01h-\f[]-.fi-.PP-Here is a sample.timeclock to download and some queries to try:-.IP-.nf-\f[C]-$\ hledger\ \-f\ sample.timeclock\ balance\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ current\ time\ balances-$\ hledger\ \-f\ sample.timeclock\ register\ \-p\ 2009/3\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ sessions\ in\ march\ 2009-$\ hledger\ \-f\ sample.timeclock\ register\ \-p\ weekly\ \-\-depth\ 1\ \-\-empty\ \ #\ time\ summary\ by\ week-\f[]-.fi-.PP-To generate time logs, ie to clock in and clock out, you could:-.IP \[bu] 2-use emacs and the built\-in timeclock.el, or the extended-timeclock\-x.el and perhaps the extras in ledgerutils.el-.IP \[bu] 2-at the command line, use these bash aliases:-.RS 2-.IP-.nf-\f[C]-alias\ ti="echo\ i\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ \\$*\ >>$TIMELOG"-alias\ to="echo\ o\ `date\ \[aq]+%Y\-%m\-%d\ %H:%M:%S\[aq]`\ >>$TIMELOG"-\f[]-.fi-.RE-.IP \[bu] 2-or use the old \f[C]ti\f[] and \f[C]to\f[] scripts in the ledger 2.x-repository.-These rely on a "timeclock" executable which I think is just the ledger-2 executable renamed.---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/other/hledger_timeclock.5.info
@@ -1,62 +0,0 @@-This is hledger_timeclock.5.info, produced by makeinfo version 6.0 from-stdin.---File: hledger_timeclock.5.info,  Node: Top,  Up: (dir)--hledger_timeclock(5) hledger 1.4-********************************--hledger can read timeclock files.  As with Ledger, these are (a subset-of) timeclock.el's format, containing clock-in and clock-out entries as-in the example below.  The date is a simple date.  The time format is-HH:MM[:SS][+-ZZZZ]. Seconds and timezone are optional.  The timezone, if-present, must be four digits and is ignored (currently the time is-always interpreted as a local time).--i 2015/03/30 09:00:00 some:account name  optional description after two spaces-o 2015/03/30 09:20:00-i 2015/03/31 22:21:45 another account-o 2015/04/01 02:00:34--   hledger treats each clock-in/clock-out pair as a transaction posting-some number of hours to an account.  Or if the session spans more than-one day, it is split into several transactions, one for each day.  For-the above time log, 'hledger print' generates these journal entries:--$ hledger -f t.timeclock print-2015/03/30 * optional description after two spaces-    (some:account name)         0.33h--2015/03/31 * 22:21-23:59-    (another account)         1.64h--2015/04/01 * 00:00-02:00-    (another account)         2.01h--   Here is a sample.timeclock to download and some queries to try:--$ hledger -f sample.timeclock balance                               # current time balances-$ hledger -f sample.timeclock register -p 2009/3                    # sessions in march 2009-$ hledger -f sample.timeclock register -p weekly --depth 1 --empty  # time summary by week--   To generate time logs, ie to clock in and clock out, you could:--   * use emacs and the built-in timeclock.el, or the extended-     timeclock-x.el and perhaps the extras in ledgerutils.el--   * at the command line, use these bash aliases:--     alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"-     alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"--   * or use the old 'ti' and 'to' scripts in the ledger 2.x repository.-     These rely on a "timeclock" executable which I think is just the-     ledger 2 executable renamed.----Tag Table:-Node: Top80--End Tag Table
− doc/other/hledger_timeclock.5.txt
@@ -1,82 +0,0 @@--hledger_timeclock(5)         hledger User Manuals         hledger_timeclock(5)----NAME-       Timeclock - the time logging format of timeclock.el, as read by hledger--DESCRIPTION-       hledger can read timeclock files.  As with Ledger, these are (a  subset-       of) timeclock.el's format, containing clock-in and clock-out entries as-       in the example below.  The date is a simple date.  The time  format  is-       HH:MM[:SS][+-ZZZZ].   Seconds and timezone are optional.  The timezone,-       if present, must be four digits and is ignored (currently the  time  is-       always interpreted as a local time).--              i 2015/03/30 09:00:00 some:account name  optional description after two spaces-              o 2015/03/30 09:20:00-              i 2015/03/31 22:21:45 another account-              o 2015/04/01 02:00:34--       hledger  treats  each  clock-in/clock-out pair as a transaction posting-       some number of hours to an account.  Or if the session spans more  than-       one  day, it is split into several transactions, one for each day.  For-       the above time log, hledger print generates these journal entries:--              $ hledger -f t.timeclock print-              2015/03/30 * optional description after two spaces-                  (some:account name)         0.33h--              2015/03/31 * 22:21-23:59-                  (another account)         1.64h--              2015/04/01 * 00:00-02:00-                  (another account)         2.01h--       Here is a sample.timeclock to download and some queries to try:--              $ hledger -f sample.timeclock balance                               # current time balances-              $ hledger -f sample.timeclock register -p 2009/3                    # sessions in march 2009-              $ hledger -f sample.timeclock register -p weekly --depth 1 --empty  # time summary by week--       To generate time logs, ie to clock in and clock out, you could:--       o use emacs and  the  built-in  timeclock.el,  or  the  extended  time--         clock-x.el and perhaps the extras in ledgerutils.el--       o at the command line, use these bash aliases:--                alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"-                alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"--       o or use the old ti and to scripts in the ledger 2.x repository.  These-         rely on a "timeclock" executable which I think is just the  ledger  2-         executable renamed.----REPORTING BUGS-       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger 1.4                     September 2017            hledger_timeclock(5)
− doc/other/hledger_timedot.5
@@ -1,154 +0,0 @@--.TH "hledger_timedot" "5" "September 2017" "hledger 1.4" "hledger User Manuals"----.SH NAME-.PP-Timedot \- hledger\[aq]s human\-friendly time logging format-.SH DESCRIPTION-.PP-Timedot is a plain text format for logging dated, categorised quantities-(of time, usually), supported by hledger.-It is convenient for approximate and retroactive time logging, eg when-the real\-time clock\-in/out required with a timeclock file is too-precise or too interruptive.-It can be formatted like a bar chart, making clear at a glance where-time was spent.-.PP-Though called "timedot", this format is read by hledger as commodityless-quantities, so it could be used to represent dated quantities other than-time.-In the docs below we\[aq]ll assume it\[aq]s time.-.SH FILE FORMAT-.PP-A timedot file contains a series of day entries.-A day entry begins with a date, and is followed by category/quantity-pairs, one per line.-Dates are hledger\-style simple dates (see hledger_journal(5)).-Categories are hledger\-style account names, optionally indented.-As in a hledger journal, there must be at least two spaces between the-category (account name) and the quantity.-.PP-Quantities can be written as:-.IP \[bu] 2-a sequence of dots (.) representing quarter hours.-Spaces may optionally be used for grouping and readability.-Eg: ....-\&..-.IP \[bu] 2-an integral or decimal number, representing hours.-Eg: 1.5-.IP \[bu] 2-an integral or decimal number immediately followed by a unit symbol-\f[C]s\f[], \f[C]m\f[], \f[C]h\f[], \f[C]d\f[], \f[C]w\f[], \f[C]mo\f[],-or \f[C]y\f[], representing seconds, minutes, hours, days weeks, months-or years respectively.-Eg: 90m.-The following equivalencies are assumed, currently: 1m = 60s, 1h = 60m,-1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d.-.PP-Blank lines and lines beginning with #, ; or * are ignored.-An example:-.IP-.nf-\f[C]-#\ on\ this\ day,\ 6h\ was\ spent\ on\ client\ work,\ 1.5h\ on\ haskell\ FOSS\ work,\ etc.-2016/2/1-inc:client1\ \ \ ....\ ....\ ....\ ....\ ....\ ....-fos:haskell\ \ \ ....\ ..\ -biz:research\ \ .--2016/2/2-inc:client1\ \ \ ....\ ....-biz:research\ \ .-\f[]-.fi-.PP-Or with numbers:-.IP-.nf-\f[C]-2016/2/3-inc:client1\ \ \ 4-fos:hledger\ \ \ 3-biz:research\ \ 1-\f[]-.fi-.PP-Reporting:-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.timedot\ print\ date:2016/2/2-2016/02/02\ *-\ \ \ \ (inc:client1)\ \ \ \ \ \ \ \ \ \ 2.00--2016/02/02\ *-\ \ \ \ (biz:research)\ \ \ \ \ \ \ \ \ \ 0.25-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.timedot\ bal\ \-\-daily\ \-\-tree-Balance\ changes\ in\ 2016/02/01\-2016/02/03:--\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2016/02/01d\ \ 2016/02/02d\ \ 2016/02/03d\ -============++========================================-\ biz\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\ -\ \ \ research\ ||\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 0.25\ \ \ \ \ \ \ \ \ 1.00\ -\ fos\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\ -\ \ \ haskell\ \ ||\ \ \ \ \ \ \ \ \ 1.50\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\ -\ \ \ hledger\ \ ||\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ 3.00\ -\ inc\ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\ -\ \ \ client1\ \ ||\ \ \ \ \ \ \ \ \ 6.00\ \ \ \ \ \ \ \ \ 2.00\ \ \ \ \ \ \ \ \ 4.00\ -\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ 7.75\ \ \ \ \ \ \ \ \ 2.25\ \ \ \ \ \ \ \ \ 8.00\ -\f[]-.fi-.PP-I prefer to use period for separating account components.-We can make this work with an account alias:-.IP-.nf-\f[C]-2016/2/4-fos.hledger.timedot\ \ 4-fos.ledger\ \ \ \ \ \ \ \ \ \ \ ..-\f[]-.fi-.IP-.nf-\f[C]-$\ hledger\ \-f\ t.timedot\ \-\-alias\ /\\\\./=:\ bal\ date:2016/2/4-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50\ \ fos-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.00\ \ \ \ hledger:timedot-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0.50\ \ \ \ ledger-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4.50-\f[]-.fi-.PP-Here is a sample.timedot.---.SH "REPORTING BUGS"-Report bugs at http://bugs.hledger.org-(or on the #hledger IRC channel or hledger mail list)--.SH AUTHORS-Simon Michael <simon@joyful.com> and contributors--.SH COPYRIGHT--Copyright (C) 2007-2016 Simon Michael.-.br-Released under GNU GPL v3 or later.--.SH SEE ALSO-hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),-hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),-ledger(1)--http://hledger.org
− doc/other/hledger_timedot.5.info
@@ -1,116 +0,0 @@-This is hledger_timedot.5.info, produced by makeinfo version 6.0 from-stdin.---File: hledger_timedot.5.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir)--hledger_timedot(5) hledger 1.4-******************************--Timedot is a plain text format for logging dated, categorised quantities-(of time, usually), supported by hledger.  It is convenient for-approximate and retroactive time logging, eg when the real-time-clock-in/out required with a timeclock file is too precise or too-interruptive.  It can be formatted like a bar chart, making clear at a-glance where time was spent.--   Though called "timedot", this format is read by hledger as-commodityless quantities, so it could be used to represent dated-quantities other than time.  In the docs below we'll assume it's time.-* Menu:--* FILE FORMAT::---File: hledger_timedot.5.info,  Node: FILE FORMAT,  Prev: Top,  Up: Top--1 FILE FORMAT-*************--A timedot file contains a series of day entries.  A day entry begins-with a date, and is followed by category/quantity pairs, one per line.-Dates are hledger-style simple dates (see hledger_journal(5)).-Categories are hledger-style account names, optionally indented.  As in-a hledger journal, there must be at least two spaces between the-category (account name) and the quantity.--   Quantities can be written as:--   * a sequence of dots (.)  representing quarter hours.  Spaces may-     optionally be used for grouping and readability.  Eg: ....  ..--   * an integral or decimal number, representing hours.  Eg: 1.5--   * an integral or decimal number immediately followed by a unit symbol-     's', 'm', 'h', 'd', 'w', 'mo', or 'y', representing seconds,-     minutes, hours, days weeks, months or years respectively.  Eg: 90m.-     The following equivalencies are assumed, currently: 1m = 60s, 1h =-     60m, 1d = 24h, 1w = 7d, 1mo = 30d, 1y=365d.--   Blank lines and lines beginning with #, ; or * are ignored.  An-example:--# on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.-2016/2/1-inc:client1   .... .... .... .... .... ....-fos:haskell   .... ..-biz:research  .--2016/2/2-inc:client1   .... ....-biz:research  .--   Or with numbers:--2016/2/3-inc:client1   4-fos:hledger   3-biz:research  1--   Reporting:--$ hledger -f t.timedot print date:2016/2/2-2016/02/02 *-    (inc:client1)          2.00--2016/02/02 *-    (biz:research)          0.25--$ hledger -f t.timedot bal --daily --tree-Balance changes in 2016/02/01-2016/02/03:--            ||  2016/02/01d  2016/02/02d  2016/02/03d-============++========================================- biz        ||         0.25         0.25         1.00-   research ||         0.25         0.25         1.00- fos        ||         1.50            0         3.00-   haskell  ||         1.50            0            0-   hledger  ||            0            0         3.00- inc        ||         6.00         2.00         4.00-   client1  ||         6.00         2.00         4.00-------------++-----------------------------------------            ||         7.75         2.25         8.00--   I prefer to use period for separating account components.  We can-make this work with an account alias:--2016/2/4-fos.hledger.timedot  4-fos.ledger           ..--$ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4-                4.50  fos-                4.00    hledger:timedot-                0.50    ledger----------------------                4.50--   Here is a sample.timedot.---Tag Table:-Node: Top78-Node: FILE FORMAT809-Ref: #file-format912--End Tag Table
− doc/other/hledger_timedot.5.txt
@@ -1,127 +0,0 @@--hledger_timedot(5)           hledger User Manuals           hledger_timedot(5)----NAME-       Timedot - hledger's human-friendly time logging format--DESCRIPTION-       Timedot  is  a plain text format for logging dated, categorised quanti--       ties (of time, usually), supported by hledger.  It  is  convenient  for-       approximate  and  retroactive  time  logging,  eg  when  the  real-time-       clock-in/out required with a timeclock  file  is  too  precise  or  too-       interruptive.   It can be formatted like a bar chart, making clear at a-       glance where time was spent.--       Though called "timedot", this format is read by hledger  as  commodity--       less  quantities,  so  it  could  be used to represent dated quantities-       other than time.  In the docs below we'll assume it's time.--FILE FORMAT-       A timedot file contains a series of day entries.  A  day  entry  begins-       with  a date, and is followed by category/quantity pairs, one per line.-       Dates are hledger-style simple dates (see  hledger_journal(5)).   Cate--       gories  are  hledger-style account names, optionally indented.  As in a-       hledger journal, there must be at least two spaces between the category-       (account name) and the quantity.--       Quantities can be written as:--       o a  sequence  of  dots  (.)  representing  quarter  hours.  Spaces may-         optionally be used for grouping and readability.  Eg: ....  ..--       o an integral or decimal number, representing hours.  Eg: 1.5--       o an integral or decimal number immediately followed by a  unit  symbol-         s,  m,  h, d, w, mo, or y, representing seconds, minutes, hours, days-         weeks, months or years respectively.  Eg: 90m.  The following equiva--         lencies  are  assumed,  currently: 1m = 60s, 1h = 60m, 1d = 24h, 1w =-         7d, 1mo = 30d, 1y=365d.--       Blank lines and lines beginning with #, ; or * are ignored.   An  exam--       ple:--              # on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.-              2016/2/1-              inc:client1   .... .... .... .... .... ....-              fos:haskell   .... ..-              biz:research  .--              2016/2/2-              inc:client1   .... ....-              biz:research  .--       Or with numbers:--              2016/2/3-              inc:client1   4-              fos:hledger   3-              biz:research  1--       Reporting:--              $ hledger -f t.timedot print date:2016/2/2-              2016/02/02 *-                  (inc:client1)          2.00--              2016/02/02 *-                  (biz:research)          0.25--              $ hledger -f t.timedot bal --daily --tree-              Balance changes in 2016/02/01-2016/02/03:--                          ||  2016/02/01d  2016/02/02d  2016/02/03d-              ============++========================================-               biz        ||         0.25         0.25         1.00-                 research ||         0.25         0.25         1.00-               fos        ||         1.50            0         3.00-                 haskell  ||         1.50            0            0-                 hledger  ||            0            0         3.00-               inc        ||         6.00         2.00         4.00-                 client1  ||         6.00         2.00         4.00-              ------------++-----------------------------------------                          ||         7.75         2.25         8.00--       I  prefer to use period for separating account components.  We can make-       this work with an account alias:--              2016/2/4-              fos.hledger.timedot  4-              fos.ledger           ..--              $ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4-                              4.50  fos-                              4.00    hledger:timedot-                              0.50    ledger-              ---------------------                              4.50--       Here is a sample.timedot.----REPORTING BUGS-       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel-       or hledger mail list)---AUTHORS-       Simon Michael <simon@joyful.com> and contributors---COPYRIGHT-       Copyright (C) 2007-2016 Simon Michael.-       Released under GNU GPL v3 or later.---SEE ALSO-       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),-       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time--       dot(5), ledger(1)--       http://hledger.org----hledger 1.4                     September 2017              hledger_timedot(5)
+ hledger.1 view
@@ -0,0 +1,2934 @@+.\"t++.TH "hledger" "1" "December 2017" "hledger 1.5" "hledger User Manuals"++++.SH NAME+.PP+hledger \- a command\-line accounting tool+.SH SYNOPSIS+.PP+\f[C]hledger\ [\-f\ FILE]\ COMMAND\ [OPTIONS]\ [ARGS]\f[]+.PD 0+.P+.PD+\f[C]hledger\ [\-f\ FILE]\ ADDONCMD\ \-\-\ [OPTIONS]\ [ARGS]\f[]+.PD 0+.P+.PD+\f[C]hledger\f[]+.SH DESCRIPTION+.PP+hledger is a cross\-platform program for tracking money, time, or any+other commodity, using double\-entry accounting and a simple, editable+file format.+hledger is inspired by and largely compatible with ledger(1).+.PD 0+.P+.PD+Tested on unix, mac, windows, hledger aims to be a reliable, practical+tool for daily use.+.PP+This is hledger's command\-line interface (there are also curses and web+interfaces).+Its basic function is to read a plain text file describing financial+transactions (in accounting terms, a general journal) and print useful+reports on standard output, or export them as CSV.+hledger can also read some other file formats such as CSV files,+translating them to journal format.+Additionally, hledger lists other hledger\-* executables found in the+user's $PATH and can invoke them as subcommands.+.PP+hledger reads data from one or more files in hledger journal, timeclock,+timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+If using \f[C]$LEDGER_FILE\f[], note this must be a real environment+variable, not a shell variable.+You can specify standard input with \f[C]\-f\-\f[].+.PP+Transactions are dated movements of money between two (or more) named+accounts, and are recorded with journal entries like this:+.IP+.nf+\f[C]+2015/10/16\ bought\ food+\ expenses:food\ \ \ \ \ \ \ \ \ \ $10+\ assets:cash+\f[]+.fi+.PP+For more about this format, see hledger_journal(5).+.PP+Most users use a text editor to edit the journal, usually with an editor+mode such as ledger\-mode for added convenience.+hledger's interactive add command is another way to record new+transactions.+hledger never changes existing transactions.+.PP+To get started, you can either save some entries like the above in+\f[C]~/.hledger.journal\f[], or run \f[C]hledger\ add\f[] and follow the+prompts.+Then try some commands like \f[C]hledger\ print\f[] or+\f[C]hledger\ balance\f[].+Run \f[C]hledger\f[] with no arguments for a list of commands.+.SH EXAMPLES+.PP+Two simple transactions in hledger journal format:+.IP+.nf+\f[C]+2015/9/30\ gift\ received+\ \ assets:cash\ \ \ $20+\ \ income:gifts++2015/10/16\ farmers\ market+\ \ expenses:food\ \ \ \ $10+\ \ assets:cash+\f[]+.fi+.PP+Some basic reports:+.IP+.nf+\f[C]+$\ hledger\ print+2015/09/30\ gift\ received+\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ $20+\ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ $\-20++2015/10/16\ farmers\ market+\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ $10+\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ $\-10+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ accounts\ \-\-tree+assets+\ \ cash+expenses+\ \ food+income+\ \ gifts+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ balance+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ assets:cash+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $10\ \ expenses:food+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-20\ \ income:gifts+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ register\ cash+2015/09/30\ gift\ received\ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $20\ \ \ \ \ \ \ \ \ \ \ $20+2015/10/16\ farmers\ market\ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-10\ \ \ \ \ \ \ \ \ \ \ $10+\f[]+.fi+.PP+More commands:+.IP+.nf+\f[C]+$\ hledger\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ available\ commands+$\ hledger\ add\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ add\ more\ transactions\ to\ the\ journal\ file+$\ hledger\ balance\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ all\ accounts\ with\ aggregated\ balances+$\ hledger\ balance\ \-\-help\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ detailed\ help\ for\ balance\ command+$\ hledger\ balance\ \-\-depth\ 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ only\ top\-level\ accounts+$\ hledger\ register\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ account\ postings,\ with\ running\ total+$\ hledger\ reg\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ postings\ to/from\ income\ accounts+$\ hledger\ reg\ \[aq]assets:some\ bank:checking\[aq]\ #\ show\ postings\ to/from\ this\ checking\ account+$\ hledger\ print\ desc:shop\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transactions\ with\ shop\ in\ the\ description+$\ hledger\ activity\ \-W\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ show\ transaction\ counts\ per\ week\ as\ a\ bar\ chart+\f[]+.fi+.SH OPTIONS+.SS General options+.PP+To see general usage help, including general options which are supported+by most hledger commands, run \f[C]hledger\ \-h\f[].+.PP+General help options:+.TP+.B \f[C]\-h\ \-\-help\f[]+show general usage (or after COMMAND, command usage)+.RS+.RE+.TP+.B \f[C]\-\-version\f[]+show version+.RS+.RE+.TP+.B \f[C]\-\-debug[=N]\f[]+show debug output (levels 1\-9, default: 1)+.RS+.RE+.PP+General input options:+.TP+.B \f[C]\-f\ FILE\ \-\-file=FILE\f[]+use a different input file.+For stdin, use \- (default: \f[C]$LEDGER_FILE\f[] or+\f[C]$HOME/.hledger.journal\f[])+.RS+.RE+.TP+.B \f[C]\-\-rules\-file=RULESFILE\f[]+Conversion rules file to use when reading CSV (default: FILE.rules)+.RS+.RE+.TP+.B \f[C]\-\-alias=OLD=NEW\f[]+rename accounts named OLD to NEW+.RS+.RE+.TP+.B \f[C]\-\-anon\f[]+anonymize accounts and payees+.RS+.RE+.TP+.B \f[C]\-\-pivot\ FIELDNAME\f[]+use some other field or tag for the account name+.RS+.RE+.TP+.B \f[C]\-I\ \-\-ignore\-assertions\f[]+ignore any failing balance assertions+.RS+.RE+.PP+General reporting options:+.TP+.B \f[C]\-b\ \-\-begin=DATE\f[]+include postings/txns on or after this date+.RS+.RE+.TP+.B \f[C]\-e\ \-\-end=DATE\f[]+include postings/txns before this date+.RS+.RE+.TP+.B \f[C]\-D\ \-\-daily\f[]+multiperiod/multicolumn report by day+.RS+.RE+.TP+.B \f[C]\-W\ \-\-weekly\f[]+multiperiod/multicolumn report by week+.RS+.RE+.TP+.B \f[C]\-M\ \-\-monthly\f[]+multiperiod/multicolumn report by month+.RS+.RE+.TP+.B \f[C]\-Q\ \-\-quarterly\f[]+multiperiod/multicolumn report by quarter+.RS+.RE+.TP+.B \f[C]\-Y\ \-\-yearly\f[]+multiperiod/multicolumn report by year+.RS+.RE+.TP+.B \f[C]\-p\ \-\-period=PERIODEXP\f[]+set start date, end date, and/or reporting interval all at once using+period expressions syntax (overrides the flags above)+.RS+.RE+.TP+.B \f[C]\-\-date2\f[]+match the secondary date instead (see command help for other effects)+.RS+.RE+.TP+.B \f[C]\-U\ \-\-unmarked\f[]+include only unmarked postings/txns (can combine with \-P or \-C)+.RS+.RE+.TP+.B \f[C]\-P\ \-\-pending\f[]+include only pending postings/txns+.RS+.RE+.TP+.B \f[C]\-C\ \-\-cleared\f[]+include only cleared postings/txns+.RS+.RE+.TP+.B \f[C]\-R\ \-\-real\f[]+include only non\-virtual postings+.RS+.RE+.TP+.B \f[C]\-NUM\ \-\-depth=NUM\f[]+hide/aggregate accounts or postings more than NUM levels deep+.RS+.RE+.TP+.B \f[C]\-E\ \-\-empty\f[]+show items with zero amount, normally hidden+.RS+.RE+.TP+.B \f[C]\-B\ \-\-cost\f[]+convert amounts to their cost at transaction time (using the transaction+price, if any)+.RS+.RE+.TP+.B \f[C]\-V\ \-\-value\f[]+convert amounts to their market value on the report end date (using the+most recent applicable market price, if any)+.RS+.RE+.TP+.B \f[C]\-\-auto\f[]+apply automated posting rules to modify transactions.+.RS+.RE+.TP+.B \f[C]\-\-forecast\f[]+apply periodic transaction rules to generate future transactions, to 6+months from now or report end date.+.RS+.RE+.PP+When a reporting option appears more than once in the command line, the+last one takes precedence.+.PP+Some reporting options can also be written as query arguments.+.SS Command options+.PP+To see options for a particular command, including command\-specific+options, run: \f[C]hledger\ COMMAND\ \-h\f[].+.PP+Command\-specific options must be written after the command name, eg:+\f[C]hledger\ print\ \-x\f[].+.PP+Additionally, if the command is an addon, you may need to put its+options after a double\-hyphen, eg:+\f[C]hledger\ ui\ \-\-\ \-\-watch\f[].+Or, you can run the addon executable directly:+\f[C]hledger\-ui\ \-\-watch\f[].+.SS Command arguments+.PP+Most hledger commands accept arguments after the command name, which are+often a query, filtering the data in some way.+.SS Argument files+.PP+You can save a set of command line options/arguments in a file, one per+line, and then reuse them by writing \f[C]\@FILENAME\f[] in a command+line.+To prevent this expansion of \f[C]\@\f[]\-arguments, precede them with a+\f[C]\-\-\f[] argument.+For more, see Save frequently used options.+.SS Special characters+.PP+Option and argument values which contain problematic characters should+be escaped with double quotes, backslashes, or (best) single quotes.+Problematic characters means spaces, and also characters which are+significant to your command shell, such as less\-than/greater\-than.+Eg:+\f[C]hledger\ register\ \-p\ \[aq]last\ year\[aq]\ "accounts\ receivable\ (receivable|payable)"\ amt:\\>100\f[].+.PP+Characters which are significant both to the shell and in regular+expressions sometimes need to be double\-escaped.+These include parentheses, the pipe symbol and the dollar sign.+Eg, to match the dollar symbol, bash users should do:+\f[C]hledger\ balance\ cur:\[aq]\\$\[aq]\f[] or+\f[C]hledger\ balance\ cur:\\\\$\f[].+.PP+When hledger is invoking an addon executable (like hledger\-ui), options+and arguments get de\-escaped once more, so you might need+\f[I]triple\f[]\-escaping.+Eg: \f[C]hledger\ ui\ cur:\[aq]\\\\$\[aq]\f[] or+\f[C]hledger\ ui\ cur:\\\\\\\\$\f[] in bash.+(The number of backslashes in fish shell is left as an exercise for the+reader.)+.PP+Inside a file used for argument expansion, one less level of escaping is+enough.+(And in this case, backslashes seem to work better than quotes.+Eg: \f[C]cur:\\$\f[]).+.PP+If in doubt, keep things simple:+.IP \[bu] 2+run add\-on executables directly+.IP \[bu] 2+write options after the command+.IP \[bu] 2+enclose problematic args in single quotes+.IP \[bu] 2+if needed, also add a backslash to escape regexp metacharacters+.PP+If you're really stumped, add \f[C]\-\-debug=2\f[] to troubleshoot.+.SS Input files+.PP+hledger reads transactions from a data file (and the add command writes+to it).+By default this file is \f[C]$HOME/.hledger.journal\f[] (or on Windows,+something like \f[C]C:/Users/USER/.hledger.journal\f[]).+You can override this with the \f[C]$LEDGER_FILE\f[] environment+variable:+.IP+.nf+\f[C]+$\ setenv\ LEDGER_FILE\ ~/finance/2016.journal+$\ hledger\ stats+\f[]+.fi+.PP+or with the \f[C]\-f/\-\-file\f[] option:+.IP+.nf+\f[C]+$\ hledger\ \-f\ /some/file\ stats+\f[]+.fi+.PP+The file name \f[C]\-\f[] (hyphen) means standard input:+.IP+.nf+\f[C]+$\ cat\ some.journal\ |\ hledger\ \-f\-+\f[]+.fi+.PP+Usually the data file is in hledger's journal format, but it can also be+one of several other formats, listed below.+hledger detects the format automatically based on the file extension, or+if that is not recognised, by trying each built\-in \[lq]reader\[rq] in+turn:+.PP+.TS+tab(@);+lw(10.3n) lw(33.5n) lw(26.2n).+T{+Reader:+T}@T{+Reads:+T}@T{+Used for file extensions:+T}+_+T{+\f[C]journal\f[]+T}@T{+hledger's journal format, also some Ledger journals+T}@T{+\f[C]\&.journal\f[] \f[C]\&.j\f[] \f[C]\&.hledger\f[] \f[C]\&.ledger\f[]+T}+T{+\f[C]timeclock\f[]+T}@T{+timeclock files (precise time logging)+T}@T{+\f[C]\&.timeclock\f[]+T}+T{+\f[C]timedot\f[]+T}@T{+timedot files (approximate time logging)+T}@T{+\f[C]\&.timedot\f[]+T}+T{+\f[C]csv\f[]+T}@T{+comma\-separated values (data interchange)+T}@T{+\f[C]\&.csv\f[]+T}+.TE+.PP+If needed (eg to ensure correct error messages when a file has the+\[lq]wrong\[rq] extension), you can force a specific reader/format by+prepending it to the file path with a colon.+Examples:+.IP+.nf+\f[C]+$\ hledger\ \-f\ csv:/some/csv\-file.dat\ stats+$\ echo\ \[aq]i\ 2009/13/1\ 08:00:00\[aq]\ |\ hledger\ print\ \-ftimeclock:\-+\f[]+.fi+.PP+You can also specify multiple \f[C]\-f\f[] options, to read multiple+files as one big journal.+There are some limitations with this:+.IP \[bu] 2+directives in one file will not affect the other files+.IP \[bu] 2+balance assertions will not see any account balances from previous files+.PP+If you need those, either use the include directive, or concatenate the+files, eg: \f[C]cat\ a.journal\ b.journal\ |\ hledger\ \-f\-\ CMD\f[].+.SS Smart dates+.PP+hledger's user interfaces accept a flexible \[lq]smart date\[rq] syntax+(unlike dates in the journal file).+Smart dates allow some english words, can be relative to today's date,+and can have less\-significant date parts omitted (defaulting to 1).+.PP+Examples:+.PP+.TS+tab(@);+l l.+T{+\f[C]2009/1/1\f[], \f[C]2009/01/01\f[], \f[C]2009\-1\-1\f[],+\f[C]2009.1.1\f[]+T}@T{+simple dates, several separators allowed+T}+T{+\f[C]2009/1\f[], \f[C]2009\f[]+T}@T{+same as above \- a missing day or month defaults to 1+T}+T{+\f[C]1/1\f[], \f[C]january\f[], \f[C]jan\f[], \f[C]this\ year\f[]+T}@T{+relative dates, meaning january 1 of the current year+T}+T{+\f[C]next\ year\f[]+T}@T{+january 1 of next year+T}+T{+\f[C]this\ month\f[]+T}@T{+the 1st of the current month+T}+T{+\f[C]this\ week\f[]+T}@T{+the most recent monday+T}+T{+\f[C]last\ week\f[]+T}@T{+the monday of the week before this one+T}+T{+\f[C]lastweek\f[]+T}@T{+spaces are optional+T}+T{+\f[C]today\f[], \f[C]yesterday\f[], \f[C]tomorrow\f[]+T}@T{+T}+.TE+.SS Report start & end date+.PP+Most hledger reports show the full span of time represented by the+journal data, by default.+So, the effective report start and end dates will be the earliest and+latest transaction or posting dates found in the journal.+.PP+Often you will want to see a shorter time span, such as the current+month.+You can specify a start and/or end date using \f[C]\-b/\-\-begin\f[],+\f[C]\-e/\-\-end\f[], \f[C]\-p/\-\-period\f[] or a \f[C]date:\f[] query+(described below).+All of these accept the smart date syntax.+One important thing to be aware of when specifying end dates: as in+Ledger, end dates are exclusive, so you need to write the date+\f[I]after\f[] the last day you want to include.+.PP+Examples:+.PP+.TS+tab(@);+l l.+T{+\f[C]\-b\ 2016/3/17\f[]+T}@T{+begin on St.\ Patrick's day 2016+T}+T{+\f[C]\-e\ 12/1\f[]+T}@T{+end at the start of december 1st of the current year (11/30 will be the+last date included)+T}+T{+\f[C]\-b\ thismonth\f[]+T}@T{+all transactions on or after the 1st of the current month+T}+T{+\f[C]\-p\ thismonth\f[]+T}@T{+all transactions in the current month+T}+T{+\f[C]date:2016/3/17\-\f[]+T}@T{+the above written as queries instead+T}+T{+\f[C]date:\-12/1\f[]+T}@T{+T}+T{+\f[C]date:thismonth\-\f[]+T}@T{+T}+T{+\f[C]date:thismonth\f[]+T}@T{+T}+.TE+.SS Report intervals+.PP+A report interval can be specified so that commands like register,+balance and activity will divide their reports into multiple subperiods.+The basic intervals can be selected with one of \f[C]\-D/\-\-daily\f[],+\f[C]\-W/\-\-weekly\f[], \f[C]\-M/\-\-monthly\f[],+\f[C]\-Q/\-\-quarterly\f[], or \f[C]\-Y/\-\-yearly\f[].+More complex intervals may be specified with a period expression.+Report intervals can not be specified with a query, currently.+.SS Period expressions+.PP+The \f[C]\-p/\-\-period\f[] option accepts period expressions, a+shorthand way of expressing a start date, end date, and/or report+interval all at once.+.PP+Here's a basic period expression specifying the first quarter of 2009.+Note, hledger always treats start dates as inclusive and end dates as+exclusive:+.PP+\f[C]\-p\ "from\ 2009/1/1\ to\ 2009/4/1"\f[]+.PP+Keywords like \[lq]from\[rq] and \[lq]to\[rq] are optional, and so are+the spaces, as long as you don't run two dates together.+\[lq]to\[rq] can also be written as \[lq]\-\[rq].+These are equivalent to the above:+.PP+.TS+tab(@);+l.+T{+\f[C]\-p\ "2009/1/1\ 2009/4/1"\f[]+T}+T{+\f[C]\-p2009/1/1to2009/4/1\f[]+T}+T{+\f[C]\-p2009/1/1\-2009/4/1\f[]+T}+.TE+.PP+Dates are smart dates, so if the current year is 2009, the above can+also be written as:+.PP+.TS+tab(@);+l.+T{+\f[C]\-p\ "1/1\ 4/1"\f[]+T}+T{+\f[C]\-p\ "january\-apr"\f[]+T}+T{+\f[C]\-p\ "this\ year\ to\ 4/1"\f[]+T}+.TE+.PP+If you specify only one date, the missing start or end date will be the+earliest or latest transaction in your journal:+.PP+.TS+tab(@);+l l.+T{+\f[C]\-p\ "from\ 2009/1/1"\f[]+T}@T{+everything after january 1, 2009+T}+T{+\f[C]\-p\ "from\ 2009/1"\f[]+T}@T{+the same+T}+T{+\f[C]\-p\ "from\ 2009"\f[]+T}@T{+the same+T}+T{+\f[C]\-p\ "to\ 2009"\f[]+T}@T{+everything before january 1, 2009+T}+.TE+.PP+A single date with no \[lq]from\[rq] or \[lq]to\[rq] defines both the+start and end date like so:+.PP+.TS+tab(@);+l l.+T{+\f[C]\-p\ "2009"\f[]+T}@T{+the year 2009; equivalent to \[lq]2009/1/1 to 2010/1/1\[rq]+T}+T{+\f[C]\-p\ "2009/1"\f[]+T}@T{+the month of jan; equivalent to \[lq]2009/1/1 to 2009/2/1\[rq]+T}+T{+\f[C]\-p\ "2009/1/1"\f[]+T}@T{+just that day; equivalent to \[lq]2009/1/1 to 2009/1/2\[rq]+T}+.TE+.PP+The argument of \f[C]\-p\f[] can also begin with, or be, a report+interval expression.+The basic report intervals are \f[C]daily\f[], \f[C]weekly\f[],+\f[C]monthly\f[], \f[C]quarterly\f[], or \f[C]yearly\f[], which have the+same effect as the \f[C]\-D\f[],\f[C]\-W\f[],\f[C]\-M\f[],\f[C]\-Q\f[],+or \f[C]\-Y\f[] flags.+Between report interval and start/end dates (if any), the word+\f[C]in\f[] is optional.+Examples:+.PP+.TS+tab(@);+l.+T{+\f[C]\-p\ "weekly\ from\ 2009/1/1\ to\ 2009/4/1"\f[]+T}+T{+\f[C]\-p\ "monthly\ in\ 2008"\f[]+T}+T{+\f[C]\-p\ "quarterly"\f[]+T}+.TE+.PP+Note that \f[C]weekly\f[], \f[C]monthly\f[], \f[C]quarterly\f[] and+\f[C]yearly\f[] intervals will always start on the first day on week,+month, quarter or year accordingly, and will end on the last day of same+period, even if associated period expression specifies different+explicit start and end date.+.PP+For example:+.PP+.TS+tab(@);+l.+T{+\f[C]\-p\ "weekly\ from\ 2009/1/1\ to\ 2009/4/1"\f[] \[en] starts on+2008/12/29, closest preceeding Monday+T}+T{+\f[C]\-p\ "monthly\ in\ 2008/11/25"\f[] \[en] starts on 2018/11/01+T}+T{+\f[C]\-p\ "quarterly\ from\ 2009\-05\-05\ to\ 2009\-06\-01"\f[] \-+starts on 2009/04/01, ends on 2009/06/30, which are first and last days+of Q2 2009+T}+T{+\f[C]\-p\ "yearly\ from\ 2009\-12\-29"\f[] \- starts on 2009/01/01,+first day of 2009+T}+.TE+.PP+The following more complex report intervals are also supported:+\f[C]biweekly\f[], \f[C]bimonthly\f[],+\f[C]every\ day|week|month|quarter|year\f[],+\f[C]every\ N\ days|weeks|months|quarters|years\f[].+.PP+All of these will start on the first day of the requested period and end+on the last one, as described above.+.PP+Examples:+.PP+.TS+tab(@);+l.+T{+\f[C]\-p\ "bimonthly\ from\ 2008"\f[] \[en] periods will have boundaries+on 2008/01/01, 2008/03/01, \&...+T}+T{+\f[C]\-p\ "every\ 2\ weeks"\f[] \[en] starts on closest preceeding+Monday+T}+T{+\f[C]\-p\ "every\ 5\ month\ from\ 2009/03"\f[] \[en] periods will have+boundaries on 2009/03/01, 2009/08/01, \&...+T}+.TE+.PP+If you want intervals that start on arbitrary day of your choosing and+span a week, month or year, you need to use any of the following:+.PP+\f[C]every\ Nth\ day\ of\ week\f[], \f[C]every\ <weekday>\f[],+\f[C]every\ Nth\ day\ [of\ month]\f[],+\f[C]every\ Nth\ weekday\ [of\ month]\f[],+\f[C]every\ MM/DD\ [of\ year]\f[], \f[C]every\ Nth\ MMM\ [of\ year]\f[],+\f[C]every\ MMM\ Nth\ [of\ year]\f[].+.PP+Examples:+.PP+.TS+tab(@);+l.+T{+\f[C]\-p\ "every\ 2nd\ day\ of\ week"\f[] \[en] periods will go from Tue+to Tue+T}+T{+\f[C]\-p\ "every\ Tue"\f[] \[en] same+T}+T{+\f[C]\-p\ "every\ 15th\ day"\f[] \[en] period boundaries will be on 15th+of each month+T}+T{+\f[C]\-p\ "every\ 2nd\ Monday"\f[] \[en] period boundaries will be on+second Monday of each month+T}+T{+\f[C]\-p\ "every\ 11/05"\f[] \[en] yearly periods with boundaries on 5th+of Nov+T}+T{+\f[C]\-p\ "every\ 5th\ Nov"\f[] \[en] same+T}+T{+\f[C]\-p\ "every\ Nov\ 5th"\f[] \[en] same+T}+.TE+.PP+Show historical balances at end of 15th each month (N is exclusive end+date):+.PP+\f[C]hledger\ balance\ \-H\ \-p\ "every\ 16th\ day"\f[]+.PP+Group postings from start of wednesday to end of next tuesday (N is+start date and exclusive end date):+.PP+\f[C]hledger\ register\ checking\ \-p\ "every\ 3rd\ day\ of\ week"\f[]+.SS Depth limiting+.PP+With the \f[C]\-\-depth\ N\f[] option (short form: \f[C]\-N\f[]),+commands like account, balance and register will show only the uppermost+accounts in the account tree, down to level N.+Use this when you want a summary with less detail.+This flag has the same effect as a \f[C]depth:\f[] query argument (so+\f[C]\-2\f[], \f[C]\-\-depth=2\f[] or \f[C]depth:2\f[] are basically+equivalent).+.SS Pivoting+.PP+Normally hledger sums amounts, and organizes them in a hierarchy, based+on account name.+The \f[C]\-\-pivot\ FIELD\f[] option causes it to sum and organize+hierarchy based on the value of some other field instead.+FIELD can be: \f[C]code\f[], \f[C]description\f[], \f[C]payee\f[],+\f[C]note\f[], or the full name (case insensitive) of any tag.+As with account names, values containing \f[C]colon:separated:parts\f[]+will be displayed hierarchically in reports.+.PP+\f[C]\-\-pivot\f[] is a general option affecting all reports; you can+think of hledger transforming the journal before any other processing,+replacing every posting's account name with the value of the specified+field on that posting, inheriting it from the transaction or using a+blank value if it's not present.+.PP+An example:+.IP+.nf+\f[C]+2016/02/16\ Member\ Fee\ Payment+\ \ \ \ assets:bank\ account\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR+\ \ \ \ income:member\ fees\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ ;\ member:\ John\ Doe+\f[]+.fi+.PP+Normal balance report showing account names:+.IP+.nf+\f[C]+$\ hledger\ balance+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR\ \ assets:bank\ account+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ income:member\ fees+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+Pivoted balance report, using member: tag values instead:+.IP+.nf+\f[C]+$\ hledger\ balance\ \-\-pivot\ member+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ EUR+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ John\ Doe+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+One way to show only amounts with a member: value (using a query,+described below):+.IP+.nf+\f[C]+$\ hledger\ balance\ \-\-pivot\ member\ tag:member=.+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ John\ Doe+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR+\f[]+.fi+.PP+Another way (the acct: query matches against the pivoted \[lq]account+name\[rq]):+.IP+.nf+\f[C]+$\ hledger\ balance\ \-\-pivot\ member\ acct:.+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR\ \ John\ Doe+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \-2\ EUR+\f[]+.fi+.SS Cost+.PP+The \f[C]\-B/\-\-cost\f[] flag converts amounts to their cost at+transaction time, if they have a transaction price specified.+.SS Market value+.PP+The \f[C]\-V/\-\-value\f[] flag converts reported amounts to their+current market value.+Specifically, when there is a market price (P directive) for the+amount's commodity, dated on or before today's date (or the report end+date if specified), the amount will be converted to the price's+commodity.+.PP+When there are multiple applicable P directives, \-V chooses the most+recent one, or in case of equal dates, the last\-parsed one.+.PP+For example:+.IP+.nf+\f[C]+#\ one\ euro\ is\ worth\ this\ many\ dollars\ from\ nov\ 1+P\ 2016/11/01\ €\ $1.10++#\ purchase\ some\ euros\ on\ nov\ 3+2016/11/3+\ \ \ \ assets:euros\ \ \ \ \ \ \ \ €100+\ \ \ \ assets:checking++#\ the\ euro\ is\ worth\ fewer\ dollars\ by\ dec\ 21+P\ 2016/12/21\ €\ $1.03+\f[]+.fi+.PP+How many euros do I have ?+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.j\ bal\ euros+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ €100\ \ assets:euros+\f[]+.fi+.PP+What are they worth on nov 3 ?+(no report end date specified, defaults to the last date in the journal)+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.j\ bal\ euros\ \-V+\ \ \ \ \ \ \ \ \ \ \ \ \ $110.00\ \ assets:euros+\f[]+.fi+.PP+What are they worth on dec 21 ?+.IP+.nf+\f[C]+$\ hledger\ \-f\ t.j\ bal\ euros\ \-V\ \-e\ 2016/12/21+\ \ \ \ \ \ \ \ \ \ \ \ \ $103.00\ \ assets:euros+\f[]+.fi+.PP+Currently, hledger's \-V only uses market prices recorded with P+directives, not transaction prices (unlike Ledger).+.SS Combining \-B and \-V+.PP+Using \-B/\[en]cost and \-V/\[en]value together is currently allowed,+but the results are probably not meaningful.+Let us know if you find a use for this.+.SS Regular expressions+.PP+hledger uses regular expressions in a number of places:+.IP \[bu] 2+query terms, on the command line and in the hledger\-web search form:+\f[C]REGEX\f[], \f[C]desc:REGEX\f[], \f[C]cur:REGEX\f[],+\f[C]tag:...=REGEX\f[]+.IP \[bu] 2+CSV rules conditional blocks: \f[C]if\ REGEX\ ...\f[]+.IP \[bu] 2+account alias directives and options:+\f[C]alias\ /REGEX/\ =\ REPLACEMENT\f[],+\f[C]\-\-alias\ /REGEX/=REPLACEMENT\f[]+.PP+hledger's regular expressions come from the regex\-tdfa library.+In general they:+.IP \[bu] 2+are case insensitive+.IP \[bu] 2+are infix matching (do not need to match the entire thing being matched)+.IP \[bu] 2+are POSIX extended regular expressions+.IP \[bu] 2+also support GNU word boundaries (\\<, \\>, \\b, \\B)+.IP \[bu] 2+and parenthesised capturing groups and numeric backreferences in+replacement strings+.IP \[bu] 2+do not support mode modifiers like (?s)+.PP+Some things to note:+.IP \[bu] 2+In the \f[C]alias\f[] directive and \f[C]\-\-alias\f[] option, regular+expressions must be enclosed in forward slashes (\f[C]/REGEX/\f[]).+Elsewhere in hledger, these are not required.+.IP \[bu] 2+In queries, to match a regular expression metacharacter like \f[C]$\f[]+as a literal character, prepend a backslash.+Eg to search for amounts with the dollar sign in hledger\-web, write+\f[C]cur:\\$\f[].+.IP \[bu] 2+On the command line, some metacharacters like \f[C]$\f[] have a special+meaning to the shell and so must be escaped at least once more.+See Special characters.+.SH QUERIES+.PP+One of hledger's strengths is being able to quickly report on precise+subsets of your data.+Most commands accept an optional query expression, written as arguments+after the command name, to filter the data by date, account name or+other criteria.+The syntax is similar to a web search: one or more space\-separated+search terms, quotes to enclose whitespace, prefixes to match specific+fields, a not: prefix to negate the match.+.PP+We do not yet support arbitrary boolean combinations of search terms;+instead most commands show transactions/postings/accounts which match+(or negatively match):+.IP \[bu] 2+any of the description terms AND+.IP \[bu] 2+any of the account terms AND+.IP \[bu] 2+any of the status terms AND+.IP \[bu] 2+all the other terms.+.PP+The print command instead shows transactions which:+.IP \[bu] 2+match any of the description terms AND+.IP \[bu] 2+have any postings matching any of the positive account terms AND+.IP \[bu] 2+have no postings matching any of the negative account terms AND+.IP \[bu] 2+match all the other terms.+.PP+The following kinds of search terms can be used.+Remember these can also be prefixed with \f[B]\f[BC]not:\f[B]\f[], eg to+exclude a particular subaccount.+.TP+.B \f[B]\f[BC]REGEX\f[B]\f[]+match account names by this regular expression.+(No prefix is equivalent to \f[C]acct:\f[]).+.RS+.RE+.TP+.B \f[B]\f[BC]acct:REGEX\f[B]\f[]+same as above+.RS+.RE+.TP+.B \f[B]\f[BC]amt:N,\ amt:<N,\ amt:<=N,\ amt:>N,\ amt:>=N\f[B]\f[]+match postings with a single\-commodity amount that is equal to, less+than, or greater than N.+(Multi\-commodity amounts are not tested, and will always match.) The+comparison has two modes: if N is preceded by a + or \- sign (or is 0),+the two signed numbers are compared.+Otherwise, the absolute magnitudes are compared, ignoring sign.+.RS+.RE+.TP+.B \f[B]\f[BC]code:REGEX\f[B]\f[]+match by transaction code (eg check number)+.RS+.RE+.TP+.B \f[B]\f[BC]cur:REGEX\f[B]\f[]+match postings or transactions including any amounts whose+currency/commodity symbol is fully matched by REGEX.+(For a partial match, use \f[C]\&.*REGEX.*\f[]).+Note, to match characters which are regex\-significant, like the dollar+sign (\f[C]$\f[]), you need to prepend \f[C]\\\f[].+And when using the command line you need to add one more level of+quoting to hide it from the shell, so eg do:+\f[C]hledger\ print\ cur:\[aq]\\$\[aq]\f[] or+\f[C]hledger\ print\ cur:\\\\$\f[].+.RS+.RE+.TP+.B \f[B]\f[BC]desc:REGEX\f[B]\f[]+match transaction descriptions.+.RS+.RE+.TP+.B \f[B]\f[BC]date:PERIODEXPR\f[B]\f[]+match dates within the specified period.+PERIODEXPR is a period expression (with no report interval).+Examples: \f[C]date:2016\f[], \f[C]date:thismonth\f[],+\f[C]date:2000/2/1\-2/15\f[], \f[C]date:lastweek\-\f[].+If the \f[C]\-\-date2\f[] command line flag is present, this matches+secondary dates instead.+.RS+.RE+.TP+.B \f[B]\f[BC]date2:PERIODEXPR\f[B]\f[]+match secondary dates within the specified period.+.RS+.RE+.TP+.B \f[B]\f[BC]depth:N\f[B]\f[]+match (or display, depending on command) accounts at or above this depth+.RS+.RE+.TP+.B \f[B]\f[BC]note:REGEX\f[B]\f[]+match transaction notes (part of description right of \f[C]|\f[], or+whole description when there's no \f[C]|\f[])+.RS+.RE+.TP+.B \f[B]\f[BC]payee:REGEX\f[B]\f[]+match transaction payee/payer names (part of description left of+\f[C]|\f[], or whole description when there's no \f[C]|\f[])+.RS+.RE+.TP+.B \f[B]\f[BC]real:,\ real:0\f[B]\f[]+match real or virtual postings respectively+.RS+.RE+.TP+.B \f[B]\f[BC]status:,\ status:!,\ status:*\f[B]\f[]+match unmarked, pending, or cleared transactions respectively+.RS+.RE+.TP+.B \f[B]\f[BC]tag:REGEX[=REGEX]\f[B]\f[]+match by tag name, and optionally also by tag value.+Note a tag: query is considered to match a transaction if it matches any+of the postings.+Also remember that postings inherit the tags of their parent+transaction.+.RS+.RE+.PP+The following special search term is used automatically in hledger\-web,+only:+.TP+.B \f[B]\f[BC]inacct:ACCTNAME\f[B]\f[]+tells hledger\-web to show the transaction register for this account.+Can be filtered further with \f[C]acct\f[] etc.+.RS+.RE+.PP+Some of these can also be expressed as command\-line options (eg+\f[C]depth:2\f[] is equivalent to \f[C]\-\-depth\ 2\f[]).+Generally you can mix options and query arguments, and the resulting+query will be their intersection (perhaps excluding the+\f[C]\-p/\-\-period\f[] option).+.SH COMMANDS+.PP+hledger provides a number of subcommands; \f[C]hledger\f[] with no+arguments shows a list.+.PP+If you install additional \f[C]hledger\-*\f[] packages, or if you put+programs or scripts named \f[C]hledger\-NAME\f[] in your PATH, these+will also be listed as subcommands.+.PP+Run a subcommand by writing its name as first argument (eg+\f[C]hledger\ incomestatement\f[]).+You can also write one of the standard short aliases displayed in+parentheses in the command list (\f[C]hledger\ b\f[]), or any any+unambiguous prefix of a command name (\f[C]hledger\ inc\f[]).+.PP+Here are all the builtin commands in alphabetical order.+See also \f[C]hledger\f[] for a more organised command list, and+\f[C]hledger\ CMD\ \-h\f[] for detailed command help.+.SS accounts+.PP+Show account names.+Alias: a.+.TP+.B \f[C]\-\-tree\f[]+show short account names, as a tree+.RS+.RE+.TP+.B \f[C]\-\-flat\f[]+show full account names, as a list (default)+.RS+.RE+.TP+.B \f[C]\-\-drop=N\f[]+in flat mode: omit N leading account name parts+.RS+.RE+.PP+This command lists all account names that are in use (ie, all the+accounts which have at least one transaction posting to them).+With query arguments, only matched account names are shown.+.PP+It shows a flat list by default.+With \f[C]\-\-tree\f[], it uses indentation to show the account+hierarchy.+.PP+In flat mode you can add \f[C]\-\-drop\ N\f[] to omit the first few+account name components.+.PP+Examples:+.IP+.nf+\f[C]+$\ hledger\ accounts\ \-\-tree+assets+\ \ bank+\ \ \ \ checking+\ \ \ \ saving+\ \ cash+expenses+\ \ food+\ \ supplies+income+\ \ gifts+\ \ salary+liabilities+\ \ debts+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ accounts\ \-\-drop\ 1+bank:checking+bank:saving+cash+food+supplies+gifts+salary+debts+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ accounts+assets:bank:checking+assets:bank:saving+assets:cash+expenses:food+expenses:supplies+income:gifts+income:salary+liabilities:debts+\f[]+.fi+.SS activity+.PP+Show an ascii barchart of posting counts per interval.+.PP+The activity command displays an ascii histogram showing transaction+counts by day, week, month or other reporting interval (by day is the+default).+With query arguments, it counts only matched transactions.+.IP+.nf+\f[C]+$\ hledger\ activity\ \-\-quarterly+2008\-01\-01\ **+2008\-04\-01\ *******+2008\-07\-01\ +2008\-10\-01\ **+\f[]+.fi+.SS add+.PP+Prompt for transactions and add them to the journal.+.TP+.B \f[C]\-\-no\-new\-accounts\f[]+don't allow creating new accounts; helps prevent typos when entering+account names+.RS+.RE+.PP+Many hledger users edit their journals directly with a text editor, or+generate them from CSV.+For more interactive data entry, there is the \f[C]add\f[] command,+which prompts interactively on the console for new transactions, and+appends them to the journal file (if there are multiple+\f[C]\-f\ FILE\f[] options, the first file is used.) Existing+transactions are not changed.+This is the only hledger command that writes to the journal file.+.PP+To use it, just run \f[C]hledger\ add\f[] and follow the prompts.+You can add as many transactions as you like; when you are finished,+enter \f[C]\&.\f[] or press control\-d or control\-c to exit.+.PP+Features:+.IP \[bu] 2+add tries to provide useful defaults, using the most similar recent+transaction (by description) as a template.+.IP \[bu] 2+You can also set the initial defaults with command line arguments.+.IP \[bu] 2+Readline\-style edit keys can be used during data entry.+.IP \[bu] 2+The tab key will auto\-complete whenever possible \- accounts,+descriptions, dates (\f[C]yesterday\f[], \f[C]today\f[],+\f[C]tomorrow\f[]).+If the input area is empty, it will insert the default value.+.IP \[bu] 2+If the journal defines a default commodity, it will be added to any bare+numbers entered.+.IP \[bu] 2+A parenthesised transaction code may be entered following a date.+.IP \[bu] 2+Comments and tags may be entered following a description or amount.+.IP \[bu] 2+If you make a mistake, enter \f[C]<\f[] at any prompt to restart the+transaction.+.IP \[bu] 2+Input prompts are displayed in a different colour when the terminal+supports it.+.PP+Example (see the tutorial for a detailed explanation):+.IP+.nf+\f[C]+$\ hledger\ add+Adding\ transactions\ to\ journal\ file\ /src/hledger/examples/sample.journal+Any\ command\ line\ arguments\ will\ be\ used\ as\ defaults.+Use\ tab\ key\ to\ complete,\ readline\ keys\ to\ edit,\ enter\ to\ accept\ defaults.+An\ optional\ (CODE)\ may\ follow\ transaction\ dates.+An\ optional\ ;\ COMMENT\ may\ follow\ descriptions\ or\ amounts.+If\ you\ make\ a\ mistake,\ enter\ <\ at\ any\ prompt\ to\ restart\ the\ transaction.+To\ end\ a\ transaction,\ enter\ .\ when\ prompted.+To\ quit,\ enter\ .\ at\ a\ date\ prompt\ or\ press\ control\-d\ or\ control\-c.+Date\ [2015/05/22]:\ +Description:\ supermarket+Account\ 1:\ expenses:food+Amount\ \ 1:\ $10+Account\ 2:\ assets:checking+Amount\ \ 2\ [$\-10.0]:\ +Account\ 3\ (or\ .\ or\ enter\ to\ finish\ this\ transaction):\ .+2015/05/22\ supermarket+\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ $10+\ \ \ \ assets:checking\ \ \ \ \ \ \ \ $\-10.0++Save\ this\ transaction\ to\ the\ journal\ ?\ [y]:\ +Saved.+Starting\ the\ next\ transaction\ (.\ or\ ctrl\-D/ctrl\-C\ to\ quit)+Date\ [2015/05/22]:\ <CTRL\-D>\ $+\f[]+.fi+.SS balance+.PP+Show accounts and their balances.+Aliases: b, bal.+.TP+.B \f[C]\-\-change\f[]+show balance change in each period (default)+.RS+.RE+.TP+.B \f[C]\-\-cumulative\f[]+show balance change accumulated across periods (in multicolumn reports)+.RS+.RE+.TP+.B \f[C]\-H\ \-\-historical\f[]+show historical ending balance in each period (includes postings before+report start date)+.RS+.RE+.TP+.B \f[C]\-\-tree\f[]+show accounts as a tree; amounts include subaccounts (default in simple+reports)+.RS+.RE+.TP+.B \f[C]\-\-flat\f[]+show accounts as a list; amounts exclude subaccounts except when account+is depth\-clipped (default in multicolumn reports)+.RS+.RE+.TP+.B \f[C]\-A\ \-\-average\f[]+show a row average column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-T\ \-\-row\-total\f[]+show a row total column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-N\ \-\-no\-total\f[]+don't show the final total row+.RS+.RE+.TP+.B \f[C]\-\-drop=N\f[]+omit N leading account name parts (in flat mode)+.RS+.RE+.TP+.B \f[C]\-\-no\-elide\f[]+don't squash boring parent accounts (in tree mode)+.RS+.RE+.TP+.B \f[C]\-\-format=LINEFORMAT\f[]+in single\-column balance reports: use this custom line format+.RS+.RE+.TP+.B \f[C]\-O\ FMT\ \-\-output\-format=FMT\f[]+select the output format.+Supported formats: txt, csv.+.RS+.RE+.TP+.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]+write output to FILE.+A file extension matching one of the above formats selects that format.+.RS+.RE+.TP+.B \f[C]\-\-pretty\-tables\f[]+use unicode to display prettier tables.+.RS+.RE+.TP+.B \f[C]\-\-sort\-amount\f[]+sort by amount instead of account name (in flat mode).+With multiple columns, sorts by the row total, or by row average if that+is displayed.+.RS+.RE+.TP+.B \f[C]\-\-budget\f[]+show performance compared to budget goals defined by periodic+transactions+.RS+.RE+.TP+.B \f[C]\-\-show\-unbudgeted\f[]+with \[en]budget, show unbudgeted accounts also+.RS+.RE+.PP+The balance command displays accounts and balances.+It is hledger's most featureful and versatile command.+.IP+.nf+\f[C]+$\ hledger\ balance+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ \ \ cash+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ food+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ supplies+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ income+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ gifts+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ salary+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities:debts+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+More precisely, the balance command shows the \f[I]change\f[] to each+account's balance caused by all (matched) postings.+In the common case where you do not filter by date and your journal sets+the correct opening balances, this is the same as the account's ending+balance.+.PP+By default, accounts are displayed hierarchically, with subaccounts+indented below their parent.+\[lq]Boring\[rq] accounts, which contain a single interesting subaccount+and no balance of their own, are elided into the following line for more+compact output.+(Use \f[C]\-\-no\-elide\f[] to prevent this.+Eliding of boring accounts is not yet supported in multicolumn reports.)+.PP+Each account's balance is the \[lq]inclusive\[rq] balance \- it includes+the balances of any subaccounts.+.PP+Accounts which have zero balance (and no non\-zero subaccounts) are+omitted.+Use \f[C]\-E/\-\-empty\f[] to show them.+.PP+A final total is displayed by default; use \f[C]\-N/\-\-no\-total\f[] to+suppress it:+.IP+.nf+\f[C]+$\ hledger\ balance\ \-p\ 2008/6\ expenses\ \-\-no\-total+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ food+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ supplies+\f[]+.fi+.SS Flat mode+.PP+To see a flat list of full account names instead of the default+hierarchical display, use \f[C]\-\-flat\f[].+In this mode, accounts (unless depth\-clipped) show their+\[lq]exclusive\[rq] balance, excluding any subaccount balances.+In this mode, you can also use \f[C]\-\-drop\ N\f[] to omit the first+few account name components.+.IP+.nf+\f[C]+$\ hledger\ balance\ \-p\ 2008/6\ expenses\ \-N\ \-\-flat\ \-\-drop\ 1+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ food+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ supplies+\f[]+.fi+.SS Depth limited balance reports+.PP+With \f[C]\-\-depth\ N\f[], balance shows accounts only to the specified+depth.+This is very useful to show a complex charts of accounts in less detail.+In flat mode, balances from accounts below the depth limit will be shown+as part of a parent account at the depth limit.+.IP+.nf+\f[C]+$\ hledger\ balance\ \-N\ \-\-depth\ 1+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ income+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities+\f[]+.fi+.SS Multicolumn balance reports+.PP+With a reporting interval, multiple balance columns will be shown, one+for each report period.+There are three types of multi\-column balance report, showing different+information:+.IP "1." 3+By default: each column shows the sum of postings in that period, ie the+account's change of balance in that period.+This is useful eg for a monthly income statement:+.RS 4+.IP+.nf+\f[C]+$\ hledger\ balance\ \-\-quarterly\ income\ expenses\ \-E+Balance\ changes\ in\ 2008:++\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008q1\ \ 2008q2\ \ 2008q3\ \ 2008q4\ +===================++=================================+\ expenses:food\ \ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ +\ expenses:supplies\ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ +\ income:gifts\ \ \ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ +\ income:salary\ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ +\f[]+.fi+.RE+.IP "2." 3+With \f[C]\-\-cumulative\f[]: each column shows the ending balance for+that period, accumulating the changes across periods, starting from 0 at+the report start date:+.RS 4+.IP+.nf+\f[C]+$\ hledger\ balance\ \-\-quarterly\ income\ expenses\ \-E\ \-\-cumulative+Ending\ balances\ (cumulative)\ in\ 2008:++\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008/03/31\ \ 2008/06/30\ \ 2008/09/30\ \ 2008/12/31\ +===================++=================================================+\ expenses:food\ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ +\ expenses:supplies\ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ +\ income:gifts\ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ +\ income:salary\ \ \ \ \ ||\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ $\-1\ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ +\f[]+.fi+.RE+.IP "3." 3+With \f[C]\-\-historical/\-H\f[]: each column shows the actual+historical ending balance for that period, accumulating the changes+across periods, starting from the actual balance at the report start+date.+This is useful eg for a multi\-period balance sheet, and when you are+showing only the data after a certain start date:+.RS 4+.IP+.nf+\f[C]+$\ hledger\ balance\ ^assets\ ^liabilities\ \-\-quarterly\ \-\-historical\ \-\-begin\ 2008/4/1+Ending\ balances\ (historical)\ in\ 2008/04/01\-2008/12/31:++\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008/06/30\ \ 2008/09/30\ \ 2008/12/31\ +======================++=====================================+\ assets:bank:checking\ ||\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ 0\ +\ assets:bank:saving\ \ \ ||\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ $1\ +\ assets:cash\ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ $\-2\ \ \ \ \ \ \ \ \ $\-2\ \ \ \ \ \ \ \ \ $\-2\ +\ liabilities:debts\ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ $1\ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ 0\ +\f[]+.fi+.RE+.PP+Multi\-column balance reports display accounts in flat mode by default;+to see the hierarchy, use \f[C]\-\-tree\f[].+.PP+With a reporting interval (like \f[C]\-\-quarterly\f[] above), the+report start/end dates will be adjusted if necessary so that they+encompass the displayed report periods.+This is so that the first and last periods will be \[lq]full\[rq] and+comparable to the others.+.PP+The \f[C]\-E/\-\-empty\f[] flag does two things in multicolumn balance+reports: first, the report will show all columns within the specified+report period (without \-E, leading and trailing columns with all zeroes+are not shown).+Second, all accounts which existed at the report start date will be+considered, not just the ones with activity during the report period+(use \-E to include low\-activity accounts which would otherwise would+be omitted).+.PP+The \f[C]\-T/\-\-row\-total\f[] flag adds an additional column showing+the total for each row.+.PP+The \f[C]\-A/\-\-average\f[] flag adds a column showing the average+value in each row.+.PP+Here's an example of all three:+.IP+.nf+\f[C]+$\ hledger\ balance\ \-Q\ income\ expenses\ \-\-tree\ \-ETA+Balance\ changes\ in\ 2008:++\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ 2008q1\ \ 2008q2\ \ 2008q3\ \ 2008q4\ \ \ \ Total\ \ Average\ +============++===================================================+\ expenses\ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $2\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ $2\ \ \ \ \ \ \ $1\ +\ \ \ food\ \ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ 0\ +\ \ \ supplies\ ||\ \ \ \ \ \ \ 0\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ 0\ +\ income\ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ $\-2\ \ \ \ \ \ $\-1\ +\ \ \ gifts\ \ \ \ ||\ \ \ \ \ \ \ 0\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ 0\ +\ \ \ salary\ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ 0\ +\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ $\-1\ \ \ \ \ \ $1\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ 0\ ++#\ Average\ is\ rounded\ to\ the\ dollar\ here\ since\ all\ journal\ amounts\ are+\f[]+.fi+.SS Budgets+.PP+With \f[C]\-\-budget\f[] and a report interval, all periodic+transactions in your journal with that interval, active during the+requested report period, are interpreted as recurring budget goals for+the specified accounts (and subaccounts), and the report will show the+difference between actual and budgeted balances.+.PP+For example, you can take average monthly expenses in the common expense+categories to construct a minimal monthly budget:+.IP+.nf+\f[C]+;;\ Budget+~\ monthly+\ \ income\ \ $2000+\ \ expenses:food\ \ \ \ $400+\ \ expenses:bus\ \ \ \ \ $50+\ \ expenses:movies\ \ $30+\ \ assets:bank:checking++;;\ Two\ months\ worth\ of\ expenses+2017\-11\-01+\ \ income\ \ $1950+\ \ expenses:food\ \ \ \ $396+\ \ expenses:bus\ \ \ \ \ $49+\ \ expenses:movies\ \ $30+\ \ expenses:supplies\ \ $20+\ \ assets:bank:checking++2017\-12\-01+\ \ income\ \ $2100+\ \ expenses:food\ \ \ \ $412+\ \ expenses:bus\ \ \ \ \ $53+\ \ expenses:gifts\ \ \ $100+\ \ assets:bank:checking+\f[]+.fi+.PP+You can now see a monthly budget performance report:+.IP+.nf+\f[C]+$\ hledger\ balance\ \-M\ \-\-budget+Balance\ changes\ in\ 2017/11/01\-2017/12/31:++\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2017/11\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2017/12\ +=======================++=================================================+\ <unbudgeted>:expenses\ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $20\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $100\ +\ assets:bank:checking\ \ ||\ $\-2445\ [99%\ of\ $\-2480]\ \ $\-2665\ [107%\ of\ $\-2480]\ +\ expenses:bus\ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ $49\ [98%\ of\ $50]\ \ \ \ \ \ \ \ $53\ [106%\ of\ $50]\ +\ expenses:food\ \ \ \ \ \ \ \ \ ||\ \ \ \ \ $396\ [99%\ of\ $400]\ \ \ \ \ \ $412\ [103%\ of\ $400]\ +\ expenses:movies\ \ \ \ \ \ \ ||\ \ \ \ \ \ $30\ [100%\ of\ $30]\ \ \ \ \ \ \ \ \ \ \ \ 0\ [0%\ of\ $30]\ +\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ $1950\ [98%\ of\ $2000]\ \ \ \ $2100\ [105%\ of\ $2000]\ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ +\f[]+.fi+.PP+You can roll over unspent budgets to next period with+\f[C]\-\-cumulative\f[]:+.IP+.nf+\f[C]+$\ hledger\ balance\ \-M\ \-\-budget\ \-\-cumulative+Ending\ balances\ (cumulative)\ in\ 2017/11/01\-2017/12/31:++\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ 2017/11/30\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2017/12/31\ +=======================++=================================================+\ <unbudgeted>:expenses\ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $20\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $120\ +\ assets:bank:checking\ \ ||\ $\-2445\ [99%\ of\ $\-2480]\ \ $\-5110\ [103%\ of\ $\-4960]\ +\ expenses:bus\ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ $49\ [98%\ of\ $50]\ \ \ \ \ \ $102\ [102%\ of\ $100]\ +\ expenses:food\ \ \ \ \ \ \ \ \ ||\ \ \ \ \ $396\ [99%\ of\ $400]\ \ \ \ \ \ $808\ [101%\ of\ $800]\ +\ expenses:movies\ \ \ \ \ \ \ ||\ \ \ \ \ \ $30\ [100%\ of\ $30]\ \ \ \ \ \ \ \ \ $30\ [50%\ of\ $60]\ +\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ $1950\ [98%\ of\ $2000]\ \ \ \ $4050\ [101%\ of\ $4000]\ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+Accounts with no budget goals (not mentioned in the periodic+transactions) will be aggregated under \f[C]<unbudgeted>\f[], unless you+add the \f[C]\-\-show\-unbudgeted\f[] flag to display them normally:+.IP+.nf+\f[C]+$\ hledger\ balance\ \-\-budget\ \-\-show\-unbudgeted+Balance\ changes\ in\ 2017/11/01\-2017/12/31:++\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2017/11\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2017/12\ +======================++=================================================+\ assets:bank:checking\ ||\ $\-2445\ [99%\ of\ $\-2480]\ \ $\-2665\ [107%\ of\ $\-2480]\ +\ expenses:bus\ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ $49\ [98%\ of\ $50]\ \ \ \ \ \ \ \ $53\ [106%\ of\ $50]\ +\ expenses:food\ \ \ \ \ \ \ \ ||\ \ \ \ \ $396\ [99%\ of\ $400]\ \ \ \ \ \ $412\ [103%\ of\ $400]\ +\ expenses:gifts\ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $100\ +\ expenses:movies\ \ \ \ \ \ ||\ \ \ \ \ \ $30\ [100%\ of\ $30]\ \ \ \ \ \ \ \ \ \ \ \ 0\ [0%\ of\ $30]\ +\ expenses:supplies\ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $20\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ +\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ $1950\ [98%\ of\ $2000]\ \ \ \ $2100\ [105%\ of\ $2000]\ +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-++\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ +\f[]+.fi+.PP+For more examples and details, see Budgeting and Forecasting.+.SS Custom balance output+.PP+In simple (non\-multi\-column) balance reports, you can customise the+output with \f[C]\-\-format\ FMT\f[]:+.IP+.nf+\f[C]+$\ hledger\ balance\ \-\-format\ "%20(account)\ %12(total)"+\ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ $\-1+\ \ \ \ \ \ \ \ \ bank:saving\ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cash\ \ \ \ \ \ \ \ \ \ $\-2+\ \ \ \ \ \ \ \ \ \ \ \ expenses\ \ \ \ \ \ \ \ \ \ \ $2+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ food\ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ \ \ \ \ \ \ \ \ supplies\ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ \ \ \ \ \ \ \ \ \ \ income\ \ \ \ \ \ \ \ \ \ $\-2+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ gifts\ \ \ \ \ \ \ \ \ \ $\-1+\ \ \ \ \ \ \ \ \ \ \ \ \ \ salary\ \ \ \ \ \ \ \ \ \ $\-1+\ \ \ liabilities:debts\ \ \ \ \ \ \ \ \ \ \ $1+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+The FMT format string (plus a newline) specifies the formatting applied+to each account/balance pair.+It may contain any suitable text, with data fields interpolated like so:+.PP+\f[C]%[MIN][.MAX](FIELDNAME)\f[]+.IP \[bu] 2+MIN pads with spaces to at least this width (optional)+.IP \[bu] 2+MAX truncates at this width (optional)+.IP \[bu] 2+FIELDNAME must be enclosed in parentheses, and can be one of:+.RS 2+.IP \[bu] 2+\f[C]depth_spacer\f[] \- a number of spaces equal to the account's+depth, or if MIN is specified, MIN * depth spaces.+.IP \[bu] 2+\f[C]account\f[] \- the account's name+.IP \[bu] 2+\f[C]total\f[] \- the account's balance/posted total, right justified+.RE+.PP+Also, FMT can begin with an optional prefix to control how+multi\-commodity amounts are rendered:+.IP \[bu] 2+\f[C]%_\f[] \- render on multiple lines, bottom\-aligned (the default)+.IP \[bu] 2+\f[C]%^\f[] \- render on multiple lines, top\-aligned+.IP \[bu] 2+\f[C]%,\f[] \- render on one line, comma\-separated+.PP+There are some quirks.+Eg in one\-line mode, \f[C]%(depth_spacer)\f[] has no effect, instead+\f[C]%(account)\f[] has indentation built in.+ Experimentation may be needed to get pleasing results.+.PP+Some example formats:+.IP \[bu] 2+\f[C]%(total)\f[] \- the account's total+.IP \[bu] 2+\f[C]%\-20.20(account)\f[] \- the account's name, left justified, padded+to 20 characters and clipped at 20 characters+.IP \[bu] 2+\f[C]%,%\-50(account)\ \ %25(total)\f[] \- account name padded to 50+characters, total padded to 20 characters, with multiple commodities+rendered on one line+.IP \[bu] 2+\f[C]%20(total)\ \ %2(depth_spacer)%\-(account)\f[] \- the default+format for the single\-column balance report+.SS Colour support+.PP+The balance command shows negative amounts in red, if:+.IP \[bu] 2+the \f[C]TERM\f[] environment variable is not set to \f[C]dumb\f[]+.IP \[bu] 2+the output is not being redirected or piped anywhere+.SS Output destination+.PP+The balance, print, register and stats commands can write their output+to a destination other than the console.+This is controlled by the \f[C]\-o/\-\-output\-file\f[] option.+.IP+.nf+\f[C]+$\ hledger\ balance\ \-o\ \-\ \ \ \ \ #\ write\ to\ stdout\ (the\ default)+$\ hledger\ balance\ \-o\ FILE\ \ #\ write\ to\ FILE+\f[]+.fi+.SS CSV output+.PP+The balance, print and register commands can write their output as CSV.+This is useful for exporting data to other applications, eg to make+charts in a spreadsheet.+This is controlled by the \f[C]\-O/\-\-output\-format\f[] option, or by+specifying a \f[C]\&.csv\f[] file extension with+\f[C]\-o/\-\-output\-file\f[].+.IP+.nf+\f[C]+$\ hledger\ balance\ \-O\ csv\ \ \ \ \ \ \ #\ write\ CSV\ to\ stdout+$\ hledger\ balance\ \-o\ FILE.csv\ \ #\ write\ CSV\ to\ FILE.csv+\f[]+.fi+.SS balancesheet+.PP+Show a balance sheet.+Alias: bs.+.TP+.B \f[C]\-\-change\f[]+show balance change in each period, instead of historical ending+balances+.RS+.RE+.TP+.B \f[C]\-\-cumulative\f[]+show balance change accumulated across periods (in multicolumn reports),+instead of historical ending balances+.RS+.RE+.TP+.B \f[C]\-H\ \-\-historical\f[]+show historical ending balance in each period (includes postings before+report start date) (default)+.RS+.RE+.TP+.B \f[C]\-\-tree\f[]+show accounts as a tree; amounts include subaccounts (default in simple+reports)+.RS+.RE+.TP+.B \f[C]\-\-flat\f[]+show accounts as a list; amounts exclude subaccounts except when account+is depth\-clipped (default in multicolumn reports)+.RS+.RE+.TP+.B \f[C]\-A\ \-\-average\f[]+show a row average column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-T\ \-\-row\-total\f[]+show a row total column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-N\ \-\-no\-total\f[]+don't show the final total row+.RS+.RE+.TP+.B \f[C]\-\-drop=N\f[]+omit N leading account name parts (in flat mode)+.RS+.RE+.TP+.B \f[C]\-\-no\-elide\f[]+don't squash boring parent accounts (in tree mode)+.RS+.RE+.TP+.B \f[C]\-\-format=LINEFORMAT\f[]+in single\-column balance reports: use this custom line format+.RS+.RE+.TP+.B \f[C]\-\-sort\-amount\f[]+sort by amount instead of account name+.RS+.RE+.PP+This command displays a simple balance sheet.+It currently assumes that you have top\-level accounts named+\f[C]asset\f[] and \f[C]liability\f[] (plural forms also allowed.)+.IP+.nf+\f[C]+$\ hledger\ balancesheet+Balance\ Sheet++Assets:+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ \ \ cash+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1++Liabilities:+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities:debts+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1++Total:+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+With a reporting interval, multiple columns will be shown, one for each+report period.+As with multicolumn balance reports, you can alter the report mode with+\f[C]\-\-change\f[]/\f[C]\-\-cumulative\f[]/\f[C]\-\-historical\f[].+Normally balancesheet shows historical ending balances, which is what+you need for a balance sheet; note this means it ignores report begin+dates.+.SS balancesheetequity+.PP+Show a balance sheet including equity.+Alias: bse.+.PP+Other than showing the equity accounts, this command is exactly the same+as the command balancesheet.+Please refer to it for the available options.+.PP+This command displays a balancesheet.+It currently assumes that you have top\-level accounts named+\f[C]asset\f[], \f[C]liability\f[] and \f[C]equity\f[] (plural forms+also allowed.)+.IP+.nf+\f[C]+$\ hledger\ balancesheetequity+Balance\ Sheet\ With\ Equity++Assets:+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ assets+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-3\ \ \ \ cash+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2++Liabilities:+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ liabilities:debts+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1++Equity:+\ \ \ \ \ \ \ \ \ \ $1\ \ equity:owner+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ $1++Total:+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.SS cashflow+.PP+Show a cashflow statement.+Alias: cf.+.TP+.B \f[C]\-\-change\f[]+show balance change in each period (default)+.RS+.RE+.TP+.B \f[C]\-\-cumulative\f[]+show balance change accumulated across periods (in multicolumn reports),+instead of changes during periods+.RS+.RE+.TP+.B \f[C]\-H\ \-\-historical\f[]+show historical ending balance in each period (includes postings before+report start date), instead of changes during each period+.RS+.RE+.TP+.B \f[C]\-\-tree\f[]+show accounts as a tree; amounts include subaccounts (default in simple+reports)+.RS+.RE+.TP+.B \f[C]\-\-flat\f[]+show accounts as a list; amounts exclude subaccounts except when account+is depth\-clipped (default in multicolumn reports)+.RS+.RE+.TP+.B \f[C]\-A\ \-\-average\f[]+show a row average column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-T\ \-\-row\-total\f[]+show a row total column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-N\ \-\-no\-total\f[]+don't show the final total row (in simple reports)+.RS+.RE+.TP+.B \f[C]\-\-drop=N\f[]+omit N leading account name parts (in flat mode)+.RS+.RE+.TP+.B \f[C]\-\-no\-elide\f[]+don't squash boring parent accounts (in tree mode)+.RS+.RE+.TP+.B \f[C]\-\-format=LINEFORMAT\f[]+in single\-column balance reports: use this custom line format+.RS+.RE+.TP+.B \f[C]\-\-sort\-amount\f[]+sort by amount instead of account name+.RS+.RE+.PP+This command displays a simple cashflow statement It shows the change in+all \[lq]cash\[rq] (ie, liquid assets) accounts for the period.+It currently assumes that cash accounts are under a top\-level account+named \f[C]asset\f[] and do not contain \f[C]receivable\f[],+\f[C]:A/R\f[] or \f[C]:fixed\f[].+.IP+.nf+\f[C]+$\ hledger\ cashflow+Cashflow\ Statement++Cash\ flows:+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ assets+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ bank:saving+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ \ \ cash+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1++Total:+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1+\f[]+.fi+.PP+With a reporting interval, multiple columns will be shown, one for each+report period.+Normally cashflow shows changes in assets per period, though as with+multicolumn balance reports you can alter the report mode with+\f[C]\-\-change\f[]/\f[C]\-\-cumulative\f[]/\f[C]\-\-historical\f[].+.SS check\-dates+.PP+Check that transactions are sorted by increasing date.+With a query, only matched transactions' dates are checked.+.SS check\-dupes+.PP+Report account names having the same leaf but different prefixes.+An example: http://stefanorodighiero.net/software/hledger\-dupes.html+.SS equity+.PP+Print closing/opening transactions that bring some or all account+balances to zero and back.+Can be useful for bringing account balances across file boundaries.+.SS help+.PP+Show any of the hledger manuals.+.PP+The \f[C]help\f[] command displays any of the main hledger manuals, in+one of several ways.+Run it with no argument to list the manuals, or provide a full or+partial manual name to select one.+.PP+hledger manuals are available in several formats.+hledger help will use the first of these display methods that it finds:+info, man, $PAGER, less, stdout (or when non\-interactive, just stdout).+You can force a particular viewer with the \f[C]\-\-info\f[],+\f[C]\-\-man\f[], \f[C]\-\-pager\f[], \f[C]\-\-cat\f[] flags.+.IP+.nf+\f[C]+$\ hledger\ help+Please\ choose\ a\ manual\ by\ typing\ "hledger\ help\ MANUAL"\ (a\ substring\ is\ ok).+Manuals:\ hledger\ hledger\-ui\ hledger\-web\ hledger\-api\ journal\ csv\ timeclock\ timedot+\f[]+.fi+.IP+.nf+\f[C]+$\ hledger\ help\ h\ \-\-man++hledger(1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ hledger\ User\ Manuals\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ hledger(1)++NAME+\ \ \ \ \ \ \ hledger\ \-\ a\ command\-line\ accounting\ tool++SYNOPSIS+\ \ \ \ \ \ \ hledger\ [\-f\ FILE]\ COMMAND\ [OPTIONS]\ [ARGS]+\ \ \ \ \ \ \ hledger\ [\-f\ FILE]\ ADDONCMD\ \-\-\ [OPTIONS]\ [ARGS]+\ \ \ \ \ \ \ hledger++DESCRIPTION+\ \ \ \ \ \ \ hledger\ \ is\ \ a\ \ cross\-platform\ \ program\ \ for\ tracking\ money,\ time,\ or\ any+\&...+\f[]+.fi+.SS import+.PP+Read new transactions added to each FILE since last run, and add them to+the main journal file.+.TP+.B \f[C]\-\-dry\-run\f[]+just show the transactions to be imported+.RS+.RE+.PP+The input files are specified as arguments \- no need to write \-f+before each one.+So eg to add new transactions from all CSV files to the main journal,+it's just: \f[C]hledger\ import\ *.csv\f[]+.PP+New transactions are detected in the same way as print \[en]new: by+assuming transactions are always added to the input files in increasing+date order, and by saving \f[C]\&.latest.FILE\f[] state files.+.PP+The \[en]dry\-run output is in journal format, so you can filter it, eg+to see only uncategorised transactions:+.IP+.nf+\f[C]+$\ hledger\ import\ \-\-dry\ ...\ |\ hledger\ \-f\-\ print\ unknown\ \-\-ignore\-assertions+\f[]+.fi+.SS incomestatement+.PP+Show an income statement.+Alias: is.+.TP+.B \f[C]\-\-change\f[]+show balance change in each period (default)+.RS+.RE+.TP+.B \f[C]\-\-cumulative\f[]+show balance change accumulated across periods (in multicolumn reports),+instead of changes during periods+.RS+.RE+.TP+.B \f[C]\-H\ \-\-historical\f[]+show historical ending balance in each period (includes postings before+report start date), instead of changes during each period+.RS+.RE+.TP+.B \f[C]\-\-tree\f[]+show accounts as a tree; amounts include subaccounts (default in simple+reports)+.RS+.RE+.TP+.B \f[C]\-\-flat\f[]+show accounts as a list; amounts exclude subaccounts except when account+is depth\-clipped (default in multicolumn reports)+.RS+.RE+.TP+.B \f[C]\-A\ \-\-average\f[]+show a row average column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-T\ \-\-row\-total\f[]+show a row total column (in multicolumn mode)+.RS+.RE+.TP+.B \f[C]\-N\ \-\-no\-total\f[]+don't show the final total row+.RS+.RE+.TP+.B \f[C]\-\-drop=N\f[]+omit N leading account name parts (in flat mode)+.RS+.RE+.TP+.B \f[C]\-\-no\-elide\f[]+don't squash boring parent accounts (in tree mode)+.RS+.RE+.TP+.B \f[C]\-\-format=LINEFORMAT\f[]+in single\-column balance reports: use this custom line format+.RS+.RE+.TP+.B \f[C]\-\-sort\-amount\f[]+sort by amount instead of account name+.RS+.RE+.PP+This command displays a simple income statement.+It currently assumes that you have top\-level accounts named+\f[C]income\f[] (or \f[C]revenue\f[]) and \f[C]expense\f[] (plural forms+also allowed.)+.IP+.nf+\f[C]+$\ hledger\ incomestatement+Income\ Statement++Revenues:+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2\ \ income+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ gifts+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ salary+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2++Expenses:+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2\ \ expenses+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ food+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ supplies+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $2++Total:+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+With a reporting interval, multiple columns will be shown, one for each+report period.+Normally incomestatement shows revenues/expenses per period, though as+with multicolumn balance reports you can alter the report mode with+\f[C]\-\-change\f[]/\f[C]\-\-cumulative\f[]/\f[C]\-\-historical\f[].+.SS prices+.PP+Print all market prices from the journal.+.SS print+.PP+Show transactions from the journal.+Aliases: p, txns.+.TP+.B \f[C]\-m\ STR\ \-\-match=STR\f[]+show the transaction whose description is most similar to STR, and is+most recent+.RS+.RE+.TP+.B \f[C]\-\-new\f[]+show only newer\-dated transactions added in each file since last run+.RS+.RE+.TP+.B \f[C]\-x\ \ \ \ \ \-\-explicit\f[]+show all amounts explicitly+.RS+.RE+.TP+.B \f[C]\-O\ FMT\ \-\-output\-format=FMT\f[]+select the output format.+Supported formats: txt, csv.+.RS+.RE+.TP+.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]+write output to FILE.+A file extension matching one of the above formats selects that format.+.RS+.RE+.IP+.nf+\f[C]+$\ hledger\ print+2008/01/01\ income+\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ income:salary\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1++2008/06/01\ gift+\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1++2008/06/02\ save+\ \ \ \ assets:bank:saving\ \ \ \ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1++2008/06/03\ *\ eat\ &\ shop+\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ expenses:supplies\ \ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ assets:cash\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-2++2008/12/31\ *\ pay\ off+\ \ \ \ liabilities:debts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1+\ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1+\f[]+.fi+.PP+The print command displays full journal entries (transactions) from the+journal file in date order, tidily formatted.+print's output is always a valid hledger journal.+It preserves all transaction information, but it does not preserve+directives or inter\-transaction comments+.PP+Normally, the journal entry's explicit or implicit amount style is+preserved.+Ie when an amount is omitted in the journal, it will be omitted in the+output.+You can use the \f[C]\-x\f[]/\f[C]\-\-explicit\f[] flag to make all+amounts explicit, which can be useful for troubleshooting or for making+your journal more readable and robust against data entry errors.+Note, \f[C]\-x\f[] will cause postings with a multi\-commodity amount+(these can arise when a multi\-commodity transaction has an implicit+amount) will be split into multiple single\-commodity postings, for+valid journal output.+.PP+With \f[C]\-B\f[]/\f[C]\-\-cost\f[], amounts with transaction prices are+converted to cost using that price.+This can be used for troubleshooting.+.PP+With \f[C]\-m\f[]/\f[C]\-\-match\f[] and a STR argument, print will show+at most one transaction: the one one whose description is most similar+to STR, and is most recent.+STR should contain at least two characters.+If there is no similar\-enough match, no transaction will be shown.+.PP+With \f[C]\-\-new\f[], for each FILE being read, hledger reads (and+writes) a special state file (\f[C]\&.latest.FILE\f[] in the same+directory), containing the latest transaction date(s) that were seen+last time FILE was read.+When this file is found, only transactions with newer dates (and new+transactions on the latest date) are printed.+This is useful for ignoring already\-seen entries in import data, such+as downloaded CSV files.+Eg:+.IP+.nf+\f[C]+$\ hledger\ \-f\ bank1.csv\ print\ \-\-new+#\ shows\ transactions\ added\ since\ last\ print\ \-\-new\ on\ this\ file+\f[]+.fi+.PP+This assumes that transactions added to FILE always have same or+increasing dates, and that transactions on the same day do not get+reordered.+See also the import command.+.PP+The print command also supports output destination and CSV output.+Here's an example of print's CSV output:+.IP+.nf+\f[C]+$\ hledger\ print\ \-Ocsv+"txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting\-status","posting\-comment"+"1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""+"1","2008/01/01","","","","income","","income:salary","\-1","$","1","","",""+"2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""+"2","2008/06/01","","","","gift","","income:gifts","\-1","$","1","","",""+"3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""+"3","2008/06/02","","","","save","","assets:bank:checking","\-1","$","1","","",""+"4","2008/06/03","","*","","eat\ &\ shop","","expenses:food","1","$","","1","",""+"4","2008/06/03","","*","","eat\ &\ shop","","expenses:supplies","1","$","","1","",""+"4","2008/06/03","","*","","eat\ &\ shop","","assets:cash","\-2","$","2","","",""+"5","2008/12/31","","*","","pay\ off","","liabilities:debts","1","$","","1","",""+"5","2008/12/31","","*","","pay\ off","","assets:bank:checking","\-1","$","1","","",""+\f[]+.fi+.IP \[bu] 2+There is one CSV record per posting, with the parent transaction's+fields repeated.+.IP \[bu] 2+The \[lq]txnidx\[rq] (transaction index) field shows which postings+belong to the same transaction.+(This number might change if transactions are reordered within the file,+files are parsed/included in a different order, etc.)+.IP \[bu] 2+The amount is separated into \[lq]commodity\[rq] (the symbol) and+\[lq]amount\[rq] (numeric quantity) fields.+.IP \[bu] 2+The numeric amount is repeated in either the \[lq]credit\[rq] or+\[lq]debit\[rq] column, for convenience.+(Those names are not accurate in the accounting sense; it just puts+negative amounts under credit and zero or greater amounts under debit.)+.SS print\-unique+.PP+Print transactions which do not reuse an already\-seen description.+.SS register+.PP+Show postings and their running total.+Aliases: r, reg.+.TP+.B \f[C]\-\-cumulative\f[]+show running total from report start date (default)+.RS+.RE+.TP+.B \f[C]\-H\ \-\-historical\f[]+show historical running total/balance (includes postings before report+start date)+.RS+.RE+.TP+.B \f[C]\-A\ \-\-average\f[]+show running average of posting amounts instead of total (implies+\[en]empty)+.RS+.RE+.TP+.B \f[C]\-r\ \-\-related\f[]+show postings' siblings instead+.RS+.RE+.TP+.B \f[C]\-w\ N\ \-\-width=N\f[]+set output width (default: terminal width or COLUMNS.+\-wN,M sets description width as well)+.RS+.RE+.TP+.B \f[C]\-O\ FMT\ \-\-output\-format=FMT\f[]+select the output format.+Supported formats: txt, csv.+.RS+.RE+.TP+.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]+write output to FILE.+A file extension matching one of the above formats selects that format.+.RS+.RE+.PP+The register command displays postings, one per line, and their running+total.+This is typically used with a query selecting a particular account, to+see that account's activity:+.IP+.nf+\f[C]+$\ hledger\ register\ checking+2008/01/01\ income\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $1+2008/06/01\ gift\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $2+2008/06/02\ save\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ $1+2008/12/31\ pay\ off\ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+The \f[C]\-\-historical\f[]/\f[C]\-H\f[] flag adds the balance from any+undisplayed prior postings to the running total.+This is useful when you want to see only recent activity, with a+historically accurate running balance:+.IP+.nf+\f[C]+$\ hledger\ register\ checking\ \-b\ 2008/6\ \-\-historical+2008/06/01\ gift\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $2+2008/06/02\ save\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ $1+2008/12/31\ pay\ off\ \ \ \ \ \ \ \ \ \ \ \ \ \ assets:bank:checking\ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ \ 0+\f[]+.fi+.PP+The \f[C]\-\-depth\f[] option limits the amount of sub\-account detail+displayed.+.PP+The \f[C]\-\-average\f[]/\f[C]\-A\f[] flag shows the running average+posting amount instead of the running total (so, the final number+displayed is the average for the whole report period).+This flag implies \f[C]\-\-empty\f[] (see below).+It is affected by \f[C]\-\-historical\f[].+It works best when showing just one account and one commodity.+.PP+The \f[C]\-\-related\f[]/\f[C]\-r\f[] flag shows the \f[I]other\f[]+postings in the transactions of the postings which would normally be+shown.+.PP+With a reporting interval, register shows summary postings, one per+interval, aggregating the postings to each account:+.IP+.nf+\f[C]+$\ hledger\ register\ \-\-monthly\ income+2008/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:salary\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-1+2008/06\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-2+\f[]+.fi+.PP+Periods with no activity, and summary postings with a zero amount, are+not shown by default; use the \f[C]\-\-empty\f[]/\f[C]\-E\f[] flag to+see them:+.IP+.nf+\f[C]+$\ hledger\ register\ \-\-monthly\ income\ \-E+2008/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:salary\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-1+2008/02\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1+2008/03\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1+2008/04\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1+2008/05\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-1+2008/06\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ income:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-2+2008/07\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2+2008/08\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2+2008/09\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2+2008/10\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2+2008/11\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2+2008/12\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \ \ \ \ \ \ \ \ \ \ $\-2+\f[]+.fi+.PP+Often, you'll want to see just one line per interval.+The \f[C]\-\-depth\f[] option helps with this, causing subaccounts to be+aggregated:+.IP+.nf+\f[C]+$\ hledger\ register\ \-\-monthly\ assets\ \-\-depth\ 1h+2008/01\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $1\ \ \ \ \ \ \ \ \ \ \ \ $1+2008/06\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ \ \ 0+2008/12\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ assets\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $\-1\ \ \ \ \ \ \ \ \ \ \ $\-1+\f[]+.fi+.PP+Note when using report intervals, if you specify start/end dates these+will be adjusted outward if necessary to contain a whole number of+intervals.+This ensures that the first and last intervals are full length and+comparable to the others in the report.+.SS Custom register output+.PP+register uses the full terminal width by default, except on windows.+You can override this by setting the \f[C]COLUMNS\f[] environment+variable (not a bash shell variable) or by using the+\f[C]\-\-width\f[]/\f[C]\-w\f[] option.+.PP+The description and account columns normally share the space equally+(about half of (width \- 40) each).+You can adjust this by adding a description width as part of+\[en]width's argument, comma\-separated: \f[C]\-\-width\ W,D\f[] .+Here's a diagram:+.IP+.nf+\f[C]+<\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\ width\ (W)\ \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\->+date\ (10)\ \ description\ (D)\ \ \ \ \ \ \ account\ (W\-41\-D)\ \ \ \ \ amount\ (12)\ \ \ balance\ (12)+DDDDDDDDDD\ dddddddddddddddddddd\ \ aaaaaaaaaaaaaaaaaaa\ \ AAAAAAAAAAAA\ \ AAAAAAAAAAAA+\f[]+.fi+.PP+and some examples:+.IP+.nf+\f[C]+$\ hledger\ reg\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ use\ terminal\ width\ (or\ 80\ on\ windows)+$\ hledger\ reg\ \-w\ 100\ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ use\ width\ 100+$\ COLUMNS=100\ hledger\ reg\ \ \ \ \ \ \ \ \ #\ set\ with\ one\-time\ environment\ variable+$\ export\ COLUMNS=100;\ hledger\ reg\ #\ set\ till\ session\ end\ (or\ window\ resize)+$\ hledger\ reg\ \-w\ 100,40\ \ \ \ \ \ \ \ \ \ \ #\ set\ overall\ width\ 100,\ description\ width\ 40+$\ hledger\ reg\ \-w\ $COLUMNS,40\ \ \ \ \ \ #\ use\ terminal\ width,\ and\ set\ description\ width+\f[]+.fi+.PP+The register command also supports the \f[C]\-o/\-\-output\-file\f[] and+\f[C]\-O/\-\-output\-format\f[] options for controlling output+destination and CSV output.+.SS register\-match+.PP+Print the one posting whose transaction description is closest to DESC,+in the style of the register command.+Helps ledger\-autosync detect already\-seen transactions when importing.+.SS rewrite+.PP+Print all transactions, adding custom postings to the matched ones.+.SS stats+.PP+Show some journal statistics.+.TP+.B \f[C]\-o\ FILE\ \-\-output\-file=FILE\f[]+write output to FILE.+A file extension matching one of the above formats selects that format.+.RS+.RE+.IP+.nf+\f[C]+$\ hledger\ stats+Main\ journal\ file\ \ \ \ \ \ \ \ :\ /src/hledger/examples/sample.journal+Included\ journal\ files\ \ \ :\ +Transactions\ span\ \ \ \ \ \ \ \ :\ 2008\-01\-01\ to\ 2009\-01\-01\ (366\ days)+Last\ transaction\ \ \ \ \ \ \ \ \ :\ 2008\-12\-31\ (2333\ days\ ago)+Transactions\ \ \ \ \ \ \ \ \ \ \ \ \ :\ 5\ (0.0\ per\ day)+Transactions\ last\ 30\ days:\ 0\ (0.0\ per\ day)+Transactions\ last\ 7\ days\ :\ 0\ (0.0\ per\ day)+Payees/descriptions\ \ \ \ \ \ :\ 5+Accounts\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ 8\ (depth\ 3)+Commodities\ \ \ \ \ \ \ \ \ \ \ \ \ \ :\ 1\ ($)+\f[]+.fi+.PP+The stats command displays summary information for the whole journal, or+a matched part of it.+With a reporting interval, it shows a report for each report period.+.PP+The stats command also supports \f[C]\-o/\-\-output\-file\f[] for+controlling output destination.+.SS tags+.PP+List all the tag names used in the journal.+With a TAGREGEX argument, only tag names matching the regular expression+(case insensitive) are shown.+With additional QUERY arguments, only transactions matching the query+are considered.+.SS test+.PP+Run built\-in unit tests.+.IP+.nf+\f[C]+$\ hledger\ test+Cases:\ 74\ \ Tried:\ 74\ \ Errors:\ 0\ \ Failures:\ 0+\f[]+.fi+.PP+This command runs hledger's built\-in unit tests and displays a quick+report.+With a regular expression argument, it selects only tests with matching+names.+It's mainly used in development, but it's also nice to be able to check+your hledger executable for smoke at any time.+.SH ADD\-ON COMMANDS+.PP+hledger also searches for external add\-on commands, and will include+these in the commands list.+These are programs or scripts in your PATH whose name starts with+\f[C]hledger\-\f[] and ends with a recognised file extension (currently:+no extension, \f[C]bat\f[],\f[C]com\f[],\f[C]exe\f[],+\f[C]hs\f[],\f[C]lhs\f[],\f[C]pl\f[],\f[C]py\f[],\f[C]rb\f[],\f[C]rkt\f[],\f[C]sh\f[]).+.PP+Add\-ons can be invoked like any hledger command, but there are a few+things to be aware of.+Eg if the \f[C]hledger\-web\f[] add\-on is installed,+.IP \[bu] 2+\f[C]hledger\ \-h\ web\f[] shows hledger's help, while+\f[C]hledger\ web\ \-h\f[] shows hledger\-web's help.+.IP \[bu] 2+Flags specific to the add\-on must have a preceding \f[C]\-\-\f[] to+hide them from hledger.+So \f[C]hledger\ web\ \-\-serve\ \-\-port\ 9000\f[] will be rejected;+you must use \f[C]hledger\ web\ \-\-\ \-\-serve\ \-\-port\ 9000\f[].+.IP \[bu] 2+You can always run add\-ons directly if preferred:+\f[C]hledger\-web\ \-\-serve\ \-\-port\ 9000\f[].+.PP+Add\-ons are a relatively easy way to add local features or experiment+with new ideas.+They can be written in any language, but haskell scripts have a big+advantage: they can use the same hledger (and haskell) library functions+that built\-in commands do, for command\-line options, journal parsing,+reporting, etc.+.PP+Here are some hledger add\-ons available:+.SS Official add\-ons+.PP+These are maintained and released along with hledger.+.SS api+.PP+hledger\-api serves hledger data as a JSON web API.+.SS ui+.PP+hledger\-ui provides an efficient curses\-style interface.+.SS web+.PP+hledger\-web provides a simple web interface.+.SS Third party add\-ons+.PP+These are maintained separately, and usually updated shortly after a+hledger release.+.SS diff+.PP+hledger\-diff shows differences in an account's transactions between one+journal file and another.+.SS iadd+.PP+hledger\-iadd is a curses\-style, more interactive replacement for the+add command.+.SS interest+.PP+hledger\-interest generates interest transactions for an account+according to various schemes.+.SS irr+.PP+hledger\-irr calculates the internal rate of return of an investment+account.+.SS Experimental add\-ons+.PP+These are available in source form in the hledger repo's bin/ directory;+installing them is pretty easy.+They may be less mature and documented than built\-in commands.+Reading and tweaking these is a good way to start making your own!+.SS autosync+.PP+hledger\-autosync is a symbolic link for easily running+ledger\-autosync, if installed.+ledger\-autosync does deduplicating conversion of OFX data and some CSV+formats, and can also download the data if your bank offers OFX Direct+Connect.+.SS budget+.PP+hledger\-budget.hs adds more budget\-tracking features to hledger.+.SS chart+.PP+hledger\-chart.hs is an old pie chart generator, in need of some love.+.SS check+.PP+hledger\-check.hs checks more powerful account balance assertions.+.SH ENVIRONMENT+.PP+\f[B]COLUMNS\f[] The screen width used by the register command.+Default: the full terminal width.+.PP+\f[B]LEDGER_FILE\f[] The journal file path when not specified with+\f[C]\-f\f[].+Default: \f[C]~/.hledger.journal\f[] (on windows, perhaps+\f[C]C:/Users/USER/.hledger.journal\f[]).+.SH FILES+.PP+Reads data from one or more files in hledger journal, timeclock,+timedot, or CSV format specified with \f[C]\-f\f[], or+\f[C]$LEDGER_FILE\f[], or \f[C]$HOME/.hledger.journal\f[] (on windows,+perhaps \f[C]C:/Users/USER/.hledger.journal\f[]).+.SH BUGS+.PP+The need to precede addon command options with \f[C]\-\-\f[] when+invoked from hledger is awkward.+.PP+When input data contains non\-ascii characters, a suitable system locale+must be configured (or there will be an unhelpful error).+Eg on POSIX, set LANG to something other than C.+.PP+In a Microsoft Windows CMD window, non\-ascii characters and colours are+not supported.+.PP+In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger+add.+.PP+Not all of Ledger's journal file syntax is supported.+See file format differences.+.PP+On large data files, hledger is slower and uses more memory than Ledger.+.SH TROUBLESHOOTING+.PP+Here are some issues you might encounter when you run hledger (and+remember you can also seek help from the IRC channel, mail list or bug+tracker):+.PP+\f[B]Successfully installed, but \[lq]No command `hledger'+found\[rq]\f[]+.PD 0+.P+.PD+stack and cabal install binaries into a special directory, which should+be added to your PATH environment variable.+Eg on unix\-like systems, that is ~/.local/bin and ~/.cabal/bin+respectively.+.PP+\f[B]I set a custom LEDGER_FILE, but hledger is still using the default+file\f[]+.PD 0+.P+.PD+\f[C]LEDGER_FILE\f[] should be a real environment variable, not just a+shell variable.+The command \f[C]env\ |\ grep\ LEDGER_FILE\f[] should show it.+You may need to use \f[C]export\f[].+Here's an explanation.+.PP+\f[B]\[lq]Illegal byte sequence\[rq] or \[lq]Invalid or incomplete+multibyte or wide character\[rq] errors\f[]+.PD 0+.P+.PD+In order to handle non\-ascii letters and symbols (like £), hledger+needs an appropriate locale.+This is usually configured system\-wide; you can also configure it+temporarily.+The locale may need to be one that supports UTF\-8, if you built hledger+with GHC < 7.2 (or possibly always, I'm not sure yet).+.PP+Here's an example of setting the locale temporarily, on ubuntu+gnu/linux:+.IP+.nf+\f[C]+$\ file\ my.journal+my.journal:\ UTF\-8\ Unicode\ text\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ <\-\ the\ file\ is\ UTF8\-encoded+$\ locale\ \-a+C+en_US.utf8\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ #\ <\-\ a\ UTF8\-aware\ locale\ is\ available+POSIX+$\ LANG=en_US.utf8\ hledger\ \-f\ my.journal\ print\ \ \ #\ <\-\ use\ it\ for\ this\ command+\f[]+.fi+.PP+Here's one way to set it permanently, there are probably better ways:+.IP+.nf+\f[C]+$\ echo\ "export\ LANG=en_US.UTF\-8"\ >>~/.bash_profile+$\ bash\ \-\-login+\f[]+.fi+.PP+If we preferred to use eg \f[C]fr_FR.utf8\f[], we might have to install+that first:+.IP+.nf+\f[C]+$\ apt\-get\ install\ language\-pack\-fr+$\ locale\ \-a+C+en_US.utf8+fr_BE.utf8+fr_CA.utf8+fr_CH.utf8+fr_FR.utf8+fr_LU.utf8+POSIX+$\ LANG=fr_FR.utf8\ hledger\ \-f\ my.journal\ print+\f[]+.fi+.PP+Note some platforms allow variant locale spellings, but not all (ubuntu+accepts \f[C]fr_FR.UTF8\f[], mac osx requires exactly+\f[C]fr_FR.UTF\-8\f[]).+++.SH "REPORTING BUGS"+Report bugs at http://bugs.hledger.org+(or on the #hledger IRC channel or hledger mail list)++.SH AUTHORS+Simon Michael <simon@joyful.com> and contributors++.SH COPYRIGHT++Copyright (C) 2007-2016 Simon Michael.+.br+Released under GNU GPL v3 or later.++.SH SEE ALSO+hledger(1), hledger\-ui(1), hledger\-web(1), hledger\-api(1),+hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_timedot(5),+ledger(1)++http://hledger.org
hledger.cabal view
@@ -1,9 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.17.1.+-- This file has been generated from package.yaml by hpack version 0.20.0. -- -- see: https://github.com/sol/hpack+--+-- hash: 8e14dbb3cafd99102e0a85bd39076ca0af4c9554f348cd6cacb0d59faf63623b  name:           hledger-version:        1.4+version:        1.5 synopsis:       Command-line interface for the hledger accounting tool description:    This is hledger's command-line interface.                 Its basic function is to read a plain text file describing@@ -34,30 +36,30 @@     test/test.hs  data-files:-    doc/hledger.1-    doc/hledger.1.info-    doc/hledger.1.txt-    doc/other/hledger-api.1-    doc/other/hledger-api.1.info-    doc/other/hledger-api.1.txt-    doc/other/hledger-ui.1-    doc/other/hledger-ui.1.info-    doc/other/hledger-ui.1.txt-    doc/other/hledger-web.1-    doc/other/hledger-web.1.info-    doc/other/hledger-web.1.txt-    doc/other/hledger_csv.5-    doc/other/hledger_csv.5.info-    doc/other/hledger_csv.5.txt-    doc/other/hledger_journal.5-    doc/other/hledger_journal.5.info-    doc/other/hledger_journal.5.txt-    doc/other/hledger_timeclock.5-    doc/other/hledger_timeclock.5.info-    doc/other/hledger_timeclock.5.txt-    doc/other/hledger_timedot.5-    doc/other/hledger_timedot.5.info-    doc/other/hledger_timedot.5.txt+    .otherdocs/hledger-api.1+    .otherdocs/hledger-api.info+    .otherdocs/hledger-api.txt+    .otherdocs/hledger-ui.1+    .otherdocs/hledger-ui.info+    .otherdocs/hledger-ui.txt+    .otherdocs/hledger-web.1+    .otherdocs/hledger-web.info+    .otherdocs/hledger-web.txt+    .otherdocs/hledger_csv.5+    .otherdocs/hledger_csv.info+    .otherdocs/hledger_csv.txt+    .otherdocs/hledger_journal.5+    .otherdocs/hledger_journal.info+    .otherdocs/hledger_journal.txt+    .otherdocs/hledger_timeclock.5+    .otherdocs/hledger_timeclock.info+    .otherdocs/hledger_timeclock.txt+    .otherdocs/hledger_timedot.5+    .otherdocs/hledger_timedot.info+    .otherdocs/hledger_timedot.txt+    hledger.1+    hledger.info+    hledger.txt  source-repository head   type: git@@ -75,44 +77,45 @@  library   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans-  cpp-options: -DVERSION="1.4"+  cpp-options: -DVERSION="1.5"   build-depends:-      base >=4.8 && <5+      Decimal+    , Diff+    , HUnit+    , ansi-terminal >=0.6.2.3+    , base >=4.8 && <5     , base-compat >=0.8.1-    , ansi-terminal >= 0.6.2.3 && < 0.8-    , directory-    , file-embed >=0.0.10 && <0.1-    , filepath-    , here-    , pretty-show >=1.6.4-    , process-    , shakespeare >=2.0.2.2 && <2.1-    , temporary-    , tabular >=0.2 && <0.3-    , time >=1.5-    , utility-ht >= 0.0.13-    , hledger-lib >= 1.4 && < 1.5     , bytestring+    , cmdargs >=0.10     , containers-    , unordered-containers-    , cmdargs >=0.10 && <0.11     , csv     , data-default >=0.5-    , Diff+    , directory+    , file-embed >=0.0.10+    , filepath     , hashable >=1.2.4-    , haskeline >=0.6 && <=0.8-    , HUnit+    , haskeline >=0.6+    , here+    , hledger-lib >=1.5 && <1.6+    , megaparsec >=5.0     , mtl     , mtl-compat     , old-time-    , megaparsec >=5.0 && < 6.2+    , pretty-show >=1.6.4+    , process     , regex-tdfa     , safe >=0.2-    , split >=0.1 && <0.3-    , transformers+    , shakespeare >=2.0.2.2+    , split >=0.1+    , tabular >=0.2+    , temporary     , text >=0.11-    , utf8-string >=0.3.5 && <1.1-    , wizards ==1.0.*+    , time >=1.5+    , transformers+    , unordered-containers+    , utf8-string >=0.3.5+    , utility-ht >=0.0.13+    , wizards >=1.0   if (!(os(windows))) && (flag(terminfo))     build-depends:         terminfo@@ -156,47 +159,50 @@   hs-source-dirs:       app   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans-  cpp-options: -DVERSION="1.4"+  cpp-options: -DVERSION="1.5"   build-depends:-      base >=4.8 && <5+      Decimal+    , HUnit+    , ansi-terminal >=0.6.2.3+    , base >=4.8 && <5     , base-compat >=0.8.1-    , ansi-terminal >= 0.6.2.3 && < 0.8-    , directory-    , file-embed >=0.0.10 && <0.1-    , filepath-    , here-    , pretty-show >=1.6.4-    , process-    , shakespeare >=2.0.2.2 && <2.1-    , temporary-    , tabular >=0.2 && <0.3-    , time >=1.5-    , utility-ht >= 0.0.13-    , hledger-lib >= 1.4 && < 1.5-    , hledger     , bytestring+    , cmdargs >=0.10     , containers-    , unordered-containers-    , cmdargs >=0.10 && <0.11     , csv     , data-default >=0.5-    , haskeline >=0.6 && <=0.8-    , HUnit+    , directory+    , file-embed >=0.0.10+    , filepath+    , haskeline >=0.6+    , here+    , hledger+    , hledger-lib >=1.5 && <1.6     , mtl     , mtl-compat     , old-time     , parsec >=3+    , pretty-show >=1.6.4+    , process     , regex-tdfa     , safe >=0.2-    , split >=0.1 && <0.3+    , shakespeare >=2.0.2.2+    , split >=0.1+    , tabular >=0.2+    , temporary     , text >=0.11-    , utf8-string >=0.3.5 && <1.1-    , wizards ==1.0.*+    , time >=1.5+    , unordered-containers+    , utf8-string >=0.3.5+    , utility-ht >=0.0.13+    , wizards >=1.0   if (!(os(windows))) && (flag(terminfo))     build-depends:         terminfo   if flag(threaded)     ghc-options: -threaded+  other-modules:+      Paths_hledger   default-language: Haskell2010  test-suite test@@ -205,47 +211,50 @@   hs-source-dirs:       test   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans-  cpp-options: -DVERSION="1.4"+  cpp-options: -DVERSION="1.5"   build-depends:-      base >=4.8 && <5+      Decimal+    , HUnit+    , ansi-terminal >=0.6.2.3+    , base >=4.8 && <5     , base-compat >=0.8.1-    , ansi-terminal >= 0.6.2.3 && < 0.8-    , directory-    , file-embed >=0.0.10 && <0.1-    , filepath-    , here-    , pretty-show >=1.6.4-    , process-    , shakespeare >=2.0.2.2 && <2.1-    , temporary-    , tabular >=0.2 && <0.3-    , time >=1.5-    , utility-ht >= 0.0.13-    , hledger-lib >= 1.4 && < 1.5-    , hledger     , bytestring+    , cmdargs >=0.10     , containers-    , unordered-containers-    , cmdargs >=0.10 && <0.11     , csv     , data-default >=0.5-    , haskeline >=0.6 && <=0.8-    , HUnit+    , directory+    , file-embed >=0.0.10+    , filepath+    , haskeline >=0.6+    , here+    , hledger+    , hledger-lib >=1.5 && <1.6     , mtl     , mtl-compat     , old-time     , parsec >=3+    , pretty-show >=1.6.4+    , process     , regex-tdfa     , safe >=0.2-    , split >=0.1 && <0.3-    , text >=0.11-    , utf8-string >=0.3.5 && <1.1-    , wizards ==1.0.*+    , shakespeare >=2.0.2.2+    , split >=0.1+    , tabular >=0.2+    , temporary     , test-framework     , test-framework-hunit+    , text >=0.11+    , time >=1.5+    , unordered-containers+    , utf8-string >=0.3.5+    , utility-ht >=0.0.13+    , wizards >=1.0   if (!(os(windows))) && (flag(terminfo))     build-depends:         terminfo+  other-modules:+      Paths_hledger   default-language: Haskell2010  benchmark bench@@ -255,26 +264,28 @@       bench   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans   build-depends:-      base >=4.8 && <5+      ansi-terminal >=0.6.2.3+    , base >=4.8 && <5     , base-compat >=0.8.1-    , ansi-terminal >= 0.6.2.3 && < 0.8+    , criterion     , directory-    , file-embed >=0.0.10 && <0.1+    , file-embed >=0.0.10     , filepath     , here+    , hledger+    , hledger-lib >=1.5 && <1.6+    , html     , pretty-show >=1.6.4     , process-    , shakespeare >=2.0.2.2 && <2.1+    , shakespeare >=2.0.2.2+    , tabular >=0.2     , temporary-    , tabular >=0.2 && <0.3     , time >=1.5-    , utility-ht >= 0.0.13-    , hledger-lib >= 1.4 && < 1.5-    , hledger-    , criterion-    , html     , timeit+    , utility-ht >=0.0.13   if (!(os(windows))) && (flag(terminfo))     build-depends:         terminfo+  other-modules:+      Paths_hledger   default-language: Haskell2010
+ hledger.info view
@@ -0,0 +1,2504 @@+This is hledger.info, produced by makeinfo version 6.5 from stdin.+++File: hledger.info,  Node: Top,  Next: EXAMPLES,  Up: (dir)++hledger(1) hledger 1.5+**********************++This is hledger's command-line interface (there are also curses and web+interfaces).  Its basic function is to read a plain text file describing+financial transactions (in accounting terms, a general journal) and+print useful reports on standard output, or export them as CSV. hledger+can also read some other file formats such as CSV files, translating+them to journal format.  Additionally, hledger lists other hledger-*+executables found in the user's $PATH and can invoke them as+subcommands.++   hledger reads data from one or more files in hledger journal,+timeclock, timedot, or CSV format specified with '-f', or+'$LEDGER_FILE', or '$HOME/.hledger.journal' (on windows, perhaps+'C:/Users/USER/.hledger.journal').  If using '$LEDGER_FILE', note this+must be a real environment variable, not a shell variable.  You can+specify standard input with '-f-'.++   Transactions are dated movements of money between two (or more) named+accounts, and are recorded with journal entries like this:++2015/10/16 bought food+ expenses:food          $10+ assets:cash++   For more about this format, see hledger_journal(5).++   Most users use a text editor to edit the journal, usually with an+editor mode such as ledger-mode for added convenience.  hledger's+interactive add command is another way to record new transactions.+hledger never changes existing transactions.++   To get started, you can either save some entries like the above in+'~/.hledger.journal', or run 'hledger add' and follow the prompts.  Then+try some commands like 'hledger print' or 'hledger balance'.  Run+'hledger' with no arguments for a list of commands.+* Menu:++* EXAMPLES::+* OPTIONS::+* QUERIES::+* COMMANDS::+* ADD-ON COMMANDS::+++File: hledger.info,  Node: EXAMPLES,  Next: OPTIONS,  Prev: Top,  Up: Top++1 EXAMPLES+**********++Two simple transactions in hledger journal format:++2015/9/30 gift received+  assets:cash   $20+  income:gifts++2015/10/16 farmers market+  expenses:food    $10+  assets:cash++   Some basic reports:++$ hledger print+2015/09/30 gift received+    assets:cash            $20+    income:gifts          $-20++2015/10/16 farmers market+    expenses:food           $10+    assets:cash            $-10++$ hledger accounts --tree+assets+  cash+expenses+  food+income+  gifts++$ hledger balance+                 $10  assets:cash+                 $10  expenses:food+                $-20  income:gifts+--------------------+                   0++$ hledger register cash+2015/09/30 gift received   assets:cash               $20           $20+2015/10/16 farmers market  assets:cash              $-10           $10++   More commands:++$ hledger                                 # show available commands+$ hledger add                             # add more transactions to the journal file+$ hledger balance                         # all accounts with aggregated balances+$ hledger balance --help                  # show detailed help for balance command+$ hledger balance --depth 1               # only top-level accounts+$ hledger register                        # show account postings, with running total+$ hledger reg income                      # show postings to/from income accounts+$ hledger reg 'assets:some bank:checking' # show postings to/from this checking account+$ hledger print desc:shop                 # show transactions with shop in the description+$ hledger activity -W                     # show transaction counts per week as a bar chart+++File: hledger.info,  Node: OPTIONS,  Next: QUERIES,  Prev: EXAMPLES,  Up: Top++2 OPTIONS+*********++* Menu:++* General options::+* Command options::+* Command arguments::+* Argument files::+* Special characters::+* Input files::+* Smart dates::+* Report start & end date::+* Report intervals::+* Period expressions::+* Depth limiting::+* Pivoting::+* Cost::+* Market value::+* Combining -B and -V::+* Regular expressions::+++File: hledger.info,  Node: General options,  Next: Command options,  Up: OPTIONS++2.1 General options+===================++To see general usage help, including general options which are supported+by most hledger commands, run 'hledger -h'.++   General help options:++'-h --help'++     show general usage (or after COMMAND, command usage)+'--version'++     show version+'--debug[=N]'++     show debug output (levels 1-9, default: 1)++   General input options:++'-f FILE --file=FILE'++     use a different input file.  For stdin, use - (default:+     '$LEDGER_FILE' or '$HOME/.hledger.journal')+'--rules-file=RULESFILE'++     Conversion rules file to use when reading CSV (default: FILE.rules)+'--alias=OLD=NEW'++     rename accounts named OLD to NEW+'--anon'++     anonymize accounts and payees+'--pivot FIELDNAME'++     use some other field or tag for the account name+'-I --ignore-assertions'++     ignore any failing balance assertions++   General reporting options:++'-b --begin=DATE'++     include postings/txns on or after this date+'-e --end=DATE'++     include postings/txns before this date+'-D --daily'++     multiperiod/multicolumn report by day+'-W --weekly'++     multiperiod/multicolumn report by week+'-M --monthly'++     multiperiod/multicolumn report by month+'-Q --quarterly'++     multiperiod/multicolumn report by quarter+'-Y --yearly'++     multiperiod/multicolumn report by year+'-p --period=PERIODEXP'++     set start date, end date, and/or reporting interval all at once+     using period expressions syntax (overrides the flags above)+'--date2'++     match the secondary date instead (see command help for other+     effects)+'-U --unmarked'++     include only unmarked postings/txns (can combine with -P or -C)+'-P --pending'++     include only pending postings/txns+'-C --cleared'++     include only cleared postings/txns+'-R --real'++     include only non-virtual postings+'-NUM --depth=NUM'++     hide/aggregate accounts or postings more than NUM levels deep+'-E --empty'++     show items with zero amount, normally hidden+'-B --cost'++     convert amounts to their cost at transaction time (using the+     transaction price, if any)+'-V --value'++     convert amounts to their market value on the report end date (using+     the most recent applicable market price, if any)+'--auto'++     apply automated posting rules to modify transactions.+'--forecast'++     apply periodic transaction rules to generate future transactions,+     to 6 months from now or report end date.++   When a reporting option appears more than once in the command line,+the last one takes precedence.++   Some reporting options can also be written as query arguments.+++File: hledger.info,  Node: Command options,  Next: Command arguments,  Prev: General options,  Up: OPTIONS++2.2 Command options+===================++To see options for a particular command, including command-specific+options, run: 'hledger COMMAND -h'.++   Command-specific options must be written after the command name, eg:+'hledger print -x'.++   Additionally, if the command is an addon, you may need to put its+options after a double-hyphen, eg: 'hledger ui -- --watch'.  Or, you can+run the addon executable directly: 'hledger-ui --watch'.+++File: hledger.info,  Node: Command arguments,  Next: Argument files,  Prev: Command options,  Up: OPTIONS++2.3 Command arguments+=====================++Most hledger commands accept arguments after the command name, which are+often a query, filtering the data in some way.+++File: hledger.info,  Node: Argument files,  Next: Special characters,  Prev: Command arguments,  Up: OPTIONS++2.4 Argument files+==================++You can save a set of command line options/arguments in a file, one per+line, and then reuse them by writing '@FILENAME' in a command line.  To+prevent this expansion of '@'-arguments, precede them with a '--'+argument.  For more, see Save frequently used options.+++File: hledger.info,  Node: Special characters,  Next: Input files,  Prev: Argument files,  Up: OPTIONS++2.5 Special characters+======================++Option and argument values which contain problematic characters should+be escaped with double quotes, backslashes, or (best) single quotes.+Problematic characters means spaces, and also characters which are+significant to your command shell, such as less-than/greater-than.  Eg:+'hledger register -p 'last year' "accounts receivable+(receivable|payable)" amt:\>100'.++   Characters which are significant both to the shell and in regular+expressions sometimes need to be double-escaped.  These include+parentheses, the pipe symbol and the dollar sign.  Eg, to match the+dollar symbol, bash users should do: 'hledger balance cur:'\$'' or+'hledger balance cur:\\$'.++   When hledger is invoking an addon executable (like hledger-ui),+options and arguments get de-escaped once more, so you might need+_triple_-escaping.  Eg: 'hledger ui cur:'\\$'' or 'hledger ui cur:\\\\$'+in bash.  (The number of backslashes in fish shell is left as an+exercise for the reader.)++   Inside a file used for argument expansion, one less level of escaping+is enough.  (And in this case, backslashes seem to work better than+quotes.  Eg: 'cur:\$').++   If in doubt, keep things simple:++   * run add-on executables directly+   * write options after the command+   * enclose problematic args in single quotes+   * if needed, also add a backslash to escape regexp metacharacters++   If you're really stumped, add '--debug=2' to troubleshoot.+++File: hledger.info,  Node: Input files,  Next: Smart dates,  Prev: Special characters,  Up: OPTIONS++2.6 Input files+===============++hledger reads transactions from a data file (and the add command writes+to it).  By default this file is '$HOME/.hledger.journal' (or on+Windows, something like 'C:/Users/USER/.hledger.journal').  You can+override this with the '$LEDGER_FILE' environment variable:++$ setenv LEDGER_FILE ~/finance/2016.journal+$ hledger stats++   or with the '-f/--file' option:++$ hledger -f /some/file stats++   The file name '-' (hyphen) means standard input:++$ cat some.journal | hledger -f-++   Usually the data file is in hledger's journal format, but it can also+be one of several other formats, listed below.  hledger detects the+format automatically based on the file extension, or if that is not+recognised, by trying each built-in "reader" in turn:++Reader:     Reads:                              Used for file extensions:+----------------------------------------------------------------------------+'journal'   hledger's journal format, also      '.journal' '.j'+            some Ledger journals                '.hledger' '.ledger'+'timeclock' timeclock files (precise time       '.timeclock'+            logging)+'timedot'   timedot files (approximate time     '.timedot'+            logging)+'csv'       comma-separated values (data        '.csv'+            interchange)++   If needed (eg to ensure correct error messages when a file has the+"wrong" extension), you can force a specific reader/format by prepending+it to the file path with a colon.  Examples:++$ hledger -f csv:/some/csv-file.dat stats+$ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:-++   You can also specify multiple '-f' options, to read multiple files as+one big journal.  There are some limitations with this:++   * directives in one file will not affect the other files+   * balance assertions will not see any account balances from previous+     files++   If you need those, either use the include directive, or concatenate+the files, eg: 'cat a.journal b.journal | hledger -f- CMD'.+++File: hledger.info,  Node: Smart dates,  Next: Report start & end date,  Prev: Input files,  Up: OPTIONS++2.7 Smart dates+===============++hledger's user interfaces accept a flexible "smart date" syntax (unlike+dates in the journal file).  Smart dates allow some english words, can+be relative to today's date, and can have less-significant date parts+omitted (defaulting to 1).++   Examples:++'2009/1/1', '2009/01/01', '2009-1-1', '2009.1.1'   simple dates, several separators allowed+'2009/1', '2009'                                   same as above - a missing day or month defaults to 1+'1/1', 'january', 'jan', 'this year'               relative dates, meaning january 1 of the current year+'next year'                                        january 1 of next year+'this month'                                       the 1st of the current month+'this week'                                        the most recent monday+'last week'                                        the monday of the week before this one+'lastweek'                                         spaces are optional+'today', 'yesterday', 'tomorrow'+++File: hledger.info,  Node: Report start & end date,  Next: Report intervals,  Prev: Smart dates,  Up: OPTIONS++2.8 Report start & end date+===========================++Most hledger reports show the full span of time represented by the+journal data, by default.  So, the effective report start and end dates+will be the earliest and latest transaction or posting dates found in+the journal.++   Often you will want to see a shorter time span, such as the current+month.  You can specify a start and/or end date using '-b/--begin',+'-e/--end', '-p/--period' or a 'date:' query (described below).  All of+these accept the smart date syntax.  One important thing to be aware of+when specifying end dates: as in Ledger, end dates are exclusive, so you+need to write the date _after_ the last day you want to include.++   Examples:++'-b 2016/3/17'      begin on St. Patrick's day 2016+'-e 12/1'           end at the start of december 1st of the current year (11/30 will be the last date included)+'-b thismonth'      all transactions on or after the 1st of the current month+'-p thismonth'      all transactions in the current month+'date:2016/3/17-'   the above written as queries instead+'date:-12/1'+'date:thismonth-'+'date:thismonth'+++File: hledger.info,  Node: Report intervals,  Next: Period expressions,  Prev: Report start & end date,  Up: OPTIONS++2.9 Report intervals+====================++A report interval can be specified so that commands like register,+balance and activity will divide their reports into multiple subperiods.+The basic intervals can be selected with one of '-D/--daily',+'-W/--weekly', '-M/--monthly', '-Q/--quarterly', or '-Y/--yearly'.  More+complex intervals may be specified with a period expression.  Report+intervals can not be specified with a query, currently.+++File: hledger.info,  Node: Period expressions,  Next: Depth limiting,  Prev: Report intervals,  Up: OPTIONS++2.10 Period expressions+=======================++The '-p/--period' option accepts period expressions, a shorthand way of+expressing a start date, end date, and/or report interval all at once.++   Here's a basic period expression specifying the first quarter of+2009.  Note, hledger always treats start dates as inclusive and end+dates as exclusive:++   '-p "from 2009/1/1 to 2009/4/1"'++   Keywords like "from" and "to" are optional, and so are the spaces, as+long as you don't run two dates together.  "to" can also be written as+"-".  These are equivalent to the above:++'-p "2009/1/1 2009/4/1"'+'-p2009/1/1to2009/4/1'+'-p2009/1/1-2009/4/1'++   Dates are smart dates, so if the current year is 2009, the above can+also be written as:++'-p "1/1 4/1"'+'-p "january-apr"'+'-p "this year to 4/1"'++   If you specify only one date, the missing start or end date will be+the earliest or latest transaction in your journal:++'-p "from 2009/1/1"'   everything after january 1, 2009+'-p "from 2009/1"'     the same+'-p "from 2009"'       the same+'-p "to 2009"'         everything before january 1, 2009++   A single date with no "from" or "to" defines both the start and end+date like so:++'-p "2009"'       the year 2009; equivalent to "2009/1/1 to 2010/1/1"+'-p "2009/1"'     the month of jan; equivalent to "2009/1/1 to 2009/2/1"+'-p "2009/1/1"'   just that day; equivalent to "2009/1/1 to 2009/1/2"++   The argument of '-p' can also begin with, or be, a report interval+expression.  The basic report intervals are 'daily', 'weekly',+'monthly', 'quarterly', or 'yearly', which have the same effect as the+'-D','-W','-M','-Q', or '-Y' flags.  Between report interval and+start/end dates (if any), the word 'in' is optional.  Examples:++'-p "weekly from 2009/1/1 to 2009/4/1"'+'-p "monthly in 2008"'+'-p "quarterly"'++   Note that 'weekly', 'monthly', 'quarterly' and 'yearly' intervals+will always start on the first day on week, month, quarter or year+accordingly, and will end on the last day of same period, even if+associated period expression specifies different explicit start and end+date.++   For example:++'-p "weekly from 2009/1/1 to 2009/4/1"' - starts on 2008/12/29, closest preceeding Monday+'-p "monthly in 2008/11/25"' - starts on 2018/11/01+'-p "quarterly from 2009-05-05 to 2009-06-01"' - starts on 2009/04/01, ends on 2009/06/30, which are first and last days of Q2 2009+'-p "yearly from 2009-12-29"' - starts on 2009/01/01, first day of 2009++   The following more complex report intervals are also supported:+'biweekly', 'bimonthly', 'every day|week|month|quarter|year', 'every N+days|weeks|months|quarters|years'.++   All of these will start on the first day of the requested period and+end on the last one, as described above.++   Examples:++'-p "bimonthly from 2008"' - periods will have boundaries on 2008/01/01, 2008/03/01, ...+'-p "every 2 weeks"' - starts on closest preceeding Monday+'-p "every 5 month from 2009/03"' - periods will have boundaries on 2009/03/01, 2009/08/01, ...++   If you want intervals that start on arbitrary day of your choosing+and span a week, month or year, you need to use any of the following:++   'every Nth day of week', 'every <weekday>', 'every Nth day [of+month]', 'every Nth weekday [of month]', 'every MM/DD [of year]', 'every+Nth MMM [of year]', 'every MMM Nth [of year]'.++   Examples:++'-p "every 2nd day of week"' - periods will go from Tue to Tue+'-p "every Tue"' - same+'-p "every 15th day"' - period boundaries will be on 15th of each month+'-p "every 2nd Monday"' - period boundaries will be on second Monday of each month+'-p "every 11/05"' - yearly periods with boundaries on 5th of Nov+'-p "every 5th Nov"' - same+'-p "every Nov 5th"' - same++   Show historical balances at end of 15th each month (N is exclusive+end date):++   'hledger balance -H -p "every 16th day"'++   Group postings from start of wednesday to end of next tuesday (N is+start date and exclusive end date):++   'hledger register checking -p "every 3rd day of week"'+++File: hledger.info,  Node: Depth limiting,  Next: Pivoting,  Prev: Period expressions,  Up: OPTIONS++2.11 Depth limiting+===================++With the '--depth N' option (short form: '-N'), commands like account,+balance and register will show only the uppermost accounts in the+account tree, down to level N. Use this when you want a summary with+less detail.  This flag has the same effect as a 'depth:' query argument+(so '-2', '--depth=2' or 'depth:2' are basically equivalent).+++File: hledger.info,  Node: Pivoting,  Next: Cost,  Prev: Depth limiting,  Up: OPTIONS++2.12 Pivoting+=============++Normally hledger sums amounts, and organizes them in a hierarchy, based+on account name.  The '--pivot FIELD' option causes it to sum and+organize hierarchy based on the value of some other field instead.+FIELD can be: 'code', 'description', 'payee', 'note', or the full name+(case insensitive) of any tag.  As with account names, values containing+'colon:separated:parts' will be displayed hierarchically in reports.++   '--pivot' is a general option affecting all reports; you can think of+hledger transforming the journal before any other processing, replacing+every posting's account name with the value of the specified field on+that posting, inheriting it from the transaction or using a blank value+if it's not present.++   An example:++2016/02/16 Member Fee Payment+    assets:bank account                    2 EUR+    income:member fees                    -2 EUR  ; member: John Doe++   Normal balance report showing account names:++$ hledger balance+               2 EUR  assets:bank account+              -2 EUR  income:member fees+--------------------+                   0++   Pivoted balance report, using member: tag values instead:++$ hledger balance --pivot member+               2 EUR+              -2 EUR  John Doe+--------------------+                   0++   One way to show only amounts with a member: value (using a query,+described below):++$ hledger balance --pivot member tag:member=.+              -2 EUR  John Doe+--------------------+              -2 EUR++   Another way (the acct: query matches against the pivoted "account+name"):++$ hledger balance --pivot member acct:.+              -2 EUR  John Doe+--------------------+              -2 EUR+++File: hledger.info,  Node: Cost,  Next: Market value,  Prev: Pivoting,  Up: OPTIONS++2.13 Cost+=========++The '-B/--cost' flag converts amounts to their cost at transaction time,+if they have a transaction price specified.+++File: hledger.info,  Node: Market value,  Next: Combining -B and -V,  Prev: Cost,  Up: OPTIONS++2.14 Market value+=================++The '-V/--value' flag converts reported amounts to their current market+value.  Specifically, when there is a market price (P directive) for the+amount's commodity, dated on or before today's date (or the report end+date if specified), the amount will be converted to the price's+commodity.++   When there are multiple applicable P directives, -V chooses the most+recent one, or in case of equal dates, the last-parsed one.++   For example:++# one euro is worth this many dollars from nov 1+P 2016/11/01 € $1.10++# purchase some euros on nov 3+2016/11/3+    assets:euros        €100+    assets:checking++# the euro is worth fewer dollars by dec 21+P 2016/12/21 € $1.03++   How many euros do I have ?++$ hledger -f t.j bal euros+                €100  assets:euros++   What are they worth on nov 3 ?  (no report end date specified,+defaults to the last date in the journal)++$ hledger -f t.j bal euros -V+             $110.00  assets:euros++   What are they worth on dec 21 ?++$ hledger -f t.j bal euros -V -e 2016/12/21+             $103.00  assets:euros++   Currently, hledger's -V only uses market prices recorded with P+directives, not transaction prices (unlike Ledger).+++File: hledger.info,  Node: Combining -B and -V,  Next: Regular expressions,  Prev: Market value,  Up: OPTIONS++2.15 Combining -B and -V+========================++Using -B/-cost and -V/-value together is currently allowed, but the+results are probably not meaningful.  Let us know if you find a use for+this.+++File: hledger.info,  Node: Regular expressions,  Prev: Combining -B and -V,  Up: OPTIONS++2.16 Regular expressions+========================++hledger uses regular expressions in a number of places:++   * query terms, on the command line and in the hledger-web search+     form: 'REGEX', 'desc:REGEX', 'cur:REGEX', 'tag:...=REGEX'+   * CSV rules conditional blocks: 'if REGEX ...'+   * account alias directives and options: 'alias /REGEX/ =+     REPLACEMENT', '--alias /REGEX/=REPLACEMENT'++   hledger's regular expressions come from the regex-tdfa library.  In+general they:++   * are case insensitive+   * are infix matching (do not need to match the entire thing being+     matched)+   * are POSIX extended regular expressions+   * also support GNU word boundaries (\<, \>, \b, \B)+   * and parenthesised capturing groups and numeric backreferences in+     replacement strings+   * do not support mode modifiers like (?s)++   Some things to note:++   * In the 'alias' directive and '--alias' option, regular expressions+     must be enclosed in forward slashes ('/REGEX/').  Elsewhere in+     hledger, these are not required.++   * In queries, to match a regular expression metacharacter like '$' as+     a literal character, prepend a backslash.  Eg to search for amounts+     with the dollar sign in hledger-web, write 'cur:\$'.++   * On the command line, some metacharacters like '$' have a special+     meaning to the shell and so must be escaped at least once more.+     See Special characters.+++File: hledger.info,  Node: QUERIES,  Next: COMMANDS,  Prev: OPTIONS,  Up: Top++3 QUERIES+*********++One of hledger's strengths is being able to quickly report on precise+subsets of your data.  Most commands accept an optional query+expression, written as arguments after the command name, to filter the+data by date, account name or other criteria.  The syntax is similar to+a web search: one or more space-separated search terms, quotes to+enclose whitespace, prefixes to match specific fields, a not: prefix to+negate the match.++   We do not yet support arbitrary boolean combinations of search terms;+instead most commands show transactions/postings/accounts which match+(or negatively match):++   * any of the description terms AND+   * any of the account terms AND+   * any of the status terms AND+   * all the other terms.++   The print command instead shows transactions which:++   * match any of the description terms AND+   * have any postings matching any of the positive account terms AND+   * have no postings matching any of the negative account terms AND+   * match all the other terms.++   The following kinds of search terms can be used.  Remember these can+also be prefixed with *'not:'*, eg to exclude a particular subaccount.++*'REGEX'*++     match account names by this regular expression.  (No prefix is+     equivalent to 'acct:').+*'acct:REGEX'*++     same as above+*'amt:N, amt:<N, amt:<=N, amt:>N, amt:>=N'*++     match postings with a single-commodity amount that is equal to,+     less than, or greater than N. (Multi-commodity amounts are not+     tested, and will always match.)  The comparison has two modes: if N+     is preceded by a + or - sign (or is 0), the two signed numbers are+     compared.  Otherwise, the absolute magnitudes are compared,+     ignoring sign.+*'code:REGEX'*++     match by transaction code (eg check number)+*'cur:REGEX'*++     match postings or transactions including any amounts whose+     currency/commodity symbol is fully matched by REGEX. (For a partial+     match, use '.*REGEX.*').  Note, to match characters which are+     regex-significant, like the dollar sign ('$'), you need to prepend+     '\'.  And when using the command line you need to add one more+     level of quoting to hide it from the shell, so eg do: 'hledger+     print cur:'\$'' or 'hledger print cur:\\$'.+*'desc:REGEX'*++     match transaction descriptions.+*'date:PERIODEXPR'*++     match dates within the specified period.  PERIODEXPR is a period+     expression (with no report interval).  Examples: 'date:2016',+     'date:thismonth', 'date:2000/2/1-2/15', 'date:lastweek-'.  If the+     '--date2' command line flag is present, this matches secondary+     dates instead.+*'date2:PERIODEXPR'*++     match secondary dates within the specified period.+*'depth:N'*++     match (or display, depending on command) accounts at or above this+     depth+*'note:REGEX'*++     match transaction notes (part of description right of '|', or whole+     description when there's no '|')+*'payee:REGEX'*++     match transaction payee/payer names (part of description left of+     '|', or whole description when there's no '|')+*'real:, real:0'*++     match real or virtual postings respectively+*'status:, status:!, status:*'*++     match unmarked, pending, or cleared transactions respectively+*'tag:REGEX[=REGEX]'*++     match by tag name, and optionally also by tag value.  Note a tag:+     query is considered to match a transaction if it matches any of the+     postings.  Also remember that postings inherit the tags of their+     parent transaction.++   The following special search term is used automatically in+hledger-web, only:++*'inacct:ACCTNAME'*++     tells hledger-web to show the transaction register for this+     account.  Can be filtered further with 'acct' etc.++   Some of these can also be expressed as command-line options (eg+'depth:2' is equivalent to '--depth 2').  Generally you can mix options+and query arguments, and the resulting query will be their intersection+(perhaps excluding the '-p/--period' option).+++File: hledger.info,  Node: COMMANDS,  Next: ADD-ON COMMANDS,  Prev: QUERIES,  Up: Top++4 COMMANDS+**********++hledger provides a number of subcommands; 'hledger' with no arguments+shows a list.++   If you install additional 'hledger-*' packages, or if you put+programs or scripts named 'hledger-NAME' in your PATH, these will also+be listed as subcommands.++   Run a subcommand by writing its name as first argument (eg 'hledger+incomestatement').  You can also write one of the standard short aliases+displayed in parentheses in the command list ('hledger b'), or any any+unambiguous prefix of a command name ('hledger inc').++   Here are all the builtin commands in alphabetical order.  See also+'hledger' for a more organised command list, and 'hledger CMD -h' for+detailed command help.+* Menu:++* accounts::+* activity::+* add::+* balance::+* balancesheet::+* balancesheetequity::+* cashflow::+* check-dates::+* check-dupes::+* equity::+* help::+* import::+* incomestatement::+* prices::+* print::+* print-unique::+* register::+* register-match::+* rewrite::+* stats::+* tags::+* test::+++File: hledger.info,  Node: accounts,  Next: activity,  Up: COMMANDS++4.1 accounts+============++Show account names.  Alias: a.++'--tree'++     show short account names, as a tree+'--flat'++     show full account names, as a list (default)+'--drop=N'++     in flat mode: omit N leading account name parts++   This command lists all account names that are in use (ie, all the+accounts which have at least one transaction posting to them).  With+query arguments, only matched account names are shown.++   It shows a flat list by default.  With '--tree', it uses indentation+to show the account hierarchy.++   In flat mode you can add '--drop N' to omit the first few account+name components.++   Examples:++$ hledger accounts --tree+assets+  bank+    checking+    saving+  cash+expenses+  food+  supplies+income+  gifts+  salary+liabilities+  debts++$ hledger accounts --drop 1+bank:checking+bank:saving+cash+food+supplies+gifts+salary+debts++$ hledger accounts+assets:bank:checking+assets:bank:saving+assets:cash+expenses:food+expenses:supplies+income:gifts+income:salary+liabilities:debts+++File: hledger.info,  Node: activity,  Next: add,  Prev: accounts,  Up: COMMANDS++4.2 activity+============++Show an ascii barchart of posting counts per interval.++   The activity command displays an ascii histogram showing transaction+counts by day, week, month or other reporting interval (by day is the+default).  With query arguments, it counts only matched transactions.++$ hledger activity --quarterly+2008-01-01 **+2008-04-01 *******+2008-07-01 +2008-10-01 **+++File: hledger.info,  Node: add,  Next: balance,  Prev: activity,  Up: COMMANDS++4.3 add+=======++Prompt for transactions and add them to the journal.++'--no-new-accounts'++     don't allow creating new accounts; helps prevent typos when+     entering account names++   Many hledger users edit their journals directly with a text editor,+or generate them from CSV. For more interactive data entry, there is the+'add' command, which prompts interactively on the console for new+transactions, and appends them to the journal file (if there are+multiple '-f FILE' options, the first file is used.)  Existing+transactions are not changed.  This is the only hledger command that+writes to the journal file.++   To use it, just run 'hledger add' and follow the prompts.  You can+add as many transactions as you like; when you are finished, enter '.'+or press control-d or control-c to exit.++   Features:++   * add tries to provide useful defaults, using the most similar recent+     transaction (by description) as a template.+   * You can also set the initial defaults with command line arguments.+   * Readline-style edit keys can be used during data entry.+   * The tab key will auto-complete whenever possible - accounts,+     descriptions, dates ('yesterday', 'today', 'tomorrow').  If the+     input area is empty, it will insert the default value.+   * If the journal defines a default commodity, it will be added to any+     bare numbers entered.+   * A parenthesised transaction code may be entered following a date.+   * Comments and tags may be entered following a description or amount.+   * If you make a mistake, enter '<' at any prompt to restart the+     transaction.+   * Input prompts are displayed in a different colour when the terminal+     supports it.++   Example (see the tutorial for a detailed explanation):++$ hledger add+Adding transactions to journal file /src/hledger/examples/sample.journal+Any command line arguments will be used as defaults.+Use tab key to complete, readline keys to edit, enter to accept defaults.+An optional (CODE) may follow transaction dates.+An optional ; COMMENT may follow descriptions or amounts.+If you make a mistake, enter < at any prompt to restart the transaction.+To end a transaction, enter . when prompted.+To quit, enter . at a date prompt or press control-d or control-c.+Date [2015/05/22]: +Description: supermarket+Account 1: expenses:food+Amount  1: $10+Account 2: assets:checking+Amount  2 [$-10.0]: +Account 3 (or . or enter to finish this transaction): .+2015/05/22 supermarket+    expenses:food             $10+    assets:checking        $-10.0++Save this transaction to the journal ? [y]: +Saved.+Starting the next transaction (. or ctrl-D/ctrl-C to quit)+Date [2015/05/22]: <CTRL-D> $+++File: hledger.info,  Node: balance,  Next: balancesheet,  Prev: add,  Up: COMMANDS++4.4 balance+===========++Show accounts and their balances.  Aliases: b, bal.++'--change'++     show balance change in each period (default)+'--cumulative'++     show balance change accumulated across periods (in multicolumn+     reports)+'-H --historical'++     show historical ending balance in each period (includes postings+     before report start date)+'--tree'++     show accounts as a tree; amounts include subaccounts (default in+     simple reports)+'--flat'++     show accounts as a list; amounts exclude subaccounts except when+     account is depth-clipped (default in multicolumn reports)+'-A --average'++     show a row average column (in multicolumn mode)+'-T --row-total'++     show a row total column (in multicolumn mode)+'-N --no-total'++     don't show the final total row+'--drop=N'++     omit N leading account name parts (in flat mode)+'--no-elide'++     don't squash boring parent accounts (in tree mode)+'--format=LINEFORMAT'++     in single-column balance reports: use this custom line format+'-O FMT --output-format=FMT'++     select the output format.  Supported formats: txt, csv.+'-o FILE --output-file=FILE'++     write output to FILE. A file extension matching one of the above+     formats selects that format.+'--pretty-tables'++     use unicode to display prettier tables.+'--sort-amount'++     sort by amount instead of account name (in flat mode).  With+     multiple columns, sorts by the row total, or by row average if that+     is displayed.+'--budget'++     show performance compared to budget goals defined by periodic+     transactions+'--show-unbudgeted'++     with -budget, show unbudgeted accounts also++   The balance command displays accounts and balances.  It is hledger's+most featureful and versatile command.++$ hledger balance+                 $-1  assets+                  $1    bank:saving+                 $-2    cash+                  $2  expenses+                  $1    food+                  $1    supplies+                 $-2  income+                 $-1    gifts+                 $-1    salary+                  $1  liabilities:debts+--------------------+                   0++   More precisely, the balance command shows the _change_ to each+account's balance caused by all (matched) postings.  In the common case+where you do not filter by date and your journal sets the correct+opening balances, this is the same as the account's ending balance.++   By default, accounts are displayed hierarchically, with subaccounts+indented below their parent.  "Boring" accounts, which contain a single+interesting subaccount and no balance of their own, are elided into the+following line for more compact output.  (Use '--no-elide' to prevent+this.  Eliding of boring accounts is not yet supported in multicolumn+reports.)++   Each account's balance is the "inclusive" balance - it includes the+balances of any subaccounts.++   Accounts which have zero balance (and no non-zero subaccounts) are+omitted.  Use '-E/--empty' to show them.++   A final total is displayed by default; use '-N/--no-total' to+suppress it:++$ hledger balance -p 2008/6 expenses --no-total+                  $2  expenses+                  $1    food+                  $1    supplies++* Menu:++* Flat mode::+* Depth limited balance reports::+* Multicolumn balance reports::+* Budgets::+* Custom balance output::+* Colour support::+* Output destination::+* CSV output::+++File: hledger.info,  Node: Flat mode,  Next: Depth limited balance reports,  Up: balance++4.4.1 Flat mode+---------------++To see a flat list of full account names instead of the default+hierarchical display, use '--flat'.  In this mode, accounts (unless+depth-clipped) show their "exclusive" balance, excluding any subaccount+balances.  In this mode, you can also use '--drop N' to omit the first+few account name components.++$ hledger balance -p 2008/6 expenses -N --flat --drop 1+                  $1  food+                  $1  supplies+++File: hledger.info,  Node: Depth limited balance reports,  Next: Multicolumn balance reports,  Prev: Flat mode,  Up: balance++4.4.2 Depth limited balance reports+-----------------------------------++With '--depth N', balance shows accounts only to the specified depth.+This is very useful to show a complex charts of accounts in less detail.+In flat mode, balances from accounts below the depth limit will be shown+as part of a parent account at the depth limit.++$ hledger balance -N --depth 1+                 $-1  assets+                  $2  expenses+                 $-2  income+                  $1  liabilities+++File: hledger.info,  Node: Multicolumn balance reports,  Next: Budgets,  Prev: Depth limited balance reports,  Up: balance++4.4.3 Multicolumn balance reports+---------------------------------++With a reporting interval, multiple balance columns will be shown, one+for each report period.  There are three types of multi-column balance+report, showing different information:++  1. By default: each column shows the sum of postings in that period,+     ie the account's change of balance in that period.  This is useful+     eg for a monthly income statement:++     $ hledger balance --quarterly income expenses -E+     Balance changes in 2008:+     +                        ||  2008q1  2008q2  2008q3  2008q4 +     ===================++=================================+      expenses:food     ||       0      $1       0       0 +      expenses:supplies ||       0      $1       0       0 +      income:gifts      ||       0     $-1       0       0 +      income:salary     ||     $-1       0       0       0 +     -------------------++---------------------------------+                        ||     $-1      $1       0       0 ++  2. With '--cumulative': each column shows the ending balance for that+     period, accumulating the changes across periods, starting from 0 at+     the report start date:++     $ hledger balance --quarterly income expenses -E --cumulative+     Ending balances (cumulative) in 2008:+     +                        ||  2008/03/31  2008/06/30  2008/09/30  2008/12/31 +     ===================++=================================================+      expenses:food     ||           0          $1          $1          $1 +      expenses:supplies ||           0          $1          $1          $1 +      income:gifts      ||           0         $-1         $-1         $-1 +      income:salary     ||         $-1         $-1         $-1         $-1 +     -------------------++-------------------------------------------------+                        ||         $-1           0           0           0 ++  3. With '--historical/-H': each column shows the actual historical+     ending balance for that period, accumulating the changes across+     periods, starting from the actual balance at the report start date.+     This is useful eg for a multi-period balance sheet, and when you+     are showing only the data after a certain start date:++     $ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1+     Ending balances (historical) in 2008/04/01-2008/12/31:+     +                           ||  2008/06/30  2008/09/30  2008/12/31 +     ======================++=====================================+      assets:bank:checking ||          $1          $1           0 +      assets:bank:saving   ||          $1          $1          $1 +      assets:cash          ||         $-2         $-2         $-2 +      liabilities:debts    ||           0           0          $1 +     ----------------------++-------------------------------------+                           ||           0           0           0 ++   Multi-column balance reports display accounts in flat mode by+default; to see the hierarchy, use '--tree'.++   With a reporting interval (like '--quarterly' above), the report+start/end dates will be adjusted if necessary so that they encompass the+displayed report periods.  This is so that the first and last periods+will be "full" and comparable to the others.++   The '-E/--empty' flag does two things in multicolumn balance reports:+first, the report will show all columns within the specified report+period (without -E, leading and trailing columns with all zeroes are not+shown).  Second, all accounts which existed at the report start date+will be considered, not just the ones with activity during the report+period (use -E to include low-activity accounts which would otherwise+would be omitted).++   The '-T/--row-total' flag adds an additional column showing the total+for each row.++   The '-A/--average' flag adds a column showing the average value in+each row.++   Here's an example of all three:++$ hledger balance -Q income expenses --tree -ETA+Balance changes in 2008:++            ||  2008q1  2008q2  2008q3  2008q4    Total  Average +============++===================================================+ expenses   ||       0      $2       0       0       $2       $1 +   food     ||       0      $1       0       0       $1        0 +   supplies ||       0      $1       0       0       $1        0 + income     ||     $-1     $-1       0       0      $-2      $-1 +   gifts    ||       0     $-1       0       0      $-1        0 +   salary   ||     $-1       0       0       0      $-1        0 +------------++---------------------------------------------------+            ||     $-1      $1       0       0        0        0 ++# Average is rounded to the dollar here since all journal amounts are+++File: hledger.info,  Node: Budgets,  Next: Custom balance output,  Prev: Multicolumn balance reports,  Up: balance++4.4.4 Budgets+-------------++With '--budget' and a report interval, all periodic transactions in your+journal with that interval, active during the requested report period,+are interpreted as recurring budget goals for the specified accounts+(and subaccounts), and the report will show the difference between+actual and budgeted balances.++   For example, you can take average monthly expenses in the common+expense categories to construct a minimal monthly budget:++;; Budget+~ monthly+  income  $2000+  expenses:food    $400+  expenses:bus     $50+  expenses:movies  $30+  assets:bank:checking++;; Two months worth of expenses+2017-11-01+  income  $1950+  expenses:food    $396+  expenses:bus     $49+  expenses:movies  $30+  expenses:supplies  $20+  assets:bank:checking++2017-12-01+  income  $2100+  expenses:food    $412+  expenses:bus     $53+  expenses:gifts   $100+  assets:bank:checking++   You can now see a monthly budget performance report:++$ hledger balance -M --budget+Balance changes in 2017/11/01-2017/12/31:++                       ||                2017/11                  2017/12 +=======================++=================================================+ <unbudgeted>:expenses ||                    $20                     $100 + assets:bank:checking  || $-2445 [99% of $-2480]  $-2665 [107% of $-2480] + expenses:bus          ||       $49 [98% of $50]        $53 [106% of $50] + expenses:food         ||     $396 [99% of $400]      $412 [103% of $400] + expenses:movies       ||      $30 [100% of $30]            0 [0% of $30] + income                ||   $1950 [98% of $2000]    $2100 [105% of $2000] +-----------------------++-------------------------------------------------+                       ||                      0                        0 ++   You can roll over unspent budgets to next period with '--cumulative':++$ hledger balance -M --budget --cumulative+Ending balances (cumulative) in 2017/11/01-2017/12/31:++                       ||             2017/11/30               2017/12/31 +=======================++=================================================+ <unbudgeted>:expenses ||                    $20                     $120 + assets:bank:checking  || $-2445 [99% of $-2480]  $-5110 [103% of $-4960] + expenses:bus          ||       $49 [98% of $50]      $102 [102% of $100] + expenses:food         ||     $396 [99% of $400]      $808 [101% of $800] + expenses:movies       ||      $30 [100% of $30]         $30 [50% of $60] + income                ||   $1950 [98% of $2000]    $4050 [101% of $4000] +-----------------------++-------------------------------------------------+                       ||                      0                        0++   Accounts with no budget goals (not mentioned in the periodic+transactions) will be aggregated under '<unbudgeted>', unless you add+the '--show-unbudgeted' flag to display them normally:++$ hledger balance --budget --show-unbudgeted+Balance changes in 2017/11/01-2017/12/31:++                      ||                2017/11                  2017/12 +======================++=================================================+ assets:bank:checking || $-2445 [99% of $-2480]  $-2665 [107% of $-2480] + expenses:bus         ||       $49 [98% of $50]        $53 [106% of $50] + expenses:food        ||     $396 [99% of $400]      $412 [103% of $400] + expenses:gifts       ||                      0                     $100 + expenses:movies      ||      $30 [100% of $30]            0 [0% of $30] + expenses:supplies    ||                    $20                        0 + income               ||   $1950 [98% of $2000]    $2100 [105% of $2000] +----------------------++-------------------------------------------------+                      ||                      0                        0 ++   For more examples and details, see Budgeting and Forecasting.+++File: hledger.info,  Node: Custom balance output,  Next: Colour support,  Prev: Budgets,  Up: balance++4.4.5 Custom balance output+---------------------------++In simple (non-multi-column) balance reports, you can customise the+output with '--format FMT':++$ hledger balance --format "%20(account) %12(total)"+              assets          $-1+         bank:saving           $1+                cash          $-2+            expenses           $2+                food           $1+            supplies           $1+              income          $-2+               gifts          $-1+              salary          $-1+   liabilities:debts           $1+---------------------------------+                                0++   The FMT format string (plus a newline) specifies the formatting+applied to each account/balance pair.  It may contain any suitable text,+with data fields interpolated like so:++   '%[MIN][.MAX](FIELDNAME)'++   * MIN pads with spaces to at least this width (optional)+   * MAX truncates at this width (optional)+   * FIELDNAME must be enclosed in parentheses, and can be one of:++        * 'depth_spacer' - a number of spaces equal to the account's+          depth, or if MIN is specified, MIN * depth spaces.+        * 'account' - the account's name+        * 'total' - the account's balance/posted total, right justified++   Also, FMT can begin with an optional prefix to control how+multi-commodity amounts are rendered:++   * '%_' - render on multiple lines, bottom-aligned (the default)+   * '%^' - render on multiple lines, top-aligned+   * '%,' - render on one line, comma-separated++   There are some quirks.  Eg in one-line mode, '%(depth_spacer)' has no+effect, instead '%(account)' has indentation built in.  Experimentation+may be needed to get pleasing results.++   Some example formats:++   * '%(total)' - the account's total+   * '%-20.20(account)' - the account's name, left justified, padded to+     20 characters and clipped at 20 characters+   * '%,%-50(account) %25(total)' - account name padded to 50+     characters, total padded to 20 characters, with multiple+     commodities rendered on one line+   * '%20(total) %2(depth_spacer)%-(account)' - the default format for+     the single-column balance report+++File: hledger.info,  Node: Colour support,  Next: Output destination,  Prev: Custom balance output,  Up: balance++4.4.6 Colour support+--------------------++The balance command shows negative amounts in red, if:++   * the 'TERM' environment variable is not set to 'dumb'+   * the output is not being redirected or piped anywhere+++File: hledger.info,  Node: Output destination,  Next: CSV output,  Prev: Colour support,  Up: balance++4.4.7 Output destination+------------------------++The balance, print, register and stats commands can write their output+to a destination other than the console.  This is controlled by the+'-o/--output-file' option.++$ hledger balance -o -     # write to stdout (the default)+$ hledger balance -o FILE  # write to FILE+++File: hledger.info,  Node: CSV output,  Prev: Output destination,  Up: balance++4.4.8 CSV output+----------------++The balance, print and register commands can write their output as CSV.+This is useful for exporting data to other applications, eg to make+charts in a spreadsheet.  This is controlled by the '-O/--output-format'+option, or by specifying a '.csv' file extension with+'-o/--output-file'.++$ hledger balance -O csv       # write CSV to stdout+$ hledger balance -o FILE.csv  # write CSV to FILE.csv+++File: hledger.info,  Node: balancesheet,  Next: balancesheetequity,  Prev: balance,  Up: COMMANDS++4.5 balancesheet+================++Show a balance sheet.  Alias: bs.++'--change'++     show balance change in each period, instead of historical ending+     balances+'--cumulative'++     show balance change accumulated across periods (in multicolumn+     reports), instead of historical ending balances+'-H --historical'++     show historical ending balance in each period (includes postings+     before report start date) (default)+'--tree'++     show accounts as a tree; amounts include subaccounts (default in+     simple reports)+'--flat'++     show accounts as a list; amounts exclude subaccounts except when+     account is depth-clipped (default in multicolumn reports)+'-A --average'++     show a row average column (in multicolumn mode)+'-T --row-total'++     show a row total column (in multicolumn mode)+'-N --no-total'++     don't show the final total row+'--drop=N'++     omit N leading account name parts (in flat mode)+'--no-elide'++     don't squash boring parent accounts (in tree mode)+'--format=LINEFORMAT'++     in single-column balance reports: use this custom line format+'--sort-amount'++     sort by amount instead of account name++   This command displays a simple balance sheet.  It currently assumes+that you have top-level accounts named 'asset' and 'liability' (plural+forms also allowed.)++$ hledger balancesheet+Balance Sheet++Assets:+                 $-1  assets+                  $1    bank:saving+                 $-2    cash+--------------------+                 $-1++Liabilities:+                  $1  liabilities:debts+--------------------+                  $1++Total:+--------------------+                   0++   With a reporting interval, multiple columns will be shown, one for+each report period.  As with multicolumn balance reports, you can alter+the report mode with '--change'/'--cumulative'/'--historical'.  Normally+balancesheet shows historical ending balances, which is what you need+for a balance sheet; note this means it ignores report begin dates.+++File: hledger.info,  Node: balancesheetequity,  Next: cashflow,  Prev: balancesheet,  Up: COMMANDS++4.6 balancesheetequity+======================++Show a balance sheet including equity.  Alias: bse.++   Other than showing the equity accounts, this command is exactly the+same as the command balancesheet.  Please refer to it for the available+options.++   This command displays a balancesheet.  It currently assumes that you+have top-level accounts named 'asset', 'liability' and 'equity' (plural+forms also allowed.)++$ hledger balancesheetequity+Balance Sheet With Equity++Assets:+                 $-2  assets+                  $1    bank:saving+                 $-3    cash+--------------------+                 $-2++Liabilities:+                  $1  liabilities:debts+--------------------+                  $1++Equity:+          $1  equity:owner+--------------------+          $1++Total:+--------------------+                   0+++File: hledger.info,  Node: cashflow,  Next: check-dates,  Prev: balancesheetequity,  Up: COMMANDS++4.7 cashflow+============++Show a cashflow statement.  Alias: cf.++'--change'++     show balance change in each period (default)+'--cumulative'++     show balance change accumulated across periods (in multicolumn+     reports), instead of changes during periods+'-H --historical'++     show historical ending balance in each period (includes postings+     before report start date), instead of changes during each period+'--tree'++     show accounts as a tree; amounts include subaccounts (default in+     simple reports)+'--flat'++     show accounts as a list; amounts exclude subaccounts except when+     account is depth-clipped (default in multicolumn reports)+'-A --average'++     show a row average column (in multicolumn mode)+'-T --row-total'++     show a row total column (in multicolumn mode)+'-N --no-total'++     don't show the final total row (in simple reports)+'--drop=N'++     omit N leading account name parts (in flat mode)+'--no-elide'++     don't squash boring parent accounts (in tree mode)+'--format=LINEFORMAT'++     in single-column balance reports: use this custom line format+'--sort-amount'++     sort by amount instead of account name++   This command displays a simple cashflow statement It shows the change+in all "cash" (ie, liquid assets) accounts for the period.  It currently+assumes that cash accounts are under a top-level account named 'asset'+and do not contain 'receivable', ':A/R' or ':fixed'.++$ hledger cashflow+Cashflow Statement++Cash flows:+                 $-1  assets+                  $1    bank:saving+                 $-2    cash+--------------------+                 $-1++Total:+--------------------+                 $-1++   With a reporting interval, multiple columns will be shown, one for+each report period.  Normally cashflow shows changes in assets per+period, though as with multicolumn balance reports you can alter the+report mode with '--change'/'--cumulative'/'--historical'.+++File: hledger.info,  Node: check-dates,  Next: check-dupes,  Prev: cashflow,  Up: COMMANDS++4.8 check-dates+===============++Check that transactions are sorted by increasing date.  With a query,+only matched transactions' dates are checked.+++File: hledger.info,  Node: check-dupes,  Next: equity,  Prev: check-dates,  Up: COMMANDS++4.9 check-dupes+===============++Report account names having the same leaf but different prefixes.  An+example: http://stefanorodighiero.net/software/hledger-dupes.html+++File: hledger.info,  Node: equity,  Next: help,  Prev: check-dupes,  Up: COMMANDS++4.10 equity+===========++Print closing/opening transactions that bring some or all account+balances to zero and back.  Can be useful for bringing account balances+across file boundaries.+++File: hledger.info,  Node: help,  Next: import,  Prev: equity,  Up: COMMANDS++4.11 help+=========++Show any of the hledger manuals.++   The 'help' command displays any of the main hledger manuals, in one+of several ways.  Run it with no argument to list the manuals, or+provide a full or partial manual name to select one.++   hledger manuals are available in several formats.  hledger help will+use the first of these display methods that it finds: info, man, $PAGER,+less, stdout (or when non-interactive, just stdout).  You can force a+particular viewer with the '--info', '--man', '--pager', '--cat' flags.++$ hledger help+Please choose a manual by typing "hledger help MANUAL" (a substring is ok).+Manuals: hledger hledger-ui hledger-web hledger-api journal csv timeclock timedot++$ hledger help h --man++hledger(1)                    hledger User Manuals                    hledger(1)++NAME+       hledger - a command-line accounting tool++SYNOPSIS+       hledger [-f FILE] COMMAND [OPTIONS] [ARGS]+       hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]+       hledger++DESCRIPTION+       hledger  is  a  cross-platform  program  for tracking money, time, or any+...+++File: hledger.info,  Node: import,  Next: incomestatement,  Prev: help,  Up: COMMANDS++4.12 import+===========++Read new transactions added to each FILE since last run, and add them to+the main journal file.++'--dry-run'++     just show the transactions to be imported++   The input files are specified as arguments - no need to write -f+before each one.  So eg to add new transactions from all CSV files to+the main journal, it's just: 'hledger import *.csv'++   New transactions are detected in the same way as print -new: by+assuming transactions are always added to the input files in increasing+date order, and by saving '.latest.FILE' state files.++   The -dry-run output is in journal format, so you can filter it, eg to+see only uncategorised transactions:++$ hledger import --dry ... | hledger -f- print unknown --ignore-assertions+++File: hledger.info,  Node: incomestatement,  Next: prices,  Prev: import,  Up: COMMANDS++4.13 incomestatement+====================++Show an income statement.  Alias: is.++'--change'++     show balance change in each period (default)+'--cumulative'++     show balance change accumulated across periods (in multicolumn+     reports), instead of changes during periods+'-H --historical'++     show historical ending balance in each period (includes postings+     before report start date), instead of changes during each period+'--tree'++     show accounts as a tree; amounts include subaccounts (default in+     simple reports)+'--flat'++     show accounts as a list; amounts exclude subaccounts except when+     account is depth-clipped (default in multicolumn reports)+'-A --average'++     show a row average column (in multicolumn mode)+'-T --row-total'++     show a row total column (in multicolumn mode)+'-N --no-total'++     don't show the final total row+'--drop=N'++     omit N leading account name parts (in flat mode)+'--no-elide'++     don't squash boring parent accounts (in tree mode)+'--format=LINEFORMAT'++     in single-column balance reports: use this custom line format+'--sort-amount'++     sort by amount instead of account name++   This command displays a simple income statement.  It currently+assumes that you have top-level accounts named 'income' (or 'revenue')+and 'expense' (plural forms also allowed.)++$ hledger incomestatement+Income Statement++Revenues:+                 $-2  income+                 $-1    gifts+                 $-1    salary+--------------------+                 $-2++Expenses:+                  $2  expenses+                  $1    food+                  $1    supplies+--------------------+                  $2++Total:+--------------------+                   0++   With a reporting interval, multiple columns will be shown, one for+each report period.  Normally incomestatement shows revenues/expenses+per period, though as with multicolumn balance reports you can alter the+report mode with '--change'/'--cumulative'/'--historical'.+++File: hledger.info,  Node: prices,  Next: print,  Prev: incomestatement,  Up: COMMANDS++4.14 prices+===========++Print all market prices from the journal.+++File: hledger.info,  Node: print,  Next: print-unique,  Prev: prices,  Up: COMMANDS++4.15 print+==========++Show transactions from the journal.  Aliases: p, txns.++'-m STR --match=STR'++     show the transaction whose description is most similar to STR, and+     is most recent+'--new'++     show only newer-dated transactions added in each file since last+     run+'-x --explicit'++     show all amounts explicitly+'-O FMT --output-format=FMT'++     select the output format.  Supported formats: txt, csv.+'-o FILE --output-file=FILE'++     write output to FILE. A file extension matching one of the above+     formats selects that format.++$ hledger print+2008/01/01 income+    assets:bank:checking            $1+    income:salary                  $-1++2008/06/01 gift+    assets:bank:checking            $1+    income:gifts                   $-1++2008/06/02 save+    assets:bank:saving              $1+    assets:bank:checking           $-1++2008/06/03 * eat & shop+    expenses:food                $1+    expenses:supplies            $1+    assets:cash                 $-2++2008/12/31 * pay off+    liabilities:debts               $1+    assets:bank:checking           $-1++   The print command displays full journal entries (transactions) from+the journal file in date order, tidily formatted.  print's output is+always a valid hledger journal.  It preserves all transaction+information, but it does not preserve directives or inter-transaction+comments++   Normally, the journal entry's explicit or implicit amount style is+preserved.  Ie when an amount is omitted in the journal, it will be+omitted in the output.  You can use the '-x'/'--explicit' flag to make+all amounts explicit, which can be useful for troubleshooting or for+making your journal more readable and robust against data entry errors.+Note, '-x' will cause postings with a multi-commodity amount (these can+arise when a multi-commodity transaction has an implicit amount) will be+split into multiple single-commodity postings, for valid journal output.++   With '-B'/'--cost', amounts with transaction prices are converted to+cost using that price.  This can be used for troubleshooting.++   With '-m'/'--match' and a STR argument, print will show at most one+transaction: the one one whose description is most similar to STR, and+is most recent.  STR should contain at least two characters.  If there+is no similar-enough match, no transaction will be shown.++   With '--new', for each FILE being read, hledger reads (and writes) a+special state file ('.latest.FILE' in the same directory), containing+the latest transaction date(s) that were seen last time FILE was read.+When this file is found, only transactions with newer dates (and new+transactions on the latest date) are printed.  This is useful for+ignoring already-seen entries in import data, such as downloaded CSV+files.  Eg:++$ hledger -f bank1.csv print --new+# shows transactions added since last print --new on this file++   This assumes that transactions added to FILE always have same or+increasing dates, and that transactions on the same day do not get+reordered.  See also the import command.++   The print command also supports output destination and CSV output.+Here's an example of print's CSV output:++$ hledger print -Ocsv+"txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting-status","posting-comment"+"1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""+"1","2008/01/01","","","","income","","income:salary","-1","$","1","","",""+"2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""+"2","2008/06/01","","","","gift","","income:gifts","-1","$","1","","",""+"3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""+"3","2008/06/02","","","","save","","assets:bank:checking","-1","$","1","","",""+"4","2008/06/03","","*","","eat & shop","","expenses:food","1","$","","1","",""+"4","2008/06/03","","*","","eat & shop","","expenses:supplies","1","$","","1","",""+"4","2008/06/03","","*","","eat & shop","","assets:cash","-2","$","2","","",""+"5","2008/12/31","","*","","pay off","","liabilities:debts","1","$","","1","",""+"5","2008/12/31","","*","","pay off","","assets:bank:checking","-1","$","1","","",""++   * There is one CSV record per posting, with the parent transaction's+     fields repeated.+   * The "txnidx" (transaction index) field shows which postings belong+     to the same transaction.  (This number might change if transactions+     are reordered within the file, files are parsed/included in a+     different order, etc.)+   * The amount is separated into "commodity" (the symbol) and "amount"+     (numeric quantity) fields.+   * The numeric amount is repeated in either the "credit" or "debit"+     column, for convenience.  (Those names are not accurate in the+     accounting sense; it just puts negative amounts under credit and+     zero or greater amounts under debit.)+++File: hledger.info,  Node: print-unique,  Next: register,  Prev: print,  Up: COMMANDS++4.16 print-unique+=================++Print transactions which do not reuse an already-seen description.+++File: hledger.info,  Node: register,  Next: register-match,  Prev: print-unique,  Up: COMMANDS++4.17 register+=============++Show postings and their running total.  Aliases: r, reg.++'--cumulative'++     show running total from report start date (default)+'-H --historical'++     show historical running total/balance (includes postings before+     report start date)+'-A --average'++     show running average of posting amounts instead of total (implies+     -empty)+'-r --related'++     show postings' siblings instead+'-w N --width=N'++     set output width (default: terminal width or COLUMNS. -wN,M sets+     description width as well)+'-O FMT --output-format=FMT'++     select the output format.  Supported formats: txt, csv.+'-o FILE --output-file=FILE'++     write output to FILE. A file extension matching one of the above+     formats selects that format.++   The register command displays postings, one per line, and their+running total.  This is typically used with a query selecting a+particular account, to see that account's activity:++$ hledger register checking+2008/01/01 income               assets:bank:checking            $1            $1+2008/06/01 gift                 assets:bank:checking            $1            $2+2008/06/02 save                 assets:bank:checking           $-1            $1+2008/12/31 pay off              assets:bank:checking           $-1             0++   The '--historical'/'-H' flag adds the balance from any undisplayed+prior postings to the running total.  This is useful when you want to+see only recent activity, with a historically accurate running balance:++$ hledger register checking -b 2008/6 --historical+2008/06/01 gift                 assets:bank:checking            $1            $2+2008/06/02 save                 assets:bank:checking           $-1            $1+2008/12/31 pay off              assets:bank:checking           $-1             0++   The '--depth' option limits the amount of sub-account detail+displayed.++   The '--average'/'-A' flag shows the running average posting amount+instead of the running total (so, the final number displayed is the+average for the whole report period).  This flag implies '--empty' (see+below).  It is affected by '--historical'.  It works best when showing+just one account and one commodity.++   The '--related'/'-r' flag shows the _other_ postings in the+transactions of the postings which would normally be shown.++   With a reporting interval, register shows summary postings, one per+interval, aggregating the postings to each account:++$ hledger register --monthly income+2008/01                 income:salary                          $-1           $-1+2008/06                 income:gifts                           $-1           $-2++   Periods with no activity, and summary postings with a zero amount,+are not shown by default; use the '--empty'/'-E' flag to see them:++$ hledger register --monthly income -E+2008/01                 income:salary                          $-1           $-1+2008/02                                                          0           $-1+2008/03                                                          0           $-1+2008/04                                                          0           $-1+2008/05                                                          0           $-1+2008/06                 income:gifts                           $-1           $-2+2008/07                                                          0           $-2+2008/08                                                          0           $-2+2008/09                                                          0           $-2+2008/10                                                          0           $-2+2008/11                                                          0           $-2+2008/12                                                          0           $-2++   Often, you'll want to see just one line per interval.  The '--depth'+option helps with this, causing subaccounts to be aggregated:++$ hledger register --monthly assets --depth 1h+2008/01                 assets                                  $1            $1+2008/06                 assets                                 $-1             0+2008/12                 assets                                 $-1           $-1++   Note when using report intervals, if you specify start/end dates+these will be adjusted outward if necessary to contain a whole number of+intervals.  This ensures that the first and last intervals are full+length and comparable to the others in the report.+* Menu:++* Custom register output::+++File: hledger.info,  Node: Custom register output,  Up: register++4.17.1 Custom register output+-----------------------------++register uses the full terminal width by default, except on windows.+You can override this by setting the 'COLUMNS' environment variable (not+a bash shell variable) or by using the '--width'/'-w' option.++   The description and account columns normally share the space equally+(about half of (width - 40) each).  You can adjust this by adding a+description width as part of -width's argument, comma-separated:+'--width W,D' .  Here's a diagram:++<--------------------------------- width (W) ---------------------------------->+date (10)  description (D)       account (W-41-D)     amount (12)   balance (12)+DDDDDDDDDD dddddddddddddddddddd  aaaaaaaaaaaaaaaaaaa  AAAAAAAAAAAA  AAAAAAAAAAAA++   and some examples:++$ hledger reg                     # use terminal width (or 80 on windows)+$ hledger reg -w 100              # use width 100+$ COLUMNS=100 hledger reg         # set with one-time environment variable+$ export COLUMNS=100; hledger reg # set till session end (or window resize)+$ hledger reg -w 100,40           # set overall width 100, description width 40+$ hledger reg -w $COLUMNS,40      # use terminal width, and set description width++   The register command also supports the '-o/--output-file' and+'-O/--output-format' options for controlling output destination and CSV+output.+++File: hledger.info,  Node: register-match,  Next: rewrite,  Prev: register,  Up: COMMANDS++4.18 register-match+===================++Print the one posting whose transaction description is closest to DESC,+in the style of the register command.  Helps ledger-autosync detect+already-seen transactions when importing.+++File: hledger.info,  Node: rewrite,  Next: stats,  Prev: register-match,  Up: COMMANDS++4.19 rewrite+============++Print all transactions, adding custom postings to the matched ones.+++File: hledger.info,  Node: stats,  Next: tags,  Prev: rewrite,  Up: COMMANDS++4.20 stats+==========++Show some journal statistics.++'-o FILE --output-file=FILE'++     write output to FILE. A file extension matching one of the above+     formats selects that format.++$ hledger stats+Main journal file        : /src/hledger/examples/sample.journal+Included journal files   : +Transactions span        : 2008-01-01 to 2009-01-01 (366 days)+Last transaction         : 2008-12-31 (2333 days ago)+Transactions             : 5 (0.0 per day)+Transactions last 30 days: 0 (0.0 per day)+Transactions last 7 days : 0 (0.0 per day)+Payees/descriptions      : 5+Accounts                 : 8 (depth 3)+Commodities              : 1 ($)++   The stats command displays summary information for the whole journal,+or a matched part of it.  With a reporting interval, it shows a report+for each report period.++   The stats command also supports '-o/--output-file' for controlling+output destination.+++File: hledger.info,  Node: tags,  Next: test,  Prev: stats,  Up: COMMANDS++4.21 tags+=========++List all the tag names used in the journal.  With a TAGREGEX argument,+only tag names matching the regular expression (case insensitive) are+shown.  With additional QUERY arguments, only transactions matching the+query are considered.+++File: hledger.info,  Node: test,  Prev: tags,  Up: COMMANDS++4.22 test+=========++Run built-in unit tests.++$ hledger test+Cases: 74  Tried: 74  Errors: 0  Failures: 0++   This command runs hledger's built-in unit tests and displays a quick+report.  With a regular expression argument, it selects only tests with+matching names.  It's mainly used in development, but it's also nice to+be able to check your hledger executable for smoke at any time.+++File: hledger.info,  Node: ADD-ON COMMANDS,  Prev: COMMANDS,  Up: Top++5 ADD-ON COMMANDS+*****************++hledger also searches for external add-on commands, and will include+these in the commands list.  These are programs or scripts in your PATH+whose name starts with 'hledger-' and ends with a recognised file+extension (currently: no extension, 'bat','com','exe',+'hs','lhs','pl','py','rb','rkt','sh').++   Add-ons can be invoked like any hledger command, but there are a few+things to be aware of.  Eg if the 'hledger-web' add-on is installed,++   * 'hledger -h web' shows hledger's help, while 'hledger web -h' shows+     hledger-web's help.++   * Flags specific to the add-on must have a preceding '--' to hide+     them from hledger.  So 'hledger web --serve --port 9000' will be+     rejected; you must use 'hledger web -- --serve --port 9000'.++   * You can always run add-ons directly if preferred: 'hledger-web+     --serve --port 9000'.++   Add-ons are a relatively easy way to add local features or experiment+with new ideas.  They can be written in any language, but haskell+scripts have a big advantage: they can use the same hledger (and+haskell) library functions that built-in commands do, for command-line+options, journal parsing, reporting, etc.++   Here are some hledger add-ons available:+* Menu:++* Official add-ons::+* Third party add-ons::+* Experimental add-ons::+++File: hledger.info,  Node: Official add-ons,  Next: Third party add-ons,  Up: ADD-ON COMMANDS++5.1 Official add-ons+====================++These are maintained and released along with hledger.+* Menu:++* api::+* ui::+* web::+++File: hledger.info,  Node: api,  Next: ui,  Up: Official add-ons++5.1.1 api+---------++hledger-api serves hledger data as a JSON web API.+++File: hledger.info,  Node: ui,  Next: web,  Prev: api,  Up: Official add-ons++5.1.2 ui+--------++hledger-ui provides an efficient curses-style interface.+++File: hledger.info,  Node: web,  Prev: ui,  Up: Official add-ons++5.1.3 web+---------++hledger-web provides a simple web interface.+++File: hledger.info,  Node: Third party add-ons,  Next: Experimental add-ons,  Prev: Official add-ons,  Up: ADD-ON COMMANDS++5.2 Third party add-ons+=======================++These are maintained separately, and usually updated shortly after a+hledger release.+* Menu:++* diff::+* iadd::+* interest::+* irr::+++File: hledger.info,  Node: diff,  Next: iadd,  Up: Third party add-ons++5.2.1 diff+----------++hledger-diff shows differences in an account's transactions between one+journal file and another.+++File: hledger.info,  Node: iadd,  Next: interest,  Prev: diff,  Up: Third party add-ons++5.2.2 iadd+----------++hledger-iadd is a curses-style, more interactive replacement for the add+command.+++File: hledger.info,  Node: interest,  Next: irr,  Prev: iadd,  Up: Third party add-ons++5.2.3 interest+--------------++hledger-interest generates interest transactions for an account+according to various schemes.+++File: hledger.info,  Node: irr,  Prev: interest,  Up: Third party add-ons++5.2.4 irr+---------++hledger-irr calculates the internal rate of return of an investment+account.+++File: hledger.info,  Node: Experimental add-ons,  Prev: Third party add-ons,  Up: ADD-ON COMMANDS++5.3 Experimental add-ons+========================++These are available in source form in the hledger repo's bin/ directory;+installing them is pretty easy.  They may be less mature and documented+than built-in commands.  Reading and tweaking these is a good way to+start making your own!+* Menu:++* autosync::+* budget::+* chart::+* check::+++File: hledger.info,  Node: autosync,  Next: budget,  Up: Experimental add-ons++5.3.1 autosync+--------------++hledger-autosync is a symbolic link for easily running ledger-autosync,+if installed.  ledger-autosync does deduplicating conversion of OFX data+and some CSV formats, and can also download the data if your bank offers+OFX Direct Connect.+++File: hledger.info,  Node: budget,  Next: chart,  Prev: autosync,  Up: Experimental add-ons++5.3.2 budget+------------++hledger-budget.hs adds more budget-tracking features to hledger.+++File: hledger.info,  Node: chart,  Next: check,  Prev: budget,  Up: Experimental add-ons++5.3.3 chart+-----------++hledger-chart.hs is an old pie chart generator, in need of some love.+++File: hledger.info,  Node: check,  Prev: chart,  Up: Experimental add-ons++5.3.4 check+-----------++hledger-check.hs checks more powerful account balance assertions.+++Tag Table:+Node: Top68+Node: EXAMPLES1882+Ref: #examples1982+Node: OPTIONS3628+Ref: #options3730+Node: General options4054+Ref: #general-options4179+Node: Command options6730+Ref: #command-options6881+Node: Command arguments7279+Ref: #command-arguments7433+Node: Argument files7554+Ref: #argument-files7705+Node: Special characters7971+Ref: #special-characters8124+Node: Input files9543+Ref: #input-files9679+Node: Smart dates11649+Ref: #smart-dates11790+Node: Report start & end date12769+Ref: #report-start-end-date12939+Node: Report intervals14004+Ref: #report-intervals14167+Node: Period expressions14568+Ref: #period-expressions14728+Node: Depth limiting18685+Ref: #depth-limiting18829+Node: Pivoting19171+Ref: #pivoting19289+Node: Cost20965+Ref: #cost21073+Node: Market value21191+Ref: #market-value21326+Node: Combining -B and -V22509+Ref: #combining--b-and--v22673+Node: Regular expressions22820+Ref: #regular-expressions22963+Node: QUERIES24324+Ref: #queries24426+Node: COMMANDS28393+Ref: #commands28505+Node: accounts29488+Ref: #accounts29586+Node: activity30579+Ref: #activity30689+Node: add31049+Ref: #add31148+Node: balance33809+Ref: #balance33920+Node: Flat mode37294+Ref: #flat-mode37419+Node: Depth limited balance reports37839+Ref: #depth-limited-balance-reports38040+Node: Multicolumn balance reports38460+Ref: #multicolumn-balance-reports38655+Node: Budgets43344+Ref: #budgets43491+Node: Custom balance output47322+Ref: #custom-balance-output47484+Node: Colour support49577+Ref: #colour-support49736+Node: Output destination49909+Ref: #output-destination50065+Node: CSV output50335+Ref: #csv-output50452+Node: balancesheet50849+Ref: #balancesheet50985+Node: balancesheetequity52953+Ref: #balancesheetequity53102+Node: cashflow53891+Ref: #cashflow54019+Node: check-dates55931+Ref: #check-dates56058+Node: check-dupes56175+Ref: #check-dupes56300+Node: equity56437+Ref: #equity56547+Node: help56710+Ref: #help56811+Node: import57885+Ref: #import57999+Node: incomestatement58729+Ref: #incomestatement58863+Node: prices60816+Ref: #prices60931+Node: print60974+Ref: #print61084+Node: print-unique65969+Ref: #print-unique66095+Node: register66163+Ref: #register66290+Node: Custom register output70791+Ref: #custom-register-output70920+Node: register-match72217+Ref: #register-match72351+Node: rewrite72534+Ref: #rewrite72651+Node: stats72720+Ref: #stats72823+Node: tags73705+Ref: #tags73803+Node: test74039+Ref: #test74123+Node: ADD-ON COMMANDS74491+Ref: #add-on-commands74601+Node: Official add-ons75888+Ref: #official-add-ons76028+Node: api76115+Ref: #api76204+Node: ui76256+Ref: #ui76355+Node: web76413+Ref: #web76502+Node: Third party add-ons76548+Ref: #third-party-add-ons76723+Node: diff76858+Ref: #diff76955+Node: iadd77054+Ref: #iadd77168+Node: interest77251+Ref: #interest77372+Node: irr77467+Ref: #irr77565+Node: Experimental add-ons77643+Ref: #experimental-add-ons77795+Node: autosync78086+Ref: #autosync78198+Node: budget78437+Ref: #budget78559+Node: chart78625+Ref: #chart78742+Node: check78813+Ref: #check78915++End Tag Table
+ hledger.txt view
@@ -0,0 +1,2138 @@++hledger(1)                   hledger User Manuals                   hledger(1)++++NAME+       hledger - a command-line accounting tool++SYNOPSIS+       hledger [-f FILE] COMMAND [OPTIONS] [ARGS]+       hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]+       hledger++DESCRIPTION+       hledger  is  a  cross-platform program for tracking money, time, or any+       other commodity, using double-entry accounting and a  simple,  editable+       file  format.   hledger  is  inspired  by  and  largely compatible with+       ledger(1).+       Tested on unix, mac, windows, hledger aims to be a reliable,  practical+       tool for daily use.++       This is hledger's command-line interface (there are also curses and web+       interfaces).  Its basic function is to read a plain text file  describ-+       ing financial transactions (in accounting terms, a general journal) and+       print useful reports  on  standard  output,  or  export  them  as  CSV.+       hledger can also read some other file formats such as CSV files, trans-+       lating them to  journal  format.   Additionally,  hledger  lists  other+       hledger-*  executables found in the user's $PATH and can invoke them as+       subcommands.++       hledger reads data from one or more files  in  hledger  journal,  time-+       clock,  timedot,  or  CSV format specified with -f, or $LEDGER_FILE, or+       $HOME/.hledger.journal          (on          windows,           perhaps+       C:/Users/USER/.hledger.journal).  If using $LEDGER_FILE, note this must+       be a real environment variable, not a shell variable.  You can  specify+       standard input with -f-.++       Transactions  are  dated movements of money between two (or more) named+       accounts, and are recorded with journal entries like this:++              2015/10/16 bought food+               expenses:food          $10+               assets:cash++       For more about this format, see hledger_journal(5).++       Most users use a text editor to edit the journal, usually with an  edi-+       tor mode such as ledger-mode for added convenience.  hledger's interac-+       tive add command is another way to record  new  transactions.   hledger+       never changes existing transactions.++       To  get  started,  you  can  either save some entries like the above in+       ~/.hledger.journal, or run hledger add and follow  the  prompts.   Then+       try  some  commands like hledger print or hledger balance.  Run hledger+       with no arguments for a list of commands.++EXAMPLES+       Two simple transactions in hledger journal format:++              2015/9/30 gift received+                assets:cash   $20+                income:gifts++              2015/10/16 farmers market+                expenses:food    $10+                assets:cash++       Some basic reports:++              $ hledger print+              2015/09/30 gift received+                  assets:cash            $20+                  income:gifts          $-20++              2015/10/16 farmers market+                  expenses:food           $10+                  assets:cash            $-10++              $ hledger accounts --tree+              assets+                cash+              expenses+                food+              income+                gifts++              $ hledger balance+                               $10  assets:cash+                               $10  expenses:food+                              $-20  income:gifts+              --------------------+                                 0++              $ hledger register cash+              2015/09/30 gift received   assets:cash               $20           $20+              2015/10/16 farmers market  assets:cash              $-10           $10++       More commands:++              $ hledger                                 # show available commands+              $ hledger add                             # add more transactions to the journal file+              $ hledger balance                         # all accounts with aggregated balances+              $ hledger balance --help                  # show detailed help for balance command+              $ hledger balance --depth 1               # only top-level accounts+              $ hledger register                        # show account postings, with running total+              $ hledger reg income                      # show postings to/from income accounts+              $ hledger reg 'assets:some bank:checking' # show postings to/from this checking account+              $ hledger print desc:shop                 # show transactions with shop in the description+              $ hledger activity -W                     # show transaction counts per week as a bar chart++OPTIONS+   General options+       To see general usage help, including general  options  which  are  sup-+       ported by most hledger commands, run hledger -h.++       General help options:++       -h --help+              show general usage (or after COMMAND, command usage)++       --version+              show version++       --debug[=N]+              show debug output (levels 1-9, default: 1)++       General input options:++       -f FILE --file=FILE+              use  a  different  input  file.   For  stdin,  use  -  (default:+              $LEDGER_FILE or $HOME/.hledger.journal)++       --rules-file=RULESFILE+              Conversion  rules  file  to  use  when  reading  CSV   (default:+              FILE.rules)++       --alias=OLD=NEW+              rename accounts named OLD to NEW++       --anon anonymize accounts and payees++       --pivot FIELDNAME+              use some other field or tag for the account name++       -I --ignore-assertions+              ignore any failing balance assertions++       General reporting options:++       -b --begin=DATE+              include postings/txns on or after this date++       -e --end=DATE+              include postings/txns before this date++       -D --daily+              multiperiod/multicolumn report by day++       -W --weekly+              multiperiod/multicolumn report by week++       -M --monthly+              multiperiod/multicolumn report by month++       -Q --quarterly+              multiperiod/multicolumn report by quarter++       -Y --yearly+              multiperiod/multicolumn report by year++       -p --period=PERIODEXP+              set  start date, end date, and/or reporting interval all at once+              using period expressions syntax (overrides the flags above)++       --date2+              match the secondary date instead (see  command  help  for  other+              effects)++       -U --unmarked+              include only unmarked postings/txns (can combine with -P or -C)++       -P --pending+              include only pending postings/txns++       -C --cleared+              include only cleared postings/txns++       -R --real+              include only non-virtual postings++       -NUM --depth=NUM+              hide/aggregate accounts or postings more than NUM levels deep++       -E --empty+              show items with zero amount, normally hidden++       -B --cost+              convert  amounts  to  their  cost at transaction time (using the+              transaction price, if any)++       -V --value+              convert amounts to their market value on  the  report  end  date+              (using the most recent applicable market price, if any)++       --auto apply automated posting rules to modify transactions.++       --forecast+              apply  periodic  transaction  rules  to generate future transac-+              tions, to 6 months from now or report end date.++       When a reporting option appears more than once in the command line, the+       last one takes precedence.++       Some reporting options can also be written as query arguments.++   Command options+       To  see  options  for  a particular command, including command-specific+       options, run: hledger COMMAND -h.++       Command-specific options must be written after the  command  name,  eg:+       hledger print -x.++       Additionally,  if  the  command  is  an  addon, you may need to put its+       options after a double-hyphen, eg: hledger ui -- --watch.  Or, you  can+       run the addon executable directly: hledger-ui --watch.++   Command arguments+       Most  hledger  commands  accept arguments after the command name, which+       are often a query, filtering the data in some way.++   Argument files+       You can save a set of command line options/arguments in a file, one per+       line,  and  then reuse them by writing @FILENAME in a command line.  To+       prevent this expansion of @-arguments, precede them with a -- argument.+       For more, see Save frequently used options.++   Special characters+       Option  and argument values which contain problematic characters should+       be escaped with double quotes, backslashes, or  (best)  single  quotes.+       Problematic characters means spaces, and also characters which are sig-+       nificant to your command shell, such  as  less-than/greater-than.   Eg:+       hledger register -p 'last year' "accounts receivable (receiv-+       able|payable)" amt:\>100.++       Characters which are significant both  to  the  shell  and  in  regular+       expressions  sometimes need to be double-escaped.  These include paren-+       theses, the pipe symbol and the dollar sign.  Eg, to match  the  dollar+       symbol,  bash users should do: hledger balance cur:'\$' or hledger bal-+       ance cur:\\$.++       When hledger is invoking an addon executable (like hledger-ui), options+       and arguments get de-escaped once more, so you might need triple-escap-+       ing.  Eg: hledger ui cur:'\\$' or hledger ui cur:\\\\$ in  bash.   (The+       number  of  backslashes  in  fish  shell is left as an exercise for the+       reader.)++       Inside a file used for argument expansion, one less level  of  escaping+       is  enough.   (And  in  this case, backslashes seem to work better than+       quotes.  Eg: cur:\$).++       If in doubt, keep things simple:++       o run add-on executables directly++       o write options after the command++       o enclose problematic args in single quotes++       o if needed, also add a backslash to escape regexp metacharacters++       If you're really stumped, add --debug=2 to troubleshoot.++   Input files+       hledger reads transactions from a data file (and the add command writes+       to it).  By default this file is $HOME/.hledger.journal (or on Windows,+       something like C:/Users/USER/.hledger.journal).  You can override  this+       with the $LEDGER_FILE environment variable:++              $ setenv LEDGER_FILE ~/finance/2016.journal+              $ hledger stats++       or with the -f/--file option:++              $ hledger -f /some/file stats++       The file name - (hyphen) means standard input:++              $ cat some.journal | hledger -f-++       Usually  the  data file is in hledger's journal format, but it can also+       be one of several other formats, listed  below.   hledger  detects  the+       format  automatically  based  on  the file extension, or if that is not+       recognised, by trying each built-in "reader" in turn:+++       Reader:      Reads:                               Used for file extensions:+       -----------------------------------------------------------------------------+       journal      hledger's  journal  format,  also    .journal    .j    .hledger+                    some Ledger journals                 .ledger+       timeclock    timeclock  files  (precise   time    .timeclock+                    logging)+       timedot      timedot  files  (approximate time    .timedot+                    logging)+       csv          comma-separated   values    (data    .csv+                    interchange)++       If  needed  (eg  to  ensure  correct error messages when a file has the+       "wrong" extension), you can force a specific reader/format by  prepend-+       ing it to the file path with a colon.  Examples:++              $ hledger -f csv:/some/csv-file.dat stats+              $ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:-++       You can also specify multiple -f options, to read multiple files as one+       big journal.  There are some limitations with this:++       o directives in one file will not affect the other files++       o balance assertions will not see any account  balances  from  previous+         files++       If you need those, either use the include directive, or concatenate the+       files, eg: cat a.journal b.journal | hledger -f- CMD.++   Smart dates+       hledger's user interfaces accept a flexible "smart date" syntax (unlike+       dates  in the journal file).  Smart dates allow some english words, can+       be relative to today's date, and can have less-significant  date  parts+       omitted (defaulting to 1).++       Examples:+++       2009/1/1,      2009/01/01,   simple dates, several sep-+       2009-1-1, 2009.1.1           arators allowed+       2009/1, 2009                 same  as above - a missing+                                    day or month defaults to 1+       1/1,     january,     jan,   relative  dates,   meaning+       this year                    january  1  of the current+                                    year+       next year                    january 1 of next year+       this month                   the  1st  of  the  current+                                    month+       this week                    the most recent monday+       last week                    the  monday  of  the  week+                                    before this one+       lastweek                     spaces are optional+       today, yesterday, tomorrow++   Report start & end date+       Most  hledger  reports  show  the  full span of time represented by the+       journal data, by default.  So, the effective report start and end dates+       will  be  the earliest and latest transaction or posting dates found in+       the journal.++       Often you will want to see a shorter time span,  such  as  the  current+       month.   You  can  specify  a  start  and/or end date using -b/--begin,+       -e/--end, -p/--period or a date: query (described below).  All of these+       accept  the smart date syntax.  One important thing to be aware of when+       specifying end dates: as in Ledger, end dates  are  exclusive,  so  you+       need to write the date after the last day you want to include.++       Examples:+++       -b 2016/3/17      begin on St. Patrick's day+                         2016+       -e 12/1           end at the start of decem-+                         ber  1st  of  the  current+                         year (11/30  will  be  the+                         last date included)+       -b thismonth      all   transactions  on  or+                         after the 1st of the  cur-+                         rent month+       -p thismonth      all  transactions  in  the+                         current month+       date:2016/3/17-   the   above   written   as+                         queries instead+       date:-12/1+       date:thismonth-+       date:thismonth++   Report intervals+       A report interval can be specified so that commands like register, bal-+       ance and activity will divide their reports into  multiple  subperiods.+       The   basic   intervals   can  be  selected  with  one  of  -D/--daily,+       -W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly.   More  com-+       plex  intervals  may  be  specified  with  a period expression.  Report+       intervals can not be specified with a query, currently.++   Period expressions+       The -p/--period option accepts period expressions, a shorthand  way  of+       expressing  a start date, end date, and/or report interval all at once.++       Here's a basic period expression specifying the first quarter of  2009.+       Note,  hledger  always treats start dates as inclusive and end dates as+       exclusive:++       -p "from 2009/1/1 to 2009/4/1"++       Keywords like "from" and "to" are optional, and so are the  spaces,  as+       long  as you don't run two dates together.  "to" can also be written as+       "-".  These are equivalent to the above:+++       -p "2009/1/1 2009/4/1"+       -p2009/1/1to2009/4/1+       -p2009/1/1-2009/4/1++       Dates are smart dates, so if the current year is 2009,  the  above  can+       also be written as:+++       -p "1/1 4/1"+       -p "january-apr"+       -p "this year to 4/1"++       If you specify only one date, the missing start or end date will be the+       earliest or latest transaction in your journal:+++       -p "from 2009/1/1"   everything  after  january+                            1, 2009+       -p "from 2009/1"     the same+       -p "from 2009"       the same+       -p "to 2009"         everything  before january+                            1, 2009++       A single date with no "from" or "to" defines both  the  start  and  end+       date like so:+++       -p "2009"       the  year 2009; equivalent+                       to "2009/1/1 to 2010/1/1"+       -p "2009/1"     the month of jan;  equiva-+                       lent   to   "2009/1/1   to+                       2009/2/1"+       -p "2009/1/1"   just that day;  equivalent+                       to "2009/1/1 to 2009/1/2"++       The  argument  of  -p  can  also  begin  with, or be, a report interval+       expression.  The basic report intervals  are  daily,  weekly,  monthly,+       quarterly, or yearly, which have the same effect as the -D,-W,-M,-Q, or+       -Y flags.  Between report interval and start/end dates  (if  any),  the+       word in is optional.  Examples:+++       -p "weekly from 2009/1/1 to 2009/4/1"+       -p "monthly in 2008"+       -p "quarterly"++       Note  that  weekly, monthly, quarterly and yearly intervals will always+       start on the first day on week, month, quarter or year accordingly, and+       will  end  on  the  last  day of same period, even if associated period+       expression specifies different explicit start and end date.++       For example:+++       -p "weekly from 2009/1/1 to 2009/4/1" -+       starts  on 2008/12/29, closest preceed-+       ing Monday+       -p "monthly in 2008/11/25" - starts  on+       2018/11/01++++       -p "quar-+       terly from 2009-05-05 to 2009-06-01"  -+       starts    on    2009/04/01,   ends   on+       2009/06/30, which are  first  and  last+       days of Q2 2009+       -p "yearly from 2009-12-29" - starts on+       2009/01/01, first day of 2009++       The  following  more  complex  report  intervals  are  also  supported:+       biweekly,         bimonthly,         every day|week|month|quarter|year,+       every N days|weeks|months|quarters|years.++       All of these will start on the first day of the  requested  period  and+       end on the last one, as described above.++       Examples:+++       -p "bimonthly from 2008" - periods will+       have    boundaries    on    2008/01/01,+       2008/03/01, ...+       -p "every 2 weeks"  - starts on closest+       preceeding Monday+       -p "every 5 month from 2009/03" - peri-+       ods will have boundaries on 2009/03/01,+       2009/08/01, ...++       If you want intervals that start on arbitrary day of your choosing  and+       span a week, month or year, you need to use any of the following:++       every Nth day of week,    every <weekday>,    every Nth day [of month],+       every Nth weekday [of month],                    every MM/DD [of year],+       every Nth MMM [of year], every MMM Nth [of year].++       Examples:+++       -p "every 2nd day of week"   -  periods+       will go from Tue to Tue+       -p "every Tue" - same+       -p "every 15th day" - period boundaries+       will be on 15th of each month+       -p "every 2nd Monday"  -  period bound-+       aries will be on second Monday of  each+       month+       -p "every 11/05"  - yearly periods with+       boundaries on 5th of Nov+       -p "every 5th Nov" - same+       -p "every Nov 5th" - same++       Show historical balances at end of 15th each month (N is exclusive  end+       date):++       hledger balance -H -p "every 16th day"++       Group  postings  from  start  of wednesday to end of next tuesday (N is+       start date and exclusive end date):++       hledger register checking -p "every 3rd day of week"++   Depth limiting+       With the --depth N option (short form: -N), commands like account, bal-+       ance  and register will show only the uppermost accounts in the account+       tree, down to level N.  Use this when you  want  a  summary  with  less+       detail.   This  flag has the same effect as a depth: query argument (so+       -2, --depth=2 or depth:2 are basically equivalent).++   Pivoting+       Normally hledger sums amounts, and organizes them in a hierarchy, based+       on  account  name.  The --pivot FIELD option causes it to sum and orga-+       nize hierarchy based on the value of some other field  instead.   FIELD+       can be: code, description, payee, note, or the full name (case insensi-+       tive) of any tag.  As with account names, values containing colon:sepa-+       rated:parts will be displayed hierarchically in reports.++       --pivot  is  a  general  option affecting all reports; you can think of+       hledger transforming the journal before any other processing, replacing+       every  posting's  account name with the value of the specified field on+       that posting, inheriting it from the transaction or using a blank value+       if it's not present.++       An example:++              2016/02/16 Member Fee Payment+                  assets:bank account                    2 EUR+                  income:member fees                    -2 EUR  ; member: John Doe++       Normal balance report showing account names:++              $ hledger balance+                             2 EUR  assets:bank account+                            -2 EUR  income:member fees+              --------------------+                                 0++       Pivoted balance report, using member: tag values instead:++              $ hledger balance --pivot member+                             2 EUR+                            -2 EUR  John Doe+              --------------------+                                 0++       One  way  to  show  only  amounts  with a member: value (using a query,+       described below):++              $ hledger balance --pivot member tag:member=.+                            -2 EUR  John Doe+              --------------------+                            -2 EUR++       Another way (the acct:  query  matches  against  the  pivoted  "account+       name"):++              $ hledger balance --pivot member acct:.+                            -2 EUR  John Doe+              --------------------+                            -2 EUR++   Cost+       The  -B/--cost flag converts amounts to their cost at transaction time,+       if they have a transaction price specified.++   Market value+       The -V/--value flag converts reported amounts to their  current  market+       value.   Specifically,  when  there is a market price (P directive) for+       the amount's commodity, dated on or before today's date (or the  report+       end  date  if  specified),  the amount will be converted to the price's+       commodity.++       When there are multiple applicable P directives, -V  chooses  the  most+       recent one, or in case of equal dates, the last-parsed one.++       For example:++              # one euro is worth this many dollars from nov 1+              P 2016/11/01  $1.10++              # purchase some euros on nov 3+              2016/11/3+                  assets:euros        100+                  assets:checking++              # the euro is worth fewer dollars by dec 21+              P 2016/12/21  $1.03++       How many euros do I have ?++              $ hledger -f t.j bal euros+                              100  assets:euros++       What are they worth on nov 3 ?  (no report end date specified, defaults+       to the last date in the journal)++              $ hledger -f t.j bal euros -V+                           $110.00  assets:euros++       What are they worth on dec 21 ?++              $ hledger -f t.j bal euros -V -e 2016/12/21+                           $103.00  assets:euros++       Currently, hledger's -V only uses market prices recorded with P  direc-+       tives, not transaction prices (unlike Ledger).++   Combining -B and -V+       Using  -B/-cost  and  -V/-value  together is currently allowed, but the+       results are probably not meaningful.  Let us know if you find a use for+       this.++   Regular expressions+       hledger uses regular expressions in a number of places:++       o query  terms, on the command line and in the hledger-web search form:+         REGEX, desc:REGEX, cur:REGEX, tag:...=REGEX++       o CSV rules conditional blocks: if REGEX ...++       o account alias directives  and  options:  alias /REGEX/ = REPLACEMENT,+         --alias /REGEX/=REPLACEMENT++       hledger's  regular  expressions  come  from the regex-tdfa library.  In+       general they:++       o are case insensitive++       o are infix matching (do not need  to  match  the  entire  thing  being+         matched)++       o are POSIX extended regular expressions++       o also support GNU word boundaries (\<, \>, \b, \B)++       o and  parenthesised  capturing  groups  and  numeric backreferences in+         replacement strings++       o do not support mode modifiers like (?s)++       Some things to note:++       o In the alias directive and --alias option, regular  expressions  must+         be  enclosed  in  forward  slashes  (/REGEX/).  Elsewhere in hledger,+         these are not required.++       o In queries, to match a regular expression metacharacter like $  as  a+         literal  character,  prepend  a  backslash.  Eg to search for amounts+         with the dollar sign in hledger-web, write cur:\$.++       o On the command line, some metacharacters like $ have a special  mean-+         ing to the shell and so must be escaped at least once more.  See Spe-+         cial characters.++QUERIES+       One of hledger's strengths is being able to quickly report  on  precise+       subsets  of  your data.  Most commands accept an optional query expres-+       sion, written as arguments after the command name, to filter  the  data+       by  date,  account  name or other criteria.  The syntax is similar to a+       web search: one or more space-separated search terms, quotes to enclose+       whitespace,  prefixes to match specific fields, a not: prefix to negate+       the match.++       We do not yet support arbitrary boolean combinations of  search  terms;+       instead  most  commands show transactions/postings/accounts which match+       (or negatively match):++       o any of the description terms AND++       o any of the account terms AND++       o any of the status terms AND++       o all the other terms.++       The print command instead shows transactions which:++       o match any of the description terms AND++       o have any postings matching any of the positive account terms AND++       o have no postings matching any of the negative account terms AND++       o match all the other terms.++       The following kinds of search terms can be used.   Remember  these  can+       also be prefixed with not:, eg to exclude a particular subaccount.++       REGEX  match  account  names by this regular expression.  (No prefix is+              equivalent to acct:).++       acct:REGEX+              same as above++       amt:N, amt:<N, amt:<=N, amt:>N, amt:>=N+              match postings with a single-commodity amount that is equal  to,+              less  than, or greater than N.  (Multi-commodity amounts are not+              tested, and will always match.) The comparison has two modes: if+              N is preceded by a + or - sign (or is 0), the two signed numbers+              are compared.  Otherwise, the absolute magnitudes are  compared,+              ignoring sign.++       code:REGEX+              match by transaction code (eg check number)++       cur:REGEX+              match  postings or transactions including any amounts whose cur-+              rency/commodity symbol is fully matched by REGEX.  (For  a  par-+              tial match, use .*REGEX.*).  Note, to match characters which are+              regex-significant, like the dollar sign ($), you need to prepend+              \.   And  when  using  the command line you need to add one more+              level  of  quoting  to  hide  it  from  the  shell,  so  eg  do:+              hledger print cur:'\$' or hledger print cur:\\$.++       desc:REGEX+              match transaction descriptions.++       date:PERIODEXPR+              match dates within the specified period.  PERIODEXPR is a period+              expression (with  no  report  interval).   Examples:  date:2016,+              date:thismonth,   date:2000/2/1-2/15,  date:lastweek-.   If  the+              --date2 command line flag is  present,  this  matches  secondary+              dates instead.++       date2:PERIODEXPR+              match secondary dates within the specified period.++       depth:N+              match  (or  display,  depending on command) accounts at or above+              this depth++       note:REGEX+              match transaction notes (part of  description  right  of  |,  or+              whole description when there's no |)++       payee:REGEX+              match transaction payee/payer names (part of description left of+              |, or whole description when there's no |)++       real:, real:0+              match real or virtual postings respectively++       status:, status:!, status:*+              match unmarked, pending, or cleared transactions respectively++       tag:REGEX[=REGEX]+              match by tag name, and optionally also by  tag  value.   Note  a+              tag:  query  is  considered to match a transaction if it matches+              any of the postings.  Also remember that  postings  inherit  the+              tags of their parent transaction.++       The following special search term is used automatically in hledger-web,+       only:++       inacct:ACCTNAME+              tells hledger-web to show  the  transaction  register  for  this+              account.  Can be filtered further with acct etc.++       Some of these can also be expressed as command-line options (eg depth:2+       is equivalent to --depth 2).  Generally you can mix options  and  query+       arguments,  and the resulting query will be their intersection (perhaps+       excluding the -p/--period option).++COMMANDS+       hledger provides a number of subcommands;  hledger  with  no  arguments+       shows a list.++       If you install additional hledger-* packages, or if you put programs or+       scripts named hledger-NAME in your PATH, these will also be  listed  as+       subcommands.++       Run   a   subcommand   by  writing  its  name  as  first  argument  (eg+       hledger incomestatement).  You can also write one of the standard short+       aliases  displayed  in  parentheses in the command list (hledger b), or+       any any unambiguous prefix of a command name (hledger inc).++       Here are all the builtin commands  in  alphabetical  order.   See  also+       hledger  for  a  more  organised  command  list, and hledger CMD -h for+       detailed command help.++   accounts+       Show account names.  Alias: a.++       --tree show short account names, as a tree++       --flat show full account names, as a list (default)++       --drop=N+              in flat mode: omit N leading account name parts++       This command lists all account names that  are  in  use  (ie,  all  the+       accounts  which  have  at least one transaction posting to them).  With+       query arguments, only matched account names are shown.++       It shows a flat list by default.  With --tree, it uses  indentation  to+       show the account hierarchy.++       In  flat  mode  you can add --drop N to omit the first few account name+       components.++       Examples:++              $ hledger accounts --tree+              assets+                bank+                  checking+                  saving+                cash+              expenses+                food+                supplies+              income+                gifts+                salary+              liabilities+                debts++              $ hledger accounts --drop 1+              bank:checking+              bank:saving+              cash+              food+              supplies+              gifts+              salary+              debts++              $ hledger accounts+              assets:bank:checking+              assets:bank:saving+              assets:cash+              expenses:food+              expenses:supplies+              income:gifts+              income:salary+              liabilities:debts++   activity+       Show an ascii barchart of posting counts per interval.++       The activity command displays an ascii  histogram  showing  transaction+       counts  by  day, week, month or other reporting interval (by day is the+       default).  With query arguments, it counts only matched transactions.++              $ hledger activity --quarterly+              2008-01-01 **+              2008-04-01 *******+              2008-07-01+              2008-10-01 **++   add+       Prompt for transactions and add them to the journal.++       --no-new-accounts+              don't allow creating new  accounts;  helps  prevent  typos  when+              entering account names++       Many  hledger users edit their journals directly with a text editor, or+       generate them from CSV.  For more interactive data entry, there is  the+       add  command, which prompts interactively on the console for new trans-+       actions, and appends them to the journal file (if  there  are  multiple+       -f FILE options, the first file is used.) Existing transactions are not+       changed.  This is the only hledger command that writes to  the  journal+       file.++       To use it, just run hledger add and follow the prompts.  You can add as+       many transactions as you like; when you are finished, enter . or  press+       control-d or control-c to exit.++       Features:++       o add  tries  to provide useful defaults, using the most similar recent+         transaction (by description) as a template.++       o You can also set the initial defaults with command line arguments.++       o Readline-style edit keys can be used during data entry.++       o The tab key will auto-complete whenever possible - accounts, descrip-+         tions,  dates  (yesterday,  today,  tomorrow).   If the input area is+         empty, it will insert the default value.++       o If the journal defines a default commodity, it will be added  to  any+         bare numbers entered.++       o A parenthesised transaction code may be entered following a date.++       o Comments and tags may be entered following a description or amount.++       o If  you make a mistake, enter < at any prompt to restart the transac-+         tion.++       o Input prompts are displayed in a different colour when  the  terminal+         supports it.++       Example (see the tutorial for a detailed explanation):++              $ hledger add+              Adding transactions to journal file /src/hledger/examples/sample.journal+              Any command line arguments will be used as defaults.+              Use tab key to complete, readline keys to edit, enter to accept defaults.+              An optional (CODE) may follow transaction dates.+              An optional ; COMMENT may follow descriptions or amounts.+              If you make a mistake, enter < at any prompt to restart the transaction.+              To end a transaction, enter . when prompted.+              To quit, enter . at a date prompt or press control-d or control-c.+              Date [2015/05/22]:+              Description: supermarket+              Account 1: expenses:food+              Amount  1: $10+              Account 2: assets:checking+              Amount  2 [$-10.0]:+              Account 3 (or . or enter to finish this transaction): .+              2015/05/22 supermarket+                  expenses:food             $10+                  assets:checking        $-10.0++              Save this transaction to the journal ? [y]:+              Saved.+              Starting the next transaction (. or ctrl-D/ctrl-C to quit)+              Date [2015/05/22]: <CTRL-D> $++   balance+       Show accounts and their balances.  Aliases: b, bal.++       --change+              show balance change in each period (default)++       --cumulative+              show  balance  change accumulated across periods (in multicolumn+              reports)++       -H --historical+              show historical ending balance in each period (includes postings+              before report start date)++       --tree show accounts as a tree; amounts include subaccounts (default in+              simple reports)++       --flat show accounts as a list; amounts exclude subaccounts except when+              account is depth-clipped (default in multicolumn reports)++       -A --average+              show a row average column (in multicolumn mode)++       -T --row-total+              show a row total column (in multicolumn mode)++       -N --no-total+              don't show the final total row++       --drop=N+              omit N leading account name parts (in flat mode)++       --no-elide+              don't squash boring parent accounts (in tree mode)++       --format=LINEFORMAT+              in single-column balance reports: use this custom line format++       -O FMT --output-format=FMT+              select the output format.  Supported formats: txt, csv.++       -o FILE --output-file=FILE+              write  output  to  FILE.   A  file extension matching one of the+              above formats selects that format.++       --pretty-tables+              use unicode to display prettier tables.++       --sort-amount+              sort by amount instead of account name  (in  flat  mode).   With+              multiple  columns,  sorts by the row total, or by row average if+              that is displayed.++       --budget+              show performance compared to budget goals  defined  by  periodic+              transactions++       --show-unbudgeted+              with -budget, show unbudgeted accounts also++       The  balance  command  displays accounts and balances.  It is hledger's+       most featureful and versatile command.++              $ hledger balance+                               $-1  assets+                                $1    bank:saving+                               $-2    cash+                                $2  expenses+                                $1    food+                                $1    supplies+                               $-2  income+                               $-1    gifts+                               $-1    salary+                                $1  liabilities:debts+              --------------------+                                 0++       More precisely, the balance command shows the change to each  account's+       balance caused by all (matched) postings.  In the common case where you+       do not filter by date and your journal sets the  correct  opening  bal-+       ances, this is the same as the account's ending balance.++       By  default,  accounts  are  displayed hierarchically, with subaccounts+       indented below their parent.  "Boring" accounts, which contain a single+       interesting subaccount and no balance of their own, are elided into the+       following line for more compact output.   (Use  --no-elide  to  prevent+       this.   Eliding  of boring accounts is not yet supported in multicolumn+       reports.)++       Each account's balance is the "inclusive" balance  -  it  includes  the+       balances of any subaccounts.++       Accounts  which  have  zero  balance  (and no non-zero subaccounts) are+       omitted.  Use -E/--empty to show them.++       A final total is displayed by default; use  -N/--no-total  to  suppress+       it:++              $ hledger balance -p 2008/6 expenses --no-total+                                $2  expenses+                                $1    food+                                $1    supplies++   Flat mode+       To see a flat list of full account names instead of the default hierar-+       chical  display,  use  --flat.   In   this   mode,   accounts   (unless+       depth-clipped) show their "exclusive" balance, excluding any subaccount+       balances.  In this mode, you can also use --drop N to  omit  the  first+       few account name components.++              $ hledger balance -p 2008/6 expenses -N --flat --drop 1+                                $1  food+                                $1  supplies++   Depth limited balance reports+       With  --depth N,  balance  shows  accounts only to the specified depth.+       This is very useful to show  a  complex  charts  of  accounts  in  less+       detail.   In  flat  mode,  balances from accounts below the depth limit+       will be shown as part of a parent account at the depth limit.++              $ hledger balance -N --depth 1+                               $-1  assets+                                $2  expenses+                               $-2  income+                                $1  liabilities++   Multicolumn balance reports+       With a reporting interval, multiple balance columns will be shown,  one+       for  each report period.  There are three types of multi-column balance+       report, showing different information:++       1. By default: each column shows the sum of postings in that period, ie+          the  account's  change of balance in that period.  This is useful eg+          for a monthly income statement:++                  $ hledger balance --quarterly income expenses -E+                  Balance changes in 2008:++                                     ||  2008q1  2008q2  2008q3  2008q4+                  ===================++=================================+                   expenses:food     ||       0      $1       0       0+                   expenses:supplies ||       0      $1       0       0+                   income:gifts      ||       0     $-1       0       0+                   income:salary     ||     $-1       0       0       0+                  -------------------++---------------------------------+                                     ||     $-1      $1       0       0++       2. With --cumulative: each column shows the  ending  balance  for  that+          period,  accumulating the changes across periods, starting from 0 at+          the report start date:++                  $ hledger balance --quarterly income expenses -E --cumulative+                  Ending balances (cumulative) in 2008:++                                     ||  2008/03/31  2008/06/30  2008/09/30  2008/12/31+                  ===================++=================================================+                   expenses:food     ||           0          $1          $1          $1+                   expenses:supplies ||           0          $1          $1          $1+                   income:gifts      ||           0         $-1         $-1         $-1+                   income:salary     ||         $-1         $-1         $-1         $-1+                  -------------------++-------------------------------------------------+                                     ||         $-1           0           0           0++       3. With --historical/-H: each column shows the actual historical ending+          balance  for  that  period, accumulating the changes across periods,+          starting from the actual balance at the report start date.  This  is+          useful eg for a multi-period balance sheet, and when you are showing+          only the data after a certain start date:++                  $ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1+                  Ending balances (historical) in 2008/04/01-2008/12/31:++                                        ||  2008/06/30  2008/09/30  2008/12/31+                  ======================++=====================================+                   assets:bank:checking ||          $1          $1           0+                   assets:bank:saving   ||          $1          $1          $1+                   assets:cash          ||         $-2         $-2         $-2+                   liabilities:debts    ||           0           0          $1+                  ----------------------++-------------------------------------+                                        ||           0           0           0++       Multi-column balance reports display accounts in flat mode by  default;+       to see the hierarchy, use --tree.++       With   a  reporting  interval  (like  --quarterly  above),  the  report+       start/end dates will be adjusted if necessary so  that  they  encompass+       the displayed report periods.  This is so that the first and last peri-+       ods will be "full" and comparable to the others.++       The -E/--empty flag does two things  in  multicolumn  balance  reports:+       first,  the  report  will  show all columns within the specified report+       period (without -E, leading and trailing columns with  all  zeroes  are+       not  shown).   Second,  all  accounts which existed at the report start+       date will be considered, not just the ones  with  activity  during  the+       report period (use -E to include low-activity accounts which would oth-+       erwise would be omitted).++       The -T/--row-total flag adds an additional column showing the total for+       each row.++       The  -A/--average  flag adds a column showing the average value in each+       row.++       Here's an example of all three:++              $ hledger balance -Q income expenses --tree -ETA+              Balance changes in 2008:++                          ||  2008q1  2008q2  2008q3  2008q4    Total  Average+              ============++===================================================+               expenses   ||       0      $2       0       0       $2       $1+                 food     ||       0      $1       0       0       $1        0+                 supplies ||       0      $1       0       0       $1        0+               income     ||     $-1     $-1       0       0      $-2      $-1+                 gifts    ||       0     $-1       0       0      $-1        0+                 salary   ||     $-1       0       0       0      $-1        0+              ------------++---------------------------------------------------+                          ||     $-1      $1       0       0        0        0++              # Average is rounded to the dollar here since all journal amounts are++   Budgets+       With --budget and a report interval, all periodic transactions in  your+       journal  with that interval, active during the requested report period,+       are interpreted as recurring budget goals for  the  specified  accounts+       (and  subaccounts),  and  the  report  will show the difference between+       actual and budgeted balances.++       For example, you can  take  average  monthly  expenses  in  the  common+       expense categories to construct a minimal monthly budget:++              ;; Budget+              ~ monthly+                income  $2000+                expenses:food    $400+                expenses:bus     $50+                expenses:movies  $30+                assets:bank:checking++              ;; Two months worth of expenses+              2017-11-01+                income  $1950+                expenses:food    $396+                expenses:bus     $49+                expenses:movies  $30+                expenses:supplies  $20+                assets:bank:checking++              2017-12-01+                income  $2100+                expenses:food    $412+                expenses:bus     $53+                expenses:gifts   $100+                assets:bank:checking++       You can now see a monthly budget performance report:++              $ hledger balance -M --budget+              Balance changes in 2017/11/01-2017/12/31:++                                     ||                2017/11                  2017/12+              =======================++=================================================+               <unbudgeted>:expenses ||                    $20                     $100+               assets:bank:checking  || $-2445 [99% of $-2480]  $-2665 [107% of $-2480]+               expenses:bus          ||       $49 [98% of $50]        $53 [106% of $50]+               expenses:food         ||     $396 [99% of $400]      $412 [103% of $400]+               expenses:movies       ||      $30 [100% of $30]            0 [0% of $30]+               income                ||   $1950 [98% of $2000]    $2100 [105% of $2000]+              -----------------------++-------------------------------------------------+                                     ||                      0                        0++       You can roll over unspent budgets to next period with --cumulative:++              $ hledger balance -M --budget --cumulative+              Ending balances (cumulative) in 2017/11/01-2017/12/31:++                                     ||             2017/11/30               2017/12/31+              =======================++=================================================+               <unbudgeted>:expenses ||                    $20                     $120+               assets:bank:checking  || $-2445 [99% of $-2480]  $-5110 [103% of $-4960]+               expenses:bus          ||       $49 [98% of $50]      $102 [102% of $100]+               expenses:food         ||     $396 [99% of $400]      $808 [101% of $800]+               expenses:movies       ||      $30 [100% of $30]         $30 [50% of $60]+               income                ||   $1950 [98% of $2000]    $4050 [101% of $4000]+              -----------------------++-------------------------------------------------+                                     ||                      0                        0++       Accounts  with  no budget goals (not mentioned in the periodic transac-+       tions) will be  aggregated  under  <unbudgeted>,  unless  you  add  the+       --show-unbudgeted flag to display them normally:++              $ hledger balance --budget --show-unbudgeted+              Balance changes in 2017/11/01-2017/12/31:++                                    ||                2017/11                  2017/12+              ======================++=================================================+               assets:bank:checking || $-2445 [99% of $-2480]  $-2665 [107% of $-2480]+               expenses:bus         ||       $49 [98% of $50]        $53 [106% of $50]+               expenses:food        ||     $396 [99% of $400]      $412 [103% of $400]+               expenses:gifts       ||                      0                     $100+               expenses:movies      ||      $30 [100% of $30]            0 [0% of $30]+               expenses:supplies    ||                    $20                        0+               income               ||   $1950 [98% of $2000]    $2100 [105% of $2000]+              ----------------------++-------------------------------------------------+                                    ||                      0                        0++       For more examples and details, see Budgeting and Forecasting.++   Custom balance output+       In  simple  (non-multi-column)  balance  reports, you can customise the+       output with --format FMT:++              $ hledger balance --format "%20(account) %12(total)"+                            assets          $-1+                       bank:saving           $1+                              cash          $-2+                          expenses           $2+                              food           $1+                          supplies           $1+                            income          $-2+                             gifts          $-1+                            salary          $-1+                 liabilities:debts           $1+              ---------------------------------+                                              0++       The FMT format string (plus a newline) specifies the formatting applied+       to  each  account/balance pair.  It may contain any suitable text, with+       data fields interpolated like so:++       %[MIN][.MAX](FIELDNAME)++       o MIN pads with spaces to at least this width (optional)++       o MAX truncates at this width (optional)++       o FIELDNAME must be enclosed in parentheses, and can be one of:++         o depth_spacer - a number of spaces equal to the account's depth,  or+           if MIN is specified, MIN * depth spaces.++         o account - the account's name++         o total - the account's balance/posted total, right justified++       Also,  FMT  can begin with an optional prefix to control how multi-com-+       modity amounts are rendered:++       o %_ - render on multiple lines, bottom-aligned (the default)++       o %^ - render on multiple lines, top-aligned++       o %, - render on one line, comma-separated++       There are some quirks.  Eg in one-line  mode,  %(depth_spacer)  has  no+       effect, instead %(account) has indentation built in.+        Experimentation may be needed to get pleasing results.++       Some example formats:++       o %(total) - the account's total++       o %-20.20(account)  -  the account's name, left justified, padded to 20+         characters and clipped at 20 characters++       o %,%-50(account)  %25(total) - account name padded to  50  characters,+         total  padded to 20 characters, with multiple commodities rendered on+         one line++       o %20(total)  %2(depth_spacer)%-(account) - the default format for  the+         single-column balance report++   Colour support+       The balance command shows negative amounts in red, if:++       o the TERM environment variable is not set to dumb++       o the output is not being redirected or piped anywhere++   Output destination+       The  balance, print, register and stats commands can write their output+       to a destination other than the console.  This  is  controlled  by  the+       -o/--output-file option.++              $ hledger balance -o -     # write to stdout (the default)+              $ hledger balance -o FILE  # write to FILE++   CSV output+       The balance, print and register commands can write their output as CSV.+       This is useful for exporting data to other  applications,  eg  to  make+       charts  in a spreadsheet.  This is controlled by the -O/--output-format+       option, or by specifying a .csv file extension with -o/--output-file.++              $ hledger balance -O csv       # write CSV to stdout+              $ hledger balance -o FILE.csv  # write CSV to FILE.csv++   balancesheet+       Show a balance sheet.  Alias: bs.++       --change+              show balance change in each period, instead of historical ending+              balances++       --cumulative+              show  balance  change accumulated across periods (in multicolumn+              reports), instead of historical ending balances++       -H --historical+              show historical ending balance in each period (includes postings+              before report start date) (default)++       --tree show accounts as a tree; amounts include subaccounts (default in+              simple reports)++       --flat show accounts as a list; amounts exclude subaccounts except when+              account is depth-clipped (default in multicolumn reports)++       -A --average+              show a row average column (in multicolumn mode)++       -T --row-total+              show a row total column (in multicolumn mode)++       -N --no-total+              don't show the final total row++       --drop=N+              omit N leading account name parts (in flat mode)++       --no-elide+              don't squash boring parent accounts (in tree mode)++       --format=LINEFORMAT+              in single-column balance reports: use this custom line format++       --sort-amount+              sort by amount instead of account name++       This  command  displays  a  simple balance sheet.  It currently assumes+       that you have top-level accounts  named  asset  and  liability  (plural+       forms also allowed.)++              $ hledger balancesheet+              Balance Sheet++              Assets:+                               $-1  assets+                                $1    bank:saving+                               $-2    cash+              --------------------+                               $-1++              Liabilities:+                                $1  liabilities:debts+              --------------------+                                $1++              Total:+              --------------------+                                 0++       With a reporting interval, multiple columns will be shown, one for each+       report period.  As with multicolumn balance reports, you can alter  the+       report  mode  with  --change/--cumulative/--historical.   Normally bal-+       ancesheet shows historical ending balances, which is what you need  for+       a balance sheet; note this means it ignores report begin dates.++   balancesheetequity+       Show a balance sheet including equity.  Alias: bse.++       Other  than  showing  the  equity accounts, this command is exactly the+       same as the command balancesheet.  Please refer to it for the available+       options.++       This  command  displays  a balancesheet.  It currently assumes that you+       have top-level accounts named asset, liability and equity (plural forms+       also allowed.)++              $ hledger balancesheetequity+              Balance Sheet With Equity++              Assets:+                               $-2  assets+                                $1    bank:saving+                               $-3    cash+              --------------------+                               $-2++              Liabilities:+                                $1  liabilities:debts+              --------------------+                                $1++              Equity:+                        $1  equity:owner+              --------------------+                        $1++              Total:+              --------------------+                                 0++   cashflow+       Show a cashflow statement.  Alias: cf.++       --change+              show balance change in each period (default)++       --cumulative+              show  balance  change accumulated across periods (in multicolumn+              reports), instead of changes during periods++       -H --historical+              show historical ending balance in each period (includes postings+              before report start date), instead of changes during each period++       --tree show accounts as a tree; amounts include subaccounts (default in+              simple reports)++       --flat show accounts as a list; amounts exclude subaccounts except when+              account is depth-clipped (default in multicolumn reports)++       -A --average+              show a row average column (in multicolumn mode)++       -T --row-total+              show a row total column (in multicolumn mode)++       -N --no-total+              don't show the final total row (in simple reports)++       --drop=N+              omit N leading account name parts (in flat mode)++       --no-elide+              don't squash boring parent accounts (in tree mode)++       --format=LINEFORMAT+              in single-column balance reports: use this custom line format++       --sort-amount+              sort by amount instead of account name++       This command displays a simple cashflow statement It shows  the  change+       in  all  "cash"  (ie,  liquid assets) accounts for the period.  It cur-+       rently assumes that cash accounts are under a top-level  account  named+       asset and do not contain receivable, :A/R or :fixed.++              $ hledger cashflow+              Cashflow Statement++              Cash flows:+                               $-1  assets+                                $1    bank:saving+                               $-2    cash+              --------------------+                               $-1++              Total:+              --------------------+                               $-1++       With a reporting interval, multiple columns will be shown, one for each+       report period.  Normally cashflow shows changes in assets  per  period,+       though  as  with  multicolumn  balance reports you can alter the report+       mode with --change/--cumulative/--historical.++   check-dates+       Check that transactions are sorted by increasing date.  With  a  query,+       only matched transactions' dates are checked.++   check-dupes+       Report  account  names having the same leaf but different prefixes.  An+       example: http://stefanorodighiero.net/software/hledger-dupes.html++   equity+       Print closing/opening transactions that bring some or all account  bal-+       ances  to  zero  and back.  Can be useful for bringing account balances+       across file boundaries.++   help+       Show any of the hledger manuals.++       The help command displays any of the main hledger manuals,  in  one  of+       several  ways.  Run it with no argument to list the manuals, or provide+       a full or partial manual name to select one.++       hledger manuals are available in several formats.   hledger  help  will+       use  the  first  of  these  display  methods  that it finds: info, man,+       $PAGER, less, stdout (or when non-interactive, just stdout).   You  can+       force a particular viewer with the --info, --man, --pager, --cat flags.++              $ hledger help+              Please choose a manual by typing "hledger help MANUAL" (a substring is ok).+              Manuals: hledger hledger-ui hledger-web hledger-api journal csv timeclock timedot++              $ hledger help h --man++              hledger(1)                    hledger User Manuals                    hledger(1)++              NAME+                     hledger - a command-line accounting tool++              SYNOPSIS+                     hledger [-f FILE] COMMAND [OPTIONS] [ARGS]+                     hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]+                     hledger++              DESCRIPTION+                     hledger  is  a  cross-platform  program  for tracking money, time, or any+              ...++   import+       Read new transactions added to each FILE since last run, and  add  them+       to the main journal file.++       --dry-run+              just show the transactions to be imported++       The input files are specified as arguments - no need to write -f before+       each one.  So eg to add new transactions from all CSV files to the main+       journal, it's just: hledger import *.csv++       New  transactions are detected in the same way as print -new: by assum-+       ing transactions are always added to the input files in increasing date+       order, and by saving .latest.FILE state files.++       The  -dry-run  output is in journal format, so you can filter it, eg to+       see only uncategorised transactions:++              $ hledger import --dry ... | hledger -f- print unknown --ignore-assertions++   incomestatement+       Show an income statement.  Alias: is.++       --change+              show balance change in each period (default)++       --cumulative+              show balance change accumulated across periods  (in  multicolumn+              reports), instead of changes during periods++       -H --historical+              show historical ending balance in each period (includes postings+              before report start date), instead of changes during each period++       --tree show accounts as a tree; amounts include subaccounts (default in+              simple reports)++       --flat show accounts as a list; amounts exclude subaccounts except when+              account is depth-clipped (default in multicolumn reports)++       -A --average+              show a row average column (in multicolumn mode)++       -T --row-total+              show a row total column (in multicolumn mode)++       -N --no-total+              don't show the final total row++       --drop=N+              omit N leading account name parts (in flat mode)++       --no-elide+              don't squash boring parent accounts (in tree mode)++       --format=LINEFORMAT+              in single-column balance reports: use this custom line format++       --sort-amount+              sort by amount instead of account name++       This  command displays a simple income statement.  It currently assumes+       that you have top-level accounts named income (or revenue) and  expense+       (plural forms also allowed.)++              $ hledger incomestatement+              Income Statement++              Revenues:+                               $-2  income+                               $-1    gifts+                               $-1    salary+              --------------------+                               $-2++              Expenses:+                                $2  expenses+                                $1    food+                                $1    supplies+              --------------------+                                $2++              Total:+              --------------------+                                 0++       With a reporting interval, multiple columns will be shown, one for each+       report period.  Normally incomestatement  shows  revenues/expenses  per+       period,  though  as  with multicolumn balance reports you can alter the+       report mode with --change/--cumulative/--historical.++   prices+       Print all market prices from the journal.++   print+       Show transactions from the journal.  Aliases: p, txns.++       -m STR --match=STR+              show the transaction whose description is most similar  to  STR,+              and is most recent++       --new  show only newer-dated transactions added in each file since last+              run++       -x     --explicit+              show all amounts explicitly++       -O FMT --output-format=FMT+              select the output format.  Supported formats: txt, csv.++       -o FILE --output-file=FILE+              write output to FILE.  A file  extension  matching  one  of  the+              above formats selects that format.++              $ hledger print+              2008/01/01 income+                  assets:bank:checking            $1+                  income:salary                  $-1++              2008/06/01 gift+                  assets:bank:checking            $1+                  income:gifts                   $-1++              2008/06/02 save+                  assets:bank:saving              $1+                  assets:bank:checking           $-1++              2008/06/03 * eat & shop+                  expenses:food                $1+                  expenses:supplies            $1+                  assets:cash                 $-2++              2008/12/31 * pay off+                  liabilities:debts               $1+                  assets:bank:checking           $-1++       The print command displays full journal entries (transactions) from the+       journal file in date order, tidily formatted.  print's output is always+       a valid hledger journal.  It preserves all transaction information, but+       it does not preserve directives or inter-transaction comments++       Normally, the journal entry's explicit or implicit amount style is pre-+       served.   Ie when an amount is omitted in the journal, it will be omit-+       ted in the output.  You can use the  -x/--explicit  flag  to  make  all+       amounts explicit, which can be useful for troubleshooting or for making+       your journal more readable and robust against data entry errors.  Note,+       -x  will  cause postings with a multi-commodity amount (these can arise+       when a multi-commodity transaction has  an  implicit  amount)  will  be+       split  into  multiple single-commodity postings, for valid journal out-+       put.++       With -B/--cost, amounts with transaction prices are converted  to  cost+       using that price.  This can be used for troubleshooting.++       With  -m/--match and a STR argument, print will show at most one trans-+       action: the one one whose description is most similar to  STR,  and  is+       most  recent.  STR should contain at least two characters.  If there is+       no similar-enough match, no transaction will be shown.++       With --new, for each FILE being read, hledger reads (and writes) a spe-+       cial  state  file  (.latest.FILE in the same directory), containing the+       latest transaction date(s) that were seen  last  time  FILE  was  read.+       When  this  file  is found, only transactions with newer dates (and new+       transactions on the latest date)  are  printed.   This  is  useful  for+       ignoring  already-seen  entries  in import data, such as downloaded CSV+       files.  Eg:++              $ hledger -f bank1.csv print --new+              # shows transactions added since last print --new on this file++       This assumes that transactions  added  to  FILE  always  have  same  or+       increasing  dates,  and  that  transactions  on the same day do not get+       reordered.  See also the import command.++       The print command also supports  output  destination  and  CSV  output.+       Here's an example of print's CSV output:++              $ hledger print -Ocsv+              "txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting-status","posting-comment"+              "1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""+              "1","2008/01/01","","","","income","","income:salary","-1","$","1","","",""+              "2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""+              "2","2008/06/01","","","","gift","","income:gifts","-1","$","1","","",""+              "3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""+              "3","2008/06/02","","","","save","","assets:bank:checking","-1","$","1","","",""+              "4","2008/06/03","","*","","eat & shop","","expenses:food","1","$","","1","",""+              "4","2008/06/03","","*","","eat & shop","","expenses:supplies","1","$","","1","",""+              "4","2008/06/03","","*","","eat & shop","","assets:cash","-2","$","2","","",""+              "5","2008/12/31","","*","","pay off","","liabilities:debts","1","$","","1","",""+              "5","2008/12/31","","*","","pay off","","assets:bank:checking","-1","$","1","","",""++       o There  is  one  CSV record per posting, with the parent transaction's+         fields repeated.++       o The "txnidx" (transaction index) field shows which postings belong to+         the  same transaction.  (This number might change if transactions are+         reordered within the file, files are parsed/included in  a  different+         order, etc.)++       o The  amount  is  separated into "commodity" (the symbol) and "amount"+         (numeric quantity) fields.++       o The numeric amount is repeated in either the "credit" or "debit" col-+         umn,  for convenience.  (Those names are not accurate in the account-+         ing sense; it just puts negative amounts under  credit  and  zero  or+         greater amounts under debit.)++   print-unique+       Print transactions which do not reuse an already-seen description.++   register+       Show postings and their running total.  Aliases: r, reg.++       --cumulative+              show running total from report start date (default)++       -H --historical+              show  historical running total/balance (includes postings before+              report start date)++       -A --average+              show  running  average  of  posting  amounts  instead  of  total+              (implies -empty)++       -r --related+              show postings' siblings instead++       -w N --width=N+              set  output  width  (default:  terminal width or COLUMNS.  -wN,M+              sets description width as well)++       -O FMT --output-format=FMT+              select the output format.  Supported formats: txt, csv.++       -o FILE --output-file=FILE+              write output to FILE.  A file  extension  matching  one  of  the+              above formats selects that format.++       The register command displays postings, one per line, and their running+       total.  This is typically used with  a  query  selecting  a  particular+       account, to see that account's activity:++              $ hledger register checking+              2008/01/01 income               assets:bank:checking            $1            $1+              2008/06/01 gift                 assets:bank:checking            $1            $2+              2008/06/02 save                 assets:bank:checking           $-1            $1+              2008/12/31 pay off              assets:bank:checking           $-1             0++       The  --historical/-H  flag  adds the balance from any undisplayed prior+       postings to the running total.  This is useful when  you  want  to  see+       only recent activity, with a historically accurate running balance:++              $ hledger register checking -b 2008/6 --historical+              2008/06/01 gift                 assets:bank:checking            $1            $2+              2008/06/02 save                 assets:bank:checking           $-1            $1+              2008/12/31 pay off              assets:bank:checking           $-1             0++       The --depth option limits the amount of sub-account detail displayed.++       The  --average/-A flag shows the running average posting amount instead+       of the running total (so, the final number displayed is the average for+       the  whole  report period).  This flag implies --empty (see below).  It+       is affected by --historical.  It  works  best  when  showing  just  one+       account and one commodity.++       The  --related/-r  flag shows the other postings in the transactions of+       the postings which would normally be shown.++       With a reporting interval, register shows  summary  postings,  one  per+       interval, aggregating the postings to each account:++              $ hledger register --monthly income+              2008/01                 income:salary                          $-1           $-1+              2008/06                 income:gifts                           $-1           $-2++       Periods  with no activity, and summary postings with a zero amount, are+       not shown by default; use the --empty/-E flag to see them:++              $ hledger register --monthly income -E+              2008/01                 income:salary                          $-1           $-1+              2008/02                                                          0           $-1+              2008/03                                                          0           $-1+              2008/04                                                          0           $-1+              2008/05                                                          0           $-1+              2008/06                 income:gifts                           $-1           $-2+              2008/07                                                          0           $-2+              2008/08                                                          0           $-2+              2008/09                                                          0           $-2+              2008/10                                                          0           $-2+              2008/11                                                          0           $-2+              2008/12                                                          0           $-2++       Often, you'll want to see just one  line  per  interval.   The  --depth+       option helps with this, causing subaccounts to be aggregated:++              $ hledger register --monthly assets --depth 1h+              2008/01                 assets                                  $1            $1+              2008/06                 assets                                 $-1             0+              2008/12                 assets                                 $-1           $-1++       Note  when using report intervals, if you specify start/end dates these+       will be adjusted outward if necessary to  contain  a  whole  number  of+       intervals.   This  ensures  that  the first and last intervals are full+       length and comparable to the others in the report.++   Custom register output+       register uses the full terminal width by default,  except  on  windows.+       You  can override this by setting the COLUMNS environment variable (not+       a bash shell variable) or by using the --width/-w option.++       The description and account columns normally share  the  space  equally+       (about  half  of  (width  - 40) each).  You can adjust this by adding a+       description  width  as  part  of  -width's  argument,  comma-separated:+       --width W,D .  Here's a diagram:++              <--------------------------------- width (W) ---------------------------------->+              date (10)  description (D)       account (W-41-D)     amount (12)   balance (12)+              DDDDDDDDDD dddddddddddddddddddd  aaaaaaaaaaaaaaaaaaa  AAAAAAAAAAAA  AAAAAAAAAAAA++       and some examples:++              $ hledger reg                     # use terminal width (or 80 on windows)+              $ hledger reg -w 100              # use width 100+              $ COLUMNS=100 hledger reg         # set with one-time environment variable+              $ export COLUMNS=100; hledger reg # set till session end (or window resize)+              $ hledger reg -w 100,40           # set overall width 100, description width 40+              $ hledger reg -w $COLUMNS,40      # use terminal width, and set description width++       The  register  command also supports the -o/--output-file and -O/--out-+       put-format options for controlling output destination and CSV output.++   register-match+       Print the one posting whose transaction description is closest to DESC,+       in  the  style  of  the register command.  Helps ledger-autosync detect+       already-seen transactions when importing.++   rewrite+       Print all transactions, adding custom postings to the matched ones.++   stats+       Show some journal statistics.++       -o FILE --output-file=FILE+              write output to FILE.  A file  extension  matching  one  of  the+              above formats selects that format.++              $ hledger stats+              Main journal file        : /src/hledger/examples/sample.journal+              Included journal files   :+              Transactions span        : 2008-01-01 to 2009-01-01 (366 days)+              Last transaction         : 2008-12-31 (2333 days ago)+              Transactions             : 5 (0.0 per day)+              Transactions last 30 days: 0 (0.0 per day)+              Transactions last 7 days : 0 (0.0 per day)+              Payees/descriptions      : 5+              Accounts                 : 8 (depth 3)+              Commodities              : 1 ($)++       The  stats  command displays summary information for the whole journal,+       or a matched part of it.  With a reporting interval, it shows a  report+       for each report period.++       The stats command also supports -o/--output-file for controlling output+       destination.++   tags+       List all the tag names used in the journal.  With a TAGREGEX  argument,+       only  tag  names matching the regular expression (case insensitive) are+       shown.  With additional QUERY arguments, only transactions matching the+       query are considered.++   test+       Run built-in unit tests.++              $ hledger test+              Cases: 74  Tried: 74  Errors: 0  Failures: 0++       This  command  runs  hledger's built-in unit tests and displays a quick+       report.  With a regular expression argument, it selects only tests with+       matching names.  It's mainly used in development, but it's also nice to+       be able to check your hledger executable for smoke at any time.++ADD-ON COMMANDS+       hledger also searches for external add-on commands,  and  will  include+       these in the commands list.  These are programs or scripts in your PATH+       whose name starts with hledger- and ends with a recognised file  exten-+       sion (currently: no extension, bat,com,exe, hs,lhs,pl,py,rb,rkt,sh).++       Add-ons  can  be  invoked like any hledger command, but there are a few+       things to be aware of.  Eg if the hledger-web add-on is installed,++       o hledger -h web  shows  hledger's  help,  while  hledger web -h  shows+         hledger-web's help.++       o Flags  specific  to  the add-on must have a preceding -- to hide them+         from hledger.  So hledger web --serve --port 9000 will  be  rejected;+         you must use hledger web -- --serve --port 9000.++       o You    can    always    run    add-ons    directly    if   preferred:+         hledger-web --serve --port 9000.++       Add-ons are a relatively easy way to add local features  or  experiment+       with  new  ideas.   They  can  be  written in any language, but haskell+       scripts have a big advantage:  they  can  use  the  same  hledger  (and+       haskell)  library functions that built-in commands do, for command-line+       options, journal parsing, reporting, etc.++       Here are some hledger add-ons available:++   Official add-ons+       These are maintained and released along with hledger.++   api+       hledger-api serves hledger data as a JSON web API.++   ui+       hledger-ui provides an efficient curses-style interface.++   web+       hledger-web provides a simple web interface.++   Third party add-ons+       These are maintained separately, and usually updated  shortly  after  a+       hledger release.++   diff+       hledger-diff shows differences in an account's transactions between one+       journal file and another.++   iadd+       hledger-iadd is a curses-style, more interactive  replacement  for  the+       add command.++   interest+       hledger-interest generates interest transactions for an account accord-+       ing to various schemes.++   irr+       hledger-irr calculates the internal rate of  return  of  an  investment+       account.++   Experimental add-ons+       These  are  available  in source form in the hledger repo's bin/ direc-+       tory; installing them is pretty easy.  They may be less mature and doc-+       umented  than  built-in commands.  Reading and tweaking these is a good+       way to start making your own!++   autosync+       hledger-autosync is a symbolic link for easily running ledger-autosync,+       if  installed.   ledger-autosync  does  deduplicating conversion of OFX+       data and some CSV formats, and can also download the data if your  bank+       offers OFX Direct Connect.++   budget+       hledger-budget.hs adds more budget-tracking features to hledger.++   chart+       hledger-chart.hs is an old pie chart generator, in need of some love.++   check+       hledger-check.hs checks more powerful account balance assertions.++ENVIRONMENT+       COLUMNS  The  screen  width used by the register command.  Default: the+       full terminal width.++       LEDGER_FILE The journal file path when not specified with -f.  Default:+       ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour-+       nal).++FILES+       Reads data from one or more files in hledger journal, timeclock,  time-+       dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or+       $HOME/.hledger.journal          (on          windows,           perhaps+       C:/Users/USER/.hledger.journal).++BUGS+       The  need  to  precede  addon command options with -- when invoked from+       hledger is awkward.++       When input data contains non-ascii characters, a suitable system locale+       must be configured (or there will be an unhelpful error).  Eg on POSIX,+       set LANG to something other than C.++       In a Microsoft Windows CMD window, non-ascii characters and colours are+       not supported.++       In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger+       add.++       Not all of Ledger's journal file syntax is supported.  See file  format+       differences.++       On  large  data  files,  hledger  is  slower  and uses more memory than+       Ledger.++TROUBLESHOOTING+       Here are some issues you might encounter  when  you  run  hledger  (and+       remember  you can also seek help from the IRC channel, mail list or bug+       tracker):++       Successfully installed, but "No command `hledger' found"+       stack and cabal install binaries into a special directory, which should+       be  added  to your PATH environment variable.  Eg on unix-like systems,+       that is ~/.local/bin and ~/.cabal/bin respectively.++       I set a custom LEDGER_FILE, but hledger is still using the default file+       LEDGER_FILE  should  be  a  real environment variable, not just a shell+       variable.  The command env | grep LEDGER_FILE should show it.  You  may+       need to use export.  Here's an explanation.++       "Illegal  byte  sequence"  or  "Invalid or incomplete multibyte or wide+       character" errors+       In order to handle non-ascii letters and symbols (like ), hledger needs+       an appropriate locale.  This is usually configured system-wide; you can+       also configure it temporarily.  The locale may need to be one that sup-+       ports  UTF-8,  if you built hledger with GHC < 7.2 (or possibly always,+       I'm not sure yet).++       Here's  an  example  of  setting  the  locale  temporarily,  on  ubuntu+       gnu/linux:++              $ file my.journal+              my.journal: UTF-8 Unicode text                 # <- the file is UTF8-encoded+              $ locale -a+              C+              en_US.utf8                             # <- a UTF8-aware locale is available+              POSIX+              $ LANG=en_US.utf8 hledger -f my.journal print   # <- use it for this command++       Here's one way to set it permanently, there are probably better ways:++              $ echo "export LANG=en_US.UTF-8" >>~/.bash_profile+              $ bash --login++       If  we  preferred  to  use eg fr_FR.utf8, we might have to install that+       first:++              $ apt-get install language-pack-fr+              $ locale -a+              C+              en_US.utf8+              fr_BE.utf8+              fr_CA.utf8+              fr_CH.utf8+              fr_FR.utf8+              fr_LU.utf8+              POSIX+              $ LANG=fr_FR.utf8 hledger -f my.journal print++       Note some platforms allow variant locale spellings, but not all (ubuntu+       accepts fr_FR.UTF8, mac osx requires exactly fr_FR.UTF-8).++++REPORTING BUGS+       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel+       or hledger mail list)+++AUTHORS+       Simon Michael <simon@joyful.com> and contributors+++COPYRIGHT+       Copyright (C) 2007-2016 Simon Michael.+       Released under GNU GPL v3 or later.+++SEE ALSO+       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),+       hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-+       dot(5), ledger(1)++       http://hledger.org++++hledger 1.5                      December 2017                      hledger(1)