diff --git a/hledger-lib/Hledger/Data/AutoTransaction.hs b/hledger-lib/Hledger/Data/AutoTransaction.hs index 9481305cf..8a0f36922 100644 --- a/hledger-lib/Hledger/Data/AutoTransaction.hs +++ b/hledger-lib/Hledger/Data/AutoTransaction.hs @@ -71,8 +71,9 @@ runModifierTransaction :: Query -> ModifierTransaction -> (Transaction -> Transa runModifierTransaction q mt = modifier where q' = simplifyQuery $ And [q, mtvaluequery mt (error "query cannot depend on current time")] mods = map runModifierPosting $ mtpostings mt - generatePostings ps = [m p | p <- ps, q' `matchesPosting` p, m <- mods] - modifier t@(tpostings -> ps) = t { tpostings = ps ++ generatePostings ps } + generatePostings ps = [p' | p <- 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' -- diff --git a/tests/budget/auto.test b/tests/budget/auto.test index daf1c07ca..4f1630f91 100644 --- a/tests/budget/auto.test +++ b/tests/budget/auto.test @@ -15,10 +15,10 @@ hledger print -f- --auto >>> 2016/01/01 paycheck income:remuneration $-100 - income:donations $-15 - assets:bank (liabilities:tax) $-33 ; income tax + income:donations $-15 (liabilities:tax) $-5 ; income tax + assets:bank 2016/01/01 withdraw assets:cash $20 @@ -42,15 +42,30 @@ hledger register -f- --auto (liabilities:tax) *.33 ; income tax >>> 2016/01/01 paycheck income:remuneration $-100 $-100 - income:donations $-15 $-115 - assets:bank $115 0 - (liabilities:tax) $-33 $-33 - (liabilities:tax) $-5 $-38 + (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 >>>2 >>>=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 <<< 2016/1/1 paycheck diff --git a/tests/misc/rewrite.test b/tests/misc/rewrite.test index 0b14f34fd..97a5ca37b 100644 --- a/tests/misc/rewrite.test +++ b/tests/misc/rewrite.test @@ -14,10 +14,10 @@ hledger rewrite -f- ^income --add-posting '(liabilities:tax) *.33 ; income tax >>> 2016/01/01 paycheck income:remuneration $-100 - income:donations $-15 - assets:bank (liabilities:tax) $-33 ; income tax + income:donations $-15 (liabilities:tax) $-5 ; income tax + assets:bank 2016/01/01 withdraw assets:cash $20 @@ -194,25 +194,25 @@ hledger rewrite -f- date:2017/1 --add-posting 'Here comes Santa $0' 2017/01/01 expenses:food $20.00 + (budget:food) $-20.00 + Here comes Santa 0 expenses:leisure $15.00 + (budget:misc) $-15.00 + Here comes Santa 0 expenses:grocery $30.00 + (budget:food) $-30.00 + Here comes Santa 0 assets:cash 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 assets:cash $200.00 + Here comes Santa 0 assets:bank - Here comes Santa 0 - Here comes Santa 0 assets:bank $-1.60 expenses:fee $1.60 ; cash withdraw fee (budget:misc) $-1.60 + Here comes Santa 0 2017/02/01 assets:cash $100.00