summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Henrotin <whe@odoo.com>2018-12-07 15:04:33 +0000
committerNicolas Martinelli <nim@odoo.com>2018-12-07 16:38:28 +0000
commit33a6649aa4ca557dbab781d94a8b3506959f9bf6 (patch)
tree7d953de6f2093a28e4369f152f10670b7605cf66
parentaed0a828e4c6c1945c09f9701b2e5e5992954924 (diff)
[FIX] purchase_requisition: incorrect field
Before the fix we were requiring for product.supplierinfo.requisition_id which is a non existing field of the model 'product.supplierinfo'. I just change it then to purchase_requisition_id which is the required field. This triggered an error when you add a product selled by the defined vendor for an aggreement type defined as 'Blanket order'. opw-1914712 closes odoo/odoo#29342
-rw-r--r--addons/purchase_requisition/models/purchase_requisition.py2
-rw-r--r--addons/purchase_requisition/tests/test_purchase_requisition.py46
2 files changed, 47 insertions, 1 deletions
diff --git a/addons/purchase_requisition/models/purchase_requisition.py b/addons/purchase_requisition/models/purchase_requisition.py
index 13e2ae20dc6..250b79d5bdc 100644
--- a/addons/purchase_requisition/models/purchase_requisition.py
+++ b/addons/purchase_requisition/models/purchase_requisition.py
@@ -214,7 +214,7 @@ class PurchaseRequisitionLine(models.Model):
('product_id', '=', vals.get('product_id')),
('name', '=', res.requisition_id.vendor_id.id),
])
- if not [s.requisition_id for s in supplier_infos]:
+ if not any([s.purchase_requisition_id for s in supplier_infos]):
res.create_supplier_info()
if vals['price_unit'] <= 0.0:
raise UserError(_('You cannot confirm the blanket order without price.'))
diff --git a/addons/purchase_requisition/tests/test_purchase_requisition.py b/addons/purchase_requisition/tests/test_purchase_requisition.py
index b88a4af5cc9..453fd83bdc6 100644
--- a/addons/purchase_requisition/tests/test_purchase_requisition.py
+++ b/addons/purchase_requisition/tests/test_purchase_requisition.py
@@ -295,3 +295,49 @@ class TestPurchaseRequisition(common.TransactionCase):
])
order_line._onchange_quantity()
self.assertEqual(order_line.price_unit, 50, 'The supplier info chosen should be the one without requisition id')
+
+ def test_06_purchase_requisition(self):
+ """ Create a blanquet order for a product and a vendor already linked via
+ a supplier info"""
+ product = self.env['product.product'].create({
+ 'name': 'test6',
+ })
+ product2 = self.env['product.product'].create({
+ 'name': 'test6',
+ })
+ vendor = self.env['res.partner'].create({
+ 'name': 'vendor6',
+ })
+ supplier_info = self.env['product.supplierinfo'].create({
+ 'product_id': product.id,
+ 'name': vendor.id,
+ })
+
+ # create a empty blanquet order
+ requisition_type = self.env['purchase.requisition.type'].create({
+ 'name': 'Blanket test',
+ 'quantity_copy': 'none'
+ })
+ line1 = (0, 0, {
+ 'product_id': product2.id,
+ 'product_uom_id': product2.uom_po_id.id,
+ 'price_unit': 41,
+ 'product_qty': 10,
+ })
+ requisition_blanket = self.env['purchase.requisition'].create({
+ 'line_ids': [line1],
+ 'type_id': requisition_type.id,
+ 'vendor_id': vendor.id,
+ })
+ requisition_blanket.action_in_progress()
+ self.env['purchase.requisition.line'].create({
+ 'product_id': product.id,
+ 'product_qty': 14.0,
+ 'requisition_id': requisition_blanket.id,
+ 'price_unit': 10,
+ })
+ new_si = self.env['product.supplierinfo'].search([
+ ('product_id', '=', product.id),
+ ('name', '=', vendor.id)
+ ]) - supplier_info
+ self.assertEqual(new_si.purchase_requisition_id, requisition_blanket, 'the blanket order is not linked to the supplier info')