|
@ -4,7 +4,6 @@ |
|
|
# Cybrosys Technologies Pvt. Ltd. |
|
|
# Cybrosys Technologies Pvt. Ltd. |
|
|
# |
|
|
# |
|
|
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|
|
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
|
|
# Author: LINTO C T(<https://www.cybrosys.com>) |
|
|
|
|
|
# you can modify it under the terms of the GNU LESSER |
|
|
# you can modify it under the terms of the GNU LESSER |
|
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
|
|
# |
|
|
# |
|
@ -27,30 +26,36 @@ class TaskChecklist(models.Model): |
|
|
|
|
|
|
|
|
name = fields.Char(string='Name') |
|
|
name = fields.Char(string='Name') |
|
|
description = fields.Char(string='Description') |
|
|
description = fields.Char(string='Description') |
|
|
project_id = fields.Many2one('project.project', string='Project') |
|
|
|
|
|
task_ids = fields.Many2one('project.task', string='Task') |
|
|
task_ids = fields.Many2one('project.task', string='Task') |
|
|
|
|
|
project_id = fields.Many2one('project.project', string='Project') |
|
|
|
|
|
|
|
|
checklist_ids = fields.One2many('checklist.item', 'checklist_id', |
|
|
checklist_ids = fields.One2many('checklist.item', 'checklist_id', string='CheckList Items', required=True) |
|
|
string='CheckList Items', required=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ChecklistItem(models.Model): |
|
|
class CheckListItem(models.Model): |
|
|
_name = 'checklist.item' |
|
|
_name = 'checklist.item' |
|
|
_description = 'Checklist Item' |
|
|
_description = "Checklist Item" |
|
|
|
|
|
|
|
|
name = fields.Char(required=True) |
|
|
name = fields.Char(required=True) |
|
|
sequence = fields.Integer(default=1) |
|
|
sequence = fields.Integer(default=1) |
|
|
description = fields.Char() |
|
|
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') |
|
|
projects_id = fields.Many2one('project.task') |
|
|
checklist_id = fields.Many2one('task.checklist') |
|
|
checklist_id = fields.Many2one('task.checklist') |
|
|
state = fields.Selection( |
|
|
state = fields.Selection(string='Status', required=True, readonly=True, copy=False, tracking=True, selection=[ |
|
|
string='Status', required=True, readonly=True, copy=False, |
|
|
('todo', 'To Do'), |
|
|
tracking=True, selection=[ |
|
|
('in_progress', 'In Progress'), |
|
|
('todo', 'To Do'), |
|
|
('done', 'Done'), |
|
|
('in_progress', 'In Progress'), |
|
|
('cancel', 'Cancelled'), |
|
|
('done', 'Done'), |
|
|
], default='todo', ) |
|
|
('cancel', 'Cancelled'), |
|
|
|
|
|
], default='todo', ) |
|
|
|
|
|
|
|
|
|
|
|
def approve_and_next(self): |
|
|
def approve_and_next(self): |
|
|
self.state = 'in_progress' |
|
|
self.state = 'in_progress' |
|
@ -71,17 +76,23 @@ class ChecklistProgress(models.Model): |
|
|
start_date = fields.Datetime(string='Start Date') |
|
|
start_date = fields.Datetime(string='Start Date') |
|
|
end_date = fields.Datetime(string='End Date') |
|
|
end_date = fields.Datetime(string='End Date') |
|
|
progress = fields.Float(compute='_compute_progress', string='Progress in %') |
|
|
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') |
|
|
checklist_id = fields.Many2one('task.checklist') |
|
|
checklists = fields.One2many('checklist.item', 'projects_id', |
|
|
checklists = fields.One2many('checklist.item.line', 'projects_id', string='CheckList Items', required=True) |
|
|
string='CheckList Items', required=True) |
|
|
|
|
|
|
|
|
|
|
|
@api.onchange('checklist_id') |
|
|
@api.onchange('checklist_id') |
|
|
def _onchange_project_id(self): |
|
|
def _onchange_project_id(self): |
|
|
self.checklists = [] |
|
|
checklist = self.env['task.checklist'].search([('name', '=', self.checklist_id.name)]) |
|
|
checklist = self.env['task.checklist'].search( |
|
|
self.checklists = False |
|
|
[('name', '=', self.checklist_id.name)]) |
|
|
self.checklists = [(0, 0, { |
|
|
for rec in checklist: |
|
|
'check_list_item_id': rec.id, |
|
|
self.checklists += rec.checklist_ids |
|
|
'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): |
|
|
def _compute_progress(self): |
|
|
for rec in self: |
|
|
for rec in self: |
|
@ -90,7 +101,7 @@ class ChecklistProgress(models.Model): |
|
|
if activity.state in ['cancel', 'done', 'in_progress']: |
|
|
if activity.state in ['cancel', 'done', 'in_progress']: |
|
|
total_completed += 1 |
|
|
total_completed += 1 |
|
|
if total_completed: |
|
|
if total_completed: |
|
|
rec.progress = float(total_completed) / len( |
|
|
rec.progress = float(total_completed) / len(rec.checklists) * 100 |
|
|
rec.checklists) * 100 |
|
|
|
|
|
else: |
|
|
else: |
|
|
rec.progress = 0.0 |
|
|
rec.progress = 0.0 |
|
|