summaryrefslogtreecommitdiff
path: root/addons/hr_expense/static/src/js/expense_views.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/hr_expense/static/src/js/expense_views.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (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.js167
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);
+});