;doc: hledger: write the new examples (Common Tasks) section
Examples are tested and should be correct. [ci skip]
This commit is contained in:
		
							parent
							
								
									743a63c319
								
							
						
					
					
						commit
						6878f74174
					
				| @ -5,78 +5,362 @@ m4_dnl   eg include -f FILE or $LEDGER_FILE details | |||||||
| # COMMON TASKS | # COMMON TASKS | ||||||
| 
 | 
 | ||||||
| Here are some quick examples of how to do some basic tasks with hledger. | Here are some quick examples of how to do some basic tasks with hledger. | ||||||
| For more background, see the reference section below, and the journal format manual. | For more details, see the reference section below, the hledger_journal(5) manual, | ||||||
| For a more gentle introduction and additional how-tos, see the hledger.org website. | or the more extensive docs at <https://hledger.org>. | ||||||
|  | 
 | ||||||
|  | ## Get help | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | $ hledger                 # show available commands | ||||||
|  | $ hledger --help          # show common options | ||||||
|  | $ hledger CMD --help      # show common and command options, and command help | ||||||
|  | $ hledger help            # show available manuals/topics | ||||||
|  | $ hledger help hledger    # show hledger manual as info/man/text (auto-chosen) | ||||||
|  | $ hledger help journal --man  # show the journal manual as a man page | ||||||
|  | $ hledger help --help     # show more detailed help for the help command | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Find more docs, chat, mail list, reddit, issue tracker: | ||||||
|  | <https://hledger.org#help-feedback> | ||||||
| 
 | 
 | ||||||
| ## Starting a Journal | ## Starting a Journal | ||||||
| 
 | 
 | ||||||
|  | hledger looks for your accounting data in a journal file, `$HOME/.hledger.journal` by default: | ||||||
|  | ```shell | ||||||
|  | $ hledger stats | ||||||
|  | The hledger journal file "/Users/simon/.hledger.journal" was not found. | ||||||
|  | Please create it first, eg with "hledger add" or a text editor. | ||||||
|  | Or, specify an existing journal file with -f or LEDGER_FILE. | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | You can override this by setting the `LEDGER_FILE` environment variable. | ||||||
|  | It's a good practice to keep this important file under version control, | ||||||
|  | and to start a new file each year. So you could do something like this: | ||||||
|  | ```shell | ||||||
|  | $ mkdir ~/finance | ||||||
|  | $ cd ~/finance | ||||||
|  | $ git init | ||||||
|  | Initialized empty Git repository in /Users/simon/finance/.git/ | ||||||
|  | $ touch 2020.journal | ||||||
|  | $ echo "export LEDGER_FILE=$HOME/finance/2020.journal" >> ~/.bashrc | ||||||
|  | $ source ~/.bashrc | ||||||
|  | $ hledger stats | ||||||
|  | Main file                : /Users/simon/finance/2020.journal | ||||||
|  | Included files           :  | ||||||
|  | Transactions span        :  to  (0 days) | ||||||
|  | Last transaction         : none | ||||||
|  | Transactions             : 0 (0.0 per day) | ||||||
|  | Transactions last 30 days: 0 (0.0 per day) | ||||||
|  | Transactions last 7 days : 0 (0.0 per day) | ||||||
|  | Payees/descriptions      : 0 | ||||||
|  | Accounts                 : 0 (depth 0) | ||||||
|  | Commodities              : 0 () | ||||||
|  | Market prices            : 0 () | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ## Setting Opening Balances | ## Setting Opening Balances | ||||||
| 
 | 
 | ||||||
|  | Pick a starting date for which you can look up the balances of some | ||||||
|  | real-world assets (bank accounts, wallet..) and liabilities (credit cards..). | ||||||
|  | 
 | ||||||
|  | To avoid a lot of data entry, you may want to start with just one or | ||||||
|  | two accounts, like your checking account or cash wallet; and pick a | ||||||
|  | recent starting date, like today or the start of the week. You can | ||||||
|  | always come back later and add more accounts and older transactions, | ||||||
|  | eg going back to january 1st. | ||||||
|  | 
 | ||||||
|  | Add an opening balances transaction to the journal, declaring the | ||||||
|  | balances on this date. Here are two ways to do it: | ||||||
|  | 
 | ||||||
|  | - The first way: open the journal in any text editor and save an entry like this: | ||||||
|  |   ```journal | ||||||
|  |   2020-01-01 * opening balances | ||||||
|  |       assets:bank:checking                $1000   = $1000 | ||||||
|  |       assets:bank:savings                 $2000   = $2000 | ||||||
|  |       assets:cash                          $100   = $100 | ||||||
|  |       liabilities:creditcard               $-50   = $-$50 | ||||||
|  |       equity:opening/closing balances | ||||||
|  |   ``` | ||||||
|  |   These are start-of-day balances, ie whatever was in the account at the | ||||||
|  |   end of the previous day. | ||||||
|  | 
 | ||||||
|  |   The * after the date is an optional status flag. | ||||||
|  |   Here it means "cleared & confirmed". | ||||||
|  | 
 | ||||||
|  |   The currency symbols are optional, but usually a good idea as you'll | ||||||
|  |   be dealing with multiple currencies sooner or later. | ||||||
|  | 
 | ||||||
|  |   The = amounts are optional balance assertions, providing extra error checking. | ||||||
|  | 
 | ||||||
|  | - The second way: run `hledger add` and follow the prompts to record a similar transaction: | ||||||
|  |   ```shell | ||||||
|  |   $ hledger add | ||||||
|  |   Adding transactions to journal file /Users/simon/finance/2020.journal | ||||||
|  |   Any command line arguments will be used as defaults. | ||||||
|  |   Use tab key to complete, readline keys to edit, enter to accept defaults. | ||||||
|  |   An optional (CODE) may follow transaction dates. | ||||||
|  |   An optional ; COMMENT may follow descriptions or amounts. | ||||||
|  |   If you make a mistake, enter < at any prompt to go one step backward. | ||||||
|  |   To end a transaction, enter . when prompted. | ||||||
|  |   To quit, enter . at a date prompt or press control-d or control-c. | ||||||
|  |   Date [2020-02-07]: 2020-01-01 | ||||||
|  |   Description: * opening balances | ||||||
|  |   Account 1: assets:bank:checking | ||||||
|  |   Amount  1: $1000 | ||||||
|  |   Account 2: assets:bank:savings | ||||||
|  |   Amount  2 [$-1000]: $2000 | ||||||
|  |   Account 3: assets:cash | ||||||
|  |   Amount  3 [$-3000]: $100 | ||||||
|  |   Account 4: liabilities:creditcard | ||||||
|  |   Amount  4 [$-3100]: $-50 | ||||||
|  |   Account 5: equity:opening/closing balances | ||||||
|  |   Amount  5 [$-3050]:  | ||||||
|  |   Account 6 (or . or enter to finish this transaction): . | ||||||
|  |   2020-01-01 * opening balances | ||||||
|  |       assets:bank:checking                      $1000 | ||||||
|  |       assets:bank:savings                       $2000 | ||||||
|  |       assets:cash                                $100 | ||||||
|  |       liabilities:creditcard                     $-50 | ||||||
|  |       equity:opening/closing balances          $-3050 | ||||||
|  |    | ||||||
|  |   Save this transaction to the journal ? [y]:  | ||||||
|  |   Saved. | ||||||
|  |   Starting the next transaction (. or ctrl-D/ctrl-C to quit) | ||||||
|  |   Date [2020-01-01]: . | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  | If you're using version control, this could be a good time to commit the journal. Eg: | ||||||
|  | ```shell | ||||||
|  | $ git commit -am 'initial balances' 2020.journal | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ## Recording Transactions | ## Recording Transactions | ||||||
| 
 | 
 | ||||||
| Two simple transactions in hledger journal format: | As you spend or receive money, you can record these transactions | ||||||
|  | using one of the methods above (text editor, hledger add) | ||||||
|  | or by using the [hledger-iadd](#iadd) or [hledger-web](#web) add-ons, | ||||||
|  | or by using the [import command](#import) to convert CSV data downloaded from your bank. | ||||||
|  | 
 | ||||||
|  | Here are some simple transactions, see the hledger_journal(5) manual | ||||||
|  | and hledger.org for more ideas: | ||||||
| 
 | 
 | ||||||
| ```journal | ```journal | ||||||
| 2015/9/30 gift received | 2020/1/10 * gift received | ||||||
|   assets:cash   $20 |   assets:cash   $20 | ||||||
|   income:gifts |   income:gifts | ||||||
| 
 | 
 | ||||||
| 2015/10/16 farmers market | 2020.1.12 * farmers market | ||||||
|   expenses:food    $10 |   expenses:food    $13 | ||||||
|   assets:cash |   assets:cash | ||||||
|  | 
 | ||||||
|  | 2020-01-15 paycheck | ||||||
|  |   income:salary | ||||||
|  |   assets:bank:checking    $1000 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Reconciling | ## Reconciling | ||||||
| 
 | 
 | ||||||
| ## Some basic reports | Periodically you should reconcile - compare your hledger-reported balances | ||||||
|  | against external sources of truth, like bank statements or your bank's website - | ||||||
|  | to be sure that your ledger accurately represents the real-world balances | ||||||
|  | (and, that the real-world institutions have not made a mistake!). | ||||||
|  | This gets easy and fast with (1) practice and (2) frequency. | ||||||
|  | If you do it daily, it can take 2-10 minutes. | ||||||
|  | If you let it pile up, expect it to take longer as you hunt down errors and discrepancies. | ||||||
| 
 | 
 | ||||||
|  | A typical workflow: | ||||||
|  | 
 | ||||||
|  | 1. Reconcile cash.  | ||||||
|  |    Count what's in your wallet.  | ||||||
|  |    Compare with what hledger reports (`hledger bal cash`). | ||||||
|  |    If they are different, try to remember the missing transaction,  | ||||||
|  |    or look for the error in the already-recorded transactions. | ||||||
|  |    A register report can be helpful (`hledger reg cash`). | ||||||
|  |    If you can't find the error, add an adjustment transaction. | ||||||
|  |    Eg if you have $105 after the above, and can't explain the missing $2, it could be: | ||||||
|  |    ```journal | ||||||
|  |    2020-01-16 * adjust cash | ||||||
|  |        assets:cash    $-2 = $105 | ||||||
|  |        expenses:misc | ||||||
|  |    ``` | ||||||
|  | 
 | ||||||
|  | 2. Reconcile checking. | ||||||
|  |    Log in to your bank's website. | ||||||
|  |    Compare today's (cleared) balance with hledger's cleared balance (`hledger bal checking -C`). | ||||||
|  |    If they are different, track down the error or record the missing transaction(s) | ||||||
|  |    or add an adjustment transaction, similar to the above. | ||||||
|  |    Unlike the cash case, you can usually compare the transaction history and running balance from your bank | ||||||
|  |    with the one reported by `hledger reg checking -C`. | ||||||
|  |    This will be easier if you generally record transaction dates  | ||||||
|  |    quite similar to your bank's clearing dates. | ||||||
|  | 
 | ||||||
|  | 3. Repeat for other asset/liability accounts. | ||||||
|  | 
 | ||||||
|  | Tip: instead of the register command, use hledger-ui to see a | ||||||
|  | live-updating register while you edit the journal: | ||||||
|  | `hledger-ui --watch --register checking -C` | ||||||
|  | 
 | ||||||
|  | After reconciling, it could be a good time to mark the reconciled | ||||||
|  | transactions' status as "cleared and confirmed", if you want to track | ||||||
|  | that, by adding the `*` marker. | ||||||
|  | Eg in the paycheck transaction above, insert `*` between `2020-01-15` and `paycheck` | ||||||
|  | 
 | ||||||
|  | If you're using version control, this can be another good time to commit: | ||||||
| ```shell | ```shell | ||||||
| $ hledger print | $ git commit -am 'txns' 2020.journal | ||||||
| 2015-09-30 gift received |  | ||||||
|     assets:cash            $20 |  | ||||||
|     income:gifts          $-20 |  | ||||||
| 
 |  | ||||||
| 2015-10-16 farmers market |  | ||||||
|     expenses:food           $10 |  | ||||||
|     assets:cash            $-10 |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | ## Reporting | ||||||
|  | 
 | ||||||
|  | Here are some basic reports. | ||||||
|  | 
 | ||||||
|  | Show all transactions: | ||||||
|  | ```shell | ||||||
|  | $ hledger print | ||||||
|  | 2020-01-01 * opening balances | ||||||
|  |     assets:bank:checking                      $1000 | ||||||
|  |     assets:bank:savings                       $2000 | ||||||
|  |     assets:cash                                $100 | ||||||
|  |     liabilities:creditcard                     $-50 | ||||||
|  |     equity:opening/closing balances          $-3050 | ||||||
|  | 
 | ||||||
|  | 2020-01-10 * gift received | ||||||
|  |     assets:cash              $20 | ||||||
|  |     income:gifts | ||||||
|  | 
 | ||||||
|  | 2020-01-12 * farmers market | ||||||
|  |     expenses:food             $13 | ||||||
|  |     assets:cash | ||||||
|  | 
 | ||||||
|  | 2020-01-15 * paycheck | ||||||
|  |     income:salary | ||||||
|  |     assets:bank:checking           $1000 | ||||||
|  | 
 | ||||||
|  | 2020-01-16 * adjust cash | ||||||
|  |     assets:cash               $-2 = $105 | ||||||
|  |     expenses:misc | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Show account names, and their hierarchy: | ||||||
| ```shell | ```shell | ||||||
| $ hledger accounts --tree | $ hledger accounts --tree | ||||||
| assets | assets | ||||||
|  |   bank | ||||||
|  |     checking | ||||||
|  |     savings | ||||||
|   cash |   cash | ||||||
|  | equity | ||||||
|  |   opening/closing balances | ||||||
| expenses | expenses | ||||||
|   food |   food | ||||||
|  |   misc | ||||||
| income | income | ||||||
|   gifts |   gifts | ||||||
|  |   salary | ||||||
|  | liabilities | ||||||
|  |   creditcard | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | Show all account totals: | ||||||
| ```shell | ```shell | ||||||
| $ hledger balance | $ hledger balance | ||||||
|                  $10  assets:cash |                $4105  assets | ||||||
|                  $10  expenses:food |                $4000    bank | ||||||
|                 $-20  income:gifts |                $2000      checking | ||||||
|  |                $2000      savings | ||||||
|  |                 $105    cash | ||||||
|  |               $-3050  equity:opening/closing balances | ||||||
|  |                  $15  expenses | ||||||
|  |                  $13    food | ||||||
|  |                   $2    misc | ||||||
|  |               $-1020  income | ||||||
|  |                 $-20    gifts | ||||||
|  |               $-1000    salary | ||||||
|  |                 $-50  liabilities:creditcard | ||||||
| -------------------- | -------------------- | ||||||
|                    0 |                    0 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | Show only asset and liability balances, as a flat list, limited to depth 2: | ||||||
|  | ```shell | ||||||
|  | $ hledger bal assets liabilities --flat -2 | ||||||
|  |                $4000  assets:bank | ||||||
|  |                 $105  assets:cash | ||||||
|  |                 $-50  liabilities:creditcard | ||||||
|  | -------------------- | ||||||
|  |                $4055 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Show the same thing without negative numbers, formatted as a simple balance sheet: | ||||||
|  | ```shell | ||||||
|  | $ hledger bs --flat -2 | ||||||
|  | Balance Sheet 2020-01-16 | ||||||
|  | 
 | ||||||
|  |                         || 2020-01-16  | ||||||
|  | ========================++============ | ||||||
|  |  Assets                 ||             | ||||||
|  | ------------------------++------------ | ||||||
|  |  assets:bank            ||      $4000  | ||||||
|  |  assets:cash            ||       $105  | ||||||
|  | ------------------------++------------ | ||||||
|  |                         ||      $4105  | ||||||
|  | ========================++============ | ||||||
|  |  Liabilities            ||             | ||||||
|  | ------------------------++------------ | ||||||
|  |  liabilities:creditcard ||        $50  | ||||||
|  | ------------------------++------------ | ||||||
|  |                         ||        $50  | ||||||
|  | ========================++============ | ||||||
|  |  Net:                   ||      $4055  | ||||||
|  | ``` | ||||||
|  | The final total is your "net worth" on the end date. | ||||||
|  | (Or use `bse` for a full balance sheet with equity.) | ||||||
|  | 
 | ||||||
|  | Show income and expense totals, formatted as an income statement: | ||||||
|  | ```shell | ||||||
|  | hledger is  | ||||||
|  | Income Statement 2020-01-01-2020-01-16 | ||||||
|  | 
 | ||||||
|  |                || 2020-01-01-2020-01-16  | ||||||
|  | ===============++======================= | ||||||
|  |  Revenues      ||                        | ||||||
|  | ---------------++----------------------- | ||||||
|  |  income:gifts  ||                   $20  | ||||||
|  |  income:salary ||                 $1000  | ||||||
|  | ---------------++----------------------- | ||||||
|  |                ||                 $1020  | ||||||
|  | ===============++======================= | ||||||
|  |  Expenses      ||                        | ||||||
|  | ---------------++----------------------- | ||||||
|  |  expenses:food ||                   $13  | ||||||
|  |  expenses:misc ||                    $2  | ||||||
|  | ---------------++----------------------- | ||||||
|  |                ||                   $15  | ||||||
|  | ===============++======================= | ||||||
|  |  Net:          ||                 $1005  | ||||||
|  | ``` | ||||||
|  | The final total is your net income during this period. | ||||||
|  | 
 | ||||||
|  | Show transactions affecting your wallet, with running total: | ||||||
| ```shell | ```shell | ||||||
| $ hledger register cash | $ hledger register cash | ||||||
| 2015-09-30 gift received   assets:cash               $20           $20 | 2020-01-01 opening balances     assets:cash                   $100          $100 | ||||||
| 2015-10-16 farmers market  assets:cash              $-10           $10 | 2020-01-10 gift received        assets:cash                    $20          $120 | ||||||
|  | 2020-01-12 farmers market       assets:cash                   $-13          $107 | ||||||
|  | 2020-01-16 adjust cash          assets:cash                    $-2          $105 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## More commands | Show weekly posting counts as a bar chart: | ||||||
| 
 |  | ||||||
| ```shell | ```shell | ||||||
| $ hledger                                 # show available commands | $ hledger activity -W | ||||||
| $ hledger add                             # add more transactions to the journal file | 2019-12-30 ***** | ||||||
| $ hledger balance                         # all accounts with aggregated balances | 2020-01-06 **** | ||||||
| $ hledger balance --help                  # show detailed help for balance command | 2020-01-13 **** | ||||||
| $ hledger balance --depth 1               # only top-level accounts |  | ||||||
| $ hledger register                        # show account postings, with running total |  | ||||||
| $ hledger reg income                      # show postings to/from income accounts |  | ||||||
| $ hledger reg 'assets:some bank:checking' # show postings to/from this checking account |  | ||||||
| $ hledger print desc:shop                 # show transactions with shop in the description |  | ||||||
| $ hledger activity -W                     # show transaction counts per week as a bar chart |  | ||||||
| ``` | ``` | ||||||
|  | ## Starting a New File | ||||||
|  | 
 | ||||||
|  | At the end of the year, you may want to continue your journal in a new file, | ||||||
|  | so that old transactions don't slow down or clutter your reports, | ||||||
|  | and to help ensure the integrity of your accounting history. | ||||||
|  | See the [close command](#close). | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user