diff --git a/addons/purchase_requisition/models/purchase_requisition.py b/addons/purchase_requisition/models/purchase_requisition.py
index 1d8b9383648..b158bdcb854 100644
--- a/addons/purchase_requisition/models/purchase_requisition.py
+++ b/addons/purchase_requisition/models/purchase_requisition.py
@@ -168,7 +168,10 @@ class PurchaseRequisitionLine(models.Model):
_rec_name = 'product_id'
product_id = fields.Many2one('product.product', string='Product', domain=[('purchase_ok', '=', True)], required=True)
- product_uom_id = fields.Many2one('uom.uom', string='Product Unit of Measure', domain="[('category_id', '=', product_uom_category_id)]")
+ product_uom_id = fields.Many2one(
+ 'uom.uom', 'Product Unit of Measure',
+ compute='_compute_product_uom_id', store=True, readonly=False, precompute=True,
+ domain="[('category_id', '=', product_uom_category_id)]")
product_uom_category_id = fields.Many2one(related='product_id.uom_id.category_id')
product_qty = fields.Float(string='Quantity', digits='Product Unit of Measure')
product_description_variants = fields.Char('Custom Description')
@@ -240,6 +243,11 @@ class PurchaseRequisitionLine(models.Model):
else:
line.qty_ordered = 0
+ @api.depends('product_id')
+ def _compute_product_uom_id(self):
+ for line in self:
+ line.product_uom_id = line.product_id.uom_id
+
@api.onchange('product_id')
def _onchange_product_id(self):
if self.product_id:
diff --git a/addons/purchase_requisition/tests/test_purchase_requisition.py b/addons/purchase_requisition/tests/test_purchase_requisition.py
index 7ae68d4ade1..f6bb9354436 100644
--- a/addons/purchase_requisition/tests/test_purchase_requisition.py
+++ b/addons/purchase_requisition/tests/test_purchase_requisition.py
@@ -71,6 +71,30 @@ class TestPurchaseRequisition(TestPurchaseRequisitionCommon):
self.assertFalse(self.env['product.supplierinfo'].search([('id', '=', supplierinfo09.id)]), 'The supplier info should be removed')
self.assertFalse(self.env['product.supplierinfo'].search([('id', '=', supplierinfo13.id)]), 'The supplier info should be removed')
+ def test_03_blanket_order_rfq(self):
+ """ Create a blanket order + an RFQ for it """
+ requisition_type = self.env['purchase.requisition.type'].create({
+ 'name': 'Blanket test',
+ 'quantity_copy': 'none'
+ })
+
+ bo_form = Form(self.env['purchase.requisition'])
+ bo_form.vendor_id = self.res_partner_1
+ bo_form.type_id = requisition_type
+ with bo_form.line_ids.new() as line:
+ line.product_id = self.product_09
+ line.product_qty = 5.0
+ line.price_unit = 21
+ bo = bo_form.save()
+ bo.action_in_progress()
+
+ # lazy reproduction of clicking on "New Quotation" act_window button
+ po_form = Form(self.env['purchase.order'].with_context({"default_requisition_id": bo.id, "default_user_id": False}))
+ po = po_form.save()
+ po.button_confirm()
+ self.assertEqual(po.order_line.price_unit, bo.line_ids.price_unit, 'The blanket order unit price should have been copied to purchase order')
+ self.assertEqual(po.partner_id, bo.vendor_id, 'The blanket order vendor should have been copied to purchase order')
+
def test_06_purchase_requisition(self):
""" Create a blanket order for a product and a vendor already linked via
a supplier info"""
diff --git a/addons/purchase_requisition/views/purchase_requisition_views.xml b/addons/purchase_requisition/views/purchase_requisition_views.xml
index 9629be5aff4..124ba3e7c78 100644
--- a/addons/purchase_requisition/views/purchase_requisition_views.xml
+++ b/addons/purchase_requisition/views/purchase_requisition_views.xml
@@ -174,7 +174,7 @@
-
+