formatting

This commit is contained in:
Frederik Jaeckel 2023-06-08 14:00:59 +02:00
parent 6c1fac8672
commit ad067475f8
13 changed files with 1126 additions and 709 deletions

View file

@ -6,7 +6,6 @@
from trytond.model import fields
from trytond.pyson import Eval, Bool, Or
from trytond.pool import Pool
from trytond.transaction import Transaction
from trytond.exceptions import UserError
from trytond.i18n import gettext
from trytond.modules.product.uom import uom_conversion_digits
@ -22,7 +21,8 @@ DEPENDSQ.extend(DEPENDS)
class SecondUomMixin(object):
""" two fields for second uom: quantity, rate
"""
quantity_2nd_uom = fields.Numeric(string='Quantity Second UOM',
quantity_2nd_uom = fields.Numeric(
string='Quantity Second UOM',
digits=(16, Eval('quantity2nd_digits', 4)),
states={
'readonly': Or(
@ -32,8 +32,10 @@ class SecondUomMixin(object):
'required': Bool(Eval('quantity2nd')),
'invisible': ~Bool(Eval('quantity2nd')),
}, depends=DEPENDSQ+['quantity2nd_digits', 'quantity2nd'])
factor_2nd_uom = fields.Function(fields.Numeric(string='Conversion factor',
help='Conversion factor between the units of the participating cash books.',
factor_2nd_uom = fields.Function(fields.Numeric(
string='Conversion factor',
help='Conversion factor between the units of the ' +
'participating cash books.',
digits=uom_conversion_digits,
states={
'readonly': Or(
@ -45,15 +47,18 @@ class SecondUomMixin(object):
}, depends=DEPENDSQ+['quantity2nd_digits', 'quantity2nd']),
'on_change_with_factor_2nd_uom', setter='set_factor_2nd_uom')
quantity2nd = fields.Function(fields.Many2One(model_name='product.uom',
quantity2nd = fields.Function(fields.Many2One(
model_name='product.uom',
string="2nd UOM", readonly=True), 'on_change_with_quantity2nd')
quantity2nd_digits = fields.Function(fields.Integer(string='2nd UOM Digits',
readonly=True), 'on_change_with_quantity2nd_digits')
quantity2nd_digits = fields.Function(fields.Integer(
string='2nd UOM Digits', readonly=True),
'on_change_with_quantity2nd_digits')
def quantize_quantity(self, value):
""" quantize for line-quantity
"""
return Decimal(value).quantize(Decimal(Decimal(1) / 10 ** self.quantity_digits))
return Decimal(value).quantize(
Decimal(Decimal(1) / 10 ** self.quantity_digits))
@classmethod
def add_2nd_quantity(cls, values, from_uom):
@ -68,17 +73,18 @@ class SecondUomMixin(object):
quantity_2nd_uom = values.get('quantity_2nd_uom', None)
if (quantity is not None) and (booktransf is not None) and \
(from_uom is not None):
(from_uom is not None):
if quantity_2nd_uom is None:
booktransf = Cashbook(booktransf)
if booktransf.quantity_uom:
if from_uom.id != booktransf.quantity_uom.id:
# deny impossible transfer
if from_uom.category.id != booktransf.quantity_uom.category.id:
if from_uom.category.id != \
booktransf.quantity_uom.category.id:
raise UserError(gettext(
'cashbook_investment.msg_uomcat_mismatch',
cat1 = from_uom.category.rec_name,
cat2 = booktransf.quantity_uom.category.rec_name,
cat1=from_uom.category.rec_name,
cat2=booktransf.quantity_uom.category.rec_name,
))
values['quantity_2nd_uom'] = Decimal(UOM.compute_qty(
@ -87,7 +93,8 @@ class SecondUomMixin(object):
booktransf.quantity_uom,
round=False,
)).quantize(Decimal(
Decimal(1) / 10 ** booktransf.quantity_digits)
Decimal(1) /
10 ** booktransf.quantity_digits)
)
return values
@ -106,7 +113,7 @@ class SecondUomMixin(object):
if line.booktransf is None:
continue
if (line.cashbook.quantity_uom is None) or \
(line.booktransf.quantity_uom is None):
(line.booktransf.quantity_uom is None):
continue
if line.cashbook.quantity_uom.id == line.booktransf.quantity_uom.id:
@ -124,24 +131,27 @@ class SecondUomMixin(object):
if len(to_write) > 0:
Line2.write(*to_write)
@fields.depends('booktransf', '_parent_booktransf.quantity_uom', \
'quantity_uom', 'quantity_digits', 'quantity', \
@fields.depends(
'booktransf', '_parent_booktransf.quantity_uom',
'quantity_uom', 'quantity_digits', 'quantity',
'quantity_2nd_uom', 'factor_2nd_uom')
def on_change_booktransf(self):
""" update quantity_2nd_uom
"""
self.on_change_factor_2nd_uom()
@fields.depends('booktransf', '_parent_booktransf.quantity_uom', \
'quantity_uom', 'quantity_digits', 'quantity', \
@fields.depends(
'booktransf', '_parent_booktransf.quantity_uom',
'quantity_uom', 'quantity_digits', 'quantity',
'quantity_2nd_uom', 'factor_2nd_uom')
def on_change_quantity(self):
""" update quantity_2nd_uom
"""
self.on_change_factor_2nd_uom()
@fields.depends('booktransf', '_parent_booktransf.quantity_uom', \
'quantity_uom', 'quantity_digits', 'quantity', \
@fields.depends(
'booktransf', '_parent_booktransf.quantity_uom',
'quantity_uom', 'quantity_digits', 'quantity',
'quantity_2nd_uom', 'factor_2nd_uom')
def on_change_factor_2nd_uom(self):
""" update quantity_2nd_uom + factor_2nd_uom
@ -153,7 +163,7 @@ class SecondUomMixin(object):
self.factor_2nd_uom = None
return
if (self.booktransf.quantity_uom is None) or \
(self.quantity_uom is None):
(self.quantity_uom is None):
return
if self.factor_2nd_uom is None:
@ -168,8 +178,9 @@ class SecondUomMixin(object):
if self.quantity != Decimal('0.0'):
self.factor_2nd_uom = (
self.quantity_2nd_uom / self.quantity
).quantize(Decimal(Decimal(1) / 10 ** uom_conversion_digits[1]))
else :
).quantize(Decimal(
Decimal(1) / 10 ** uom_conversion_digits[1]))
else:
self.quantity_2nd_uom = self.quantize_quantity(
self.quantity * self.factor_2nd_uom)
@ -188,7 +199,8 @@ class SecondUomMixin(object):
exp = Decimal(Decimal(1) / 10 ** uom_conversion_digits[1])
return (self.quantity_2nd_uom / self.quantity).quantize(exp)
@fields.depends('booktransf', '_parent_booktransf.quantity_uom', 'quantity_uom')
@fields.depends(
'booktransf', '_parent_booktransf.quantity_uom', 'quantity_uom')
def on_change_with_quantity2nd(self, name=None):
""" uom of transfer-target
"""
@ -196,7 +208,7 @@ class SecondUomMixin(object):
if self.quantity_uom:
if self.booktransf.quantity_uom:
if self.quantity_uom.id != \
self.booktransf.quantity_uom.id:
self.booktransf.quantity_uom.id:
return self.booktransf.quantity_uom.id
@fields.depends('booktransf', '_parent_booktransf.quantity_digits')