diff --git a/projects_task_checklists/README.rst b/projects_task_checklists/README.rst index b2529a2e7..c69fa27b9 100644 --- a/projects_task_checklists/README.rst +++ b/projects_task_checklists/README.rst @@ -4,7 +4,7 @@ Projects task checklists Installation ============ - - www.odoo.com/documentation/15.0/setup/install.html + - www.odoo.com/documentation/16.0/setup/install.html - Install our custom addon Configuration diff --git a/projects_task_checklists/__init__.py b/projects_task_checklists/__init__.py index a39b8388a..fb7b4fced 100644 --- a/projects_task_checklists/__init__.py +++ b/projects_task_checklists/__init__.py @@ -4,7 +4,6 @@ # Cybrosys Technologies Pvt. Ltd. # # Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: LINTO C T() # you can modify it under the terms of the GNU LESSER # GENERAL PUBLIC LICENSE (LGPL v3), Version 3. # @@ -18,5 +17,4 @@ # If not, see . # ############################################################################## - from . import models diff --git a/projects_task_checklists/__manifest__.py b/projects_task_checklists/__manifest__.py index ed1cb6ef4..3cde792ac 100644 --- a/projects_task_checklists/__manifest__.py +++ b/projects_task_checklists/__manifest__.py @@ -4,7 +4,6 @@ # Cybrosys Technologies Pvt. Ltd. # # Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: LINTO C T() # you can modify it under the terms of the GNU LESSER # GENERAL PUBLIC LICENSE (LGPL v3), Version 3. # @@ -20,7 +19,7 @@ ############################################################################## { 'name': 'Project Task Checklist', - 'version': '16.0.1.0.0', + 'version': '16.0.1.0.1', 'category': 'Project/Project', 'summary': "To Manage the Project's tasks, subtasks checklists", 'description': "To Manage the Project's tasks, subtasks checklists", diff --git a/projects_task_checklists/doc/RELEASE_NOTES.md b/projects_task_checklists/doc/RELEASE_NOTES.md index f795f2112..290fa0cdf 100644 --- a/projects_task_checklists/doc/RELEASE_NOTES.md +++ b/projects_task_checklists/doc/RELEASE_NOTES.md @@ -5,3 +5,7 @@ #### ADD - Initial commit for projects_task_checklists +#### 21.12.2023 +#### Version 16.0.1.0.1 +#### FIX +- Bug fix on checklist status diff --git a/projects_task_checklists/models/__init__.py b/projects_task_checklists/models/__init__.py index 7a79b3acc..ea9c59b45 100644 --- a/projects_task_checklists/models/__init__.py +++ b/projects_task_checklists/models/__init__.py @@ -4,7 +4,6 @@ # Cybrosys Technologies Pvt. Ltd. # # Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: LINTO C T() # you can modify it under the terms of the GNU LESSER # GENERAL PUBLIC LICENSE (LGPL v3), Version 3. # @@ -18,6 +17,5 @@ # If not, see . # ############################################################################## - from . import stage from . import checklist diff --git a/projects_task_checklists/models/checklist.py b/projects_task_checklists/models/checklist.py index daf676ae8..b36283726 100644 --- a/projects_task_checklists/models/checklist.py +++ b/projects_task_checklists/models/checklist.py @@ -4,7 +4,6 @@ # Cybrosys Technologies Pvt. Ltd. # # Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: LINTO C T() # you can modify it under the terms of the GNU LESSER # GENERAL PUBLIC LICENSE (LGPL v3), Version 3. # @@ -27,30 +26,36 @@ class TaskChecklist(models.Model): name = fields.Char(string='Name') description = fields.Char(string='Description') - project_id = fields.Many2one('project.project', string='Project') task_ids = fields.Many2one('project.task', string='Task') + project_id = fields.Many2one('project.project', string='Project') - checklist_ids = fields.One2many('checklist.item', 'checklist_id', - string='CheckList Items', required=True) + checklist_ids = fields.One2many('checklist.item', 'checklist_id', string='CheckList Items', required=True) -class ChecklistItem(models.Model): +class CheckListItem(models.Model): _name = 'checklist.item' - _description = 'Checklist Item' + _description = "Checklist Item" name = fields.Char(required=True) sequence = fields.Integer(default=1) description = fields.Char() + checklist_id = fields.Many2one('task.checklist') + + +class ChecklistItemLine(models.Model): + _name = 'checklist.item.line' + _description = 'Checklist Item Line' + + check_list_item_id = fields.Many2one('checklist.item', required=True) + description = fields.Char() projects_id = fields.Many2one('project.task') checklist_id = fields.Many2one('task.checklist') - state = fields.Selection( - string='Status', required=True, readonly=True, copy=False, - tracking=True, selection=[ - ('todo', 'To Do'), - ('in_progress', 'In Progress'), - ('done', 'Done'), - ('cancel', 'Cancelled'), - ], default='todo', ) + state = fields.Selection(string='Status', required=True, readonly=True, copy=False, tracking=True, selection=[ + ('todo', 'To Do'), + ('in_progress', 'In Progress'), + ('done', 'Done'), + ('cancel', 'Cancelled'), + ], default='todo', ) def approve_and_next(self): self.state = 'in_progress' @@ -71,17 +76,23 @@ class ChecklistProgress(models.Model): start_date = fields.Datetime(string='Start Date') end_date = fields.Datetime(string='End Date') progress = fields.Float(compute='_compute_progress', string='Progress in %') + checklist_ids = fields.Many2many('task.checklist', compute='_compute_checklist_ids') checklist_id = fields.Many2one('task.checklist') - checklists = fields.One2many('checklist.item', 'projects_id', - string='CheckList Items', required=True) + checklists = fields.One2many('checklist.item.line', 'projects_id', string='CheckList Items', required=True) @api.onchange('checklist_id') def _onchange_project_id(self): - self.checklists = [] - checklist = self.env['task.checklist'].search( - [('name', '=', self.checklist_id.name)]) - for rec in checklist: - self.checklists += rec.checklist_ids + checklist = self.env['task.checklist'].search([('name', '=', self.checklist_id.name)]) + self.checklists = False + self.checklists = [(0, 0, { + 'check_list_item_id': rec.id, + 'state': 'todo', + 'checklist_id': self.checklist_id.id, + }) for rec in checklist.checklist_ids] + + def _compute_checklist_ids(self): + for rec in self: + self.checklist_ids = self.env['task.checklist'].search([('task_ids', '=', rec.id)]) def _compute_progress(self): for rec in self: @@ -90,7 +101,7 @@ class ChecklistProgress(models.Model): if activity.state in ['cancel', 'done', 'in_progress']: total_completed += 1 if total_completed: - rec.progress = float(total_completed) / len( - rec.checklists) * 100 + rec.progress = float(total_completed) / len(rec.checklists) * 100 + else: rec.progress = 0.0 diff --git a/projects_task_checklists/models/stage.py b/projects_task_checklists/models/stage.py index 57bd32b5c..0f25cf4f7 100644 --- a/projects_task_checklists/models/stage.py +++ b/projects_task_checklists/models/stage.py @@ -4,7 +4,6 @@ # Cybrosys Technologies Pvt. Ltd. # # Copyright (C) 2022-TODAY Cybrosys Technologies(). -# Author: LINTO C T() # you can modify it under the terms of the GNU LESSER # GENERAL PUBLIC LICENSE (LGPL v3), Version 3. # diff --git a/projects_task_checklists/security/ir.model.access.csv b/projects_task_checklists/security/ir.model.access.csv index fc4c677d9..90e9fb6ec 100644 --- a/projects_task_checklists/security/ir.model.access.csv +++ b/projects_task_checklists/security/ir.model.access.csv @@ -3,3 +3,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_checklist_activity_stages,access.checklist.activity.stages,model_checklist_activity_stages,,1,1,1,1 access_task_checklist,access.task.checklist,model_task_checklist,,1,1,1,1 access_checklist_item,access.checklist.item,model_checklist_item,,1,1,1,1 +access_checklist_item_line,access.checklist.item.line,model_checklist_item_line,,1,1,1,1 diff --git a/projects_task_checklists/views/checklist_add.xml b/projects_task_checklists/views/checklist_add.xml index b473d21ea..a40126d6b 100644 --- a/projects_task_checklists/views/checklist_add.xml +++ b/projects_task_checklists/views/checklist_add.xml @@ -17,14 +17,16 @@ + - - + +