mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-30 22:02:20 +03:00
;dev: doc: update CLI usage texts
This commit is contained in:
parent
44c5eb5136
commit
31de526872
@ -1,96 +1,192 @@
|
|||||||
close, equity
|
close, equity
|
||||||
Prints a "closing balances" transaction and an "opening balances"
|
Prints a sample "closing" transaction bringing specified account
|
||||||
transaction that bring account balances to and from zero, respectively.
|
balances to zero, and an inverse "opening" transaction restoring the
|
||||||
These can be added to your journal file(s), eg to bring asset/liability
|
same account balances.
|
||||||
balances forward into a new journal file, or to close out
|
|
||||||
revenues/expenses to retained earnings at the end of a period.
|
If like most people you split your journal files by time, eg by year: at
|
||||||
|
the end of the year you can use this command to "close out" your asset
|
||||||
|
and liability (and perhaps equity) balances in the old file, and
|
||||||
|
reinitialise them in the new file. This helps ensure that report
|
||||||
|
balances remain correct whether you are including old files or not.
|
||||||
|
(Because all closing/opening transactions except the very first will
|
||||||
|
cancel out - see example below.)
|
||||||
|
|
||||||
|
Some people also use this command to close out revenue and expense
|
||||||
|
balances at the end of an accounting period. This properly records the
|
||||||
|
period's profit/loss as "retained earnings" (part of equity), and allows
|
||||||
|
the accounting equation (A-L=E) to balance, which you could then check
|
||||||
|
by the bse report's zero total.
|
||||||
|
|
||||||
_FLAGS
|
_FLAGS
|
||||||
|
|
||||||
You can print just one of these transactions by using the --close or
|
You can print just the closing transaction by using the --close flag, or
|
||||||
--open flag. You can customise their descriptions with the --close-desc
|
just the opening transaction with the --open flag.
|
||||||
and --open-desc options.
|
|
||||||
|
|
||||||
One amountless posting to "equity:opening/closing balances" is added to
|
Their descriptions are closing balances and opening balances by default;
|
||||||
balance the transactions, by default. You can customise this account
|
you can customise these with the --close-desc and --open-desc options.
|
||||||
name with --close-acct and --open-acct; if you specify only one of
|
|
||||||
these, it will be used for both.
|
|
||||||
|
|
||||||
With --x/--explicit, the equity posting's amount will be shown. And if
|
Just one balancing equity posting is used by default, with the amount
|
||||||
it involves multiple commodities, a posting for each commodity will be
|
left implicit. The default account name is
|
||||||
shown, as with the print command.
|
equity:opening/closing balances. You can customise the account name(s)
|
||||||
|
with --close-acct and --open-acct. (If you specify only one of these, it
|
||||||
|
will be used for both.)
|
||||||
|
|
||||||
With --interleaved, the equity postings are shown next to the postings
|
With --x/--explicit, the equity posting's amount will be shown
|
||||||
they balance, which makes troubleshooting easier.
|
explicitly, and if it involves multiple commodities, there will be a
|
||||||
|
separate equity posting for each commodity (as in the print command).
|
||||||
|
|
||||||
By default, transaction prices in the journal are ignored when
|
With --interleaved, each equity posting is shown next to the posting it
|
||||||
generating the closing/opening transactions. With --show-costs, this
|
balances (good for troubleshooting).
|
||||||
cost information is preserved (balance -B reports will be unchanged
|
|
||||||
after the transition). Separate postings are generated for each cost in
|
|
||||||
each commodity. Note this can generate very large journal entries, if
|
|
||||||
you have many foreign currency or investment transactions.
|
|
||||||
|
|
||||||
close usage
|
close and prices
|
||||||
|
|
||||||
If you split your journal files by time (eg yearly), you will typically
|
Transaction prices are ignored (and discarded) by closing/opening
|
||||||
run this command at the end of the year, and save the closing
|
transactions, by default. With --show-costs, they are preserved; there
|
||||||
transaction as last entry of the old file, and the opening transaction
|
will be a separate equity posting for each cost in each commodity. This
|
||||||
as the first entry of the new file. This makes the files self contained,
|
means balance -B reports will look the same after the transition. Note
|
||||||
so that correct balances are reported no matter which of them are
|
if you have many foreign currency or investment transactions, this will
|
||||||
loaded. Ie, if you load just one file, the balances are initialised
|
generate very large journal entries.
|
||||||
correctly; or if you load several files, the redundant closing/opening
|
|
||||||
transactions cancel each other out. (They will show up in print or
|
|
||||||
register reports; you can exclude them with a query like
|
|
||||||
not:desc:'(opening|closing) balances'.)
|
|
||||||
|
|
||||||
If you're running a business, you might also use this command to "close
|
close date
|
||||||
the books" at the end of an accounting period, transferring income
|
|
||||||
statement account balances to retained earnings. (You may want to change
|
|
||||||
the equity account name to something like "equity:retained earnings".)
|
|
||||||
|
|
||||||
By default, the closing transaction is dated yesterday, the balances are
|
The default closing date is yesterday, or the journal's end date,
|
||||||
calculated as of end of yesterday, and the opening transaction is dated
|
whichever is later.
|
||||||
today. To close on some other date, use: hledger close -e OPENINGDATE.
|
|
||||||
Eg, to close/open on the 2018/2019 boundary, use -e 2019. You can also
|
|
||||||
use -p or date:PERIOD (any starting date is ignored).
|
|
||||||
|
|
||||||
Both transactions will include balance assertions for the
|
Unless you are running close on exactly the first day of the new period,
|
||||||
closed/reopened accounts. You probably shouldn't use status or realness
|
you'll want to override the closing date. This is done by specifying a
|
||||||
filters (like -C or -R or status:) with this command, or the generated
|
report period, where "last day of the report period" will be the closing
|
||||||
balance assertions will depend on these flags. Likewise, if you run this
|
date. The opening date is always the following day. So to close on
|
||||||
command with --auto, the balance assertions will probably always require
|
2020-12-31 and open on 2021-01-01, any of these work
|
||||||
--auto.
|
|
||||||
|
|
||||||
Examples:
|
- -p 2020
|
||||||
|
- date:2020
|
||||||
|
- -e 2021-01-01 (remember -e specifies an exclusive end date)
|
||||||
|
- -e 2021
|
||||||
|
|
||||||
Carrying asset/liability balances into a new file for 2019:
|
Example: close asset/liability accounts for file transition
|
||||||
|
|
||||||
$ hledger close -f 2018.journal -e 2019 assets liabilities --open
|
Carrying asset/liability balances from 2020.journal into a new file for
|
||||||
# (copy/paste the output to the start of your 2019 journal file)
|
2021:
|
||||||
$ hledger close -f 2018.journal -e 2019 assets liabilities --close
|
|
||||||
# (copy/paste the output to the end of your 2018 journal file)
|
|
||||||
|
|
||||||
Now:
|
$ hledger close -f 2020.journal -p 2020 assets liabilities
|
||||||
|
# copy/paste the closing transaction to the end of 2020.journal
|
||||||
|
# copy/paste the opening transaction to the start of 2021.journal
|
||||||
|
|
||||||
$ hledger bs -f 2019.journal # one file - balances are correct
|
Or:
|
||||||
$ hledger bs -f 2018.journal -f 2019.journal # two files - balances still correct
|
|
||||||
$ hledger bs -f 2018.journal not:desc:closing # to see year-end balances, must exclude closing txn
|
|
||||||
|
|
||||||
Transactions spanning the closing date can complicate matters, breaking
|
$ hledger close -f 2020.journal -p 2020 assets liabilities --open >> 2021.journal # add 2021's first transaction
|
||||||
balance assertions:
|
$ hledger close -f 2020.journal -p 2020 assets liabilities --close >> 2020.journal # add 2020's last transaction
|
||||||
|
|
||||||
2018/12/30 a purchase made in 2018, clearing the following year
|
Now,
|
||||||
|
|
||||||
|
$ hledger bs -f 2021.journal # just new file - balances correct
|
||||||
|
$ hledger bs -f 2020.journal -f 2021.journal # old and new files - balances correct
|
||||||
|
$ hledger bs -f 2020.journal # just old files - balances are zero ?
|
||||||
|
# (exclude final closing txn, see below)
|
||||||
|
|
||||||
|
Hiding opening/closing transactions
|
||||||
|
|
||||||
|
Although the closing/opening transactions cancel out, they will be
|
||||||
|
visible in reports like print and register, creating some visual
|
||||||
|
clutter. You can exclude them all with a query, like:
|
||||||
|
|
||||||
|
$ hledger print not:desc:'opening|closing' # less typing
|
||||||
|
$ hledger print not:'equity:opening/closing balances' # more precise
|
||||||
|
|
||||||
|
But when reporting on multiple files, this can get a bit tricky; you may
|
||||||
|
need to keep the earliest opening balances, for a historical register
|
||||||
|
report; or you may need to suppress a closing transaction, to see
|
||||||
|
year-end balances. If you find yourself needing more precise queries,
|
||||||
|
here's one solution: add more easily-matched tags to opening/closing
|
||||||
|
transactions, like this:
|
||||||
|
|
||||||
|
; 2019.journal
|
||||||
|
2019-01-01 opening balances ; earliest opening txn, no tag here
|
||||||
|
...
|
||||||
|
2019-12-31 closing balances ; close:2019
|
||||||
|
...
|
||||||
|
|
||||||
|
; 2020.journal
|
||||||
|
2020-01-01 opening balances ; open:2020
|
||||||
|
...
|
||||||
|
2020-12-31 closing balances ; close:2020
|
||||||
|
...
|
||||||
|
|
||||||
|
; 2021.journal
|
||||||
|
2021-01-01 opening balances ; open:2021
|
||||||
|
...
|
||||||
|
|
||||||
|
Now with
|
||||||
|
|
||||||
|
; all.journal
|
||||||
|
include 2019.journal
|
||||||
|
include 2020.journal
|
||||||
|
include 2021.journal
|
||||||
|
|
||||||
|
you could do eg:
|
||||||
|
|
||||||
|
$ hledger -f all.journal reg -H checking not:tag:'open|close'
|
||||||
|
# all years checking register, hiding non-essential opening/closing txns
|
||||||
|
|
||||||
|
$ hledger -f all.journal bs -p 2020 not:tag:close=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
|
||||||
|
restored to their previous balance. These provide valuable error
|
||||||
|
checking, alerting you when things get out of line, but you can ignore
|
||||||
|
them temporarily with -I or just remove them if you prefer.
|
||||||
|
|
||||||
|
You probably shouldn't use status or realness filters (like -C or -R or
|
||||||
|
status:) with close, or the generated balance assertions will depend on
|
||||||
|
these flags. Likewise, if you run this command with --auto, the balance
|
||||||
|
assertions would probably always require --auto.
|
||||||
|
|
||||||
|
Multi-day transactions (where some postings have a different date) break
|
||||||
|
the balance assertions, because the money is temporarily "invisible"
|
||||||
|
while in transit:
|
||||||
|
|
||||||
|
2020/12/30 a purchase made in december, cleared in the next year
|
||||||
expenses:food 5
|
expenses:food 5
|
||||||
assets:bank:checking -5 ; [2019/1/2]
|
assets:bank:checking -5 ; date: 2021/1/2
|
||||||
|
|
||||||
Here's one way to resolve that:
|
To fix the assertions, you can add a temporary account to track such
|
||||||
|
in-transit money (splitting the multi-day transaction into two
|
||||||
|
single-day transactions):
|
||||||
|
|
||||||
; in 2018.journal:
|
; in 2020.journal:
|
||||||
2018/12/30 a purchase made in 2018, clearing the following year
|
2020/12/30 a purchase made in december, cleared in the next year
|
||||||
expenses:food 5
|
expenses:food 5
|
||||||
liabilities:pending
|
liabilities:pending
|
||||||
|
|
||||||
; in 2019.journal:
|
; in 2021.journal:
|
||||||
2019/1/2 clearance of last year's pending transactions
|
2021/1/2 clearance of last year's pending transactions
|
||||||
liabilities:pending 5 = 0
|
liabilities:pending 5 = 0
|
||||||
assets:checking
|
assets:bank:checking
|
||||||
|
|
||||||
|
Example: close revenue/expense accounts to retained earnings
|
||||||
|
|
||||||
|
Here, the opening transaction is supressed with --close, as it's
|
||||||
|
probably not needed. Also you'll want to use a different equity account
|
||||||
|
name:
|
||||||
|
|
||||||
|
$ hledger close -f 2021.journal -p 2021Q1 --close --close-acct='equity:retained earnings' revenues expenses >> 2021.journal
|
||||||
|
# close 2021 first quarter revenues/expenses
|
||||||
|
|
||||||
|
Or, operating on the default journal:
|
||||||
|
|
||||||
|
$ hledger close -p Q1 --close --close-acct='equity:retained earnings' revenues expenses >> $LEDGER_FILE
|
||||||
|
# close current year's first quarter revenues/expenses
|
||||||
|
|
||||||
|
Now, eg:
|
||||||
|
|
||||||
|
$ 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
|
||||||
|
Loading…
Reference in New Issue
Block a user