;regen manuals
This commit is contained in:
		
							parent
							
								
									c1a985f1c8
								
							
						
					
					
						commit
						e44c1cfae8
					
				| @ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion. | |||||||
| m4_define({{_version_}}, {{1.18.99}})m4_dnl | m4_define({{_version_}}, {{1.18.99}})m4_dnl | ||||||
| m4_dnl | m4_dnl | ||||||
| m4_dnl Date to show in man pages. Updated by make setdate. | m4_dnl Date to show in man pages. Updated by make setdate. | ||||||
| m4_define({{_monthyear_}}, {{August 2020}})m4_dnl | m4_define({{_monthyear_}}, {{September 2020}})m4_dnl | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| .\"t | .\"t | ||||||
| 
 | 
 | ||||||
| .TH "hledger_csv" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" | .TH "hledger_csv" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -9,9 +9,10 @@ | |||||||
| CSV - how hledger reads CSV data, and the CSV rules file format | CSV - how hledger reads CSV data, and the CSV rules file format | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .PP | .PP | ||||||
| hledger can read CSV (Comma Separated Value/Character Separated Value) | hledger can read CSV files (Character Separated Value - usually comma, | ||||||
| files as if they were journal files, automatically converting each CSV | semicolon, or tab) containing dated records as if they were journal | ||||||
| record into a transaction. | files, automatically converting each CSV record into a transaction. | ||||||
|  | .PP | ||||||
| (To learn about \f[I]writing\f[R] CSV, see CSV output.) | (To learn about \f[I]writing\f[R] CSV, see CSV output.) | ||||||
| .PP | .PP | ||||||
| We describe each CSV file\[aq]s format with a corresponding \f[I]rules | We describe each CSV file\[aq]s format with a corresponding \f[I]rules | ||||||
| @ -592,9 +593,19 @@ Interpolation strips outer whitespace (so a CSV value like | |||||||
| See TIPS below for more about referencing other fields. | See TIPS below for more about referencing other fields. | ||||||
| .SS \f[C]separator\f[R] | .SS \f[C]separator\f[R] | ||||||
| .PP | .PP | ||||||
| You can use the \f[C]separator\f[R] directive to read other kinds of | You can use the \f[C]separator\f[R] rule to read other kinds of | ||||||
| character-separated data. | character-separated data. | ||||||
| Eg to read SSV (Semicolon Separated Values), use: | The argument is any single separator character, or the words | ||||||
|  | \f[C]tab\f[R] or \f[C]space\f[R] (case insensitive). | ||||||
|  | Eg, for comma-separated values (CSV): | ||||||
|  | .IP | ||||||
|  | .nf | ||||||
|  | \f[C] | ||||||
|  | separator , | ||||||
|  | \f[R] | ||||||
|  | .fi | ||||||
|  | .PP | ||||||
|  | or for semicolon-separated values (SSV): | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| @ -602,11 +613,7 @@ separator ; | |||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| The separator directive accepts exactly one single byte character as a | or for tab-separated values (TSV): | ||||||
| separator. |  | ||||||
| To specify whitespace characters, you may use the special words |  | ||||||
| \f[C]TAB\f[R] or \f[C]SPACE\f[R]. |  | ||||||
| Eg to read TSV (Tab Separated Values), use: |  | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| @ -614,7 +621,10 @@ separator TAB | |||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| See also: File Extension. | If the input file has a \f[C].csv\f[R], \f[C].ssv\f[R] or \f[C].tsv\f[R] | ||||||
|  | file extension (or a \f[C]csv:\f[R], \f[C]ssv:\f[R], \f[C]tsv:\f[R] | ||||||
|  | prefix), the appropriate separator will be inferred automatically, and | ||||||
|  | you won\[aq]t need this rule. | ||||||
| .SS \f[C]if\f[R] block | .SS \f[C]if\f[R] block | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| @ -964,14 +974,12 @@ they must be double quotes (not single quotes) | |||||||
| spaces outside the quotes are not allowed | spaces outside the quotes are not allowed | ||||||
| .SS File Extension | .SS File Extension | ||||||
| .PP | .PP | ||||||
| CSV (\[dq]Character Separated Values\[dq]) files should be named with | To help hledger identify the format and show the right error messages, | ||||||
| one of these filename extensions: \f[C].csv\f[R], \f[C].ssv\f[R], | CSV/SSV/TSV files should normally be named with a \f[C].csv\f[R], | ||||||
| \f[C].tsv\f[R]. | \f[C].ssv\f[R] or \f[C].tsv\f[R] filename extension. | ||||||
| Or, the file path should be prefixed with one of \f[C]csv:\f[R], | Or, the file path should be prefixed with \f[C]csv:\f[R], \f[C]ssv:\f[R] | ||||||
| \f[C]ssv:\f[R], \f[C]tsv:\f[R]. | or \f[C]tsv:\f[R]. | ||||||
| This helps hledger identify the format and show the right error | Eg: | ||||||
| messages. |  | ||||||
| For example: |  | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| @ -987,7 +995,8 @@ $ cat foo | hledger -f ssv:- foo | |||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| More about this: Input files in the hledger manual. | You can override the file extension with a separator rule if needed. | ||||||
|  | See also: Input files in the hledger manual. | ||||||
| .SS Reading multiple CSV files | .SS Reading multiple CSV files | ||||||
| .PP | .PP | ||||||
| If you use multiple \f[C]-f\f[R] options to read multiple CSV files at | If you use multiple \f[C]-f\f[R] options to read multiple CSV files at | ||||||
|  | |||||||
| @ -8,10 +8,12 @@ hledger_csv(5) hledger 1.18.99 | |||||||
| 
 | 
 | ||||||
| CSV - how hledger reads CSV data, and the CSV rules file format | CSV - how hledger reads CSV data, and the CSV rules file format | ||||||
| 
 | 
 | ||||||
|    hledger can read CSV (Comma Separated Value/Character Separated |    hledger can read CSV files (Character Separated Value - usually | ||||||
| Value) files as if they were journal files, automatically converting | comma, semicolon, or tab) containing dated records as if they were | ||||||
| each CSV record into a transaction.  (To learn about _writing_ CSV, see | journal files, automatically converting each CSV record into a | ||||||
| CSV output.) | transaction. | ||||||
|  | 
 | ||||||
|  |    (To learn about _writing_ CSV, see CSV output.) | ||||||
| 
 | 
 | ||||||
|    We describe each CSV file's format with a corresponding _rules file_. |    We describe each CSV file's format with a corresponding _rules file_. | ||||||
| By default this is named like the CSV file with a '.rules' extension | By default this is named like the CSV file with a '.rules' extension | ||||||
| @ -580,19 +582,24 @@ File: hledger_csv.info,  Node: separator,  Next: if block,  Prev: field assignme | |||||||
| 2.4 'separator' | 2.4 'separator' | ||||||
| =============== | =============== | ||||||
| 
 | 
 | ||||||
| You can use the 'separator' directive to read other kinds of | You can use the 'separator' rule to read other kinds of | ||||||
| character-separated data.  Eg to read SSV (Semicolon Separated Values), | character-separated data.  The argument is any single separator | ||||||
| use: | character, or the words 'tab' or 'space' (case insensitive).  Eg, for | ||||||
|  | comma-separated values (CSV): | ||||||
|  | 
 | ||||||
|  | separator , | ||||||
|  | 
 | ||||||
|  |    or for semicolon-separated values (SSV): | ||||||
| 
 | 
 | ||||||
| separator ; | separator ; | ||||||
| 
 | 
 | ||||||
|    The separator directive accepts exactly one single byte character as |    or for tab-separated values (TSV): | ||||||
| a separator.  To specify whitespace characters, you may use the special |  | ||||||
| words 'TAB' or 'SPACE'.  Eg to read TSV (Tab Separated Values), use: |  | ||||||
| 
 | 
 | ||||||
| separator TAB | separator TAB | ||||||
| 
 | 
 | ||||||
|    See also: File Extension. |    If the input file has a '.csv', '.ssv' or '.tsv' file extension (or a | ||||||
|  | 'csv:', 'ssv:', 'tsv:' prefix), the appropriate separator will be | ||||||
|  | inferred automatically, and you won't need this rule. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_csv.info,  Node: if block,  Next: if table,  Prev: separator,  Up: CSV RULES | File: hledger_csv.info,  Node: if block,  Next: if table,  Prev: separator,  Up: CSV RULES | ||||||
| @ -932,11 +939,10 @@ File: hledger_csv.info,  Node: File Extension,  Next: Reading multiple CSV files | |||||||
| 3.3 File Extension | 3.3 File Extension | ||||||
| ================== | ================== | ||||||
| 
 | 
 | ||||||
| CSV ("Character Separated Values") files should be named with one of | To help hledger identify the format and show the right error messages, | ||||||
| these filename extensions: '.csv', '.ssv', '.tsv'.  Or, the file path | CSV/SSV/TSV files should normally be named with a '.csv', '.ssv' or | ||||||
| should be prefixed with one of 'csv:', 'ssv:', 'tsv:'.  This helps | '.tsv' filename extension.  Or, the file path should be prefixed with | ||||||
| hledger identify the format and show the right error messages.  For | 'csv:', 'ssv:' or 'tsv:'.  Eg: | ||||||
| example: |  | ||||||
| 
 | 
 | ||||||
| $ hledger -f foo.ssv print | $ hledger -f foo.ssv print | ||||||
| 
 | 
 | ||||||
| @ -944,7 +950,8 @@ $ hledger -f foo.ssv print | |||||||
| 
 | 
 | ||||||
| $ cat foo | hledger -f ssv:- foo | $ cat foo | hledger -f ssv:- foo | ||||||
| 
 | 
 | ||||||
|    More about this: Input files in the hledger manual. |    You can override the file extension with a separator rule if needed. | ||||||
|  | See also: Input files in the hledger manual. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger_csv.info,  Node: Reading multiple CSV files,  Next: Valid transactions,  Prev: File Extension,  Up: TIPS | File: hledger_csv.info,  Node: Reading multiple CSV files,  Next: Valid transactions,  Prev: File Extension,  Up: TIPS | ||||||
| @ -1143,84 +1150,84 @@ command the user specified. | |||||||
|  |  | ||||||
| Tag Table: | Tag Table: | ||||||
| Node: Top72 | Node: Top72 | ||||||
| Node: EXAMPLES2636 | Node: EXAMPLES2677 | ||||||
| Ref: #examples2742 | Ref: #examples2783 | ||||||
| Node: Basic2950 | Node: Basic2991 | ||||||
| Ref: #basic3050 | Ref: #basic3091 | ||||||
| Node: Bank of Ireland3592 | Node: Bank of Ireland3633 | ||||||
| Ref: #bank-of-ireland3727 | Ref: #bank-of-ireland3768 | ||||||
| Node: Amazon5189 | Node: Amazon5230 | ||||||
| Ref: #amazon5307 | Ref: #amazon5348 | ||||||
| Node: Paypal7026 | Node: Paypal7067 | ||||||
| Ref: #paypal7120 | Ref: #paypal7161 | ||||||
| Node: CSV RULES14764 | Node: CSV RULES14805 | ||||||
| Ref: #csv-rules14873 | Ref: #csv-rules14914 | ||||||
| Node: skip15168 | Node: skip15209 | ||||||
| Ref: #skip15261 | Ref: #skip15302 | ||||||
| Node: fields15636 | Node: fields15677 | ||||||
| Ref: #fields15758 | Ref: #fields15799 | ||||||
| Node: Transaction field names16923 | Node: Transaction field names16964 | ||||||
| Ref: #transaction-field-names17083 | Ref: #transaction-field-names17124 | ||||||
| Node: Posting field names17194 | Node: Posting field names17235 | ||||||
| Ref: #posting-field-names17346 | Ref: #posting-field-names17387 | ||||||
| Node: account17416 | Node: account17457 | ||||||
| Ref: #account17532 | Ref: #account17573 | ||||||
| Node: amount18069 | Node: amount18110 | ||||||
| Ref: #amount18200 | Ref: #amount18241 | ||||||
| Node: currency19307 | Node: currency19348 | ||||||
| Ref: #currency19442 | Ref: #currency19483 | ||||||
| Node: balance19648 | Node: balance19689 | ||||||
| Ref: #balance19782 | Ref: #balance19823 | ||||||
| Node: comment20099 | Node: comment20140 | ||||||
| Ref: #comment20216 | Ref: #comment20257 | ||||||
| Node: field assignment20379 | Node: field assignment20420 | ||||||
| Ref: #field-assignment20522 | Ref: #field-assignment20563 | ||||||
| Node: separator21340 | Node: separator21381 | ||||||
| Ref: #separator21475 | Ref: #separator21516 | ||||||
| Node: if block21886 | Node: if block22056 | ||||||
| Ref: #if-block22011 | Ref: #if-block22181 | ||||||
| Node: Matching the whole record22412 | Node: Matching the whole record22582 | ||||||
| Ref: #matching-the-whole-record22587 | Ref: #matching-the-whole-record22757 | ||||||
| Node: Matching individual fields23391 | Node: Matching individual fields23561 | ||||||
| Ref: #matching-individual-fields23595 | Ref: #matching-individual-fields23765 | ||||||
| Node: Combining matchers23819 | Node: Combining matchers23989 | ||||||
| Ref: #combining-matchers24015 | Ref: #combining-matchers24185 | ||||||
| Node: Rules applied on successful match24328 | Node: Rules applied on successful match24498 | ||||||
| Ref: #rules-applied-on-successful-match24519 | Ref: #rules-applied-on-successful-match24689 | ||||||
| Node: if table25173 | Node: if table25343 | ||||||
| Ref: #if-table25292 | Ref: #if-table25462 | ||||||
| Node: end27030 | Node: end27200 | ||||||
| Ref: #end27142 | Ref: #end27312 | ||||||
| Node: date-format27366 | Node: date-format27536 | ||||||
| Ref: #date-format27498 | Ref: #date-format27668 | ||||||
| Node: newest-first28247 | Node: newest-first28417 | ||||||
| Ref: #newest-first28385 | Ref: #newest-first28555 | ||||||
| Node: include29068 | Node: include29238 | ||||||
| Ref: #include29199 | Ref: #include29369 | ||||||
| Node: balance-type29643 | Node: balance-type29813 | ||||||
| Ref: #balance-type29763 | Ref: #balance-type29933 | ||||||
| Node: TIPS30463 | Node: TIPS30633 | ||||||
| Ref: #tips30545 | Ref: #tips30715 | ||||||
| Node: Rapid feedback30801 | Node: Rapid feedback30971 | ||||||
| Ref: #rapid-feedback30918 | Ref: #rapid-feedback31088 | ||||||
| Node: Valid CSV31378 | Node: Valid CSV31548 | ||||||
| Ref: #valid-csv31508 | Ref: #valid-csv31678 | ||||||
| Node: File Extension31700 | Node: File Extension31870 | ||||||
| Ref: #file-extension31852 | Ref: #file-extension32022 | ||||||
| Node: Reading multiple CSV files32262 | Node: Reading multiple CSV files32451 | ||||||
| Ref: #reading-multiple-csv-files32447 | Ref: #reading-multiple-csv-files32636 | ||||||
| Node: Valid transactions32688 | Node: Valid transactions32877 | ||||||
| Ref: #valid-transactions32866 | Ref: #valid-transactions33055 | ||||||
| Node: Deduplicating importing33494 | Node: Deduplicating importing33683 | ||||||
| Ref: #deduplicating-importing33673 | Ref: #deduplicating-importing33862 | ||||||
| Node: Setting amounts34706 | Node: Setting amounts34895 | ||||||
| Ref: #setting-amounts34875 | Ref: #setting-amounts35064 | ||||||
| Node: Setting currency/commodity35862 | Node: Setting currency/commodity36051 | ||||||
| Ref: #setting-currencycommodity36054 | Ref: #setting-currencycommodity36243 | ||||||
| Node: Referencing other fields36857 | Node: Referencing other fields37046 | ||||||
| Ref: #referencing-other-fields37057 | Ref: #referencing-other-fields37246 | ||||||
| Node: How CSV rules are evaluated37954 | Node: How CSV rules are evaluated38143 | ||||||
| Ref: #how-csv-rules-are-evaluated38127 | Ref: #how-csv-rules-are-evaluated38316 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,19 +7,20 @@ NAME | |||||||
|        CSV - how hledger reads CSV data, and the CSV rules file format |        CSV - how hledger reads CSV data, and the CSV rules file format | ||||||
| 
 | 
 | ||||||
| DESCRIPTION | DESCRIPTION | ||||||
|        hledger  can read CSV (Comma Separated Value/Character Separated Value) |        hledger  can read CSV files (Character Separated Value - usually comma, | ||||||
|        files as if they were journal files, automatically converting each  CSV |        semicolon, or tab) containing dated records as  if  they  were  journal | ||||||
|        record  into  a transaction.  (To learn about writing CSV, see CSV out- |        files, automatically converting each CSV record into a transaction. | ||||||
|        put.) | 
 | ||||||
|  |        (To learn about writing CSV, see CSV output.) | ||||||
| 
 | 
 | ||||||
|        We describe each CSV file's format with a corresponding rules file.  By |        We describe each CSV file's format with a corresponding rules file.  By | ||||||
|        default  this is named like the CSV file with a .rules extension added. |        default this is named like the CSV file with a .rules extension  added. | ||||||
|        Eg when reading FILE.csv, hledger also looks for FILE.csv.rules in  the |        Eg  when reading FILE.csv, hledger also looks for FILE.csv.rules in the | ||||||
|        same  directory  as  FILE.csv.   You can specify a different rules file |        same directory as FILE.csv.  You can specify  a  different  rules  file | ||||||
|        with the --rules-file option.  If a rules file is  not  found,  hledger |        with  the  --rules-file  option.  If a rules file is not found, hledger | ||||||
|        will create a sample rules file, which you'll need to adjust. |        will create a sample rules file, which you'll need to adjust. | ||||||
| 
 | 
 | ||||||
|        This  file  contains rules describing the CSV data (header line, fields |        This file contains rules describing the CSV data (header  line,  fields | ||||||
|        layout, date format etc.), and how to construct hledger journal entries |        layout, date format etc.), and how to construct hledger journal entries | ||||||
|        (transactions) from it.  Often there will also be a list of conditional |        (transactions) from it.  Often there will also be a list of conditional | ||||||
|        rules  for  categorising  transactions  based  on  their  descriptions. |        rules  for  categorising  transactions  based  on  their  descriptions. | ||||||
| @ -28,36 +29,36 @@ DESCRIPTION | |||||||
| 
 | 
 | ||||||
|        skip                             skip one or more header lines or matched |        skip                             skip one or more header lines or matched | ||||||
|                                         CSV records |                                         CSV records | ||||||
|        fields                           name  CSV fields, assign them to hledger |        fields                           name CSV fields, assign them to  hledger | ||||||
|                                         fields |                                         fields | ||||||
|        field assignment                 assign a value  to  one  hledger  field, |        field assignment                 assign  a  value  to  one hledger field, | ||||||
|                                         with interpolation |                                         with interpolation | ||||||
|        separator                        a custom field separator |        separator                        a custom field separator | ||||||
|        if block                         apply  some rules to CSV records matched |        if block                         apply some rules to CSV records  matched | ||||||
|                                         by patterns |                                         by patterns | ||||||
|        if table                         apply some rules to CSV records  matched |        if table                         apply  some rules to CSV records matched | ||||||
|                                         by patterns, alternate syntax |                                         by patterns, alternate syntax | ||||||
|        end                              skip the remaining CSV records |        end                              skip the remaining CSV records | ||||||
|        date-format                      describe the format of CSV dates |        date-format                      describe the format of CSV dates | ||||||
|        newest-first                     disambiguate  record  order when there's |        newest-first                     disambiguate record order  when  there's | ||||||
|                                         only one date |                                         only one date | ||||||
|        include                          inline another CSV rules file |        include                          inline another CSV rules file | ||||||
|        balance-type                     choose which type of balance assignments |        balance-type                     choose which type of balance assignments | ||||||
|                                         to use |                                         to use | ||||||
| 
 | 
 | ||||||
|        Note,  for best error messages when reading CSV files, use a .csv, .tsv |        Note, for best error messages when reading CSV files, use a .csv,  .tsv | ||||||
|        or .ssv file extension or file prefix - see File Extension below. |        or .ssv file extension or file prefix - see File Extension below. | ||||||
| 
 | 
 | ||||||
|        There's an introductory Convert CSV files tutorial on hledger.org. |        There's an introductory Convert CSV files tutorial on hledger.org. | ||||||
| 
 | 
 | ||||||
| EXAMPLES | EXAMPLES | ||||||
|        Here are some sample hledger CSV rules files.  See also the  full  col- |        Here  are  some sample hledger CSV rules files.  See also the full col- | ||||||
|        lection at: |        lection at: | ||||||
|        https://github.com/simonmichael/hledger/tree/master/examples/csv |        https://github.com/simonmichael/hledger/tree/master/examples/csv | ||||||
| 
 | 
 | ||||||
|    Basic |    Basic | ||||||
|        At  minimum,  the  rules file must identify the date and amount fields, |        At minimum, the rules file must identify the date  and  amount  fields, | ||||||
|        and often it also specifies the date format and how many  header  lines |        and  often  it also specifies the date format and how many header lines | ||||||
|        there are.  Here's a simple CSV file and a rules file for it: |        there are.  Here's a simple CSV file and a rules file for it: | ||||||
| 
 | 
 | ||||||
|               Date, Description, Id, Amount |               Date, Description, Id, Amount | ||||||
| @ -76,8 +77,8 @@ EXAMPLES | |||||||
|        Default account names are chosen, since we didn't set them. |        Default account names are chosen, since we didn't set them. | ||||||
| 
 | 
 | ||||||
|    Bank of Ireland |    Bank of Ireland | ||||||
|        Here's  a  CSV with two amount fields (Debit and Credit), and a balance |        Here's a CSV with two amount fields (Debit and Credit), and  a  balance | ||||||
|        field, which we can use to add balance assertions, which is not  neces- |        field,  which we can use to add balance assertions, which is not neces- | ||||||
|        sary but provides extra error checking: |        sary but provides extra error checking: | ||||||
| 
 | 
 | ||||||
|               Date,Details,Debit,Credit,Balance |               Date,Details,Debit,Credit,Balance | ||||||
| @ -119,13 +120,13 @@ EXAMPLES | |||||||
|                   assets:bank:boi:checking         EUR-5.0 = EUR126.0 |                   assets:bank:boi:checking         EUR-5.0 = EUR126.0 | ||||||
|                   expenses:unknown                  EUR5.0 |                   expenses:unknown                  EUR5.0 | ||||||
| 
 | 
 | ||||||
|        The  balance assertions don't raise an error above, because we're read- |        The balance assertions don't raise an error above, because we're  read- | ||||||
|        ing directly from CSV, but they will be checked if  these  entries  are |        ing  directly  from  CSV, but they will be checked if these entries are | ||||||
|        imported into a journal file. |        imported into a journal file. | ||||||
| 
 | 
 | ||||||
|    Amazon |    Amazon | ||||||
|        Here we convert amazon.com order history, and use an if block to gener- |        Here we convert amazon.com order history, and use an if block to gener- | ||||||
|        ate a third posting if there's a fee.  (In practice you'd probably  get |        ate  a third posting if there's a fee.  (In practice you'd probably get | ||||||
|        this data from your bank instead, but it's an example.) |        this data from your bank instead, but it's an example.) | ||||||
| 
 | 
 | ||||||
|               "Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID" |               "Date","Type","To/From","Name","Status","Amount","Fees","Transaction ID" | ||||||
| @ -177,7 +178,7 @@ EXAMPLES | |||||||
|                   expenses:fees           $1.00 |                   expenses:fees           $1.00 | ||||||
| 
 | 
 | ||||||
|    Paypal |    Paypal | ||||||
|        Here's  a  real-world rules file for (customised) Paypal CSV, with some |        Here's a real-world rules file for (customised) Paypal CSV,  with  some | ||||||
|        Paypal-specific rules, and a second rules file included: |        Paypal-specific rules, and a second rules file included: | ||||||
| 
 | 
 | ||||||
|               "Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Item Title","Item ID","Reference Txn ID","Receipt ID","Balance","Note" |               "Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net","From Email Address","To Email Address","Transaction ID","Item Title","Item ID","Reference Txn ID","Receipt ID","Balance","Note" | ||||||
| @ -332,9 +333,9 @@ CSV RULES | |||||||
|    skip |    skip | ||||||
|               skip N |               skip N | ||||||
| 
 | 
 | ||||||
|        The  word  "skip"  followed by a number (or no number, meaning 1) tells |        The word "skip" followed by a number (or no number,  meaning  1)  tells | ||||||
|        hledger to ignore this many non-empty lines  preceding  the  CSV  data. |        hledger  to  ignore  this  many non-empty lines preceding the CSV data. | ||||||
|        (Empty/blank  lines  are skipped automatically.) You'll need this when- |        (Empty/blank lines are skipped automatically.) You'll need  this  when- | ||||||
|        ever your CSV data contains header lines. |        ever your CSV data contains header lines. | ||||||
| 
 | 
 | ||||||
|        It also has a second purpose: it can be used inside if blocks to ignore |        It also has a second purpose: it can be used inside if blocks to ignore | ||||||
| @ -343,27 +344,27 @@ CSV RULES | |||||||
|    fields |    fields | ||||||
|               fields FIELDNAME1, FIELDNAME2, ... |               fields FIELDNAME1, FIELDNAME2, ... | ||||||
| 
 | 
 | ||||||
|        A  fields  list  (the  word  "fields" followed by comma-separated field |        A fields list (the word  "fields"  followed  by  comma-separated  field | ||||||
|        names) is the quick way to assign CSV field values to  hledger  fields. |        names)  is  the quick way to assign CSV field values to hledger fields. | ||||||
|        It does two things: |        It does two things: | ||||||
| 
 | 
 | ||||||
|        1. it  names  the  CSV fields.  This is optional, but can be convenient |        1. it names the CSV fields.  This is optional, but  can  be  convenient | ||||||
|           later for interpolating them. |           later for interpolating them. | ||||||
| 
 | 
 | ||||||
|        2. when you use a standard hledger field name, it assigns the CSV value |        2. when you use a standard hledger field name, it assigns the CSV value | ||||||
|           to that part of the hledger transaction. |           to that part of the hledger transaction. | ||||||
| 
 | 
 | ||||||
|        Here's  an  example  that  says "use the 1st, 2nd and 4th fields as the |        Here's an example that says "use the 1st, 2nd and  4th  fields  as  the | ||||||
|        transaction's date, description and amount; name the  last  two  fields |        transaction's  date,  description  and amount; name the last two fields | ||||||
|        for later reference; and ignore the others": |        for later reference; and ignore the others": | ||||||
| 
 | 
 | ||||||
|               fields date, description, , amount, , , somefield, anotherfield |               fields date, description, , amount, , , somefield, anotherfield | ||||||
| 
 | 
 | ||||||
|        Field  names  may  not contain whitespace.  Fields you don't care about |        Field names may not contain whitespace.  Fields you  don't  care  about | ||||||
|        can be left unnamed.  Currently there must be least  two  items  (there |        can  be  left  unnamed.  Currently there must be least two items (there | ||||||
|        must be at least one comma). |        must be at least one comma). | ||||||
| 
 | 
 | ||||||
|        Note,  always  use  comma in the fields list, even if your CSV uses an- |        Note, always use comma in the fields list, even if your  CSV  uses  an- | ||||||
|        other separator character. |        other separator character. | ||||||
| 
 | 
 | ||||||
|        Here are the standard hledger field/pseudo-field names.  For more about |        Here are the standard hledger field/pseudo-field names.  For more about | ||||||
| @ -376,52 +377,52 @@ CSV RULES | |||||||
| 
 | 
 | ||||||
|    Posting field names |    Posting field names | ||||||
|    account |    account | ||||||
|        accountN,  where  N  is 1 to 99, causes a posting to be generated, with |        accountN, where N is 1 to 99, causes a posting to  be  generated,  with | ||||||
|        that account name. |        that account name. | ||||||
| 
 | 
 | ||||||
|        Most often there are two postings, so you'll want to set  account1  and |        Most  often  there are two postings, so you'll want to set account1 and | ||||||
|        account2.   Typically  account1 is associated with the CSV file, and is |        account2.  Typically account1 is associated with the CSV file,  and  is | ||||||
|        set once with a top-level assignment, while account2 is  set  based  on |        set  once  with  a top-level assignment, while account2 is set based on | ||||||
|        each transaction's description, and in conditional blocks. |        each transaction's description, and in conditional blocks. | ||||||
| 
 | 
 | ||||||
|        If  a  posting's  account name is left unset but its amount is set (see |        If a posting's account name is left unset but its amount  is  set  (see | ||||||
|        below), a default account name will be chosen (like  "expenses:unknown" |        below),  a default account name will be chosen (like "expenses:unknown" | ||||||
|        or "income:unknown"). |        or "income:unknown"). | ||||||
| 
 | 
 | ||||||
|    amount |    amount | ||||||
|        amountN  sets  posting N's amount.  If the CSV uses separate fields for |        amountN sets posting N's amount.  If the CSV uses separate  fields  for | ||||||
|        inflows and outflows, you can use amountN-in and  amountN-out  instead. |        inflows  and  outflows, you can use amountN-in and amountN-out instead. | ||||||
|        By  assigning to amount1, amount2, ...  etc.  you can generate anywhere |        By assigning to amount1, amount2, ...  etc.  you can generate  anywhere | ||||||
|        from 0 to 99 postings. |        from 0 to 99 postings. | ||||||
| 
 | 
 | ||||||
|        There is also an older, unnumbered form of these  names,  suitable  for |        There  is  also  an older, unnumbered form of these names, suitable for | ||||||
|        2-posting transactions, which sets both posting 1's and (negated) post- |        2-posting transactions, which sets both posting 1's and (negated) post- | ||||||
|        ing 2's amount: amount, or amount-in and  amount-out.   This  is  still |        ing  2's  amount:  amount,  or amount-in and amount-out.  This is still | ||||||
|        supported  because  it  keeps pre-hledger-1.17 csv rules files working, |        supported because it keeps pre-hledger-1.17 csv  rules  files  working, | ||||||
|        and because it can be more succinct, and because  it  converts  posting |        and  because  it  can be more succinct, and because it converts posting | ||||||
|        2's amount to cost if there's a transaction price, which can be useful. |        2's amount to cost if there's a transaction price, which can be useful. | ||||||
| 
 | 
 | ||||||
|        If you have an existing rules file using the unnumbered form, you might |        If you have an existing rules file using the unnumbered form, you might | ||||||
|        want to use the numbered form in certain  conditional  blocks,  without |        want  to  use  the numbered form in certain conditional blocks, without | ||||||
|        having  to  update  and  retest all the old rules.  To facilitate this, |        having to update and retest all the old  rules.   To  facilitate  this, | ||||||
|        posting   1   ignores    amount/amount-in/amount-out    if    any    of |        posting    1    ignores    amount/amount-in/amount-out    if   any   of | ||||||
|        amount1/amount1-in/amount1-out are assigned, and posting 2 ignores them |        amount1/amount1-in/amount1-out are assigned, and posting 2 ignores them | ||||||
|        if any of amount2/amount2-in/amount2-out are  assigned,  avoiding  con- |        if  any  of  amount2/amount2-in/amount2-out are assigned, avoiding con- | ||||||
|        flicts. |        flicts. | ||||||
| 
 | 
 | ||||||
|    currency |    currency | ||||||
|        If the CSV has the currency symbol in a separate field (ie, not part of |        If the CSV has the currency symbol in a separate field (ie, not part of | ||||||
|        the amount field), you can use currencyN to prepend it to  posting  N's |        the  amount  field), you can use currencyN to prepend it to posting N's | ||||||
|        amount.  Or, currency with no number affects all postings. |        amount.  Or, currency with no number affects all postings. | ||||||
| 
 | 
 | ||||||
|    balance |    balance | ||||||
|        balanceN  sets  a balance assertion amount (or if the posting amount is |        balanceN sets a balance assertion amount (or if the posting  amount  is | ||||||
|        left empty, a balance assignment) on posting N. |        left empty, a balance assignment) on posting N. | ||||||
| 
 | 
 | ||||||
|        Also, for compatibility with hledger <1.17: balance with no  number  is |        Also,  for  compatibility with hledger <1.17: balance with no number is | ||||||
|        equivalent to balance1. |        equivalent to balance1. | ||||||
| 
 | 
 | ||||||
|        You  can  adjust the type of assertion/assignment with the balance-type |        You can adjust the type of assertion/assignment with  the  balance-type | ||||||
|        rule (see below). |        rule (see below). | ||||||
| 
 | 
 | ||||||
|    comment |    comment | ||||||
| @ -433,11 +434,11 @@ CSV RULES | |||||||
|    field assignment |    field assignment | ||||||
|               HLEDGERFIELDNAME FIELDVALUE |               HLEDGERFIELDNAME FIELDVALUE | ||||||
| 
 | 
 | ||||||
|        Instead  of  or  in addition to a fields list, you can use a "field as- |        Instead of or in addition to a fields list, you can use  a  "field  as- | ||||||
|        signment" rule to set the value of a single hledger field,  by  writing |        signment"  rule  to set the value of a single hledger field, by writing | ||||||
|        its  name (any of the standard hledger field names above) followed by a |        its name (any of the standard hledger field names above) followed by  a | ||||||
|        text value.  The value may contain interpolated CSV fields,  referenced |        text  value.  The value may contain interpolated CSV fields, referenced | ||||||
|        by  their  1-based position in the CSV record (%N), or by the name they |        by their 1-based position in the CSV record (%N), or by the  name  they | ||||||
|        were given in the fields list (%CSVFIELDNAME).  Some examples: |        were given in the fields list (%CSVFIELDNAME).  Some examples: | ||||||
| 
 | 
 | ||||||
|               # set the amount to the 4th CSV field, with " USD" appended |               # set the amount to the 4th CSV field, with " USD" appended | ||||||
| @ -446,23 +447,29 @@ CSV RULES | |||||||
|               # combine three fields to make a comment, containing note: and date: tags |               # combine three fields to make a comment, containing note: and date: tags | ||||||
|               comment note: %somefield - %anotherfield, date: %1 |               comment note: %somefield - %anotherfield, date: %1 | ||||||
| 
 | 
 | ||||||
|        Interpolation strips outer whitespace (so a CSV value like "  1  "  be- |        Interpolation  strips  outer  whitespace (so a CSV value like " 1 " be- | ||||||
|        comes 1 when interpolated) (#1051).  See TIPS below for more about ref- |        comes 1 when interpolated) (#1051).  See TIPS below for more about ref- | ||||||
|        erencing other fields. |        erencing other fields. | ||||||
| 
 | 
 | ||||||
|    separator |    separator | ||||||
|        You can use the separator directive to read other kinds  of  character- |        You  can  use the separator rule to read other kinds of character-sepa- | ||||||
|        separated data.  Eg to read SSV (Semicolon Separated Values), use: |        rated data.  The argument is any single  separator  character,  or  the | ||||||
|  |        words  tab or space (case insensitive).  Eg, for comma-separated values | ||||||
|  |        (CSV): | ||||||
|  | 
 | ||||||
|  |               separator , | ||||||
|  | 
 | ||||||
|  |        or for semicolon-separated values (SSV): | ||||||
| 
 | 
 | ||||||
|               separator ; |               separator ; | ||||||
| 
 | 
 | ||||||
|        The  separator directive accepts exactly one single byte character as a |        or for tab-separated values (TSV): | ||||||
|        separator.  To specify whitespace characters, you may use  the  special |  | ||||||
|        words TAB or SPACE.  Eg to read TSV (Tab Separated Values), use: |  | ||||||
| 
 | 
 | ||||||
|               separator TAB |               separator TAB | ||||||
| 
 | 
 | ||||||
|        See also: File Extension. |        If the input file has a .csv, .ssv or .tsv file extension (or  a  csv:, | ||||||
|  |        ssv:, tsv: prefix), the appropriate separator will be inferred automat- | ||||||
|  |        ically, and you won't need this rule. | ||||||
| 
 | 
 | ||||||
|    if block |    if block | ||||||
|               if MATCHER |               if MATCHER | ||||||
| @ -475,8 +482,8 @@ CSV RULES | |||||||
|                RULE |                RULE | ||||||
|                RULE |                RULE | ||||||
| 
 | 
 | ||||||
|        Conditional  blocks ("if blocks") are a block of rules that are applied |        Conditional blocks ("if blocks") are a block of rules that are  applied | ||||||
|        only to CSV records which match certain patterns.  They are often  used |        only  to CSV records which match certain patterns.  They are often used | ||||||
|        for customising account names based on transaction descriptions. |        for customising account names based on transaction descriptions. | ||||||
| 
 | 
 | ||||||
|    Matching the whole record |    Matching the whole record | ||||||
| @ -484,16 +491,16 @@ CSV RULES | |||||||
| 
 | 
 | ||||||
|               REGEX |               REGEX | ||||||
| 
 | 
 | ||||||
|        REGEX  is  a  case-insensitive  regular expression which tries to match |        REGEX is a case-insensitive regular expression  which  tries  to  match | ||||||
|        anywhere within the CSV record.  It is a POSIX  ERE  (extended  regular |        anywhere  within  the  CSV record.  It is a POSIX ERE (extended regular | ||||||
|        expression)  that  also  supports GNU word boundaries (\b, \B, \<, \>), |        expression) that also supports GNU word boundaries (\b,  \B,  \<,  \>), | ||||||
|        and  nothing  else.   If  you  have  trouble,  be  sure  to  check  our |        and  nothing  else.   If  you  have  trouble,  be  sure  to  check  our | ||||||
|        https://hledger.org/hledger.html#regular-expressions doc. |        https://hledger.org/hledger.html#regular-expressions doc. | ||||||
| 
 | 
 | ||||||
|        Important  note: the record that is matched is not the original record, |        Important note: the record that is matched is not the original  record, | ||||||
|        but a synthetic one, with any enclosing double quotes (but not  enclos- |        but  a synthetic one, with any enclosing double quotes (but not enclos- | ||||||
|        ing whitespace) removed, and always comma-separated (which means that a |        ing whitespace) removed, and always comma-separated (which means that a | ||||||
|        field containing a comma will appear like  two  fields).   Eg,  if  the |        field  containing  a  comma  will  appear like two fields).  Eg, if the | ||||||
|        original record is 2020-01-01; "Acme, Inc.";  1,000, the REGEX will ac- |        original record is 2020-01-01; "Acme, Inc.";  1,000, the REGEX will ac- | ||||||
|        tually see 2020-01-01,Acme, Inc.,  1,000). |        tually see 2020-01-01,Acme, Inc.,  1,000). | ||||||
| 
 | 
 | ||||||
| @ -502,14 +509,14 @@ CSV RULES | |||||||
| 
 | 
 | ||||||
|               %CSVFIELD REGEX |               %CSVFIELD REGEX | ||||||
| 
 | 
 | ||||||
|        which matches just the content of a particular CSV field.  CSVFIELD  is |        which  matches just the content of a particular CSV field.  CSVFIELD is | ||||||
|        a  percent  sign  followed  by  the field's name or column number, like |        a percent sign followed by the field's  name  or  column  number,  like | ||||||
|        %date or %1. |        %date or %1. | ||||||
| 
 | 
 | ||||||
|    Combining matchers |    Combining matchers | ||||||
|        A single matcher can be written on the same line as the "if"; or multi- |        A single matcher can be written on the same line as the "if"; or multi- | ||||||
|        ple matchers can be written on the following lines, non-indented.  Mul- |        ple matchers can be written on the following lines, non-indented.  Mul- | ||||||
|        tiple matchers are OR'd (any one of them can match), unless one  begins |        tiple  matchers are OR'd (any one of them can match), unless one begins | ||||||
|        with an & symbol, in which case it is AND'ed with the previous matcher. |        with an & symbol, in which case it is AND'ed with the previous matcher. | ||||||
| 
 | 
 | ||||||
|               if |               if | ||||||
| @ -518,8 +525,8 @@ CSV RULES | |||||||
|                RULE |                RULE | ||||||
| 
 | 
 | ||||||
|    Rules applied on successful match |    Rules applied on successful match | ||||||
|        After  the patterns there should be one or more rules to apply, all in- |        After the patterns there should be one or more rules to apply, all  in- | ||||||
|        dented by at least one space.  Three kinds of rule are allowed in  con- |        dented  by at least one space.  Three kinds of rule are allowed in con- | ||||||
|        ditional blocks: |        ditional blocks: | ||||||
| 
 | 
 | ||||||
|        o field assignments (to set a hledger field) |        o field assignments (to set a hledger field) | ||||||
| @ -549,11 +556,11 @@ CSV RULES | |||||||
|               MATCHER3,VALUE31,VALUE32,...,VALUE3n |               MATCHER3,VALUE31,VALUE32,...,VALUE3n | ||||||
|               <empty line> |               <empty line> | ||||||
| 
 | 
 | ||||||
|        Conditional  tables  ("if  tables")  are  a different syntax to specify |        Conditional tables ("if tables") are  a  different  syntax  to  specify | ||||||
|        field assignments that will be applied only to CSV records which  match |        field  assignments that will be applied only to CSV records which match | ||||||
|        certain patterns. |        certain patterns. | ||||||
| 
 | 
 | ||||||
|        MATCHER  could  be  either field or record matcher, as described above. |        MATCHER could be either field or record matcher,  as  described  above. | ||||||
|        When MATCHER matches, values from that row would be assigned to the CSV |        When MATCHER matches, values from that row would be assigned to the CSV | ||||||
|        fields named on the if line, in the same order. |        fields named on the if line, in the same order. | ||||||
| 
 | 
 | ||||||
| @ -577,17 +584,17 @@ CSV RULES | |||||||
|                 ... |                 ... | ||||||
|                 CSVFIELDNAMEn VALUE3n |                 CSVFIELDNAMEn VALUE3n | ||||||
| 
 | 
 | ||||||
|        Each  line starting with MATCHER should contain enough (possibly empty) |        Each line starting with MATCHER should contain enough (possibly  empty) | ||||||
|        values for all the listed fields. |        values for all the listed fields. | ||||||
| 
 | 
 | ||||||
|        Rules would be checked and applied in the order they are listed in  the |        Rules  would be checked and applied in the order they are listed in the | ||||||
|        table and, like with if blocks, later rules (in the same or another ta- |        table and, like with if blocks, later rules (in the same or another ta- | ||||||
|        ble) or if blocks could override the effect of any rule. |        ble) or if blocks could override the effect of any rule. | ||||||
| 
 | 
 | ||||||
|        Instead of ',' you can use a variety of other non-alphanumeric  charac- |        Instead  of ',' you can use a variety of other non-alphanumeric charac- | ||||||
|        ters as a separator.  First character after if is taken to be the sepa- |        ters as a separator.  First character after if is taken to be the sepa- | ||||||
|        rator for the rest of the table.  It is the responsibility of the  user |        rator  for the rest of the table.  It is the responsibility of the user | ||||||
|        to  ensure  that  separator does not occur inside MATCHERs and values - |        to ensure that separator does not occur inside MATCHERs  and  values  - | ||||||
|        there is no way to escape separator. |        there is no way to escape separator. | ||||||
| 
 | 
 | ||||||
|        Example: |        Example: | ||||||
| @ -598,7 +605,7 @@ CSV RULES | |||||||
|               2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out |               2020/01/12.*Plumbing LLC,expenses:house:upkeep,emergency plumbing call-out | ||||||
| 
 | 
 | ||||||
|    end |    end | ||||||
|        This rule can be used inside if blocks (only),  to  make  hledger  stop |        This  rule  can  be  used inside if blocks (only), to make hledger stop | ||||||
|        reading this CSV file and move on to the next input file, or to command |        reading this CSV file and move on to the next input file, or to command | ||||||
|        execution.  Eg: |        execution.  Eg: | ||||||
| 
 | 
 | ||||||
| @ -609,10 +616,10 @@ CSV RULES | |||||||
|    date-format |    date-format | ||||||
|               date-format DATEFMT |               date-format DATEFMT | ||||||
| 
 | 
 | ||||||
|        This is a helper for the date (and date2) fields.  If  your  CSV  dates |        This  is  a  helper for the date (and date2) fields.  If your CSV dates | ||||||
|        are  not  formatted  like  YYYY-MM-DD, YYYY/MM/DD or YYYY.MM.DD, you'll |        are not formatted like YYYY-MM-DD,  YYYY/MM/DD  or  YYYY.MM.DD,  you'll | ||||||
|        need to add a date-format rule describing them  with  a  strptime  date |        need  to  add  a  date-format rule describing them with a strptime date | ||||||
|        parsing  pattern, which must parse the CSV date value completely.  Some |        parsing pattern, which must parse the CSV date value completely.   Some | ||||||
|        examples: |        examples: | ||||||
| 
 | 
 | ||||||
|               # MM/DD/YY |               # MM/DD/YY | ||||||
| @ -634,15 +641,15 @@ CSV RULES | |||||||
|        mat.html#v:formatTime |        mat.html#v:formatTime | ||||||
| 
 | 
 | ||||||
|    newest-first |    newest-first | ||||||
|        hledger  always sorts the generated transactions by date.  Transactions |        hledger always sorts the generated transactions by date.   Transactions | ||||||
|        on the same date should appear in the same order as their CSV  records, |        on  the same date should appear in the same order as their CSV records, | ||||||
|        as  hledger  can  usually auto-detect whether the CSV's normal order is |        as hledger can usually auto-detect whether the CSV's  normal  order  is | ||||||
|        oldest first or newest first.  But if all of the following are true: |        oldest first or newest first.  But if all of the following are true: | ||||||
| 
 | 
 | ||||||
|        o the CSV might sometimes contain just one day  of  data  (all  records |        o the  CSV  might  sometimes  contain just one day of data (all records | ||||||
|          having the same date) |          having the same date) | ||||||
| 
 | 
 | ||||||
|        o the  CSV  records are normally in reverse chronological order (newest |        o the CSV records are normally in reverse chronological  order  (newest | ||||||
|          at the top) |          at the top) | ||||||
| 
 | 
 | ||||||
|        o and you care about preserving the order of same-day transactions |        o and you care about preserving the order of same-day transactions | ||||||
| @ -655,9 +662,9 @@ CSV RULES | |||||||
|    include |    include | ||||||
|               include RULESFILE |               include RULESFILE | ||||||
| 
 | 
 | ||||||
|        This includes the contents of another CSV rules  file  at  this  point. |        This  includes  the  contents  of another CSV rules file at this point. | ||||||
|        RULESFILE  is  an  absolute file path or a path relative to the current |        RULESFILE is an absolute file path or a path relative  to  the  current | ||||||
|        file's directory.  This can be useful for sharing common rules  between |        file's  directory.  This can be useful for sharing common rules between | ||||||
|        several rules files, eg: |        several rules files, eg: | ||||||
| 
 | 
 | ||||||
|               # someaccount.csv.rules |               # someaccount.csv.rules | ||||||
| @ -672,10 +679,10 @@ CSV RULES | |||||||
| 
 | 
 | ||||||
|    balance-type |    balance-type | ||||||
|        Balance assertions generated by assigning to balanceN are of the simple |        Balance assertions generated by assigning to balanceN are of the simple | ||||||
|        = type by default, which is  a  single-commodity,  subaccount-excluding |        =  type  by  default, which is a single-commodity, subaccount-excluding | ||||||
|        assertion.  You may find the subaccount-including variants more useful, |        assertion.  You may find the subaccount-including variants more useful, | ||||||
|        eg if you have created some virtual subaccounts  of  checking  to  help |        eg  if  you  have  created some virtual subaccounts of checking to help | ||||||
|        with  budgeting.  You can select a different type of assertion with the |        with budgeting.  You can select a different type of assertion with  the | ||||||
|        balance-type rule: |        balance-type rule: | ||||||
| 
 | 
 | ||||||
|               # balance assertions will consider all commodities and all subaccounts |               # balance assertions will consider all commodities and all subaccounts | ||||||
| @ -690,19 +697,19 @@ CSV RULES | |||||||
| 
 | 
 | ||||||
| TIPS | TIPS | ||||||
|    Rapid feedback |    Rapid feedback | ||||||
|        It's a good idea to get rapid feedback  while  creating/troubleshooting |        It's  a  good idea to get rapid feedback while creating/troubleshooting | ||||||
|        CSV rules.  Here's a good way, using entr from http://eradman.com/entr- |        CSV rules.  Here's a good way, using entr from http://eradman.com/entr- | ||||||
|        project : |        project : | ||||||
| 
 | 
 | ||||||
|               $ ls foo.csv* | entr bash -c 'echo ----; hledger -f foo.csv print desc:SOMEDESC' |               $ ls foo.csv* | entr bash -c 'echo ----; hledger -f foo.csv print desc:SOMEDESC' | ||||||
| 
 | 
 | ||||||
|        A desc: query (eg) is used to select just one, or a  few,  transactions |        A  desc:  query (eg) is used to select just one, or a few, transactions | ||||||
|        of  interest.   "bash  -c"  is used to run multiple commands, so we can |        of interest.  "bash -c" is used to run multiple  commands,  so  we  can | ||||||
|        echo a separator each time the command re-runs,  making  it  easier  to |        echo  a  separator  each  time the command re-runs, making it easier to | ||||||
|        read the output. |        read the output. | ||||||
| 
 | 
 | ||||||
|    Valid CSV |    Valid CSV | ||||||
|        hledger  accepts  CSV  conforming to RFC 4180.  When CSV values are en- |        hledger accepts CSV conforming to RFC 4180.  When CSV  values  are  en- | ||||||
|        closed in quotes, note: |        closed in quotes, note: | ||||||
| 
 | 
 | ||||||
|        o they must be double quotes (not single quotes) |        o they must be double quotes (not single quotes) | ||||||
| @ -710,10 +717,10 @@ TIPS | |||||||
|        o spaces outside the quotes are not allowed |        o spaces outside the quotes are not allowed | ||||||
| 
 | 
 | ||||||
|    File Extension |    File Extension | ||||||
|        CSV ("Character Separated Values") files should be named  with  one  of |        To  help hledger identify the format and show the right error messages, | ||||||
|        these  filename extensions: .csv, .ssv, .tsv.  Or, the file path should |        CSV/SSV/TSV files should normally be named with a .csv,  .ssv  or  .tsv | ||||||
|        be prefixed with one of csv:, ssv:, tsv:.  This helps hledger  identify |        filename  extension.   Or,  the file path should be prefixed with csv:, | ||||||
|        the format and show the right error messages.  For example: |        ssv: or tsv:.  Eg: | ||||||
| 
 | 
 | ||||||
|               $ hledger -f foo.ssv print |               $ hledger -f foo.ssv print | ||||||
| 
 | 
 | ||||||
| @ -721,7 +728,8 @@ TIPS | |||||||
| 
 | 
 | ||||||
|               $ cat foo | hledger -f ssv:- foo |               $ cat foo | hledger -f ssv:- foo | ||||||
| 
 | 
 | ||||||
|        More about this: Input files in the hledger manual. |        You can override the file extension with a separator  rule  if  needed. | ||||||
|  |        See also: Input files in the hledger manual. | ||||||
| 
 | 
 | ||||||
|    Reading multiple CSV files |    Reading multiple CSV files | ||||||
|        If  you  use  multiple  -f  options to read multiple CSV files at once, |        If  you  use  multiple  -f  options to read multiple CSV files at once, | ||||||
| @ -914,4 +922,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.18.99                   August 2020                   hledger_csv(5) | hledger 1.18.99                 September 2020                  hledger_csv(5) | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| .\"t | .\"t | ||||||
| 
 | 
 | ||||||
| .TH "hledger_journal" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" | .TH "hledger_journal" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1526,4 +1526,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.18.99                   August 2020               hledger_journal(5) | hledger 1.18.99                 September 2020              hledger_journal(5) | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger_timeclock" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" | .TH "hledger_timeclock" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -78,4 +78,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.18.99                   August 2020             hledger_timeclock(5) | hledger 1.18.99                 September 2020            hledger_timeclock(5) | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger_timedot" "5" "August 2020" "hledger 1.18.99" "hledger User Manuals" | .TH "hledger_timedot" "5" "September 2020" "hledger 1.18.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -161,4 +161,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger 1.18.99                   August 2020               hledger_timedot(5) | hledger 1.18.99                 September 2020              hledger_timedot(5) | ||||||
|  | |||||||
| @ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion. | |||||||
| m4_define({{_version_}}, {{1.18.99}})m4_dnl | m4_define({{_version_}}, {{1.18.99}})m4_dnl | ||||||
| m4_dnl | m4_dnl | ||||||
| m4_dnl Date to show in man pages. Updated by make setdate. | m4_dnl Date to show in man pages. Updated by make setdate. | ||||||
| m4_define({{_monthyear_}}, {{August 2020}})m4_dnl | m4_define({{_monthyear_}}, {{September 2020}})m4_dnl | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger-ui" "1" "August 2020" "hledger-ui 1.18.99" "hledger User Manuals" | .TH "hledger-ui" "1" "September 2020" "hledger-ui 1.18.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -456,4 +456,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-ui 1.18.99                August 2020                    hledger-ui(1) | hledger-ui 1.18.99              September 2020                   hledger-ui(1) | ||||||
|  | |||||||
| @ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion. | |||||||
| m4_define({{_version_}}, {{1.18.99}})m4_dnl | m4_define({{_version_}}, {{1.18.99}})m4_dnl | ||||||
| m4_dnl | m4_dnl | ||||||
| m4_dnl Date to show in man pages. Updated by make setdate. | m4_dnl Date to show in man pages. Updated by make setdate. | ||||||
| m4_define({{_monthyear_}}, {{August 2020}})m4_dnl | m4_define({{_monthyear_}}, {{September 2020}})m4_dnl | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| 
 | 
 | ||||||
| .TH "hledger-web" "1" "August 2020" "hledger-web 1.18.99" "hledger User Manuals" | .TH "hledger-web" "1" "September 2020" "hledger-web 1.18.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -545,4 +545,4 @@ SEE ALSO | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| hledger-web 1.18.99               August 2020                   hledger-web(1) | hledger-web 1.18.99             September 2020                  hledger-web(1) | ||||||
|  | |||||||
| @ -47,8 +47,7 @@ $ hledger balance | |||||||
| By default, accounts are displayed hierarchically, with subaccounts | By default, accounts are displayed hierarchically, with subaccounts | ||||||
| indented below their parent. At each level of the tree, accounts are | indented below their parent. At each level of the tree, accounts are | ||||||
| sorted by account code if any, then by account name. Or with | sorted by account code if any, then by account name. Or with | ||||||
| -S/--sort-amount, by their balance amount, largest first. (Note: -S has | -S/--sort-amount, by their balance amount, largest first. | ||||||
| a problem in hledger 1.11-1.18). |  | ||||||
| 
 | 
 | ||||||
| "Boring" accounts, which contain a single interesting subaccount and no | "Boring" accounts, which contain a single interesting subaccount and no | ||||||
| balance of their own, are elided into the following line for more | balance of their own, are elided into the following line for more | ||||||
|  | |||||||
| @ -4,4 +4,4 @@ m4_dnl Program version. Updated by make setversion. | |||||||
| m4_define({{_version_}}, {{1.18.99}})m4_dnl | m4_define({{_version_}}, {{1.18.99}})m4_dnl | ||||||
| m4_dnl | m4_dnl | ||||||
| m4_dnl Date to show in man pages. Updated by make setdate. | m4_dnl Date to show in man pages. Updated by make setdate. | ||||||
| m4_define({{_monthyear_}}, {{August 2020}})m4_dnl | m4_define({{_monthyear_}}, {{September 2020}})m4_dnl | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| .\"t | .\"t | ||||||
| 
 | 
 | ||||||
| .TH "hledger" "1" "August 2020" "hledger 1.18.99" "hledger User Manuals" | .TH "hledger" "1" "September 2020" "hledger 1.18.99" "hledger User Manuals" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -982,15 +982,12 @@ $ cat some.journal | hledger -f- | |||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| Usually the data file is in hledger\[aq]s journal format, but it can | Usually the data file is in hledger\[aq]s journal format, but it can be | ||||||
| also be one of several other formats, listed below. | in any of the supported file formats, which currently are: | ||||||
| hledger detects the format automatically based on the file extension, or |  | ||||||
| if that is not recognised, by trying each built-in \[dq]reader\[dq] in |  | ||||||
| turn: |  | ||||||
| .PP | .PP | ||||||
| .TS | .TS | ||||||
| tab(@); | tab(@); | ||||||
| lw(7.6n) lw(31.2n) lw(31.2n). | lw(7.8n) lw(39.5n) lw(22.7n). | ||||||
| T{ | T{ | ||||||
| Reader: | Reader: | ||||||
| T}@T{ | T}@T{ | ||||||
| @ -1002,37 +999,45 @@ _ | |||||||
| T{ | T{ | ||||||
| \f[C]journal\f[R] | \f[C]journal\f[R] | ||||||
| T}@T{ | T}@T{ | ||||||
| hledger\[aq]s journal format, also some Ledger journals | hledger journal files and some Ledger journals, for transactions | ||||||
| T}@T{ | T}@T{ | ||||||
| \f[C].journal\f[R] \f[C].j\f[R] \f[C].hledger\f[R] \f[C].ledger\f[R] | \f[C].journal\f[R] \f[C].j\f[R] \f[C].hledger\f[R] \f[C].ledger\f[R] | ||||||
| T} | T} | ||||||
| T{ | T{ | ||||||
| \f[C]timeclock\f[R] | \f[C]timeclock\f[R] | ||||||
| T}@T{ | T}@T{ | ||||||
| timeclock files (precise time logging) | timeclock files, for precise time logging | ||||||
| T}@T{ | T}@T{ | ||||||
| \f[C].timeclock\f[R] | \f[C].timeclock\f[R] | ||||||
| T} | T} | ||||||
| T{ | T{ | ||||||
| \f[C]timedot\f[R] | \f[C]timedot\f[R] | ||||||
| T}@T{ | T}@T{ | ||||||
| timedot files (approximate time logging) | timedot files, for approximate time logging | ||||||
| T}@T{ | T}@T{ | ||||||
| \f[C].timedot\f[R] | \f[C].timedot\f[R] | ||||||
| T} | T} | ||||||
| T{ | T{ | ||||||
| \f[C]csv\f[R] | \f[C]csv\f[R] | ||||||
| T}@T{ | T}@T{ | ||||||
| comma-separated values (data interchange) | comma/semicolon/tab/other-separated values, for data import | ||||||
| T}@T{ | T}@T{ | ||||||
| \f[C].csv\f[R] | \f[C].csv\f[R] \f[C].ssv\f[R] \f[C].tsv\f[R] | ||||||
| T} | T} | ||||||
| .TE | .TE | ||||||
| .PP | .PP | ||||||
| If needed (eg to ensure correct error messages when a file has the | hledger detects the format automatically based on the file extensions | ||||||
| \[dq]wrong\[dq] extension), you can force a specific reader/format by | shown above. | ||||||
| prepending it to the file path with a colon. | If it can\[aq]t recognise the file extension, it assumes | ||||||
| Examples: | \f[C]journal\f[R] format. | ||||||
|  | So for non-journal files, it\[aq]s important to use a recognised file | ||||||
|  | extension, so as to either read successfully or to show relevant error | ||||||
|  | messages. | ||||||
|  | .PP | ||||||
|  | When you can\[aq]t ensure the right file extension, not to worry: you | ||||||
|  | can force a specific reader/format by prefixing the file path with the | ||||||
|  | format and a colon. | ||||||
|  | Eg to read a .dat file as csv: | ||||||
| .IP | .IP | ||||||
| .nf | .nf | ||||||
| \f[C] | \f[C] | ||||||
| @ -1041,16 +1046,20 @@ $ echo \[aq]i 2009/13/1 08:00:00\[aq] | hledger print -ftimeclock:- | |||||||
| \f[R] | \f[R] | ||||||
| .fi | .fi | ||||||
| .PP | .PP | ||||||
| You can also specify multiple \f[C]-f\f[R] options, to read multiple | You can specify multiple \f[C]-f\f[R] options, to read multiple files as | ||||||
| files as one big journal. | one big journal. | ||||||
| There are some limitations with this: | There are some limitations with this: | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| directives in one file will not affect the other files | directives in one file will not affect the other files | ||||||
| .IP \[bu] 2 | .IP \[bu] 2 | ||||||
| balance assertions will not see any account balances from previous files | balance assertions will not see any account balances from previous files | ||||||
| .PP | .PP | ||||||
| If you need those, either use the include directive, or concatenate the | If you need either of those things, you can | ||||||
| files, eg: \f[C]cat a.journal b.journal | hledger -f- CMD\f[R]. | .IP \[bu] 2 | ||||||
|  | use a single parent file which includes the others | ||||||
|  | .IP \[bu] 2 | ||||||
|  | or concatenate the files into one before reading, eg: | ||||||
|  | \f[C]cat a.journal b.journal | hledger -f- CMD\f[R]. | ||||||
| .SS Output destination | .SS Output destination | ||||||
| .PP | .PP | ||||||
| hledger commands send their output to the terminal by default. | hledger commands send their output to the terminal by default. | ||||||
| @ -2676,7 +2685,6 @@ At each level of the tree, accounts are sorted by account code if any, | |||||||
| then by account name. | then by account name. | ||||||
| Or with \f[C]-S/--sort-amount\f[R], by their balance amount, largest | Or with \f[C]-S/--sort-amount\f[R], by their balance amount, largest | ||||||
| first. | first. | ||||||
| (Note: \f[C]-S\f[R] has a problem in hledger 1.11-1.18). |  | ||||||
| .PP | .PP | ||||||
| \[dq]Boring\[dq] accounts, which contain a single interesting subaccount | \[dq]Boring\[dq] accounts, which contain a single interesting subaccount | ||||||
| and no balance of their own, are elided into the following line for more | and no balance of their own, are elided into the following line for more | ||||||
|  | |||||||
| @ -955,38 +955,46 @@ $ hledger -f /some/file stats | |||||||
| 
 | 
 | ||||||
| $ cat some.journal | hledger -f- | $ cat some.journal | hledger -f- | ||||||
| 
 | 
 | ||||||
|    Usually the data file is in hledger's journal format, but it can also |    Usually the data file is in hledger's journal format, but it can be | ||||||
| be one of several other formats, listed below.  hledger detects the | in any of the supported file formats, which currently are: | ||||||
| format automatically based on the file extension, or if that is not |  | ||||||
| recognised, by trying each built-in "reader" in turn: |  | ||||||
| 
 | 
 | ||||||
| Reader:  Reads:                           Used for file extensions: | Reader:  Reads:                                   Used for file | ||||||
| --------------------------------------------------------------------------- |                                                   extensions: | ||||||
| 'journal'hledger's journal format, also   '.journal' '.j' '.hledger' | -------------------------------------------------------------------------- | ||||||
|          some Ledger journals             '.ledger' | 'journal'hledger journal files and some Ledger    '.journal' '.j' | ||||||
| 'timeclock'timeclock files (precise time  '.timeclock' |          journals, for transactions               '.hledger' '.ledger' | ||||||
|          logging) | 'timeclock'timeclock files, for precise time      '.timeclock' | ||||||
| 'timedot'timedot files (approximate       '.timedot' |          logging | ||||||
|          time logging) | 'timedot'timedot files, for approximate time      '.timedot' | ||||||
| 'csv'    comma-separated values (data     '.csv' |          logging | ||||||
|          interchange) | 'csv'    comma/semicolon/tab/other-separated      '.csv' '.ssv' '.tsv' | ||||||
|  |          values, for data import | ||||||
| 
 | 
 | ||||||
|    If needed (eg to ensure correct error messages when a file has the |    hledger detects the format automatically based on the file extensions | ||||||
| "wrong" extension), you can force a specific reader/format by prepending | shown above.  If it can't recognise the file extension, it assumes | ||||||
| it to the file path with a colon.  Examples: | 'journal' format.  So for non-journal files, it's important to use a | ||||||
|  | recognised file extension, so as to either read successfully or to show | ||||||
|  | relevant error messages. | ||||||
|  | 
 | ||||||
|  |    When you can't ensure the right file extension, not to worry: you can | ||||||
|  | force a specific reader/format by prefixing the file path with the | ||||||
|  | format and a colon.  Eg to read a .dat file as csv: | ||||||
| 
 | 
 | ||||||
| $ hledger -f csv:/some/csv-file.dat stats | $ hledger -f csv:/some/csv-file.dat stats | ||||||
| $ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:- | $ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:- | ||||||
| 
 | 
 | ||||||
|    You can also specify multiple '-f' options, to read multiple files as |    You can specify multiple '-f' options, to read multiple files as one | ||||||
| one big journal.  There are some limitations with this: | big journal.  There are some limitations with this: | ||||||
| 
 | 
 | ||||||
|    * directives in one file will not affect the other files |    * directives in one file will not affect the other files | ||||||
|    * balance assertions will not see any account balances from previous |    * balance assertions will not see any account balances from previous | ||||||
|      files |      files | ||||||
| 
 | 
 | ||||||
|    If you need those, either use the include directive, or concatenate |    If you need either of those things, you can | ||||||
| the files, eg: 'cat a.journal b.journal | hledger -f- CMD'. | 
 | ||||||
|  |    * use a single parent file which includes the others | ||||||
|  |    * or concatenate the files into one before reading, eg: 'cat | ||||||
|  |      a.journal b.journal | hledger -f- CMD'. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
| File: hledger.info,  Node: Output destination,  Next: Output format,  Prev: Input files,  Up: OPTIONS | File: hledger.info,  Node: Output destination,  Next: Output format,  Prev: Input files,  Up: OPTIONS | ||||||
| @ -2205,8 +2213,7 @@ $ hledger balance | |||||||
|    By default, accounts are displayed hierarchically, with subaccounts |    By default, accounts are displayed hierarchically, with subaccounts | ||||||
| indented below their parent.  At each level of the tree, accounts are | indented below their parent.  At each level of the tree, accounts are | ||||||
| sorted by account code if any, then by account name.  Or with | sorted by account code if any, then by account name.  Or with | ||||||
| '-S/--sort-amount', by their balance amount, largest first.  (Note: '-S' | '-S/--sort-amount', by their balance amount, largest first. | ||||||
| has a problem in hledger 1.11-1.18). |  | ||||||
| 
 | 
 | ||||||
|    "Boring" accounts, which contain a single interesting subaccount and |    "Boring" accounts, which contain a single interesting subaccount and | ||||||
| no balance of their own, are elided into the following line for more | no balance of their own, are elided into the following line for more | ||||||
| @ -4095,164 +4102,164 @@ Node: Unicode characters28869 | |||||||
| Ref: #unicode-characters29051 | Ref: #unicode-characters29051 | ||||||
| Node: Input files30463 | Node: Input files30463 | ||||||
| Ref: #input-files30606 | Ref: #input-files30606 | ||||||
| Node: Output destination32535 | Node: Output destination32905 | ||||||
| Ref: #output-destination32687 | Ref: #output-destination33057 | ||||||
| Node: Output format33112 | Node: Output format33482 | ||||||
| Ref: #output-format33262 | Ref: #output-format33632 | ||||||
| Node: Regular expressions35429 | Node: Regular expressions35799 | ||||||
| Ref: #regular-expressions35586 | Ref: #regular-expressions35956 | ||||||
| Node: Smart dates37322 | Node: Smart dates37692 | ||||||
| Ref: #smart-dates37473 | Ref: #smart-dates37843 | ||||||
| Node: Report start & end date38834 | Node: Report start & end date39204 | ||||||
| Ref: #report-start-end-date39006 | Ref: #report-start-end-date39376 | ||||||
| Node: Report intervals40503 | Node: Report intervals40873 | ||||||
| Ref: #report-intervals40668 | Ref: #report-intervals41038 | ||||||
| Node: Period expressions41058 | Node: Period expressions41428 | ||||||
| Ref: #period-expressions41218 | Ref: #period-expressions41588 | ||||||
| Node: Depth limiting45550 | Node: Depth limiting45920 | ||||||
| Ref: #depth-limiting45694 | Ref: #depth-limiting46064 | ||||||
| Node: Pivoting46026 | Node: Pivoting46396 | ||||||
| Ref: #pivoting46149 | Ref: #pivoting46519 | ||||||
| Node: Valuation47825 | Node: Valuation48195 | ||||||
| Ref: #valuation47927 | Ref: #valuation48297 | ||||||
| Node: -B Cost48616 | Node: -B Cost48986 | ||||||
| Ref: #b-cost48720 | Ref: #b-cost49090 | ||||||
| Node: -V Value48853 | Node: -V Value49223 | ||||||
| Ref: #v-value48999 | Ref: #v-value49369 | ||||||
| Node: -X Value in specified commodity49194 | Node: -X Value in specified commodity49564 | ||||||
| Ref: #x-value-in-specified-commodity49393 | Ref: #x-value-in-specified-commodity49763 | ||||||
| Node: Valuation date49542 | Node: Valuation date49912 | ||||||
| Ref: #valuation-date49710 | Ref: #valuation-date50080 | ||||||
| Node: Market prices50120 | Node: Market prices50490 | ||||||
| Ref: #market-prices50300 | Ref: #market-prices50670 | ||||||
| Node: --infer-value market prices from transactions51077 | Node: --infer-value market prices from transactions51447 | ||||||
| Ref: #infer-value-market-prices-from-transactions51326 | Ref: #infer-value-market-prices-from-transactions51696 | ||||||
| Node: Valuation commodity52608 | Node: Valuation commodity52978 | ||||||
| Ref: #valuation-commodity52817 | Ref: #valuation-commodity53187 | ||||||
| Node: Simple valuation examples54043 | Node: Simple valuation examples54413 | ||||||
| Ref: #simple-valuation-examples54245 | Ref: #simple-valuation-examples54615 | ||||||
| Node: --value Flexible valuation54904 | Node: --value Flexible valuation55274 | ||||||
| Ref: #value-flexible-valuation55112 | Ref: #value-flexible-valuation55482 | ||||||
| Node: More valuation examples57059 | Node: More valuation examples57429 | ||||||
| Ref: #more-valuation-examples57268 | Ref: #more-valuation-examples57638 | ||||||
| Node: Effect of valuation on reports59273 | Node: Effect of valuation on reports59643 | ||||||
| Ref: #effect-of-valuation-on-reports59461 | Ref: #effect-of-valuation-on-reports59831 | ||||||
| Node: COMMANDS64982 | Node: COMMANDS65352 | ||||||
| Ref: #commands65090 | Ref: #commands65460 | ||||||
| Node: accounts66198 | Node: accounts66568 | ||||||
| Ref: #accounts66296 | Ref: #accounts66666 | ||||||
| Node: activity66995 | Node: activity67365 | ||||||
| Ref: #activity67105 | Ref: #activity67475 | ||||||
| Node: add67488 | Node: add67858 | ||||||
| Ref: #add67589 | Ref: #add67959 | ||||||
| Node: aregister70382 | Node: aregister70752 | ||||||
| Ref: #aregister70494 | Ref: #aregister70864 | ||||||
| Node: aregister and custom posting dates71867 | Node: aregister and custom posting dates72237 | ||||||
| Ref: #aregister-and-custom-posting-dates72040 | Ref: #aregister-and-custom-posting-dates72410 | ||||||
| Ref: #output-format-172633 | Ref: #output-format-173003 | ||||||
| Node: balance73038 | Node: balance73408 | ||||||
| Ref: #balance73155 | Ref: #balance73525 | ||||||
| Node: Classic balance report74613 | Node: Classic balance report74983 | ||||||
| Ref: #classic-balance-report74786 | Ref: #classic-balance-report75156 | ||||||
| Node: Customising the classic balance report76220 | Node: Customising the classic balance report76540 | ||||||
| Ref: #customising-the-classic-balance-report76448 | Ref: #customising-the-classic-balance-report76768 | ||||||
| Node: Colour support78524 | Node: Colour support78844 | ||||||
| Ref: #colour-support78691 | Ref: #colour-support79011 | ||||||
| Node: Flat mode78787 | Node: Flat mode79107 | ||||||
| Ref: #flat-mode78935 | Ref: #flat-mode79255 | ||||||
| Node: Depth limited balance reports79348 | Node: Depth limited balance reports79668 | ||||||
| Ref: #depth-limited-balance-reports79533 | Ref: #depth-limited-balance-reports79853 | ||||||
| Node: Percentages79989 | Node: Percentages80309 | ||||||
| Ref: #percentages80155 | Ref: #percentages80475 | ||||||
| Node: Multicolumn balance report81292 | Node: Multicolumn balance report81612 | ||||||
| Ref: #multicolumn-balance-report81472 | Ref: #multicolumn-balance-report81792 | ||||||
| Node: Budget report87069 | Node: Budget report87389 | ||||||
| Ref: #budget-report87212 | Ref: #budget-report87532 | ||||||
| Node: Nested budgets92478 | Node: Nested budgets92798 | ||||||
| Ref: #nested-budgets92590 | Ref: #nested-budgets92910 | ||||||
| Ref: #output-format-296071 | Ref: #output-format-296391 | ||||||
| Node: balancesheet96268 | Node: balancesheet96588 | ||||||
| Ref: #balancesheet96404 | Ref: #balancesheet96724 | ||||||
| Node: balancesheetequity97916 | Node: balancesheetequity98236 | ||||||
| Ref: #balancesheetequity98065 | Ref: #balancesheetequity98385 | ||||||
| Node: cashflow99141 | Node: cashflow99461 | ||||||
| Ref: #cashflow99269 | Ref: #cashflow99589 | ||||||
| Node: check-dates100485 | Node: check-dates100805 | ||||||
| Ref: #check-dates100612 | Ref: #check-dates100932 | ||||||
| Node: check-dupes100891 | Node: check-dupes101211 | ||||||
| Ref: #check-dupes101017 | Ref: #check-dupes101337 | ||||||
| Node: close101310 | Node: close101630 | ||||||
| Ref: #close101418 | Ref: #close101738 | ||||||
| Node: close usage102940 | Node: close usage103260 | ||||||
| Ref: #close-usage103033 | Ref: #close-usage103353 | ||||||
| Node: codes105846 | Node: codes106166 | ||||||
| Ref: #codes105954 | Ref: #codes106274 | ||||||
| Node: commodities106666 | Node: commodities106986 | ||||||
| Ref: #commodities106793 | Ref: #commodities107113 | ||||||
| Node: descriptions106875 | Node: descriptions107195 | ||||||
| Ref: #descriptions107003 | Ref: #descriptions107323 | ||||||
| Node: diff107307 | Node: diff107627 | ||||||
| Ref: #diff107413 | Ref: #diff107733 | ||||||
| Node: files108460 | Node: files108780 | ||||||
| Ref: #files108560 | Ref: #files108880 | ||||||
| Node: help108707 | Node: help109027 | ||||||
| Ref: #help108807 | Ref: #help109127 | ||||||
| Node: import109888 | Node: import110208 | ||||||
| Ref: #import110002 | Ref: #import110322 | ||||||
| Node: Importing balance assignments110895 | Node: Importing balance assignments111215 | ||||||
| Ref: #importing-balance-assignments111043 | Ref: #importing-balance-assignments111363 | ||||||
| Node: incomestatement111692 | Node: incomestatement112012 | ||||||
| Ref: #incomestatement111825 | Ref: #incomestatement112145 | ||||||
| Node: notes113170 | Node: notes113490 | ||||||
| Ref: #notes113283 | Ref: #notes113603 | ||||||
| Node: payees113651 | Node: payees113971 | ||||||
| Ref: #payees113757 | Ref: #payees114077 | ||||||
| Node: prices114177 | Node: prices114497 | ||||||
| Ref: #prices114283 | Ref: #prices114603 | ||||||
| Node: print114624 | Node: print114944 | ||||||
| Ref: #print114734 | Ref: #print115054 | ||||||
| Node: print-unique119530 | Node: print-unique119850 | ||||||
| Ref: #print-unique119656 | Ref: #print-unique119976 | ||||||
| Node: register119941 | Node: register120261 | ||||||
| Ref: #register120068 | Ref: #register120388 | ||||||
| Node: Custom register output124517 | Node: Custom register output124837 | ||||||
| Ref: #custom-register-output124646 | Ref: #custom-register-output124966 | ||||||
| Node: register-match125983 | Node: register-match126303 | ||||||
| Ref: #register-match126117 | Ref: #register-match126437 | ||||||
| Node: rewrite126468 | Node: rewrite126788 | ||||||
| Ref: #rewrite126583 | Ref: #rewrite126903 | ||||||
| Node: Re-write rules in a file128438 | Node: Re-write rules in a file128758 | ||||||
| Ref: #re-write-rules-in-a-file128572 | Ref: #re-write-rules-in-a-file128892 | ||||||
| Node: Diff output format129782 | Node: Diff output format130102 | ||||||
| Ref: #diff-output-format129951 | Ref: #diff-output-format130271 | ||||||
| Node: rewrite vs print --auto131043 | Node: rewrite vs print --auto131363 | ||||||
| Ref: #rewrite-vs.-print---auto131222 | Ref: #rewrite-vs.-print---auto131542 | ||||||
| Node: roi131778 | Node: roi132098 | ||||||
| Ref: #roi131876 | Ref: #roi132196 | ||||||
| Node: stats132888 | Node: stats133208 | ||||||
| Ref: #stats132987 | Ref: #stats133307 | ||||||
| Node: tags133775 | Node: tags134095 | ||||||
| Ref: #tags133873 | Ref: #tags134193 | ||||||
| Node: test134392 | Node: test134712 | ||||||
| Ref: #test134500 | Ref: #test134820 | ||||||
| Node: Add-on commands135247 | Node: Add-on commands135567 | ||||||
| Ref: #add-on-commands135364 | Ref: #add-on-commands135684 | ||||||
| Node: ui136707 | Node: ui137027 | ||||||
| Ref: #ui136795 | Ref: #ui137115 | ||||||
| Node: web136849 | Node: web137169 | ||||||
| Ref: #web136952 | Ref: #web137272 | ||||||
| Node: iadd137068 | Node: iadd137388 | ||||||
| Ref: #iadd137179 | Ref: #iadd137499 | ||||||
| Node: interest137261 | Node: interest137581 | ||||||
| Ref: #interest137368 | Ref: #interest137688 | ||||||
| Node: ENVIRONMENT137608 | Node: ENVIRONMENT137928 | ||||||
| Ref: #environment137720 | Ref: #environment138040 | ||||||
| Node: FILES138705 | Node: FILES139025 | ||||||
| Ref: #files-1138808 | Ref: #files-1139128 | ||||||
| Node: LIMITATIONS139021 | Node: LIMITATIONS139341 | ||||||
| Ref: #limitations139140 | Ref: #limitations139460 | ||||||
| Node: TROUBLESHOOTING139882 | Node: TROUBLESHOOTING140202 | ||||||
| Ref: #troubleshooting139995 | Ref: #troubleshooting140315 | ||||||
|  |  | ||||||
| End Tag Table | End Tag Table | ||||||
| 
 | 
 | ||||||
|  | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user