[FIX] hr_expense: Apply miscellaneous fixes
closes odoo/odoo#53834 Taskid: 2229597 X-original-commit: cc125a1fe850941a7bf1cec2cd0392fdf025a60a Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
committed by
Yannick Tivisse
parent
58b3dc6a35
commit
7e5ae026fd
@@ -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 ""
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
@@ -166,6 +166,12 @@
|
||||
<xpath expr="/form/sheet/div[hasclass('oe_button_box')]" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<field name="employee_id" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
</field>
|
||||
<field name="company_id" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -512,7 +518,7 @@
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="expenses" string="Expense">
|
||||
<field name="expense_line_ids" nolabel="1" widget="many2many" domain="[('state', '=', 'draft'), ('employee_id', '=', employee_id), ('company_id', '=', company_id)]" options="{'reload_on_button': True}" context="{'form_view_ref' : 'hr_expense.hr_expense_view_form_without_header', 'default_company_id': company_id}">
|
||||
<field name="expense_line_ids" nolabel="1" widget="many2many" domain="[('state', '=', 'draft'), ('employee_id', '=', employee_id), ('company_id', '=', company_id)]" options="{'reload_on_button': True}" context="{'form_view_ref' : 'hr_expense.hr_expense_view_form_without_header', 'default_company_id': company_id, 'default_employee_id': employee_id}">
|
||||
<tree decoration-danger="is_refused" editable="bottom">
|
||||
<field name="date" optional="show"/>
|
||||
<field name="name"/>
|
||||
@@ -696,7 +702,7 @@
|
||||
<field name="res_model">hr.expense.sheet</field>
|
||||
<field name="view_mode">tree,kanban,form,pivot,graph,activity</field>
|
||||
<field name="search_view_id" ref="hr_expense_sheet_view_search"/>
|
||||
<field name="domain">[('employee_id.user_id', '=', uid), ('state', '!=', 'cancel')]</field>
|
||||
<field name="domain">[('state', '!=', 'cancel')]</field>
|
||||
<field name="context">{'search_default_my_reports': 1}</field>
|
||||
<field name="view_id" ref="view_hr_expense_sheet_dashboard_tree"/>
|
||||
<field name="help" type="html">
|
||||
@@ -760,6 +766,7 @@
|
||||
<field name="res_model">hr.expense.sheet</field>
|
||||
<field name="view_mode">tree,kanban,form,pivot,graph</field>
|
||||
<field name="search_view_id" ref="hr_expense_sheet_view_search"/>
|
||||
<field name="view_id" ref="view_hr_expense_sheet_tree"/>
|
||||
<field name="domain">[]</field>
|
||||
<field name="context">{
|
||||
'search_default_approved': 1,
|
||||
@@ -827,6 +834,32 @@ if records:
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_expense_sheet_approve_action_server" model="ir.actions.server">
|
||||
<field name="name">Approve Report</field>
|
||||
<field name="type">ir.actions.server</field>
|
||||
<field name="model_id" ref="model_hr_expense_sheet"/>
|
||||
<field name="binding_model_id" ref="model_hr_expense_sheet"/>
|
||||
<field name="binding_view_types">list</field>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
if records:
|
||||
action = records.approve_expense_sheets()
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_expense_sheet_post_action_server" model="ir.actions.server">
|
||||
<field name="name">Post Entries</field>
|
||||
<field name="type">ir.actions.server</field>
|
||||
<field name="model_id" ref="model_hr_expense_sheet"/>
|
||||
<field name="binding_model_id" ref="model_hr_expense_sheet"/>
|
||||
<field name="binding_view_types">list</field>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
if records:
|
||||
action = records.action_sheet_move_create()
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="menu_hr_expense_root" name="Expenses" sequence="100" web_icon="hr_expense,static/description/icon.png"/>
|
||||
|
||||
<menuitem id="menu_hr_expense_my_expenses" name="My Expenses" sequence="1" parent="menu_hr_expense_root" groups="base.group_user"/>
|
||||
|
||||
Reference in New Issue
Block a user