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
# full copyright notices and license terms.
from trytond.model import fields
from trytond.model import fields, SymbolMixin
from trytond.exceptions import UserError
from trytond.pool import PoolMeta
from trytond.pyson import Eval, Or, Len
from trytond.modules.cashbook.book import STATES2, DEPENDS2
class Book(metaclass=PoolMeta):
class Book(SymbolMixin, metaclass=PoolMeta):
__name__ = 'cashbook.book'
asset = fields.Many2One(string='Asset',
@ -53,6 +53,8 @@ class Book(metaclass=PoolMeta):
Len(Eval('lines')) > 0,
),
}, depends=DEPENDS2+['feature', 'lines', 'asset_uomcat'])
symbol = fields.Function(fields.Char(string='Symbol', readonly=True),
'on_change_with_symbol')
@fields.depends('asset', 'quantity_uom')
def on_change_asset(self):
@ -67,6 +69,15 @@ class Book(metaclass=PoolMeta):
"""
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')
def on_change_with_asset_uomcat(self, name=None):
""" get uom-category of asset

10
line.py
View file

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

View file

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

View file

@ -30,6 +30,10 @@ msgctxt "help:cashbook.book,quantity_uom:"
msgid "UOM"
msgstr "UOM"
msgctxt "field:cashbook.book,symbol:"
msgid "Symbol"
msgstr "Symbol"
msgctxt "field:cashbook.line,quantity_digits:"
msgid "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].quantity, Decimal('1.453'))
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()
def test_assetbook_book_uom(self):

View file

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