Files
stock-logistics-warehouse/stock_move_common_dest/tests/test_move_common_dest.py
2021-01-06 14:39:01 +01:00

157 lines
5.8 KiB
Python

# Copyright 2020 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
from odoo.tests import SavepointCase
class TestCommonMoveDest(SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
cls.partner_delta = cls.env.ref("base.res_partner_4")
cls.warehouse = cls.env.ref("stock.warehouse0")
cls.warehouse.write({"delivery_steps": "pick_pack_ship"})
cls.customers_location = cls.env.ref("stock.stock_location_customers")
cls.output_location = cls.env.ref("stock.stock_location_output")
cls.packing_location = cls.env.ref("stock.location_pack_zone")
cls.stock_shelf_location = cls.env.ref("stock.stock_location_components")
cls.stock_shelf_2_location = cls.env.ref("stock.stock_location_14")
cls.out_type = cls.warehouse.out_type_id
cls.pack_type = cls.warehouse.pack_type_id
cls.pick_type = cls.warehouse.pick_type_id
cls.product_1 = cls.env["product.product"].create(
{"name": "Product 1", "type": "product"}
)
cls.product_2 = cls.env["product.product"].create(
{"name": "Product 2", "type": "product"}
)
cls.procurement_group_1 = cls.env["procurement.group"].create(
{"name": "Test 1"}
)
def _init_inventory(self):
# Product 1 on shelf 1
# Product 2 on shelf 2
inventory = self.env["stock.inventory"].create({"name": "Test init"})
inventory.action_start()
product_location_list = [
(self.product_1, self.stock_shelf_location),
(self.product_2, self.stock_shelf_2_location),
]
lines_vals = list()
for product, location in product_location_list:
lines_vals.append(
(
0,
0,
{
"product_id": product.id,
"product_uom_id": product.uom_id.id,
"product_qty": 10.0,
"location_id": location.id,
},
)
)
inventory.write({"line_ids": lines_vals})
inventory.action_validate()
def _create_pickings(self):
# Create delivery order
ship_order = self.env["stock.picking"].create(
{
"partner_id": self.partner_delta.id,
"location_id": self.output_location.id,
"location_dest_id": self.customers_location.id,
"picking_type_id": self.out_type.id,
}
)
pack_order = self.env["stock.picking"].create(
{
"partner_id": self.partner_delta.id,
"location_id": self.packing_location.id,
"location_dest_id": self.output_location.id,
"picking_type_id": self.pack_type.id,
}
)
pick_order = self.env["stock.picking"].create(
{
"partner_id": self.partner_delta.id,
"location_id": self.stock_shelf_location.id,
"location_dest_id": self.packing_location.id,
"picking_type_id": self.pick_type.id,
}
)
pick_order_2 = self.env["stock.picking"].create(
{
"partner_id": self.partner_delta.id,
"location_id": self.stock_shelf_2_location.id,
"location_dest_id": self.packing_location.id,
"picking_type_id": self.pick_type.id,
}
)
return ship_order, pack_order, pick_order, pick_order_2
def _create_move(
self,
picking,
product,
state="waiting",
procure_method="make_to_order",
move_dest=None,
):
move_vals = {
"name": product.name,
"product_id": product.id,
"product_uom_qty": 2.0,
"product_uom": product.uom_id.id,
"picking_id": picking.id,
"location_id": picking.location_id.id,
"location_dest_id": picking.location_dest_id.id,
"state": state,
"procure_method": procure_method,
"group_id": self.procurement_group_1.id,
}
if move_dest:
move_vals["move_dest_ids"] = [(4, move_dest.id, False)]
return self.env["stock.move"].create(move_vals)
def test_packing_sub_location(self):
self._init_inventory()
(
ship_order_1,
pack_order_1,
pick_order_1a,
pick_order_1b,
) = self._create_pickings()
ship_move_1a = self._create_move(ship_order_1, self.product_1)
pack_move_1a = self._create_move(
pack_order_1, self.product_1, move_dest=ship_move_1a
)
pick_move_1a = self._create_move(
pick_order_1a,
self.product_1,
state="confirmed",
procure_method="make_to_stock",
move_dest=pack_move_1a,
)
ship_move_1b = self._create_move(ship_order_1, self.product_2)
pack_move_1b = self._create_move(
pack_order_1, self.product_2, move_dest=ship_move_1b
)
pick_move_1b = self._create_move(
pick_order_1b,
self.product_2,
state="confirmed",
procure_method="make_to_stock",
move_dest=pack_move_1b,
)
self.assertEqual(pick_move_1a.common_dest_move_ids, pick_move_1b)
self.assertEqual(pick_move_1b.common_dest_move_ids, pick_move_1a)
self.assertEqual(pack_move_1a.common_dest_move_ids, pack_move_1b)
self.assertEqual(pack_move_1b.common_dest_move_ids, pack_move_1a)
self.assertFalse(ship_move_1a.common_dest_move_ids)
self.assertFalse(ship_move_1b.common_dest_move_ids)