diff --git a/mrp_warehouse_calendar/__manifest__.py b/mrp_warehouse_calendar/__manifest__.py index 92caaa363..077cd0089 100644 --- a/mrp_warehouse_calendar/__manifest__.py +++ b/mrp_warehouse_calendar/__manifest__.py @@ -4,7 +4,7 @@ { "name": "MRP Warehouse Calendar", "summary": "Considers the warehouse calendars in manufacturing", - "version": "15.0.1.0.1", + "version": "16.0.1.0.0", "license": "LGPL-3", "website": "https://github.com/OCA/manufacture", "author": "ForgeFlow, Odoo Community Association (OCA)", diff --git a/mrp_warehouse_calendar/models/mrp_production.py b/mrp_warehouse_calendar/models/mrp_production.py index b02c8a580..ce56ae1d1 100644 --- a/mrp_warehouse_calendar/models/mrp_production.py +++ b/mrp_warehouse_calendar/models/mrp_production.py @@ -7,24 +7,26 @@ from odoo import api, models class MrpProduction(models.Model): _inherit = "mrp.production" - @api.onchange("date_planned_start", "product_id") - def _onchange_date_planned_start(self): - res = super(MrpProduction, self)._onchange_date_planned_start() - if self.date_planned_start and not self.is_planned: + @api.depends("company_id", "date_planned_start", "is_planned", "product_id") + def _compute_date_planned_finished(self): + res = super(MrpProduction, self)._compute_date_planned_finished() + productions = self.filtered(lambda p: p.date_planned_start and not p.is_planned) + for production in productions: warehouse = self.picking_type_id.warehouse_id if warehouse.calendar_id: - if self.product_id.produce_delay: - self.date_planned_finished = warehouse.calendar_id.plan_days( - +1 * self.product_id.produce_delay + 1, self.date_planned_start + if production.product_id.produce_delay: + production.date_planned_finished = warehouse.calendar_id.plan_days( + +1 * production.product_id.produce_delay + 1, + production.date_planned_start, ) - if self.company_id.manufacturing_lead: - self.date_planned_finished = warehouse.calendar_id.plan_days( - +1 * self.company_id.manufacturing_lead + 1, - self.date_planned_finished, + if production.company_id.manufacturing_lead: + production.date_planned_finished = warehouse.calendar_id.plan_days( + +1 * production.company_id.manufacturing_lead + 1, + production.date_planned_finished, ) - self.move_finished_ids = [ - (1, m.id, {"date": self.date_planned_finished}) - for m in self.move_finished_ids + production.move_finished_ids = [ + (1, m.id, {"date": production.date_planned_finished}) + for m in production.move_finished_ids ] return res diff --git a/mrp_warehouse_calendar/tests/test_mrp_warehouse_calendar.py b/mrp_warehouse_calendar/tests/test_mrp_warehouse_calendar.py index 49ca6c7c7..3e404f565 100644 --- a/mrp_warehouse_calendar/tests/test_mrp_warehouse_calendar.py +++ b/mrp_warehouse_calendar/tests/test_mrp_warehouse_calendar.py @@ -119,11 +119,11 @@ class TestMrpWarehouseCalendar(TransactionCase): "product_qty": 1, "picking_type_id": self.env[ "mrp.production" - ]._get_default_picking_type(), + ]._get_default_picking_type_id(self.company.id), } ) mo.date_planned_start = "2097-01-04 09:00:00" - mo._onchange_date_planned_start() + mo._compute_date_planned_finished() date_plan_finished = fields.Date.to_date(mo.date_planned_finished) monday = fields.Date.to_date("2097-01-07 09:00:00") self.assertEqual(date_plan_finished, monday)