Enforce the same category of UoM between invoice lines and origin

The origin lines compute the remaining quantity by converting the move quantity
to the origin unit. So they must have the same category of UoM.

issue9142
review285011002
This commit is contained in:
Cédric Krier committed 2020-03-17 23:26:58 +01:00
1 parent 4ad111efb9
commit 983a6282fd
1 file changed
+13
+13
View File
@@ -105,6 +105,19 @@ class Invoice(metaclass=PoolMeta):
class InvoiceLine(metaclass=PoolMeta):
__name__ = 'account.invoice.line'
@fields.depends('origin')
def on_change_with_product_uom_category(self, name=None):
pool = Pool()
PurchaseLine = pool.get('purchase.line')
category = super().on_change_with_product_uom_category(name=name)
# Enforce the same unit category as they are used to compute the
# remaining quantity to invoice and the quantity to receive.
# Use getattr as reference field can have negative id
if (isinstance(self.origin, PurchaseLine)
and getattr(self.origin, 'unit', None)):
category = self.origin.unit.category.id
return category
@property
def origin_name(self):
pool = Pool()