diff --git a/addons/project/data/project_demo.xml b/addons/project/data/project_demo.xml index 74e930c4d79..70f00602eef 100644 --- a/addons/project/data/project_demo.xml +++ b/addons/project/data/project_demo.xml @@ -1332,5 +1332,11 @@ Send it ASAP, its urgent. at_risk + + Status + + + done + diff --git a/addons/project/models/project.py b/addons/project/models/project.py index 4e62806bcd1..210c55dd919 100644 --- a/addons/project/models/project.py +++ b/addons/project/models/project.py @@ -409,6 +409,7 @@ class Project(models.Model): ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('to_define', 'Set Status'), + ('done', 'Done'), ], default='to_define', compute='_compute_last_update_status', store=True, readonly=False, required=True) last_update_color = fields.Integer(compute='_compute_last_update_color') milestone_ids = fields.One2many('project.milestone', 'project_id', copy=True) diff --git a/addons/project/models/project_update.py b/addons/project/models/project_update.py index bd16213fb60..7351cf306f1 100644 --- a/addons/project/models/project_update.py +++ b/addons/project/models/project_update.py @@ -14,6 +14,7 @@ STATUS_COLOR = { 'at_risk': 2, # orange 'off_track': 23, # red / danger 'on_hold': 4, # light blue + 'done': 5, # purple False: 0, # default grey -- for studio # Only used in project.task 'to_define': 0, @@ -46,7 +47,8 @@ class ProjectUpdate(models.Model): ('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), - ('on_hold', 'On Hold') + ('on_hold', 'On Hold'), + ('done', 'Done'), ], required=True, tracking=True) color = fields.Integer(compute='_compute_color') progress = fields.Integer(tracking=True) diff --git a/addons/project/static/src/scss/project_dashboard.scss b/addons/project/static/src/scss/project_dashboard.scss index 27dc321dad2..427509f0f65 100644 --- a/addons/project/static/src/scss/project_dashboard.scss +++ b/addons/project/static/src/scss/project_dashboard.scss @@ -51,6 +51,10 @@ } } + .o_kanban_counter_progress .bg-purple { + background-color: purple; + } + @include media-breakpoint-down(md) { .o_view_nocontent { top: 15%; diff --git a/addons/project/static/src/utils/project_utils.js b/addons/project/static/src/utils/project_utils.js index 65d91e4a72e..7f24c49393f 100644 --- a/addons/project/static/src/utils/project_utils.js +++ b/addons/project/static/src/utils/project_utils.js @@ -8,6 +8,7 @@ export const STATUS_COLORS = { 'at_risk': 2, 'off_track': 1, 'on_hold': 4, + 'done': 5, }; export const STATUS_COLOR_PREFIX = 'o_status_bubble mx-0 o_color_bubble_'; diff --git a/addons/project/views/project_portal_templates.xml b/addons/project/views/project_portal_templates.xml index 18313b2b806..ebaffa519b1 100644 --- a/addons/project/views/project_portal_templates.xml +++ b/addons/project/views/project_portal_templates.xml @@ -212,7 +212,7 @@ - + diff --git a/addons/project/views/project_sharing_views.xml b/addons/project/views/project_sharing_views.xml index 532fd5aa747..b63f777f5d4 100644 --- a/addons/project/views/project_sharing_views.xml +++ b/addons/project/views/project_sharing_views.xml @@ -100,9 +100,8 @@ - - assignees - assignee + assignees + diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml index dd2bb0cba58..dfc00c8b2c0 100644 --- a/addons/project/views/project_views.xml +++ b/addons/project/views/project_views.xml @@ -826,7 +826,7 @@ - + @@ -1508,8 +1508,8 @@ - + @@ -1650,7 +1650,19 @@ - + + project.task.kanban.inherit.all.task + project.task + + primary + + + project_id + + + + + My Tasks project.task kanban,tree,form,calendar,pivot,graph,activity @@ -1690,16 +1702,51 @@ - + kanban - + - + tree + + + + + calendar + + + + + + All Tasks + project.task + tree,kanban,form,calendar,pivot,graph,activity + {'search_default_open_tasks': 1, 'default_user_ids': [(4, uid)]} + + + + No tasks found. Let's create one! + + + Organize your tasks by dispatching them across the pipeline. + Collaborate efficiently by chatting in real-time or via email. + + + + + + + tree + + + + + kanban + @@ -1710,7 +1757,10 @@ + action="action_view_my_task" sequence="2" groups="group_project_user"/> + + Tasks diff --git a/addons/project/wizard/project_task_type_delete.py b/addons/project/wizard/project_task_type_delete.py index 96384f2e7f5..7ecd1e78de8 100644 --- a/addons/project/wizard/project_task_type_delete.py +++ b/addons/project/wizard/project_task_type_delete.py @@ -67,7 +67,7 @@ class ProjectTaskTypeDelete(models.TransientModel): elif self.env.context.get('stage_view'): action = self.env["ir.actions.actions"]._for_xml_id("project.open_task_type_form") else: - action = self.env["ir.actions.actions"]._for_xml_id("project.action_view_all_task") + action = self.env["ir.actions.actions"]._for_xml_id("project.action_view_my_task") context = action.get('context', '{}') context = context.replace('uid', str(self.env.uid)) diff --git a/addons/sale_project/models/project_milestone.py b/addons/sale_project/models/project_milestone.py index 76040c4828a..77bb6916c70 100644 --- a/addons/sale_project/models/project_milestone.py +++ b/addons/sale_project/models/project_milestone.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import api, fields, models +from odoo import api, fields, models, _ class ProjectMilestone(models.Model): _name = 'project.milestone' @@ -19,3 +19,13 @@ class ProjectMilestone(models.Model): @api.model def _get_fields_to_export(self): return super()._get_fields_to_export() + ['allow_billable', 'quantity_percentage', 'sale_line_name'] + + def action_view_sale_order(self): + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': _('Sales Order'), + 'res_model': 'sale.order', + 'res_id': self.sale_line_id.order_id.id, + 'view_mode': 'form', + } diff --git a/addons/sale_project/views/project_task_views.xml b/addons/sale_project/views/project_task_views.xml index 77bfa533f3d..f774b6f7d04 100644 --- a/addons/sale_project/views/project_task_views.xml +++ b/addons/sale_project/views/project_task_views.xml @@ -123,6 +123,13 @@ + + + + Sales Order + + + @@ -140,6 +147,10 @@ + + +
+ No tasks found. Let's create one! +
+ Organize your tasks by dispatching them across the pipeline. + Collaborate efficiently by chatting in real-time or via email. +