Merge PR #1710 into 14.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2023-05-19 22:43:52 +00:00
2 changed files with 48 additions and 33 deletions

View File

@@ -1,4 +1,5 @@
# Copyright 2017-20 ForgeFlow S.L. (https://www.forgeflow.com)
# Copyright 2023 Tecnativa - Víctor Martínez
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import _, api, fields, models
@@ -38,6 +39,14 @@ class StockRequest(models.Model):
)
)
def action_cancel(self):
"""Propagate the cancellation to the generated purchase orders."""
res = super().action_cancel()
self.sudo().purchase_ids.filtered(
lambda x: x.state not in ("purchase", "done", "cancel")
).button_cancel()
return res
def action_view_purchase(self):
action = self.env["ir.actions.act_window"]._for_xml_id("purchase.purchase_rfq")

View File

@@ -1,24 +1,27 @@
# Copyright 2016-20 ForgeFlow S.L. (https://www.forgeflow.com)
# Copyright 2023 Tecnativa - Víctor Martínez
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl-3.0).
from odoo import fields
from odoo.tests import common
from odoo.tests import common, new_test_user
class TestStockRequestPurchase(common.TransactionCase):
def setUp(self):
super(TestStockRequestPurchase, self).setUp()
super().setUp()
self.env = self.env(
context=dict(
self.env.context,
mail_create_nolog=True,
mail_create_nosubscribe=True,
mail_notrack=True,
no_reset_password=True,
)
)
# common models
self.stock_request = self.env["stock.request"]
# refs
self.stock_request_user_group = self.env.ref(
"stock_request.group_stock_request_user"
)
self.stock_request_manager_group = self.env.ref(
"stock_request.group_stock_request_manager"
)
self.main_company = self.env.ref("base.main_company")
self.warehouse = self.env.ref("stock.warehouse0")
self.categ_unit = self.env.ref("uom.product_uom_categ_unit")
@@ -28,15 +31,17 @@ class TestStockRequestPurchase(common.TransactionCase):
self.wh2 = self.env["stock.warehouse"].search(
[("company_id", "=", self.company_2.id)], limit=1
)
self.stock_request_user = self._create_user(
"stock_request_user",
[self.stock_request_user_group.id],
[self.main_company.id, self.company_2.id],
self.stock_request_user = new_test_user(
self.env,
login="stock_request_user",
groups="stock_request.group_stock_request_user",
company_ids=[(6, 0, [self.main_company.id, self.company_2.id])],
)
self.stock_request_manager = self._create_user(
"stock_request_manager",
[self.stock_request_manager_group.id],
[self.main_company.id, self.company_2.id],
self.stock_request_manager = new_test_user(
self.env,
login="stock_request_manager",
groups="stock_request.group_stock_request_manager",
company_ids=[(6, 0, [self.main_company.id, self.company_2.id])],
)
self.route_buy = self.warehouse.buy_pull_id.route_id
self.supplier = self.env["res.partner"].create({"name": "Supplier"})
@@ -52,22 +57,6 @@ class TestStockRequestPurchase(common.TransactionCase):
}
)
def _create_user(self, name, group_ids, company_ids):
return (
self.env["res.users"]
.with_context({"no_reset_password": True})
.create(
{
"name": name,
"password": "demo",
"login": name,
"email": str(name) + "@test.com",
"groups_id": [(6, 0, group_ids)],
"company_ids": [(6, 0, company_ids)],
}
)
)
def _create_product(self, default_code, name, company_id):
return self.env["product.product"].create(
{
@@ -212,6 +201,23 @@ class TestStockRequestPurchase(common.TransactionCase):
self.assertEqual(stock_request_2.qty_in_progress, 0.0)
self.assertEqual(stock_request_2.qty_done, stock_request_2.product_uom_qty)
def test_create_request_cancel_purchase(self):
vals = {
"product_id": self.product.id,
"product_uom_id": self.product.uom_id.id,
"product_uom_qty": 5.0,
"company_id": self.main_company.id,
"warehouse_id": self.warehouse.id,
"location_id": self.warehouse.lot_stock_id.id,
}
stock_request = self.stock_request.with_user(self.stock_request_user).create(
vals
)
stock_request.action_confirm()
self.assertEqual(stock_request.purchase_ids.state, "draft")
stock_request.action_cancel()
self.assertEqual(stock_request.purchase_ids.state, "cancel")
def test_view_actions(self):
expected_date = fields.Datetime.now()
vals = {