diff --git a/addons/hr_expense/models/__init__.py b/addons/hr_expense/models/__init__.py index af1e04d2dd2..4b256421e3b 100644 --- a/addons/hr_expense/models/__init__.py +++ b/addons/hr_expense/models/__init__.py @@ -7,3 +7,4 @@ from . import hr_expense from . import product_template from . import res_config_settings from . import account_journal_dashboard +from . import res_company diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index f2037823216..07fa8835927 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -181,15 +181,21 @@ class HrExpense(models.Model): if any(attachment.res_id or attachment.res_model != 'hr.expense' for attachment in attachments): raise UserError(_("Invalid attachments!")) + product = self.env['product.product'].search([('default_code', '=', 'EXP_GEN')]) + for attachment in attachments: expense = self.env['hr.expense'].create({ 'name': attachment.name.split('.')[0], 'unit_amount': 0, + 'product_id': product.id }) - attachment.write({'res_id': expense.id}) - expense.message_post(body=_('Uploaded Attachment'), attachment_ids=[attachment.id]) + expense.message_post(body=_('Uploaded Attachment')) + attachment.write({ + 'res_model': 'hr.expense', + 'res_id': expense.id, + }) + attachment.register_as_main_attachment() expenses += expense - if len(expenses) == 1: return { 'name': _('Generated Expense'), diff --git a/addons/hr_expense/models/res_company.py b/addons/hr_expense/models/res_company.py new file mode 100644 index 00000000000..7c2549f47bf --- /dev/null +++ b/addons/hr_expense/models/res_company.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class ResCompany(models.Model): + _inherit = 'res.company' + + expense_extract_show_ocr_option_selection = fields.Selection([ + ('no_send', 'Do not digitalize bills'), + ('manual_send', "Digitalize bills on demand only"), + ('auto_send', 'Digitalize all bills automatically')], string="Send mode on expense attachments", + required=True, default='auto_send') diff --git a/addons/hr_expense/models/res_config_settings.py b/addons/hr_expense/models/res_config_settings.py index 1dfe455cad9..17d290531fb 100644 --- a/addons/hr_expense/models/res_config_settings.py +++ b/addons/hr_expense/models/res_config_settings.py @@ -11,6 +11,10 @@ class ResConfigSettings(models.TransientModel): config_parameter='hr_expense.use_mailgateway') module_hr_payroll_expense = fields.Boolean(string='Reimburse Expenses in Payslip') + module_hr_expense_extract = fields.Boolean(string='Send bills to OCR to generate expenses') + expense_extract_show_ocr_option_selection = fields.Selection(related='company_id.expense_extract_show_ocr_option_selection', + string='Expense processing option', readonly=False) + @api.model def get_values(self): diff --git a/addons/hr_expense/static/src/js/upload_mixin.js b/addons/hr_expense/static/src/js/upload_mixin.js index c94df1c6616..4f6660c8039 100644 --- a/addons/hr_expense/static/src/js/upload_mixin.js +++ b/addons/hr_expense/static/src/js/upload_mixin.js @@ -2,6 +2,7 @@ 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; @@ -43,11 +44,13 @@ var DocumentUploadMixin = { if (!attachent_ids.length) { return self.do_notify(_t("Error"), _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: this.initialState.context, + context: myContext, }).then(function(result) { self.do_action(result); }); diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml index 3b830ee613c..5393460bdd9 100644 --- a/addons/hr_expense/views/hr_expense_views.xml +++ b/addons/hr_expense/views/hr_expense_views.xml @@ -70,8 +70,8 @@