1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
odoo.define('hr_expense.documents.upload.mixin', function (require) {
"use strict";
var core = require('web.core');
var config = require('web.config');
var _t = core._t;
var qweb = core.qweb;
/**
* Mixin for uploading single or multiple documents.
*/
var DocumentUploadMixin = {
start: function () {
// define a unique uploadId and a callback method
this.fileUploadID = _.uniqueId('hr_expense_document_upload');
$(window).on(this.fileUploadID, this._onFileUploaded.bind(this));
return this._super.apply(this, arguments);
},
/**
* @private
*/
_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_expense_documents_upload form.o_form_binary_form');
$binaryForm.submit();
}
},
/**
* @private
*/
_onFileUploaded: function () {
// Callback once attachment have been created, create an expense 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;
}, []);
if (!attachent_ids.length) {
return self.do_notify(false, _t("An error occurred during the upload"));
}
var myContext = this.initialState.context
myContext['isMobile'] = config.device.isMobile
return this._rpc({
model: 'hr.expense',
method: 'create_expense_from_attachments',
args: ["", attachent_ids, this.viewType],
context: myContext,
}).then(function(result) {
self.do_action(result);
});
},
/**
* @private
* @param {Event} event
*/
_onUpload: function (event) {
var self = this;
// If hidden upload form don't exists, create it
var $formContainer = this.$('.o_content').find('.o_expense_documents_upload');
if (!$formContainer.length) {
$formContainer = $(qweb.render('hr.expense.DocumentsHiddenUploadForm', {widget: this}));
$formContainer.appendTo(this.$('.o_content'));
}
// Trigger the input to select a file
this.$('.o_expense_documents_upload .o_input_file').click();
},
};
return DocumentUploadMixin;
});
|