diff --git a/addons/event_sale/models/sale_order.py b/addons/event_sale/models/sale_order.py
index 47f91ce8ac9..b3b79a3899c 100644
--- a/addons/event_sale/models/sale_order.py
+++ b/addons/event_sale/models/sale_order.py
@@ -65,6 +65,12 @@ class SaleOrderLine(models.Model):
help="Choose an event ticket and it will automatically create a registration for this event ticket.")
event_ok = fields.Boolean(related='product_id.event_ok', readonly=True)
+ @api.depends('state', 'event_id')
+ def _compute_product_uom_readonly(self):
+ event_lines = self.filtered(lambda line: line.event_id)
+ event_lines.update({'product_uom_readonly': True})
+ super(SaleOrderLine, self - event_lines)._compute_product_uom_readonly()
+
def _update_registrations(self, confirm=True, cancel_to_draft=False, registration_data=None, mark_as_paid=False):
""" Create or update registrations linked to a sales order line. A sale
order line has a product_uom_qty attribute that will be the number of
diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py
index df7160a46f5..15fe235d7da 100644
--- a/addons/sale/models/sale.py
+++ b/addons/sale/models/sale.py
@@ -1231,6 +1231,7 @@ class SaleOrderLine(models.Model):
product_uom_qty = fields.Float(string='Quantity', digits='Product Unit of Measure', required=True, default=1.0)
product_uom = fields.Many2one('uom.uom', string='Unit of Measure', domain="[('category_id', '=', product_uom_category_id)]")
product_uom_category_id = fields.Many2one(related='product_id.uom_id.category_id', readonly=True)
+ product_uom_readonly = fields.Boolean(compute='_compute_product_uom_readonly')
product_custom_attribute_value_ids = fields.One2many('product.attribute.custom.value', 'sale_order_line_id', string="Custom Values")
# M2M holding the values of product.attribute with create_variant field set to 'no_variant'
@@ -1282,6 +1283,11 @@ class SaleOrderLine(models.Model):
('line_section', "Section"),
('line_note', "Note")], default=False, help="Technical field for UX purpose.")
+ @api.depends('state')
+ def _compute_product_uom_readonly(self):
+ for line in self:
+ line.product_uom_readonly = line.state in ['sale', 'done', 'cancel']
+
@api.depends('state', 'is_expense')
def _compute_qty_delivered_method(self):
""" Sale module compute delivered qty for product [('type', 'in', ['consu']), ('service_type', '=', 'manual')]
diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml
index ddf837f97d6..124474d91a7 100644
--- a/addons/sale/views/sale_views.xml
+++ b/addons/sale/views/sale_views.xml
@@ -372,6 +372,7 @@