;doc: update manuals
This commit is contained in:
		
							parent
							
								
									9cb04480b5
								
							
						
					
					
						commit
						705280283c
					
				| @ -1,2 +1,2 @@ | |||||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||||
| m4_define({{_monthyear_}}, {{August 2022}})m4_dnl | m4_define({{_monthyear_}}, {{September 2022}})m4_dnl | ||||||
|  | |||||||
| @ -1,2 +1,2 @@ | |||||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||||
| m4_define({{_monthyear_}}, {{August 2022}})m4_dnl | m4_define({{_monthyear_}}, {{September 2022}})m4_dnl | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 
 | 
 | ||||||
| .TH "HLEDGER-UI" "1" "August 2022" "hledger-ui-1.26.99 " "hledger User Manuals" | .TH "HLEDGER-UI" "1" "September 2022" "hledger-ui-1.27 " "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -7,7 +7,7 @@ | |||||||
| .PP | .PP | ||||||
| hledger-ui is a terminal interface (TUI) for the hledger accounting | hledger-ui is a terminal interface (TUI) for the hledger accounting | ||||||
| tool. | tool. | ||||||
| This manual is for hledger-ui 1.26.99. | This manual is for hledger-ui 1.27. | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .PP | .PP | ||||||
| \f[C]hledger-ui [OPTIONS] [QUERYARGS]\f[R] | \f[C]hledger-ui [OPTIONS] [QUERYARGS]\f[R] | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ hledger-ui(1) | |||||||
| ************* | ************* | ||||||
| 
 | 
 | ||||||
| hledger-ui is a terminal interface (TUI) for the hledger accounting | hledger-ui is a terminal interface (TUI) for the hledger accounting | ||||||
| tool.  This manual is for hledger-ui 1.26.99. | tool.  This manual is for hledger-ui 1.27. | ||||||
| 
 | 
 | ||||||
|    'hledger-ui [OPTIONS] [QUERYARGS]' |    'hledger-ui [OPTIONS] [QUERYARGS]' | ||||||
| 'hledger ui -- [OPTIONS] [QUERYARGS]' | 'hledger ui -- [OPTIONS] [QUERYARGS]' | ||||||
| @ -640,34 +640,34 @@ program is restarted. | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top221 | Node: Top221 | ||||||
| Node: OPTIONS1657 | Node: OPTIONS1654 | ||||||
| Ref: #options1755 | Ref: #options1752 | ||||||
| Node: MOUSE6637 | Node: MOUSE6634 | ||||||
| Ref: #mouse6732 | Ref: #mouse6729 | ||||||
| Node: KEYS7014 | Node: KEYS7011 | ||||||
| Ref: #keys7107 | Ref: #keys7104 | ||||||
| Node: SCREENS11193 | Node: SCREENS11190 | ||||||
| Ref: #screens11291 | Ref: #screens11288 | ||||||
| Node: Accounts screen11381 | Node: Accounts screen11378 | ||||||
| Ref: #accounts-screen11509 | Ref: #accounts-screen11506 | ||||||
| Node: Register screen13848 | Node: Register screen13845 | ||||||
| Ref: #register-screen14003 | Ref: #register-screen14000 | ||||||
| Node: Transaction screen15987 | Node: Transaction screen15984 | ||||||
| Ref: #transaction-screen16145 | Ref: #transaction-screen16142 | ||||||
| Node: Error screen17015 | Node: Error screen17012 | ||||||
| Ref: #error-screen17137 | Ref: #error-screen17134 | ||||||
| Node: TIPS17381 | Node: TIPS17378 | ||||||
| Ref: #tips17480 | Ref: #tips17477 | ||||||
| Node: Watch mode17532 | Node: Watch mode17529 | ||||||
| Ref: #watch-mode17649 | Ref: #watch-mode17646 | ||||||
| Node: Watch mode limitations18399 | Node: Watch mode limitations18396 | ||||||
| Ref: #watch-mode-limitations18540 | Ref: #watch-mode-limitations18537 | ||||||
| Node: ENVIRONMENT19676 | Node: ENVIRONMENT19673 | ||||||
| Ref: #environment19787 | Ref: #environment19784 | ||||||
| Node: FILES21172 | Node: FILES21169 | ||||||
| Ref: #files21271 | Ref: #files21268 | ||||||
| Node: BUGS21484 | Node: BUGS21481 | ||||||
| Ref: #bugs21561 | Ref: #bugs21558 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ HLEDGER-UI(1)                hledger User Manuals                HLEDGER-UI(1) | |||||||
| 
 | 
 | ||||||
| NAME | NAME | ||||||
|        hledger-ui  is  a  terminal  interface (TUI) for the hledger accounting |        hledger-ui  is  a  terminal  interface (TUI) for the hledger accounting | ||||||
|        tool.  This manual is for hledger-ui 1.26.99. |        tool.  This manual is for hledger-ui 1.27. | ||||||
| 
 | 
 | ||||||
| SYNOPSIS | SYNOPSIS | ||||||
|        hledger-ui [OPTIONS] [QUERYARGS] |        hledger-ui [OPTIONS] [QUERYARGS] | ||||||
| @ -549,4 +549,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-ui-1.26.99                August 2022                    HLEDGER-UI(1) | hledger-ui-1.27                 September 2022                   HLEDGER-UI(1) | ||||||
|  | |||||||
| @ -1,2 +1,2 @@ | |||||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||||
| m4_define({{_monthyear_}}, {{August 2022}})m4_dnl | m4_define({{_monthyear_}}, {{September 2022}})m4_dnl | ||||||
|  | |||||||
| @ -1,12 +1,12 @@ | |||||||
| 
 | 
 | ||||||
| .TH "HLEDGER-WEB" "1" "August 2022" "hledger-web-1.26.99 " "hledger User Manuals" | .TH "HLEDGER-WEB" "1" "September 2022" "hledger-web-1.27 " "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| .PP | .PP | ||||||
| hledger-web is a web interface (WUI) for the hledger accounting tool. | hledger-web is a web interface (WUI) for the hledger accounting tool. | ||||||
| This manual is for hledger-web 1.26.99. | This manual is for hledger-web 1.27. | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .PP | .PP | ||||||
| \f[C]hledger-web [OPTIONS]\f[R] | \f[C]hledger-web [OPTIONS]\f[R] | ||||||
|  | |||||||
| @ -12,7 +12,7 @@ hledger-web(1) | |||||||
| ************** | ************** | ||||||
| 
 | 
 | ||||||
| hledger-web is a web interface (WUI) for the hledger accounting tool. | hledger-web is a web interface (WUI) for the hledger accounting tool. | ||||||
| This manual is for hledger-web 1.26.99. | This manual is for hledger-web 1.27. | ||||||
| 
 | 
 | ||||||
|    'hledger-web [OPTIONS]' |    'hledger-web [OPTIONS]' | ||||||
| 'hledger web -- [OPTIONS]' | 'hledger web -- [OPTIONS]' | ||||||
| @ -632,22 +632,22 @@ awkward. | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top223 | Node: Top223 | ||||||
| Node: OPTIONS1889 | Node: OPTIONS1886 | ||||||
| Ref: #options1994 | Ref: #options1991 | ||||||
| Node: PERMISSIONS9905 | Node: PERMISSIONS9902 | ||||||
| Ref: #permissions10044 | Ref: #permissions10041 | ||||||
| Node: EDITING UPLOADING DOWNLOADING11256 | Node: EDITING UPLOADING DOWNLOADING11253 | ||||||
| Ref: #editing-uploading-downloading11437 | Ref: #editing-uploading-downloading11434 | ||||||
| Node: RELOADING12271 | Node: RELOADING12268 | ||||||
| Ref: #reloading12405 | Ref: #reloading12402 | ||||||
| Node: JSON API12838 | Node: JSON API12835 | ||||||
| Ref: #json-api12952 | Ref: #json-api12949 | ||||||
| Node: ENVIRONMENT18442 | Node: ENVIRONMENT18439 | ||||||
| Ref: #environment18558 | Ref: #environment18555 | ||||||
| Node: FILES19869 | Node: FILES19866 | ||||||
| Ref: #files19969 | Ref: #files19966 | ||||||
| Node: BUGS20182 | Node: BUGS20179 | ||||||
| Ref: #bugs20260 | Ref: #bugs20257 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,7 +5,7 @@ HLEDGER-WEB(1)               hledger User Manuals               HLEDGER-WEB(1) | |||||||
| 
 | 
 | ||||||
| NAME | NAME | ||||||
|        hledger-web  is  a web interface (WUI) for the hledger accounting tool. |        hledger-web  is  a web interface (WUI) for the hledger accounting tool. | ||||||
|        This manual is for hledger-web 1.26.99. |        This manual is for hledger-web 1.27. | ||||||
| 
 | 
 | ||||||
| SYNOPSIS | SYNOPSIS | ||||||
|        hledger-web [OPTIONS] |        hledger-web [OPTIONS] | ||||||
| @ -586,4 +586,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-web-1.26.99               August 2022                   HLEDGER-WEB(1) | hledger-web-1.27                September 2022                  HLEDGER-WEB(1) | ||||||
|  | |||||||
| @ -1,2 +1,2 @@ | |||||||
| m4_dnl Date to show in man pages. Updated by "Shake manuals" | m4_dnl Date to show in man pages. Updated by "Shake manuals" | ||||||
| m4_define({{_monthyear_}}, {{August 2022}})m4_dnl | m4_define({{_monthyear_}}, {{September 2022}})m4_dnl | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| .\"t | .\"t | ||||||
| 
 | 
 | ||||||
| .TH "HLEDGER" "1" "August 2022" "hledger-1.26.99 " "hledger User Manuals" | .TH "HLEDGER" "1" "September 2022" "hledger-1.27 " "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -9,7 +9,7 @@ | |||||||
| This is the command-line interface (CLI) for the hledger accounting | This is the command-line interface (CLI) for the hledger accounting | ||||||
| tool. | tool. | ||||||
| Here we also describe hledger\[aq]s concepts and file formats. | Here we also describe hledger\[aq]s concepts and file formats. | ||||||
| This manual is for hledger 1.26.99. | This manual is for hledger 1.27. | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .PP | .PP | ||||||
| \f[C]hledger\f[R] | \f[C]hledger\f[R] | ||||||
| @ -1564,38 +1564,257 @@ 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 CONVERSION & COST | .SH COST | ||||||
| .PP | .PP | ||||||
| This section is about converting between commodities. | This section is about recording the cost of things, in transactions | ||||||
| Some definitions: | where one commodity is exchanged for another. | ||||||
|  | Eg an exchange of currency, or a stock purchase or sale. | ||||||
|  | First, a quick glossary: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| A \[dq]commodity conversion\[dq] is an exchange of one currency or | Conversion - an exchange of one currency or commodity for another. | ||||||
| commodity for another. |  | ||||||
| Eg a foreign currency exchange, or a purchase or sale of stock or | Eg a foreign currency exchange, or a purchase or sale of stock or | ||||||
| cryptocurrency. | cryptocurrency. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| A \[dq]conversion transaction\[dq] is a transaction involving one or | Conversion transaction - a transaction involving one or more | ||||||
| more such conversions. | conversions. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| \[dq]Conversion rate\[dq] is the exchange rate in a conversion - the | Conversion rate - the cost per unit of one commodity in the other, ie | ||||||
| cost per unit of one commodity in the other. | the exchange rate. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| \[dq]Cost\[dq] is how much of one commodity was paid to acquire the | Cost - how much of one commodity was paid to acquire the other. | ||||||
| other (when buying), or how much was received in exchange for the other | And more generally, in hledger docs: the amount exchanged in the | ||||||
| (when selling). | \[dq]secondary\[dq] commodity (usually your base currency), whether in a | ||||||
| We call both of these \[dq]cost\[dq] for convenience (after all, it is | purchase or a sale, and whether expressed per unit or in total. | ||||||
| cost for one party or the other). | Or, the \[at]/\[at]\[at] notation used to represent this. | ||||||
| .SS Recording conversions | .IP \[bu] 2 | ||||||
|  | Transaction price - another name for the cost expressed with | ||||||
|  | hledger\[aq]s cost notation. | ||||||
|  | .SS -B: Convert to cost | ||||||
| .PP | .PP | ||||||
| As a concrete example, let\[aq]s assume 100 EUR was converted to 120 | As discussed a little further on in Transaction prices, when recording a | ||||||
| USD. | transaction you can also record the amount\[aq]s cost in another | ||||||
| There are several ways to record this in the journal, each with pros and | commodity, by adding \f[C]\[at] UNITPRICE\f[R] or | ||||||
| cons which will be explained in more detail below. | \f[C]\[at]\[at] TOTALPRICE\f[R]. | ||||||
| (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 | .PP | ||||||
|  | Then you can see a report with amounts converted to cost, by adding the | ||||||
|  | \f[C]-B/--cost\f[R] flag. | ||||||
|  | (Mnemonic: \[dq]B\[dq] from \[dq]cost Basis\[dq], as in Ledger). | ||||||
|  | Eg: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2022-01-01 | ||||||
|  |   assets:dollars  $-135          ; 135 dollars is exchanged for.. | ||||||
|  |   assets:euros     \[Eu]100 \[at] $1.35  ; one hundred euros purchased at $1.35 each | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $ hledger bal -N | ||||||
|  |                $-135  assets:dollars | ||||||
|  |                 \[Eu]100  assets:euros | ||||||
|  | $ hledger bal -N -B | ||||||
|  |                $-135  assets:dollars | ||||||
|  |                 $135  assets:euros    # <- the euros\[aq] cost | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | Notes: | ||||||
|  | .PP | ||||||
|  | -B is sensitive to the order of postings when a transaction price is | ||||||
|  | inferred: the inferred price will be in the commodity of the last | ||||||
|  | amount. | ||||||
|  | So if example 3\[aq]s postings are reversed, while the transaction is | ||||||
|  | equivalent, -B shows something different: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2022-01-01 | ||||||
|  |   assets:dollars  $-135              ; 135 dollars sold | ||||||
|  |   assets:euros     \[Eu]100              ; for 100 euros | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $ hledger bal -N -B | ||||||
|  |                \[Eu]-100  assets:dollars  # <- the dollars\[aq] selling price | ||||||
|  |                 \[Eu]100  assets:euros | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | The \[at]/\[at]\[at] cost notation is convenient, but has some | ||||||
|  | drawbacks: it does not truly balance the transaction, so it disrupts the | ||||||
|  | accounting equation and tends to causes a non-zero total in balance | ||||||
|  | reports. | ||||||
|  | .SS Equity conversion postings | ||||||
|  | .PP | ||||||
|  | By contrast, conventional double entry bookkeeping (DEB) uses a | ||||||
|  | different notation: an extra pair of equity postings to balance | ||||||
|  | conversion transactions. | ||||||
|  | In this style, the above entry might be written: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2022-01-01 one hundred euros purchased at $1.35 each | ||||||
|  |     assets:dollars      $-135 | ||||||
|  |     equity:conversion    $135 | ||||||
|  |     equity:conversion   \[Eu]-100 | ||||||
|  |     assets:euros         \[Eu]100 | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | This style is more correct, but it\[aq]s also more verbose and makes | ||||||
|  | cost reporting more difficult for PTA tools. | ||||||
|  | .PP | ||||||
|  | Happily, current hledger can read either notation, or convert one to the | ||||||
|  | other when needed, so you can use the one you prefer. | ||||||
|  | .SS Inferring equity postings from cost | ||||||
|  | .PP | ||||||
|  | With \f[C]--infer-equity\f[R], hledger detects transactions written with | ||||||
|  | PTA cost notation and adds equity conversion postings to them (and | ||||||
|  | temporarily permits the coexistence of equity conversion postings and | ||||||
|  | cost notation, which normally would cause an unbalanced transaction | ||||||
|  | error). | ||||||
|  | Eg: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2022-01-01 | ||||||
|  |   assets:dollars  -$135 | ||||||
|  |   assets:euros     \[Eu]100 \[at] $1.35 | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $ hledger print --infer-equity | ||||||
|  | 2022-01-01 | ||||||
|  |     assets:dollars                    $-135 | ||||||
|  |     assets:euros               \[Eu]100 \[at] $1.35 | ||||||
|  |     equity:conversion:$-\[Eu]:\[Eu]           \[Eu]-100  ; generated-posting: | ||||||
|  |     equity:conversion:$-\[Eu]:$         $135.00  ; generated-posting: | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | The conversion account names can be changed with the conversion account | ||||||
|  | type declaration. | ||||||
|  | .PP | ||||||
|  | --infer-equity is useful when when transactions have been recorded using | ||||||
|  | PTA cost notation, to help preserve the accounting equation and balance | ||||||
|  | reports\[aq] zero total, or to produce more conventional journal entries | ||||||
|  | for sharing with non-PTA-users. | ||||||
|  | .PP | ||||||
|  | \f[I]Experimental\f[R] | ||||||
|  | .SS Inferring cost from equity postings | ||||||
|  | .PP | ||||||
|  | The reverse operation is possible using \f[C]--infer-costs\f[R], which | ||||||
|  | detects transactions written with equity conversion postings and adds | ||||||
|  | PTA cost notation to them (and temporarily permits the coexistence of | ||||||
|  | equity conversion postings and cost notation). | ||||||
|  | Eg: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2022-01-01 | ||||||
|  |     assets:dollars            $-135 | ||||||
|  |     equity:conversion          $135 | ||||||
|  |     equity:conversion         \[Eu]-100 | ||||||
|  |     assets:euros               \[Eu]100 | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $ hledger print --infer-costs | ||||||
|  | 2022-01-01 | ||||||
|  |     assets:dollars       $-135 \[at]\[at] \[Eu]100 | ||||||
|  |     equity:conversion             $135 | ||||||
|  |     equity:conversion            \[Eu]-100 | ||||||
|  |     assets:euros                  \[Eu]100 | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | --infer-costs is useful when combined with -B/--cost, allowing cost | ||||||
|  | reporting even when transactions have been recorded using equity | ||||||
|  | postings: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | $ hledger print --infer-costs -B | ||||||
|  | 2009-01-01 | ||||||
|  |     assets:dollars           \[Eu]-100 | ||||||
|  |     assets:euros              \[Eu]100 | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | Notes: | ||||||
|  | .PP | ||||||
|  | Postings will be recognised as equity conversion postings if they are 1. | ||||||
|  | to account(s) declared with type \f[C]V\f[R] (\f[C]Conversion\f[R]; or | ||||||
|  | if no such accounts are declared, accounts named | ||||||
|  | \f[C]equity:conversion\f[R], \f[C]equity:trade\f[R], | ||||||
|  | \f[C]equity:trading\f[R], or subaccounts of these) 2. | ||||||
|  | adjacent 3. | ||||||
|  | and exactly matching the amounts of two non-conversion postings. | ||||||
|  | .PP | ||||||
|  | The total cost is appended to the first matching posting in the | ||||||
|  | transaction. | ||||||
|  | If you need to assign it to a different posting, or if you have several | ||||||
|  | different sets of conversion postings in one transaction, you may need | ||||||
|  | to write the costs explicitly yourself. | ||||||
|  | Eg: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2022-01-01 | ||||||
|  |     assets:dollars                    $-135 | ||||||
|  |     equity:conversion                 \[Eu]-100 | ||||||
|  |     equity:conversion                  $135 | ||||||
|  |     assets:euros               \[Eu]100 \[at]\[at] $135 | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | or: | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | 2022-01-01 | ||||||
|  |     assets:dollars                    $-235 | ||||||
|  |     assets:euros               \[Eu]100 \[at] $1.35  ; 100 euros bought for $1.35 each | ||||||
|  |     equity:conversion                 \[Eu]-100 | ||||||
|  |     equity:conversion                  $135 | ||||||
|  |     assets:pounds               \[Po]80 \[at]\[at] $100  ; 80 pounds bought for $100 total | ||||||
|  |     equity:conversion                  \[Po]-80 | ||||||
|  |     equity:conversion                  $100 | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | --infer-equity and --infer-costs can be used together, eg if you have a | ||||||
|  | mixture of both notations. | ||||||
|  | .PP | ||||||
|  | \f[I]Experimental\f[R] | ||||||
|  | .SS When to infer cost/equity | ||||||
|  | .PP | ||||||
|  | Inferring equity postings or costs is still fairly new, so not enabled | ||||||
|  | by default. | ||||||
|  | We\[aq]re not sure yet if that should change. | ||||||
|  | Here are two suggestions to try, experience reports welcome: | ||||||
|  | .IP "1." 3 | ||||||
|  | When you use -B, always use --infer-costs as well. | ||||||
|  | Eg: \f[C]hledger bal -B --infer-costs\f[R] | ||||||
|  | .IP "2." 3 | ||||||
|  | Always run hledger with both flags enabled. | ||||||
|  | Eg: \f[C]alias hl=\[dq]hledger --infer-equity --infer-costs\[dq]\f[R] | ||||||
|  | .SS How to record conversions | ||||||
|  | .PP | ||||||
|  | Essentially there are four ways to record a conversion transaction in | ||||||
|  | hledger. | ||||||
|  | Here are all of them, with pros and cons. | ||||||
|  | .SS Conversion with implicit cost | ||||||
|  | .PP | ||||||
|  | Let\[aq]s assume 100 EUR is converted to 120 USD. | ||||||
| You can just record the outflow (100 EUR) and inflow (120 USD) in the | You can just record the outflow (100 EUR) and inflow (120 USD) in the | ||||||
| appropriate asset account: | appropriate asset account: | ||||||
| .IP | .IP | ||||||
| @ -1613,25 +1832,24 @@ You can see the inferred rate by using \f[C]hledger print -x\f[R]. | |||||||
| .PP | .PP | ||||||
| Pro: | Pro: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Easy, concise | Concise, easy | ||||||
| .IP \[bu] 2 |  | ||||||
| hledger can do cost reporting |  | ||||||
| .PP | .PP | ||||||
| Con: | Con: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Less error checking - typos in amounts or commodity symbols may not be | Less error checking - typos in amounts or commodity symbols may not be | ||||||
| detected | detected | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| conversion rate is not clear | Conversion rate is not clear | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| disturbs the accounting equation | Disturbs the accounting equation, unless you add the --infer-equity flag | ||||||
| .PP | .PP | ||||||
| You can prevent accidental implicit conversions due to a mistyped | You can prevent accidental implicit conversions due to a mistyped | ||||||
| commodity symbol, by using \f[C]hledger check commodities\f[R]. | commodity symbol, by using \f[C]hledger check commodities\f[R]. | ||||||
|  | .PP | ||||||
| You can prevent implicit conversions entirely, by using | You can prevent implicit conversions entirely, by using | ||||||
| \f[C]hledger check balancednoautoconversion\f[R], or | \f[C]hledger check balancednoautoconversion\f[R], or | ||||||
| \f[C]-s/--strict\f[R]. | \f[C]-s/--strict\f[R]. | ||||||
| .SS Priced conversion | .SS Conversion with explicit cost | ||||||
| .PP | .PP | ||||||
| You can add the conversion rate using \[at] notation: | You can add the conversion rate using \[at] notation: | ||||||
| .IP | .IP | ||||||
| @ -1650,16 +1868,14 @@ Pro: | |||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Still concise | Still concise | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| makes the conversion rate clear | Makes the conversion rate clear | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| provides some error checking | Provides more error checking | ||||||
| .IP \[bu] 2 |  | ||||||
| hledger can do cost reporting |  | ||||||
| .PP | .PP | ||||||
| Con: | Con: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Disturbs the accounting equation without the --infer-equity flag | Disturbs the accounting equation, unless you add the --infer-equity flag | ||||||
| .SS Equity conversion | .SS Conversion with equity postings | ||||||
| .PP | .PP | ||||||
| In strict double entry bookkeeping, the above transaction is not | In strict double entry bookkeeping, the above transaction is not | ||||||
| balanced in EUR or in USD, since some EUR disappears, and some USD | balanced in EUR or in USD, since some EUR disappears, and some USD | ||||||
| @ -1684,24 +1900,22 @@ Pro: | |||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Preserves the accounting equation | Preserves the accounting equation | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| keeps track of conversions and related gains/losses in one place | Keeps track of conversions and related gains/losses in one place | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| works in any double entry accounting system | Standard, works in any double entry accounting system | ||||||
| .IP \[bu] 2 |  | ||||||
| hledger can convert this to transaction prices using the --infer-costs |  | ||||||
| flag |  | ||||||
| .PP | .PP | ||||||
| Con: | Con: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| More verbose | More verbose | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| conversion rate is not clear | Conversion rate is not obvious | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| depends on the order of postings | Cost reporting requires adding the --infer-costs flag | ||||||
| .SS Priced equity conversion | .SS Conversion with equity postings and explicit cost | ||||||
| .PP | .PP | ||||||
| Another notation is to record both the conversion rate and the equity | Here both equity postings and \[at] notation are used together. | ||||||
| postings: | hledger will usually complain about this redundancy, but when using the | ||||||
|  | --infer-costs flag it is accepted. | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| @ -1717,68 +1931,39 @@ Pro: | |||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Preserves the accounting equation | Preserves the accounting equation | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| keeps track of conversions and related gains/losses in one place | Keeps track of conversions and related gains/losses in one place | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| makes the conversion rate clear | Makes the conversion rate clear | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| provides some error checking | Provides more error checking | ||||||
| .IP \[bu] 2 |  | ||||||
| hledger can do cost reporting |  | ||||||
| .PP | .PP | ||||||
| Con: | Con: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Most verbose | Most verbose | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Requires --infer-costs flag | Requires the --infer-costs flag | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Not compatible with ledger | Not compatible with ledger | ||||||
| .SS Inferring missing conversion rates | .SS Cost tips | ||||||
| .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. |  | ||||||
| .SS Inferring missing transaction prices from equity postings |  | ||||||
| .PP |  | ||||||
| With the \f[C]--infer-costs\f[R] flag, hledger will add transaction |  | ||||||
| prices from equity postings, and will be able to handle transaction |  | ||||||
| prices and equity postings together. |  | ||||||
| .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] [--infer-costs] [-B]\f[R] |  | ||||||
| .SS Conversion summary |  | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Recording the conversion rate is good because it makes that clear and | Recording the conversion rate explicitly is good because it makes that | ||||||
| allows cost reporting. | clear and helps detect errors. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Recording equity postings is good because it balances the accounting | Recording equity postings is good because it is correct bookkeeping and | ||||||
| equation and is correct bookkeeping. | preserves the accounting equation. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| Combining these is possible with the --infer-costs flag, but has certain | Combining these is possible by using the --infer-costs flag (which | ||||||
| requirements for the order of postings. | requires well-ordered postings). | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| When you want to see the cost (or sale proceeds) of things, use | When you want to see the cost (or sale proceeds) of things, use | ||||||
| \f[C]-B/--cost\f[R]. | \f[C]-B\f[R] (or \f[C]--cost\f[R]). | ||||||
|  | If you use equity conversion postings notation, use | ||||||
|  | \f[C]-B --infer-costs\f[R]. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| When you want to see a balanced balance sheet or correct journal | If you use PTA cost notation, and you want to see a balanced balance | ||||||
| entries, use \f[C]--infer-equity\f[R]. | sheet or print correct journal entries, use \f[C]--infer-equity\f[R]. | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| \f[C]--cost\f[R] will remove any balancing equity posts, so as not to | Conversion to cost is performed before valuation (described next). | ||||||
| disturb the accounting equation. |  | ||||||
| .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 | ||||||
| @ -6988,18 +7173,30 @@ number, eg 0.5 displayed with zero decimal places is \[dq]0\[dq]). | |||||||
| hledger was built with Decimal < 0.5.1.) | hledger was built with Decimal < 0.5.1.) | ||||||
| .SS Transaction prices | .SS Transaction prices | ||||||
| .PP | .PP | ||||||
| Within a transaction, you can note an amount\[aq]s price in another | (AKA Costs) | ||||||
| commodity. |  | ||||||
| This can be used to document the cost (in a purchase) or selling price |  | ||||||
| (in a sale). |  | ||||||
| For example, transaction prices are useful to record purchases of a |  | ||||||
| foreign currency. |  | ||||||
| Note transaction prices are fixed at the time of the transaction, and do |  | ||||||
| not change over time. |  | ||||||
| See also market prices, which represent prevailing exchange rates on a |  | ||||||
| certain date. |  | ||||||
| .PP | .PP | ||||||
| There are several ways to record a transaction price: | After a posting amount, you can note its cost or selling price in | ||||||
|  | another commodity, by writing either \f[C]\[at] UNITPRICE\f[R] or | ||||||
|  | \f[C]\[at]\[at] TOTALPRICE\f[R] after it. | ||||||
|  | This indicates a conversion transaction, where one commodity is | ||||||
|  | exchanged for another. | ||||||
|  | .PP | ||||||
|  | hledger docs have historically called this a \[dq]transaction price\[dq] | ||||||
|  | because it is specific to one transaction, unlike market prices which | ||||||
|  | are not. | ||||||
|  | \[dq]Cost\[dq] is shorter and might be preferable; just remember this | ||||||
|  | feature can represent either a buyer\[aq]s cost, or a seller\[aq]s | ||||||
|  | price. | ||||||
|  | .PP | ||||||
|  | Costs are usually written explicitly with \f[C]\[at]\f[R] or | ||||||
|  | \f[C]\[at]\[at]\f[R], but can also be inferred automatically for simple | ||||||
|  | multi-commodity transactions. | ||||||
|  | .PD 0 | ||||||
|  | .P | ||||||
|  | .PD | ||||||
|  | As an example, here are several ways to record purchases of a foreign | ||||||
|  | currency in hledger, using the cost notation either explicitly or | ||||||
|  | implicitly: | ||||||
| .IP "1." 3 | .IP "1." 3 | ||||||
| Write the price per unit, as \f[C]\[at] UNITPRICE\f[R] after the amount: | Write the price per unit, as \f[C]\[at] UNITPRICE\f[R] after the amount: | ||||||
| .RS 4 | .RS 4 | ||||||
| @ -7046,131 +7243,8 @@ Like 1, but the \f[C]\[at]\f[R] is parenthesised, i.e. | |||||||
| Like 2, but as in 4 the \f[C]\[at]\[at]\f[R] is parenthesised, i.e. | Like 2, but as in 4 the \f[C]\[at]\[at]\f[R] is parenthesised, i.e. | ||||||
| \f[C](\[at]\[at])\f[R]; in hledger, this is equivalent to 2. | \f[C](\[at]\[at])\f[R]; in hledger, this is equivalent to 2. | ||||||
| .PP | .PP | ||||||
| Use the \f[C]-B/--cost\f[R] flag to convert amounts to their transaction | Amounts can be converted to cost at report time using the | ||||||
| price\[aq]s commodity, if any. | \f[C]-B/--cost\f[R] flag; this is discussed more in the COST section. | ||||||
| (mnemonic: \[dq]B\[dq] is from \[dq]cost Basis\[dq], as in Ledger). |  | ||||||
| Eg here is how -B affects the balance report for the example above: |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| $ hledger bal -N --flat |  | ||||||
|                $-135  assets:dollars |  | ||||||
|                 \[Eu]100  assets:euros |  | ||||||
| $ hledger bal -N --flat -B |  | ||||||
|                $-135  assets:dollars |  | ||||||
|                 $135  assets:euros    # <- the euros\[aq] cost |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .PP |  | ||||||
| Note -B is sensitive to the order of postings when a transaction price |  | ||||||
| is inferred: the inferred price will be in the commodity of the last |  | ||||||
| amount. |  | ||||||
| So if example 3\[aq]s postings are reversed, while the transaction is |  | ||||||
| equivalent, -B shows something different: |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| 2009/1/1 |  | ||||||
|   assets:dollars  $-135              ; 135 dollars sold |  | ||||||
|   assets:euros     \[Eu]100              ; for 100 euros |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| $ hledger bal -N --flat -B |  | ||||||
|                \[Eu]-100  assets:dollars  # <- the dollars\[aq] selling price |  | ||||||
|                 \[Eu]100  assets:euros |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .SS Equity conversion postings |  | ||||||
| .PP |  | ||||||
| Transaction prices can be converted to and from equity conversion |  | ||||||
| postings using the \f[C]--infer-equity\f[R] and \f[C]--infer-costs\f[R] |  | ||||||
| flags. |  | ||||||
| .PP |  | ||||||
| With \f[C]--infer-equity\f[R], hledger will add equity postings to |  | ||||||
| balance out any transaction prices. |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| 2009/1/1 |  | ||||||
|   assets:euros     \[Eu]100 \[at] $1.35      ; 100 euros bought |  | ||||||
|   assets:dollars  -$135              ; for $135 |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| $ hledger print --infer-equity |  | ||||||
| 
 |  | ||||||
| 2009-01-01 |  | ||||||
|     assets:euros               \[Eu]100 \[at] $1.35  ; 100 euros bought |  | ||||||
|     equity:conversion:$-\[Eu]:\[Eu]           \[Eu]-100  ; 100 euros bought, generated-posting: |  | ||||||
|     equity:conversion:$-\[Eu]:$         $135.00  ; 100 euros bought, generated-posting: |  | ||||||
|     assets:dollars                    $-135  ; for $135 |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .PP |  | ||||||
| The reverse is possible using \f[C]--infer-costs\f[R], which will check |  | ||||||
| any equity conversion postings and generate a transaction price for the |  | ||||||
| \f[I]first\f[R] non-conversion posting which matches. |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| 2009-01-01 |  | ||||||
|     assets:euros                       \[Eu]100  ; 100 euros bought |  | ||||||
|     equity:conversion                 \[Eu]-100 |  | ||||||
|     equity:conversion                  $135 |  | ||||||
|     assets:dollars                    $-135  ; for $135 |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| $ hledger print --infer-costs |  | ||||||
| 
 |  | ||||||
| 2009-01-01 |  | ||||||
|     assets:euros               \[Eu]100 \[at]\[at] $135  ; 100 euros bought |  | ||||||
|     equity:conversion                 \[Eu]-100 |  | ||||||
|     equity:conversion                  $135 |  | ||||||
|     assets:dollars                    $-135  ; for $135 |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .PP |  | ||||||
| Note that the above will assign the transaction price to the first |  | ||||||
| matching posting in the transaction. |  | ||||||
| If you want to assign it to a different posting, or if you have several |  | ||||||
| different sets of conversion postings which must match different |  | ||||||
| postings, you must manually specify the transaction price. |  | ||||||
| If you do this, equity conversion postings must occur in adjacent pairs |  | ||||||
| and must exactly match the amount of a non-conversion posting. |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| 2009-01-01 |  | ||||||
|     assets:dollars                    $-135  ; $135 paid |  | ||||||
|     equity:conversion                 \[Eu]-100 |  | ||||||
|     equity:conversion                  $135 |  | ||||||
|     assets:euros               \[Eu]100 \[at]\[at] $135  ; to buy 100 euros |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .IP |  | ||||||
| .nf |  | ||||||
| \f[C] |  | ||||||
| 2009-01-01 |  | ||||||
|     assets:euros               \[Eu]100 \[at] $1.35  ; 100 euros bought |  | ||||||
|     equity:conversion                 \[Eu]-100 |  | ||||||
|     equity:conversion                  $135 |  | ||||||
|     assets:pounds               \[Po]80 \[at]\[at] $100  ; 80 pounds bought |  | ||||||
|     equity:conversion                  \[Po]-80 |  | ||||||
|     equity:conversion                  $100 |  | ||||||
|     assets:dollars                    $-235  ; for $235 total |  | ||||||
| \f[R] |  | ||||||
| .fi |  | ||||||
| .PP |  | ||||||
| The account names used for the conversion accounts can be changed with |  | ||||||
| the conversion account type declaration. |  | ||||||
| .SS Lot prices, lot dates | .SS Lot prices, lot dates | ||||||
| .PP | .PP | ||||||
| Ledger allows another kind of price, lot price (four variants: | Ledger allows another kind of price, lot price (four variants: | ||||||
| @ -8113,7 +8187,7 @@ or, it can be (these are used less often): | |||||||
| assets for the cashflow report) | assets for the cashflow report) | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| \f[C]V\f[R] or \f[C]Conversion\f[R] (a subtype of Equity, for | \f[C]V\f[R] or \f[C]Conversion\f[R] (a subtype of Equity, for | ||||||
| conversions (see CONVERSION & COST).) | conversions (see COST).) | ||||||
| .PP | .PP | ||||||
| Here is a typical set of account type declarations: | Here is a typical set of account type declarations: | ||||||
| .IP | .IP | ||||||
| @ -10933,7 +11007,7 @@ Show only asset and liability balances, as a flat list, limited to depth | |||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $ hledger bal assets liabilities --flat -2 | $ hledger bal assets liabilities -2 | ||||||
|                $4000  assets:bank |                $4000  assets:bank | ||||||
|                 $105  assets:cash |                 $105  assets:cash | ||||||
|                 $-50  liabilities:creditcard |                 $-50  liabilities:creditcard | ||||||
| @ -10947,7 +11021,7 @@ balance sheet: | |||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| $ hledger bs --flat -2 | $ hledger bs -2 | ||||||
| Balance Sheet 2020-01-16 | Balance Sheet 2020-01-16 | ||||||
| 
 | 
 | ||||||
|                         || 2020-01-16  |                         || 2020-01-16  | ||||||
|  | |||||||
							
								
								
									
										1640
									
								
								hledger/hledger.info
									
									
									
									
									
								
							
							
						
						
									
										1640
									
								
								hledger/hledger.info
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -6,7 +6,7 @@ HLEDGER(1)                   hledger User Manuals                   HLEDGER(1) | |||||||
| NAME | NAME | ||||||
|        This  is  the  command-line  interface (CLI) for the hledger accounting |        This  is  the  command-line  interface (CLI) for the hledger accounting | ||||||
|        tool.  Here we also describe hledger's concepts and file formats.  This |        tool.  Here we also describe hledger's concepts and file formats.  This | ||||||
|        manual is for hledger 1.26.99. |        manual is for hledger 1.27. | ||||||
| 
 | 
 | ||||||
| SYNOPSIS | SYNOPSIS | ||||||
|        hledger |        hledger | ||||||
| @ -1054,35 +1054,194 @@ QUERIES | |||||||
|        this  changed  in  hledger 1.22, previously it was the reverse, see the |        this  changed  in  hledger 1.22, previously it was the reverse, see the | ||||||
|        discussion at #1625. |        discussion at #1625. | ||||||
| 
 | 
 | ||||||
| CONVERSION & COST | COST | ||||||
|        This section is about converting  between  commodities.   Some  defini- |        This section is about recording the cost  of  things,  in  transactions | ||||||
|        tions: |        where  one  commodity is exchanged for another.  Eg an exchange of cur- | ||||||
|  |        rency, or a stock purchase or sale.  First, a quick glossary: | ||||||
| 
 | 
 | ||||||
|        o A  "commodity conversion" is an exchange of one currency or commodity |        o Conversion - an exchange of one currency or  commodity  for  another. | ||||||
|          for another.  Eg a foreign currency exchange, or a purchase  or  sale |          Eg  a  foreign  currency  exchange, or a purchase or sale of stock or | ||||||
|          of stock or cryptocurrency. |          cryptocurrency. | ||||||
| 
 | 
 | ||||||
|        o A  "conversion  transaction"  is  a transaction involving one or more |        o Conversion transaction - a transaction involving one or more  conver- | ||||||
|          such conversions. |          sions. | ||||||
| 
 | 
 | ||||||
|        o "Conversion rate" is the exchange rate in a conversion - the cost per |        o Conversion rate - the cost per unit of one commodity in the other, ie | ||||||
|          unit of one commodity in the other. |          the exchange rate. | ||||||
| 
 | 
 | ||||||
|        o "Cost"  is  how  much  of one commodity was paid to acquire the other |        o Cost - how much of one commodity was paid to acquire the other.   And | ||||||
|          (when buying), or how much was received in  exchange  for  the  other |          more  generally,  in  hledger docs: the amount exchanged in the "sec- | ||||||
|          (when  selling).  We call both of these "cost" for convenience (after |          ondary" commodity (usually your base currency), whether in a purchase | ||||||
|          all, it is cost for one party or the other). |          or  a sale, and whether expressed per unit or in total.  Or, the @/@@ | ||||||
|  |          notation used to represent this. | ||||||
| 
 | 
 | ||||||
|    Recording conversions |        o Transaction  price  -  another  name  for  the  cost  expressed  with | ||||||
|        As a concrete example, let's assume 100 EUR was converted to  120  USD. |          hledger's cost notation. | ||||||
|        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.) |  | ||||||
| 
 | 
 | ||||||
|    Implicit conversion |    -B: Convert to cost | ||||||
|        You can just record the outflow (100 EUR) and inflow (120 USD)  in  the |        As  discussed a little further on in Transaction prices, when recording | ||||||
|        appropriate asset account: |        a transaction you can also record the amount's cost in another  commod- | ||||||
|  |        ity, by adding @ UNITPRICE or @@ TOTALPRICE. | ||||||
|  | 
 | ||||||
|  |        Then you can see a report with amounts converted to cost, by adding the | ||||||
|  |        -B/--cost flag.  (Mnemonic: "B" from "cost Basis", as in Ledger).  Eg: | ||||||
|  | 
 | ||||||
|  |               2022-01-01 | ||||||
|  |                 assets:dollars  $-135          ; 135 dollars is exchanged for.. | ||||||
|  |                 assets:euros     EUR100 @ $1.35  ; one hundred euros purchased at $1.35 each | ||||||
|  | 
 | ||||||
|  |               $ hledger bal -N | ||||||
|  |                              $-135  assets:dollars | ||||||
|  |                               EUR100  assets:euros | ||||||
|  |               $ hledger bal -N -B | ||||||
|  |                              $-135  assets:dollars | ||||||
|  |                               $135  assets:euros    # <- the euros' cost | ||||||
|  | 
 | ||||||
|  |        Notes: | ||||||
|  | 
 | ||||||
|  |        -B is sensitive to the order of postings when a  transaction  price  is | ||||||
|  |        inferred:  the  inferred  price  will  be  in the commodity of the last | ||||||
|  |        amount.  So if example 3's postings are reversed, while the transaction | ||||||
|  |        is equivalent, -B shows something different: | ||||||
|  | 
 | ||||||
|  |               2022-01-01 | ||||||
|  |                 assets:dollars  $-135              ; 135 dollars sold | ||||||
|  |                 assets:euros     EUR100              ; for 100 euros | ||||||
|  | 
 | ||||||
|  |               $ hledger bal -N -B | ||||||
|  |                              EUR-100  assets:dollars  # <- the dollars' selling price | ||||||
|  |                               EUR100  assets:euros | ||||||
|  | 
 | ||||||
|  |        The  @/@@  cost notation is convenient, but has some drawbacks: it does | ||||||
|  |        not truly balance the transaction, so it disrupts the accounting  equa- | ||||||
|  |        tion and tends to causes a non-zero total in balance reports. | ||||||
|  | 
 | ||||||
|  |    Equity conversion postings | ||||||
|  |        By contrast, conventional double entry bookkeeping (DEB) uses a differ- | ||||||
|  |        ent notation: an extra pair of equity postings  to  balance  conversion | ||||||
|  |        transactions.  In this style, the above entry might be written: | ||||||
|  | 
 | ||||||
|  |               2022-01-01 one hundred euros purchased at $1.35 each | ||||||
|  |                   assets:dollars      $-135 | ||||||
|  |                   equity:conversion    $135 | ||||||
|  |                   equity:conversion   EUR-100 | ||||||
|  |                   assets:euros         EUR100 | ||||||
|  | 
 | ||||||
|  |        This  style  is more correct, but it's also more verbose and makes cost | ||||||
|  |        reporting more difficult for PTA tools. | ||||||
|  | 
 | ||||||
|  |        Happily, current hledger can read either notation, or  convert  one  to | ||||||
|  |        the other when needed, so you can use the one you prefer. | ||||||
|  | 
 | ||||||
|  |    Inferring equity postings from cost | ||||||
|  |        With --infer-equity, hledger detects transactions written with PTA cost | ||||||
|  |        notation and adds equity conversion postings to them  (and  temporarily | ||||||
|  |        permits  the  coexistence  of equity conversion postings and cost nota- | ||||||
|  |        tion, which normally would cause an unbalanced transaction error).  Eg: | ||||||
|  | 
 | ||||||
|  |               2022-01-01 | ||||||
|  |                 assets:dollars  -$135 | ||||||
|  |                 assets:euros     EUR100 @ $1.35 | ||||||
|  | 
 | ||||||
|  |               $ hledger print --infer-equity | ||||||
|  |               2022-01-01 | ||||||
|  |                   assets:dollars                    $-135 | ||||||
|  |                   assets:euros               EUR100 @ $1.35 | ||||||
|  |                   equity:conversion:$-EUR:EUR           EUR-100  ; generated-posting: | ||||||
|  |                   equity:conversion:$-EUR:$         $135.00  ; generated-posting: | ||||||
|  | 
 | ||||||
|  |        The conversion account names can be changed with the conversion account | ||||||
|  |        type declaration. | ||||||
|  | 
 | ||||||
|  |        --infer-equity is useful when  when  transactions  have  been  recorded | ||||||
|  |        using  PTA  cost notation, to help preserve the accounting equation and | ||||||
|  |        balance reports' zero total, or to produce  more  conventional  journal | ||||||
|  |        entries for sharing with non-PTA-users. | ||||||
|  | 
 | ||||||
|  |        Experimental | ||||||
|  | 
 | ||||||
|  |    Inferring cost from equity postings | ||||||
|  |        The  reverse  operation  is possible using --infer-costs, which detects | ||||||
|  |        transactions written with equity conversion postings and adds PTA  cost | ||||||
|  |        notation  to  them  (and  temporarily permits the coexistence of equity | ||||||
|  |        conversion postings and cost notation).  Eg: | ||||||
|  | 
 | ||||||
|  |               2022-01-01 | ||||||
|  |                   assets:dollars            $-135 | ||||||
|  |                   equity:conversion          $135 | ||||||
|  |                   equity:conversion         EUR-100 | ||||||
|  |                   assets:euros               EUR100 | ||||||
|  | 
 | ||||||
|  |               $ hledger print --infer-costs | ||||||
|  |               2022-01-01 | ||||||
|  |                   assets:dollars       $-135 @@ EUR100 | ||||||
|  |                   equity:conversion             $135 | ||||||
|  |                   equity:conversion            EUR-100 | ||||||
|  |                   assets:euros                  EUR100 | ||||||
|  | 
 | ||||||
|  |        --infer-costs is useful when combined  with  -B/--cost,  allowing  cost | ||||||
|  |        reporting  even when transactions have been recorded using equity post- | ||||||
|  |        ings: | ||||||
|  | 
 | ||||||
|  |               $ hledger print --infer-costs -B | ||||||
|  |               2009-01-01 | ||||||
|  |                   assets:dollars           EUR-100 | ||||||
|  |                   assets:euros              EUR100 | ||||||
|  | 
 | ||||||
|  |        Notes: | ||||||
|  | 
 | ||||||
|  |        Postings will be recognised as equity conversion postings if  they  are | ||||||
|  |        1.   to  account(s)  declared  with  type  V (Conversion; or if no such | ||||||
|  |        accounts are declared, accounts named equity:conversion,  equity:trade, | ||||||
|  |        equity:trading,  or  subaccounts of these) 2.  adjacent 3.  and exactly | ||||||
|  |        matching the amounts of two non-conversion postings. | ||||||
|  | 
 | ||||||
|  |        The total cost is appended to the first matching posting in the  trans- | ||||||
|  |        action.   If  you  need  to assign it to a different posting, or if you | ||||||
|  |        have several different sets of conversion postings in one  transaction, | ||||||
|  |        you may need to write the costs explicitly yourself.  Eg: | ||||||
|  | 
 | ||||||
|  |               2022-01-01 | ||||||
|  |                   assets:dollars                    $-135 | ||||||
|  |                   equity:conversion                 EUR-100 | ||||||
|  |                   equity:conversion                  $135 | ||||||
|  |                   assets:euros               EUR100 @@ $135 | ||||||
|  | 
 | ||||||
|  |        or: | ||||||
|  | 
 | ||||||
|  |               2022-01-01 | ||||||
|  |                   assets:dollars                    $-235 | ||||||
|  |                   assets:euros               EUR100 @ $1.35  ; 100 euros bought for $1.35 each | ||||||
|  |                   equity:conversion                 EUR-100 | ||||||
|  |                   equity:conversion                  $135 | ||||||
|  |                   assets:pounds               80 @@ $100  ; 80 pounds bought for $100 total | ||||||
|  |                   equity:conversion                  -80 | ||||||
|  |                   equity:conversion                  $100 | ||||||
|  | 
 | ||||||
|  |        --infer-equity and --infer-costs can be used together, eg if you have a | ||||||
|  |        mixture of both notations. | ||||||
|  | 
 | ||||||
|  |        Experimental | ||||||
|  | 
 | ||||||
|  |    When to infer cost/equity | ||||||
|  |        Inferring equity postings or costs is still fairly new, so not  enabled | ||||||
|  |        by  default.   We're  not sure yet if that should change.  Here are two | ||||||
|  |        suggestions to try, experience reports welcome: | ||||||
|  | 
 | ||||||
|  |        1. When you use -B, always use --infer-costs as well.  Eg: hledger  bal | ||||||
|  |           -B --infer-costs | ||||||
|  | 
 | ||||||
|  |        2. Always  run  hledger with both flags enabled.  Eg: alias hl="hledger | ||||||
|  |           --infer-equity --infer-costs" | ||||||
|  | 
 | ||||||
|  |    How to record conversions | ||||||
|  |        Essentially there are four ways to record a conversion  transaction  in | ||||||
|  |        hledger.  Here are all of them, with pros and cons. | ||||||
|  | 
 | ||||||
|  |    Conversion with implicit cost | ||||||
|  |        Let's  assume 100 EUR is converted to 120 USD.  You can just record the | ||||||
|  |        outflow (100 EUR)  and  inflow  (120  USD)  in  the  appropriate  asset | ||||||
|  |        account: | ||||||
| 
 | 
 | ||||||
|               2021-01-01 |               2021-01-01 | ||||||
|                   assets:cash    -100 EUR |                   assets:cash    -100 EUR | ||||||
| @ -1094,25 +1253,25 @@ CONVERSION & COST | |||||||
| 
 | 
 | ||||||
|        Pro: |        Pro: | ||||||
| 
 | 
 | ||||||
|        o Easy, concise |        o Concise, easy | ||||||
| 
 |  | ||||||
|        o hledger can do cost reporting |  | ||||||
| 
 | 
 | ||||||
|        Con: |        Con: | ||||||
| 
 | 
 | ||||||
|        o Less  error  checking - typos in amounts or commodity symbols may not |        o Less  error  checking - typos in amounts or commodity symbols may not | ||||||
|          be detected |          be detected | ||||||
| 
 | 
 | ||||||
|        o conversion rate is not clear |        o Conversion rate is not clear | ||||||
| 
 | 
 | ||||||
|        o disturbs the accounting equation |        o Disturbs the accounting equation, unless you add  the  --infer-equity | ||||||
|  |          flag | ||||||
| 
 | 
 | ||||||
|        You  can prevent accidental implicit conversions due to a mistyped com- |        You  can prevent accidental implicit conversions due to a mistyped com- | ||||||
|        modity  symbol,  by  using  hledger check commodities.  You can prevent |        modity symbol, by using hledger check commodities. | ||||||
|        implicit conversions entirely, by using hledger  check  balancednoauto- |  | ||||||
|        conversion, or -s/--strict. |  | ||||||
| 
 | 
 | ||||||
|    Priced conversion |        You can prevent implicit conversions entirely, by using  hledger  check | ||||||
|  |        balancednoautoconversion, or -s/--strict. | ||||||
|  | 
 | ||||||
|  |    Conversion with explicit cost | ||||||
|        You can add the conversion rate using @ notation: |        You can add the conversion rate using @ notation: | ||||||
| 
 | 
 | ||||||
|               2021-01-01 |               2021-01-01 | ||||||
| @ -1126,17 +1285,16 @@ CONVERSION & COST | |||||||
| 
 | 
 | ||||||
|        o Still concise |        o Still concise | ||||||
| 
 | 
 | ||||||
|        o makes the conversion rate clear |        o Makes the conversion rate clear | ||||||
| 
 | 
 | ||||||
|        o provides some error checking |        o Provides more error checking | ||||||
| 
 |  | ||||||
|        o hledger can do cost reporting |  | ||||||
| 
 | 
 | ||||||
|        Con: |        Con: | ||||||
| 
 | 
 | ||||||
|        o Disturbs the accounting equation without the --infer-equity flag |        o Disturbs the accounting equation, unless you add  the  --infer-equity | ||||||
|  |          flag | ||||||
| 
 | 
 | ||||||
|    Equity conversion |    Conversion with equity postings | ||||||
|        In  strict  double entry bookkeeping, the above transaction is not bal- |        In  strict  double entry bookkeeping, the above transaction is not bal- | ||||||
|        anced in EUR or in  USD,  since  some  EUR  disappears,  and  some  USD |        anced in EUR or in  USD,  since  some  EUR  disappears,  and  some  USD | ||||||
|        appears.  This violates the accounting equation (A+L+E=0), and prevents |        appears.  This violates the accounting equation (A+L+E=0), and prevents | ||||||
| @ -1155,24 +1313,22 @@ CONVERSION & COST | |||||||
| 
 | 
 | ||||||
|        o Preserves the accounting equation |        o Preserves the accounting equation | ||||||
| 
 | 
 | ||||||
|        o keeps track of conversions and related gains/losses in one place |        o Keeps track of conversions and related gains/losses in one place | ||||||
| 
 | 
 | ||||||
|        o works in any double entry accounting system |        o Standard, works in any double entry accounting system | ||||||
| 
 |  | ||||||
|        o hledger can convert this to transaction  prices  using  the  --infer- |  | ||||||
|          costs flag |  | ||||||
| 
 | 
 | ||||||
|        Con: |        Con: | ||||||
| 
 | 
 | ||||||
|        o More verbose |        o More verbose | ||||||
| 
 | 
 | ||||||
|        o conversion rate is not clear |        o Conversion rate is not obvious | ||||||
| 
 | 
 | ||||||
|        o depends on the order of postings |        o Cost reporting requires adding the --infer-costs flag | ||||||
| 
 | 
 | ||||||
|    Priced equity conversion |    Conversion with equity postings and explicit cost | ||||||
|        Another  notation  is to record both the conversion rate and the equity |        Here  both  equity  postings and @ notation are used together.  hledger | ||||||
|        postings: |        will usually  complain  about  this  redundancy,  but  when  using  the | ||||||
|  |        --infer-costs flag it is accepted. | ||||||
| 
 | 
 | ||||||
|               2021-01-01 |               2021-01-01 | ||||||
|                   assets:cash        -100 EUR @ 1.20 USD |                   assets:cash        -100 EUR @ 1.20 USD | ||||||
| @ -1184,66 +1340,38 @@ CONVERSION & COST | |||||||
| 
 | 
 | ||||||
|        o Preserves the accounting equation |        o Preserves the accounting equation | ||||||
| 
 | 
 | ||||||
|        o keeps track of conversions and related gains/losses in one place |        o Keeps track of conversions and related gains/losses in one place | ||||||
| 
 | 
 | ||||||
|        o makes the conversion rate clear |        o Makes the conversion rate clear | ||||||
| 
 | 
 | ||||||
|        o provides some error checking |        o Provides more error checking | ||||||
| 
 |  | ||||||
|        o hledger can do cost reporting |  | ||||||
| 
 | 
 | ||||||
|        Con: |        Con: | ||||||
| 
 | 
 | ||||||
|        o Most verbose |        o Most verbose | ||||||
| 
 | 
 | ||||||
|        o Requires --infer-costs flag |        o Requires the --infer-costs flag | ||||||
| 
 | 
 | ||||||
|        o Not compatible with ledger |        o Not compatible with ledger | ||||||
| 
 | 
 | ||||||
|    Inferring missing conversion rates |    Cost tips | ||||||
|        hledger will do this automatically for implicit conversions.  Currently |        o Recording  the  conversion  rate  explicitly is good because it makes | ||||||
|        it can not do this for equity conversions. |          that clear and helps detect errors. | ||||||
| 
 | 
 | ||||||
|    Inferring missing equity postings |        o Recording equity postings is good because it is  correct  bookkeeping | ||||||
|        With  the  --infer-equity  flag,  hledger  will  add equity postings to |          and preserves the accounting equation. | ||||||
|        priced and implicit conversions. |  | ||||||
| 
 | 
 | ||||||
|    Inferring missing transaction prices from equity postings |        o Combining  these  is  possible by using the --infer-costs flag (which | ||||||
|        With the --infer-costs flag, hledger will add transaction  prices  from |          requires well-ordered postings). | ||||||
|        equity  postings,  and  will  be  able to handle transaction prices and |  | ||||||
|        equity postings together. |  | ||||||
| 
 | 
 | ||||||
|    Cost reporting |        o When you want to see the cost (or sale proceeds) of  things,  use  -B | ||||||
|        With the -B/--cost flag, hledger will convert the amounts in priced and |          (or  --cost).  If you use equity conversion postings notation, use -B | ||||||
|        implicit  conversions  to  their  cost in the other commodity.  This is |          --infer-costs. | ||||||
|        useful to see a report of what you paid for things  (or  how  much  you |  | ||||||
|        sold  things for).  Currently -B/--cost does not work on equity conver- |  | ||||||
|        sions, and it disables --infer-equity. |  | ||||||
| 
 | 
 | ||||||
|        These operations are transient, only affecting reports.  If you want to |        o If you use PTA cost notation, and you want to see a balanced  balance | ||||||
|        change  the journal file permanently, you could pipe each entry through |          sheet or print correct journal entries, use --infer-equity. | ||||||
|        hledger -f- -I print [-x] [--infer-equity] [--infer-costs] [-B] |  | ||||||
| 
 | 
 | ||||||
|    Conversion summary |        o Conversion to cost is performed before valuation (described next). | ||||||
|        o Recording the conversion rate is good because it makes that clear and |  | ||||||
|          allows cost reporting. |  | ||||||
| 
 |  | ||||||
|        o Recording  equity postings is good because it balances the accounting |  | ||||||
|          equation and is correct bookkeeping. |  | ||||||
| 
 |  | ||||||
|        o Combining these is possible with the --infer-costs flag, but has cer- |  | ||||||
|          tain requirements for the order of postings. |  | ||||||
| 
 |  | ||||||
|        o When  you  want  to  see  the  cost (or sale proceeds) of things, use |  | ||||||
|          -B/--cost. |  | ||||||
| 
 |  | ||||||
|        o When you want to see a balanced  balance  sheet  or  correct  journal |  | ||||||
|          entries, use --infer-equity. |  | ||||||
| 
 |  | ||||||
|        o --cost  will  remove any balancing equity posts, so as not to disturb |  | ||||||
|          the accounting equation. |  | ||||||
| 
 |  | ||||||
|        o Conversion/cost operations are performed before valuation. |  | ||||||
| 
 | 
 | ||||||
| VALUATION | VALUATION | ||||||
|        Instead  of  reporting amounts in their original commodity, hledger can |        Instead  of  reporting amounts in their original commodity, hledger can | ||||||
| @ -1587,15 +1715,14 @@ VALUATION | |||||||
|        posting         cost           value     at   value  at posting   value     at   value      at |        posting         cost           value     at   value  at posting   value     at   value      at | ||||||
|        amounts                        report   end   date                report    or   DATE/today |        amounts                        report   end   date                report    or   DATE/today | ||||||
|                                       or today                           journal end |                                       or today                           journal end | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|        balance         unchanged      unchanged      unchanged           unchanged      unchanged |        balance         unchanged      unchanged      unchanged           unchanged      unchanged | ||||||
|        asser- |        asser- | ||||||
|        tions/assign- |        tions/assign- | ||||||
|        ments |        ments | ||||||
| 
 | 
 | ||||||
|        register |        register | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|        starting bal-   cost           value     at   valued   at   day   value     at   value      at |        starting bal-   cost           value     at   valued   at   day   value     at   value      at | ||||||
|        ance (-H)                      report    or   each   historical   report    or   DATE/today |        ance (-H)                      report    or   each   historical   report    or   DATE/today | ||||||
|                                       journal end    posting was made    journal end |                                       journal end    posting was made    journal end | ||||||
| @ -1658,8 +1785,6 @@ VALUATION | |||||||
|        row  averages   ages of dis-   ages of dis-   displayed values    ages of dis-   ages  of dis- |        row  averages   ages of dis-   ages of dis-   displayed values    ages of dis-   ages  of dis- | ||||||
|        (-T, -A)        played  val-   played  val-                       played  val-   played values |        (-T, -A)        played  val-   played  val-                       played  val-   played values | ||||||
|                        ues            ues                                ues |                        ues            ues                                ues | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|        column totals   sums of dis-   sums of dis-   sums of displayed   sums of dis-   sums  of dis- |        column totals   sums of dis-   sums of dis-   sums of displayed   sums of dis-   sums  of dis- | ||||||
|                        played  val-   played  val-   values              played  val-   played values |                        played  val-   played  val-   values              played  val-   played values | ||||||
|                        ues            ues                                ues |                        ues            ues                                ues | ||||||
| @ -1798,8 +1923,6 @@ OUTPUT | |||||||
|        balance       Y 1   Y 1   Y 1,2   Y |        balance       Y 1   Y 1   Y 1,2   Y | ||||||
|        bal-          Y 1   Y 1   Y 1     Y |        bal-          Y 1   Y 1   Y 1     Y | ||||||
|        ancesheet |        ancesheet | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|        bal-          Y 1   Y 1   Y 1     Y |        bal-          Y 1   Y 1   Y 1     Y | ||||||
|        ancesheete- |        ancesheete- | ||||||
|        quity |        quity | ||||||
| @ -5023,15 +5146,23 @@ JOURNAL FORMAT | |||||||
|        this could vary if hledger was built with Decimal < 0.5.1.) |        this could vary if hledger was built with Decimal < 0.5.1.) | ||||||
| 
 | 
 | ||||||
|    Transaction prices |    Transaction prices | ||||||
|        Within a transaction, you can note an amount's price in another commod- |        (AKA Costs) | ||||||
|        ity.   This can be used to document the cost (in a purchase) or selling |  | ||||||
|        price (in a sale).  For  example,  transaction  prices  are  useful  to |  | ||||||
|        record  purchases  of  a foreign currency.  Note transaction prices are |  | ||||||
|        fixed at the time of the transaction, and do not change over time.  See |  | ||||||
|        also market prices, which represent prevailing exchange rates on a cer- |  | ||||||
|        tain date. |  | ||||||
| 
 | 
 | ||||||
|        There are several ways to record a transaction price: |        After  a  posting  amount,  you  can  note its cost or selling price in | ||||||
|  |        another commodity, by writing either @ UNITPRICE or @@ TOTALPRICE after | ||||||
|  |        it.   This  indicates  a conversion transaction, where one commodity is | ||||||
|  |        exchanged for another. | ||||||
|  | 
 | ||||||
|  |        hledger docs  have  historically  called  this  a  "transaction  price" | ||||||
|  |        because  it  is specific to one transaction, unlike market prices which | ||||||
|  |        are not.  "Cost" is shorter and might be preferable; just remember this | ||||||
|  |        feature can represent either a buyer's cost, or a seller's price. | ||||||
|  | 
 | ||||||
|  |        Costs  are  usually  written  explicitly  with @ or @@, but can also be | ||||||
|  |        inferred automatically for simple multi-commodity transactions. | ||||||
|  |        As an example, here are several ways to record purchases of  a  foreign | ||||||
|  |        currency  in  hledger,  using  the  cost  notation either explicitly or | ||||||
|  |        implicitly: | ||||||
| 
 | 
 | ||||||
|        1. Write the price per unit, as @ UNITPRICE after the amount: |        1. Write the price per unit, as @ UNITPRICE after the amount: | ||||||
| 
 | 
 | ||||||
| @ -5059,92 +5190,8 @@ JOURNAL FORMAT | |||||||
|        5. Like 2, but as in 4 the @@ is parenthesised, i.e.  (@@); in hledger, |        5. Like 2, but as in 4 the @@ is parenthesised, i.e.  (@@); in hledger, | ||||||
|           this is equivalent to 2. |           this is equivalent to 2. | ||||||
| 
 | 
 | ||||||
|        Use the -B/--cost flag to convert amounts to their transaction  price's |        Amounts can be converted to cost at report  time  using  the  -B/--cost | ||||||
|        commodity, if any.  (mnemonic: "B" is from "cost Basis", as in Ledger). |        flag; this is discussed more in the COST section. | ||||||
|        Eg here is how -B affects the balance report for the example above: |  | ||||||
| 
 |  | ||||||
|               $ hledger bal -N --flat |  | ||||||
|                              $-135  assets:dollars |  | ||||||
|                               EUR100  assets:euros |  | ||||||
|               $ hledger bal -N --flat -B |  | ||||||
|                              $-135  assets:dollars |  | ||||||
|                               $135  assets:euros    # <- the euros' cost |  | ||||||
| 
 |  | ||||||
|        Note -B is sensitive to the order of postings when a transaction  price |  | ||||||
|        is  inferred:  the  inferred price will be in the commodity of the last |  | ||||||
|        amount.  So if example 3's postings are reversed, while the transaction |  | ||||||
|        is equivalent, -B shows something different: |  | ||||||
| 
 |  | ||||||
|               2009/1/1 |  | ||||||
|                 assets:dollars  $-135              ; 135 dollars sold |  | ||||||
|                 assets:euros     EUR100              ; for 100 euros |  | ||||||
| 
 |  | ||||||
|               $ hledger bal -N --flat -B |  | ||||||
|                              EUR-100  assets:dollars  # <- the dollars' selling price |  | ||||||
|                               EUR100  assets:euros |  | ||||||
| 
 |  | ||||||
|    Equity conversion postings |  | ||||||
|        Transaction prices can be converted to and from equity conversion post- |  | ||||||
|        ings using the --infer-equity and --infer-costs flags. |  | ||||||
| 
 |  | ||||||
|        With --infer-equity, hledger will add equity postings  to  balance  out |  | ||||||
|        any transaction prices. |  | ||||||
| 
 |  | ||||||
|               2009/1/1 |  | ||||||
|                 assets:euros     EUR100 @ $1.35      ; 100 euros bought |  | ||||||
|                 assets:dollars  -$135              ; for $135 |  | ||||||
| 
 |  | ||||||
|               $ hledger print --infer-equity |  | ||||||
| 
 |  | ||||||
|               2009-01-01 |  | ||||||
|                   assets:euros               EUR100 @ $1.35  ; 100 euros bought |  | ||||||
|                   equity:conversion:$-EUR:EUR           EUR-100  ; 100 euros bought, generated-posting: |  | ||||||
|                   equity:conversion:$-EUR:$         $135.00  ; 100 euros bought, generated-posting: |  | ||||||
|                   assets:dollars                    $-135  ; for $135 |  | ||||||
| 
 |  | ||||||
|        The  reverse  is  possible  using  --infer-costs,  which will check any |  | ||||||
|        equity conversion postings and generate a  transaction  price  for  the |  | ||||||
|        first non-conversion posting which matches. |  | ||||||
| 
 |  | ||||||
|               2009-01-01 |  | ||||||
|                   assets:euros                       EUR100  ; 100 euros bought |  | ||||||
|                   equity:conversion                 EUR-100 |  | ||||||
|                   equity:conversion                  $135 |  | ||||||
|                   assets:dollars                    $-135  ; for $135 |  | ||||||
| 
 |  | ||||||
|               $ hledger print --infer-costs |  | ||||||
| 
 |  | ||||||
|               2009-01-01 |  | ||||||
|                   assets:euros               EUR100 @@ $135  ; 100 euros bought |  | ||||||
|                   equity:conversion                 EUR-100 |  | ||||||
|                   equity:conversion                  $135 |  | ||||||
|                   assets:dollars                    $-135  ; for $135 |  | ||||||
| 
 |  | ||||||
|        Note  that  the  above  will  assign the transaction price to the first |  | ||||||
|        matching posting in the transaction.  If you want to  assign  it  to  a |  | ||||||
|        different  posting, or if you have several different sets of conversion |  | ||||||
|        postings which must match different postings, you must manually specify |  | ||||||
|        the transaction price.  If you do this, equity conversion postings must |  | ||||||
|        occur in adjacent pairs and must exactly match the amount of a non-con- |  | ||||||
|        version posting. |  | ||||||
| 
 |  | ||||||
|               2009-01-01 |  | ||||||
|                   assets:dollars                    $-135  ; $135 paid |  | ||||||
|                   equity:conversion                 EUR-100 |  | ||||||
|                   equity:conversion                  $135 |  | ||||||
|                   assets:euros               EUR100 @@ $135  ; to buy 100 euros |  | ||||||
| 
 |  | ||||||
|               2009-01-01 |  | ||||||
|                   assets:euros               EUR100 @ $1.35  ; 100 euros bought |  | ||||||
|                   equity:conversion                 EUR-100 |  | ||||||
|                   equity:conversion                  $135 |  | ||||||
|                   assets:pounds               80 @@ $100  ; 80 pounds bought |  | ||||||
|                   equity:conversion                  -80 |  | ||||||
|                   equity:conversion                  $100 |  | ||||||
|                   assets:dollars                    $-235  ; for $235 total |  | ||||||
| 
 |  | ||||||
|        The  account names used for the conversion accounts can be changed with |  | ||||||
|        the conversion account type declaration. |  | ||||||
| 
 | 
 | ||||||
|    Lot prices, lot dates |    Lot prices, lot dates | ||||||
|        Ledger  allows  another kind of price, lot price (four variants: {UNIT- |        Ledger  allows  another kind of price, lot price (four variants: {UNIT- | ||||||
| @ -5402,9 +5449,6 @@ JOURNAL FORMAT | |||||||
|                   any text, ignored. |                   any text, ignored. | ||||||
|        alias      Rewrites  account  names,  in  following entries until end of   Y |        alias      Rewrites  account  names,  in  following entries until end of   Y | ||||||
|                   current file or end aliases. |                   current file or end aliases. | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|        apply      Prepends a common parent account to  all  account  names,  in   Y |        apply      Prepends a common parent account to  all  account  names,  in   Y | ||||||
|        account    following  entries  until  end  of  current file or end apply |        account    following  entries  until  end  of  current file or end apply | ||||||
|                   account. |                   account. | ||||||
| @ -5802,8 +5846,7 @@ JOURNAL FORMAT | |||||||
|        o C or Cash (a subtype of Asset, indicating liquid assets for the cash- |        o C or Cash (a subtype of Asset, indicating liquid assets for the cash- | ||||||
|          flow report) |          flow report) | ||||||
| 
 | 
 | ||||||
|        o V or Conversion (a subtype of Equity, for conversions (see CONVERSION |        o V or Conversion (a subtype of Equity, for conversions (see COST).) | ||||||
|          & COST).) |  | ||||||
| 
 | 
 | ||||||
|        Here is a typical set of account type declarations: |        Here is a typical set of account type declarations: | ||||||
| 
 | 
 | ||||||
| @ -6388,8 +6431,6 @@ CSV FORMAT | |||||||
|        below, after the examples: |        below, after the examples: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|        skip                         skip one or more header lines or matched CSV |        skip                         skip one or more header lines or matched CSV | ||||||
|                                     records |                                     records | ||||||
|        fields list                  name CSV  fields,  assign  them  to  hledger |        fields list                  name CSV  fields,  assign  them  to  hledger | ||||||
| @ -7922,7 +7963,7 @@ COMMON TASKS | |||||||
|        Show only asset and liability balances, as  a  flat  list,  limited  to |        Show only asset and liability balances, as  a  flat  list,  limited  to | ||||||
|        depth 2: |        depth 2: | ||||||
| 
 | 
 | ||||||
|               $ hledger bal assets liabilities --flat -2 |               $ hledger bal assets liabilities -2 | ||||||
|                              $4000  assets:bank |                              $4000  assets:bank | ||||||
|                               $105  assets:cash |                               $105  assets:cash | ||||||
|                               $-50  liabilities:creditcard |                               $-50  liabilities:creditcard | ||||||
| @ -7932,7 +7973,7 @@ COMMON TASKS | |||||||
|        Show  the  same  thing  without negative numbers, formatted as a simple |        Show  the  same  thing  without negative numbers, formatted as a simple | ||||||
|        balance sheet: |        balance sheet: | ||||||
| 
 | 
 | ||||||
|               $ hledger bs --flat -2 |               $ hledger bs -2 | ||||||
|               Balance Sheet 2020-01-16 |               Balance Sheet 2020-01-16 | ||||||
| 
 | 
 | ||||||
|                                       || 2020-01-16 |                                       || 2020-01-16 | ||||||
| @ -8114,4 +8155,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-1.26.99                   August 2022                       HLEDGER(1) | hledger-1.27                    September 2022                      HLEDGER(1) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user