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/account/static/src/js/bills_tree_upload.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/account/static/src/js/bills_tree_upload.js')
| -rw-r--r-- | addons/account/static/src/js/bills_tree_upload.js | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/addons/account/static/src/js/bills_tree_upload.js b/addons/account/static/src/js/bills_tree_upload.js new file mode 100644 index 00000000..2894b868 --- /dev/null +++ b/addons/account/static/src/js/bills_tree_upload.js @@ -0,0 +1,127 @@ +odoo.define('account.upload.bill.mixin', function (require) { +"use strict"; + + var core = require('web.core'); + var _t = core._t; + + var qweb = core.qweb; + + var UploadBillMixin = { + + start: function () { + // define a unique uploadId and a callback method + this.fileUploadID = _.uniqueId('account_bill_file_upload'); + $(window).on(this.fileUploadID, this._onFileUploaded.bind(this)); + return this._super.apply(this, arguments); + }, + + _onAddAttachment: function (ev) { + // Auto submit form once we've selected an attachment + var $input = $(ev.currentTarget).find('input.o_input_file'); + if ($input.val() !== '') { + var $binaryForm = this.$('.o_vendor_bill_upload form.o_form_binary_form'); + $binaryForm.submit(); + } + }, + + _onFileUploaded: function () { + // Callback once attachment have been created, create a bill with attachment ids + var self = this; + var attachments = Array.prototype.slice.call(arguments, 1); + // Get id from result + var attachent_ids = attachments.reduce(function(filtered, record) { + if (record.id) { + filtered.push(record.id); + } + return filtered; + }, []); + return this._rpc({ + model: 'account.journal', + method: 'create_invoice_from_attachment', + args: ["", attachent_ids], + context: this.initialState.context, + }).then(function(result) { + self.do_action(result); + }); + }, + + _onUpload: function (event) { + var self = this; + // If hidden upload form don't exists, create it + var $formContainer = this.$('.o_content').find('.o_vendor_bill_upload'); + if (!$formContainer.length) { + $formContainer = $(qweb.render('account.BillsHiddenUploadForm', {widget: this})); + $formContainer.appendTo(this.$('.o_content')); + } + // Trigger the input to select a file + this.$('.o_vendor_bill_upload .o_input_file').click(); + }, + } + return UploadBillMixin; +}); + + +odoo.define('account.bills.tree', function (require) { +"use strict"; + var core = require('web.core'); + var ListController = require('web.ListController'); + var ListView = require('web.ListView'); + var UploadBillMixin = require('account.upload.bill.mixin'); + var viewRegistry = require('web.view_registry'); + + var BillsListController = ListController.extend(UploadBillMixin, { + buttons_template: 'BillsListView.buttons', + events: _.extend({}, ListController.prototype.events, { + 'click .o_button_upload_bill': '_onUpload', + 'change .o_vendor_bill_upload .o_form_binary_form': '_onAddAttachment', + }), + }); + + var BillsListView = ListView.extend({ + config: _.extend({}, ListView.prototype.config, { + Controller: BillsListController, + }), + }); + + viewRegistry.add('account_tree', BillsListView); +}); + +odoo.define('account.dashboard.kanban', function (require) { +"use strict"; + var core = require('web.core'); + var KanbanController = require('web.KanbanController'); + var KanbanView = require('web.KanbanView'); + var UploadBillMixin = require('account.upload.bill.mixin'); + var viewRegistry = require('web.view_registry'); + + var DashboardKanbanController = KanbanController.extend(UploadBillMixin, { + events: _.extend({}, KanbanController.prototype.events, { + 'click .o_button_upload_bill': '_onUpload', + 'change .o_vendor_bill_upload .o_form_binary_form': '_onAddAttachment', + }), + /** + * We override _onUpload (from the upload bill mixin) to pass default_journal_id + * and default_move_type in context. + * + * @override + */ + _onUpload: function (event) { + var kanbanRecord = $(event.currentTarget).closest('.o_kanban_record').data('record'); + this.initialState.context['default_journal_id'] = kanbanRecord.id; + if ($(event.currentTarget).attr('journal_type') == 'sale') { + this.initialState.context['default_move_type'] = 'out_invoice' + } else if ($(event.currentTarget).attr('journal_type') == 'purchase') { + this.initialState.context['default_move_type'] = 'in_invoice' + } + UploadBillMixin._onUpload.apply(this, arguments); + } + }); + + var DashboardKanbanView = KanbanView.extend({ + config: _.extend({}, KanbanView.prototype.config, { + Controller: DashboardKanbanController, + }), + }); + + viewRegistry.add('account_dashboard_kanban', DashboardKanbanView); +}); |
