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