line: Einheit für Anzahl, book: symbol für Asset + tests

This commit is contained in:
Frederik Jaeckel 2022-12-22 16:01:10 +01:00
parent 70416dbc12
commit 71aa1de06f
6 changed files with 29 additions and 14 deletions

15
book.py
View file

@ -3,14 +3,14 @@
# The COPYRIGHT file at the top level of this repository contains the # The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms. # full copyright notices and license terms.
from trytond.model import fields from trytond.model import fields, SymbolMixin
from trytond.exceptions import UserError from trytond.exceptions import UserError
from trytond.pool import PoolMeta from trytond.pool import PoolMeta
from trytond.pyson import Eval, Or, Len from trytond.pyson import Eval, Or, Len
from trytond.modules.cashbook.book import STATES2, DEPENDS2 from trytond.modules.cashbook.book import STATES2, DEPENDS2
class Book(metaclass=PoolMeta): class Book(SymbolMixin, metaclass=PoolMeta):
__name__ = 'cashbook.book' __name__ = 'cashbook.book'
asset = fields.Many2One(string='Asset', asset = fields.Many2One(string='Asset',
@ -53,6 +53,8 @@ class Book(metaclass=PoolMeta):
Len(Eval('lines')) > 0, Len(Eval('lines')) > 0,
), ),
}, depends=DEPENDS2+['feature', 'lines', 'asset_uomcat']) }, depends=DEPENDS2+['feature', 'lines', 'asset_uomcat'])
symbol = fields.Function(fields.Char(string='Symbol', readonly=True),
'on_change_with_symbol')
@fields.depends('asset', 'quantity_uom') @fields.depends('asset', 'quantity_uom')
def on_change_asset(self): def on_change_asset(self):
@ -67,6 +69,15 @@ class Book(metaclass=PoolMeta):
""" """
return 4 return 4
@fields.depends('quantity_uom', 'currency')
def on_change_with_symbol(self, name=None):
""" get symbol for asset
"""
return '%(currency)s/%(unit)s' % {
'currency': getattr(self.currency, 'symbol', '-'),
'unit': getattr(self.quantity_uom, 'symbol', '-'),
}
@fields.depends('asset', '_parent_asset.uom') @fields.depends('asset', '_parent_asset.uom')
def on_change_with_asset_uomcat(self, name=None): def on_change_with_asset_uomcat(self, name=None):
""" get uom-category of asset """ get uom-category of asset

10
line.py
View file

@ -28,14 +28,14 @@ class Line(metaclass=PoolMeta):
'on_change_with_quantity_digits') 'on_change_with_quantity_digits')
quantity_uom = fields.Function(fields.Many2One(string='Symbol', quantity_uom = fields.Function(fields.Many2One(string='Symbol',
readonly=True, model_name='product.uom'), readonly=True, model_name='product.uom'),
'on_change_with_quantity_symbol') 'on_change_with_quantity_uom')
asset_rate = fields.Function(fields.Numeric(string='Rate', asset_rate = fields.Function(fields.Numeric(string='Rate',
readonly=True, readonly=True,
digits=(16, If( digits=(16, If(
Eval('currency_digits', 2) > Eval('quantity_digits', 2), Eval('currency_digits', 2) > Eval('quantity_digits', 2),
Eval('currency_digits', 2), Eval('quantity_digits', 2)))), Eval('currency_digits', 2), Eval('quantity_digits', 2))),
depends=['currency_digits', 'quantity_digits']),
'on_change_with_asset_rate') 'on_change_with_asset_rate')
#asset_ratesymbol = fields.
@fields.depends('quantity', 'amount', 'currency_digits', 'quantity_digits') @fields.depends('quantity', 'amount', 'currency_digits', 'quantity_digits')
def on_change_with_asset_rate(self, name=None): def on_change_with_asset_rate(self, name=None):
@ -52,8 +52,8 @@ class Line(metaclass=PoolMeta):
).quantize(Decimal(str(1/10**digit))) ).quantize(Decimal(str(1/10**digit)))
@fields.depends('cashbook', '_parent_cashbook.quantity_uom') @fields.depends('cashbook', '_parent_cashbook.quantity_uom')
def on_change_with_quantity_symbol(self, name=None): def on_change_with_quantity_uom(self, name=None):
""" get quantity-symbol of asset """ get quantity-unit of asset
""" """
if self.cashbook: if self.cashbook:
return self.cashbook.quantity_uom.id return self.cashbook.quantity_uom.id

View file

@ -38,6 +38,10 @@ msgctxt "help:cashbook.book,quantity_uom:"
msgid "UOM" msgid "UOM"
msgstr "Einheit" msgstr "Einheit"
msgctxt "field:cashbook.book,symbol:"
msgid "Symbol"
msgstr "Symbol"
################# #################
# cashbook.line # # cashbook.line #

View file

@ -30,6 +30,10 @@ msgctxt "help:cashbook.book,quantity_uom:"
msgid "UOM" msgid "UOM"
msgstr "UOM" msgstr "UOM"
msgctxt "field:cashbook.book,symbol:"
msgid "Symbol"
msgstr "Symbol"
msgctxt "field:cashbook.line,quantity_digits:" msgctxt "field:cashbook.line,quantity_digits:"
msgid "Digits" msgid "Digits"
msgstr "Digits" msgstr "Digits"

View file

@ -104,7 +104,8 @@ class CbInvTestCase(CashbookTestCase, InvestmentTestCase):
self.assertEqual(book.lines[0].amount, Decimal('2.5')) self.assertEqual(book.lines[0].amount, Decimal('2.5'))
self.assertEqual(book.lines[0].quantity, Decimal('1.453')) self.assertEqual(book.lines[0].quantity, Decimal('1.453'))
self.assertEqual(book.lines[0].quantity_digits, 3) self.assertEqual(book.lines[0].quantity_digits, 3)
self.assertEqual(book.lines[0].quantity_symbol, 'u') self.assertEqual(book.lines[0].quantity_uom.symbol, 'u')
self.assertEqual(book.symbol, 'usd/u')
@with_transaction() @with_transaction()
def test_assetbook_book_uom(self): def test_assetbook_book_uom(self):

View file

@ -8,12 +8,7 @@ full copyright notices and license terms. -->
<label name="quantity" /> <label name="quantity" />
<field name="quantity" symbol="quantity_uom"/> <field name="quantity" symbol="quantity_uom"/>
<label name="asset_rate"/> <label name="asset_rate"/>
<!--<field name="asset_rate"/>--> <field name="asset_rate" symbol="cashbook"/>
<group id="asset_rate" col="2">
<field name="asset_rate" xexpand="0"/>
<field name="number" xalign="0.0" xexpand="0"/>
</group>
<field name="quantity_digits"/> <field name="quantity_digits"/>
<newline/> <newline/>