Add validate_fields to ModelStorage
issue11303 review386191002
This commit is contained in:
+20
-14
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user