Files
manufacture/mrp_workcenter_hierarchical/wizards/switch_workcenter.py

52 lines
1.8 KiB
Python

# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, fields, models
from odoo.exceptions import UserError
class SwitchWorkcenter(models.TransientModel):
_name = "switch.workcenter"
_description = "Switch Workcenter onf workorders"
workcenter_id = fields.Many2one("mrp.workcenter", "Workcenter", required=True)
parent_workcenter_id = fields.Many2one(
"mrp.workcenter", "Parent Workcenter", required=True
)
def default_get(self, fields_list):
res = super().default_get(fields_list)
wos = self.env["mrp.workorder"].browse(self.env.context.get("active_ids", []))
if any([wo.state in ("done", "cancel") for wo in wos]):
raise UserError(
_(
"You can not change the workcenter of an in progress or done "
"operation"
)
)
workcenter = wos.workcenter_id
if len(workcenter) != 1:
raise UserError(
_(
"You can only change the workcenter of workorders belonging to the "
"same workcenter"
)
)
parent_level_1_id = workcenter.parent_level_1_id.id
if not parent_level_1_id:
raise UserError(
_(
"The present workcenter of the workorders does not belong to any "
"group of workcenter. It can't be switched"
)
)
res["parent_workcenter_id"] = workcenter.parent_level_1_id.id
return res
def switch_workcenter(self):
self.ensure_one()
active_ids = self.env.context.get("active_ids", [])
vals = {"workcenter_id": self.workcenter_id.id}
lines = self.env["mrp.workorder"].browse(active_ids)
lines.write(vals)
return True