;doc: update manuals
This commit is contained in:
		
							parent
							
								
									ddec2cedf3
								
							
						
					
					
						commit
						7a249cffe9
					
				| @ -1,2 +1,2 @@ | ||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||
| m4_define({{_monthyear_}}, {{August 2021}})m4_dnl | ||||
| m4_define({{_monthyear_}}, {{September 2021}})m4_dnl | ||||
|  | ||||
| @ -1,2 +1,2 @@ | ||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||
| m4_define({{_monthyear_}}, {{August 2021}})m4_dnl | ||||
| m4_define({{_monthyear_}}, {{September 2021}})m4_dnl | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| 
 | ||||
| .TH "HLEDGER-UI" "1" "August 2021" "hledger-ui-1.22.99 " "hledger User Manuals" | ||||
| .TH "HLEDGER-UI" "1" "September 2021" "hledger-ui-1.22.99 " "hledger User Manuals" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| This is hledger-ui.info, produced by makeinfo version 6.8 from stdin. | ||||
| This is hledger-ui/hledger-ui.info, produced by makeinfo version 4.8 | ||||
| from stdin. | ||||
| 
 | ||||
| INFO-DIR-SECTION User Applications | ||||
| START-INFO-DIR-ENTRY | ||||
| @ -6,7 +7,7 @@ START-INFO-DIR-ENTRY | ||||
| END-INFO-DIR-ENTRY | ||||
| 
 | ||||
|  | ||||
| File: hledger-ui.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | ||||
| File: hledger-ui.info,  Node: Top,  Up: (dir) | ||||
| 
 | ||||
| hledger-ui(1) | ||||
| ************* | ||||
| @ -14,8 +15,8 @@ hledger-ui(1) | ||||
| hledger-ui is a terminal interface (TUI) for the hledger accounting | ||||
| tool. This manual is for hledger-ui 1.22.99. | ||||
| 
 | ||||
|    'hledger-ui [OPTIONS] [QUERYARGS]' | ||||
| 'hledger ui -- [OPTIONS] [QUERYARGS]' | ||||
|    `hledger-ui [OPTIONS] [QUERYARGS]' | ||||
| `hledger ui -- [OPTIONS] [QUERYARGS]' | ||||
| 
 | ||||
|    hledger is a reliable, cross-platform set of programs for tracking | ||||
| money, time, or any other commodity, using double-entry accounting and a | ||||
| @ -29,9 +30,9 @@ 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), | ||||
| 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. | ||||
| 
 | ||||
|    Unlike hledger, hledger-ui hides all future-dated transactions by | ||||
| @ -55,142 +56,139 @@ 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 | ||||
| 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' | ||||
|      watch for data and date changes and reload automatically | ||||
| '--theme=default|terminal|greenterm' | ||||
| 
 | ||||
| `--theme=default|terminal|greenterm' | ||||
|      use this custom display theme | ||||
| '--register=ACCTREGEX' | ||||
| 
 | ||||
| `--register=ACCTREGEX' | ||||
|      start in the (first) matched account's register screen | ||||
| '--change' | ||||
| 
 | ||||
| `--change' | ||||
|      show period balances (changes) at startup instead of historical | ||||
|      balances | ||||
| '-l --flat' | ||||
| 
 | ||||
| `-l --flat' | ||||
|      show accounts as a flat list (default) | ||||
| '-t --tree' | ||||
| 
 | ||||
| `-t --tree' | ||||
|      show accounts as a tree | ||||
| 
 | ||||
|    hledger input options: | ||||
| 
 | ||||
| '-f FILE --file=FILE' | ||||
| 
 | ||||
| `-f FILE --file=FILE' | ||||
|      use a different input file. For stdin, use - (default: | ||||
|      '$LEDGER_FILE' or '$HOME/.hledger.journal') | ||||
| '--rules-file=RULESFILE' | ||||
|      `$LEDGER_FILE' or `$HOME/.hledger.journal') | ||||
| 
 | ||||
| `--rules-file=RULESFILE' | ||||
|      Conversion rules file to use when reading CSV (default: FILE.rules) | ||||
| '--separator=CHAR' | ||||
| 
 | ||||
| `--separator=CHAR' | ||||
|      Field separator to expect when reading CSV (default: ',') | ||||
| '--alias=OLD=NEW' | ||||
| 
 | ||||
| `--alias=OLD=NEW' | ||||
|      rename accounts named OLD to NEW | ||||
| '--anon' | ||||
| 
 | ||||
| `--anon' | ||||
|      anonymize accounts and payees | ||||
| '--pivot FIELDNAME' | ||||
| 
 | ||||
| `--pivot FIELDNAME' | ||||
|      use some other field or tag for the account name | ||||
| '-I --ignore-assertions' | ||||
| 
 | ||||
| `-I --ignore-assertions' | ||||
|      disable balance assertion checks (note: does not disable balance | ||||
|      assignments) | ||||
| '-s --strict' | ||||
| 
 | ||||
| `-s --strict' | ||||
|      do extra error checking (check that all posted accounts are | ||||
|      declared) | ||||
| 
 | ||||
|    hledger reporting options: | ||||
| 
 | ||||
| '-b --begin=DATE' | ||||
| 
 | ||||
| `-b --begin=DATE' | ||||
|      include postings/txns on or after this date (will be adjusted to | ||||
|      preceding subperiod start when using a report interval) | ||||
| '-e --end=DATE' | ||||
| 
 | ||||
| `-e --end=DATE' | ||||
|      include postings/txns before this date (will be adjusted to | ||||
|      following subperiod end when using a report interval) | ||||
| '-D --daily' | ||||
| 
 | ||||
| `-D --daily' | ||||
|      multiperiod/multicolumn report by day | ||||
| '-W --weekly' | ||||
| 
 | ||||
| `-W --weekly' | ||||
|      multiperiod/multicolumn report by week | ||||
| '-M --monthly' | ||||
| 
 | ||||
| `-M --monthly' | ||||
|      multiperiod/multicolumn report by month | ||||
| '-Q --quarterly' | ||||
| 
 | ||||
| `-Q --quarterly' | ||||
|      multiperiod/multicolumn report by quarter | ||||
| '-Y --yearly' | ||||
| 
 | ||||
| `-Y --yearly' | ||||
|      multiperiod/multicolumn report by year | ||||
| '-p --period=PERIODEXP' | ||||
| 
 | ||||
| `-p --period=PERIODEXP' | ||||
|      set start date, end date, and/or reporting interval all at once | ||||
|      using period expressions syntax | ||||
| '--date2' | ||||
| 
 | ||||
| `--date2' | ||||
|      match the secondary date instead (see command help for other | ||||
|      effects) | ||||
| '-U --unmarked' | ||||
| 
 | ||||
| `-U --unmarked' | ||||
|      include only unmarked postings/txns (can combine with -P or -C) | ||||
| '-P --pending' | ||||
| 
 | ||||
| `-P --pending' | ||||
|      include only pending postings/txns | ||||
| '-C --cleared' | ||||
| 
 | ||||
| `-C --cleared' | ||||
|      include only cleared postings/txns | ||||
| '-R --real' | ||||
| 
 | ||||
| `-R --real' | ||||
|      include only non-virtual postings | ||||
| '-NUM --depth=NUM' | ||||
| 
 | ||||
| `-NUM --depth=NUM' | ||||
|      hide/aggregate accounts or postings more than NUM levels deep | ||||
| '-E --empty' | ||||
| 
 | ||||
| `-E --empty' | ||||
|      show items with zero amount, normally hidden (and vice-versa in | ||||
|      hledger-ui/hledger-web) | ||||
| '-B --cost' | ||||
| 
 | ||||
| `-B --cost' | ||||
|      convert amounts to their cost/selling amount at transaction time | ||||
| '-V --market' | ||||
| 
 | ||||
| `-V --market' | ||||
|      convert amounts to their market value in default valuation | ||||
|      commodities | ||||
| '-X --exchange=COMM' | ||||
| 
 | ||||
| `-X --exchange=COMM' | ||||
|      convert amounts to their market value in commodity COMM | ||||
| '--value' | ||||
| 
 | ||||
| `--value' | ||||
|      convert amounts to cost or market value, more flexibly than | ||||
|      -B/-V/-X | ||||
| '--infer-market-prices' | ||||
| 
 | ||||
| `--infer-market-prices' | ||||
|      use transaction prices (recorded with @ or @@) as additional market | ||||
|      prices, as if they were P directives | ||||
| '--auto' | ||||
| 
 | ||||
| `--auto' | ||||
|      apply automated posting rules to modify transactions. | ||||
| '--forecast' | ||||
| 
 | ||||
| `--forecast' | ||||
|      generate future transactions from periodic transaction rules, for | ||||
|      the next 6 months or till report end date. In hledger-ui, also | ||||
|      make ordinary future transactions visible. | ||||
| '--color=WHEN (or --colour=WHEN)' | ||||
| 
 | ||||
| `--color=WHEN (or --colour=WHEN)' | ||||
|      Should color-supporting commands use ANSI color codes in text | ||||
|      output.  'auto' (default): whenever stdout seems to be a | ||||
|      color-supporting terminal.  'always' or 'yes': always, useful eg | ||||
| @ -204,25 +202,24 @@ the last one takes precedence. | ||||
| 
 | ||||
|    hledger help options: | ||||
| 
 | ||||
| '-h --help' | ||||
| 
 | ||||
| `-h --help' | ||||
|      show general or COMMAND help | ||||
| '--man' | ||||
| 
 | ||||
| `--man' | ||||
|      show general or COMMAND user manual with man | ||||
| '--info' | ||||
| 
 | ||||
| `--info' | ||||
|      show general or COMMAND user manual with info | ||||
| '--version' | ||||
| 
 | ||||
| `--version' | ||||
|      show general or ADDONCMD version | ||||
| '--debug[=N]' | ||||
| 
 | ||||
| `--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.) | ||||
| this, insert a `--' argument before.) | ||||
| 
 | ||||
|  | ||||
| File: hledger-ui.info,  Node: KEYS,  Next: SCREENS,  Prev: OPTIONS,  Up: Top | ||||
| @ -230,15 +227,15 @@ 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', or 'q') to close it.  The following keys work on | ||||
| `?' 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', or `q') 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.  Emacs-style | ||||
| ('ctrl-p'/'ctrl-n'/'ctrl-f'/'ctrl-b') movement keys are also supported | ||||
|    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. Emacs-style | ||||
| (`ctrl-p'/`ctrl-n'/`ctrl-f'/`ctrl-b') movement keys are also supported | ||||
| (but not vi-style keys, since hledger-1.19, sorry!).  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 | ||||
| @ -246,73 +243,73 @@ 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 | ||||
| `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 | ||||
| `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. | ||||
| non-standard period, you can use `/' and a `date:' query. | ||||
| 
 | ||||
|    '/' lets you set a general filter query limiting the data shown, | ||||
|    `/' 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 | ||||
| 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 | ||||
| below). `BACKSPACE' or `DELETE' removes all filters, showing all | ||||
| transactions. | ||||
| 
 | ||||
|    As mentioned above, by default hledger-ui hides future transactions - | ||||
| both ordinary transactions recorded in the journal, and periodic | ||||
| transactions generated by rule.  'F' toggles forecast mode, in which | ||||
| transactions generated by rule. `F' toggles forecast mode, in which | ||||
| future/forecasted transactions are shown. | ||||
| 
 | ||||
|    'ESCAPE' resets the UI state and jumps back to the top screen, | ||||
|    `ESCAPE' resets the UI state and jumps back to the top screen, | ||||
| restoring the app's initial state at startup. Or, it cancels minibuffer | ||||
| data entry or the help dialog. | ||||
| 
 | ||||
|    'CTRL-l' redraws the screen and centers the selection if possible | ||||
|    `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 | ||||
|    `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 | ||||
|    `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 | ||||
|    `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 | ||||
| terminal interface.  This key will be available if 'hledger-iadd' is | ||||
|    `A' is like `a', but runs the hledger-iadd tool, which provides a | ||||
| terminal interface. This key will be available if `hledger-iadd' is | ||||
| installed in $path. | ||||
| 
 | ||||
|    'E' runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default ('emacsclient | ||||
|    `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. | ||||
| 
 | ||||
|    'B' toggles cost mode, showing amounts in their transaction price's | ||||
| commodity (like toggling the '-B/--cost' flag). | ||||
|    `B' toggles cost mode, showing amounts in their transaction price's | ||||
| commodity (like toggling the `-B/--cost' flag). | ||||
| 
 | ||||
|    'V' toggles value mode, showing amounts' current market value in | ||||
| their default valuation commodity (like toggling the '-V/--market' | ||||
|    `V' toggles value mode, showing amounts' current market value in | ||||
| their default valuation commodity (like toggling the `-V/--market' | ||||
| flag). Note, "current market value" means the value on the report end | ||||
| date if specified, otherwise today. To see the value on another date, | ||||
| you can temporarily set that as the report end date. Eg: to see a | ||||
| transaction as it was valued on july 30, go to the accounts or register | ||||
| screen, press '/', and add 'date:-7/30' to the query. | ||||
| screen, press `/', and add `date:-7/30' to the query. | ||||
| 
 | ||||
|    At most one of cost or value mode can be active at once. | ||||
| 
 | ||||
|    There's not yet any visual reminder when cost or value mode is | ||||
| active; for now pressing 'b' 'b' 'v' should reliably reset to normal | ||||
| active; for now pressing `b' `b' `v' should reliably reset to normal | ||||
| mode. | ||||
| 
 | ||||
|    'q' quits the application. | ||||
|    `q' quits the application. | ||||
| 
 | ||||
|    Additional screen-specific keys are described below. | ||||
| 
 | ||||
| @ -335,48 +332,47 @@ File: hledger-ui.info,  Node: Accounts screen,  Next: Register screen,  Up: SCRE | ||||
| 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 | ||||
| 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 shown as a flat list by default; press 't' to | ||||
|    Account names are shown as a flat list by default; press `t' to | ||||
| toggle tree mode. In list mode, account balances are exclusive of | ||||
| subaccounts, except where subaccounts are hidden by a depth limit (see | ||||
| below).  In tree mode, all account balances are inclusive of | ||||
| subaccounts. | ||||
| below). In tree mode, all account balances are inclusive of subaccounts. | ||||
| 
 | ||||
|    To see less detail, press a number key, '1' to '9', to set a depth | ||||
| limit.  Or use '-' to decrease and '+'/'=' to increase the depth limit. | ||||
| '0' shows even less detail, collapsing all accounts to a single total. | ||||
| To remove the depth limit, set it higher than the maximum account depth, | ||||
| or press 'ESCAPE'. | ||||
|    To see less detail, press a number key, `1' to `9', to set a depth | ||||
| limit. Or use `-' to decrease and `+'/`=' to increase the depth limit. | ||||
| `0' shows even less detail, collapsing all accounts to a single total. | ||||
| To remove the depth limit, set it higher than the maximum account | ||||
| depth, or press `ESCAPE'. | ||||
| 
 | ||||
|    'H' toggles between showing historical balances or period balances. | ||||
|    `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. | ||||
| 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 | ||||
|    `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. | ||||
|    `R' toggles real mode, in which virtual postings are ignored. | ||||
| 
 | ||||
|    'Z' toggles nonzero mode, in which only accounts with nonzero | ||||
|    `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. | ||||
|    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 | ||||
| @ -388,41 +384,43 @@ 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.) | ||||
|      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. | ||||
|      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. | ||||
| 
 | ||||
| 
 | ||||
|    Transactions affecting this account's subaccounts will be included in | ||||
| the register if the accounts screen is in tree mode, or if it's in list | ||||
| mode but this account has subaccounts which are not shown due to a depth | ||||
| limit. In other words, the register always shows the transactions | ||||
| contributing to the balance shown on the accounts screen.  Tree | ||||
| mode/list mode can be toggled with 't' here also. | ||||
| contributing to the balance shown on the accounts screen. Tree mode/list | ||||
| mode can be toggled with `t' here also. | ||||
| 
 | ||||
|    'U' toggles filtering by unmarked status, showing or hiding unmarked | ||||
| transactions.  Similarly, 'P' toggles pending transactions, and 'C' | ||||
|    `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.) | ||||
| 
 | ||||
|    'R' toggles real mode, in which virtual postings are ignored. | ||||
|    `R' toggles real mode, in which virtual postings are ignored. | ||||
| 
 | ||||
|    'Z' toggles nonzero mode, in which only transactions posting a | ||||
|    `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 | ||||
|    Press `right' (or `enter') to view the selected transaction in | ||||
| detail. | ||||
| 
 | ||||
|  | ||||
| @ -440,7 +438,7 @@ 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 | ||||
|    `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 | ||||
| @ -477,15 +475,16 @@ File: hledger-ui.info,  Node: Watch mode,  Next: Watch mode limitations,  Up: TI | ||||
| 4.1 Watch mode | ||||
| ============== | ||||
| 
 | ||||
| One of hledger-ui's best features is the auto-reloading '--watch' mode. | ||||
| One of hledger-ui's best features is the auto-reloading `--watch' mode. | ||||
| With this flag, it will update the display automatically whenever | ||||
| changes are saved to the data files. | ||||
| 
 | ||||
|    This is very useful when reconciling.  A good workflow is to have | ||||
| your bank's online register open in a browser window, for reference; the | ||||
|    This is very useful when reconciling. A good workflow is to have your | ||||
| bank's online register open in a browser window, for reference; the | ||||
| journal file open in an editor window; and hledger-ui in watch mode in a | ||||
| terminal window, eg: | ||||
| 
 | ||||
| 
 | ||||
| $ hledger-ui --watch --register checking -C | ||||
| 
 | ||||
|    As you mark things cleared in the editor, you can see the effect | ||||
| @ -501,28 +500,29 @@ File: hledger-ui.info,  Node: Watch mode limitations,  Prev: Watch mode,  Up: TI | ||||
| ========================== | ||||
| 
 | ||||
| There are situations in which it won't work, ie the display will not | ||||
| update when you save a change (because the underlying 'inotify' library | ||||
| update when you save a change (because the underlying `inotify' library | ||||
| does not support it). Here are some that we know of: | ||||
| 
 | ||||
|    * Certain editors: saving with 'gedit', and perhaps any Gnome | ||||
|    * Certain editors: saving with `gedit', and perhaps any Gnome | ||||
|      application, won't be detected (#1617). Jetbrains IDEs, such as | ||||
|      IDEA, also may not work (#911). | ||||
| 
 | ||||
|    * Certain unusual filesystems might not be supported. (All the usual | ||||
|      ones on unix, mac and windows are supported.) | ||||
| 
 | ||||
| 
 | ||||
|    In such cases, the workaround is to switch to the hledger-ui window | ||||
| and press 'g' each time you want it to reload.  (Actually, see #1617 for | ||||
| and press `g' each time you want it to reload. (Actually, see #1617 for | ||||
| another workaround, and let us know if it works for you.) | ||||
| 
 | ||||
|    If you leave 'hledger-ui --watch' running for days, on certain | ||||
|    If you leave `hledger-ui --watch' running for days, on certain | ||||
| platforms (?), perhaps with many transactions in your journal (?), | ||||
| perhaps with large numbers of other files present (?), you may see it | ||||
| gradually using more and more memory and CPU over time, as seen in 'top' | ||||
| or Activity Monitor or Task Manager. | ||||
| gradually using more and more memory and CPU over time, as seen in | ||||
| `top' or Activity Monitor or Task Manager. | ||||
| 
 | ||||
|    A workaround is to 'q'uit and restart it, or to suspend it ('CTRL-z') | ||||
| and restart it ('fg') if your shell supports that. | ||||
|    A workaround is to `q'uit and restart it, or to suspend it | ||||
| (`CTRL-z') and restart it (`fg') if your shell supports that. | ||||
| 
 | ||||
|  | ||||
| File: hledger-ui.info,  Node: ENVIRONMENT,  Next: FILES,  Prev: TIPS,  Up: Top | ||||
| @ -532,25 +532,26 @@ File: hledger-ui.info,  Node: ENVIRONMENT,  Next: FILES,  Prev: TIPS,  Up: Top | ||||
| 
 | ||||
| *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.journal'). | ||||
|    *LEDGER_FILE* The journal file path when not specified with `-f'. | ||||
| Default: `~/.hledger.journal' (on windows, perhaps | ||||
| `C:/Users/USER/.hledger.journal'). | ||||
| 
 | ||||
|    A typical value is '~/DIR/YYYY.journal', where DIR is a | ||||
|    A typical value is `~/DIR/YYYY.journal', where DIR is a | ||||
| version-controlled finance directory and YYYY is the current year. Or | ||||
| '~/DIR/current.journal', where current.journal is a symbolic link to | ||||
| `~/DIR/current.journal', where current.journal is a symbolic link to | ||||
| YYYY.journal. | ||||
| 
 | ||||
|    On Mac computers, you can set this and other environment variables in | ||||
| a more thorough way that also affects applications started from the GUI | ||||
| (say, an Emacs dock icon).  Eg on MacOS Catalina I have a | ||||
| '~/.MacOSX/environment.plist' file containing | ||||
|    On Mac computers, you can set this and other environment variables | ||||
| in a more thorough way that also affects applications started from the | ||||
| GUI (say, an Emacs dock icon). Eg on MacOS Catalina I have a | ||||
| `~/.MacOSX/environment.plist' file containing | ||||
| 
 | ||||
| 
 | ||||
| { | ||||
|   "LEDGER_FILE" : "~/finance/current.journal" | ||||
| } | ||||
| 
 | ||||
|    To see the effect you may need to 'killall Dock', or reboot. | ||||
|    To see the effect you may need to `killall Dock', or reboot. | ||||
| 
 | ||||
|  | ||||
| File: hledger-ui.info,  Node: FILES,  Next: BUGS,  Prev: ENVIRONMENT,  Up: Top | ||||
| @ -559,9 +560,9 @@ File: hledger-ui.info,  Node: FILES,  Next: BUGS,  Prev: ENVIRONMENT,  Up: Top | ||||
| ******* | ||||
| 
 | ||||
| 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'). | ||||
| timedot, or CSV format specified with `-f', or `$LEDGER_FILE', or | ||||
| `$HOME/.hledger.journal' (on windows, perhaps | ||||
| `C:/Users/USER/.hledger.journal'). | ||||
| 
 | ||||
|  | ||||
| File: hledger-ui.info,  Node: BUGS,  Prev: FILES,  Up: Top | ||||
| @ -569,18 +570,18 @@ File: hledger-ui.info,  Node: BUGS,  Prev: FILES,  Up: Top | ||||
| 7 BUGS | ||||
| ****** | ||||
| 
 | ||||
| The need to precede options with '--' when invoked from hledger is | ||||
| The need to precede options with `--' when invoked from hledger is | ||||
| awkward. | ||||
| 
 | ||||
|    '-f-' doesn't work (hledger-ui can't read from stdin). | ||||
|    `-f-' doesn't work (hledger-ui can't read from stdin). | ||||
| 
 | ||||
|    '-V' affects only the accounts screen. | ||||
|    `-V' affects only the accounts screen. | ||||
| 
 | ||||
|    When you press 'g', the current and all previous screens are | ||||
|    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, | ||||
|    `--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. Symptoms | ||||
| include: unresponsive UI, periodic resetting of the cursor position, | ||||
| @ -589,41 +590,37 @@ and possibly a small but persistent build-up of CPU usage until the | ||||
| program is restarted. | ||||
| 
 | ||||
|    Also, if you are viewing files mounted from another machine, | ||||
| '--watch' requires that both machine clocks are roughly in step. | ||||
| `--watch' requires that both machine clocks are roughly in step. | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| Tag Table: | ||||
| Node: Top221 | ||||
| Node: OPTIONS1647 | ||||
| Ref: #options1744 | ||||
| Node: KEYS6145 | ||||
| Ref: #keys6240 | ||||
| Node: SCREENS10311 | ||||
| Ref: #screens10409 | ||||
| Node: Accounts screen10499 | ||||
| Ref: #accounts-screen10627 | ||||
| Node: Register screen12842 | ||||
| Ref: #register-screen12997 | ||||
| Node: Transaction screen14994 | ||||
| Ref: #transaction-screen15152 | ||||
| Node: Error screen16022 | ||||
| Ref: #error-screen16144 | ||||
| Node: TIPS16388 | ||||
| Ref: #tips16487 | ||||
| Node: Watch mode16539 | ||||
| Ref: #watch-mode16656 | ||||
| Node: Watch mode limitations17402 | ||||
| Ref: #watch-mode-limitations17543 | ||||
| Node: ENVIRONMENT18679 | ||||
| Ref: #environment18790 | ||||
| Node: FILES19597 | ||||
| Ref: #files19696 | ||||
| Node: BUGS19909 | ||||
| Ref: #bugs19986 | ||||
| Node: Top232 | ||||
| Node: OPTIONS1637 | ||||
| Ref: #options1734 | ||||
| Node: KEYS6129 | ||||
| Ref: #keys6224 | ||||
| Node: SCREENS10273 | ||||
| Ref: #screens10371 | ||||
| Node: Accounts screen10461 | ||||
| Ref: #accounts-screen10589 | ||||
| Node: Register screen12793 | ||||
| Ref: #register-screen12948 | ||||
| Node: Transaction screen14943 | ||||
| Ref: #transaction-screen15101 | ||||
| Node: Error screen15968 | ||||
| Ref: #error-screen16090 | ||||
| Node: TIPS16332 | ||||
| Ref: #tips16431 | ||||
| Node: Watch mode16483 | ||||
| Ref: #watch-mode16600 | ||||
| Node: Watch mode limitations17344 | ||||
| Ref: #watch-mode-limitations17485 | ||||
| Node: ENVIRONMENT18618 | ||||
| Ref: #environment18729 | ||||
| Node: FILES19534 | ||||
| Ref: #files19633 | ||||
| Node: BUGS19846 | ||||
| Ref: #bugs19923 | ||||
|  | ||||
| End Tag Table | ||||
| 
 | ||||
|  | ||||
| Local Variables: | ||||
| coding: utf-8 | ||||
| End: | ||||
|  | ||||
| @ -504,4 +504,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger-ui-1.22.99                August 2021                    HLEDGER-UI(1) | ||||
| hledger-ui-1.22.99              September 2021                   HLEDGER-UI(1) | ||||
|  | ||||
| @ -1,2 +1,2 @@ | ||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||
| m4_define({{_monthyear_}}, {{August 2021}})m4_dnl | ||||
| m4_define({{_monthyear_}}, {{September 2021}})m4_dnl | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| 
 | ||||
| .TH "HLEDGER-WEB" "1" "August 2021" "hledger-web-1.22.99 " "hledger User Manuals" | ||||
| .TH "HLEDGER-WEB" "1" "September 2021" "hledger-web-1.22.99 " "hledger User Manuals" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| This is hledger-web.info, produced by makeinfo version 6.8 from stdin. | ||||
| This is hledger-web/hledger-web.info, produced by makeinfo version 4.8 | ||||
| from stdin. | ||||
| 
 | ||||
| INFO-DIR-SECTION User Applications | ||||
| START-INFO-DIR-ENTRY | ||||
| @ -6,7 +7,7 @@ START-INFO-DIR-ENTRY | ||||
| END-INFO-DIR-ENTRY | ||||
| 
 | ||||
|  | ||||
| File: hledger-web.info,  Node: Top,  Next: OPTIONS,  Up: (dir) | ||||
| File: hledger-web.info,  Node: Top,  Up: (dir) | ||||
| 
 | ||||
| hledger-web(1) | ||||
| ************** | ||||
| @ -14,8 +15,8 @@ hledger-web(1) | ||||
| hledger-web is a web interface (WUI) for the hledger accounting tool. | ||||
| This manual is for hledger-web 1.22.99. | ||||
| 
 | ||||
|    'hledger-web [OPTIONS]' | ||||
| 'hledger web -- [OPTIONS]' | ||||
|    `hledger-web [OPTIONS]' | ||||
| `hledger web -- [OPTIONS]' | ||||
| 
 | ||||
|    hledger is a reliable, cross-platform set of programs for tracking | ||||
| money, time, or any other commodity, using double-entry accounting and a | ||||
| @ -24,22 +25,21 @@ compatible with ledger(1). | ||||
| 
 | ||||
|    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. | ||||
| 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. | ||||
| 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). | ||||
| 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). | ||||
| 
 | ||||
| * Menu: | ||||
| 
 | ||||
| @ -62,161 +62,158 @@ Command-line options and arguments may be used to set an initial filter | ||||
| on the data. These filter options are not shown in the web UI, but it | ||||
| will be applied in addition to any search query entered there. | ||||
| 
 | ||||
|    Note: if invoking hledger-web as a hledger subcommand, write '--' | ||||
|    Note: if invoking hledger-web as a hledger subcommand, write `--' | ||||
| before options, as shown in the synopsis above. | ||||
| 
 | ||||
| '--serve' | ||||
| 
 | ||||
| `--serve' | ||||
|      serve and log requests, don't browse or auto-exit | ||||
| '--serve-api' | ||||
| 
 | ||||
| `--serve-api' | ||||
|      like -serve, but serve only the JSON web API, without the | ||||
|      server-side web UI | ||||
| '--host=IPADDR' | ||||
| 
 | ||||
| `--host=IPADDR' | ||||
|      listen on this IP address (default: 127.0.0.1) | ||||
| '--port=PORT' | ||||
| 
 | ||||
| `--port=PORT' | ||||
|      listen on this TCP port (default: 5000) | ||||
| '--socket=SOCKETFILE' | ||||
| 
 | ||||
| `--socket=SOCKETFILE' | ||||
|      use a unix domain socket file to listen for requests instead of a | ||||
|      TCP socket.  Implies '--serve'.  It can only be used if the | ||||
|      operating system can provide this type of socket. | ||||
| '--base-url=URL' | ||||
|      TCP socket. Implies `--serve'. It can only be used if the operating | ||||
|      system can provide this type of socket. | ||||
| 
 | ||||
| `--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' | ||||
| 
 | ||||
| `--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. | ||||
| '--capabilities=CAP[,CAP..]' | ||||
|      them from another server for efficiency, you would set the url | ||||
|      with this. | ||||
| 
 | ||||
| `--capabilities=CAP[,CAP..]' | ||||
|      enable the view, add, and/or manage capabilities (default: | ||||
|      view,add) | ||||
| '--capabilities-header=HTTPHEADER' | ||||
| 
 | ||||
| `--capabilities-header=HTTPHEADER' | ||||
|      read capabilities to enable from a HTTP header, like | ||||
|      X-Sandstorm-Permissions (default: disabled) | ||||
| '--test' | ||||
| 
 | ||||
| `--test' | ||||
|      run hledger-web's tests and exit. hspec test runner args may | ||||
|      follow a -, eg: hledger-web -test - -help | ||||
| 
 | ||||
|    hledger input options: | ||||
| 
 | ||||
| '-f FILE --file=FILE' | ||||
| 
 | ||||
| `-f FILE --file=FILE' | ||||
|      use a different input file. For stdin, use - (default: | ||||
|      '$LEDGER_FILE' or '$HOME/.hledger.journal') | ||||
| '--rules-file=RULESFILE' | ||||
|      `$LEDGER_FILE' or `$HOME/.hledger.journal') | ||||
| 
 | ||||
| `--rules-file=RULESFILE' | ||||
|      Conversion rules file to use when reading CSV (default: FILE.rules) | ||||
| '--separator=CHAR' | ||||
| 
 | ||||
| `--separator=CHAR' | ||||
|      Field separator to expect when reading CSV (default: ',') | ||||
| '--alias=OLD=NEW' | ||||
| 
 | ||||
| `--alias=OLD=NEW' | ||||
|      rename accounts named OLD to NEW | ||||
| '--anon' | ||||
| 
 | ||||
| `--anon' | ||||
|      anonymize accounts and payees | ||||
| '--pivot FIELDNAME' | ||||
| 
 | ||||
| `--pivot FIELDNAME' | ||||
|      use some other field or tag for the account name | ||||
| '-I --ignore-assertions' | ||||
| 
 | ||||
| `-I --ignore-assertions' | ||||
|      disable balance assertion checks (note: does not disable balance | ||||
|      assignments) | ||||
| '-s --strict' | ||||
| 
 | ||||
| `-s --strict' | ||||
|      do extra error checking (check that all posted accounts are | ||||
|      declared) | ||||
| 
 | ||||
|    hledger reporting options: | ||||
| 
 | ||||
| '-b --begin=DATE' | ||||
| 
 | ||||
| `-b --begin=DATE' | ||||
|      include postings/txns on or after this date (will be adjusted to | ||||
|      preceding subperiod start when using a report interval) | ||||
| '-e --end=DATE' | ||||
| 
 | ||||
| `-e --end=DATE' | ||||
|      include postings/txns before this date (will be adjusted to | ||||
|      following subperiod end when using a report interval) | ||||
| '-D --daily' | ||||
| 
 | ||||
| `-D --daily' | ||||
|      multiperiod/multicolumn report by day | ||||
| '-W --weekly' | ||||
| 
 | ||||
| `-W --weekly' | ||||
|      multiperiod/multicolumn report by week | ||||
| '-M --monthly' | ||||
| 
 | ||||
| `-M --monthly' | ||||
|      multiperiod/multicolumn report by month | ||||
| '-Q --quarterly' | ||||
| 
 | ||||
| `-Q --quarterly' | ||||
|      multiperiod/multicolumn report by quarter | ||||
| '-Y --yearly' | ||||
| 
 | ||||
| `-Y --yearly' | ||||
|      multiperiod/multicolumn report by year | ||||
| '-p --period=PERIODEXP' | ||||
| 
 | ||||
| `-p --period=PERIODEXP' | ||||
|      set start date, end date, and/or reporting interval all at once | ||||
|      using period expressions syntax | ||||
| '--date2' | ||||
| 
 | ||||
| `--date2' | ||||
|      match the secondary date instead (see command help for other | ||||
|      effects) | ||||
| '-U --unmarked' | ||||
| 
 | ||||
| `-U --unmarked' | ||||
|      include only unmarked postings/txns (can combine with -P or -C) | ||||
| '-P --pending' | ||||
| 
 | ||||
| `-P --pending' | ||||
|      include only pending postings/txns | ||||
| '-C --cleared' | ||||
| 
 | ||||
| `-C --cleared' | ||||
|      include only cleared postings/txns | ||||
| '-R --real' | ||||
| 
 | ||||
| `-R --real' | ||||
|      include only non-virtual postings | ||||
| '-NUM --depth=NUM' | ||||
| 
 | ||||
| `-NUM --depth=NUM' | ||||
|      hide/aggregate accounts or postings more than NUM levels deep | ||||
| '-E --empty' | ||||
| 
 | ||||
| `-E --empty' | ||||
|      show items with zero amount, normally hidden (and vice-versa in | ||||
|      hledger-ui/hledger-web) | ||||
| '-B --cost' | ||||
| 
 | ||||
| `-B --cost' | ||||
|      convert amounts to their cost/selling amount at transaction time | ||||
| '-V --market' | ||||
| 
 | ||||
| `-V --market' | ||||
|      convert amounts to their market value in default valuation | ||||
|      commodities | ||||
| '-X --exchange=COMM' | ||||
| 
 | ||||
| `-X --exchange=COMM' | ||||
|      convert amounts to their market value in commodity COMM | ||||
| '--value' | ||||
| 
 | ||||
| `--value' | ||||
|      convert amounts to cost or market value, more flexibly than | ||||
|      -B/-V/-X | ||||
| '--infer-market-prices' | ||||
| 
 | ||||
| `--infer-market-prices' | ||||
|      use transaction prices (recorded with @ or @@) as additional market | ||||
|      prices, as if they were P directives | ||||
| '--auto' | ||||
| 
 | ||||
| `--auto' | ||||
|      apply automated posting rules to modify transactions. | ||||
| '--forecast' | ||||
| 
 | ||||
| `--forecast' | ||||
|      generate future transactions from periodic transaction rules, for | ||||
|      the next 6 months or till report end date. In hledger-ui, also | ||||
|      make ordinary future transactions visible. | ||||
| '--color=WHEN (or --colour=WHEN)' | ||||
| 
 | ||||
| `--color=WHEN (or --colour=WHEN)' | ||||
|      Should color-supporting commands use ANSI color codes in text | ||||
|      output.  'auto' (default): whenever stdout seems to be a | ||||
|      color-supporting terminal.  'always' or 'yes': always, useful eg | ||||
| @ -230,62 +227,62 @@ the last one takes precedence. | ||||
| 
 | ||||
|    hledger help options: | ||||
| 
 | ||||
| '-h --help' | ||||
| 
 | ||||
| `-h --help' | ||||
|      show general or COMMAND help | ||||
| '--man' | ||||
| 
 | ||||
| `--man' | ||||
|      show general or COMMAND user manual with man | ||||
| '--info' | ||||
| 
 | ||||
| `--info' | ||||
|      show general or COMMAND user manual with info | ||||
| '--version' | ||||
| 
 | ||||
| `--version' | ||||
|      show general or ADDONCMD version | ||||
| '--debug[=N]' | ||||
| 
 | ||||
| `--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.) | ||||
| this, insert a `--' argument before.) | ||||
| 
 | ||||
|    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 | ||||
| no browser windows viewing it). With `--serve', it just runs the web | ||||
| app without exiting, and logs requests to the console. With | ||||
| '--serve-api', only the JSON web api (see below) is served, with the | ||||
| `--serve-api', only the JSON web api (see below) is served, with the | ||||
| usual HTML server-side web UI disabled. | ||||
| 
 | ||||
|    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 | ||||
| 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 | ||||
|    Similarly, use `--port' to set a TCP port other than 5000, eg if you | ||||
| are running multiple hledger-web instances. | ||||
| 
 | ||||
|    Both of these options are ignored when '--socket' is used.  In this | ||||
| case, it creates an 'AF_UNIX' socket file at the supplied path and uses | ||||
|    Both of these options are ignored when `--socket' is used. In this | ||||
| case, it creates an `AF_UNIX' socket file at the supplied path and uses | ||||
| that for communication. This is an alternative way of running multiple | ||||
| hledger-web instances behind a reverse proxy that handles authentication | ||||
| for different users.  The path can be derived in a predictable way, eg | ||||
| by using the username within the path.  As an example, 'nginx' as | ||||
| reverse proxy can use the variable '$remote_user' to derive a path from | ||||
| the username used in a HTTP basic authentication.  The following | ||||
| 'proxy_pass' directive allows access to all 'hledger-web' instances that | ||||
| created a socket in '/tmp/hledger/': | ||||
| hledger-web instances behind a reverse proxy that handles | ||||
| authentication for different users. The path can be derived in a | ||||
| predictable way, eg by using the username within the path. As an | ||||
| example, `nginx' as reverse proxy can use the variable `$remote_user' | ||||
| to derive a path from the username used in a HTTP basic authentication. | ||||
| The following `proxy_pass' directive allows access to all `hledger-web' | ||||
| instances that created a socket in `/tmp/hledger/': | ||||
| 
 | ||||
| 
 | ||||
|   proxy_pass http://unix:/tmp/hledger/${remote_user}.socket; | ||||
| 
 | ||||
|    You can use '--base-url' to change the protocol, hostname, port and | ||||
|    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 | ||||
| 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, | ||||
|    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. | ||||
| 
 | ||||
| @ -300,25 +297,29 @@ journal and to add new transactions, but not to change existing data. | ||||
| 
 | ||||
|    You can restrict who can reach it by | ||||
| 
 | ||||
|    * setting the IP address it listens on (see '--host' above).  By | ||||
|    * setting the IP address it listens on (see `--host' above). By | ||||
|      default it listens on 127.0.0.1, accessible to all users on the | ||||
|      local machine. | ||||
| 
 | ||||
|    * putting it behind an authenticating proxy, using eg apache or nginx | ||||
| 
 | ||||
|    * custom firewall rules | ||||
| 
 | ||||
|    You can restrict what the users who reach it can do, by | ||||
| 
 | ||||
|    * using the '--capabilities=CAP[,CAP..]' flag when you start it, | ||||
|    * using the `--capabilities=CAP[,CAP..]' flag when you start it, | ||||
|      enabling one or more of the following capabilities. The default | ||||
|      value is 'view,add': | ||||
|         * 'view' - allows viewing the journal file and all included | ||||
|      value is `view,add': | ||||
|         * `view' - allows viewing the journal file and all included | ||||
|           files | ||||
|         * 'add' - allows adding new transactions to the main journal | ||||
| 
 | ||||
|         * `add' - allows adding new transactions to the main journal | ||||
|           file | ||||
|         * 'manage' - allows editing, uploading or downloading the main | ||||
| 
 | ||||
|         * `manage' - allows editing, uploading or downloading the main | ||||
|           or included files | ||||
| 
 | ||||
|    * using the '--capabilities-header=HTTPHEADER' flag to specify a HTTP | ||||
|    * using the `--capabilities-header=HTTPHEADER' flag to specify a HTTP | ||||
|      header from which it will read capabilities to enable. hledger-web | ||||
|      on Sandstorm uses the X-Sandstorm-Permissions header to integrate | ||||
|      with Sandstorm's permissions. This is disabled by default. | ||||
| @ -329,7 +330,7 @@ File: hledger-web.info,  Node: EDITING UPLOADING DOWNLOADING,  Next: RELOADING, | ||||
| 3 EDITING, UPLOADING, DOWNLOADING | ||||
| ********************************* | ||||
| 
 | ||||
| If you enable the 'manage' capability mentioned above, you'll see a new | ||||
| If you enable the `manage' capability mentioned above, you'll see a new | ||||
| "spanner" button to the right of the search form. Clicking this will | ||||
| let you edit, upload, or download the journal file or any files it | ||||
| includes. | ||||
| @ -370,13 +371,15 @@ File: hledger-web.info,  Node: JSON API,  Next: ENVIRONMENT,  Prev: RELOADING, | ||||
| 
 | ||||
| In addition to the web UI, hledger-web also serves a JSON API that can | ||||
| be used to get data or add new transactions. If you want the JSON API | ||||
| only, you can use the '--serve-api' flag.  Eg: | ||||
| only, you can use the `--serve-api' flag. Eg: | ||||
| 
 | ||||
| 
 | ||||
| $ hledger-web -f examples/sample.journal --serve-api | ||||
| ... | ||||
| 
 | ||||
|    You can get JSON data from these routes: | ||||
| 
 | ||||
| 
 | ||||
| /version | ||||
| /accountnames | ||||
| /transactions | ||||
| @ -389,6 +392,7 @@ $ hledger-web -f examples/sample.journal --serve-api | ||||
| command).  (hledger-web's JSON does not include newlines, here we use | ||||
| python to prettify it): | ||||
| 
 | ||||
| 
 | ||||
| $ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool | ||||
| [ | ||||
|     "assets", | ||||
| @ -408,6 +412,7 @@ $ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool | ||||
| 
 | ||||
|    Or all transactions: | ||||
| 
 | ||||
| 
 | ||||
| $ curl -s http://127.0.0.1:5000/transactions | python -m json.tool | ||||
| [ | ||||
|     { | ||||
| @ -433,20 +438,21 @@ on the various data types, eg Transaction.  And for a higher level | ||||
| understanding, see the journal manual. | ||||
| 
 | ||||
|    In some cases there is outer JSON corresponding to a "Report" type. | ||||
| To understand that, go to the Hledger.Web.Handler.MiscR haddock and look | ||||
| at the source for the appropriate handler to see what it returns.  Eg | ||||
| for '/accounttransactions' it's getAccounttransactionsR, returning a | ||||
| "'accountTransactionsReport ...'".  Looking up the haddock for that we | ||||
| To understand that, go to the Hledger.Web.Handler.MiscR haddock and | ||||
| look at the source for the appropriate handler to see what it returns. | ||||
| Eg for `/accounttransactions' it's getAccounttransactionsR, returning a | ||||
| "`accountTransactionsReport ...'". Looking up the haddock for that we | ||||
| can see that /accounttransactions returns an AccountTransactionsReport, | ||||
| which consists of a report title and a list of | ||||
| AccountTransactionsReportItem (etc). | ||||
| 
 | ||||
|    You can add a new transaction to the journal with a PUT request to | ||||
| '/add', if hledger-web was started with the 'add' capability (enabled by | ||||
| default).  The payload must be the full, exact JSON representation of a | ||||
| hledger transaction (partial data won't do).  You can get sample JSON | ||||
| from hledger-web's '/transactions' or '/accounttransactions', or you can | ||||
| export it with hledger-lib, eg like so: | ||||
| `/add', if hledger-web was started with the `add' capability (enabled | ||||
| by default). The payload must be the full, exact JSON representation of | ||||
| a hledger transaction (partial data won't do). You can get sample JSON | ||||
| from hledger-web's `/transactions' or `/accounttransactions', or you | ||||
| can export it with hledger-lib, eg like so: | ||||
| 
 | ||||
| 
 | ||||
| .../hledger$ stack ghci hledger-lib | ||||
| >>> writeJsonFile "txn.json" (head $ jtxns samplejournal) | ||||
| @ -455,6 +461,7 @@ export it with hledger-lib, eg like so: | ||||
|    Here's how it looks as of hledger-1.17 (remember, this JSON | ||||
| corresponds to hledger's Transaction and related data types): | ||||
| 
 | ||||
| 
 | ||||
| { | ||||
|     "tcomment": "", | ||||
|     "tpostings": [ | ||||
| @ -544,6 +551,7 @@ corresponds to hledger's Transaction and related data types): | ||||
|    And here's how to test adding it with curl. This should add a new | ||||
| entry to your journal: | ||||
| 
 | ||||
| 
 | ||||
| $ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json | ||||
| 
 | ||||
|  | ||||
| @ -552,25 +560,26 @@ File: hledger-web.info,  Node: ENVIRONMENT,  Next: FILES,  Prev: JSON API,  Up: | ||||
| 6 ENVIRONMENT | ||||
| ************* | ||||
| 
 | ||||
| *LEDGER_FILE* The journal file path when not specified with '-f'. | ||||
| Default: '~/.hledger.journal' (on windows, perhaps | ||||
| 'C:/Users/USER/.hledger.journal'). | ||||
| *LEDGER_FILE* The journal file path when not specified with `-f'. | ||||
| Default: `~/.hledger.journal' (on windows, perhaps | ||||
| `C:/Users/USER/.hledger.journal'). | ||||
| 
 | ||||
|    A typical value is '~/DIR/YYYY.journal', where DIR is a | ||||
|    A typical value is `~/DIR/YYYY.journal', where DIR is a | ||||
| version-controlled finance directory and YYYY is the current year. Or | ||||
| '~/DIR/current.journal', where current.journal is a symbolic link to | ||||
| `~/DIR/current.journal', where current.journal is a symbolic link to | ||||
| YYYY.journal. | ||||
| 
 | ||||
|    On Mac computers, you can set this and other environment variables in | ||||
| a more thorough way that also affects applications started from the GUI | ||||
| (say, an Emacs dock icon).  Eg on MacOS Catalina I have a | ||||
| '~/.MacOSX/environment.plist' file containing | ||||
|    On Mac computers, you can set this and other environment variables | ||||
| in a more thorough way that also affects applications started from the | ||||
| GUI (say, an Emacs dock icon). Eg on MacOS Catalina I have a | ||||
| `~/.MacOSX/environment.plist' file containing | ||||
| 
 | ||||
| 
 | ||||
| { | ||||
|   "LEDGER_FILE" : "~/finance/current.journal" | ||||
| } | ||||
| 
 | ||||
|    To see the effect you may need to 'killall Dock', or reboot. | ||||
|    To see the effect you may need to `killall Dock', or reboot. | ||||
| 
 | ||||
|  | ||||
| File: hledger-web.info,  Node: FILES,  Next: BUGS,  Prev: ENVIRONMENT,  Up: Top | ||||
| @ -579,9 +588,9 @@ File: hledger-web.info,  Node: FILES,  Next: BUGS,  Prev: ENVIRONMENT,  Up: Top | ||||
| ******* | ||||
| 
 | ||||
| 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'). | ||||
| timedot, or CSV format specified with `-f', or `$LEDGER_FILE', or | ||||
| `$HOME/.hledger.journal' (on windows, perhaps | ||||
| `C:/Users/USER/.hledger.journal'). | ||||
| 
 | ||||
|  | ||||
| File: hledger-web.info,  Node: BUGS,  Prev: FILES,  Up: Top | ||||
| @ -589,10 +598,10 @@ File: hledger-web.info,  Node: BUGS,  Prev: FILES,  Up: Top | ||||
| 8 BUGS | ||||
| ****** | ||||
| 
 | ||||
| The need to precede options with '--' when invoked from hledger is | ||||
| The need to precede options with `--' when invoked from hledger is | ||||
| awkward. | ||||
| 
 | ||||
|    '-f-' doesn't work (hledger-web can't read from stdin). | ||||
|    `-f-' doesn't work (hledger-web can't read from stdin). | ||||
| 
 | ||||
|    Query arguments and some hledger options are ignored. | ||||
| 
 | ||||
| @ -600,29 +609,25 @@ awkward. | ||||
| 
 | ||||
|    Does not work well on small screens. | ||||
| 
 | ||||
|  | ||||
| Tag Table: | ||||
| Node: Top223 | ||||
| Node: OPTIONS1889 | ||||
| Ref: #options1994 | ||||
| Node: PERMISSIONS9427 | ||||
| Ref: #permissions9566 | ||||
| Node: EDITING UPLOADING DOWNLOADING10778 | ||||
| Ref: #editing-uploading-downloading10959 | ||||
| Node: RELOADING11793 | ||||
| Ref: #reloading11927 | ||||
| Node: JSON API12360 | ||||
| Ref: #json-api12474 | ||||
| Node: ENVIRONMENT17964 | ||||
| Ref: #environment18080 | ||||
| Node: FILES18813 | ||||
| Ref: #files18913 | ||||
| Node: BUGS19126 | ||||
| Ref: #bugs19204 | ||||
|  | ||||
| End Tag Table | ||||
| 
 | ||||
|  | ||||
| Local Variables: | ||||
| coding: utf-8 | ||||
| End: | ||||
| Tag Table: | ||||
| Node: Top235 | ||||
| Node: OPTIONS1878 | ||||
| Ref: #options1983 | ||||
| Node: PERMISSIONS9396 | ||||
| Ref: #permissions9535 | ||||
| Node: EDITING UPLOADING DOWNLOADING10747 | ||||
| Ref: #editing-uploading-downloading10928 | ||||
| Node: RELOADING11759 | ||||
| Ref: #reloading11893 | ||||
| Node: JSON API12325 | ||||
| Ref: #json-api12439 | ||||
| Node: ENVIRONMENT17928 | ||||
| Ref: #environment18044 | ||||
| Node: FILES18776 | ||||
| Ref: #files18876 | ||||
| Node: BUGS19089 | ||||
| Ref: #bugs19167 | ||||
|  | ||||
| End Tag Table | ||||
|  | ||||
| @ -556,4 +556,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger-web-1.22.99               August 2021                   HLEDGER-WEB(1) | ||||
| hledger-web-1.22.99             September 2021                  HLEDGER-WEB(1) | ||||
|  | ||||
| @ -1,2 +1,2 @@ | ||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||
| m4_define({{_monthyear_}}, {{August 2021}})m4_dnl | ||||
| m4_define({{_monthyear_}}, {{September 2021}})m4_dnl | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| .\"t | ||||
| 
 | ||||
| .TH "HLEDGER" "1" "August 2021" "hledger-1.22.99 " "hledger User Manuals" | ||||
| .TH "HLEDGER" "1" "September 2021" "hledger-1.22.99 " "hledger User Manuals" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @ -762,6 +762,12 @@ T}@T{ | ||||
| T} | ||||
| .TE | ||||
| .PP | ||||
| Note \[dq]today\[aq]s date\[dq] can be overridden with the | ||||
| \f[C]--today\f[R] option, in case it\[aq]s needed for testing or for | ||||
| recreating old reports. | ||||
| (Except for periodic transaction rules; those are not affected by | ||||
| \f[C]--today\f[R].) | ||||
| .PP | ||||
| .SS Report start & end date | ||||
| .PP | ||||
| By default, most hledger reports will show the full span of time | ||||
| @ -779,8 +785,8 @@ All of these accept the smart date syntax. | ||||
| .PP | ||||
| Some notes: | ||||
| .IP \[bu] 2 | ||||
| As in Ledger, end dates are exclusive, so you need to write the date | ||||
| \f[I]after\f[R] the last day you want to include. | ||||
| End dates are exclusive, as in Ledger, so you should write the date | ||||
| \f[I]after\f[R] the last day you want to see in the report. | ||||
| .IP \[bu] 2 | ||||
| As noted in reporting options: among start/end dates specified with | ||||
| \f[I]options\f[R], the last (i.e. | ||||
| @ -847,9 +853,16 @@ separate row or column. | ||||
| .PP | ||||
| The following \[dq]standard\[dq] report intervals can be enabled by | ||||
| using their corresponding flag: | ||||
| .PP | ||||
| \f[C]-D/--daily\f[R], \f[C]-W/--weekly\f[R], \f[C]-M/--monthly\f[R], | ||||
| \f[C]-Q/--quarterly\f[R], \f[C]-Y/--yearly\f[R]. | ||||
| .IP \[bu] 2 | ||||
| \f[C]-D/--daily\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]-W/--weekly\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]-M/--monthly\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]-Q/--quarterly\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]-Y/--yearly\f[R] | ||||
| .PP | ||||
| These standard intervals always start on natural interval boundaries: eg | ||||
| \f[C]--weekly\f[R] starts on mondays, \f[C]--monthly\f[R] starts on the | ||||
| @ -871,6 +884,20 @@ overridden (ie, the report starts earlier than your requested start | ||||
| date, or ends later than your requested end date). | ||||
| This is done to ensure \[dq]full\[dq] first and last subperiods, so that | ||||
| all subperiods\[aq] numbers are comparable. | ||||
| .PP | ||||
| To summarise: | ||||
| .IP \[bu] 2 | ||||
| In multiperiod reports, all subperiods are forced to be the same length, | ||||
| to simplify reporting. | ||||
| .IP \[bu] 2 | ||||
| Reports with the standard | ||||
| \f[C]--weekly\f[R]/\f[C]--monthly\f[R]/\f[C]--quarterly\f[R]/\f[C]--yearly\f[R] | ||||
| intervals are required to start on the first day of a | ||||
| week/month/quarter/year. | ||||
| We\[aq]d like more flexibility here but it isn\[aq]t supported yet. | ||||
| .IP \[bu] 2 | ||||
| \f[C]--period\f[R] (below) can specify more complex intervals, starting | ||||
| on any date. | ||||
| .SS Period expressions | ||||
| .PP | ||||
| The \f[C]-p/--period\f[R] option accepts period expressions, a shorthand | ||||
| @ -882,7 +909,13 @@ Here\[aq]s a basic period expression specifying the first quarter of | ||||
| Note, hledger always treats start dates as inclusive and end dates as | ||||
| exclusive: | ||||
| .PP | ||||
| .TS | ||||
| tab(@); | ||||
| l. | ||||
| T{ | ||||
| \f[C]-p \[dq]from 2009/1/1 to 2009/4/1\[dq]\f[R] | ||||
| T} | ||||
| .TE | ||||
| .PP | ||||
| Keywords like \[dq]from\[dq] and \[dq]to\[dq] are optional, and so are | ||||
| the spaces, as long as you don\[aq]t run two dates together. | ||||
| @ -987,17 +1020,16 @@ T}@T{ | ||||
| fourth quarter of the current year | ||||
| T} | ||||
| .TE | ||||
| .SS Period expressions with a report interval | ||||
| .PP | ||||
| The argument of \f[C]-p\f[R] can also begin with, or be, a report | ||||
| interval expression. | ||||
| The basic report intervals are \f[C]daily\f[R], \f[C]weekly\f[R], | ||||
| \f[C]monthly\f[R], \f[C]quarterly\f[R], or \f[C]yearly\f[R], which have | ||||
| the same effect as the | ||||
| \f[C]-D\f[R],\f[C]-W\f[R],\f[C]-M\f[R],\f[C]-Q\f[R], or \f[C]-Y\f[R] | ||||
| flags. | ||||
| Between report interval and start/end dates (if any), the word | ||||
| \f[C]in\f[R] is optional. | ||||
| Examples: | ||||
| \f[C]-p/--period\f[R]\[aq]s argument can also begin with, or entirely | ||||
| consist of, a report interval. | ||||
| This should be separated from the start/end dates (if any) by a space, | ||||
| or the word \f[C]in\f[R]. | ||||
| The basic intervals (which can also be written as command line flags) | ||||
| are \f[C]daily\f[R], \f[C]weekly\f[R], \f[C]monthly\f[R], | ||||
| \f[C]quarterly\f[R], and \f[C]yearly\f[R]. | ||||
| Some examples: | ||||
| .PP | ||||
| .TS | ||||
| tab(@); | ||||
| @ -1013,11 +1045,11 @@ T{ | ||||
| T} | ||||
| .TE | ||||
| .PP | ||||
| Note that \f[C]weekly\f[R], \f[C]monthly\f[R], \f[C]quarterly\f[R] and | ||||
| \f[C]yearly\f[R] 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. | ||||
| As mentioned above, the \f[C]weekly\f[R], \f[C]monthly\f[R], | ||||
| \f[C]quarterly\f[R] and \f[C]yearly\f[R] intervals require a report | ||||
| start date that is the first day of a week, month, quarter or year. | ||||
| And, report start/end dates will be expanded if needed to span a whole | ||||
| number of intervals. | ||||
| .PP | ||||
| For example: | ||||
| .PP | ||||
| @ -1046,15 +1078,23 @@ T}@T{ | ||||
| starts on 2009/01/01, first day of 2009 | ||||
| T} | ||||
| .TE | ||||
| .SS More complex report intervals | ||||
| .PP | ||||
| The following more complex report intervals are also supported: | ||||
| \f[C]biweekly\f[R], \f[C]fortnightly\f[R], \f[C]bimonthly\f[R], | ||||
| \f[C]every day|week|month|quarter|year\f[R], | ||||
| \f[C]every N days|weeks|months|quarters|years\f[R]. | ||||
| .PP | ||||
| All of these will start on the first day of the requested period and end | ||||
| on the last one, as described above. | ||||
| Some more complex kinds of interval are also supported in period | ||||
| expressions: | ||||
| .IP \[bu] 2 | ||||
| \f[C]biweekly\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]fortnightly\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]bimonthly\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]every day|week|month|quarter|year\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]every N days|weeks|months|quarters|years\f[R] | ||||
| .PP | ||||
| These too will cause report start/end dates to be expanded, if needed, | ||||
| to span a whole number of intervals. | ||||
| Examples: | ||||
| .PP | ||||
| .TS | ||||
| @ -1076,16 +1116,33 @@ T}@T{ | ||||
| periods will have boundaries on 2009/03/01, 2009/08/01, ... | ||||
| T} | ||||
| .TE | ||||
| .SS Intervals with custom start date | ||||
| .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: | ||||
| All intervals mentioned above are required to start on their natural | ||||
| calendar boundaries, but the following intervals can start on any date: | ||||
| .PP | ||||
| \f[C]every Nth day of week\f[R], \f[C]every WEEKDAYNAME\f[R] (eg | ||||
| \f[C]mon|tue|wed|thu|fri|sat|sun\f[R]), | ||||
| \f[C]every Nth day [of month]\f[R], | ||||
| \f[C]every Nth WEEKDAYNAME [of month]\f[R], | ||||
| \f[C]every MM/DD [of year]\f[R], \f[C]every Nth MMM [of year]\f[R], | ||||
| \f[C]every MMM Nth [of year]\f[R]. | ||||
| Weekly on custom day: | ||||
| .IP \[bu] 2 | ||||
| \f[C]every Nth day of week\f[R] (\f[C]th\f[R], \f[C]nd\f[R], | ||||
| \f[C]rd\f[R], or \f[C]st\f[R] are all accepted after the number) | ||||
| .IP \[bu] 2 | ||||
| \f[C]every WEEKDAYNAME\f[R] (full or three-letter english weekday name, | ||||
| case insensitive) | ||||
| .PP | ||||
| Monthly on custom day: | ||||
| .IP \[bu] 2 | ||||
| \f[C]every Nth day [of month]\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]every Nth WEEKDAYNAME [of month]\f[R] | ||||
| .PP | ||||
| Yearly on custom day: | ||||
| .IP \[bu] 2 | ||||
| \f[C]every MM/DD [of year]\f[R] (month number and day of month number) | ||||
| .IP \[bu] 2 | ||||
| \f[C]every MONTHNAME DDth [of year]\f[R] (full or three-letter english | ||||
| month name, case insensitive, and day of month number) | ||||
| .IP \[bu] 2 | ||||
| \f[C]every DDth MONTHNAME [of year]\f[R] (equivalent to the above) | ||||
| .PP | ||||
| Examples: | ||||
| .PP | ||||
| @ -1115,10 +1172,10 @@ T} | ||||
| T{ | ||||
| \f[C]-p \[dq]every 11/05\[dq]\f[R] | ||||
| T}@T{ | ||||
| yearly periods with boundaries on 5th of Nov | ||||
| yearly periods with boundaries on 5th of November | ||||
| T} | ||||
| T{ | ||||
| \f[C]-p \[dq]every 5th Nov\[dq]\f[R] | ||||
| \f[C]-p \[dq]every 5th November\[dq]\f[R] | ||||
| T}@T{ | ||||
| same | ||||
| T} | ||||
| @ -1129,23 +1186,79 @@ same | ||||
| T} | ||||
| .TE | ||||
| .PP | ||||
| Show historical balances at end of 15th each month (N is exclusive end | ||||
| date): | ||||
| Show historical balances at end of the 15th day of each month (N is an | ||||
| end date, exclusive as always): | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger balance -H -p \[dq]every 16th day\[dq] | ||||
| \f[R] | ||||
| .fi | ||||
| .PP | ||||
| \f[C]hledger balance -H -p \[dq]every 16th day\[dq]\f[R] | ||||
| Group postings from the start of wednesday to end of the following | ||||
| tuesday (N is both (inclusive) start date and (exclusive) end date): | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger register checking -p \[dq]every 3rd day of week\[dq] | ||||
| \f[R] | ||||
| .fi | ||||
| .SS Periods or dates ? | ||||
| .PP | ||||
| Group postings from start of wednesday to end of next tuesday (N is | ||||
| start date and exclusive end date): | ||||
| Report intervals like the above are most often used with | ||||
| \f[C]-p|--period\f[R], to divide reports into multiple subperiods - each | ||||
| generated date marks a subperiod boundary. | ||||
| Here, the periods between the dates are what\[aq]s important. | ||||
| .PP | ||||
| \f[C]hledger register checking -p \[dq]every 3rd day of week\[dq]\f[R] | ||||
| But report intervals can also be used with \f[C]--forecast\f[R] to | ||||
| generate future transactions, or with \f[C]balance --budget\f[R] to | ||||
| generate budget goal-setting transactions. | ||||
| For these, the dates themselves are what matters. | ||||
| .SS Events on multiple weekdays | ||||
| .PP | ||||
| The \f[C]every WEEKDAYNAME\f[R] form has a special variant with multiple | ||||
| day names, comma-separated. | ||||
| Eg: \f[C]every mon,thu,sat\f[R]. | ||||
| Also, \f[C]weekday\f[R] and \f[C]weekendday\f[R] are shorthand for | ||||
| \f[C]mon,tue,wed,thu,fri\f[R] and \f[C]sat,sun\f[R] respectively. | ||||
| .PP | ||||
| This form is mainly intended for use with \f[C]--forecast\f[R], to | ||||
| generate periodic transactions on arbitrary days of the week. | ||||
| It may be less useful with \f[C]-p\f[R], since it divides each week into | ||||
| subperiods of unequal length. | ||||
| (Because gaps between periods are not allowed; if you\[aq]d like to | ||||
| change this, see #1632.) | ||||
| .PP | ||||
| Examples: | ||||
| .PP | ||||
| .TS | ||||
| tab(@); | ||||
| lw(17.8n) lw(52.2n). | ||||
| T{ | ||||
| \f[C]-p \[dq]every mon,wed,fri\[dq]\f[R] | ||||
| T}@T{ | ||||
| dates will be Mon, Wed, Fri; periods will be Mon-Tue, Wed-Thu, Fri-Sun | ||||
| T} | ||||
| T{ | ||||
| \f[C]-p \[dq]every weekday\[dq]\f[R] | ||||
| T}@T{ | ||||
| dates will be Mon, Tue, Wed, Thu, Fri; periods will be Mon, Tue, Wed, | ||||
| Thu, Fri-Sun | ||||
| T} | ||||
| T{ | ||||
| \f[C]-p \[dq]every weekendday\[dq]\f[R] | ||||
| T}@T{ | ||||
| dates will be Sat, Sun; periods will be Sat, Sun-Fri | ||||
| T} | ||||
| .TE | ||||
| .SH DEPTH | ||||
| .PP | ||||
| With the \f[C]--depth N\f[R] option (short form: \f[C]-N\f[R]), commands | ||||
| like account, balance and register will show only the uppermost accounts | ||||
| in the account tree, down to level N. | ||||
| With the \f[C]--depth NUM\f[R] option (short form: \f[C]-NUM\f[R]), | ||||
| commands like account, balance and register will show only the uppermost | ||||
| accounts in the account tree, down to level NUM. | ||||
| Use this when you want a summary with less detail. | ||||
| This flag has the same effect as a \f[C]depth:\f[R] query argument (so | ||||
| \f[C]-2\f[R], \f[C]--depth=2\f[R] or \f[C]depth:2\f[R] are equivalent). | ||||
| This flag has the same effect as a \f[C]depth:\f[R] query argument: | ||||
| \f[C]depth:2\f[R], \f[C]--depth=2\f[R] or \f[C]-2\f[R] are equivalent. | ||||
| .SH QUERIES | ||||
| .PP | ||||
| One of hledger\[aq]s strengths is being able to quickly report on a | ||||
| @ -2256,6 +2369,24 @@ If you already have tables created via SQL output of hledger, you would | ||||
| probably want to either clear tables of existing data (via | ||||
| \f[C]delete\f[R] or \f[C]truncate\f[R] SQL statements) or drop tables | ||||
| completely as otherwise your postings will be duped. | ||||
| .SS Commodity styles | ||||
| .PP | ||||
| The display style of a commodity/currence is inferred according to the | ||||
| rules described in Commodity display style. | ||||
| The inferred display style can be overriden by an optional | ||||
| \f[C]-c/--commodity-style\f[R] option. | ||||
| For example, the following will override the display style for dollars. | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger print -c \[aq]$1.000,0\[aq] | ||||
| \f[R] | ||||
| .fi | ||||
| .PP | ||||
| The format specification of the style is identical to the commodity | ||||
| display style specification for the commodity directive. | ||||
| The command line option can be supplied repeatedly to override the | ||||
| display style for multiple commodity/currency symbols. | ||||
| .SH COMMANDS | ||||
| .PP | ||||
| hledger provides a number of commands for producing reports and managing | ||||
| @ -2628,6 +2759,8 @@ or actual and planned balance changes (\f[C]--budget\f[R]) | ||||
| or value of balance changes (\f[C]-V\f[R]) | ||||
| .IP \[bu] 2 | ||||
| or change of balance values (\f[C]--valuechange\f[R]) | ||||
| .IP \[bu] 2 | ||||
| or unrealised capital gain/loss (\f[C]--gain\f[R]) | ||||
| .PP | ||||
| \&..in.. | ||||
| .IP \[bu] 2 | ||||
| @ -2686,11 +2819,11 @@ end of the journal period (more on this below). | ||||
| .PP | ||||
| Accounts are sorted by declaration order if any, and then alphabetically | ||||
| by account name. | ||||
| For instance, using examples/sample.journal: | ||||
| For instance (using examples/sample.journal): | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger bal | ||||
| $ hledger -f examples/sample.journal bal | ||||
|                   $1  assets:bank:saving | ||||
|                  $-2  assets:cash | ||||
|                   $1  expenses:food | ||||
| @ -2735,7 +2868,7 @@ Eg: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger bal --cleared assets date:200806 | ||||
| $ hledger -f examples/sample.journal bal --cleared assets date:200806 | ||||
|                  $-2  assets:cash | ||||
| -------------------- | ||||
|                  $-2   | ||||
| @ -2751,7 +2884,7 @@ subaccounts\[aq] \[dq]leaf\[dq] names indented below their parent: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger balance | ||||
| $ hledger -f examples/sample.journal balance | ||||
|                  $-1  assets | ||||
|                   $1    bank:saving | ||||
|                  $-2    cash | ||||
| @ -2785,31 +2918,35 @@ Each group of sibling accounts (ie, under a common parent) is sorted | ||||
| separately. | ||||
| .SS Depth limiting | ||||
| .PP | ||||
| With a \f[C]depth:N\f[R] query, or \f[C]--depth N\f[R] option, or just | ||||
| \f[C]-N\f[R], balance reports will show accounts only to the specified | ||||
| depth, hiding the deeper subaccounts. | ||||
| With a \f[C]depth:NUM\f[R] query, or \f[C]--depth NUM\f[R] option, or | ||||
| just \f[C]-NUM\f[R] (eg: \f[C]-3\f[R]) balance reports will show | ||||
| accounts only to the specified depth, hiding the deeper subaccounts. | ||||
| This can be useful for getting an overview without too much detail. | ||||
| .PP | ||||
| Account balances at the depth limit always include the balances from any | ||||
| hidden subaccounts (even in list mode). | ||||
| This can be useful for getting an overview. | ||||
| deeper subaccounts (even in list mode). | ||||
| Eg, limiting to depth 1: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger balance -N -1 | ||||
| $ hledger -f examples/sample.journal balance -1 | ||||
|                  $-1  assets | ||||
|                   $2  expenses | ||||
|                  $-2  income | ||||
|                   $1  liabilities | ||||
| -------------------- | ||||
|                    0   | ||||
| \f[R] | ||||
| .fi | ||||
| .SS Dropping top-level accounts | ||||
| .PP | ||||
| You can also hide top-level account name parts, using | ||||
| \f[C]--drop N\f[R]. | ||||
| You can also hide one or more top-level account name parts, using | ||||
| \f[C]--drop NUM\f[R]. | ||||
| This can be useful for hiding repetitive top-level account names: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger bal expenses --drop 1 | ||||
| $ hledger -f examples/sample.journal bal expenses --drop 1 | ||||
|                   $1  food | ||||
|                   $1  supplies | ||||
| -------------------- | ||||
| @ -2827,7 +2964,7 @@ periods (and a title): | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger balance --quarterly income expenses -E | ||||
| $ hledger -f examples/sample.journal bal --quarterly income expenses -E | ||||
| Balance changes in 2008: | ||||
| 
 | ||||
|                    ||  2008q1  2008q2  2008q3  2008q4  | ||||
| @ -2974,7 +3111,7 @@ value expressed as a percentage of the (column) total: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger bal expenses -Q -% | ||||
| $ hledger -f examples/sample.journal bal expenses -Q -% | ||||
| Balance changes in 2008: | ||||
| 
 | ||||
|                    || 2008Q1   2008Q2  2008Q3  2008Q4  | ||||
| @ -3070,7 +3207,11 @@ It is one of: | ||||
| \f[C]--budget\f[R] : like --sum but also show a goal amount | ||||
| .IP \[bu] 2 | ||||
| \f[C]--valuechange\f[R] : show the change in period-end historical | ||||
| balance values | ||||
| balance values (caused by deposits, withdrawals, and/or market price | ||||
| fluctuations) | ||||
| .IP \[bu] 2 | ||||
| \f[C]--gain\f[R] : show the unrealised capital gain/loss, (the current | ||||
| valued balance minus each amount\[aq]s original cost) | ||||
| .PP | ||||
| \f[B]Accumulation type:\f[R] | ||||
| .PD 0 | ||||
| @ -3112,7 +3253,7 @@ cost | ||||
| \f[C]--value=then[,COMM]\f[R] : show value at transaction dates | ||||
| .IP \[bu] 2 | ||||
| \f[C]--value=end[,COMM]\f[R] : show value at period end date(s) | ||||
| (\f[B]default with \f[CB]--valuechange\f[B]\f[R]) | ||||
| (\f[B]default with \f[CB]--valuechange\f[B], \f[CB]--gain\f[B]\f[R]) | ||||
| .IP \[bu] 2 | ||||
| \f[C]--value=now[,COMM]\f[R] : show value at today\[aq]s date | ||||
| .IP \[bu] 2 | ||||
| @ -3570,7 +3711,7 @@ Eg: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger balance --format \[dq]%20(account) %12(total)\[dq] | ||||
| $ hledger -f examples/sample.journal balance --format \[dq]%20(account) %12(total)\[dq] | ||||
|               assets          $-1 | ||||
|          bank:saving           $1 | ||||
|                 cash          $-2 | ||||
| @ -3938,19 +4079,42 @@ whichever is later. | ||||
| .PP | ||||
| Unless you are running \f[C]close\f[R] on exactly the first day of the | ||||
| new period, you\[aq]ll want to override the closing date. | ||||
| This is done by specifying a report period, where \[dq]last day of the | ||||
| This is done by specifying a report end date, where \[dq]last day of the | ||||
| report period\[dq] will be the closing date. | ||||
| The opening date is always the following day. | ||||
| So to close on 2020-12-31 and open on 2021-01-01, any of these work | ||||
| .IP \[bu] 2 | ||||
| \f[C]-p 2020\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]date:2020\f[R] | ||||
| .IP \[bu] 2 | ||||
| \f[C]-e 2021-01-01\f[R] (remember \f[C]-e\f[R] specifies an exclusive | ||||
| end date) | ||||
| .IP \[bu] 2 | ||||
| So to close on (end of) 2020-12-31 and open on (start of) 2021-01-01, | ||||
| any of these will work: | ||||
| .PP | ||||
| .TS | ||||
| tab(@); | ||||
| l l. | ||||
| T{ | ||||
| end date argument | ||||
| T}@T{ | ||||
| explanation | ||||
| T} | ||||
| _ | ||||
| T{ | ||||
| \f[C]-e 2021-01-01\f[R] | ||||
| T}@T{ | ||||
| end dates are exclusive | ||||
| T} | ||||
| T{ | ||||
| \f[C]-e 2021\f[R] | ||||
| T}@T{ | ||||
| equivalent, per smart dates | ||||
| T} | ||||
| T{ | ||||
| \f[C]-p 2020\f[R] | ||||
| T}@T{ | ||||
| equivalent, the period\[aq]s begin date is ignored | ||||
| T} | ||||
| T{ | ||||
| \f[C]date:2020\f[R] | ||||
| T}@T{ | ||||
| equivalent query | ||||
| T} | ||||
| .TE | ||||
| .SS Example: close asset/liability accounts for file transition | ||||
| .PP | ||||
| Carrying asset/liability balances from 2020.journal into a new file for | ||||
| @ -4010,7 +4174,7 @@ like this: | ||||
| ; 2019.journal | ||||
| 2019-01-01 opening balances  ; earliest opening txn, no tag here | ||||
| \&... | ||||
| 2019-12-31 closing balances  ; close:2019 | ||||
| 2019-12-31 closing balances  ; clopen:2020 | ||||
| \&... | ||||
| \f[R] | ||||
| .fi | ||||
| @ -4018,9 +4182,9 @@ like this: | ||||
| .nf | ||||
| \f[C] | ||||
| ; 2020.journal | ||||
| 2020-01-01 opening balances  ; open:2020 | ||||
| 2020-01-01 opening balances  ; clopen:2020 | ||||
| \&... | ||||
| 2020-12-31 closing balances  ; close:2020 | ||||
| 2020-12-31 closing balances  ; clopen:2021 | ||||
| \&... | ||||
| \f[R] | ||||
| .fi | ||||
| @ -4028,7 +4192,7 @@ like this: | ||||
| .nf | ||||
| \f[C] | ||||
| ; 2021.journal | ||||
| 2021-01-01 opening balances  ; open:2021 | ||||
| 2021-01-01 opening balances  ; clopen:2021 | ||||
| \&... | ||||
| \f[R] | ||||
| .fi | ||||
| @ -4048,14 +4212,11 @@ you could do eg: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger -f all.journal reg -H checking not:tag:\[aq]open|close\[aq] | ||||
| $ hledger -f all.journal reg -H checking not:tag:clopen | ||||
|     # all years checking register, hiding non-essential opening/closing txns | ||||
| 
 | ||||
| $ hledger -f all.journal bs -p 2020 not:tag:close=2020 | ||||
| $ hledger -f all.journal bs -p 2020 not:tag:clopen=2020 | ||||
|     # 2020 year end balances, suppressing 2020 closing txn | ||||
| 
 | ||||
| $ hledger -f 2020.journal bs not:tag:close | ||||
|     # 2020 year end balances, easier case | ||||
| \f[R] | ||||
| .fi | ||||
| .SS close and balance assertions | ||||
| @ -4104,35 +4265,45 @@ single-day transactions): | ||||
| .fi | ||||
| .SS Example: close revenue/expense accounts to retained earnings | ||||
| .PP | ||||
| Here, the opening transaction is supressed with \f[C]--close\f[R], as | ||||
| it\[aq]s probably not needed. | ||||
| Also you\[aq]ll want to use a different equity account name: | ||||
| For this, use \f[C]--close\f[R] to suppress the opening transaction, as | ||||
| it\[aq]s not needed. | ||||
| Also you\[aq]ll want to change the equity account name to your | ||||
| equivalent of \[dq]equity:retained earnings\[dq]. | ||||
| .PP | ||||
| Closing 2021\[aq]s first quarter revenues/expenses: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger close -f 2021.journal -p 2021Q1 --close --close-acct=\[aq]equity:retained earnings\[aq] revenues expenses >> 2021.journal | ||||
|     # close 2021 first quarter revenues/expenses | ||||
| $ hledger close -f 2021.journal --close revenues expenses -p 2021Q1 \[rs] | ||||
|     --close-acct=\[aq]equity:retained earnings\[aq] >> 2021.journal | ||||
| \f[R] | ||||
| .fi | ||||
| .PP | ||||
| Or, operating on the default journal: | ||||
| The same, using the default journal and current year: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger close -p Q1 --close --close-acct=\[aq]equity:retained earnings\[aq] revenues expenses >> $LEDGER_FILE | ||||
|     # close current year\[aq]s first quarter revenues/expenses | ||||
| $ hledger close --close revenues expenses -p Q1 \[rs] | ||||
|     --close-acct=\[aq]equity:retained earnings\[aq] >> $LEDGER_FILE | ||||
| \f[R] | ||||
| .fi | ||||
| .PP | ||||
| Now, eg: | ||||
| Now, the first quarter\[aq]s balance sheet should show a zero (unless | ||||
| you are using \[at]/\[at]\[at] notation without equity postings): | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger bse -p Q1 | ||||
|     # Q1 full balance sheet, total should be zero | ||||
| 
 | ||||
| $ hledger is -p Q1 not:\[aq]retained earnings\[aq] | ||||
|     # Q1 income statement, must suppress the closing txn | ||||
| \f[R] | ||||
| .fi | ||||
| .PP | ||||
| And we must suppress the closing transaction to see the first | ||||
| quarter\[aq]s income statement (using the description; | ||||
| \f[C]not:\[aq]retained earnings\[aq]\f[R] won\[aq]t work here): | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| $ hledger is -p Q1 not:desc:\[aq]closing balances\[aq] | ||||
| \f[R] | ||||
| .fi | ||||
| .SS codes | ||||
| @ -4275,8 +4446,13 @@ help | ||||
| .PD | ||||
| Show the hledger user manual in one of several formats, optionally | ||||
| positioned at a given TOPIC (if possible). | ||||
| TOPIC is any heading, or heading prefix, in the manual. | ||||
| Some examples: commands, print, \[aq]auto postings\[aq], periodic. | ||||
| .PP | ||||
| TOPIC is any heading in the manual, or the start of any heading (but not | ||||
| the middle). | ||||
| It is case insensitive. | ||||
| .PP | ||||
| Some examples: \f[C]commands\f[R], \f[C]print\f[R], \f[C]forecast\f[R], | ||||
| \f[C]\[dq]auto postings\[dq]\f[R], \f[C]\[dq]commodity column\[dq]\f[R]. | ||||
| .PP | ||||
| This command shows the user manual built in to this hledger version. | ||||
| It can be useful if the correct version of the hledger manual, or the | ||||
| @ -6036,6 +6212,9 @@ commodity 1000.00000000 BTC | ||||
| commodity 1 000. | ||||
| \f[R] | ||||
| .fi | ||||
| .PP | ||||
| The inferred commodity style can be overridden by supplying a command | ||||
| line option. | ||||
| .SS Rounding | ||||
| .PP | ||||
| Amounts are stored internally as decimal numbers with up to 255 decimal | ||||
| @ -6714,6 +6893,9 @@ commodity 1 000 000. | ||||
| Note hledger normally uses banker\[aq]s rounding, so 0.5 displayed with | ||||
| zero decimal digits is \[dq]0\[dq]. | ||||
| (More at Commodity display style.) | ||||
| .PP | ||||
| Even in the presence of commodity directives, the commodity display | ||||
| style can still be overridden by supplying a command line option. | ||||
| .SS Commodity error checking | ||||
| .PP | ||||
| In strict mode, enabled with the \f[C]-s\f[R]/\f[C]--strict\f[R] flag, | ||||
| @ -6910,17 +7092,18 @@ report. | ||||
| not investments or receivables.) | ||||
| .SS Declaring account types | ||||
| .PP | ||||
| Generally, to make these reports work you should declare your top-level | ||||
| accounts and their types, using account directives with \f[C]type:\f[R] | ||||
| tags. | ||||
| .PP | ||||
| The tag\[aq]s value should be one of: \f[C]Asset\f[R], | ||||
| \f[C]Liability\f[R], \f[C]Equity\f[R], \f[C]Revenue\f[R], | ||||
| \f[C]Expense\f[R], \f[C]Cash\f[R], \f[C]A\f[R], \f[C]L\f[R], | ||||
| \f[C]E\f[R], \f[C]R\f[R], \f[C]X\f[R], \f[C]C\f[R] (all case | ||||
| insensitive). | ||||
| The type is inherited by all subaccounts except where they override it. | ||||
| Here\[aq]s a complete example: | ||||
| To make the balancesheet/balancesheetequity/cashflow/incomestatement | ||||
| reports work, generally you should declare your top-level accounts, and | ||||
| their types. | ||||
| For each top-level account, write an account directive, with a | ||||
| \f[C]type:\f[R] tag. | ||||
| The tag\[aq]s value can be any of \f[C]Asset\f[R], \f[C]Liability\f[R], | ||||
| \f[C]Equity\f[R], \f[C]Revenue\f[R], \f[C]Expense\f[R], \f[C]Cash\f[R], | ||||
| or (for short) \f[C]A\f[R], \f[C]L\f[R], \f[C]E\f[R], \f[C]R\f[R], | ||||
| \f[C]X\f[R], \f[C]C\f[R] (case insensitive). | ||||
| An account\[aq]s type is inherited by its subaccounts, unless they | ||||
| declare a different type. | ||||
| Here\[aq]s an example, declaring all six account types: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| @ -6933,15 +7116,30 @@ account revenues     ; type: Revenue | ||||
| account expenses     ; type: Expense | ||||
| \f[R] | ||||
| .fi | ||||
| .SS Auto-detected account types | ||||
| .PP | ||||
| If you happen to use common english top-level account names, you may not | ||||
| need to declare account types, as they will be detected automatically | ||||
| using the following rules: | ||||
| There is also an older syntax, which is deprecated and will be dropped | ||||
| soon (A, L, E, R or X separated from the account name by two or more | ||||
| spaces): | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
|  If account\[aq]s name matches this regular expression:                 | its type is: | ||||
| account assets       A | ||||
| account liabilities  L | ||||
| account equity       E | ||||
| account revenues     R | ||||
| account expenses     X | ||||
| \f[R] | ||||
| .fi | ||||
| .SS Auto-detected account types | ||||
| .PP | ||||
| hledger tries to find at least one top level account in each of the six | ||||
| account types (Asset, Liability, Equity, Revenue, Expense, Cash). | ||||
| When no accounts have been declared for a particular type, hledger tries | ||||
| to auto-detect some accounts by name, using regular expressions: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
|  If account\[aq]s name matches this case insensitive regular expression:| its type is: | ||||
| ------------------------------------------------------------------- | ------------ | ||||
|  \[ha]assets?(:|$)                                                      |  | ||||
|    and does not contain regexp (investment|receivable|:A/R|:fixed)  | Cash | ||||
| @ -6953,17 +7151,27 @@ using the following rules: | ||||
| \f[R] | ||||
| .fi | ||||
| .PP | ||||
| Even so, explicit declarations may be a good idea, for clarity and | ||||
| predictability. | ||||
| .SS Interference from auto-detected account types | ||||
| For people using standard english account names, this feature helps | ||||
| hledger\[aq]s high-level reports work out of the box with minimal | ||||
| configuration. | ||||
| .PP | ||||
| If you assign any account type, it\[aq]s a good idea to assign all of | ||||
| them, to prevent any confusion from mixing declared and auto-detected | ||||
| types. | ||||
| Although it\[aq]s unlikely to happen in real life, here\[aq]s an | ||||
| example: with the following journal, \f[C]balancesheetequity\f[R] shows | ||||
| \[dq]liabilities\[dq] in both Liabilities and Equity sections. | ||||
| Declaring another account as \f[C]type:Liability\f[R] would fix it: | ||||
| If you use non-english account names, you should declare account types | ||||
| to make these reports work. | ||||
| And more generally, declaring accounts and types is usually a good idea, | ||||
| for increased clarity and predictability (and for the other benefits of | ||||
| account directives: error checking, display order, etc). | ||||
| .PP | ||||
| Notes: | ||||
| .IP \[bu] 2 | ||||
| When any account is declared as some type, this disables auto-detection | ||||
| for that particular type. | ||||
| .IP \[bu] 2 | ||||
| If you declare any account\[aq]s type, it\[aq]s a good idea to declare | ||||
| an account for all six types, since a mix of declared and auto-detected | ||||
| types can cause confusion. | ||||
| For example, here liabilities is declared to be Equity, but would also | ||||
| be auto-detected as Liability, since no Liability account is declared: | ||||
| .RS 2 | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| @ -6975,21 +7183,7 @@ account liabilities  ; type:Equity | ||||
|   equity       -2 | ||||
| \f[R] | ||||
| .fi | ||||
| .SS Old account type syntax | ||||
| .PP | ||||
| In some hledger journals you might instead see this old syntax (the | ||||
| letters ALERX, separated from the account name by two or more spaces); | ||||
| this is deprecated and may be removed soon: | ||||
| .IP | ||||
| .nf | ||||
| \f[C] | ||||
| account assets       A | ||||
| account liabilities  L | ||||
| account equity       E | ||||
| account revenues     R | ||||
| account expenses     X | ||||
| \f[R] | ||||
| .fi | ||||
| .RE | ||||
| .SS Account display order | ||||
| .PP | ||||
| Account directives also set the order in which accounts are displayed, | ||||
| @ -7356,53 +7550,83 @@ expression. | ||||
| .PP | ||||
| The \f[C]--forecast\f[R] flag activates any periodic transaction rules | ||||
| in the journal. | ||||
| They will generate temporary recurring transactions, which are not saved | ||||
| in the journal, but will appear in all reports (eg print). | ||||
| This can be useful for estimating balances into the future, or | ||||
| These will generate temporary additional transactions, usually recurring | ||||
| and in the future, which will appear in all reports. | ||||
| \f[C]hledger print --forecast\f[R] is a good way to see them. | ||||
| .PP | ||||
| This can be useful for estimating balances into the future, perhaps | ||||
| experimenting with different scenarios. | ||||
| Or, it can be used as a data entry aid: describe recurring transactions, | ||||
| and every so often copy the output of \f[C]print --forecast\f[R] into | ||||
| the journal. | ||||
| .PP | ||||
| These transactions will have an extra tag indicating which periodic rule | ||||
| generated them: \f[C]generated-transaction:\[ti] PERIODICEXPR\f[R]. | ||||
| And a similar, hidden tag (beginning with an underscore) which, because | ||||
| it\[aq]s never displayed by print, can be used to match transactions | ||||
| generated \[dq]just now\[dq]: | ||||
| \f[C]_generated-transaction:\[ti] PERIODICEXPR\f[R]. | ||||
| It could also be useful for scripted data entry: you could describe | ||||
| recurring transactions, and every so often copy the output of | ||||
| \f[C]print --forecast\f[R] into the journal. | ||||
| .PP | ||||
| Periodic transactions are generated within some forecast period. | ||||
| By default, this | ||||
| The generated transactions will have an extra tag, like | ||||
| \f[C]generated-transaction:\[ti] PERIODICEXPR\f[R], indicating which | ||||
| periodic rule generated them. | ||||
| There is also a similar, hidden tag, named | ||||
| \f[C]_generated-transaction:\f[R], which you can use to reliably match | ||||
| transactions generated \[dq]just now\[dq] (rather than \f[C]print\f[R]ed | ||||
| in the past). | ||||
| .PP | ||||
| The forecast transactions are generated within a \f[I]forecast | ||||
| period\f[R], which is independent of the report period. | ||||
| (Forecast period sets the bounds for generated transactions, report | ||||
| period controls which transactions are reported.) The forecast period | ||||
| begins on: | ||||
| .IP \[bu] 2 | ||||
| begins on the later of | ||||
| the start date provided within \f[C]--forecast\f[R]\[aq]s argument, if | ||||
| any | ||||
| .IP \[bu] 2 | ||||
| otherwise, the later of | ||||
| .RS 2 | ||||
| .IP \[bu] 2 | ||||
| the report start date if specified with -b/-p/date: | ||||
| the report start date, if specified (with | ||||
| \f[C]-b\f[R]/\f[C]-p\f[R]/\f[C]date:\f[R]) | ||||
| .IP \[bu] 2 | ||||
| the day after the latest normal (non-periodic) transaction in the | ||||
| journal, or today if there are no normal transactions. | ||||
| the day after the latest ordinary transaction in the journal, if any | ||||
| .RE | ||||
| .IP \[bu] 2 | ||||
| ends on the report end date if specified with -e/-p/date:, or 6 months | ||||
| (180 days) from today. | ||||
| otherwise today. | ||||
| .PP | ||||
| This means that periodic transactions will begin only after the latest | ||||
| recorded transaction. | ||||
| And a recorded transaction dated in the future can prevent generation of | ||||
| periodic transactions. | ||||
| (You can avoid that by writing the future transaction as a one-time | ||||
| periodic rule instead - put tilde before the date, eg | ||||
| \f[C]\[ti] YYYY-MM-DD ...\f[R]). | ||||
| It ends on: | ||||
| .IP \[bu] 2 | ||||
| the end date provided within \f[C]--forecast\f[R]\[aq]s argument, if any | ||||
| .IP \[bu] 2 | ||||
| otherwise, the report end date, if specified (with | ||||
| \f[C]-e\f[R]/\f[C]-p\f[R]/\f[C]date:\f[R]) | ||||
| .IP \[bu] 2 | ||||
| otherwise 180 days (6 months) from today. | ||||
| .PP | ||||
| Note, this means that ordinary transactions will suppress periodic | ||||
| transactions, by default; the periodic transactions will not start until | ||||
| after the last ordinary transaction. | ||||
| This is usually convenient, but you can get around it in two ways: | ||||
| .IP \[bu] 2 | ||||
| If you need to record some transactions in the future, make them | ||||
| periodic transactions (with a single occurrence, eg: | ||||
| \f[C]\[ti] YYYY-MM-DD\f[R]) rather than ordinary transactions. | ||||
| That way they won\[aq]t suppress other periodic transactions. | ||||
| .IP \[bu] 2 | ||||
| Or give \f[C]--forecast\f[R] a period expression argument. | ||||
| A forecast period specified this way can overlap ordinary transactions, | ||||
| and need not be in the future. | ||||
| Some things to note: | ||||
| .RS 2 | ||||
| .IP \[bu] 2 | ||||
| You must use \f[C]=\f[R] between flag and argument; a space won\[aq]t | ||||
| work. | ||||
| .IP \[bu] 2 | ||||
| The period expression can specify the forecast period\[aq]s start date, | ||||
| end date, or both. | ||||
| See also Report start & end date. | ||||
| .IP \[bu] 2 | ||||
| The period expression should not specify a report interval. | ||||
| (Each periodic transaction rule specifies its own interval.) | ||||
| .RE | ||||
| .PP | ||||
| Or, you can set your own arbitrary \[dq]forecast period\[dq], which can | ||||
| overlap recorded transactions, and need not be in the future, by | ||||
| providing an option argument, like \f[C]--forecast=PERIODEXPR\f[R]. | ||||
| Note the equals sign is required, a space won\[aq]t work. | ||||
| PERIODEXPR is a period expression, which can specify the start date, end | ||||
| date, or both, like in a \f[C]date:\f[R] query. | ||||
| (See also hledger.1 -> Report start & end date). | ||||
| Some examples: \f[C]--forecast=202001-202004\f[R], | ||||
| \f[C]--forecast=jan-\f[R], \f[C]--forecast=2020\f[R]. | ||||
| \f[C]--forecast=jan-\f[R], \f[C]--forecast=2021\f[R]. | ||||
| .SS Budgeting with periodic transactions | ||||
| .PP | ||||
| With the \f[C]--budget\f[R] flag, currently supported by the balance | ||||
| @ -8088,7 +8312,9 @@ Tips: | ||||
| Interpolation strips outer whitespace (so a CSV value like | ||||
| \f[C]\[dq] 1 \[dq]\f[R] becomes \f[C]1\f[R] when interpolated) (#1051). | ||||
| .IP \[bu] 2 | ||||
| See also Tips below. | ||||
| Interpolations always refer to a CSV field - you can\[aq]t interpolate a | ||||
| hledger field. | ||||
| (See Referencing other fields below). | ||||
| .SS Field names | ||||
| .PP | ||||
| Here are the standard hledger field (and pseudo-field) names, which you | ||||
|  | ||||
							
								
								
									
										4473
									
								
								hledger/hledger.info
									
									
									
									
									
								
							
							
						
						
									
										4473
									
								
								hledger/hledger.info
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -543,6 +543,10 @@ TIME PERIODS | ||||
|        20181232      8 digits with an invalid day gives an error | ||||
|        201801012     9+ digits beginning with a valid YYYYMMDD gives an error | ||||
| 
 | ||||
|        Note "today's date" can be overridden with the --today option, in  case | ||||
|        it's  needed  for  testing  or for recreating old reports.  (Except for | ||||
|        periodic transaction rules; those are not affected by --today.) | ||||
| 
 | ||||
| 
 | ||||
|    Report start & end date | ||||
|        By default, most hledger reports will show the full span of time repre- | ||||
| @ -557,8 +561,8 @@ TIME PERIODS | ||||
| 
 | ||||
|        Some notes: | ||||
| 
 | ||||
|        o As in Ledger, end dates are exclusive, so you need to write the  date | ||||
|          after the last day you want to include. | ||||
|        o End dates are exclusive, as in Ledger, so you should write  the  date | ||||
|          after the last day you want to see in the report. | ||||
| 
 | ||||
|        o As  noted  in reporting options: among start/end dates specified with | ||||
|          options, the last (i.e.  right-most) option takes precedence. | ||||
| @ -593,7 +597,15 @@ TIME PERIODS | ||||
|        The following "standard" report intervals can be enabled by using their | ||||
|        corresponding flag: | ||||
| 
 | ||||
|        -D/--daily, -W/--weekly, -M/--monthly, -Q/--quarterly, -Y/--yearly. | ||||
|        o -D/--daily | ||||
| 
 | ||||
|        o -W/--weekly | ||||
| 
 | ||||
|        o -M/--monthly | ||||
| 
 | ||||
|        o -Q/--quarterly | ||||
| 
 | ||||
|        o -Y/--yearly | ||||
| 
 | ||||
|        These standard intervals always start on natural  interval  boundaries: | ||||
|        eg  --weekly  starts  on  mondays, --monthly starts on the first of the | ||||
| @ -614,6 +626,19 @@ TIME PERIODS | ||||
|        requested end date).  This is done to ensure "full" first and last sub- | ||||
|        periods, so that all subperiods' numbers are comparable. | ||||
| 
 | ||||
|        To summarise: | ||||
| 
 | ||||
|        o In  multiperiod  reports,  all  subperiods  are forced to be the same | ||||
|          length, to simplify reporting. | ||||
| 
 | ||||
|        o Reports  with  the  standard  --weekly/--monthly/--quarterly/--yearly | ||||
|          intervals   are   required   to   start   on   the  first  day  of  a | ||||
|          week/month/quarter/year.  We'd like  more  flexibility  here  but  it | ||||
|          isn't supported yet. | ||||
| 
 | ||||
|        o --period  (below) can specify more complex intervals, starting on any | ||||
|          date. | ||||
| 
 | ||||
|    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. | ||||
| @ -622,6 +647,7 @@ TIME PERIODS | ||||
|        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 | ||||
| @ -638,7 +664,6 @@ TIME PERIODS | ||||
| 
 | ||||
| 
 | ||||
|        -p "1/1 4/1" | ||||
| 
 | ||||
|        -p "january-apr" | ||||
|        -p "this year to 4/1" | ||||
| 
 | ||||
| @ -674,21 +699,22 @@ TIME PERIODS | ||||
|        -p "q4"       fourth quarter of the cur- | ||||
|                      rent year | ||||
| 
 | ||||
|        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: | ||||
|    Period expressions with a report interval | ||||
|        -p/--period's argument can also begin with, or entirely consist  of,  a | ||||
|        report interval.  This should be separated from the start/end dates (if | ||||
|        any) by a space, or the word in.  The basic intervals (which  can  also | ||||
|        be  written  as  command  line flags) are daily, weekly, monthly, quar- | ||||
|        terly, and yearly.  Some 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. | ||||
|        As mentioned above, the weekly, monthly, quarterly and yearly intervals | ||||
|        require  a  report  start  date that is the first day of a week, month, | ||||
|        quarter or year.  And, report  start/end  dates  will  be  expanded  if | ||||
|        needed to span a whole number of intervals. | ||||
| 
 | ||||
|        For example: | ||||
| 
 | ||||
| @ -702,14 +728,22 @@ TIME PERIODS | ||||
|        -p      "yearly      from   starts on 2009/01/01, first day of 2009 | ||||
|        2009-12-29" | ||||
| 
 | ||||
|        The  following  more  complex  report  intervals  are  also  supported: | ||||
|        biweekly, fortnightly,  bimonthly,  every  day|week|month|quarter|year, | ||||
|        every N days|weeks|months|quarters|years. | ||||
|    More complex report intervals | ||||
|        Some more complex kinds  of  interval  are  also  supported  in  period | ||||
|        expressions: | ||||
| 
 | ||||
|        All  of  these  will start on the first day of the requested period and | ||||
|        end on the last one, as described above. | ||||
|        o biweekly | ||||
| 
 | ||||
|        Examples: | ||||
|        o fortnightly | ||||
| 
 | ||||
|        o bimonthly | ||||
| 
 | ||||
|        o every day|week|month|quarter|year | ||||
| 
 | ||||
|        o every N days|weeks|months|quarters|years | ||||
| 
 | ||||
|        These  too will cause report start/end dates to be expanded, if needed, | ||||
|        to span a whole number of intervals.  Examples: | ||||
| 
 | ||||
| 
 | ||||
|        -p "bimonthly from 2008"    periods will have boundaries on  2008/01/01, | ||||
| @ -718,44 +752,98 @@ TIME PERIODS | ||||
|        -p  "every  5  month from   periods will have boundaries on  2009/03/01, | ||||
|        2009/03"                    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: | ||||
|    Intervals with custom start date | ||||
|        All  intervals  mentioned  above are required to start on their natural | ||||
|        calendar boundaries, but the following intervals can start on any date: | ||||
| 
 | ||||
|        every    Nth     day     of     week,     every     WEEKDAYNAME     (eg | ||||
|        mon|tue|wed|thu|fri|sat|sun), every Nth day [of month], every Nth WEEK- | ||||
|        DAYNAME [of month], every MM/DD [of year], every  Nth  MMM  [of  year], | ||||
|        every MMM Nth [of year]. | ||||
|        Weekly on custom day: | ||||
| 
 | ||||
|        o every  Nth  day of week (th, nd, rd, or st are all accepted after the | ||||
|          number) | ||||
| 
 | ||||
|        o every WEEKDAYNAME (full or three-letter english  weekday  name,  case | ||||
|          insensitive) | ||||
| 
 | ||||
|        Monthly on custom day: | ||||
| 
 | ||||
|        o every Nth day [of month] | ||||
| 
 | ||||
|        o every Nth WEEKDAYNAME [of month] | ||||
| 
 | ||||
|        Yearly on custom day: | ||||
| 
 | ||||
|        o every MM/DD [of year] (month number and day of month number) | ||||
| 
 | ||||
|        o every  MONTHNAME  DDth  [of year] (full or three-letter english month | ||||
|          name, case insensitive, and day of month number) | ||||
| 
 | ||||
|        o every DDth MONTHNAME [of year] (equivalent to the above) | ||||
| 
 | ||||
|        Examples: | ||||
| 
 | ||||
| 
 | ||||
|        -p  "every  2nd  day  of   periods will go from Tue to Tue | ||||
|        week" | ||||
| 
 | ||||
|        -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 11/05"           yearly  periods  with  boundaries  on  5th  of | ||||
|                                   November | ||||
|        -p "every 5th November"    same | ||||
|        -p "every Nov 5th"         same | ||||
| 
 | ||||
|        Show historical balances at end of 15th each month (N is exclusive  end | ||||
|        date): | ||||
|        Show historical balances at end of the 15th day of each month (N is  an | ||||
|        end date, exclusive as always): | ||||
| 
 | ||||
|        hledger balance -H -p "every 16th day" | ||||
|               $ 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): | ||||
|        Group  postings  from  the  start  of wednesday to end of the following | ||||
|        tuesday (N is both (inclusive) start date and (exclusive) end date): | ||||
| 
 | ||||
|        hledger register checking -p "every 3rd day of week" | ||||
|               $ hledger register checking -p "every 3rd day of week" | ||||
| 
 | ||||
|    Periods or dates ? | ||||
|        Report intervals like the above are most often used  with  -p|--period, | ||||
|        to  divide reports into multiple subperiods - each generated date marks | ||||
|        a subperiod boundary.  Here, the periods between the dates  are  what's | ||||
|        important. | ||||
| 
 | ||||
|        But  report  intervals  can  also  be  used with --forecast to generate | ||||
|        future transactions, or with balance --budget to generate budget  goal- | ||||
|        setting  transactions.   For  these, the dates themselves are what mat- | ||||
|        ters. | ||||
| 
 | ||||
|    Events on multiple weekdays | ||||
|        The every WEEKDAYNAME form has a  special  variant  with  multiple  day | ||||
|        names,  comma-separated.   Eg:  every  mon,thu,sat.   Also, weekday and | ||||
|        weekendday are shorthand for mon,tue,wed,thu,fri  and  sat,sun  respec- | ||||
|        tively. | ||||
| 
 | ||||
|        This form is mainly intended for use with --forecast, to generate peri- | ||||
|        odic transactions on arbitrary days of the week.  It may be less useful | ||||
|        with  -p, since it divides each week into subperiods of unequal length. | ||||
|        (Because gaps between periods are not allowed; if you'd like to  change | ||||
|        this, see #1632.) | ||||
| 
 | ||||
|        Examples: | ||||
| 
 | ||||
| 
 | ||||
|        -p          "every   dates will be Mon, Wed, Fri; periods  will  be  Mon- | ||||
|        mon,wed,fri"         Tue, Wed-Thu, Fri-Sun | ||||
|        -p "every weekday"   dates will be Mon, Tue, Wed, Thu, Fri; periods  will | ||||
|                             be Mon, Tue, Wed, Thu, Fri-Sun | ||||
|        -p "every weekend-   dates will be Sat, Sun; periods will be Sat, Sun-Fri | ||||
|        day" | ||||
| 
 | ||||
| DEPTH | ||||
|        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 equivalent). | ||||
|        With  the --depth NUM option (short form: -NUM), commands like account, | ||||
|        balance and register will show  only  the  uppermost  accounts  in  the | ||||
|        account tree, down to level NUM.  Use this when you want a summary with | ||||
|        less detail.  This flag has the same effect as a depth: query argument: | ||||
|        depth:2, --depth=2 or -2 are equivalent. | ||||
| 
 | ||||
| QUERIES | ||||
|        One of hledger's strengths is being able to quickly report on a precise | ||||
| @ -1249,8 +1337,6 @@ VALUATION | ||||
|        total/average   of displayed   of displayed   displayed values    of displayed   of  displayed | ||||
|                        values         values                             values         values | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|        balance  (bs, | ||||
|        bse, cf, is) | ||||
|        balance         sums      of   value     at   value  at posting   value     at   value      at | ||||
| @ -1280,6 +1366,11 @@ VALUATION | ||||
|        is,        bs   postings  in                  period at respec-   each period,   sums of post- | ||||
|        --change,  cf   period                        tive      posting   valued    at   ings | ||||
|        --change)                                     dates               period ends | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|        end  balances   sums      of   same      as   sums of values of   period   end   value      at | ||||
|        (bal  -H,  is   costs     of   --value=end    postings     from   balances,      DATE/today of | ||||
|        --H, bs, cf)    postings                      before     period   valued    at   sums of post- | ||||
| @ -1455,6 +1546,19 @@ OUTPUT | ||||
|          clear tables of existing data (via delete or truncate SQL statements) | ||||
|          or drop tables completely as otherwise your postings will be duped. | ||||
| 
 | ||||
|    Commodity styles | ||||
|        The  display style of a commodity/currence is inferred according to the | ||||
|        rules described in Commodity display style.  The inferred display style | ||||
|        can be overriden by an optional -c/--commodity-style option.  For exam- | ||||
|        ple, the following will override the display style for dollars. | ||||
| 
 | ||||
|               $ hledger print -c '$1.000,0' | ||||
| 
 | ||||
|        The format specification of the style is  identical  to  the  commodity | ||||
|        display  style  specification for the commodity directive.  The command | ||||
|        line option can be supplied repeatedly to override  the  display  style | ||||
|        for multiple commodity/currency symbols. | ||||
| 
 | ||||
| COMMANDS | ||||
|        hledger  provides a number of commands for producing reports and manag- | ||||
|        ing your data.  Run hledger with no  arguments  to  list  the  commands | ||||
| @ -1776,6 +1880,8 @@ COMMANDS | ||||
| 
 | ||||
|        o or change of balance values (--valuechange) | ||||
| 
 | ||||
|        o or unrealised capital gain/loss (--gain) | ||||
| 
 | ||||
|        ..in.. | ||||
| 
 | ||||
|        o one time period (the whole journal period by default) | ||||
| @ -1829,9 +1935,9 @@ COMMANDS | ||||
|        journal period (more on this below). | ||||
| 
 | ||||
|        Accounts  are  sorted  by declaration order if any, and then alphabeti- | ||||
|        cally by account name.  For instance, using examples/sample.journal: | ||||
|        cally by account name.  For instance (using examples/sample.journal): | ||||
| 
 | ||||
|               $ hledger bal | ||||
|               $ hledger -f examples/sample.journal bal | ||||
|                                 $1  assets:bank:saving | ||||
|                                $-2  assets:cash | ||||
|                                 $1  expenses:food | ||||
| @ -1866,7 +1972,7 @@ COMMANDS | ||||
|        cleared transactions only, etc.  by using query arguments or options to | ||||
|        limit the postings being matched.  Eg: | ||||
| 
 | ||||
|               $ hledger bal --cleared assets date:200806 | ||||
|               $ hledger -f examples/sample.journal bal --cleared assets date:200806 | ||||
|                                $-2  assets:cash | ||||
|               -------------------- | ||||
|                                $-2 | ||||
| @ -1878,7 +1984,7 @@ COMMANDS | ||||
|        With -t/--tree, the  account  hierarchy  is  shown,  with  subaccounts' | ||||
|        "leaf" names indented below their parent: | ||||
| 
 | ||||
|               $ hledger balance | ||||
|               $ hledger -f examples/sample.journal balance | ||||
|                                $-1  assets | ||||
|                                 $1    bank:saving | ||||
|                                $-2    cash | ||||
| @ -1909,22 +2015,28 @@ COMMANDS | ||||
|          separately. | ||||
| 
 | ||||
|    Depth limiting | ||||
|        With a depth:N query, or --depth N option, or just -N, balance  reports | ||||
|        will  show accounts only to the specified depth, hiding the deeper sub- | ||||
|        accounts.  Account balances at the depth limit always include the  bal- | ||||
|        ances  from  any  hidden  subaccounts (even in list mode).  This can be | ||||
|        useful for getting an overview.  Eg, limiting to depth 1: | ||||
|        With  a  depth:NUM  query, or --depth NUM option, or just -NUM (eg: -3) | ||||
|        balance reports will show accounts only to the specified depth,  hiding | ||||
|        the  deeper  subaccounts.   This  can be useful for getting an overview | ||||
|        without too much detail. | ||||
| 
 | ||||
|               $ hledger balance -N -1 | ||||
|        Account balances at the depth limit always include  the  balances  from | ||||
|        any deeper subaccounts (even in list mode).  Eg, limiting to depth 1: | ||||
| 
 | ||||
|               $ hledger -f examples/sample.journal balance -1 | ||||
|                                $-1  assets | ||||
|                                 $2  expenses | ||||
|                                $-2  income | ||||
|                                 $1  liabilities | ||||
|               -------------------- | ||||
|                                  0 | ||||
| 
 | ||||
|        You can also hide top-level account name parts, using --drop  N.   This | ||||
|        can be useful for hiding repetitive top-level account names: | ||||
|    Dropping top-level accounts | ||||
|        You  can  also  hide  one  or  more top-level account name parts, using | ||||
|        --drop NUM.  This can be useful for hiding repetitive top-level account | ||||
|        names: | ||||
| 
 | ||||
|               $ hledger bal expenses --drop 1 | ||||
|               $ hledger -f examples/sample.journal bal expenses --drop 1 | ||||
|                                 $1  food | ||||
|                                 $1  supplies | ||||
|               -------------------- | ||||
| @ -1937,7 +2049,7 @@ COMMANDS | ||||
|        ance  shows a tabular report, with columns representing successive time | ||||
|        periods (and a title): | ||||
| 
 | ||||
|               $ hledger balance --quarterly income expenses -E | ||||
|               $ hledger -f examples/sample.journal bal --quarterly income expenses -E | ||||
|               Balance changes in 2008: | ||||
| 
 | ||||
|                                  ||  2008q1  2008q2  2008q3  2008q4 | ||||
| @ -2065,7 +2177,7 @@ COMMANDS | ||||
|        With -%/--percent, balance reports show each account's value  expressed | ||||
|        as a percentage of the (column) total: | ||||
| 
 | ||||
|               $ hledger bal expenses -Q -% | ||||
|               $ hledger -f examples/sample.journal bal expenses -Q -% | ||||
|               Balance changes in 2008: | ||||
| 
 | ||||
|                                  || 2008Q1   2008Q2  2008Q3  2008Q4 | ||||
| @ -2142,7 +2254,11 @@ COMMANDS | ||||
|        o --budget : like --sum but also show a goal amount | ||||
| 
 | ||||
|        o --valuechange : show the change in period-end historical balance val- | ||||
|          ues | ||||
|          ues (caused by deposits, withdrawals, and/or  market  price  fluctua- | ||||
|          tions) | ||||
| 
 | ||||
|        o --gain  :  show the unrealised capital gain/loss, (the current valued | ||||
|          balance minus each amount's original cost) | ||||
| 
 | ||||
|        Accumulation type: | ||||
|        Which postings should be included in each cell's  calculation.   It  is | ||||
| @ -2172,7 +2288,7 @@ COMMANDS | ||||
|        o --value=then[,COMM] : show value at transaction dates | ||||
| 
 | ||||
|        o --value=end[,COMM]  :  show value at period end date(s) (default with | ||||
|          --valuechange) | ||||
|          --valuechange, --gain) | ||||
| 
 | ||||
|        o --value=now[,COMM] : show value at today's date | ||||
| 
 | ||||
| @ -2511,7 +2627,7 @@ COMMANDS | ||||
|        can use --format FMT to customise the format and content of each  line. | ||||
|        Eg: | ||||
| 
 | ||||
|               $ hledger balance --format "%20(account) %12(total)" | ||||
|               $ hledger -f examples/sample.journal balance --format "%20(account) %12(total)" | ||||
|                             assets          $-1 | ||||
|                        bank:saving           $1 | ||||
|                               cash          $-2 | ||||
| @ -2818,17 +2934,20 @@ COMMANDS | ||||
| 
 | ||||
|        Unless  you  are  running  close  on  exactly  the first day of the new | ||||
|        period, you'll want to override the closing  date.   This  is  done  by | ||||
|        specifying  a report period, where "last day of the report period" will | ||||
|        be the closing date.  The opening date is always the following day.  So | ||||
|        to close on 2020-12-31 and open on 2021-01-01, any of these work | ||||
|        specifying  a  report  end  date, where "last day of the report period" | ||||
|        will be the closing date.  The opening date  is  always  the  following | ||||
|        day.   So  to  close  on  (end  of)  2020-12-31  and open on (start of) | ||||
|        2021-01-01, any of these will work: | ||||
| 
 | ||||
|        o -p 2020 | ||||
| 
 | ||||
|        o date:2020 | ||||
| 
 | ||||
|        o -e 2021-01-01 (remember -e specifies an exclusive end date) | ||||
| 
 | ||||
|        o -e 2021 | ||||
|        end date argument   explanation | ||||
|        ----------------------------------------------- | ||||
|        -e 2021-01-01       end dates are exclusive | ||||
|        -e 2021             equivalent,   per    smart | ||||
|                            dates | ||||
|        -p 2020             equivalent,  the  period's | ||||
|                            begin date is ignored | ||||
|        date:2020           equivalent query | ||||
| 
 | ||||
|    Example: close asset/liability accounts for file transition | ||||
|        Carrying asset/liability balances from 2020.journal into a new file for | ||||
| @ -2868,17 +2987,17 @@ COMMANDS | ||||
|               ; 2019.journal | ||||
|               2019-01-01 opening balances  ; earliest opening txn, no tag here | ||||
|               ... | ||||
|               2019-12-31 closing balances  ; close:2019 | ||||
|               2019-12-31 closing balances  ; clopen:2020 | ||||
|               ... | ||||
| 
 | ||||
|               ; 2020.journal | ||||
|               2020-01-01 opening balances  ; open:2020 | ||||
|               2020-01-01 opening balances  ; clopen:2020 | ||||
|               ... | ||||
|               2020-12-31 closing balances  ; close:2020 | ||||
|               2020-12-31 closing balances  ; clopen:2021 | ||||
|               ... | ||||
| 
 | ||||
|               ; 2021.journal | ||||
|               2021-01-01 opening balances  ; open:2021 | ||||
|               2021-01-01 opening balances  ; clopen:2021 | ||||
|               ... | ||||
| 
 | ||||
|        Now with | ||||
| @ -2890,15 +3009,12 @@ COMMANDS | ||||
| 
 | ||||
|        you could do eg: | ||||
| 
 | ||||
|               $ hledger -f all.journal reg -H checking not:tag:'open|close' | ||||
|               $ hledger -f all.journal reg -H checking not:tag:clopen | ||||
|                   # all years checking register, hiding non-essential opening/closing txns | ||||
| 
 | ||||
|               $ hledger -f all.journal bs -p 2020 not:tag:close=2020 | ||||
|               $ hledger -f all.journal bs -p 2020 not:tag:clopen=2020 | ||||
|                   # 2020 year end balances, suppressing 2020 closing txn | ||||
| 
 | ||||
|               $ hledger -f 2020.journal bs not:tag:close | ||||
|                   # 2020 year end balances, easier case | ||||
| 
 | ||||
|    close and balance assertions | ||||
|        The closing and opening transactions will include  balance  assertions, | ||||
|        verifying  that  the  accounts  have  first been reset to zero and then | ||||
| @ -2934,25 +3050,30 @@ COMMANDS | ||||
|                   assets:bank:checking | ||||
| 
 | ||||
|    Example: close revenue/expense accounts to retained earnings | ||||
|        Here, the opening transaction is supressed with --close, as it's proba- | ||||
|        bly  not  needed.   Also  you'll want to use a different equity account | ||||
|        name: | ||||
|        For  this, use --close to suppress the opening transaction, as it's not | ||||
|        needed.  Also you'll want to change the equity  account  name  to  your | ||||
|        equivalent of "equity:retained earnings". | ||||
| 
 | ||||
|               $ hledger close -f 2021.journal -p 2021Q1 --close --close-acct='equity:retained earnings' revenues expenses >> 2021.journal | ||||
|                   # close 2021 first quarter revenues/expenses | ||||
|        Closing 2021's first quarter revenues/expenses: | ||||
| 
 | ||||
|        Or, operating on the default journal: | ||||
|               $ hledger close -f 2021.journal --close revenues expenses -p 2021Q1 \ | ||||
|                   --close-acct='equity:retained earnings' >> 2021.journal | ||||
| 
 | ||||
|               $ hledger close -p Q1 --close --close-acct='equity:retained earnings' revenues expenses >> $LEDGER_FILE | ||||
|                   # close current year's first quarter revenues/expenses | ||||
|        The same, using the default journal and current year: | ||||
| 
 | ||||
|        Now, eg: | ||||
|               $ hledger close --close revenues expenses -p Q1 \ | ||||
|                   --close-acct='equity:retained earnings' >> $LEDGER_FILE | ||||
| 
 | ||||
|        Now,  the  first quarter's balance sheet should show a zero (unless you | ||||
|        are using @/@@ notation without equity postings): | ||||
| 
 | ||||
|               $ hledger bse -p Q1 | ||||
|                   # Q1 full balance sheet, total should be zero | ||||
| 
 | ||||
|               $ hledger is -p Q1 not:'retained earnings' | ||||
|                   # Q1 income statement, must suppress the closing txn | ||||
|        And we must suppress the closing transaction to see the first quarter's | ||||
|        income  statement (using the description; not:'retained earnings' won't | ||||
|        work here): | ||||
| 
 | ||||
|               $ hledger is -p Q1 not:desc:'closing balances' | ||||
| 
 | ||||
|    codes | ||||
|        codes | ||||
| @ -3051,9 +3172,13 @@ COMMANDS | ||||
|    help | ||||
|        help | ||||
|        Show  the  hledger  user  manual  in one of several formats, optionally | ||||
|        positioned at a given TOPIC (if possible).  TOPIC is  any  heading,  or | ||||
|        heading  prefix,  in the manual.  Some examples: commands, print, 'auto | ||||
|        postings', periodic. | ||||
|        positioned at a given TOPIC (if possible). | ||||
| 
 | ||||
|        TOPIC is any heading in the manual, or the start of  any  heading  (but | ||||
|        not the middle).  It is case insensitive. | ||||
| 
 | ||||
|        Some  examples:  commands, print, forecast, "auto postings", "commodity | ||||
|        column". | ||||
| 
 | ||||
|        This command shows the user manual built in to  this  hledger  version. | ||||
|        It  can  be useful if the correct version of the hledger manual, or the | ||||
| @ -4377,6 +4502,9 @@ JOURNAL FORMAT | ||||
|               commodity 1000.00000000 BTC | ||||
|               commodity 1 000. | ||||
| 
 | ||||
|        The inferred commodity style can be overridden by supplying  a  command | ||||
|        line option. | ||||
| 
 | ||||
|    Rounding | ||||
|        Amounts are stored internally as decimal numbers with up to 255 decimal | ||||
|        places, and displayed with the number of decimal  places  specified  by | ||||
| @ -4628,6 +4756,8 @@ JOURNAL FORMAT | ||||
|        links to more detailed docs. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|        direc-     end         subdi-    purpose                        can affect  (as  of | ||||
|        tive       directive   rec-                                     2018/06) | ||||
|                               tives | ||||
| @ -4844,6 +4974,9 @@ JOURNAL FORMAT | ||||
|        Note hledger normally uses banker's rounding,  so  0.5  displayed  with | ||||
|        zero decimal digits is "0".  (More at Commodity display style.) | ||||
| 
 | ||||
|        Even  in  the  presence  of commodity directives, the commodity display | ||||
|        style can still be overridden by supplying a command line option. | ||||
| 
 | ||||
|    Commodity error checking | ||||
|        In strict mode, enabled with the -s/--strict flag, hledger will  report | ||||
|        an  error if a commodity symbol is used that has not been declared by a | ||||
| @ -4999,13 +5132,14 @@ JOURNAL FORMAT | ||||
|        receivables.) | ||||
| 
 | ||||
|    Declaring account types | ||||
|        Generally, to make these reports work you should declare your top-level | ||||
|        accounts and their types, using account directives with type: tags. | ||||
| 
 | ||||
|        The tag's value should be one of: Asset,  Liability,  Equity,  Revenue, | ||||
|        Expense,  Cash,  A,  L, E, R, X, C (all case insensitive).  The type is | ||||
|        inherited by all subaccounts except where they override it.   Here's  a | ||||
|        complete example: | ||||
|        To  make  the  balancesheet/balancesheetequity/cashflow/incomestatement | ||||
|        reports work, generally you should declare your top-level accounts, and | ||||
|        their  types.   For each top-level account, write an account directive, | ||||
|        with a type: tag.  The tag's value can  be  any  of  Asset,  Liability, | ||||
|        Equity,  Revenue,  Expense, Cash, or (for short) A, L, E, R, X, C (case | ||||
|        insensitive).  An account's  type  is  inherited  by  its  subaccounts, | ||||
|        unless they declare a different type.  Here's an example, declaring all | ||||
|        six account types: | ||||
| 
 | ||||
|               account assets       ; type: Asset | ||||
|               account assets:bank  ; type: Cash | ||||
| @ -5015,12 +5149,23 @@ JOURNAL FORMAT | ||||
|               account revenues     ; type: Revenue | ||||
|               account expenses     ; type: Expense | ||||
| 
 | ||||
|    Auto-detected account types | ||||
|        If  you  happen  to use common english top-level account names, you may | ||||
|        not need to declare account types, as they will be  detected  automati- | ||||
|        cally using the following rules: | ||||
|        There is also an older syntax, which is deprecated and will be  dropped | ||||
|        soon  (A,  L,  E, R or X separated from the account name by two or more | ||||
|        spaces): | ||||
| 
 | ||||
|                If account's name matches this regular expression:                 | its type is: | ||||
|               account assets       A | ||||
|               account liabilities  L | ||||
|               account equity       E | ||||
|               account revenues     R | ||||
|               account expenses     X | ||||
| 
 | ||||
|    Auto-detected account types | ||||
|        hledger tries to find at least one top level account in each of the six | ||||
|        account types (Asset, Liability, Equity, Revenue, Expense, Cash).  When | ||||
|        no accounts have been declared for a particular type, hledger tries  to | ||||
|        auto-detect some accounts by name, using regular expressions: | ||||
| 
 | ||||
|                If account's name matches this case insensitive regular expression:| its type is: | ||||
|               ------------------------------------------------------------------- | ------------ | ||||
|                ^assets?(:|$)                                                      | | ||||
|                  and does not contain regexp (investment|receivable|:A/R|:fixed)  | Cash | ||||
| @ -5030,16 +5175,26 @@ JOURNAL FORMAT | ||||
|                ^(income|revenue)s?(:|$)                                           | Revenue | ||||
|                ^expenses?(:|$)                                                    | Expense | ||||
| 
 | ||||
|        Even so, explicit declarations may be a good idea, for clarity and pre- | ||||
|        dictability. | ||||
|        For  people  using  standard  english account names, this feature helps | ||||
|        hledger's high-level reports work out of the box with minimal  configu- | ||||
|        ration. | ||||
| 
 | ||||
|    Interference from auto-detected account types | ||||
|        If you assign any account type, it's a good idea to assign all of them, | ||||
|        to  prevent any confusion from mixing declared and auto-detected types. | ||||
|        Although it's unlikely to happen in real life, here's an example:  with | ||||
|        the  following  journal, balancesheetequity shows "liabilities" in both | ||||
|        Liabilities  and  Equity  sections.   Declaring  another   account   as | ||||
|        type:Liability would fix it: | ||||
|        If  you use non-english account names, you should declare account types | ||||
|        to make these reports work.  And more generally, declaring accounts and | ||||
|        types  is usually a good idea, for increased clarity and predictability | ||||
|        (and for the other benefits of account directives: error checking, dis- | ||||
|        play order, etc). | ||||
| 
 | ||||
|        Notes: | ||||
| 
 | ||||
|        o When  any account is declared as some type, this disables auto-detec- | ||||
|          tion for that particular type. | ||||
| 
 | ||||
|        o If you declare any account's type, it's a good  idea  to  declare  an | ||||
|          account  for all six types, since a mix of declared and auto-detected | ||||
|          types can cause confusion.  For example, here liabilities is declared | ||||
|          to  be Equity, but would also be auto-detected as Liability, since no | ||||
|          Liability account is declared: | ||||
| 
 | ||||
|                 account liabilities  ; type:Equity | ||||
| 
 | ||||
| @ -5048,17 +5203,6 @@ JOURNAL FORMAT | ||||
|                   liabilities   1 | ||||
|                   equity       -2 | ||||
| 
 | ||||
|    Old account type syntax | ||||
|        In  some  hledger  journals  you might instead see this old syntax (the | ||||
|        letters ALERX, separated from the account name by two or more  spaces); | ||||
|        this is deprecated and may be removed soon: | ||||
| 
 | ||||
|               account assets       A | ||||
|               account liabilities  L | ||||
|               account equity       E | ||||
|               account revenues     R | ||||
|               account expenses     X | ||||
| 
 | ||||
|    Account display order | ||||
|        Account directives also set the order in which accounts are  displayed, | ||||
|        eg  in  reports,  the  hledger-ui  accounts screen, and the hledger-web | ||||
| @ -5340,45 +5484,71 @@ JOURNAL FORMAT | ||||
| 
 | ||||
|    Forecasting with periodic transactions | ||||
|        The --forecast flag activates any periodic  transaction  rules  in  the | ||||
|        journal.  They will generate temporary  recurring  transactions,  which | ||||
|        are  not  saved  in  the  journal,  but  will appear in all reports (eg | ||||
|        print).  This can be useful for estimating balances into the future, or | ||||
|        experimenting  with  different scenarios.  Or, it can be used as a data | ||||
|        entry aid: describe recurring transactions, and every so often copy the | ||||
|        output of print --forecast into the journal. | ||||
|        journal.   These  will generate temporary additional transactions, usu- | ||||
|        ally recurring and in the future, which will  appear  in  all  reports. | ||||
|        hledger print --forecast is a good way to see them. | ||||
| 
 | ||||
|        These  transactions  will  have  an extra tag indicating which periodic | ||||
|        rule generated them: generated-transaction:~ PERIODICEXPR.  And a simi- | ||||
|        lar,  hidden  tag  (beginning  with  an underscore) which, because it's | ||||
|        never displayed by print, can be used to match  transactions  generated | ||||
|        "just now": _generated-transaction:~ PERIODICEXPR. | ||||
|        This  can  be  useful  for estimating balances into the future, perhaps | ||||
|        experimenting with different scenarios. | ||||
| 
 | ||||
|        Periodic  transactions  are  generated within some forecast period.  By | ||||
|        default, this | ||||
|        It could also be useful for scripted data  entry:  you  could  describe | ||||
|        recurring  transactions,  and  every  so often copy the output of print | ||||
|        --forecast into the journal. | ||||
| 
 | ||||
|        o begins on the later of | ||||
|        The generated transactions will have  an  extra  tag,  like  generated- | ||||
|        transaction:~  PERIODICEXPR,  indicating  which periodic rule generated | ||||
|        them.  There is also a similar, hidden tag,  named  _generated-transac- | ||||
|        tion:, which you can use to reliably match transactions generated "just | ||||
|        now" (rather than printed in the past). | ||||
| 
 | ||||
|          o the report start date if specified with -b/-p/date: | ||||
|        The forecast transactions are generated within a forecast period, which | ||||
|        is  independent of the report period.  (Forecast period sets the bounds | ||||
|        for generated transactions, report period controls  which  transactions | ||||
|        are reported.) The forecast period begins on: | ||||
| 
 | ||||
|          o the day after the latest normal (non-periodic) transaction  in  the | ||||
|            journal, or today if there are no normal transactions. | ||||
|        o the start date provided within --forecast's argument, if any | ||||
| 
 | ||||
|        o ends  on  the  report  end  date  if specified with -e/-p/date:, or 6 | ||||
|          months (180 days) from today. | ||||
|        o otherwise, the later of | ||||
| 
 | ||||
|        This means that periodic transactions will begin only after the  latest | ||||
|        recorded  transaction.   And a recorded transaction dated in the future | ||||
|        can prevent generation of periodic transactions.  (You can  avoid  that | ||||
|        by writing the future transaction as a one-time periodic rule instead - | ||||
|        put tilde before the date, eg ~ YYYY-MM-DD ...). | ||||
|          o the report start date, if specified (with -b/-p/date:) | ||||
| 
 | ||||
|        Or, you can set your own arbitrary "forecast period", which can overlap | ||||
|        recorded  transactions,  and need not be in the future, by providing an | ||||
|        option argument, like --forecast=PERIODEXPR.  Note the equals  sign  is | ||||
|        required, a space won't work.  PERIODEXPR is a period expression, which | ||||
|        can specify the start date, end date, or both, like in a  date:  query. | ||||
|        (See  also  hledger.1  ->  Report  start  &  end date).  Some examples: | ||||
|        --forecast=202001-202004, --forecast=jan-, --forecast=2020. | ||||
|          o the  day  after  the latest ordinary transaction in the journal, if | ||||
|            any | ||||
| 
 | ||||
|        o otherwise today. | ||||
| 
 | ||||
|        It ends on: | ||||
| 
 | ||||
|        o the end date provided within --forecast's argument, if any | ||||
| 
 | ||||
|        o otherwise, the report end date, if specified (with -e/-p/date:) | ||||
| 
 | ||||
|        o otherwise 180 days (6 months) from today. | ||||
| 
 | ||||
|        Note, this means that  ordinary  transactions  will  suppress  periodic | ||||
|        transactions,  by  default;  the  periodic  transactions will not start | ||||
|        until after the last ordinary transaction.  This is usually convenient, | ||||
|        but you can get around it in two ways: | ||||
| 
 | ||||
|        o If  you  need  to  record  some transactions in the future, make them | ||||
|          periodic transactions (with a single occurrence,  eg:  ~  YYYY-MM-DD) | ||||
|          rather  than  ordinary  transactions.   That  way they won't suppress | ||||
|          other periodic transactions. | ||||
| 
 | ||||
|        o Or give --forecast a period expression argument.  A  forecast  period | ||||
|          specified this way can overlap ordinary transactions, and need not be | ||||
|          in the future.  Some things to note: | ||||
| 
 | ||||
|          o You must use = between flag and argument; a space won't work. | ||||
| 
 | ||||
|          o The period expression can specify the forecast period's start date, | ||||
|            end date, or both.  See also Report start & end date. | ||||
| 
 | ||||
|          o The  period expression should not specify a report interval.  (Each | ||||
|            periodic transaction rule specifies its own interval.) | ||||
| 
 | ||||
|        Some  examples:  --forecast=202001-202004,   --forecast=jan-,   --fore- | ||||
|        cast=2021. | ||||
| 
 | ||||
|    Budgeting with periodic transactions | ||||
|        With  the  --budget  flag,  currently supported by the balance command, | ||||
| @ -5527,6 +5697,8 @@ CSV FORMAT | ||||
| 
 | ||||
|        skip                         skip one or more header lines or matched CSV | ||||
|                                     records | ||||
| 
 | ||||
| 
 | ||||
|        fields list                  name  CSV  fields,  assign  them  to hledger | ||||
|                                     fields | ||||
|        field assignment             assign a value to one  hledger  field,  with | ||||
| @ -5542,8 +5714,6 @@ CSV FORMAT | ||||
|        date-format                  how to parse dates in CSV records | ||||
|        decimal-mark                 the decimal mark used  in  CSV  amounts,  if | ||||
|                                     ambiguous | ||||
| 
 | ||||
| 
 | ||||
|        newest-first                 disambiguate  record order when there's only | ||||
|                                     one date | ||||
|        include                      inline another CSV rules file | ||||
| @ -5914,7 +6084,8 @@ CSV FORMAT | ||||
|        o Interpolation  strips  outer  whitespace  (so  a CSV value like " 1 " | ||||
|          becomes 1 when interpolated) (#1051). | ||||
| 
 | ||||
|        o See also Tips below. | ||||
|        o Interpolations always refer to a CSV field - you can't interpolate  a | ||||
|          hledger field.  (See Referencing other fields below). | ||||
| 
 | ||||
|    Field names | ||||
|        Here are the standard hledger field (and pseudo-field) names, which you | ||||
| @ -7241,4 +7412,4 @@ SEE ALSO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| hledger-1.22.99                   August 2021                       HLEDGER(1) | ||||
| hledger-1.22.99                 September 2021                      HLEDGER(1) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user