Odoo18-Base/addons/sale_stock/tests/test_sale_stock_multi_warehouse.py
2025-01-06 10:57:38 +07:00

63 lines
2.7 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.stock_account.tests.test_anglo_saxon_valuation_reconciliation_common import ValuationReconciliationTestCommon
from odoo.addons.sale_stock.tests.common import TestSaleStockCommon
from odoo.tests import tagged
@tagged('post_install', '-at_install')
class TestSaleStockMultiWarehouse(TestSaleStockCommon, ValuationReconciliationTestCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.product_a.is_storable = True
cls.warehouse_A = cls.company_data['default_warehouse']
cls.env['stock.quant']._update_available_quantity(cls.product_a, cls.warehouse_A.lot_stock_id, 10)
cls.warehouse_B = cls.env['stock.warehouse'].create({
'name': 'WH B',
'code': 'WHB',
'company_id': cls.env.company.id,
'partner_id': cls.env.company.partner_id.id,
})
cls.env['stock.quant']._update_available_quantity(cls.product_a, cls.warehouse_B.lot_stock_id, 10)
cls.env.user.groups_id |= cls.env.ref('stock.group_stock_user')
cls.env.user.groups_id |= cls.env.ref('stock.group_stock_multi_locations')
cls.env.user.groups_id |= cls.env.ref('sales_team.group_sale_salesman')
def test_multiple_warehouses_generate_multiple_pickings(self):
so = self.env['sale.order'].create({
'partner_id': self.partner_a.id,
'warehouse_id': self.warehouse_A.id,
'order_line': [
(0, 0, {
'name': self.product_a.name,
'product_id': self.product_a.id,
'product_uom_qty': 9,
'product_uom': self.product_a.uom_id.id,
'price_unit': 1,
'route_id': self.warehouse_A.delivery_route_id.id,
}),
(0, 0, {
'name': self.product_a.name,
'product_id': self.product_a.id,
'product_uom_qty': 10,
'product_uom': self.product_a.uom_id.id,
'price_unit': 1,
'route_id': self.warehouse_B.delivery_route_id.id,
}),
],
})
so.action_confirm()
# 2 pickings: 1 per warehouse
self.assertEqual(len(so.picking_ids), 2)
# single move per picking
self.assertEqual(len(so.picking_ids[0].move_ids), 1)
self.assertEqual(len(so.picking_ids[1].move_ids), 1)
# pickings comes from the right warehouse
self.assertEqual(so.picking_ids[0].move_ids[0].location_id.warehouse_id, self.warehouse_A)
self.assertEqual(so.picking_ids[1].move_ids[0].location_id.warehouse_id, self.warehouse_B)