doc: also commit info files, should fix travis
This commit is contained in:
parent
a77f0a3835
commit
80948d1db7
74
hledger-api/doc/hledger-api.1.info
Normal file
74
hledger-api/doc/hledger-api.1.info
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
This is hledger-api/doc/hledger-api.1.info, produced by makeinfo
|
||||||
|
version 4.8 from stdin.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-api.1.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
|
hledger-api(1)
|
||||||
|
**************
|
||||||
|
|
||||||
|
hledger-api is a simple web API server, intended to support client-side
|
||||||
|
web apps operating on hledger data. It comes with a series of simple
|
||||||
|
client-side app examples, which drive it's evolution.
|
||||||
|
|
||||||
|
Data is served from the usual hledger journal file:
|
||||||
|
`~/.hledger.journal', `$LEDGER_FILE', or another file specified with
|
||||||
|
-f. For more about the format, see hledger(1) or hledger_journal(5).
|
||||||
|
|
||||||
|
The server listens on port 8001, or another specified with `-p
|
||||||
|
PORT'. Note there is no built-in access control, so you will need to
|
||||||
|
hide hledger-api behind an authenticating proxy if you want to restrict
|
||||||
|
access.
|
||||||
|
|
||||||
|
If invoked as `hledger-api --swagger', instead of starting a server
|
||||||
|
the API docs will be printed in Swagger 2.0 format.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* OPTIONS::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-api.1.info, Node: OPTIONS, Prev: Top, Up: Top
|
||||||
|
|
||||||
|
1 OPTIONS
|
||||||
|
*********
|
||||||
|
|
||||||
|
Note: if invoking hledger-api as a hledger subcommand, write `--'
|
||||||
|
before options as shown above.
|
||||||
|
|
||||||
|
`-f --file FILE'
|
||||||
|
use a different input file (default: `$LEDGER_FILE' or
|
||||||
|
`~/.hledger.journal')
|
||||||
|
|
||||||
|
`-d --static-dir=DIR'
|
||||||
|
serve files from a different directory (default: `.')
|
||||||
|
|
||||||
|
`-p --port=PORT'
|
||||||
|
use a different TCP port (default: 8001)
|
||||||
|
|
||||||
|
`--swagger'
|
||||||
|
print API docs in Swagger 2.0 format, and exit
|
||||||
|
|
||||||
|
`-h'
|
||||||
|
show usage
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
show manual
|
||||||
|
|
||||||
|
`--man'
|
||||||
|
show manual with man
|
||||||
|
|
||||||
|
`--info'
|
||||||
|
show manual with info
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
show version
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
Node: Top90
|
||||||
|
Node: OPTIONS925
|
||||||
|
Ref: #options1012
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
230
hledger-lib/doc/hledger_csv.5.info
Normal file
230
hledger-lib/doc/hledger_csv.5.info
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
This is hledger-lib/doc/hledger_csv.5.info, produced by makeinfo
|
||||||
|
version 4.8 from stdin.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
|
hledger_csv(5)
|
||||||
|
**************
|
||||||
|
|
||||||
|
hledger can read CSV files, converting each CSV record into a journal
|
||||||
|
entry (transaction), if you provide some conversion hints in a "rules
|
||||||
|
file". This file should be named like the CSV file with an additional
|
||||||
|
`.rules' suffix (eg: `mybank.csv.rules'); or, you can specify the file
|
||||||
|
with `--rules-file PATH'. hledger will create it if necessary, with
|
||||||
|
some default rules which you'll need to adjust. At minimum, the rules
|
||||||
|
file must specify the `date' and `amount' fields. For an example, see
|
||||||
|
How to read CSV files.
|
||||||
|
|
||||||
|
To learn about _exporting_ CSV, see CSV output.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* CSV RULES::
|
||||||
|
* TIPS::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: CSV RULES, Next: TIPS, Prev: Top, Up: Top
|
||||||
|
|
||||||
|
1 CSV RULES
|
||||||
|
***********
|
||||||
|
|
||||||
|
The following six kinds of rule can appear in the rules file, in any
|
||||||
|
order. Blank lines and lines beginning with `#' or `;' are ignored.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* skip::
|
||||||
|
* date-format::
|
||||||
|
* field list::
|
||||||
|
* field assignment::
|
||||||
|
* conditional block::
|
||||||
|
* include::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: skip, Next: date-format, Up: CSV RULES
|
||||||
|
|
||||||
|
1.1 skip
|
||||||
|
========
|
||||||
|
|
||||||
|
`skip'_`N'_
|
||||||
|
|
||||||
|
Skip this number of CSV records at the beginning. You'll need this
|
||||||
|
whenever your CSV data contains header lines. Eg:
|
||||||
|
|
||||||
|
|
||||||
|
# ignore the first CSV line
|
||||||
|
skip 1
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: date-format, Next: field list, Prev: skip, Up: CSV RULES
|
||||||
|
|
||||||
|
1.2 date-format
|
||||||
|
===============
|
||||||
|
|
||||||
|
`date-format'_`DATEFMT'_
|
||||||
|
|
||||||
|
When your CSV date fields are not formatted like `YYYY/MM/DD' (or
|
||||||
|
`YYYY-MM-DD' or `YYYY.MM.DD'), you'll need to specify the format.
|
||||||
|
DATEFMT is a strptime-like date parsing pattern, which must parse the
|
||||||
|
date field values completely. Examples:
|
||||||
|
|
||||||
|
|
||||||
|
# for dates like "6/11/2013":
|
||||||
|
date-format %-d/%-m/%Y
|
||||||
|
|
||||||
|
|
||||||
|
# for dates like "11/06/2013":
|
||||||
|
date-format %m/%d/%Y
|
||||||
|
|
||||||
|
|
||||||
|
# for dates like "2013-Nov-06":
|
||||||
|
date-format %Y-%h-%d
|
||||||
|
|
||||||
|
|
||||||
|
# for dates like "11/6/2013 11:32 PM":
|
||||||
|
date-format %-m/%-d/%Y %l:%M %p
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: field list, Next: field assignment, Prev: date-format, Up: CSV RULES
|
||||||
|
|
||||||
|
1.3 field list
|
||||||
|
==============
|
||||||
|
|
||||||
|
`fields'_`FIELDNAME1'_, _`FIELDNAME2'_...
|
||||||
|
|
||||||
|
This (a) names the CSV fields, in order (names may not contain
|
||||||
|
whitespace, but may be omitted), and (b) assigns them to journal entry
|
||||||
|
fields if you use any of these standard field names: `date', `date2',
|
||||||
|
`status', `code', `description', `comment', `account1', `account2',
|
||||||
|
`amount', `amount-in', `amount-out', `currency'. Eg:
|
||||||
|
|
||||||
|
|
||||||
|
# use the 1st, 2nd and 4th CSV fields as the entry's date, description and amount,
|
||||||
|
# and give the 7th and 8th fields meaningful names for later reference:
|
||||||
|
#
|
||||||
|
# CSV field:
|
||||||
|
# 1 2 3 4 5 6 7 8
|
||||||
|
# entry field:
|
||||||
|
fields date, description, , amount, , , somefield, anotherfield
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: field assignment, Next: conditional block, Prev: field list, Up: CSV RULES
|
||||||
|
|
||||||
|
1.4 field assignment
|
||||||
|
====================
|
||||||
|
|
||||||
|
_`ENTRYFIELDNAME'_ _`FIELDVALUE'_
|
||||||
|
|
||||||
|
This sets a journal entry field (one of the standard names above) to
|
||||||
|
the given text value, which can include CSV field values interpolated by
|
||||||
|
name (`%CSVFIELDNAME') or 1-based position (`%N'). Eg:
|
||||||
|
|
||||||
|
|
||||||
|
# set the amount to the 4th CSV field with "USD " prepended
|
||||||
|
amount USD %4
|
||||||
|
|
||||||
|
|
||||||
|
# combine three fields to make a comment (containing two tags)
|
||||||
|
comment note: %somefield - %anotherfield, date: %1
|
||||||
|
|
||||||
|
Field assignments can be used instead of or in addition to a field
|
||||||
|
list.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: conditional block, Next: include, Prev: field assignment, Up: CSV RULES
|
||||||
|
|
||||||
|
1.5 conditional block
|
||||||
|
=====================
|
||||||
|
|
||||||
|
`if' _`PATTERN'_
|
||||||
|
_`FIELDASSIGNMENTS'_...
|
||||||
|
|
||||||
|
`if'
|
||||||
|
_`PATTERN'_
|
||||||
|
_`PATTERN'_...
|
||||||
|
_`FIELDASSIGNMENTS'_...
|
||||||
|
|
||||||
|
This applies one or more field assignments, only to those CSV records
|
||||||
|
matched by one of the PATTERNs. The patterns are case-insensitive
|
||||||
|
regular expressions which match anywhere within the whole CSV record
|
||||||
|
(it's not yet possible to match within a specific field). When there are
|
||||||
|
multiple patterns they should be written on separate lines, unindented.
|
||||||
|
The field assignments are on separate lines indented by at least one
|
||||||
|
space. Examples:
|
||||||
|
|
||||||
|
|
||||||
|
# if the CSV record contains "groceries", set account2 to "expenses:groceries"
|
||||||
|
if groceries
|
||||||
|
account2 expenses:groceries
|
||||||
|
|
||||||
|
|
||||||
|
# if the CSV record contains any of these patterns, set account2 and comment as shown
|
||||||
|
if
|
||||||
|
monthly service fee
|
||||||
|
atm transaction fee
|
||||||
|
banking thru software
|
||||||
|
account2 expenses:business:banking
|
||||||
|
comment XXX deductible ? check it
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: include, Prev: conditional block, Up: CSV RULES
|
||||||
|
|
||||||
|
1.6 include
|
||||||
|
===========
|
||||||
|
|
||||||
|
`include'_`RULESFILE'_
|
||||||
|
|
||||||
|
Include another rules file at this point. `RULESFILE' is either an
|
||||||
|
absolute file path or a path relative to the current file's directory.
|
||||||
|
Eg:
|
||||||
|
|
||||||
|
|
||||||
|
# rules reused with several CSV files
|
||||||
|
include common.rules
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_csv.5.info, Node: TIPS, Prev: CSV RULES, Up: Top
|
||||||
|
|
||||||
|
2 TIPS
|
||||||
|
******
|
||||||
|
|
||||||
|
Each generated journal entry will have two postings, to `account1' and
|
||||||
|
`account2' respectively. Currently it's not possible to generate
|
||||||
|
entries with more than two postings.
|
||||||
|
|
||||||
|
If the CSV has debit/credit amounts in separate fields, assign to the
|
||||||
|
`amount-in' and `amount-out' pseudo fields instead of `amount'.
|
||||||
|
|
||||||
|
If the CSV has the currency in a separate field, assign that to the
|
||||||
|
`currency' pseudo field which will be automatically prepended to the
|
||||||
|
amount. (Or you can do the same thing with a field assignment.)
|
||||||
|
|
||||||
|
If an amount value is parenthesised, it will be de-parenthesised and
|
||||||
|
sign-flipped automatically.
|
||||||
|
|
||||||
|
The generated journal entries will be sorted by date. The original
|
||||||
|
order of same-day entries will be preserved, usually.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
Node: Top90
|
||||||
|
Node: CSV RULES771
|
||||||
|
Ref: #csv-rules877
|
||||||
|
Node: skip1120
|
||||||
|
Ref: #skip1216
|
||||||
|
Node: date-format1387
|
||||||
|
Ref: #date-format1516
|
||||||
|
Node: field list2025
|
||||||
|
Ref: #field-list2164
|
||||||
|
Node: field assignment2840
|
||||||
|
Ref: #field-assignment2997
|
||||||
|
Node: conditional block3502
|
||||||
|
Ref: #conditional-block3658
|
||||||
|
Node: include4548
|
||||||
|
Ref: #include4659
|
||||||
|
Node: TIPS4890
|
||||||
|
Ref: #tips4974
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
983
hledger-lib/doc/hledger_journal.5.info
Normal file
983
hledger-lib/doc/hledger_journal.5.info
Normal file
@ -0,0 +1,983 @@
|
|||||||
|
This is hledger-lib/doc/hledger_journal.5.info, produced by makeinfo
|
||||||
|
version 4.8 from stdin.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
|
hledger_journal(5)
|
||||||
|
******************
|
||||||
|
|
||||||
|
hledger's usual data source is a plain text file containing journal
|
||||||
|
entries in hledger journal format. This file represents a standard
|
||||||
|
accounting general journal. I use file names ending in `.journal', but
|
||||||
|
that's not required. The journal file contains a number of transaction
|
||||||
|
entries, each describing a transfer of money (or any commodity) between
|
||||||
|
two or more named accounts, in a simple format readable by both hledger
|
||||||
|
and humans.
|
||||||
|
|
||||||
|
hledger's journal format is a compatible subset, mostly, of ledger's
|
||||||
|
journal format, so hledger can work with compatible ledger journal files
|
||||||
|
as well. It's safe, and encouraged, to run both hledger and ledger on
|
||||||
|
the same journal file, eg to validate the results you're getting.
|
||||||
|
|
||||||
|
You can use hledger without learning any more about this file; just
|
||||||
|
use the add or web commands to create and update it. Many users, though,
|
||||||
|
also edit the journal file directly with a text editor, perhaps assisted
|
||||||
|
by the helper modes for emacs or vim.
|
||||||
|
|
||||||
|
Here's an example:
|
||||||
|
|
||||||
|
|
||||||
|
; A sample journal file. This is a comment.
|
||||||
|
|
||||||
|
2008/01/01 income ; <- transaction's first line starts in column 0, contains date and description
|
||||||
|
assets:bank:checking $1 ; <- posting lines start with whitespace, each contains an account name
|
||||||
|
income:salary $-1 ; followed by at least two spaces and an amount
|
||||||
|
|
||||||
|
2008/06/01 gift
|
||||||
|
assets:bank:checking $1 ; <- at least two postings in a transaction
|
||||||
|
income:gifts $-1 ; <- their amounts must balance to 0
|
||||||
|
|
||||||
|
2008/06/02 save
|
||||||
|
assets:bank:saving $1
|
||||||
|
assets:bank:checking ; <- one amount may be omitted; here $-1 is inferred
|
||||||
|
|
||||||
|
2008/06/03 eat & shop ; <- description can be anything
|
||||||
|
expenses:food $1
|
||||||
|
expenses:supplies $1 ; <- this transaction debits two expense accounts
|
||||||
|
assets:cash ; <- $-2 inferred
|
||||||
|
|
||||||
|
2008/12/31 * pay off ; <- an optional * or ! after the date means "cleared" (or anything you want)
|
||||||
|
liabilities:debts $1
|
||||||
|
assets:bank:checking
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* FILE FORMAT::
|
||||||
|
* EDITOR SUPPORT::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: FILE FORMAT, Next: EDITOR SUPPORT, Prev: Top, Up: Top
|
||||||
|
|
||||||
|
1 FILE FORMAT
|
||||||
|
*************
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Transactions::
|
||||||
|
* Dates::
|
||||||
|
* Account names::
|
||||||
|
* Amounts::
|
||||||
|
* Virtual Postings::
|
||||||
|
* Balance Assertions::
|
||||||
|
* Prices::
|
||||||
|
* Comments::
|
||||||
|
* Tags::
|
||||||
|
* Directives::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Transactions, Next: Dates, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.1 Transactions
|
||||||
|
================
|
||||||
|
|
||||||
|
Transactions are represented by journal entries. Each begins with a
|
||||||
|
simple date in column 0, followed by three optional fields with spaces
|
||||||
|
between them:
|
||||||
|
|
||||||
|
* a status flag, which can be empty or `!' or `*' (meaning
|
||||||
|
"uncleared", "pending" and "cleared", or whatever you want)
|
||||||
|
|
||||||
|
* a transaction code (eg a check number),
|
||||||
|
|
||||||
|
* and/or a description
|
||||||
|
|
||||||
|
then some number of postings, of some amount to some account, each on
|
||||||
|
its own line. Usually there are at least two postings, though one or
|
||||||
|
even none is possible.
|
||||||
|
|
||||||
|
The (real) posting amounts within a transaction must always balance,
|
||||||
|
ie add up to 0. Optionally one amount can be left blank, in which case
|
||||||
|
it will be inferred.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Dates, Next: Account names, Prev: Transactions, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.2 Dates
|
||||||
|
=========
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Simple dates::
|
||||||
|
* Secondary dates::
|
||||||
|
* Posting dates::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Simple dates, Next: Secondary dates, Up: Dates
|
||||||
|
|
||||||
|
1.2.1 Simple dates
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Within a journal file, transaction dates use Y/M/D (or Y-M-D or Y.M.D)
|
||||||
|
Leading zeroes are optional. The year may be omitted, in which case it
|
||||||
|
defaults to the current year, or you can set the default year with a
|
||||||
|
default year directive.
|
||||||
|
|
||||||
|
Some examples: `2010/01/31', `1/31', `2010-01-31', `2010.1.31'.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Secondary dates, Next: Posting dates, Prev: Simple dates, Up: Dates
|
||||||
|
|
||||||
|
1.2.2 Secondary dates
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Real-life transactions sometimes involve more than one date - eg the
|
||||||
|
date you write a cheque, and the date it clears in your bank. When you
|
||||||
|
want to model this, eg for more accurate balances, write both dates
|
||||||
|
separated by an equals sign. The _primary date_, on the left, is used
|
||||||
|
by default; the _secondary date_, on the right, is used when the
|
||||||
|
`--date2' flag is specified (For Ledger compatibility, `--aux-date' or
|
||||||
|
`--effective' also work.)
|
||||||
|
|
||||||
|
Their meaning is up to you, but it's best to follow a consistent
|
||||||
|
rule. Eg write the bank's clearing date as primary, and when needed,
|
||||||
|
the date the transaction was initiated as secondary.
|
||||||
|
|
||||||
|
Here's an example. Note that a secondary date will use the year of
|
||||||
|
the primary date if unspecified.
|
||||||
|
|
||||||
|
|
||||||
|
2010/2/23=2/19 movie ticket
|
||||||
|
expenses:cinema $10
|
||||||
|
assets:checking
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger register checking
|
||||||
|
2010/02/23 movie ticket assets:checking $-10 $-10
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger register checking --date2
|
||||||
|
2010/02/19 movie ticket assets:checking $-10 $-10
|
||||||
|
|
||||||
|
Secondary dates require some effort: you must use them consistently
|
||||||
|
in your journal entries and remember whether to use or not use the
|
||||||
|
`--date2' flag for your reports. Arguably they are now obsolete,
|
||||||
|
superseded by...
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Posting dates, Prev: Secondary dates, Up: Dates
|
||||||
|
|
||||||
|
1.2.3 Posting dates
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
You can give individual postings a different date from their parent
|
||||||
|
transaction, by adding a posting tag (see below) like `date:DATE',
|
||||||
|
where DATE is a simple date. This is probably the best way to control
|
||||||
|
posting dates precisely. Eg in this example the expense should appear in
|
||||||
|
May reports, and the deduction from checking should be reported on 6/1
|
||||||
|
for easy bank reconciliation:
|
||||||
|
|
||||||
|
|
||||||
|
2015/5/30
|
||||||
|
expenses:food $10 ; food purchased on saturday 5/30
|
||||||
|
assets:checking ; bank cleared it on monday, date:6/1
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger -f tt.j register food
|
||||||
|
2015/05/30 expenses:food $10 $10
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger -f tt.j register checking
|
||||||
|
2015/06/01 assets:checking $-10 $-10
|
||||||
|
|
||||||
|
A posting date will use the year of the transaction date if
|
||||||
|
unspecified.
|
||||||
|
|
||||||
|
You can also set the secondary date, with `date2:DATE2'. For
|
||||||
|
compatibility, Ledger's older posting date syntax is also supported:
|
||||||
|
`[DATE]', `[DATE=DATE2]' or `[=DATE2]' in a posting comment.
|
||||||
|
|
||||||
|
When using any of these forms, be sure to provide a valid simple
|
||||||
|
date or you'll get a parse error. Eg a `date:' tag with no value is not
|
||||||
|
allowed.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Account names, Next: Amounts, Prev: Dates, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.3 Account names
|
||||||
|
=================
|
||||||
|
|
||||||
|
Account names typically have several parts separated by a full colon,
|
||||||
|
from which hledger derives a hierarchical chart of accounts. They can be
|
||||||
|
anything you like, but in finance there are traditionally five top-level
|
||||||
|
accounts: `assets', `liabilities', `income', `expenses', and `equity'.
|
||||||
|
|
||||||
|
Account names may contain single spaces, eg: `assets:accounts
|
||||||
|
receivable'. Because of this, they must always be followed by at least
|
||||||
|
two spaces (or newline).
|
||||||
|
|
||||||
|
Account names can be aliased.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Amounts, Next: Virtual Postings, Prev: Account names, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.4 Amounts
|
||||||
|
===========
|
||||||
|
|
||||||
|
After the account name, there is usually an amount. Important: between
|
||||||
|
account name and amount, there must be *two or more* spaces.
|
||||||
|
|
||||||
|
The amount is a number, optionally with a currency symbol or
|
||||||
|
commodity name on either the left or right. Negative amounts may have
|
||||||
|
the minus sign either before or after the currency symbol (`-$1' or
|
||||||
|
`$-1'). Commodity names which contain more than just letters should be
|
||||||
|
enclosed in double quotes (`1 "person hours"').
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Decimal points and digit groups::
|
||||||
|
* Amount display styles::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Decimal points and digit groups, Next: Amount display styles, Up: Amounts
|
||||||
|
|
||||||
|
1.4.1 Decimal points and digit groups
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
hledger supports flexible decimal point and digit group separator
|
||||||
|
styles, to support international variations. Numbers can use either a
|
||||||
|
period (`.') or a comma (`,') as decimal point. They can also have
|
||||||
|
digit group separators at any position (eg thousands separators) which
|
||||||
|
can be comma or period - whichever one you did not use as a decimal
|
||||||
|
point. If you use digit group separators, you must also include a
|
||||||
|
decimal point in at least one number in the same commodity, so that
|
||||||
|
hledger knows which character is which. Eg, write `$1,000.00' or
|
||||||
|
`$1.000,00'.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Amount display styles, Prev: Decimal points and digit groups, Up: Amounts
|
||||||
|
|
||||||
|
1.4.2 Amount display styles
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Based on how you format amounts, hledger will infer canonical display
|
||||||
|
styles for each commodity, and use these when displaying amounts in that
|
||||||
|
commodity. Amount styles include:
|
||||||
|
|
||||||
|
* the position (left or right) and spacing (space or no separator)
|
||||||
|
of the commodity symbol
|
||||||
|
|
||||||
|
* the digit group separator character (comma or period) and digit
|
||||||
|
group sizes, if any
|
||||||
|
|
||||||
|
* the decimal point character (period or comma)
|
||||||
|
|
||||||
|
* the display precision (number of decimal places displayed)
|
||||||
|
|
||||||
|
The canonical style is generally the style of the first posting
|
||||||
|
amount seen in a commodity. However the display precision will be the
|
||||||
|
highest precision seen in all posting amounts in that commmodity.
|
||||||
|
|
||||||
|
The precisions used in a price amount, or a D directive, don't affect
|
||||||
|
the canonical display precision directly, but they can affect it
|
||||||
|
indirectly, eg when D's default commodity is applied to a commodity-less
|
||||||
|
amount or when an amountless posting is balanced using a price's
|
||||||
|
commodity (actually this last case does not influence the canonical
|
||||||
|
display precision but probably should).
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Virtual Postings, Next: Balance Assertions, Prev: Amounts, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.5 Virtual Postings
|
||||||
|
====================
|
||||||
|
|
||||||
|
When you parenthesise the account name in a posting, that posting is
|
||||||
|
considered _virtual_, which means:
|
||||||
|
|
||||||
|
* it is ignored when checking that the transaction is balanced
|
||||||
|
|
||||||
|
* it is excluded from reports when the `--real/-R' flag is used, or
|
||||||
|
the `real:1' query.
|
||||||
|
|
||||||
|
You could use this, eg, to set an account's opening balance without
|
||||||
|
needing to use the `equity:opening balances' account:
|
||||||
|
|
||||||
|
|
||||||
|
1/1 special unbalanced posting to set initial balance
|
||||||
|
(assets:checking) $1000
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Balanced Virtual Postings::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Balanced Virtual Postings, Up: Virtual Postings
|
||||||
|
|
||||||
|
1.5.1 Balanced Virtual Postings
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
When the account name is bracketed, the posting is _balanced virtual_,
|
||||||
|
which is just like a virtual posting except the balanced virtual
|
||||||
|
postings in a transaction must balance to 0, like the real postings
|
||||||
|
(but separately from them). Balanced virtual postings are also excluded
|
||||||
|
by `--real/-R' or `real:1'.
|
||||||
|
|
||||||
|
Virtual postings are a feature inherited from Ledger can can
|
||||||
|
occasionally be useful, but they can be a crutch and you should think
|
||||||
|
twice or three times before using them. You can almost always find an
|
||||||
|
equivalent journal entry using two or more real postings that will be
|
||||||
|
more correct and more error-proof.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Balance Assertions, Next: Prices, Prev: Virtual Postings, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.6 Balance Assertions
|
||||||
|
======================
|
||||||
|
|
||||||
|
hledger supports ledger-style balance assertions in journal files. These
|
||||||
|
look like `=EXPECTEDBALANCE' following a posting's amount. Eg in this
|
||||||
|
example we assert the expected dollar balance in accounts a and b after
|
||||||
|
each posting:
|
||||||
|
|
||||||
|
|
||||||
|
2013/1/1
|
||||||
|
a $1 =$1
|
||||||
|
b =$-1
|
||||||
|
|
||||||
|
2013/1/2
|
||||||
|
a $1 =$2
|
||||||
|
b $-1 =$-2
|
||||||
|
|
||||||
|
After reading a journal file, hledger will check all balance
|
||||||
|
assertions and report an error if any of them fail. Balance assertions
|
||||||
|
can protect you from, eg, inadvertently disrupting reconciled balances
|
||||||
|
while cleaning up old entries. You can disable them temporarily with the
|
||||||
|
`--ignore-assertions' flag, which can be useful for troubleshooting or
|
||||||
|
for reading Ledger files.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Assertions and ordering::
|
||||||
|
* Assertions and commodities::
|
||||||
|
* Assertions and subaccounts::
|
||||||
|
* Assertions and virtual postings::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Assertions and ordering, Next: Assertions and commodities, Up: Balance Assertions
|
||||||
|
|
||||||
|
1.6.1 Assertions and ordering
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
hledger sorts an account's postings and assertions first by date and
|
||||||
|
then (for postings on the same day) by parse order. Note this is
|
||||||
|
different from Ledger, which sorts assertions only by parse order.
|
||||||
|
(Also, Ledger assertions do not see the accumulated effect of repeated
|
||||||
|
postings to the same account within a transaction.)
|
||||||
|
|
||||||
|
So, hledger balance assertions keep working if you reorder
|
||||||
|
differently-dated transactions within the journal. But if you reorder
|
||||||
|
same-dated transactions or postings, assertions might break and require
|
||||||
|
updating. This order dependence does bring an advantage: precise control
|
||||||
|
over the order of postings and assertions within a day, so you can
|
||||||
|
assert intra-day balances.
|
||||||
|
|
||||||
|
With included files, things are a little more complicated. Including
|
||||||
|
preserves the ordering of postings and assertions. If you have multiple
|
||||||
|
postings to an account on the same day, split across different files,
|
||||||
|
and you also want to assert the account's balance on the same day,
|
||||||
|
you'll have to put the assertion in the right file.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Assertions and commodities, Next: Assertions and subaccounts, Prev: Assertions and ordering, Up: Balance Assertions
|
||||||
|
|
||||||
|
1.6.2 Assertions and commodities
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
The asserted balance must be a simple single-commodity amount, and in
|
||||||
|
fact the assertion checks only this commodity's balance within the
|
||||||
|
(possibly multi-commodity) account balance. We could call this a partial
|
||||||
|
balance assertion. This is compatible with Ledger, and makes it possible
|
||||||
|
to make assertions about accounts containing multiple commodities.
|
||||||
|
|
||||||
|
To assert each commodity's balance in such a multi-commodity account,
|
||||||
|
you can add multiple postings (with amount 0 if necessary). But note
|
||||||
|
that no matter how many assertions you add, you can't be sure the
|
||||||
|
account does not contain some unexpected commodity. (We'll add support
|
||||||
|
for this kind of total balance assertion if there's demand.)
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Assertions and subaccounts, Next: Assertions and virtual postings, Prev: Assertions and commodities, Up: Balance Assertions
|
||||||
|
|
||||||
|
1.6.3 Assertions and subaccounts
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Balance assertions do not count the balance from subaccounts; they check
|
||||||
|
the posted account's exclusive balance. For example:
|
||||||
|
|
||||||
|
|
||||||
|
1/1
|
||||||
|
checking:fund 1 = 1 ; post to this subaccount, its balance is now 1
|
||||||
|
checking 1 = 1 ; post to the parent account, its exclusive balance is now 1
|
||||||
|
equity
|
||||||
|
|
||||||
|
The balance report's flat mode shows these exclusive balances more
|
||||||
|
clearly:
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger bal checking --flat
|
||||||
|
1 checking
|
||||||
|
1 checking:fund
|
||||||
|
--------------------
|
||||||
|
2
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Assertions and virtual postings, Prev: Assertions and subaccounts, Up: Balance Assertions
|
||||||
|
|
||||||
|
1.6.4 Assertions and virtual postings
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Balance assertions are checked against all postings, both real and
|
||||||
|
virtual. They are not affected by the `--real/-R' flag or `real:' query.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Prices, Next: Comments, Prev: Balance Assertions, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.7 Prices
|
||||||
|
==========
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Transaction prices::
|
||||||
|
* Market prices::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Transaction prices, Next: Market prices, Up: Prices
|
||||||
|
|
||||||
|
1.7.1 Transaction prices
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
When recording a transaction, you can also record an amount's price in
|
||||||
|
another commodity. This documents the exchange rate, cost (of a
|
||||||
|
purchase), or selling price (of a sale) that was in effect within this
|
||||||
|
particular transaction (or more precisely, within the particular
|
||||||
|
posting). These transaction prices are fixed, and do not change.
|
||||||
|
|
||||||
|
Such priced amounts can be displayed in their transaction price's
|
||||||
|
commodity, by using the `--cost/-B' flag (B for "cost Basis"),
|
||||||
|
supported by most hledger commands.
|
||||||
|
|
||||||
|
There are three ways to specify a transaction price:
|
||||||
|
|
||||||
|
1. Write the unit price (aka exchange rate), as `@ UNITPRICE' after
|
||||||
|
the amount:
|
||||||
|
|
||||||
|
|
||||||
|
2009/1/1
|
||||||
|
assets:foreign currency €100 @ $1.35 ; one hundred euros at $1.35 each
|
||||||
|
assets:cash
|
||||||
|
|
||||||
|
2. Or write the total price, as `@@ TOTALPRICE' after the amount:
|
||||||
|
|
||||||
|
|
||||||
|
2009/1/1
|
||||||
|
assets:foreign currency €100 @@ $135 ; one hundred euros at $135 for the lot
|
||||||
|
assets:cash
|
||||||
|
|
||||||
|
3. Or let hledger infer the price so as to balance the transaction. To
|
||||||
|
permit this, you must fully specify all posting amounts, and their
|
||||||
|
sum must have a non-zero amount in exactly two commodities:
|
||||||
|
|
||||||
|
|
||||||
|
2009/1/1
|
||||||
|
assets:foreign currency €100 ; one hundred euros
|
||||||
|
assets:cash $-135 ; exchanged for $135
|
||||||
|
|
||||||
|
|
||||||
|
With any of the above examples we get:
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger print -B
|
||||||
|
2009/01/01
|
||||||
|
assets:foreign currency $135.00
|
||||||
|
assets:cash $-135.00
|
||||||
|
|
||||||
|
Example use for transaction prices: recording the effective
|
||||||
|
conversion rate of purchases made in a foreign currency.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Market prices, Prev: Transaction prices, Up: Prices
|
||||||
|
|
||||||
|
1.7.2 Market prices
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Market prices are not tied to a particular transaction; they represent
|
||||||
|
historical exchange rates between two commodities, usually from some
|
||||||
|
public market which publishes such rates.
|
||||||
|
|
||||||
|
When market prices are known, the `-V/--value' option will use them
|
||||||
|
to convert reported amounts to their market value as of the report end
|
||||||
|
date. This option is currently available only with the balance command.
|
||||||
|
|
||||||
|
You record market prices (Ledger calls them historical prices) with
|
||||||
|
a P directive, in the journal or perhaps in a separate included file.
|
||||||
|
Market price directives have the format:
|
||||||
|
|
||||||
|
|
||||||
|
P DATE COMMODITYSYMBOL UNITPRICE
|
||||||
|
|
||||||
|
For example, the following directives say that the euro's exchange
|
||||||
|
rate was 1.35 US dollars during 2009, and $1.40 from 2010 onward (and
|
||||||
|
unknown before 2009).
|
||||||
|
|
||||||
|
|
||||||
|
P 2009/1/1 € $1.35
|
||||||
|
P 2010/1/1 € $1.40
|
||||||
|
|
||||||
|
Example use for market prices: tracking the value of stocks.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Comments, Next: Tags, Prev: Prices, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.8 Comments
|
||||||
|
============
|
||||||
|
|
||||||
|
Lines in the journal beginning with a semicolon (`;') or hash (`#') or
|
||||||
|
asterisk (`*') are comments, and will be ignored. (Asterisk comments
|
||||||
|
make it easy to treat your journal like an org-mode outline in emacs.)
|
||||||
|
|
||||||
|
Also, anything between `comment' and `end comment' directives is a
|
||||||
|
(multi-line) comment. If there is no `end comment', the comment extends
|
||||||
|
to the end of the file.
|
||||||
|
|
||||||
|
You can attach comments to a transaction by writing them after the
|
||||||
|
description and/or indented on the following lines (before the
|
||||||
|
postings). Similarly, you can attach comments to an individual posting
|
||||||
|
by writing them after the amount and/or indented on the following lines.
|
||||||
|
|
||||||
|
Some examples:
|
||||||
|
|
||||||
|
|
||||||
|
# a journal comment
|
||||||
|
|
||||||
|
; also a journal comment
|
||||||
|
|
||||||
|
comment
|
||||||
|
This is a multiline comment,
|
||||||
|
which continues until a line
|
||||||
|
where the "end comment" string
|
||||||
|
appears on its own.
|
||||||
|
end comment
|
||||||
|
|
||||||
|
2012/5/14 something ; a transaction comment
|
||||||
|
; the transaction comment, continued
|
||||||
|
posting1 1 ; a comment for posting 1
|
||||||
|
posting2
|
||||||
|
; a comment for posting 2
|
||||||
|
; another comment line for posting 2
|
||||||
|
; a journal comment (because not indented)
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Tags, Next: Directives, Prev: Comments, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.9 Tags
|
||||||
|
========
|
||||||
|
|
||||||
|
A _tag_ is a word followed by a full colon inside a transaction or
|
||||||
|
posting comment. You can write multiple tags, comma separated. Eg: `; a
|
||||||
|
comment containing sometag:, anothertag:'. You can search for tags with
|
||||||
|
the `tag:' query.
|
||||||
|
|
||||||
|
A tag can also have a value, which is any text between the colon and
|
||||||
|
the next comma or newline, excluding leading/trailing whitespace. (So
|
||||||
|
hledger tag values can not contain commas or newlines).
|
||||||
|
|
||||||
|
Tags in a transaction comment affect the transaction and all of its
|
||||||
|
postings, while tags in a posting comment affect only that posting. For
|
||||||
|
example, the following transaction has three tags (A, TAG2, third-tag)
|
||||||
|
and the posting has four (A, TAG2, third-tag, posting-tag):
|
||||||
|
|
||||||
|
|
||||||
|
1/1 a transaction ; A:, TAG2:
|
||||||
|
; third-tag: a third transaction tag, this time with a value
|
||||||
|
(a) $1 ; posting-tag:
|
||||||
|
|
||||||
|
Tags are like Ledger's metadata feature, except hledger's tag values
|
||||||
|
are always simple strings.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Directives, Prev: Tags, Up: FILE FORMAT
|
||||||
|
|
||||||
|
1.10 Directives
|
||||||
|
===============
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Account aliases::
|
||||||
|
* account directive::
|
||||||
|
* apply account directive::
|
||||||
|
* Multi-line comments::
|
||||||
|
* Default commodity::
|
||||||
|
* Default year::
|
||||||
|
* Including other files::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Account aliases, Next: account directive, Up: Directives
|
||||||
|
|
||||||
|
1.10.1 Account aliases
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
You can define aliases which rewrite your account names (after reading
|
||||||
|
the journal, before generating reports). hledger's account aliases can
|
||||||
|
be useful for:
|
||||||
|
|
||||||
|
* expanding shorthand account names to their full form, allowing
|
||||||
|
easier data entry and a less verbose journal
|
||||||
|
|
||||||
|
* adapting old journals to your current chart of accounts
|
||||||
|
|
||||||
|
* experimenting with new account organisations, like a new hierarchy
|
||||||
|
or combining two accounts into one
|
||||||
|
|
||||||
|
* customising reports
|
||||||
|
|
||||||
|
See also How to use account aliases.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Basic aliases::
|
||||||
|
* Regex aliases::
|
||||||
|
* Multiple aliases::
|
||||||
|
* end aliases::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Basic aliases, Next: Regex aliases, Up: Account aliases
|
||||||
|
|
||||||
|
1.10.1.1 Basic aliases
|
||||||
|
......................
|
||||||
|
|
||||||
|
To set an account alias, use the `alias' directive in your journal
|
||||||
|
file. This affects all subsequent journal entries in the current file or
|
||||||
|
its included files. The spaces around the = are optional:
|
||||||
|
|
||||||
|
|
||||||
|
alias OLD = NEW
|
||||||
|
|
||||||
|
Or, you can use the `--alias 'OLD=NEW'' option on the command line.
|
||||||
|
This affects all entries. It's useful for trying out aliases
|
||||||
|
interactively.
|
||||||
|
|
||||||
|
OLD and NEW are full account names. hledger will replace any
|
||||||
|
occurrence of the old account name with the new one. Subaccounts are
|
||||||
|
also affected. Eg:
|
||||||
|
|
||||||
|
|
||||||
|
alias checking = assets:bank:wells fargo:checking
|
||||||
|
# rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Regex aliases, Next: Multiple aliases, Prev: Basic aliases, Up: Account aliases
|
||||||
|
|
||||||
|
1.10.1.2 Regex aliases
|
||||||
|
......................
|
||||||
|
|
||||||
|
There is also a more powerful variant that uses a regular expression,
|
||||||
|
indicated by the forward slashes. (This was the default behaviour in
|
||||||
|
hledger 0.24-0.25):
|
||||||
|
|
||||||
|
|
||||||
|
alias /REGEX/ = REPLACEMENT
|
||||||
|
|
||||||
|
or `--alias '/REGEX/=REPLACEMENT''.
|
||||||
|
|
||||||
|
REGEX is a case-insensitive regular expression. Anywhere it matches
|
||||||
|
inside an account name, the matched part will be replaced by
|
||||||
|
REPLACEMENT. If REGEX contains parenthesised match groups, these can be
|
||||||
|
referenced by the usual numeric backreferences in REPLACEMENT. Note,
|
||||||
|
currently regular expression aliases may cause noticeable slow-downs.
|
||||||
|
(And if you use Ledger on your hledger file, they will be ignored.) Eg:
|
||||||
|
|
||||||
|
|
||||||
|
alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3
|
||||||
|
# rewrites "assets:bank:wells fargo:checking" to "assets:wells fargo checking"
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Multiple aliases, Next: end aliases, Prev: Regex aliases, Up: Account aliases
|
||||||
|
|
||||||
|
1.10.1.3 Multiple aliases
|
||||||
|
.........................
|
||||||
|
|
||||||
|
You can define as many aliases as you like using directives or
|
||||||
|
command-line options. Aliases are recursive - each alias sees the result
|
||||||
|
of applying previous ones. (This is different from Ledger, where aliases
|
||||||
|
are non-recursive by default). Aliases are applied in the following
|
||||||
|
order:
|
||||||
|
|
||||||
|
1. alias directives, most recently seen first (recent directives take
|
||||||
|
precedence over earlier ones; directives not yet seen are ignored)
|
||||||
|
|
||||||
|
2. alias options, in the order they appear on the command line
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: end aliases, Prev: Multiple aliases, Up: Account aliases
|
||||||
|
|
||||||
|
1.10.1.4 end aliases
|
||||||
|
....................
|
||||||
|
|
||||||
|
You can clear (forget) all currently defined aliases with the `end
|
||||||
|
aliases' directive:
|
||||||
|
|
||||||
|
|
||||||
|
end aliases
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: account directive, Next: apply account directive, Prev: Account aliases, Up: Directives
|
||||||
|
|
||||||
|
1.10.2 account directive
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
The `account' directive predefines account names, as in Ledger and
|
||||||
|
Beancount. This may be useful for your own documentation; hledger
|
||||||
|
doesn't make use of it yet.
|
||||||
|
|
||||||
|
|
||||||
|
; account ACCT
|
||||||
|
; OPTIONAL COMMENTS/TAGS...
|
||||||
|
|
||||||
|
account assets:bank:checking
|
||||||
|
a comment
|
||||||
|
acct-no:12345
|
||||||
|
|
||||||
|
account expenses:food
|
||||||
|
|
||||||
|
; etc.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: apply account directive, Next: Multi-line comments, Prev: account directive, Up: Directives
|
||||||
|
|
||||||
|
1.10.3 apply account directive
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
You can specify a parent account which will be prepended to all accounts
|
||||||
|
within a section of the journal. Use the `apply account' and `end apply
|
||||||
|
account' directives like so:
|
||||||
|
|
||||||
|
|
||||||
|
apply account home
|
||||||
|
|
||||||
|
2010/1/1
|
||||||
|
food $10
|
||||||
|
cash
|
||||||
|
|
||||||
|
end apply account
|
||||||
|
|
||||||
|
which is equivalent to:
|
||||||
|
|
||||||
|
|
||||||
|
2010/01/01
|
||||||
|
home:food $10
|
||||||
|
home:cash $-10
|
||||||
|
|
||||||
|
If `end apply account' is omitted, the effect lasts to the end of
|
||||||
|
the file. Included files are also affected, eg:
|
||||||
|
|
||||||
|
|
||||||
|
apply account business
|
||||||
|
include biz.journal
|
||||||
|
end apply account
|
||||||
|
apply account personal
|
||||||
|
include personal.journal
|
||||||
|
|
||||||
|
Prior to hledger 0.28, legacy `account' and `end' spellings were
|
||||||
|
also supported.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Multi-line comments, Next: Default commodity, Prev: apply account directive, Up: Directives
|
||||||
|
|
||||||
|
1.10.4 Multi-line comments
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
A line containing just `comment' starts a multi-line comment, and a
|
||||||
|
line containing just `end comment' ends it. See comments.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Default commodity, Next: Default year, Prev: Multi-line comments, Up: Directives
|
||||||
|
|
||||||
|
1.10.5 Default commodity
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
You can set a default commodity, to be used for amounts without one. Use
|
||||||
|
the D directive with a sample amount. The commodity (and the sample
|
||||||
|
amount's display style) will be applied to all subsequent commodity-less
|
||||||
|
amounts, up to the next D directive. (Note this is different from
|
||||||
|
Ledger's default commodity directive.)
|
||||||
|
|
||||||
|
Also note the directive itself does not influence the commodity's
|
||||||
|
default display style, but the amount it is applied to might. Here's an
|
||||||
|
example:
|
||||||
|
|
||||||
|
|
||||||
|
; set £ as the default commodity
|
||||||
|
D £1,000.00
|
||||||
|
|
||||||
|
2010/1/1
|
||||||
|
a 2340
|
||||||
|
b
|
||||||
|
|
||||||
|
2014/1/1
|
||||||
|
c £1000
|
||||||
|
d
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger print
|
||||||
|
2010/01/01
|
||||||
|
a £2,340.00
|
||||||
|
b £-2,340.00
|
||||||
|
|
||||||
|
2014/01/01
|
||||||
|
c £1,000.00
|
||||||
|
d £-1,000.00
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Default year, Next: Including other files, Prev: Default commodity, Up: Directives
|
||||||
|
|
||||||
|
1.10.6 Default year
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
You can set a default year to be used for subsequent dates which don't
|
||||||
|
specify a year. This is a line beginning with `Y' followed by the year.
|
||||||
|
Eg:
|
||||||
|
|
||||||
|
|
||||||
|
Y2009 ; set default year to 2009
|
||||||
|
|
||||||
|
12/15 ; equivalent to 2009/12/15
|
||||||
|
expenses 1
|
||||||
|
assets
|
||||||
|
|
||||||
|
Y2010 ; change default year to 2010
|
||||||
|
|
||||||
|
2009/1/30 ; specifies the year, not affected
|
||||||
|
expenses 1
|
||||||
|
assets
|
||||||
|
|
||||||
|
1/31 ; equivalent to 2010/1/31
|
||||||
|
expenses 1
|
||||||
|
assets
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: Including other files, Prev: Default year, Up: Directives
|
||||||
|
|
||||||
|
1.10.7 Including other files
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
You can pull in the content of additional journal files by writing an
|
||||||
|
include directive, like this:
|
||||||
|
|
||||||
|
|
||||||
|
include path/to/file.journal
|
||||||
|
|
||||||
|
If the path does not begin with a slash, it is relative to the
|
||||||
|
current file.
|
||||||
|
|
||||||
|
Glob patterns (`*') are not currently supported.
|
||||||
|
|
||||||
|
The `include' directive may only be used in journal files, and
|
||||||
|
currently it may only include other journal files (eg, not CSV or
|
||||||
|
timeclock files.)
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.5.info, Node: EDITOR SUPPORT, Prev: FILE FORMAT, Up: Top
|
||||||
|
|
||||||
|
2 EDITOR SUPPORT
|
||||||
|
****************
|
||||||
|
|
||||||
|
Add-on modes exist for various text editors, to make working with
|
||||||
|
journal files easier. They add colour, navigation aids and helpful
|
||||||
|
commands. For hledger users who edit the journal file directly (the
|
||||||
|
majority), using one of these modes is quite recommended.
|
||||||
|
|
||||||
|
These were written with Ledger in mind, but also work with hledger
|
||||||
|
files:
|
||||||
|
|
||||||
|
Emacs http://www.ledger-cli.org/3.0/doc/ledger-mode.html
|
||||||
|
Vim https://github.com/ledger/ledger/wiki/Getting-started
|
||||||
|
Sublime Text https://github.com/ledger/ledger/wiki/Using-Sublime-Text
|
||||||
|
Textmate https://github.com/ledger/ledger/wiki/Using-TextMate-2
|
||||||
|
Text Wrangler https://github.com/ledger/ledger/wiki/Editing-Ledger-files-with-TextWrangler
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
Node: Top94
|
||||||
|
Node: FILE FORMAT2260
|
||||||
|
Ref: #file-format2386
|
||||||
|
Node: Transactions2545
|
||||||
|
Ref: #transactions2665
|
||||||
|
Node: Dates3351
|
||||||
|
Ref: #dates3479
|
||||||
|
Node: Simple dates3544
|
||||||
|
Ref: #simple-dates3672
|
||||||
|
Node: Secondary dates3976
|
||||||
|
Ref: #secondary-dates4132
|
||||||
|
Node: Posting dates5408
|
||||||
|
Ref: #posting-dates5539
|
||||||
|
Node: Account names6715
|
||||||
|
Ref: #account-names6854
|
||||||
|
Node: Amounts7338
|
||||||
|
Ref: #amounts7476
|
||||||
|
Node: Decimal points and digit groups8003
|
||||||
|
Ref: #decimal-points-and-digit-groups8196
|
||||||
|
Node: Amount display styles8751
|
||||||
|
Ref: #amount-display-styles8924
|
||||||
|
Node: Virtual Postings10003
|
||||||
|
Ref: #virtual-postings10164
|
||||||
|
Node: Balanced Virtual Postings10683
|
||||||
|
Ref: #balanced-virtual-postings10837
|
||||||
|
Node: Balance Assertions11452
|
||||||
|
Ref: #balance-assertions11616
|
||||||
|
Node: Assertions and ordering12438
|
||||||
|
Ref: #assertions-and-ordering12623
|
||||||
|
Node: Assertions and commodities13654
|
||||||
|
Ref: #assertions-and-commodities13880
|
||||||
|
Node: Assertions and subaccounts14572
|
||||||
|
Ref: #assertions-and-subaccounts14806
|
||||||
|
Node: Assertions and virtual postings15328
|
||||||
|
Ref: #assertions-and-virtual-postings15537
|
||||||
|
Node: Prices15678
|
||||||
|
Ref: #prices15810
|
||||||
|
Node: Transaction prices15861
|
||||||
|
Ref: #transaction-prices16006
|
||||||
|
Node: Market prices17613
|
||||||
|
Ref: #market-prices17748
|
||||||
|
Node: Comments18636
|
||||||
|
Ref: #comments18758
|
||||||
|
Node: Tags19870
|
||||||
|
Ref: #tags19988
|
||||||
|
Node: Directives20918
|
||||||
|
Ref: #directives21033
|
||||||
|
Node: Account aliases21202
|
||||||
|
Ref: #account-aliases21348
|
||||||
|
Node: Basic aliases21950
|
||||||
|
Ref: #basic-aliases22095
|
||||||
|
Node: Regex aliases22783
|
||||||
|
Ref: #regex-aliases22953
|
||||||
|
Node: Multiple aliases23723
|
||||||
|
Ref: #multiple-aliases23897
|
||||||
|
Node: end aliases24393
|
||||||
|
Ref: #end-aliases24535
|
||||||
|
Node: account directive24637
|
||||||
|
Ref: #account-directive24819
|
||||||
|
Node: apply account directive25115
|
||||||
|
Ref: #apply-account-directive25313
|
||||||
|
Node: Multi-line comments25974
|
||||||
|
Ref: #multi-line-comments26164
|
||||||
|
Node: Default commodity26291
|
||||||
|
Ref: #default-commodity26466
|
||||||
|
Node: Default year27161
|
||||||
|
Ref: #default-year27328
|
||||||
|
Node: Including other files27751
|
||||||
|
Ref: #including-other-files27910
|
||||||
|
Node: EDITOR SUPPORT28327
|
||||||
|
Ref: #editor-support28447
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
67
hledger-lib/doc/hledger_timeclock.5.info
Normal file
67
hledger-lib/doc/hledger_timeclock.5.info
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
This is hledger-lib/doc/hledger_timeclock.5.info, produced by makeinfo
|
||||||
|
version 4.8 from stdin.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_timeclock.5.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
|
hledger_timeclock(5)
|
||||||
|
********************
|
||||||
|
|
||||||
|
hledger can read timeclock files. As with Ledger, these are (a subset
|
||||||
|
of) timeclock.el's format, containing clock-in and clock-out entries as
|
||||||
|
in the example below. The date is a simple date (also, default year
|
||||||
|
directives work). The time format is HH:MM[:SS][+-ZZZZ]. Seconds and
|
||||||
|
timezone are optional. The timezone, if present, must be four digits and
|
||||||
|
is ignored (currently the time is always interpreted as a local time).
|
||||||
|
|
||||||
|
|
||||||
|
i 2015/03/30 09:00:00 some:account name optional description after two spaces
|
||||||
|
o 2015/03/30 09:20:00
|
||||||
|
i 2015/03/31 22:21:45 another account
|
||||||
|
o 2015/04/01 02:00:34
|
||||||
|
|
||||||
|
hledger treats each clock-in/clock-out pair as a transaction posting
|
||||||
|
some number of hours to an account. Or if the session spans more than
|
||||||
|
one day, it is split into several transactions, one for each day. For
|
||||||
|
the above time log, `hledger print' generates these journal entries:
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger -f t.timeclock print
|
||||||
|
2015/03/30 * optional description after two spaces
|
||||||
|
(some:account name) 0.33h
|
||||||
|
|
||||||
|
2015/03/31 * 22:21-23:59
|
||||||
|
(another account) 1.64h
|
||||||
|
|
||||||
|
2015/04/01 * 00:00-02:00
|
||||||
|
(another account) 2.01h
|
||||||
|
|
||||||
|
Here is a sample.timeclock to download and some queries to try:
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger -f sample.timeclock balance # current time balances
|
||||||
|
$ hledger -f sample.timeclock register -p 2009/3 # sessions in march 2009
|
||||||
|
$ hledger -f sample.timeclock register -p weekly --depth 1 --empty # time summary by week
|
||||||
|
|
||||||
|
To generate time logs, ie to clock in and clock out, you could:
|
||||||
|
|
||||||
|
* use emacs and the built-in timeclock.el, or the extended
|
||||||
|
timeclock-x.el and perhaps the extras in ledgerutils.el
|
||||||
|
|
||||||
|
* at the command line, use these bash aliases:
|
||||||
|
|
||||||
|
|
||||||
|
alias ti="echo i `date '+%Y-%m-%d %H:%M:%S'` \$* >>$TIMELOG"
|
||||||
|
alias to="echo o `date '+%Y-%m-%d %H:%M:%S'` >>$TIMELOG"
|
||||||
|
|
||||||
|
* or use the old `ti' and `to' scripts in the ledger 2.x repository.
|
||||||
|
These rely on a "timeclock" executable which I think is just the
|
||||||
|
ledger 2 executable renamed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
Node: Top96
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
123
hledger-lib/doc/hledger_timedot.5.info
Normal file
123
hledger-lib/doc/hledger_timedot.5.info
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
This is hledger-lib/doc/hledger_timedot.5.info, produced by makeinfo
|
||||||
|
version 4.8 from stdin.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_timedot.5.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
|
hledger_timedot(5)
|
||||||
|
******************
|
||||||
|
|
||||||
|
Timedot is a plain text format for logging dated, categorised quantities
|
||||||
|
(eg time), supported by hledger. It is convenient for approximate and
|
||||||
|
retroactive time logging, eg when the real-time clock-in/out required
|
||||||
|
with a timeclock file is too precise or too interruptive. It can be
|
||||||
|
formatted like a bar chart, making clear at a glance where time was
|
||||||
|
spent.
|
||||||
|
|
||||||
|
Though called "timedot", the format does not specify the commodity
|
||||||
|
being logged, so could represent other dated, quantifiable things. Eg
|
||||||
|
you could record a single-entry journal of financial transactions,
|
||||||
|
perhaps slightly more conveniently than with hledger_journal(5) format.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* FILE FORMAT::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_timedot.5.info, Node: FILE FORMAT, Prev: Top, Up: Top
|
||||||
|
|
||||||
|
1 FILE FORMAT
|
||||||
|
*************
|
||||||
|
|
||||||
|
A timedot file contains a series of day entries. A day entry begins with
|
||||||
|
a date, and is followed by category/quantity pairs, one per line. Dates
|
||||||
|
are hledger-style simple dates (see hledger_journal(5)). Categories are
|
||||||
|
hledger-style account names, optionally indented. There must be at least
|
||||||
|
two spaces between the category and the quantity. Quantities can be
|
||||||
|
written in two ways:
|
||||||
|
|
||||||
|
1. a series of dots (period characters). Each dot represents "a
|
||||||
|
quarter" - eg, a quarter hour. Spaces can be used to group dots
|
||||||
|
into hours, for easier counting.
|
||||||
|
|
||||||
|
2. a number (integer or decimal), representing "units" - eg, hours. A
|
||||||
|
good alternative when dots are cumbersome. (A number also can
|
||||||
|
record negative quantities.)
|
||||||
|
|
||||||
|
|
||||||
|
Blank lines and lines beginning with #, ; or * are ignored. An
|
||||||
|
example:
|
||||||
|
|
||||||
|
|
||||||
|
# on this day, 6h was spent on client work, 1.5h on haskell FOSS work, etc.
|
||||||
|
2016/2/1
|
||||||
|
inc:client1 .... .... .... .... .... ....
|
||||||
|
fos:haskell .... ..
|
||||||
|
biz:research .
|
||||||
|
|
||||||
|
2016/2/2
|
||||||
|
inc:client1 .... ....
|
||||||
|
biz:research .
|
||||||
|
|
||||||
|
Or with numbers:
|
||||||
|
|
||||||
|
|
||||||
|
2016/2/3
|
||||||
|
inc:client1 4
|
||||||
|
fos:hledger 3
|
||||||
|
biz:research 1
|
||||||
|
|
||||||
|
Reporting:
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger -f t.timedot print date:2016/2/2
|
||||||
|
2016/02/02 *
|
||||||
|
(inc:client1) 2.00
|
||||||
|
|
||||||
|
2016/02/02 *
|
||||||
|
(biz:research) 0.25
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger -f t.timedot bal --daily --tree
|
||||||
|
Balance changes in 2016/02/01-2016/02/03:
|
||||||
|
|
||||||
|
|| 2016/02/01d 2016/02/02d 2016/02/03d
|
||||||
|
============++========================================
|
||||||
|
biz || 0.25 0.25 1.00
|
||||||
|
research || 0.25 0.25 1.00
|
||||||
|
fos || 1.50 0 3.00
|
||||||
|
haskell || 1.50 0 0
|
||||||
|
hledger || 0 0 3.00
|
||||||
|
inc || 6.00 2.00 4.00
|
||||||
|
client1 || 6.00 2.00 4.00
|
||||||
|
------------++----------------------------------------
|
||||||
|
|| 7.75 2.25 8.00
|
||||||
|
|
||||||
|
I prefer to use period for separating account components. We can make
|
||||||
|
this work with an account alias:
|
||||||
|
|
||||||
|
|
||||||
|
2016/2/4
|
||||||
|
fos.hledger.timedot 4
|
||||||
|
fos.ledger ..
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4
|
||||||
|
4.50 fos
|
||||||
|
4.00 hledger:timedot
|
||||||
|
0.50 ledger
|
||||||
|
--------------------
|
||||||
|
4.50
|
||||||
|
|
||||||
|
default year directives may be used.
|
||||||
|
|
||||||
|
Here is a sample.timedot.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
Node: Top94
|
||||||
|
Node: FILE FORMAT852
|
||||||
|
Ref: #file-format955
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
289
hledger-ui/doc/hledger-ui.1.info
Normal file
289
hledger-ui/doc/hledger-ui.1.info
Normal file
@ -0,0 +1,289 @@
|
|||||||
|
This is hledger-ui/doc/hledger-ui.1.info, produced by makeinfo version
|
||||||
|
4.8 from stdin.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
|
hledger-ui(1)
|
||||||
|
*************
|
||||||
|
|
||||||
|
hledger-ui is hledger's curses-style interface. It reads a hledger
|
||||||
|
journal file
|
||||||
|
|
||||||
|
and provides a simple full-screen console interface for viewing
|
||||||
|
account balances and transactions.
|
||||||
|
|
||||||
|
It is simpler and more convenient for browsing than the command-line
|
||||||
|
interface, but lighter and faster than hledger-web.
|
||||||
|
|
||||||
|
The journal file is `~/.hledger.journal', `$LEDGER_FILE', or another
|
||||||
|
file specified with -f. For more about the format, see hledger(1) or
|
||||||
|
hledger_journal(5).
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* OPTIONS::
|
||||||
|
* KEYS::
|
||||||
|
* SCREENS::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: OPTIONS, Next: KEYS, Prev: Top, Up: Top
|
||||||
|
|
||||||
|
1 OPTIONS
|
||||||
|
*********
|
||||||
|
|
||||||
|
Note: if invoking hledger-ui as a hledger subcommand, write `--' before
|
||||||
|
options as shown above.
|
||||||
|
|
||||||
|
Any QUERYARGS are interpreted as a hledger search query which filters
|
||||||
|
the data.
|
||||||
|
|
||||||
|
`--flat'
|
||||||
|
show full account names, unindented
|
||||||
|
|
||||||
|
`--no-elide'
|
||||||
|
don't compress empty parent accounts on one line
|
||||||
|
|
||||||
|
`--register=ACCTREGEX'
|
||||||
|
start in the (first) matched account's register screen
|
||||||
|
|
||||||
|
`--theme=default|terminal|greenterm'
|
||||||
|
use this custom display theme
|
||||||
|
|
||||||
|
`-V --value'
|
||||||
|
show amounts as their current market value in their default
|
||||||
|
valuation commodity (accounts screen only)
|
||||||
|
|
||||||
|
`-h'
|
||||||
|
show usage
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
show manual
|
||||||
|
|
||||||
|
`--man'
|
||||||
|
show manual with man
|
||||||
|
|
||||||
|
`--info'
|
||||||
|
show manual with info
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
show version
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* hledger options::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: hledger options, Up: OPTIONS
|
||||||
|
|
||||||
|
1.1 hledger options
|
||||||
|
===================
|
||||||
|
|
||||||
|
The following common hledger options should also work:
|
||||||
|
|
||||||
|
`-f FILE --file=FILE'
|
||||||
|
use a different input file. For stdin, use -
|
||||||
|
|
||||||
|
`--rules-file=RULESFILE'
|
||||||
|
Conversion rules file to use when reading CSV (default: FILE.rules)
|
||||||
|
|
||||||
|
`--alias=OLD=NEW'
|
||||||
|
display accounts named OLD as NEW
|
||||||
|
|
||||||
|
`--ignore-assertions'
|
||||||
|
ignore any failing balance assertions in the journal
|
||||||
|
|
||||||
|
`--debug=N'
|
||||||
|
show debug output if N is 1-9 (default: 0)
|
||||||
|
|
||||||
|
`-b --begin=DATE'
|
||||||
|
include postings/txns on or after this date
|
||||||
|
|
||||||
|
`-e --end=DATE'
|
||||||
|
include postings/txns before this date
|
||||||
|
|
||||||
|
`-p --period=PERIODEXP'
|
||||||
|
set start date, end date, and/or reporting interval all at once
|
||||||
|
(overrides the flags above)
|
||||||
|
|
||||||
|
`--date2 --aux-date'
|
||||||
|
use postings/txns' secondary dates instead
|
||||||
|
|
||||||
|
`-C --cleared'
|
||||||
|
include only cleared postings/txns
|
||||||
|
|
||||||
|
`--pending'
|
||||||
|
include only pending postings/txns
|
||||||
|
|
||||||
|
`-U --uncleared'
|
||||||
|
include only uncleared (and pending) postings/txns
|
||||||
|
|
||||||
|
`-R --real'
|
||||||
|
include only non-virtual postings
|
||||||
|
|
||||||
|
`--depth=N'
|
||||||
|
hide accounts/postings deeper than N
|
||||||
|
|
||||||
|
`-E --empty'
|
||||||
|
show empty/zero things which are normally omitted
|
||||||
|
|
||||||
|
`-B --cost'
|
||||||
|
show amounts in their cost price's commodity
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: KEYS, Next: SCREENS, Prev: OPTIONS, Up: Top
|
||||||
|
|
||||||
|
2 KEYS
|
||||||
|
******
|
||||||
|
|
||||||
|
Generally the cursor keys navigate; `right' (or `enter') goes deeper,
|
||||||
|
`left' returns to the previous screen, `up'/`down'/`page up'/`page
|
||||||
|
down'/`home'/`end' move up and down through lists.
|
||||||
|
|
||||||
|
`g' gets the latest data and reloads the screen (and any previous
|
||||||
|
screens). There may be a noticeable pause.
|
||||||
|
|
||||||
|
`q' quits the application.
|
||||||
|
|
||||||
|
Some screens have additional key bindings, described below.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: SCREENS, Prev: KEYS, Up: Top
|
||||||
|
|
||||||
|
3 SCREENS
|
||||||
|
*********
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* Accounts screen::
|
||||||
|
* Register screen::
|
||||||
|
* Transaction screen::
|
||||||
|
* Error screen::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: Accounts screen, Next: Register screen, Up: SCREENS
|
||||||
|
|
||||||
|
3.1 Accounts screen
|
||||||
|
===================
|
||||||
|
|
||||||
|
This is normally the first screen displayed. It lists accounts and their
|
||||||
|
balances, like hledger's balance command. By default, it shows all
|
||||||
|
accounts and their latest ending balances. if you specify a query on the
|
||||||
|
command line, it shows just the matched accounts and the balances from
|
||||||
|
matched transactions.
|
||||||
|
|
||||||
|
When not in flat mode, indentation indicates the account hierarchy.
|
||||||
|
`F' toggles flat mode on and off.
|
||||||
|
|
||||||
|
By default, all subaccounts are displayed. To see less detail, set a
|
||||||
|
depth limit by pressing a number key, `1' to `9'. Or, adjust the depth
|
||||||
|
limit by pressing `-' or `+' (`=' also works). `0' removes the depth
|
||||||
|
limit.
|
||||||
|
|
||||||
|
`C' toggles cleared mode. In cleared mode, the accounts and balances
|
||||||
|
are derived only from transactions which are marked cleared (*).
|
||||||
|
|
||||||
|
Press `right' or `enter' to view an account's transactions register.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: Register screen, Next: Transaction screen, Prev: Accounts screen, Up: SCREENS
|
||||||
|
|
||||||
|
3.2 Register screen
|
||||||
|
===================
|
||||||
|
|
||||||
|
This screen lists all transactions affecting a particular account (like
|
||||||
|
a check register). In cleared mode (press `C') it lists only
|
||||||
|
transactions which are marked cleared. It does not otherwise filter by
|
||||||
|
query.
|
||||||
|
|
||||||
|
Note this screen shows transactions, not postings (unlike hledger's
|
||||||
|
register command). This means:
|
||||||
|
|
||||||
|
* Each line represents a whole transaction.
|
||||||
|
|
||||||
|
* For each transaction, it shows the other account(s) involved, in
|
||||||
|
abbreviated form. (If there are both real and virtual postings, it
|
||||||
|
shows only the accounts affected by real postings.)
|
||||||
|
|
||||||
|
* It shows the overall change to the current account's balance from
|
||||||
|
each transaction; positive for an inflow to this account, negative
|
||||||
|
for an outflow.
|
||||||
|
|
||||||
|
* When no query other than a date limit is in effect, it shows the
|
||||||
|
current account's historic balance as of the transaction date.
|
||||||
|
Otherwise it shows a running total starting from zero. Eg, these
|
||||||
|
will show historic balances:
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger-ui
|
||||||
|
$ hledger-ui --begin 'this month'
|
||||||
|
$ hledger-ui --register checking date:2015/10
|
||||||
|
|
||||||
|
while these will show a running total, since the queries are not
|
||||||
|
just date limits:
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger-ui checking
|
||||||
|
$ hledger-ui --begin 'this month' desc:market
|
||||||
|
$ hledger-ui --register checking --cleared
|
||||||
|
|
||||||
|
|
||||||
|
Press `right' or `enter' to view the selected transaction in full
|
||||||
|
detail.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: Transaction screen, Next: Error screen, Prev: Register screen, Up: SCREENS
|
||||||
|
|
||||||
|
3.3 Transaction screen
|
||||||
|
======================
|
||||||
|
|
||||||
|
This screen shows a single transaction, as a general journal entry,
|
||||||
|
similar to hledger's print command and journal format
|
||||||
|
(hledger_journal(5)).
|
||||||
|
|
||||||
|
The transaction's date(s) and any cleared flag, transaction code,
|
||||||
|
description, comments, along with all of its account postings are shown.
|
||||||
|
Simple transactions have two postings, but there can be more (or in
|
||||||
|
certain cases, fewer).
|
||||||
|
|
||||||
|
`up' and `down' will step through all transactions listed in the
|
||||||
|
previous account register screen. In the title bar, the numbers in
|
||||||
|
parentheses show your position within that account register. They will
|
||||||
|
vary depending on which account register you came from (remember most
|
||||||
|
transactions appear in multiple account registers). The #N number
|
||||||
|
preceding them is the transaction's position within the complete
|
||||||
|
unfiltered journal, which is a more stable id (at least until the next
|
||||||
|
reload).
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-ui.1.info, Node: Error screen, Prev: Transaction screen, Up: SCREENS
|
||||||
|
|
||||||
|
3.4 Error screen
|
||||||
|
================
|
||||||
|
|
||||||
|
This screen will appear if there is a problem, such as a parse error,
|
||||||
|
when you press g to reload. Once you have fixed the problem described,
|
||||||
|
press g again to reload and restore normal operation.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
Node: Top88
|
||||||
|
Node: OPTIONS682
|
||||||
|
Ref: #options781
|
||||||
|
Node: hledger options1547
|
||||||
|
Ref: #hledger-options1653
|
||||||
|
Node: KEYS2829
|
||||||
|
Ref: #keys2926
|
||||||
|
Node: SCREENS3323
|
||||||
|
Ref: #screens3410
|
||||||
|
Node: Accounts screen3500
|
||||||
|
Ref: #accounts-screen3630
|
||||||
|
Node: Register screen4475
|
||||||
|
Ref: #register-screen4632
|
||||||
|
Node: Transaction screen6014
|
||||||
|
Ref: #transaction-screen6174
|
||||||
|
Node: Error screen7041
|
||||||
|
Ref: #error-screen7165
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
175
hledger-web/doc/hledger-web.1.info
Normal file
175
hledger-web/doc/hledger-web.1.info
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
This is hledger-web/doc/hledger-web.1.info, produced by makeinfo
|
||||||
|
version 4.8 from stdin.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-web.1.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
|
hledger-web(1)
|
||||||
|
**************
|
||||||
|
|
||||||
|
hledger-web is hledger's web interface. It starts a simple web
|
||||||
|
application for browsing and adding transactions, and optionally opens
|
||||||
|
it in a web browser window if possible. It provides a more user-friendly
|
||||||
|
UI than the hledger CLI or hledger-ui interface, showing more at once
|
||||||
|
(accounts, the current account register, balance charts) and allowing
|
||||||
|
history-aware data entry, interactive searching, and bookmarking.
|
||||||
|
|
||||||
|
hledger-web also lets you share a ledger with multiple users, or even
|
||||||
|
the public web. There is no access control, so if you need that you
|
||||||
|
should put it behind a suitable web proxy. As a small protection against
|
||||||
|
data loss when running an unprotected instance, it writes a numbered
|
||||||
|
backup of the main journal file (only ?) on every edit.
|
||||||
|
|
||||||
|
The journal file is `~/.hledger.journal', `$LEDGER_FILE', or another
|
||||||
|
file specified with -f. For more about the format, see hledger(1) or
|
||||||
|
hledger_journal(5).
|
||||||
|
|
||||||
|
By default, hledger-web starts the web app in "transient mode" and
|
||||||
|
also opens it in your default web browser if possible. In this mode the
|
||||||
|
web app will keep running for as long as you have it open in a browser
|
||||||
|
window, and will exit after two minutes of inactivity (no requests and
|
||||||
|
no browser windows viewing it).
|
||||||
|
|
||||||
|
|
||||||
|
$ hledger web
|
||||||
|
Starting web app on port 5000 with base url http://localhost:5000
|
||||||
|
Starting web browser if possible
|
||||||
|
Web app will auto-exit after a few minutes with no browsers (or press ctrl-c)
|
||||||
|
|
||||||
|
With `--server', it starts the web app in non-transient mode and
|
||||||
|
logs requests to the console. Typically when running hledger web as part
|
||||||
|
of a website you'll want to use `--base-url' to set the
|
||||||
|
protocol/hostname/port/path to be used in hyperlinks. The `--file-url'
|
||||||
|
option allows static files to be served from a different url, eg for
|
||||||
|
better caching or cookie-less serving.
|
||||||
|
|
||||||
|
You can use `--port' to listen on a different TCP port, eg if you
|
||||||
|
are running multiple hledger-web instances. This need not be the same as
|
||||||
|
the PORT in the base url.
|
||||||
|
|
||||||
|
Note there is no built-in access control, so you will need to hide
|
||||||
|
hledger-web behind an authenticating proxy (such as apache or nginx) if
|
||||||
|
you want to restrict who can see and add entries to your journal.
|
||||||
|
|
||||||
|
With journal and timeclock files (but not CSV files, currently) the
|
||||||
|
web app detects changes and will show the new data on the next request.
|
||||||
|
If a change makes the file unparseable, hledger-web will show an error
|
||||||
|
until the file has been fixed.
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* OPTIONS::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-web.1.info, Node: OPTIONS, Prev: Top, Up: Top
|
||||||
|
|
||||||
|
1 OPTIONS
|
||||||
|
*********
|
||||||
|
|
||||||
|
Note: if invoking hledger-web as a hledger subcommand, write `--'
|
||||||
|
before options as shown above.
|
||||||
|
|
||||||
|
`--server'
|
||||||
|
disable browser-opening and auto-exit-on-idle, and log all
|
||||||
|
requests to stdout
|
||||||
|
|
||||||
|
`--port=PORT'
|
||||||
|
set the TCP port to listen on (default: 5000)
|
||||||
|
|
||||||
|
`--base-url=URL'
|
||||||
|
set the base url (default: http://localhost:PORT). You would
|
||||||
|
change this when sharing over the network, or integrating within a
|
||||||
|
larger website.
|
||||||
|
|
||||||
|
`--file-url=URL'
|
||||||
|
set the static files url (default: BASEURL/static). hledger-web
|
||||||
|
normally serves static files itself, but if you wanted to serve
|
||||||
|
them from another server for efficiency, you would set the url
|
||||||
|
with this.
|
||||||
|
|
||||||
|
`-h'
|
||||||
|
show usage
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
show manual
|
||||||
|
|
||||||
|
`--man'
|
||||||
|
show manual with man
|
||||||
|
|
||||||
|
`--info'
|
||||||
|
show manual with info
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
show version
|
||||||
|
|
||||||
|
* Menu:
|
||||||
|
|
||||||
|
* hledger options::
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger-web.1.info, Node: hledger options, Up: OPTIONS
|
||||||
|
|
||||||
|
1.1 hledger options
|
||||||
|
===================
|
||||||
|
|
||||||
|
The following common hledger options should also work:
|
||||||
|
|
||||||
|
`-f FILE --file=FILE'
|
||||||
|
use a different input file. For stdin, use -
|
||||||
|
|
||||||
|
`--rules-file=RULESFILE'
|
||||||
|
Conversion rules file to use when reading CSV (default: FILE.rules)
|
||||||
|
|
||||||
|
`--alias=OLD=NEW'
|
||||||
|
display accounts named OLD as NEW
|
||||||
|
|
||||||
|
`--ignore-assertions'
|
||||||
|
ignore any failing balance assertions in the journal
|
||||||
|
|
||||||
|
`--debug=N'
|
||||||
|
show debug output if N is 1-9 (default: 0)
|
||||||
|
|
||||||
|
`-b --begin=DATE'
|
||||||
|
include postings/txns on or after this date
|
||||||
|
|
||||||
|
`-e --end=DATE'
|
||||||
|
include postings/txns before this date
|
||||||
|
|
||||||
|
`-p --period=PERIODEXP'
|
||||||
|
set start date, end date, and/or reporting interval all at once
|
||||||
|
(overrides the flags above)
|
||||||
|
|
||||||
|
`--date2 --aux-date'
|
||||||
|
use postings/txns' secondary dates instead
|
||||||
|
|
||||||
|
`-C --cleared'
|
||||||
|
include only cleared postings/txns
|
||||||
|
|
||||||
|
`--pending'
|
||||||
|
include only pending postings/txns
|
||||||
|
|
||||||
|
`-U --uncleared'
|
||||||
|
include only uncleared (and pending) postings/txns
|
||||||
|
|
||||||
|
`-R --real'
|
||||||
|
include only non-virtual postings
|
||||||
|
|
||||||
|
`--depth=N'
|
||||||
|
hide accounts/postings deeper than N
|
||||||
|
|
||||||
|
`-E --empty'
|
||||||
|
show empty/zero things which are normally omitted
|
||||||
|
|
||||||
|
`-B --cost'
|
||||||
|
show amounts in their cost price's commodity
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Tag Table:
|
||||||
|
Node: Top90
|
||||||
|
Node: OPTIONS2622
|
||||||
|
Ref: #options2709
|
||||||
|
Node: hledger options3572
|
||||||
|
Ref: #hledger-options3679
|
||||||
|
|
||||||
|
End Tag Table
|
||||||
2105
hledger/doc/hledger.1.info
Normal file
2105
hledger/doc/hledger.1.info
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user