mirror of
https://github.com/bringout/oca-workflow-process.git
synced 2026-04-19 05:12:01 +02:00
88 lines
3.5 KiB
Python
88 lines
3.5 KiB
Python
# Copyright 2022 Tecnativa - Víctor Martínez
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo.tests import Form, common
|
|
from odoo.tests.common import new_test_user
|
|
|
|
from odoo.addons.base.tests.common import DISABLED_MAIL_CONTEXT
|
|
|
|
|
|
class TestProjectStockBase(common.TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.env = cls.env(context=dict(cls.env.context, **DISABLED_MAIL_CONTEXT))
|
|
cls.product_a = cls.env["product.product"].create(
|
|
{"name": "Test product A", "detailed_type": "product", "standard_price": 10}
|
|
)
|
|
cls.product_b = cls.env["product.product"].create(
|
|
{"name": "Test product B", "detailed_type": "product", "standard_price": 20}
|
|
)
|
|
cls.product_c = cls.env["product.product"].create(
|
|
{"name": "Test product C", "detailed_type": "product", "standard_price": 0}
|
|
)
|
|
cls.picking_type = cls.env.ref("project_stock.stock_picking_type_tm_test")
|
|
cls.location = cls.picking_type.default_location_src_id
|
|
cls.location_dest = cls.picking_type.default_location_dest_id
|
|
cls.plan = cls.env["account.analytic.plan"].create(
|
|
{
|
|
"name": "Projects Plan",
|
|
"company_id": False,
|
|
}
|
|
)
|
|
cls.analytic_account = cls.env["account.analytic.account"].create(
|
|
{
|
|
"name": "Test account",
|
|
"plan_id": cls.plan.id,
|
|
},
|
|
)
|
|
cls.analytic_account_2 = cls.analytic_account.copy(
|
|
{
|
|
"name": "Test account 2",
|
|
"plan_id": cls.plan.id,
|
|
}
|
|
)
|
|
cls.project = cls.env.ref("project_stock.project_project_tm_test")
|
|
cls.project.analytic_account_id = cls.analytic_account
|
|
cls.stage_in_progress = cls.env.ref("project.project_stage_1")
|
|
cls.stage_done = cls.env.ref("project.project_stage_2")
|
|
group_stock_user = "stock.group_stock_user"
|
|
cls.basic_user = new_test_user(
|
|
cls.env,
|
|
login="basic-user",
|
|
groups="project.group_project_user,%s" % group_stock_user,
|
|
)
|
|
new_test_user(
|
|
cls.env,
|
|
login="manager-user",
|
|
groups="project.group_project_manager,%s,analytic.group_analytic_accounting"
|
|
% group_stock_user,
|
|
)
|
|
new_test_user(
|
|
cls.env,
|
|
login="project-task-user",
|
|
groups="project.group_project_user,stock.group_stock_user",
|
|
)
|
|
|
|
def _prepare_context_task(self):
|
|
return {
|
|
"default_project_id": self.project.id,
|
|
"default_stage_id": self.stage_in_progress.id,
|
|
# We need to set default values according to compute store fields
|
|
"default_location_id": self.project.location_id.id,
|
|
"default_location_dest_id": self.project.location_dest_id.id,
|
|
"default_picking_type_id": self.project.picking_type_id.id,
|
|
}
|
|
|
|
def _create_task(self, products):
|
|
task_form = Form(
|
|
self.env["project.task"].with_context(**self._prepare_context_task(self))
|
|
)
|
|
task_form.name = "Test task"
|
|
# Save task to use default_get() correctlly in stock.moves
|
|
task_form.save()
|
|
for product in products:
|
|
with task_form.move_ids.new() as move_form:
|
|
move_form.product_id = product[0]
|
|
move_form.product_uom_qty = product[1]
|
|
return task_form.save()
|