From 90fbfa3fde7e9b25cd016f905841fbdaa2b35591 Mon Sep 17 00:00:00 2001 From: Frederik Jaeckel Date: Sun, 15 Jan 2023 12:15:54 +0100 Subject: [PATCH] line/book: add quantity/uom to rec_name --- book.py | 13 +++++++ line.py | 13 +++++++ tests/test_book.py | 84 +++++++++++++++++++++++++++------------------- 3 files changed, 76 insertions(+), 34 deletions(-) diff --git a/book.py b/book.py index b753742..332d514 100644 --- a/book.py +++ b/book.py @@ -8,6 +8,7 @@ from trytond.pool import PoolMeta, Pool from trytond.pyson import Eval, Or, Len, Bool, If from trytond.modules.cashbook.book import STATES2, DEPENDS2 from trytond.transaction import Transaction +from trytond.report import Report from decimal import Decimal from sql.functions import CurrentDate from sql.aggregate import Sum @@ -125,6 +126,18 @@ class Book(SymbolMixin, metaclass=PoolMeta): ), ] + def get_rec_name(self, name): + """ add quantities - if its a asset-cashbook + """ + recname = super(Book, self).get_rec_name(name) + if self.feature == 'asset': + recname += ' | %(quantity)s %(uom_symbol)s' % { + 'quantity': Report.format_number(self.quantity or 0.0, None, + digits=self.quantity_digits), + 'uom_symbol': getattr(self.quantity_uom, 'symbol', '-'), + } + return recname + @fields.depends('asset', 'quantity_uom') def on_change_asset(self): """ get uom from asset diff --git a/line.py b/line.py index f90bc46..c5252e4 100644 --- a/line.py +++ b/line.py @@ -9,6 +9,7 @@ from trytond.pool import PoolMeta, Pool from trytond.pyson import Eval, Or, If from trytond.exceptions import UserError from trytond.i18n import gettext +from trytond.report import Report from trytond.modules.cashbook.line import STATES, DEPENDS from .mixin import SecondUomMixin @@ -65,6 +66,18 @@ class Line(SecondUomMixin, metaclass=PoolMeta): }, depends=['quantity_digits', 'feature']), 'on_change_with_quantity_balance') + def get_rec_name(self, name): + """ add quantities - if its a asset-cashbook + """ + recname = super(Line, self).get_rec_name(name) + if self.cashbook.feature == 'asset': + recname += '|%(quantity)s %(uom_symbol)s' % { + 'quantity': Report.format_number(self.quantity or 0.0, None, + digits=self.quantity_digits), + 'uom_symbol': self.quantity_uom.symbol, + } + return recname + @classmethod def get_debit_credit(cls, values, line=None): """ compute quantity_debit/quantity_credit from quantity diff --git a/tests/test_book.py b/tests/test_book.py index 1ecb8d2..15ae56b 100644 --- a/tests/test_book.py +++ b/tests/test_book.py @@ -42,7 +42,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): }]) self.assertEqual(book.name, 'Book 1') - self.assertEqual(book.rec_name, 'Book 1 | 0.00 usd | Open') + self.assertEqual(book.rec_name, 'Book 1 | 0.00 usd | Open | 0.0000 -') self.assertEqual(book.btype.rec_name, 'CAS - Cash') self.assertEqual(book.state, 'open') self.assertEqual(book.state_string, 'Open') @@ -121,7 +121,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): }]) self.assertEqual(book.name, 'Book 1') - self.assertEqual(book.rec_name, 'Book 1 | 6.50 € | Open') + self.assertEqual(book.rec_name, 'Book 1 | 6.50 € | Open | 4.753 u') self.assertEqual(book.state, 'open') self.assertEqual(book.feature, 'asset') self.assertEqual(book.quantity_digits, 3) @@ -245,7 +245,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): )], }]) - self.assertEqual(book.rec_name, 'Aurum-Storage | 1,250.00 € | Open') + self.assertEqual(book.rec_name, 'Aurum-Storage | 1,250.00 € | Open | 20.000 g') self.assertEqual(book.balance_all, Decimal('1250.0')) self.assertEqual(len(book.lines), 1) @@ -361,7 +361,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): )], }]) - self.assertEqual(book.rec_name, 'Aurum-Storage | 1,250.00 CHF | Open') + self.assertEqual(book.rec_name, 'Aurum-Storage | 1,250.00 CHF | Open | 20.000 g') self.assertEqual(book.balance_all, Decimal('1250.0')) self.assertEqual(len(book.lines), 1) @@ -454,7 +454,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): }]) self.assertEqual(book.name, 'Book 1') - self.assertEqual(book.rec_name, 'Book 1 | 0.00 usd | Open') + self.assertEqual(book.rec_name, 'Book 1 | 0.00 usd | Open | 0.0000 u') self.assertEqual(book.btype.rec_name, 'A - Asset') self.assertEqual(book.state, 'open') self.assertEqual(book.feature, 'asset') @@ -517,7 +517,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): }])], }]) - self.assertEqual(book.rec_name, 'Asset-Book | 1.00 usd | Open') + self.assertEqual(book.rec_name, 'Asset-Book | 1.00 usd | Open | 1.5000 u') self.assertEqual(len(book.lines), 1) self.assertEqual(book.lines[0].amount, Decimal('1.0')) self.assertEqual(book.lines[0].credit, Decimal('1.0')) @@ -601,7 +601,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].quantity_debit, None) self.assertEqual(book.lines[0].feature, 'gen') self.assertEqual(len(book2.lines), 0) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|to|-1.00 usd|Transfer Out [Asset-Book | 0.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|to|-1.00 usd|Transfer Out [Asset-Book | 0.00 usd | Open | 0.0000 u]') self.assertEqual(len(book.lines[0].references), 0) # update quantity @@ -615,7 +616,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].quantity_debit, None) # check counterpart - self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book | 0.00 usd | Open') + self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book | 0.00 usd | Open | 0.0000 u') self.assertEqual(book.lines[0].booktransf.btype.feature, 'asset') self.assertEqual(book.lines[0].booktransf_feature, 'asset') @@ -624,7 +625,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.rec_name, 'Book 1 | -1.00 usd | Open') self.assertEqual(len(book.lines), 1) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|to|-1.00 usd|Transfer Out [Asset-Book | 1.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|to|-1.00 usd|Transfer Out [Asset-Book | 1.00 usd | Open | 2.5000 u]') self.assertEqual(book.lines[0].state, 'check') self.assertEqual(book.lines[0].bookingtype, 'mvout') self.assertEqual(book.lines[0].feature, 'gen') @@ -642,9 +644,10 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].reference, None) self.assertEqual(book.lines[0].references[0].id, book2.lines[0].id) - self.assertEqual(book2.rec_name, 'Asset-Book | 1.00 usd | Open') + self.assertEqual(book2.rec_name, 'Asset-Book | 1.00 usd | Open | 2.5000 u') self.assertEqual(len(book2.lines), 1) - self.assertEqual(book2.lines[0].rec_name, '05/01/2022|from|1.00 usd|Transfer Out [Book 1 | -1.00 usd | Open]') + self.assertEqual(book2.lines[0].rec_name, + '05/01/2022|from|1.00 usd|Transfer Out [Book 1 | -1.00 usd | Open]|2.5000 u') self.assertEqual(book2.lines[0].state, 'check') self.assertEqual(book2.lines[0].bookingtype, 'mvin') self.assertEqual(book2.lines[0].feature, 'asset') @@ -659,7 +662,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book2.lines[0].quantity2nd, None) self.assertEqual(book2.lines[0].quantity2nd_digits, 4) self.assertEqual(book2.lines[0].asset_rate, Decimal('0.4')) - self.assertEqual(book2.lines[0].reference.rec_name, '05/01/2022|to|-1.00 usd|Transfer Out [Asset-Book | 1.00 usd | Open]') + self.assertEqual(book2.lines[0].reference.rec_name, + '05/01/2022|to|-1.00 usd|Transfer Out [Asset-Book | 1.00 usd | Open | 2.5000 u]') self.assertEqual(len(book2.lines[0].references), 0) l1 = list(book.lines) @@ -736,11 +740,12 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].quantity_debit, None) self.assertEqual(book.lines[0].feature, 'gen') self.assertEqual(len(book2.lines), 0) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book | 0.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book | 0.00 usd | Open | 0.0000 u]') self.assertEqual(len(book.lines[0].references), 0) # check counterpart - self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book | 0.00 usd | Open') + self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book | 0.00 usd | Open | 0.0000 u') self.assertEqual(book.lines[0].booktransf.btype.feature, 'asset') self.assertEqual(book.lines[0].booktransf_feature, 'asset') @@ -749,7 +754,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.rec_name, 'Book 1 | 1.00 usd | Open') self.assertEqual(len(book.lines), 1) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book | -1.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book | -1.00 usd | Open | -1.5000 u]') self.assertEqual(book.lines[0].state, 'check') self.assertEqual(book.lines[0].bookingtype, 'mvin') self.assertEqual(book.lines[0].feature, 'gen') @@ -767,9 +773,10 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].reference, None) self.assertEqual(book.lines[0].references[0].id, book2.lines[0].id) - self.assertEqual(book2.rec_name, 'Asset-Book | -1.00 usd | Open') + self.assertEqual(book2.rec_name, 'Asset-Book | -1.00 usd | Open | -1.5000 u') self.assertEqual(len(book2.lines), 1) - self.assertEqual(book2.lines[0].rec_name, '05/01/2022|to|-1.00 usd|Transfer In [Book 1 | 1.00 usd | Open]') + self.assertEqual(book2.lines[0].rec_name, + '05/01/2022|to|-1.00 usd|Transfer In [Book 1 | 1.00 usd | Open]|1.5000 u') self.assertEqual(book2.lines[0].state, 'check') self.assertEqual(book2.lines[0].bookingtype, 'mvout') self.assertEqual(book2.lines[0].feature, 'asset') @@ -784,7 +791,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book2.lines[0].quantity2nd, None) self.assertEqual(book2.lines[0].quantity2nd_digits, 4) self.assertEqual(book2.lines[0].asset_rate, Decimal('0.6667')) - self.assertEqual(book2.lines[0].reference.rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book | -1.00 usd | Open]') + self.assertEqual(book2.lines[0].reference.rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book | -1.00 usd | Open | -1.5000 u]') self.assertEqual(len(book2.lines[0].references), 0) @with_transaction() @@ -846,7 +854,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): 'quantity': Decimal('1.5'), }])], }]) - self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open') + self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open | 1.5000 u') self.assertEqual(len(book.lines), 1) self.assertEqual(book.lines[0].amount, Decimal('1.0')) self.assertEqual(book.lines[0].credit, Decimal('1.0')) @@ -856,20 +864,22 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].quantity_debit, Decimal('0.0')) self.assertEqual(book.lines[0].feature, 'asset') self.assertEqual(len(book2.lines), 0) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | 0.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | 0.00 usd | Open | 0.0000 u]|1.5000 u') self.assertEqual(len(book.lines[0].references), 0) # check counterpart - self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book 1 | 0.00 usd | Open') + self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book 1 | 0.00 usd | Open | 0.0000 u') self.assertEqual(book.lines[0].booktransf.btype.feature, 'asset') self.assertEqual(book.lines[0].booktransf_feature, 'asset') # set line to 'checked', this creates the counterpart Line.wfcheck(list(book.lines)) - self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open') + self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open | 1.5000 u') self.assertEqual(len(book.lines), 1) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open | -1.5000 u]|1.5000 u') self.assertEqual(book.lines[0].state, 'check') self.assertEqual(book.lines[0].bookingtype, 'mvin') self.assertEqual(book.lines[0].feature, 'asset') @@ -887,9 +897,10 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].reference, None) self.assertEqual(book.lines[0].references[0].id, book2.lines[0].id) - self.assertEqual(book2.rec_name, 'Asset-Book 1 | -1.00 usd | Open') + self.assertEqual(book2.rec_name, 'Asset-Book 1 | -1.00 usd | Open | -1.5000 u') self.assertEqual(len(book2.lines), 1) - self.assertEqual(book2.lines[0].rec_name, '05/01/2022|to|-1.00 usd|Transfer In [Asset-Book 2 | 1.00 usd | Open]') + self.assertEqual(book2.lines[0].rec_name, + '05/01/2022|to|-1.00 usd|Transfer In [Asset-Book 2 | 1.00 usd | Open | 1.5000 u]|1.5000 u') self.assertEqual(book2.lines[0].state, 'check') self.assertEqual(book2.lines[0].bookingtype, 'mvout') self.assertEqual(book2.lines[0].feature, 'asset') @@ -904,7 +915,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book2.lines[0].quantity2nd, None) self.assertEqual(book2.lines[0].quantity2nd_digits, 4) self.assertEqual(book2.lines[0].asset_rate, Decimal('0.6667')) - self.assertEqual(book2.lines[0].reference.rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open]') + self.assertEqual(book2.lines[0].reference.rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open | -1.5000 u]|1.5000 u') self.assertEqual(len(book2.lines[0].references), 0) @with_transaction() @@ -998,7 +1010,7 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): 'quantity': Decimal('1.5'), }])], }]) - self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open') + self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open | 1.5000 oz') self.assertEqual(len(book.lines), 1) self.assertEqual(book.lines[0].amount, Decimal('1.0')) self.assertEqual(book.lines[0].credit, Decimal('1.0')) @@ -1015,20 +1027,22 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].quantity2nd_digits, 4) self.assertEqual(book.lines[0].feature, 'asset') self.assertEqual(len(book2.lines), 0) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | 0.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | 0.00 usd | Open | 0.0000 g]|1.5000 oz') self.assertEqual(len(book.lines[0].references), 0) # check counterpart - self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book 1 | 0.00 usd | Open') + self.assertEqual(book.lines[0].booktransf.rec_name, 'Asset-Book 1 | 0.00 usd | Open | 0.0000 g') self.assertEqual(book.lines[0].booktransf.btype.feature, 'asset') self.assertEqual(book.lines[0].booktransf_feature, 'asset') # set line to 'checked', this creates the counterpart Line.wfcheck(list(book.lines)) - self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open') + self.assertEqual(book.rec_name, 'Asset-Book 2 | 1.00 usd | Open | 1.5000 oz') self.assertEqual(len(book.lines), 1) - self.assertEqual(book.lines[0].rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open]') + self.assertEqual(book.lines[0].rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open | -42.5243 g]|1.5000 oz') self.assertEqual(book.lines[0].state, 'check') self.assertEqual(book.lines[0].bookingtype, 'mvin') self.assertEqual(book.lines[0].feature, 'asset') @@ -1047,9 +1061,10 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book.lines[0].reference, None) self.assertEqual(book.lines[0].references[0].id, book2.lines[0].id) - self.assertEqual(book2.rec_name, 'Asset-Book 1 | -1.00 usd | Open') + self.assertEqual(book2.rec_name, 'Asset-Book 1 | -1.00 usd | Open | -42.5243 g') self.assertEqual(len(book2.lines), 1) - self.assertEqual(book2.lines[0].rec_name, '05/01/2022|to|-1.00 usd|Transfer In [Asset-Book 2 | 1.00 usd | Open]') + self.assertEqual(book2.lines[0].rec_name, + '05/01/2022|to|-1.00 usd|Transfer In [Asset-Book 2 | 1.00 usd | Open | 1.5000 oz]|42.5243 g') self.assertEqual(book2.lines[0].state, 'check') self.assertEqual(book2.lines[0].bookingtype, 'mvout') self.assertEqual(book2.lines[0].feature, 'asset') @@ -1065,7 +1080,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase): self.assertEqual(book2.lines[0].quantity2nd.factor, 0.028349523125) self.assertEqual(book2.lines[0].quantity2nd_digits, 4) self.assertEqual(book2.lines[0].asset_rate, Decimal('0.0235')) - self.assertEqual(book2.lines[0].reference.rec_name, '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open]') + self.assertEqual(book2.lines[0].reference.rec_name, + '05/01/2022|from|1.00 usd|Transfer In [Asset-Book 1 | -1.00 usd | Open | -42.5243 g]|1.5000 oz') self.assertEqual(len(book2.lines[0].references), 0) @with_transaction()