line/book: add quantity/uom to rec_name

This commit is contained in:
Frederik Jaeckel 2023-01-15 12:15:54 +01:00
parent 4ef14cd44b
commit 90fbfa3fde
3 changed files with 76 additions and 34 deletions

13
book.py
View file

@ -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

13
line.py
View file

@ -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

View file

@ -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()