[REF] hr_expense: fix settings using volatile checkboxes

This commit fixes

 * `default_alias_email` is now called use_mailgateway to better reflect its use. When
   unchecked the alias_prefix value is set to False in order to
   reset the alias.
 * empty list message displays receipts alias only if the mailgateway
   option is activated
 * some code cleaning so that get_default_ and set_ methods are put
   into a sole method in order to lessen code size
This commit is contained in:
Thibault Delavallée
2017-06-19 17:37:38 +02:00
committed by Yannick Tivisse
parent 4b5513cfd4
commit 76bf5dc83d
3 changed files with 25 additions and 14 deletions
+2 -1
View File
@@ -309,7 +309,8 @@ class HrExpense(models.Model):
@api.model
def get_empty_list_help(self, help_message):
if help_message:
alias_record = self.env.ref('hr_expense.mail_alias_expense')
use_mailgateway = self.env['ir.config_parameter'].sudo().get_param('hr_expense.use_mailgateway')
alias_record = use_mailgateway and self.env.ref('hr_expense.mail_alias_expense') or False
if alias_record and alias_record.alias_domain and alias_record.alias_name:
link = "<a id='o_mail_test' href='mailto:%(email)s?subject=Lunch%%20with%%20customer%%3A%%20%%2412.32'>%(email)s</a>" % {
'email': '%s@%s' % (alias_record.alias_name, alias_record.alias_domain)
+19 -9
View File
@@ -2,26 +2,36 @@
from odoo import api, fields, models
class HrExpenseConfigSettings(models.TransientModel):
_name = 'hr.expense.config.settings'
_inherit = 'res.config.settings'
alias_prefix = fields.Char('Default Alias Name for Expenses')
alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain"))
group_analytic_accounting = fields.Boolean(string='Analytic Accounting',
group_analytic_accounting = fields.Boolean(
string='Analytic Accounting',
implied_group='analytic.group_analytic_accounting')
group_uom = fields.Boolean("Units of Measure",
group_uom = fields.Boolean(
string="Units of Measure",
implied_group='product.group_uom')
default_alias_email = fields.Boolean(string='Let your employees record expenses by email', default_model='hr.expense.config.settings')
use_mailgateway = fields.Boolean(string='Let your employees record expenses by email')
module_project = fields.Boolean(string="Project")
module_sale = fields.Boolean(string="Customer Billing")
@api.model
def get_default_alias_prefix(self, fields):
alias_name = self.env.ref('hr_expense.mail_alias_expense').alias_name
return {'alias_prefix': alias_name}
def get_default_fields(self, fields):
return dict(
alias_prefix=self.env.ref('hr_expense.mail_alias_expense').alias_name,
use_mailgateway=self.env['ir.config_parameter'].sudo().get_param('hr_expense.use_mailgateway'),
)
@api.multi
def set_default_alias_prefix(self):
for record in self:
self.env.ref('hr_expense.mail_alias_expense').write({'alias_name': record.alias_prefix})
def set_fields(self):
self.env.ref('hr_expense.mail_alias_expense').write({'alias_name': self.alias_prefix})
self.env['ir.config_parameter'].sudo().set_param('hr_expense.use_mailgateway', self.use_mailgateway)
@api.onchange('use_mailgateway')
def _onchange_use_mailgateway(self):
if not self.use_mailgateway:
self.alias_prefix = False
+4 -4
View File
@@ -16,14 +16,14 @@
<div class="row mt16 o_settings_container">
<div class="col-xs-12 col-md-6 o_setting_box" title="You can setup a generic email alias to create incoming expenses easily. Write an email with the receipt in attachment to create an expense line in one click. If the mail subject contains the product's internal reference between brackets, the product will be set automatically. Type the expense amount in the mail subject to set it on the expense too.">
<div class="o_setting_left_pane">
<field name="default_alias_email"/>
<field name="use_mailgateway"/>
</div>
<div class="o_setting_right_pane">
<label string="Emails" for="default_alias_email"/>
<label string="Emails" for="use_mailgateway"/>
<div class="text-muted">
Let your employees record expenses by email
</div>
<div class="content-group" attrs="{'invisible': ['|', ('default_alias_email', '=', False), ('alias_domain', 'in', ['localhost', '', False])]}">
<div class="content-group" attrs="{'invisible': ['|', ('use_mailgateway', '=', False), ('alias_domain', 'in', ['localhost', '', False])]}">
<div class="mt16">
<label string="Email Alias" class="o_light_label"/>
<field name="alias_prefix" class="oe_inline"/>
@@ -31,7 +31,7 @@
<field name="alias_domain" class="oe_inline" readonly="1"/>
</div>
</div>
<div class="content-group" attrs="{'invisible': ['|', ('default_alias_email', '=', False), ('alias_domain', 'not in', ['localhost', '', False])]}">
<div class="content-group" attrs="{'invisible': ['|', ('use_mailgateway', '=', False), ('alias_domain', 'not in', ['localhost', '', False])]}">
<div class="mt16">
<button type="action" name="base_setup.action_general_configuration" icon="fa-arrow-right" string="Setup your domain alias" class="btn-link"/>
</div>