From 5af891c490317e00a3fba8cc7e68aa68d7c9ca19 Mon Sep 17 00:00:00 2001 From: Barad Mahendra Date: Fri, 13 Dec 2019 07:26:12 +0000 Subject: [PATCH] [IMP] hr_expense: add upload button on expenses kanban view Purpose of the task is to improve the mobile user experience of the Expenses app by adding the upload button to the Expenses kanban view. Task ID: 2152155 closes odoo/odoo#41839 Closes: #41839 Signed-off-by: Yannick Tivisse (yti) --- addons/hr_expense/models/hr_expense.py | 4 ++-- .../static/src/js/documents_upload.js | 19 ++++++++++++++++++- .../hr_expense/static/src/js/upload_mixin.js | 2 +- .../static/src/xml/documents_upload_views.xml | 13 +++++++++++++ addons/hr_expense/views/hr_expense_views.xml | 2 +- 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 5d505bbc4cc..fd62bc344a1 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -163,7 +163,7 @@ class HrExpense(models.Model): if self.product_id and self.product_uom_id.category_id != self.product_id.uom_id.category_id: raise UserError(_('Selected Unit of Measure does not belong to the same category as the product Unit of Measure.')) - def create_expense_from_attachments(self, attachment_ids=None): + def create_expense_from_attachments(self, attachment_ids=None, view_type='tree'): ''' Create the expenses from files. :return: An action redirecting to hr.expense tree/form view. ''' @@ -200,7 +200,7 @@ class HrExpense(models.Model): 'domain': [('id', 'in', expenses.ids)], 'res_model': 'hr.expense', 'type': 'ir.actions.act_window', - 'views': [[False, "tree"], [False, "form"]], + 'views': [[False, view_type], [False, "form"]], } # ---------------------------------------- diff --git a/addons/hr_expense/static/src/js/documents_upload.js b/addons/hr_expense/static/src/js/documents_upload.js index ef7fef75601..515c34bb013 100644 --- a/addons/hr_expense/static/src/js/documents_upload.js +++ b/addons/hr_expense/static/src/js/documents_upload.js @@ -1,8 +1,10 @@ odoo.define('hr_expense.expenses.tree', function (require) { "use strict"; + var DocumentUploadMixin = require('hr_expense.documents.upload.mixin'); + var KanbanController = require('web.KanbanController'); + var KanbanView = require('web.KanbanView'); var ListController = require('web.ListController'); var ListView = require('web.ListView'); - var DocumentUploadMixin = require('hr_expense.documents.upload.mixin'); var viewRegistry = require('web.view_registry'); var ExpensesListController = ListController.extend(DocumentUploadMixin, { @@ -19,5 +21,20 @@ odoo.define('hr_expense.expenses.tree', function (require) { }), }); + var ExpensesKanbanController = KanbanController.extend(DocumentUploadMixin, { + buttons_template: 'ExpensesKanbanView.buttons', + events: _.extend({}, KanbanController.prototype.events, { + 'click .o_button_upload_expense': '_onUpload', + 'change .o_expense_documents_upload .o_form_binary_form': '_onAddAttachment', + }), + }); + + var ExpensesKanbanView = KanbanView.extend({ + config: _.extend({}, KanbanView.prototype.config, { + Controller: ExpensesKanbanController, + }), + }); + viewRegistry.add('hr_expense_tree', ExpensesListView); + viewRegistry.add('hr_expense_kanban', ExpensesKanbanView); }); diff --git a/addons/hr_expense/static/src/js/upload_mixin.js b/addons/hr_expense/static/src/js/upload_mixin.js index f3c1718201c..c94df1c6616 100644 --- a/addons/hr_expense/static/src/js/upload_mixin.js +++ b/addons/hr_expense/static/src/js/upload_mixin.js @@ -46,7 +46,7 @@ var DocumentUploadMixin = { return this._rpc({ model: 'hr.expense', method: 'create_expense_from_attachments', - args: ["", attachent_ids], + args: ["", attachent_ids, this.viewType], context: this.initialState.context, }).then(function(result) { self.do_action(result); diff --git a/addons/hr_expense/static/src/xml/documents_upload_views.xml b/addons/hr_expense/static/src/xml/documents_upload_views.xml index 38c2ba0bda1..8f2dc880d07 100644 --- a/addons/hr_expense/static/src/xml/documents_upload_views.xml +++ b/addons/hr_expense/static/src/xml/documents_upload_views.xml @@ -25,4 +25,17 @@ + + + + + if (window.odoo._modules.indexOf("base_import") >= 0) { + r.push(context.engine.tools.call(context, 'ImportView.import_button', dict)); + }; + + + + diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml index 0d028032770..165f84ec53d 100644 --- a/addons/hr_expense/views/hr_expense_views.xml +++ b/addons/hr_expense/views/hr_expense_views.xml @@ -158,7 +158,7 @@ hr.expense.kanban hr.expense - +