Files
manufacture/mrp_workcenter_cost/models/mrp_production.py
2023-05-17 10:41:17 +02:00

29 lines
1.2 KiB
Python

# Copyright 2023 Camptocamp SA (https://www.camptocamp.com).
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models
class MrpProduction(models.Model):
_inherit = "mrp.production"
def _cal_price(self, consumed_moves):
# OVERRIDE to use the theoretical duration of the workcenter
# This will overwrite the real duration of the workcenter, but that's ok for now
should_overwrite_duration = (
self.product_id.mrp_workcenter_cost == "theoretical"
and not any(t.cost_already_recorded for t in self.workorder_ids.time_ids)
)
duration_by_workorder = {}
if should_overwrite_duration:
workorders = self.workorder_ids.filtered("duration_expected")
for workorder in workorders:
duration_by_workorder[workorder.id] = workorder.duration
workorder.duration = workorder.duration_expected
res = super()._cal_price(consumed_moves)
# Restore the durations set by users
if should_overwrite_duration:
for workorder in workorders:
workorder.duration = duration_by_workorder[workorder.id]
return res