mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
130 lines
4.7 KiB
Python
130 lines
4.7 KiB
Python
# Copyright 2017-2020 ForgeFlow S.L. (https://www.forgeflow.com)
|
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).
|
|
|
|
from odoo import fields
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
from ..hooks import uninstall_hook
|
|
|
|
|
|
class TestStockRequestSubmit(TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
|
|
# Model
|
|
cls.StockRequest = cls.env["stock.request"]
|
|
cls.StockRequestOrder = cls.env["stock.request.order"]
|
|
cls.StockLocation = cls.env["stock.location"]
|
|
cls.StockLocationRoute = cls.env["stock.location.route"]
|
|
cls.StockRule = cls.env["stock.rule"]
|
|
cls.ProductProduct = cls.env["product.product"]
|
|
cls.ResUsers = cls.env["res.users"]
|
|
|
|
# Data
|
|
cls.expected_date = fields.Datetime.now()
|
|
cls.main_company = cls.env.ref("base.main_company")
|
|
cls.warehouse = cls.env.ref("stock.warehouse0")
|
|
cls.stock_request_user_group = cls.env.ref(
|
|
"stock_request.group_stock_request_user"
|
|
)
|
|
cls.stock_request_manager_group = cls.env.ref(
|
|
"stock_request.group_stock_request_manager"
|
|
)
|
|
cls.ressuply_loc = cls.StockLocation.create(
|
|
{
|
|
"name": "Ressuply",
|
|
"location_id": cls.warehouse.view_location_id.id,
|
|
"usage": "internal",
|
|
"company_id": cls.main_company.id,
|
|
}
|
|
)
|
|
cls.route = cls.StockLocationRoute.create(
|
|
{
|
|
"name": "Transfer",
|
|
"product_categ_selectable": False,
|
|
"product_selectable": True,
|
|
"company_id": cls.main_company.id,
|
|
"sequence": 10,
|
|
}
|
|
)
|
|
cls.rule = cls.StockRule.create(
|
|
{
|
|
"name": "Transfer",
|
|
"route_id": cls.route.id,
|
|
"location_src_id": cls.ressuply_loc.id,
|
|
"location_id": cls.warehouse.lot_stock_id.id,
|
|
"action": "pull",
|
|
"picking_type_id": cls.warehouse.int_type_id.id,
|
|
"procure_method": "make_to_stock",
|
|
"warehouse_id": cls.warehouse.id,
|
|
"company_id": cls.main_company.id,
|
|
}
|
|
)
|
|
cls.product = cls.ProductProduct.create(
|
|
{
|
|
"name": "test product",
|
|
"type": "product",
|
|
"route_ids": [(6, 0, cls.route.ids)],
|
|
}
|
|
)
|
|
cls.stock_request_user = cls.ResUsers.create(
|
|
{
|
|
"name": "Stock Request User",
|
|
"login": "stock_request_user",
|
|
"groups_id": [(6, 0, [cls.stock_request_user_group.id])],
|
|
}
|
|
)
|
|
cls.stock_request_manager = cls.ResUsers.create(
|
|
{
|
|
"name": "Stock Request Manager",
|
|
"login": "stock_request_manager",
|
|
"groups_id": [(6, 0, [cls.stock_request_manager_group.id])],
|
|
}
|
|
)
|
|
|
|
vals = {
|
|
"company_id": cls.main_company.id,
|
|
"warehouse_id": cls.warehouse.id,
|
|
"location_id": cls.warehouse.lot_stock_id.id,
|
|
"expected_date": cls.expected_date,
|
|
"stock_request_ids": [
|
|
(
|
|
0,
|
|
0,
|
|
{
|
|
"product_id": cls.product.id,
|
|
"product_uom_id": cls.product.uom_id.id,
|
|
"product_uom_qty": 5.0,
|
|
"company_id": cls.main_company.id,
|
|
"warehouse_id": cls.warehouse.id,
|
|
"location_id": cls.warehouse.lot_stock_id.id,
|
|
"expected_date": cls.expected_date,
|
|
},
|
|
)
|
|
],
|
|
}
|
|
cls.order = cls.StockRequestOrder.with_user(cls.stock_request_user).create(vals)
|
|
cls.stock_request = cls.order.stock_request_ids
|
|
|
|
def test_stock_request_submit(self):
|
|
self.order.action_submit()
|
|
self.assertEqual(self.order.state, "submitted")
|
|
self.assertEqual(self.stock_request.state, "submitted")
|
|
self.order.with_user(self.stock_request_manager).action_confirm()
|
|
self.assertEqual(self.order.state, "open")
|
|
self.assertEqual(self.stock_request.state, "open")
|
|
|
|
def test_uninstall_hook(self):
|
|
# Check state before uninstall
|
|
self.order.action_submit()
|
|
self.assertEqual(self.order.state, "submitted")
|
|
self.assertEqual(self.stock_request.state, "submitted")
|
|
|
|
# Uninstall this module
|
|
uninstall_hook(self.cr, self.registry)
|
|
|
|
# Check state after uninstall
|
|
self.assertEqual(self.order.state, "draft")
|
|
self.assertEqual(self.stock_request.state, "draft")
|