summaryrefslogtreecommitdiff
path: root/addons/stock_dropshipping/tests/test_crossdock.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/stock_dropshipping/tests/test_crossdock.py')
-rw-r--r--addons/stock_dropshipping/tests/test_crossdock.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/addons/stock_dropshipping/tests/test_crossdock.py b/addons/stock_dropshipping/tests/test_crossdock.py
new file mode 100644
index 00000000..2d13a7c7
--- /dev/null
+++ b/addons/stock_dropshipping/tests/test_crossdock.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.tests import common, Form
+from odoo.tools import mute_logger
+
+
+class TestCrossdock(common.TransactionCase):
+
+ def test_00_crossdock(self):
+
+ # Create a supplier
+ supplier_crossdock = self.env['res.partner'].create({'name': "Crossdocking supplier"})
+
+ # I first create a warehouse with pick-pack-ship and reception in 2 steps
+ wh_pps = self.env['stock.warehouse'].create({
+ 'name': 'WareHouse PickPackShip',
+ 'code': 'whpps',
+ 'reception_steps': 'two_steps',
+ 'delivery_steps': 'pick_pack_ship',
+ })
+
+ # Check that cross-dock route is active
+ self.assertTrue(wh_pps.crossdock_route_id.active,
+ "Crossdock route should be active when reception_steps is not in 'single_step'")
+
+ p_f = Form(self.env['product.template'])
+ p_f.name = 'PCE'
+ p_f.type = 'product'
+ p_f.categ_id = self.env.ref('product.product_category_1')
+ p_f.list_price = 100.0
+ with p_f.seller_ids.new() as seller:
+ seller.name = supplier_crossdock
+ p_f.route_ids.add(wh_pps.crossdock_route_id)
+ cross_shop_product = p_f.save()
+
+ p_f.standard_price = 70.0
+
+ # Create a sales order with a line of 100 PCE incoming shipment with route_id crossdock shipping
+ so_form = Form(self.env['sale.order'])
+ so_form.partner_id = self.env['res.partner'].create({'name': 'My Test Partner'})
+ so_form.warehouse_id = wh_pps
+
+ with mute_logger('odoo.tests.common.onchange'):
+ # otherwise complains that there's not enough inventory and
+ # apparently that's normal according to @jco and @sle
+ with so_form.order_line.new() as line:
+ line.product_id = cross_shop_product.product_variant_ids
+ line.product_uom_qty = 100.0
+ sale_order_crossdock = so_form.save()
+
+ # Confirm sales order
+ sale_order_crossdock.action_confirm()
+
+ # Run the scheduler
+ self.env['procurement.group'].run_scheduler()
+
+ # Check a quotation was created for the created supplier and confirm it
+ po = self.env['purchase.order'].search([
+ ('partner_id', '=', supplier_crossdock.id),
+ ('state', '=', 'draft')
+ ])
+ self.assertTrue(po, "an RFQ should have been created by the scheduler")
+ po.button_confirm()