journal: check assignments against unassignable list
This commit is contained in:
parent
ff455689a3
commit
597b1b8ccd
@ -692,6 +692,15 @@ discriminateByDate tx
|
|||||||
return
|
return
|
||||||
[(tdate tx, Right $ tx { tpostings = removePrices <$> tpostings tx })]
|
[(tdate tx, Right $ tx { tpostings = removePrices <$> tpostings tx })]
|
||||||
|
|
||||||
|
-- | Throw an error if a posting is in the unassignable set.
|
||||||
|
checkUnassignablePosting :: Posting -> CurrentBalancesModifier s ()
|
||||||
|
checkUnassignablePosting p = do
|
||||||
|
unassignable <- R.asks eUnassignable
|
||||||
|
if (isAssignment p && paccount p `S.member` unassignable)
|
||||||
|
then throwError $ "Can't assign to account: " ++ (T.unpack $ paccount p)
|
||||||
|
else return ()
|
||||||
|
|
||||||
|
|
||||||
-- | This function takes an object describing changes to
|
-- | This function takes an object describing changes to
|
||||||
-- account balances on a single day - either a single posting
|
-- account balances on a single day - either a single posting
|
||||||
-- (from an already balanced transaction without assignments)
|
-- (from an already balanced transaction without assignments)
|
||||||
@ -720,10 +729,12 @@ discriminateByDate tx
|
|||||||
-- and then balance and store the transaction.
|
-- and then balance and store the transaction.
|
||||||
checkInferAndRegisterAmounts :: Either Posting Transaction
|
checkInferAndRegisterAmounts :: Either Posting Transaction
|
||||||
-> CurrentBalancesModifier s ()
|
-> CurrentBalancesModifier s ()
|
||||||
checkInferAndRegisterAmounts (Left p) =
|
checkInferAndRegisterAmounts (Left p) = do
|
||||||
|
checkUnassignablePosting p
|
||||||
void $ addAmountAndCheckBalance return p
|
void $ addAmountAndCheckBalance return p
|
||||||
checkInferAndRegisterAmounts (Right oldTx) = do
|
checkInferAndRegisterAmounts (Right oldTx) = do
|
||||||
let ps = tpostings oldTx
|
let ps = tpostings oldTx
|
||||||
|
mapM_ checkUnassignablePosting ps
|
||||||
styles <- R.reader $ eStyles
|
styles <- R.reader $ eStyles
|
||||||
newPostings <- forM ps $ addAmountAndCheckBalance inferFromAssignment
|
newPostings <- forM ps $ addAmountAndCheckBalance inferFromAssignment
|
||||||
storeTransaction =<< balanceTransactionUpdate
|
storeTransaction =<< balanceTransactionUpdate
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user