Add validate_fields to ModelStorage

issue11303
review386191002
This commit is contained in:
Cédric Krier
2022-04-11 23:24:21 +02:00
parent 57a4d9c0de
commit acfc66f697
+20 -14
View File
@@ -94,21 +94,27 @@ class SaleSecondaryMixin:
return factor
@classmethod
def validate(cls, records):
super().validate(records)
for record in records:
record.check_sale_secondary_uom_factor_and_rate()
def validate_fields(cls, records, field_names):
super().validate_fields(records, field_names)
cls.check_sale_secondary_uom_factor_and_rate(records, field_names)
def check_sale_secondary_uom_factor_and_rate(self):
factor = self.sale_secondary_uom_factor
rate = self.sale_secondary_uom_rate
if factor and rate:
if ((rate != round(1. / factor, uom_conversion_digits[1]))
and factor != round(1. / rate, uom_conversion_digits[1])):
raise UOMValidationError(
gettext('sale_secondary_unit'
'.msg_sale_secondary_uom_incompatible_factor_rate',
record=self))
@classmethod
def check_sale_secondary_uom_factor_and_rate(
cls, records, field_names=None):
if field_names and not (field_names & {
'sale_secondary_uom_factor', 'sale_secondary_uom_rate'}):
return
for record in records:
factor = record.sale_secondary_uom_factor
rate = record.sale_secondary_uom_rate
if factor and rate:
new_rate = round(1. / factor, uom_conversion_digits[1])
new_factor = round(1. / rate, uom_conversion_digits[1])
if rate != new_rate and factor != new_factor:
raise UOMValidationError(
gettext('sale_secondary_unit'
'.msg_sale_secondary_uom_incompatible_factor_rate',
record=record.rec_name))
class Template(SaleSecondaryMixin, metaclass=PoolMeta):