expenseAllocation: Set default values by account.
This commit is contained in:
parent
a1ec25a33d
commit
34090df23f
2 changed files with 25 additions and 0 deletions
|
@ -30,3 +30,11 @@ class MetaExpenseAllocation(core.PostingChecker):
|
|||
ACCOUNTS = ('Expenses:',)
|
||||
METADATA_KEY = 'expenseAllocation'
|
||||
VALUES_ENUM = ExpenseAllocations
|
||||
DEFAULT_VALUES = {
|
||||
'Expenses:Services:Accounting': VALUES_ENUM.administration,
|
||||
'Expenses:Services:Administration': VALUES_ENUM.administration,
|
||||
'Expenses:Services:Fundraising': VALUES_ENUM.fundraising,
|
||||
}
|
||||
|
||||
def _default_value(self, txn, post):
|
||||
return self.DEFAULT_VALUES.get(post.account, self.VALUES_ENUM.program).value
|
||||
|
|
|
@ -92,3 +92,20 @@ def test_non_expense_accounts_skipped(account):
|
|||
checker = meta_expense_allocation.MetaExpenseAllocation()
|
||||
errors = checker.check(txn, txn.postings[0])
|
||||
assert not errors
|
||||
|
||||
@pytest.mark.parametrize('account,set_value', [
|
||||
('Expenses:Services:Accounting', 'administration'),
|
||||
('Expenses:Services:Administration', 'administration'),
|
||||
('Expenses:Services:Advocacy', 'program'),
|
||||
('Expenses:Services:Development', 'program'),
|
||||
('Expenses:Services:Fundraising', 'fundraising'),
|
||||
])
|
||||
def test_default_values(account, set_value):
|
||||
txn = testutil.Transaction(postings=[
|
||||
('Liabilites:CreditCard', -25),
|
||||
(account, 25),
|
||||
])
|
||||
checker = meta_expense_allocation.MetaExpenseAllocation()
|
||||
errors = checker.check(txn, txn.postings[-1])
|
||||
assert not errors
|
||||
assert txn.postings[-1].meta['expenseAllocation'] == set_value
|
||||
|
|
Loading…
Reference in a new issue