diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/hr_expense/static/src/js/expense_views.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/hr_expense/static/src/js/expense_views.js')
| -rw-r--r-- | addons/hr_expense/static/src/js/expense_views.js | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/addons/hr_expense/static/src/js/expense_views.js b/addons/hr_expense/static/src/js/expense_views.js new file mode 100644 index 00000000..a031f647 --- /dev/null +++ b/addons/hr_expense/static/src/js/expense_views.js @@ -0,0 +1,167 @@ +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 PivotView = require('web.PivotView'); + var ListController = require('web.ListController'); + var ListView = require('web.ListView'); + var viewRegistry = require('web.view_registry'); + var core = require('web.core'); + var ListRenderer = require('web.ListRenderer'); + var KanbanRenderer = require('web.KanbanRenderer'); + var PivotRenderer = require('web.PivotRenderer'); + var session = require('web.session'); + const config = require('web.config'); + + var QWeb = core.qweb; + + var ExpensesListController = ListController.extend(DocumentUploadMixin, { + buttons_template: 'ExpensesListView.buttons', + events: _.extend({}, ListController.prototype.events, { + 'click .o_button_upload_expense': '_onUpload', + 'change .o_expense_documents_upload .o_form_binary_form': '_onAddAttachment', + }), + }); + + const ExpenseQRCodeMixin = { + async _renderView() { + const self = this; + await this._super(...arguments); + const google_url = "https://play.google.com/store/apps/details?id=com.odoo.mobile"; + const apple_url = "https://apps.apple.com/be/app/odoo/id1272543640"; + const action_desktop = { + name: 'Download our App', + type: 'ir.actions.client', + tag: 'expense_qr_code_modal', + params: {'url': "https://apps.apple.com/be/app/odoo/id1272543640"}, + target: 'new', + }; + this.$el.find('img.o_expense_apple_store').on('click', function(event) { + event.preventDefault(); + if (!config.device.isMobile) { + self.do_action(_.extend(action_desktop, {params: {'url': apple_url}})); + } else { + self.do_action({type: 'ir.actions.act_url', url: apple_url}); + } + }); + this.$el.find('img.o_expense_google_store').on('click', function(event) { + event.preventDefault(); + if (!config.device.isMobile) { + self.do_action(_.extend(action_desktop, {params: {'url': google_url}})); + } else { + self.do_action({type: 'ir.actions.act_url', url: google_url}); + } + }); + }, + }; + + const ExpenseDashboardMixin = { + _render: async function () { + var self = this; + await this._super(...arguments); + const result = await this._rpc({ + model: 'hr.expense', + method: 'get_expense_dashboard', + context: this.context, + }); + + self.$el.parent().find('.o_expense_container').remove(); + const elem = QWeb.render('hr_expense.dashboard_list_header', { + expenses: result, + render_monetary_field: self.render_monetary_field, + }); + self.$el.before(elem); + }, + render_monetary_field: function (value, currency_id) { + value = value.toFixed(2); + var currency = session.get_currency(currency_id); + if (currency) { + if (currency.position === "after") { + value += currency.symbol; + } else { + value = currency.symbol + value; + } + } + return value; + } + }; + + // Expense List Renderer + var ExpenseListRenderer = ListRenderer.extend(ExpenseQRCodeMixin); + + // Expense List Renderer with the Header + // Used in "My Expenses to Report", "All My Expenses" & "My Reports" + var ExpenseListRendererHeader = ExpenseListRenderer.extend(ExpenseDashboardMixin); + + var ExpensesListViewDashboardUpload = ListView.extend({ + config: _.extend({}, ListView.prototype.config, { + Renderer: ExpenseListRenderer, + Controller: ExpensesListController, + }), + }); + + // Used in "My Expenses to Report" & "All My Expenses" + var ExpensesListViewDashboardUploadHeader = ExpensesListViewDashboardUpload.extend({ + config: _.extend({}, ExpensesListViewDashboardUpload.prototype.config, { + Renderer: ExpenseListRendererHeader, + }), + }); + + // The dashboard view of the expense module + var ExpensesListViewDashboard = ListView.extend({ + config: _.extend({}, ListView.prototype.config, { + Renderer: ExpenseListRenderer, + Controller: ExpensesListController, + }), + }); + + // The dashboard view of the expense module with an header + // Used in "My Expenses" + var ExpensesListViewDashboardHeader = ExpensesListViewDashboard.extend({ + config: _.extend({}, ExpensesListViewDashboard.prototype.config, { + Renderer: ExpenseListRendererHeader, + }) + }); + + 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 ExpenseKanbanRenderer = KanbanRenderer.extend(ExpenseQRCodeMixin); + + var ExpenseKanbanRendererHeader = ExpenseKanbanRenderer.extend(ExpenseDashboardMixin); + + // The kanban view + var ExpensesKanbanView = KanbanView.extend({ + config: _.extend({}, KanbanView.prototype.config, { + Controller: ExpensesKanbanController, + Renderer: ExpenseKanbanRenderer, + }), + }); + + // The kanban view with the Header + // Used in "My Expenses to Report", "All My Expenses" & "My Repo + var ExpensesKanbanViewHeader = ExpensesKanbanView.extend({ + config: _.extend({}, ExpensesKanbanView.prototype.config, { + Renderer: ExpenseKanbanRendererHeader, + }) + }); + + viewRegistry.add('hr_expense_tree_dashboard_upload', ExpensesListViewDashboardUpload); + // Tree view with the header. + // Used in "My Expenses to Report" & "All My Expenses" + viewRegistry.add('hr_expense_tree_dashboard_upload_header', ExpensesListViewDashboardUploadHeader); + viewRegistry.add('hr_expense_tree_dashboard', ExpensesListViewDashboard); + // Tree view with the header. + // Used in "My Reports" + viewRegistry.add('hr_expense_tree_dashboard_header', ExpensesListViewDashboardHeader); + viewRegistry.add('hr_expense_kanban', ExpensesKanbanView); + // Kanban view with the header. + // Used in "My Expenses to Report", "All My Expenses" & "My Reports" + viewRegistry.add('hr_expense_kanban_header', ExpensesKanbanViewHeader); +}); |
