ledger_entry: Only try to balance entry amounts when necessary.
This gives template authors the ability to write entries that balance something other than the "main" amount.
This commit is contained in:
parent
f6c1d7ed7a
commit
eb329e92a0
4 changed files with 20 additions and 3 deletions
|
@ -190,6 +190,7 @@ class AccountSplitter:
|
||||||
"{}: {}".format(type(error).__name__, error),
|
"{}: {}".format(type(error).__name__, error),
|
||||||
"template {!r}".format(self.template_name)
|
"template {!r}".format(self.template_name)
|
||||||
) from error
|
) from error
|
||||||
|
if sum(amt for _, amt in amounts) != 0:
|
||||||
self._balance_amounts(amounts, template_vars['amount'])
|
self._balance_amounts(amounts, template_vars['amount'])
|
||||||
self._balance_amounts(amounts, -template_vars['amount'])
|
self._balance_amounts(amounts, -template_vars['amount'])
|
||||||
return amounts
|
return amounts
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -30,7 +30,7 @@ REQUIREMENTS['tests_require'] = [
|
||||||
setup(
|
setup(
|
||||||
name='import2ledger',
|
name='import2ledger',
|
||||||
description="Import different sources of financial data to Ledger",
|
description="Import different sources of financial data to Ledger",
|
||||||
version='0.9.1',
|
version='0.9.2',
|
||||||
author='Brett Smith',
|
author='Brett Smith',
|
||||||
author_email='brettcsmith@brettcsmith.org',
|
author_email='brettcsmith@brettcsmith.org',
|
||||||
license='GNU AGPLv3+',
|
license='GNU AGPLv3+',
|
||||||
|
|
|
@ -60,6 +60,11 @@ template =
|
||||||
Income:Sales -3 if 'x' not in {false} else -{amount}
|
Income:Sales -3 if 'x' not in {false} else -{amount}
|
||||||
Assets:Cash {amount}
|
Assets:Cash {amount}
|
||||||
|
|
||||||
|
[SelfBalanced]
|
||||||
|
template =
|
||||||
|
Income:Sales -5
|
||||||
|
Assets:Cash 5
|
||||||
|
|
||||||
[NondecimalWord]
|
[NondecimalWord]
|
||||||
template =
|
template =
|
||||||
Income:Sales -5
|
Income:Sales -5
|
||||||
|
|
|
@ -214,6 +214,17 @@ def test_string_conditionals():
|
||||||
" Assets:Cash 6.00 USD",
|
" Assets:Cash 6.00 USD",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def test_self_balanced():
|
||||||
|
# The amount needs to be different than what's in the template.
|
||||||
|
render_vars = template_vars('NN', '0')
|
||||||
|
lines = render_lines(render_vars, 'SelfBalanced')
|
||||||
|
assert lines == [
|
||||||
|
"",
|
||||||
|
"2015/03/14 NN",
|
||||||
|
" Income:Sales -5.00 USD",
|
||||||
|
" Assets:Cash 5.00 USD",
|
||||||
|
]
|
||||||
|
|
||||||
@pytest.mark.parametrize('amount_expr', [
|
@pytest.mark.parametrize('amount_expr', [
|
||||||
'',
|
'',
|
||||||
'name',
|
'name',
|
||||||
|
|
Loading…
Reference in a new issue