mirror of
https://github.com/OCA/manufacture.git
synced 2025-01-28 16:37:15 +02:00
52 lines
1.8 KiB
Python
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
|