diff options
| author | Lois Rilo <lois.rilo@forgeflow.com> | 2020-02-24 16:00:46 +0000 |
|---|---|---|
| committer | Simon Lejeune <sle@openerp.com> | 2020-03-02 19:34:15 +0000 |
| commit | 0e11d7383c262ffcd6ad45ddbfea6ddd8bf70e8f (patch) | |
| tree | d9f8ca3dbd71173e8e3c8f75f30c06f3c62b33f3 /addons/purchase_stock/tests | |
| parent | 32c81cc1952f3bf1f95ab58b20f589bed24db257 (diff) | |
[IMP] purchase_stock: enhance extensibility of _run_buy method by
allowing to force the vendor to be used in the procurement batch.
This does not change any default behavior.
closes odoo/odoo#46678
X-original-commit: 8bff35182c38522bbd6fc218956fe0f8fe99eca4
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
Diffstat (limited to 'addons/purchase_stock/tests')
| -rw-r--r-- | addons/purchase_stock/tests/test_reordering_rule.py | 88 |
1 files changed, 86 insertions, 2 deletions
diff --git a/addons/purchase_stock/tests/test_reordering_rule.py b/addons/purchase_stock/tests/test_reordering_rule.py index d5ceda8fe47..374c58ab8f9 100644 --- a/addons/purchase_stock/tests/test_reordering_rule.py +++ b/addons/purchase_stock/tests/test_reordering_rule.py @@ -1,11 +1,14 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo.tests.common import SavepointCase +from datetime import datetime as dt +from datetime import timedelta as td + from odoo.tests import Form +from odoo.tests.common import SavepointCase -class TestReorderingRule(SavepointCase): +class TestReorderingRule(SavepointCase): @classmethod def setUpClass(cls): super(TestReorderingRule, cls).setUpClass() @@ -153,3 +156,84 @@ class TestReorderingRule(SavepointCase): self.assertEqual(purchase_order.picking_ids.move_lines[-1].product_qty, 5) self.assertEqual(purchase_order.picking_ids.move_lines[-1].location_dest_id, warehouse_1.lot_stock_id) + + def test_procure_not_default_partner(self): + """Define a product with 2 vendors. First run a "standard" procurement, + default vendor should be used. Then, call a procurement with + `partner_id` specified in values, the specified vendor should be + used.""" + purchase_route = self.env.ref("purchase_stock.route_warehouse0_buy") + uom_unit = self.env.ref("uom.product_uom_unit") + warehouse = self.env['stock.warehouse'].search( + [('company_id', '=', self.env.company.id)], limit=1) + product = self.env["product.product"].create({ + "name": "product TEST", + "standard_price": 100.0, + "type": "product", + "uom_id": uom_unit.id, + "default_code": "A", + "route_ids": [(6, 0, purchase_route.ids)], + }) + default_vendor = self.env["res.partner"].create({ + "name": "Supplier A", + }) + secondary_vendor = self.env["res.partner"].create({ + "name": "Supplier B", + }) + self.env["product.supplierinfo"].create({ + "name": default_vendor.id, + "product_tmpl_id": product.product_tmpl_id.id, + "delay": 7, + }) + self.env["product.supplierinfo"].create({ + "name": secondary_vendor.id, + "product_tmpl_id": product.product_tmpl_id.id, + "delay": 10, + }) + + # Test standard procurement. + po_line = self.env["purchase.order.line"].search( + [("product_id", "=", product.id)]) + self.assertFalse(po_line) + self.env["procurement.group"].run( + [self.env["procurement.group"].Procurement( + product, 100, uom_unit, + warehouse.lot_stock_id, "Test default vendor", "/", + self.env.company, + { + "warehouse_id": warehouse, + "date_planned": dt.today() + td(days=15), + "rule_id": warehouse.buy_pull_id, + "group_id": False, + "route_ids": [], + } + )]) + po_line = self.env["purchase.order.line"].search( + [("product_id", "=", product.id)]) + self.assertTrue(po_line) + self.assertEqual(po_line.partner_id, default_vendor) + po_line.order_id.button_cancel() + po_line.order_id.unlink() + + # now force the vendor: + po_line = self.env["purchase.order.line"].search( + [("product_id", "=", product.id)]) + self.assertFalse(po_line) + self.env["procurement.group"].run( + [self.env["procurement.group"].Procurement( + product, 100, uom_unit, + warehouse.lot_stock_id, "Test default vendor", "/", + self.env.company, + { + "warehouse_id": warehouse, + "date_planned": dt.today() + td(days=15), + "rule_id": warehouse.buy_pull_id, + "group_id": False, + "route_ids": [], + "supplier_id": secondary_vendor, + } + )]) + po_line = self.env["purchase.order.line"].search( + [("product_id", "=", product.id)]) + self.assertTrue(po_line) + self.assertEqual(po_line.partner_id, secondary_vendor) |
