diff options
| author | William Henrotin <whe@odoo.com> | 2018-12-07 15:04:33 +0000 |
|---|---|---|
| committer | Nicolas Martinelli <nim@odoo.com> | 2018-12-07 16:38:28 +0000 |
| commit | 33a6649aa4ca557dbab781d94a8b3506959f9bf6 (patch) | |
| tree | 7d953de6f2093a28e4369f152f10670b7605cf66 | |
| parent | aed0a828e4c6c1945c09f9701b2e5e5992954924 (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.py | 2 | ||||
| -rw-r--r-- | addons/purchase_requisition/tests/test_purchase_requisition.py | 46 |
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') |
