From 7e5ae026fd72d6ec0525f2b70820510bc488ec92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20=28avd=29?= Date: Mon, 4 May 2020 09:02:28 +0000 Subject: [PATCH] [FIX] hr_expense: Apply miscellaneous fixes closes odoo/odoo#53834 Taskid: 2229597 X-original-commit: cc125a1fe850941a7bf1cec2cd0392fdf025a60a Signed-off-by: Yannick Tivisse (yti) --- addons/hr_expense/i18n/hr_expense.pot | 6 +++ addons/hr_expense/models/hr_expense.py | 14 ++++--- .../hr_expense/security/ir.model.access.csv | 4 +- addons/hr_expense/views/hr_expense_views.xml | 37 ++++++++++++++++++- 4 files changed, 52 insertions(+), 9 deletions(-) diff --git a/addons/hr_expense/i18n/hr_expense.pot b/addons/hr_expense/i18n/hr_expense.pot index f745ecc2ce7..41b8b7411aa 100644 --- a/addons/hr_expense/i18n/hr_expense.pot +++ b/addons/hr_expense/i18n/hr_expense.pot @@ -1498,6 +1498,12 @@ msgid "" "The accountant can register a payment to reimburse the employee directly." msgstr "" +#. module: hr_expense +#: code:addons/hr_expense/models/hr_expense.py:0 +#, python-format +msgid "The current user has no related employee. Please, create one." +msgstr "" + #. module: hr_expense #: model_terms:ir.ui.view,arch_db:hr_expense.hr_expense_template_register msgid "" diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 334535eb993..57a7ca6fa7e 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -18,7 +18,10 @@ class HrExpense(models.Model): @api.model def _default_employee_id(self): - return self.env.user.employee_id + employee = self.env.user.employee_id + if not employee and not self.env.user.has_group('hr_expense.group_hr_expense_team_approver'): + raise ValidationError(_('The current user has no related employee. Please, create one.')) + return employee @api.model def _default_product_uom_id(self): @@ -172,8 +175,9 @@ class HrExpense(models.Model): @api.depends('company_id') def _compute_employee_id(self): - for expense in self: - expense.employee_id = self.env.user.with_company(expense.company_id).employee_id + if not self.env.context.get('default_employee_id'): + for expense in self: + expense.employee_id = self.env.user.with_company(expense.company_id).employee_id @api.onchange('product_id', 'date', 'account_id') def _onchange_product_id_date_account_id(self): @@ -756,10 +760,10 @@ class HrExpenseSheet(models.Model): ('done', 'Paid'), ('cancel', 'Refused') ], string='Status', index=True, readonly=True, tracking=True, copy=False, default='draft', required=True, help='Expense Report State') - employee_id = fields.Many2one('hr.employee', string="Employee", required=True, readonly=True, tracking=True, states={'draft': [('readonly', False)]}, default=_default_employee_id, check_company=True) + employee_id = fields.Many2one('hr.employee', string="Employee", required=True, readonly=True, tracking=True, states={'draft': [('readonly', False)]}, default=_default_employee_id, check_company=True, domain= lambda self: self.env['hr.expense']._get_employee_id_domain()) address_id = fields.Many2one('res.partner', compute='_compute_from_employee_id', store=True, readonly=False, copy=True, string="Employee Home Address", check_company=True) payment_mode = fields.Selection(related='expense_line_ids.payment_mode', default='own_account', readonly=True, string="Paid By", tracking=True) - user_id = fields.Many2one('res.users', 'Manager', compute='_compute_from_employee_id', store=True, readonly=True, copy=False, states={'draft': [('readonly', False)]}, tracking=True) + user_id = fields.Many2one('res.users', 'Manager', compute='_compute_from_employee_id', store=True, readonly=True, copy=False, states={'draft': [('readonly', False)]}, tracking=True, domain=lambda self: [('groups_id', 'in', self.env.ref('hr_expense.group_hr_expense_team_approver').id)]) total_amount = fields.Monetary('Total Amount', currency_field='currency_id', compute='_compute_amount', store=True, tracking=True) company_id = fields.Many2one('res.company', string='Company', required=True, readonly=True, states={'draft': [('readonly', False)]}, default=lambda self: self.env.company) currency_id = fields.Many2one('res.currency', string='Currency', readonly=True, states={'draft': [('readonly', False)]}, default=lambda self: self.env.company.currency_id) diff --git a/addons/hr_expense/security/ir.model.access.csv b/addons/hr_expense/security/ir.model.access.csv index fa7bbe9f799..d768978e197 100644 --- a/addons/hr_expense/security/ir.model.access.csv +++ b/addons/hr_expense/security/ir.model.access.csv @@ -5,8 +5,8 @@ access_hr_expense_user,hr.expense.user,model_hr_expense,hr_expense.group_hr_expe access_hr_expense_sheet_user,hr.expense.sheet.user,model_hr_expense_sheet,hr_expense.group_hr_expense_team_approver,1,1,1,1 access_hr_expense_manager,hr.expense.manager,model_hr_expense,hr_expense.group_hr_expense_manager,1,1,1,1 access_hr_expense_sheet_manager,hr.expense.sheet.manager,model_hr_expense_sheet,hr_expense.group_hr_expense_manager,1,1,1,1 -access_product_product_hr_expense_user,product.product.hr.expense.user,product.model_product_product,hr_expense.group_hr_expense_team_approver,1,1,1,1 -access_product_template_hr_expense_user,product.template.hr.expense.user,product.model_product_template,hr_expense.group_hr_expense_team_approver,1,1,1,1 +access_product_product_hr_expense_user,product.product.hr.expense.user,product.model_product_product,hr_expense.group_hr_expense_manager,1,1,1,1 +access_product_template_hr_expense_user,product.template.hr.expense.user,product.model_product_template,hr_expense.group_hr_expense_manager,1,1,1,1 access_uom_uom_hr_expense_user,uom.uom.hr.expense.user,uom.model_uom_uom,hr_expense.group_hr_expense_team_approver,1,1,1,1 access_account_journal_user,account.journal.user,account.model_account_journal,hr_expense.group_hr_expense_team_approver,1,1,1,1 access_account_journal_employee,account.journal.employee,account.model_account_journal,base.group_user,1,0,0,0 diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml index a43642472bb..36d26f04db8 100644 --- a/addons/hr_expense/views/hr_expense_views.xml +++ b/addons/hr_expense/views/hr_expense_views.xml @@ -166,6 +166,12 @@ 1 + + 1 + + + 1 + @@ -512,7 +518,7 @@ - + @@ -696,7 +702,7 @@ hr.expense.sheet tree,kanban,form,pivot,graph,activity - [('employee_id.user_id', '=', uid), ('state', '!=', 'cancel')] + [('state', '!=', 'cancel')] {'search_default_my_reports': 1} @@ -760,6 +766,7 @@ hr.expense.sheet tree,kanban,form,pivot,graph + [] { 'search_default_approved': 1, @@ -827,6 +834,32 @@ if records: + + Approve Report + ir.actions.server + + + list + code + +if records: + action = records.approve_expense_sheets() + + + + + Post Entries + ir.actions.server + + + list + code + +if records: + action = records.action_sheet_move_create() + + +