line: counterpart-values for split-lines + tests

This commit is contained in:
Frederik Jaeckel 2023-01-18 22:56:31 +01:00
parent 7ff631d850
commit a397fe22a2
2 changed files with 26 additions and 7 deletions

16
line.py
View file

@ -144,15 +144,25 @@ class Line(SecondUomMixin, metaclass=PoolMeta):
return result
@classmethod
def get_counterpart_values(cls, line, values={}):
def get_counterpart_values(cls, line, splitline=None, values={}):
""" add quantity to counterpart
"""
result = super(Line, cls).get_counterpart_values(line, values)
result = super(Line, cls).get_counterpart_values(
line,
splitline = splitline,
values = values
)
line_uom = getattr(line.quantity_uom, 'id', None)
booktransf_uom = getattr(getattr(line.booktransf, 'quantity_uom', {}), 'id', None)
if booktransf_uom is None:
if getattr(splitline, 'quantity', None) is not None:
# we add values to the counterpart of a splitbooking-line
result.update({
'quantity': splitline.quantity,
'quantity_2nd_uom': None,
})
elif booktransf_uom is None:
# counterpart-cashbook has no uom -> no quantity
result.update({
'quantity': None,

View file

@ -1390,11 +1390,20 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase):
self.assertEqual(books[0].lines[0].splitlines[1].quantity, Decimal('2.5'))
self.assertEqual(books[0].lines[0].splitlines[1].booktransf.rec_name,
'Book 2 | -6.00 usd | Open | -2.50 u')
self.assertEqual(len(books[0].lines[0].references), 0)
self.assertEqual(len(books[0].lines[0].references), 1)
self.assertEqual(books[0].lines[0].references[0].rec_name,
'05/01/2022|to|-6.00 usd|from cashbook [Book 1 | 11.00 usd | Open | 4.00 u]|2.50 u')
self.assertEqual(books[0].lines[0].reference, None)
self.assertEqual(books[1].rec_name, 'Book 2 | 0.00 usd | Open | 0.00 u')
self.assertEqual(books[1].balance_all, Decimal('0.0'))
self.assertEqual(len(books[1].lines), 0)
self.assertEqual(books[1].rec_name, 'Book 2 | -6.00 usd | Open | -2.50 u')
self.assertEqual(books[1].balance_all, Decimal('-6.0'))
self.assertEqual(len(books[1].lines), 1)
self.assertEqual(books[1].lines[0].rec_name,
'05/01/2022|to|-6.00 usd|from cashbook [Book 1 | 11.00 usd | Open | 4.00 u]|2.50 u')
# TODO:
# - splitbuchung mit unterschiedlichen einheiten einer kategorie
# - splitbuchung mit unterschiedlichen einheiten verschiedener kategorien
# in/out-splitbuchung
# end CbInvTestCase