lib: auto postings are generated right after posting that triggered them (#729)
This commit is contained in:
parent
ecf49b1e4b
commit
93814652f8
@ -71,8 +71,9 @@ runModifierTransaction :: Query -> ModifierTransaction -> (Transaction -> Transa
|
|||||||
runModifierTransaction q mt = modifier where
|
runModifierTransaction q mt = modifier where
|
||||||
q' = simplifyQuery $ And [q, mtvaluequery mt (error "query cannot depend on current time")]
|
q' = simplifyQuery $ And [q, mtvaluequery mt (error "query cannot depend on current time")]
|
||||||
mods = map runModifierPosting $ mtpostings mt
|
mods = map runModifierPosting $ mtpostings mt
|
||||||
generatePostings ps = [m p | p <- ps, q' `matchesPosting` p, m <- mods]
|
generatePostings ps = [p' | p <- ps
|
||||||
modifier t@(tpostings -> ps) = t { tpostings = ps ++ generatePostings ps }
|
, p' <- if q' `matchesPosting` p then p:[ m p | m <- mods] else [p]]
|
||||||
|
modifier t@(tpostings -> ps) = t { tpostings = generatePostings ps }
|
||||||
|
|
||||||
-- | Extract 'Query' equivalent of 'mtvalueexpr' from 'ModifierTransaction'
|
-- | Extract 'Query' equivalent of 'mtvalueexpr' from 'ModifierTransaction'
|
||||||
--
|
--
|
||||||
|
|||||||
@ -15,10 +15,10 @@ hledger print -f- --auto
|
|||||||
>>>
|
>>>
|
||||||
2016/01/01 paycheck
|
2016/01/01 paycheck
|
||||||
income:remuneration $-100
|
income:remuneration $-100
|
||||||
income:donations $-15
|
|
||||||
assets:bank
|
|
||||||
(liabilities:tax) $-33 ; income tax
|
(liabilities:tax) $-33 ; income tax
|
||||||
|
income:donations $-15
|
||||||
(liabilities:tax) $-5 ; income tax
|
(liabilities:tax) $-5 ; income tax
|
||||||
|
assets:bank
|
||||||
|
|
||||||
2016/01/01 withdraw
|
2016/01/01 withdraw
|
||||||
assets:cash $20
|
assets:cash $20
|
||||||
@ -42,15 +42,30 @@ hledger register -f- --auto
|
|||||||
(liabilities:tax) *.33 ; income tax
|
(liabilities:tax) *.33 ; income tax
|
||||||
>>>
|
>>>
|
||||||
2016/01/01 paycheck income:remuneration $-100 $-100
|
2016/01/01 paycheck income:remuneration $-100 $-100
|
||||||
income:donations $-15 $-115
|
(liabilities:tax) $-33 $-133
|
||||||
assets:bank $115 0
|
income:donations $-15 $-148
|
||||||
(liabilities:tax) $-33 $-33
|
(liabilities:tax) $-5 $-153
|
||||||
(liabilities:tax) $-5 $-38
|
assets:bank $115 $-38
|
||||||
2016/01/01 withdraw assets:cash $20 $-18
|
2016/01/01 withdraw assets:cash $20 $-18
|
||||||
assets:bank $-20 $-38
|
assets:bank $-20 $-38
|
||||||
>>>2
|
>>>2
|
||||||
>>>=0
|
>>>=0
|
||||||
|
|
||||||
|
hledger register -f- --auto
|
||||||
|
<<<
|
||||||
|
= trigger
|
||||||
|
(target) 10
|
||||||
|
|
||||||
|
2018/1/1
|
||||||
|
(trigger) 1
|
||||||
|
(target) 1 = 11 ; this assertion would not fail, auto posting will be taken into account
|
||||||
|
>>>
|
||||||
|
2018/01/01 (trigger) 1 1
|
||||||
|
(target) 10 11
|
||||||
|
(target) 1 12
|
||||||
|
>>>2
|
||||||
|
>>>=0
|
||||||
|
|
||||||
hledger balance -f- --auto
|
hledger balance -f- --auto
|
||||||
<<<
|
<<<
|
||||||
2016/1/1 paycheck
|
2016/1/1 paycheck
|
||||||
|
|||||||
@ -14,10 +14,10 @@ hledger rewrite -f- ^income --add-posting '(liabilities:tax) *.33 ; income tax
|
|||||||
>>>
|
>>>
|
||||||
2016/01/01 paycheck
|
2016/01/01 paycheck
|
||||||
income:remuneration $-100
|
income:remuneration $-100
|
||||||
income:donations $-15
|
|
||||||
assets:bank
|
|
||||||
(liabilities:tax) $-33 ; income tax
|
(liabilities:tax) $-33 ; income tax
|
||||||
|
income:donations $-15
|
||||||
(liabilities:tax) $-5 ; income tax
|
(liabilities:tax) $-5 ; income tax
|
||||||
|
assets:bank
|
||||||
|
|
||||||
2016/01/01 withdraw
|
2016/01/01 withdraw
|
||||||
assets:cash $20
|
assets:cash $20
|
||||||
@ -194,25 +194,25 @@ hledger rewrite -f- date:2017/1 --add-posting 'Here comes Santa $0'
|
|||||||
|
|
||||||
2017/01/01
|
2017/01/01
|
||||||
expenses:food $20.00
|
expenses:food $20.00
|
||||||
|
(budget:food) $-20.00
|
||||||
|
Here comes Santa 0
|
||||||
expenses:leisure $15.00
|
expenses:leisure $15.00
|
||||||
|
(budget:misc) $-15.00
|
||||||
|
Here comes Santa 0
|
||||||
expenses:grocery $30.00
|
expenses:grocery $30.00
|
||||||
|
(budget:food) $-30.00
|
||||||
|
Here comes Santa 0
|
||||||
assets:cash
|
assets:cash
|
||||||
Here comes Santa 0
|
Here comes Santa 0
|
||||||
Here comes Santa 0
|
|
||||||
Here comes Santa 0
|
|
||||||
Here comes Santa 0
|
|
||||||
(budget:food) $-20.00
|
|
||||||
(budget:food) $-30.00
|
|
||||||
(budget:misc) $-15.00
|
|
||||||
|
|
||||||
2017/01/02
|
2017/01/02
|
||||||
assets:cash $200.00
|
assets:cash $200.00
|
||||||
|
Here comes Santa 0
|
||||||
assets:bank
|
assets:bank
|
||||||
Here comes Santa 0
|
|
||||||
Here comes Santa 0
|
|
||||||
assets:bank $-1.60
|
assets:bank $-1.60
|
||||||
expenses:fee $1.60 ; cash withdraw fee
|
expenses:fee $1.60 ; cash withdraw fee
|
||||||
(budget:misc) $-1.60
|
(budget:misc) $-1.60
|
||||||
|
Here comes Santa 0
|
||||||
|
|
||||||
2017/02/01
|
2017/02/01
|
||||||
assets:cash $100.00
|
assets:cash $100.00
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user