diff --git a/addons/sale/views/sale_views.xml b/addons/sale/views/sale_views.xml index e4890c305a7..ddf837f97d6 100644 --- a/addons/sale/views/sale_views.xml +++ b/addons/sale/views/sale_views.xml @@ -1057,6 +1057,26 @@ + + sale.order.line.kanban + sale.order.line + + + + +
+
+
+ +
+
+
+
+
+
+
+
+ product.product.sale.order product.product diff --git a/addons/sale_timesheet/models/project.py b/addons/sale_timesheet/models/project.py index 48c1bf95259..2049780ecc6 100644 --- a/addons/sale_timesheet/models/project.py +++ b/addons/sale_timesheet/models/project.py @@ -160,7 +160,8 @@ class ProjectTask(models.Model): _inherit = "project.task" # override sale_order_id and make it computed stored field instead of regular field. - sale_order_id = fields.Many2one(compute='_compute_sale_order_id', store=True, readonly=False) + sale_order_id = fields.Many2one(compute='_compute_sale_order_id', store=True, readonly=False, + domain="['|', '|', ('partner_id', '=', partner_id), ('partner_id', 'child_of', commercial_partner_id), ('partner_id', 'parent_of', partner_id)]") analytic_account_id = fields.Many2one('account.analytic.account', related='sale_order_id.analytic_account_id') billable_type = fields.Selection([ ('task_rate', 'At Task Rate'), diff --git a/addons/web/static/src/js/views/kanban/kanban_column.js b/addons/web/static/src/js/views/kanban/kanban_column.js index 229046479f4..ab994628c8c 100644 --- a/addons/web/static/src/js/views/kanban/kanban_column.js +++ b/addons/web/static/src/js/views/kanban/kanban_column.js @@ -74,8 +74,8 @@ var KanbanColumn = Widget.extend({ this.record_options = _.clone(recordOptions); - if (options.grouped_by_m2o) { - // For many2one, a false value means that the field is not set. + if (options.grouped_by_m2o || options.grouped_by_date ) { + // For many2one and datetime, a false value means that the field is not set. this.title = value ? value : _t('Undefined'); } else { // False and 0 might be valid values for these fields. diff --git a/addons/web/static/src/js/views/kanban/kanban_renderer.js b/addons/web/static/src/js/views/kanban/kanban_renderer.js index b207f7f63d3..acf3fc7d7cd 100644 --- a/addons/web/static/src/js/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/js/views/kanban/kanban_renderer.js @@ -503,9 +503,11 @@ var KanbanRenderer = BasicRenderer.extend({ // - is a date or datetime since we group by month or // - is readonly (on the field attrs or in the view) var draggable = true; + var grouped_by_date = false; if (groupByFieldAttrs) { if (groupByFieldAttrs.type === "date" || groupByFieldAttrs.type === "datetime") { draggable = false; + grouped_by_date = true; } else if (groupByFieldAttrs.readonly !== undefined) { draggable = !(groupByFieldAttrs.readonly); } @@ -523,6 +525,7 @@ var KanbanRenderer = BasicRenderer.extend({ group_by_tooltip: groupByTooltip, groupedBy: groupByField, grouped_by_m2o: this.groupedByM2O, + grouped_by_date: grouped_by_date, relation: relation, quick_create: this.quickCreateEnabled && viewUtils.isQuickCreateEnabled(state), });