From 929c7f4f828e190fb2ce858f12c5d7059efb4992 Mon Sep 17 00:00:00 2001 From: Cybrosys Technologies Date: Wed, 9 Jul 2025 14:39:57 +0530 Subject: [PATCH] July 09: [FIX] Bug Fixed 'manufacturing_timesheet' --- manufacturing_timesheet/doc/RELEASE_NOTES.md | 7 +- .../models/mrp_workorder.py | 145 +++++++++--------- 2 files changed, 81 insertions(+), 71 deletions(-) diff --git a/manufacturing_timesheet/doc/RELEASE_NOTES.md b/manufacturing_timesheet/doc/RELEASE_NOTES.md index f6d8f8a91..30565e5c3 100644 --- a/manufacturing_timesheet/doc/RELEASE_NOTES.md +++ b/manufacturing_timesheet/doc/RELEASE_NOTES.md @@ -8,4 +8,9 @@ #### 04.07.2025 #### Version 18.0.1.0.1 #### FIX -- Fixed the singleton error that occurred when clicking the 'Produce All' button. \ No newline at end of file +- Fixed the singleton error that occurred when clicking the 'Produce All' button. + +#### 08.07.2025 +#### Version 18.0.1.0.1 +#### FIX +- Fixed the singleton error that occurred when clicking the 'start and pause' button. \ No newline at end of file diff --git a/manufacturing_timesheet/models/mrp_workorder.py b/manufacturing_timesheet/models/mrp_workorder.py index 83e507ea7..fed9b21fa 100644 --- a/manufacturing_timesheet/models/mrp_workorder.py +++ b/manufacturing_timesheet/models/mrp_workorder.py @@ -51,63 +51,66 @@ class MrpWorkorder(models.Model): Boolean: Returns true """ res = super(MrpWorkorder, self).button_start() - project = self.env['project.project'].search( - [('name', '=', ("MO: {}".format(self.production_id.name)))]) - if project: - task_id = project.task_ids.search([('name', '=', ( - "{} in {} for {} on {}".format(self.name, - self.workcenter_id.name, - self.product_id.display_name, - str(self.date_start))))]) - if not task_id: - task_id = self.env['project.task'].create({ - 'name': ("{} in {} for {} on {}".format(self.name, - self.workcenter_id.name, - self.product_id.display_name, - str(self.date_start))), - 'project_id': project.id, - 'date_assign': self.date_start, - 'date_deadline': self.date_finished, - 'allocated_hours': self.duration_expected, - }) - self.env['account.analytic.line'].create({ - 'task_id': task_id.id, - 'date': datetime.today(), - 'name': ("{} in {} for {}".format(self.name, - self.workcenter_id.name, - self.product_id.display_name)), - 'employee_id': self.employee_id.id, - 'is_manufacturing': True - }) - else: - project_id = self.env['project.project'].create( - {'name': ("MO: {}".format(self.production_id.name)), - 'is_manufacturing': True}) - task_id = project_id.task_ids.search([('name', '=', ( - "{} in {} for {} on {}".format(self.name, - self.workcenter_id.name, - self.product_id.display_name, - str(self.date_start))))]) - if not task_id: - task_id = self.env['project.task'].create({ - 'name': ("{} in {} for {} on {}".format(self.name, - self.workcenter_id.name, - self.product_id.display_name, - str(self.date_start))), - 'project_id': project_id.id, - 'date_assign': self.date_start, - 'date_deadline': self.date_finished, - 'allocated_hours': self.duration_expected, - }) - self.env['account.analytic.line'].create({ - 'task_id': task_id.id, - 'date': datetime.today(), - 'name': ("{} in {} for {}".format(self.name, - self.workcenter_id.name, - self.product_id.display_name)), - 'employee_id': self.employee_id.id, - 'is_manufacturing': True - }) + for rec in self: + project = self.env['project.project'].search( + [('name', '=', ("MO: {}".format(rec.production_id.name)))]) + if project: + task_id = project.task_ids.search([('name', '=', ( + "{} in {} for {} on {}".format(rec.name, + rec.workcenter_id.name, + rec.product_id.display_name, + str(rec.date_start))))]) + if not task_id: + task_id = self.env['project.task'].create({ + 'name': ("{} in {} for {} on {}".format(rec.name, + rec.workcenter_id.name, + rec.product_id.display_name, + str(rec.date_start))), + 'project_id': project.id, + 'date_assign': rec.date_start, + 'date_deadline': rec.date_finished, + 'allocated_hours': rec.duration_expected, + }) + self.env['account.analytic.line'].create({ + 'task_id': task_id.id, + 'date': datetime.today(), + 'name': ("{} in {} for {}".format(rec.name, + rec.workcenter_id.name, + rec.product_id.display_name)), + 'employee_id': rec.employee_id.id, + 'is_manufacturing': True + }) + else: + project_id = self.env['project.project'].create( + {'name': ("MO: {}".format(rec.production_id.name)), + 'is_manufacturing': True}) + task_id = project_id.task_ids.search([('name', '=', ( + "{} in {} for {} on {}".format(rec.name, + rec.workcenter_id.name, + rec.product_id.display_name, + str(rec.date_start))))]) + if not task_id: + task_id = self.env['project.task'].create({ + 'name': ("{} in {} for {} on {}".format(rec.name, + rec.workcenter_id.name, + rec.product_id.display_name, + str(rec.date_start))), + 'project_id': project_id.id, + 'date_assign': rec.date_start, + 'date_deadline': rec.date_finished, + 'allocated_hours': rec.duration_expected, + }) + self.env['account.analytic.line'].create({ + 'task_id': task_id.id, + 'date': datetime.today(), + 'name': ("{} in {} for {}".format(rec.name, + rec.workcenter_id.name, + rec.product_id.display_name)), + 'employee_id': rec.employee_id.id, + 'is_manufacturing': True + }) + + return res def button_pending(self): @@ -117,20 +120,22 @@ class MrpWorkorder(models.Model): Boolean: Returns true """ res = super(MrpWorkorder, self).button_pending() - project = self.env['project.project'].search( - [('name', '=', ("MO: {}".format(self.production_id.name)))]) - task_id = project.task_ids.search([('name', '=', ( - "{} in {} for {} on {}".format(self.name, self.workcenter_id.name, - self.product_id.display_name, - str(self.date_start))))]) - task_id.write({ - 'allocated_hours': self.duration_expected - }) - timesheet = task_id.mapped('timesheet_ids') - for rec in timesheet: - rec.write({ - 'unit_amount': self.duration, + for rec in self: + project = self.env['project.project'].search( + [('name', '=', ("MO: {}".format(rec.production_id.name)))]) + task_id = project.task_ids.search([('name', '=', ( + "{} in {} for {} on {}".format(rec.name, rec.workcenter_id.name, + rec.product_id.display_name, + str(rec.date_start))))]) + task_id.write({ + 'allocated_hours': rec.duration_expected }) + timesheets = task_id.mapped('timesheet_ids') + for timesheet in timesheets: + timesheet.write({ + 'unit_amount': rec.duration, + }) + return res def button_finish(self):