;doc: update manuals
This commit is contained in:
parent
82cd81c066
commit
4bf0d76a1f
@ -1529,12 +1529,171 @@ not the old one, and \f[C]amt:\f[R] matches the new quantity, and not
|
|||||||
the old one.
|
the old one.
|
||||||
Note: this changed in hledger 1.22, previously it was the reverse, see
|
Note: this changed in hledger 1.22, previously it was the reverse, see
|
||||||
the discussion at #1625.
|
the discussion at #1625.
|
||||||
.SH COSTING
|
.SS CONVERSION & COST
|
||||||
.PP
|
.PP
|
||||||
The \f[C]-B/--cost\f[R] flag converts amounts to their cost or sale
|
This section is about converting between commodities.
|
||||||
amount at transaction time, if they have a transaction price specified.
|
Some definitions:
|
||||||
If this flag is supplied, hledger will perform cost conversion first,
|
.IP \[bu] 2
|
||||||
and will apply any market price valuations (if requested) afterwards.
|
A \[dq]commodity conversion\[dq] is an exchange of one currency or
|
||||||
|
commodity for another.
|
||||||
|
Eg a foreign currency exchange, or a purchase or sale of stock or
|
||||||
|
cryptocurrency.
|
||||||
|
.IP \[bu] 2
|
||||||
|
A \[dq]conversion transaction\[dq] is a transaction involving one or
|
||||||
|
more such conversions.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\[dq]Conversion rate\[dq] is the exchange rate in a conversion - the
|
||||||
|
cost per unit of one commodity in the other.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\[dq]Cost\[dq] is how much of one commodity was paid to acquire the
|
||||||
|
other (when buying), or how much was received in exchange for the other
|
||||||
|
(when selling).
|
||||||
|
We call both of these \[dq]cost\[dq] for convenience (after all, it is
|
||||||
|
cost for one party or the other).
|
||||||
|
.SS Recording conversions
|
||||||
|
.PP
|
||||||
|
As a concrete example, let\[aq]s assume 100 EUR was converted to 120
|
||||||
|
USD.
|
||||||
|
There are several ways to record this in the journal, each with pros and
|
||||||
|
cons which will be explained in more detail below.
|
||||||
|
(Also, these examples use journal format which is properly explained
|
||||||
|
much further below; sorry about that, you may want to read some of that
|
||||||
|
first.)
|
||||||
|
.SS Implicit conversion
|
||||||
|
.PP
|
||||||
|
You can just record the outflow (100 EUR) and inflow (120 USD) in the
|
||||||
|
appropriate asset account:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
2021-01-01
|
||||||
|
assets:cash -100 EUR
|
||||||
|
assets:cash 120 USD
|
||||||
|
\f[R]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
hledger will assume this transaction is balanced, inferring that the
|
||||||
|
conversion rate must be 1 EUR = 1.20 USD.
|
||||||
|
You can see the inferred rate by using \f[C]hledger print -x\f[R].
|
||||||
|
.PP
|
||||||
|
Pro: - Easy, concise - hledger can do cost reporting
|
||||||
|
.PP
|
||||||
|
Con: - Less error checking - typos in amounts or commodity symbols may
|
||||||
|
not be detected - conversion rate is not clear - disturbs the accounting
|
||||||
|
equation
|
||||||
|
.PP
|
||||||
|
You can prevent accidental implicit conversions due to a mistyped
|
||||||
|
commodity symbol, by using \f[C]hledger check commodities\f[R].
|
||||||
|
You can prevent implicit conversions entirely, by using
|
||||||
|
\f[C]hledger check balancednoautoconversion\f[R], or
|
||||||
|
\f[C]-s/--strict\f[R].
|
||||||
|
.SS Priced conversion
|
||||||
|
.PP
|
||||||
|
You can add the conversion rate using \[at] notation:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
2021-01-01
|
||||||
|
assets:cash -100 EUR \[at] 1.20 USD
|
||||||
|
assets:cash 120 USD
|
||||||
|
\f[R]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
Now hledger will check that 100 * 1.20 = 120, and would report an error
|
||||||
|
otherwise.
|
||||||
|
.PP
|
||||||
|
Pro: - Still concise - makes the conversion rate clear - provides some
|
||||||
|
error checking - hledger can do cost reporting
|
||||||
|
.PP
|
||||||
|
Con: - Disturbs the accounting equation
|
||||||
|
.SS Equity conversion
|
||||||
|
.PP
|
||||||
|
In strict double entry bookkeeping, the above transaction is not
|
||||||
|
balanced in EUR or in USD, since some EUR disappears, and some USD
|
||||||
|
appears.
|
||||||
|
This violates the accounting equation (A+L+E=0), and prevents reports
|
||||||
|
like \f[C]balancesheetequity\f[R] from showing a zero total.
|
||||||
|
.PP
|
||||||
|
The proper way to make it balance is to add a balancing posting for each
|
||||||
|
commodity, using an equity account:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
2021-01-01
|
||||||
|
assets:cash -100 EUR
|
||||||
|
equity:conversion 100 EUR
|
||||||
|
equity:conversion -120 USD
|
||||||
|
assets:cash 120 USD
|
||||||
|
\f[R]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
Pro: - Preserves the accounting equation - keeps track of conversions
|
||||||
|
and related gains/losses in one place - works in any double entry
|
||||||
|
accounting system
|
||||||
|
.PP
|
||||||
|
Con: - More verbose - conversion rate is not clear - hledger can not do
|
||||||
|
cost reporting
|
||||||
|
.SS Priced equity conversion
|
||||||
|
.PP
|
||||||
|
Another possible notation would be to record both the conversion rate
|
||||||
|
and the equity postings:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
2021-01-01
|
||||||
|
assets:cash -100 EUR \[at] 1.20 USD
|
||||||
|
equity:conversion 100 EUR
|
||||||
|
equity:conversion -120 USD
|
||||||
|
assets:cash 120 USD
|
||||||
|
\f[R]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
hledger currently does not allow this; instead, you can record the
|
||||||
|
conversion rate as a comment.
|
||||||
|
.SS Inferring missing conversion rates
|
||||||
|
.PP
|
||||||
|
hledger will do this automatically for implicit conversions.
|
||||||
|
Currently it can not do this for equity conversions.
|
||||||
|
.SS Inferring missing equity postings
|
||||||
|
.PP
|
||||||
|
With the \f[C]--infer-equity\f[R] flag, hledger will add equity postings
|
||||||
|
to priced and implicit conversions (and move the conversion rate into a
|
||||||
|
comment).
|
||||||
|
.SS Cost reporting
|
||||||
|
.PP
|
||||||
|
With the \f[C]-B/--cost\f[R] flag, hledger will convert the amounts in
|
||||||
|
priced and implicit conversions to their cost in the other commodity.
|
||||||
|
This is useful to see a report of what you paid for things (or how much
|
||||||
|
you sold things for).
|
||||||
|
Currently \f[C]-B/--cost\f[R] does not work on equity conversions, and
|
||||||
|
it disables \f[C]--infer-equity\f[R].
|
||||||
|
.PP
|
||||||
|
These operations are transient, only affecting reports.
|
||||||
|
If you want to change the journal file permanently, you could pipe each
|
||||||
|
entry through \f[C]hledger -f- -I print [-x] [--infer-equity] [-B]\f[R]
|
||||||
|
.SS Conversion summary
|
||||||
|
.IP \[bu] 2
|
||||||
|
Recording the conversion rate is good because it makes that clear and
|
||||||
|
allows cost reporting.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Recording equity postings is good because it balances the accounting
|
||||||
|
equation and is correct bookkeeping.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Combining these is not yet supported, so you have to choose.
|
||||||
|
For now, priced conversions are a good compromise, so that:
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
When you want to see the cost (or sale proceeds) of things, use
|
||||||
|
\f[C]-B/--cost\f[R].
|
||||||
|
.IP \[bu] 2
|
||||||
|
When you want to see a balanced balance sheet or correct journal
|
||||||
|
entries, use \f[C]--infer-equity\f[R].
|
||||||
|
.IP \[bu] 2
|
||||||
|
Combining these is not yet supported; \f[C]-B/--cost\f[R] will take
|
||||||
|
precedence.
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
Conversion/cost operations are performed before valuation.
|
||||||
.SH VALUATION
|
.SH VALUATION
|
||||||
.PP
|
.PP
|
||||||
Instead of reporting amounts in their original commodity, hledger can
|
Instead of reporting amounts in their original commodity, hledger can
|
||||||
@ -7579,9 +7738,10 @@ account ACCTNAME [ACCTTYPE] [;COMMENT]
|
|||||||
.PP
|
.PP
|
||||||
By adding a \f[C]type\f[R] tag to the account directive, with value
|
By adding a \f[C]type\f[R] tag to the account directive, with value
|
||||||
\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]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] (or if you prefer: \f[C]Asset\f[R], \f[C]Liability\f[R],
|
\f[C]C\f[R], \f[C]V\f[R] (or if you prefer: \f[C]Asset\f[R],
|
||||||
\f[C]Equity\f[R], \f[C]Revenue\f[R], \f[C]Expense\f[R], \f[C]Cash\f[R]),
|
\f[C]Liability\f[R], \f[C]Equity\f[R], \f[C]Revenue\f[R],
|
||||||
you can declare hledger accounts to be of a certain type:
|
\f[C]Expense\f[R], \f[C]Cash\f[R], \f[C]Conversion\f[R]), you can
|
||||||
|
declare hledger accounts to be of a certain type:
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[B]asset\f[R], \f[B]liability\f[R], \f[B]equity\f[R],
|
\f[B]asset\f[R], \f[B]liability\f[R], \f[B]equity\f[R],
|
||||||
\f[B]revenue\f[R], \f[B]expense\f[R]
|
\f[B]revenue\f[R], \f[B]expense\f[R]
|
||||||
@ -7595,6 +7755,12 @@ the standard types in accounting, or
|
|||||||
.P
|
.P
|
||||||
.PD
|
.PD
|
||||||
a subtype of asset, used for liquid assets.
|
a subtype of asset, used for liquid assets.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\f[B]conversion\f[R]
|
||||||
|
.PD 0
|
||||||
|
.P
|
||||||
|
.PD
|
||||||
|
a subtype of equity, used for conversion postings
|
||||||
.PP
|
.PP
|
||||||
Declaring account types is a good idea, since it helps enable the easy
|
Declaring account types is a good idea, since it helps enable the easy
|
||||||
balancesheet, balancesheetequity, incomestatement and cashflow reports,
|
balancesheet, balancesheetequity, incomestatement and cashflow reports,
|
||||||
|
|||||||
1743
hledger/hledger.info
1743
hledger/hledger.info
File diff suppressed because it is too large
Load Diff
2029
hledger/hledger.txt
2029
hledger/hledger.txt
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user