< = ^income (liabilities:tax) *.33 ; income tax 2016/1/1 paycheck income:remuneration $-100 income:donations $-15 assets:bank 2016/1/1 withdraw assets:cash $20 assets:bank # 1. print. Auto-generated postings are inserted below the matched one. $ hledger print -f- --auto 2016-01-01 paycheck ; modified: income:remuneration $-100 (liabilities:tax) $-33 ; income tax, generated-posting: = ^income income:donations $-15 (liabilities:tax) $-5 ; income tax, generated-posting: = ^income assets:bank 2016-01-01 withdraw assets:cash $20 assets:bank >= # 2. register $ hledger register -f- --auto 2016-01-01 paycheck income:remuneration $-100 $-100 (liabilities:tax) $-33 $-133 income:donations $-15 $-148 (liabilities:tax) $-5 $-153 assets:bank $115 $-38 2016-01-01 withdraw assets:cash $20 $-18 assets:bank $-20 $-38 >= # 3. balance $ hledger balance -f- --auto --tree $115 assets $95 bank $20 cash $-115 income $-15 donations $-100 remuneration $-38 liabilities:tax -------------------- $-38 >= # Balance assertions see postings generated by transaction modifier rules. < = trigger (target) 10 2018/1/1 (trigger) 1 (target) 1 = 11 ; this assertion would not fail, auto posting will be taken into account # 4. $ hledger register -f- --auto 2018-01-01 (trigger) 1 1 (target) 10 11 (target) 1 12 >= # Transaction modifier adding (balanced virtual) budget envelope postings. < = ^expenses:groceries [budget:groceries] *-1 [assets:bank:checking] *1 2018/10/7 * MARKET expenses:groceries:food assets:bank:checking $-20 # 5. $ hledger print -f- --auto 2018-10-07 * MARKET ; modified: expenses:groceries:food [budget:groceries] $-20 ; generated-posting: = ^expenses:groceries [assets:bank:checking] $20 ; generated-posting: = ^expenses:groceries assets:bank:checking $-20 >= # Rules will preserve a transaction price from the original amount. < = assets:billable:client1 assets:receivable:client1 *100 revenues:client1 2018/1/1 (assets:billable:client1) 0.50h @ $90 # 6. $ hledger -f- print --auto -x 2018-01-01 ; modified: (assets:billable:client1) 0.50h @ $90 assets:receivable:client1 50.00h @ $90 ; generated-posting: = assets:billable:client1 revenues:client1 $-4500 ; generated-posting: = assets:billable:client1 >= # Rules can set a new commodity in the generated amounts. < = assets:billable:client1 assets:receivable:client1 *$100 revenues:client1 2018/1/1 (assets:billable:client1) 0.50h # 7. $ hledger -f- print --auto -x 2018-01-01 ; modified: (assets:billable:client1) 0.50h assets:receivable:client1 $50 ; generated-posting: = assets:billable:client1 revenues:client1 $-50 ; generated-posting: = assets:billable:client1 >= # And/or a new transaction price. < = assets:billable:client1 assets:receivable:client1 *1.00 "Client1 Hours" @ $100.00 revenues:client1 2018/1/1 (assets:billable:client1) 0.50h @ $90 # 8. $ hledger -f- print --auto -x 2018-01-01 ; modified: (assets:billable:client1) 0.50h @ $90 assets:receivable:client1 0.50 "Client1 Hours" @ $100.00 ; generated-posting: = assets:billable:client1 revenues:client1 $-50.00 ; generated-posting: = assets:billable:client1 >= # Balance assignments may not be used with accounts also affected by transaction modifier rules. < = ^expenses:foo budget:available *-1 assets:checking *1 2018/10/17 * INITIAL budget:available $100 equity:opening 2018/10/17 * SOME EXPENSE expenses:foo $50 assets:checking 2018/10/17 * ASSERT budget:other budget:available =$0 # 9. $ hledger print -f- --auto >2 /cannot be used with accounts which are/ >=1 # Issue #928: # Generating auto postings from a unit-priced amount. < = ^Expenses:Joint Expenses:Joint *-1 Liabilities:Joint:Bob *0.5 Liabilities:Joint:Bill *0.5 2018/01/01 Expenses:Joint:Widgets $100.00 @ £0.50 Assets:Joint:Bank -£50.00 # 10. $ hledger -f- print --auto 2018-01-01 ; modified: Expenses:Joint:Widgets $100.00 @ £0.50 Expenses:Joint $-100.00 @ £0.50 ; generated-posting: = ^Expenses:Joint Liabilities:Joint:Bob $50.00 @ £0.50 ; generated-posting: = ^Expenses:Joint Liabilities:Joint:Bill $50.00 @ £0.50 ; generated-posting: = ^Expenses:Joint Assets:Joint:Bank £-50.00 >=0 # Generating auto postings from a total-priced amount. < = ^Expenses:Joint Expenses:Joint *-1 Liabilities:Joint:Bob *0.5 Liabilities:Joint:Bill *0.5 2018/01/01 Expenses:Joint:Widgets $100.00 @@ £50 Assets:Joint:Bank -£50.00 # 11. $ hledger -f- print --auto 2018-01-01 ; modified: Expenses:Joint:Widgets $100.00 @@ £50 Expenses:Joint $-100.00 @@ £50 ; generated-posting: = ^Expenses:Joint Liabilities:Joint:Bob $50.00 @@ £25 ; generated-posting: = ^Expenses:Joint Liabilities:Joint:Bill $50.00 @@ £25 ; generated-posting: = ^Expenses:Joint Assets:Joint:Bank £-50.00 >=0 # alternate approach: convert to unit prices #2018/01/01 # Expenses:Joint:Widgets $100.00 @@ £50 # Expenses:Joint $-100.00 @ £0.5 # Liabilities:Joint:Bob $50.00 @ £0.5 # Liabilities:Joint:Bill $50.00 @ £0.5 # Assets:Joint:Bank £-50.00 # Generating auto postings from an implicitly-priced amount. Should work like the above. < = ^Expenses:Joint Expenses:Joint *-1 Liabilities:Joint:Bob *0.5 Liabilities:Joint:Bill *0.5 2018/01/01 Expenses:Joint:Widgets $100.00 Assets:Joint:Bank -£50.00 # 12. $ hledger -f- print --auto 2018-01-01 ; modified: Expenses:Joint:Widgets $100.00 Expenses:Joint $-100.00 @@ £50 ; generated-posting: = ^Expenses:Joint Liabilities:Joint:Bob $50.00 @@ £25 ; generated-posting: = ^Expenses:Joint Liabilities:Joint:Bill $50.00 @@ £25 ; generated-posting: = ^Expenses:Joint Assets:Joint:Bank £-50.00 >=0 # ## Transaction modifiers affect forecast transactions (#959) < = ^income (liabilities:tax) *.33 ; income tax ~ monthly from 2016-01 paycheck income:remuneration $-100 income:donations $-15 assets:bank 2016/1/3 withdraw assets:cash $20 assets:bank # 13. $ hledger print -f- --auto --forecast -b 2016-01 -e 2016-03 2016-01-03 withdraw assets:cash $20 assets:bank 2016-02-01 paycheck ; generated-transaction: ~ monthly from 2016-01, modified: income:remuneration $-100 (liabilities:tax) $-33 ; income tax, generated-posting: = ^income income:donations $-15 (liabilities:tax) $-5 ; income tax, generated-posting: = ^income assets:bank >= # 14. and they don't force --auto on $ hledger print -f- --forecast -b 2016-01 -e 2016-03 2016-01-03 withdraw assets:cash $20 assets:bank 2016-02-01 paycheck ; generated-transaction: ~ monthly from 2016-01 income:remuneration $-100 income:donations $-15 assets:bank >= # #893a < = ^expenses:groceries [budget:groceries] *-1 [assets:bank:checking] *1 2020/10/7 * MARKET expenses:groceries:food assets:bank:checking $-20 # 15. $ hledger -f- register --auto 2020-10-07 MARKET ex:groceries:food $20 $20 [budget:groceries] $-20 0 [as:bank:checking] $20 $20 assets:bank:checking $-20 0 >= # #893b, https://github.com/simonmichael/hledger/issues/893#issuecomment-459125266 < = tag:tax20 taxes *0.2 2018/12/18 a EUR -10.00 ; :tax20: b EUR 12.00 # 16. Transaction balancing sees auto postings ? # $ hledger -f- print -x --auto # 2018-12-18 # a EUR -10.00 ; :tax20: # taxes EUR -2.00 # b EUR 12.00 # # >= # 16. No, transaction must be balanced both with and without auto postings. $ hledger -f- print -x --auto >2 /could not balance/ >=1 # 17. Commodity display styles are applied to auto posting amounts. < 2020-01-20 (a) 1 A ; add an auto posting with decimal places = (b) *1.5 B ; show B amounts with no decimal places commodity 0. B $ hledger -f- print --auto 2020-01-20 ; modified: (a) 1 A (b) 2 B ; generated-posting: = >=0