[IMP] various: Clean settings UX (back2basics)
TaskID: 2028958 closes odoo/odoo#35551 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
committed by
Yannick Tivisse
parent
1576c91c9a
commit
ebaa132d5d
@@ -34,7 +34,7 @@
|
||||
<label for="chart_template_id" string="Package" class="col-lg-3 o_light_label"/>
|
||||
<field name="chart_template_id" widget="selection"/>
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button name="%(account.open_account_charts_modules)d" icon="fa-arrow-right" type="action" string="Install More Packages" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -145,7 +145,7 @@
|
||||
Record transactions in foreign currencies
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_multi_currency', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(base.action_currency_all_form)d" icon="fa-arrow-right" type="action" string="Activate Other Currencies" class="btn-link"/>
|
||||
</div>
|
||||
<div class="row mt16">
|
||||
@@ -256,7 +256,7 @@
|
||||
<div class="text-muted">
|
||||
Define the smallest coinage of the currency used to pay by cash.
|
||||
</div>
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(account.rounding_list_action)d" icon="fa-arrow-right"
|
||||
type="action" string="Cash Roundings" class="btn-link"
|
||||
attrs="{'invisible': [('group_cash_rounding', '=', False)]}"/>
|
||||
@@ -504,10 +504,10 @@
|
||||
Track costs & revenues by project, department, etc.
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_analytic_accounting', '=', False)]}">
|
||||
<div class="mt16" id="analytic_account_link">
|
||||
<div class="mt8" id="analytic_account_link">
|
||||
<button name="%(analytic.action_analytic_account_form)d" icon="fa-arrow-right" type="action" string="Analytic Accounts" class="btn-link"/>
|
||||
</div>
|
||||
<div id="analytic_account_groups_link">
|
||||
<div class="mt8" id="analytic_account_groups_link">
|
||||
<button name="%(analytic.account_analytic_group_action)d" icon="fa-arrow-right" type="action" string="Analytic Account Groups" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -523,7 +523,7 @@
|
||||
Allows to tag analytic entries and to manage analytic distributions
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_analytic_tags', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(analytic.account_analytic_tag_action)d" icon="fa-arrow-right" type="action" string="Analytic Tags" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='analytic_account_link']" position="after">
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button name="%(account_analytic_default.action_analytic_default_list)d" icon="fa-arrow-right" type="action" string="Default Analytic Values" class="btn-link"/>
|
||||
</div>
|
||||
</xpath>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<field name="inherit_id" ref="base_setup.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<div name='auth_ldap_right_pane' position="inside">
|
||||
<div attrs="{'invisible': [('module_auth_ldap','=',False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_auth_ldap','=',False)]}">
|
||||
<button type="action" name="%(auth_ldap.action_ldap_installer)d" string="LDAP Server" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<div id="msg_module_auth_oauth" position="replace">
|
||||
<div class="content-group" attrs="{'invisible': [('module_auth_oauth','=',False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button type="action" name="%(auth_oauth.action_oauth_provider)d" string="OAuth Providers" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<field name="auth_signup_uninvited" class="o_light_label" widget="radio" required="True"/>
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('auth_signup_uninvited','=','b2b')]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button type="object" name="open_template_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -55,7 +55,9 @@
|
||||
Companies
|
||||
</span>
|
||||
<br/>
|
||||
<button name="%(base.action_res_company_form)d" icon="fa-arrow-right" type="action" string="Manage Companies" class="btn-link"/>
|
||||
<div class="mt8">
|
||||
<button name="%(base.action_res_company_form)d" icon="fa-arrow-right" type="action" string="Manage Companies" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -73,7 +75,9 @@
|
||||
Languages
|
||||
</span>
|
||||
</div>
|
||||
<button name="%(base.res_lang_act_window)d" icon="fa-arrow-right" type="action" string="Manage Languages" class="btn-link"/>
|
||||
<div class="mt8">
|
||||
<button name="%(base.res_lang_act_window)d" icon="fa-arrow-right" type="action" string="Manage Languages" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -109,7 +113,7 @@
|
||||
<label for="external_report_layout_id" string="Layout" class="col-3 col-lg-3 o_light_label"/>
|
||||
<field name="external_report_layout_id" domain="[('type','=', 'qweb')]" class="oe_inline"/>
|
||||
</div>
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(base.action_base_document_layout_configurator)d" string="Configure Document Layout" type="action" class="oe_link" icon="fa-arrow-right"/>
|
||||
<button name="edit_external_header" string="Edit Layout" type="object" class="oe_link" groups="base.group_no_one"/>
|
||||
<button name="%(web.action_report_externalpreview)d" string="Preview Document" type="action" class="oe_link" groups="base.group_no_one"/>
|
||||
@@ -166,7 +170,7 @@
|
||||
Set custom access rights for new users
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('user_default_rights','=',False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button type="object" name="open_default_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -115,7 +115,7 @@ class Lead(models.Model):
|
||||
email_state = fields.Selection([
|
||||
('correct', 'Correct'),
|
||||
('incorrect', 'Incorrect'),
|
||||
('empty', 'Empty')], string='Email quality', default="empty", compute="_compute_email_state", store=True)
|
||||
('empty', 'Empty')], string='Email Quality', default="empty", compute="_compute_email_state", store=True)
|
||||
|
||||
# Only used for type opportunity
|
||||
planned_revenue = fields.Monetary('Expected Revenue', currency_field='company_currency', tracking=True)
|
||||
|
||||
@@ -14,7 +14,6 @@ class ResConfigSettings(models.TransientModel):
|
||||
module_crm_iap_lead = fields.Boolean("Generate new leads based on their country, industries, size, etc.")
|
||||
module_crm_iap_lead_website = fields.Boolean("Create Leads/Opportunities from your website's traffic")
|
||||
lead_mining_in_pipeline = fields.Boolean("Create a lead mining request directly from the opportunity pipeline.", config_parameter='crm.lead_mining_in_pipeline')
|
||||
crm_phone_valid_method = fields.Selection(related="company_id.phone_international_format", required=True, readonly=False)
|
||||
predictive_lead_scoring_start_date = fields.Date(string='Lead Scoring Starting Date', compute="_compute_pls_start_date", inverse="_inverse_pls_start_date_str")
|
||||
predictive_lead_scoring_start_date_str = fields.Char(string='Lead Scoring Starting Date in String', default=date.today().strftime('%Y-%m-%d'), config_parameter='crm.pls_start_date')
|
||||
predictive_lead_scoring_fields = fields.Many2many('crm.lead.scoring.frequency.field', string='Lead Scoring Frequency Fields', compute="_compute_pls_fields", inverse="_inverse_pls_fields_str")
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_use_lead"/>
|
||||
<div class="text-muted">
|
||||
Add a qualification step before creating an opportunity
|
||||
Add a qualification step before the creation of an opportunity
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -30,9 +30,9 @@
|
||||
<field name="generate_lead_from_alias"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="generate_lead_from_alias" string="Email Alias"/>
|
||||
<label for="generate_lead_from_alias" string="Incoming Emails"/>
|
||||
<div class="text-muted">
|
||||
Incoming emails create leads
|
||||
Create leads from incoming emails
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('generate_lead_from_alias','=',False)]}">
|
||||
<div class="mt16">
|
||||
@@ -49,6 +49,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box" title="This can be used to compute statistical probability to close a lead">
|
||||
<div class="o_setting_left_pane"></div>
|
||||
<div class="o_setting_right_pane">
|
||||
@@ -56,16 +58,16 @@
|
||||
<div class="text-muted">
|
||||
Let statistical analysis determine the probability to close a lead
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt16">
|
||||
Fields used in probability computation:
|
||||
<field name="predictive_lead_scoring_fields" class="oe_inline" widget="many2many_tags"/>
|
||||
<field name="predictive_lead_scoring_fields_str" invisible="1"/>
|
||||
</div>
|
||||
<div class="mt16">
|
||||
Consider leads created as of the
|
||||
<field name="predictive_lead_scoring_start_date_str" invisible="1"/>
|
||||
<field name="predictive_lead_scoring_start_date"/>
|
||||
</div>
|
||||
<div>
|
||||
Consider following fields in computation
|
||||
<field name="predictive_lead_scoring_fields" widget="many2many_checkboxes"/>
|
||||
<field name="predictive_lead_scoring_fields_str" invisible="1"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -77,14 +79,12 @@
|
||||
</div>
|
||||
|
||||
<div class="o_setting_right_pane" id="crm_iap_lead_website_settings">
|
||||
<label string="Website Lead Generation" for="module_crm_iap_lead_website"/>
|
||||
<label string="Visits to Leads" for="module_crm_iap_lead_website"/>
|
||||
<div class="text-muted">
|
||||
Convert visitors of your website into leads and perform data enrichment based on their IP address.
|
||||
Convert visitors of your website into leads and perform data enrichment based on their IP address
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_crm_iap_lead"/>
|
||||
@@ -93,23 +93,7 @@
|
||||
<div class="o_setting_right_pane" id="crm_iap_lead_settings">
|
||||
<label string="Lead Mining" for="module_crm_iap_lead"/>
|
||||
<div class="text-muted">
|
||||
Generate new leads based on their country, industries, size, etc.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Contacts</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-lg-6 o_setting_box">
|
||||
<div class="o_setting_right_pane" title="Always encode phone numbers using international format. Otherwise numbers coming from the company's country are nationally formatted. International numbers are always using international format.">
|
||||
<b>Phone Formatting</b>
|
||||
<div class="text-muted">
|
||||
Format phone numbers based on national conventions
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16">
|
||||
<field name="crm_phone_valid_method" widget="radio" class="o_light_label"/>
|
||||
</div>
|
||||
Generate new leads based on their country, industry, size, etc.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='delivery_carrier']" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_delivery','=',False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_delivery','=',False)]}">
|
||||
<button name="%(delivery.action_delivery_carrier_form)d" icon="fa-arrow-right" type="action" string="Shipping Methods" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<label for="digest_id" class="o_light_label"/>
|
||||
<field name="digest_id" class="oe_inline"/>
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button type="action" name="%(digest.digest_digest_action)d" string="Configure Digest Emails" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
<field name="inherit_id" ref="mail.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<div id="mail_alias_domain" position="after">
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button type="action"
|
||||
name="%(action_email_server_tree)d"
|
||||
string="Incoming Email Servers" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button type="action"
|
||||
name="%(base.action_ir_mail_server_list)d"
|
||||
string="Outgoing Email Servers" icon="fa-arrow-right" class="btn-link"/>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div id="msg_module_google_drive" position="replace">
|
||||
<div class="content-group"
|
||||
attrs="{'invisible': [('module_google_drive','=',False)]}">
|
||||
<div class="mt-2 row">
|
||||
<div class="mt8 row">
|
||||
<div class="col-sm">
|
||||
<field name="is_google_drive_token_generated" invisible="1"/>
|
||||
<div role="alert"
|
||||
@@ -23,23 +23,23 @@
|
||||
</div>
|
||||
<div class="col-sm text-center"
|
||||
attrs="{'invisible': [('is_google_drive_token_generated', '=', True)]}">
|
||||
<button class="btn btn-link pt-0"
|
||||
<button class="btn btn-link"
|
||||
name="action_setup_token"
|
||||
type="object"><i class="fa fa-arrow-right"></i> Set up token</button>
|
||||
</div>
|
||||
<div class="col-sm text-center"
|
||||
attrs="{'invisible': [('is_google_drive_token_generated', '=', False)]}">
|
||||
<button class="btn btn-link pt-0"
|
||||
<button class="btn btn-link"
|
||||
name="action_setup_token"
|
||||
type="object"><i class="fa fa-arrow-right"></i> Reset token</button>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button type="action"
|
||||
name="%(action_google_drive_users_config)d"
|
||||
string="Google Drive Templates"
|
||||
icon="fa-arrow-right"
|
||||
class="btn-link"/>
|
||||
class="btn-link pl-0"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,12 +10,12 @@ class ResConfigSettings(models.TransientModel):
|
||||
'resource.calendar', 'Company Working Hours',
|
||||
related='company_id.resource_calendar_id', readonly=False)
|
||||
module_hr_org_chart = fields.Boolean(string="Organizational Chart")
|
||||
module_hr_presence = fields.Boolean(string="Advanced Employees Presence Check Based on")
|
||||
module_hr_skills = fields.Boolean(string="Employee Skills and Resumé")
|
||||
hr_presence_control_login = fields.Boolean(string="The system login (User status on chat)", config_parameter='hr.hr_presence_control_login')
|
||||
hr_presence_control_email = fields.Boolean(string="The amount of sent emails", config_parameter='hr_presence.hr_presence_control_email')
|
||||
hr_presence_control_ip = fields.Boolean(string="The IP address", config_parameter='hr_presence.hr_presence_control_ip')
|
||||
module_hr_attendance = fields.Boolean(string="The Attendance module.")
|
||||
module_hr_presence = fields.Boolean(string="Advanced Presence Control")
|
||||
module_hr_skills = fields.Boolean(string="Skills Management")
|
||||
hr_presence_control_login = fields.Boolean(string="Based on user status in system", config_parameter='hr.hr_presence_control_login')
|
||||
hr_presence_control_email = fields.Boolean(string="Based on number of emails sent", config_parameter='hr_presence.hr_presence_control_email')
|
||||
hr_presence_control_ip = fields.Boolean(string="Based on IP Address", config_parameter='hr_presence.hr_presence_control_ip')
|
||||
module_hr_attendance = fields.Boolean(string="Based on attendances")
|
||||
hr_presence_control_email_amount = fields.Integer(related="company_id.hr_presence_control_email_amount", readonly=False)
|
||||
hr_presence_control_ip_list = fields.Char(related="company_id.hr_presence_control_ip_list", readonly=False)
|
||||
hr_employee_self_edit = fields.Boolean(string="Employee Edition", config_parameter='hr.hr_employee_self_edit')
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[hasclass('settings')]" position="inside">
|
||||
<div class="app_settings_block" data-string="Employees" string="Employees" data-key="hr" groups="hr.group_hr_manager">
|
||||
<h2>Employees</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
@@ -16,22 +17,22 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_hr_skills"/>
|
||||
<div class="text-muted">
|
||||
Enrich Employees Profiles with Resume, Skills and knowledge
|
||||
Enrich employee profiles with skills and resumes
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box" title="Presence of employees">
|
||||
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Control presence of employees</span>
|
||||
<span class="o_form_label">Presence Control</span>
|
||||
<div class="content-group" name="hr_presence_options">
|
||||
<div class="row">
|
||||
<field name="module_hr_attendance" class="col-lg-1 ml16"/>
|
||||
<label for="module_hr_attendance" class="col-lg-10 o_light_label"/>
|
||||
<label for="module_hr_attendance" class="o_light_label"/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<field name="hr_presence_control_login" class="col-lg-1 ml16"/>
|
||||
<label for="hr_presence_control_login" class="col-lg-10 o_light_label"/>
|
||||
<label for="hr_presence_control_login" class="o_light_label"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -47,20 +48,19 @@
|
||||
</div>
|
||||
<div class="row mt-1" attrs="{'invisible': [('module_hr_presence', '=', False)]}">
|
||||
<field name="hr_presence_control_email" class="col-lg-1 ml16"/>
|
||||
<label for="hr_presence_control_email" class="col-lg-10 o_light_label"/>
|
||||
<label for="hr_presence_control_email" class="o_light_label"/>
|
||||
</div>
|
||||
<div class="row ml-4" attrs="{'invisible': ['|', ('module_hr_presence', '=', False), ('hr_presence_control_email', '=', False)]}">
|
||||
<span class="mr-2">At least </span>
|
||||
<field name="hr_presence_control_email_amount"/>
|
||||
<span> sent emails</span>
|
||||
<div class="row ml32" attrs="{'invisible': ['|', ('module_hr_presence', '=', False), ('hr_presence_control_email', '=', False)]}">
|
||||
<span class="ml8 mr-2">Minimum number of emails to sent </span>
|
||||
<field name="hr_presence_control_email_amount" class="ml-2 oe_inline"/>
|
||||
</div>
|
||||
<div class="row" attrs="{'invisible': [('module_hr_presence', '=', False)]}">
|
||||
<field name="hr_presence_control_ip" class="col-lg-1 ml16"/>
|
||||
<label for="hr_presence_control_ip" class="col-lg-10 o_light_label"/>
|
||||
<label for="hr_presence_control_ip" class="o_light_label"/>
|
||||
</div>
|
||||
<div class="row ml-4" attrs="{'invisible': ['|', ('module_hr_presence', '=', False), ('hr_presence_control_ip', '=', False)]}">
|
||||
<span class="mr-2">IP List (comma separated):</span>
|
||||
<field name="hr_presence_control_ip_list"/>
|
||||
<div class="row ml32" attrs="{'invisible': ['|', ('module_hr_presence', '=', False), ('hr_presence_control_ip', '=', False)]}">
|
||||
<span class="ml8 mr-2">IP Addresses (comma-separated)</span>
|
||||
<field name="hr_presence_control_ip_list" class="ml-2 oe_inline"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -94,7 +94,7 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_hr_org_chart"/>
|
||||
<div class="text-muted">
|
||||
Show organizational chart on employee form.
|
||||
Show organizational chart on employee form
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -108,7 +108,7 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="hr_employee_self_edit"/>
|
||||
<div class="text-muted">
|
||||
Allow employees to update their own data.
|
||||
Allow employees to update their own data
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,20 +9,20 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[hasclass('settings')]" position="inside">
|
||||
<div class="app_settings_block" data-string="Expenses" string="Expenses" data-key="hr_expense" groups="hr_expense.group_hr_expense_manager">
|
||||
<h2>Recording</h2>
|
||||
<h2>Expenses</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-xs-12 col-md-6 o_setting_box" title="Send an email to this email alias with the receipt in attachment to create an expense in one click. If the first word of the mail subject contains the product's internal reference or the product name, the corresponding product will automatically be set. Type the expense amount in the mail subject to set it on the expense too.">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="use_mailgateway"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Emails" for="use_mailgateway"/>
|
||||
<label string="Incoming Emails" for="use_mailgateway"/>
|
||||
<div class="text-muted">
|
||||
Let your employees record expenses by email
|
||||
Create expenses from incoming emails
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': ['|', ('use_mailgateway', '=', False), ('alias_domain', 'in', ['localhost', '', False])]}">
|
||||
<div class="mt16">
|
||||
<label for="expense_alias_prefix" string="Email Alias" class="o_light_label"/>
|
||||
<label for="expense_alias_prefix" string="Alias" class="o_light_label"/>
|
||||
<field name="expense_alias_prefix" class="oe_inline"/>
|
||||
<span>@</span>
|
||||
<field name="alias_domain" class="oe_inline" readonly="1" force_save="1"/>
|
||||
@@ -35,15 +35,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Reimbursement</h2>
|
||||
<div class="row mt16 o_settings_container" id="hr_payroll_accountant">
|
||||
<div class="col-lg-6 col-12 o_setting_box">
|
||||
<div class="col-lg-6 col-12 o_setting_box" id="hr_payroll_accountant">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_hr_payroll_expense" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_hr_payroll_expense" string="Reimburse Expenses in Payslip"/>
|
||||
<label for="module_hr_payroll_expense" string="Reimburse in Payslip"/>
|
||||
<div class="text-muted">
|
||||
Expenses can be reimbursed in payslips.
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<div id="interview_forms" position="replace">
|
||||
<div class="content-group">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(survey.action_survey_form)d" icon="fa-arrow-right" type="action" string="Interview Forms" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
module_project_timesheet_synchro = fields.Boolean("Awesome Timesheet")
|
||||
module_project_timesheet_holidays = fields.Boolean("Time Off")
|
||||
module_project_timesheet_holidays = fields.Boolean("Record Time Off")
|
||||
project_time_mode_id = fields.Many2one(
|
||||
'uom.uom', related='company_id.project_time_mode_id', string='Project Time Unit', readonly=False,
|
||||
help="This will set the unit of measure used in projects and tasks.\n"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16">
|
||||
<field name="timesheet_encode_uom_id" options="{'no_create': True}" required="1" class="col-lg-5"/>
|
||||
<field name="timesheet_encode_uom_id" options="{'no_create': True, 'no_open': True}" required="1" class="col-lg-5"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -81,7 +81,7 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_project_timesheet_holidays"/>
|
||||
<div class="text-muted">
|
||||
Validated time off create timesheets automatically.
|
||||
Create timesheets upon time off validation
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div id="module_project_timesheet_holidays"/>
|
||||
|
||||
@@ -26,9 +26,9 @@ if records:
|
||||
<div class="text-muted">
|
||||
View your IAP Services and recharge your credits
|
||||
</div>
|
||||
</div>
|
||||
<div class='o_setting_right_pane'>
|
||||
<button name="%(iap.open_iap_account)d" icon="fa-arrow-right" type="action" string="View My Services" class="btn-link"/>
|
||||
<div class='mt8'>
|
||||
<button name="%(iap.open_iap_account)d" icon="fa-arrow-right" type="action" string="View My Services" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<div name="l10n_eu_service_right_pane" position="inside">
|
||||
<div class="content-group" attrs="{'invisible': [('module_l10n_eu_service', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(l10n_eu_service.action_eu_service)d" icon="fa-arrow-right" type="action" string="Add new countries" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form.inherit.lunch</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="priority" eval="90"/>
|
||||
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[hasclass('settings')]" position="inside">
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
Configure your activity types
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(mail.mail_activity_type_action)d" string="Activity Types" type="action" class="oe_link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,11 +7,11 @@ from odoo import api, fields, models
|
||||
class ResConfigSettings(models.TransientModel):
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
group_mass_mailing_campaign = fields.Boolean(string="Mass Mailing Campaigns", implied_group='mass_mailing.group_mass_mailing_campaign', help="""This is useful if your marketing campaigns are composed of several emails""")
|
||||
mass_mailing_outgoing_mail_server = fields.Boolean(string="Specific Mail Server", config_parameter='mass_mailing.outgoing_mail_server',
|
||||
group_mass_mailing_campaign = fields.Boolean(string="Mailing Campaigns", implied_group='mass_mailing.group_mass_mailing_campaign', help="""This is useful if your marketing campaigns are composed of several emails""")
|
||||
mass_mailing_outgoing_mail_server = fields.Boolean(string="Dedicated Server", config_parameter='mass_mailing.outgoing_mail_server',
|
||||
help='Use a specific mail server in priority. Otherwise Odoo relies on the first outgoing mail server available (based on their sequencing) as it does for normal mails.')
|
||||
mass_mailing_mail_server_id = fields.Many2one('ir.mail_server', string='Mail Server', config_parameter='mass_mailing.mail_server_id')
|
||||
show_blacklist_buttons = fields.Boolean(string="Show blacklist buttons on unsubscribe page",
|
||||
show_blacklist_buttons = fields.Boolean(string="Blacklist Option when Unsubscribing",
|
||||
config_parameter='mass_mailing.show_blacklist_buttons',
|
||||
help="""Allow the recipient to manage himself his state in the blacklist via the unsubscription page.""")
|
||||
|
||||
|
||||
@@ -17,14 +17,7 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_mass_mailing_campaign"/>
|
||||
<div class="text-muted">
|
||||
Manage campaigns of mass emails with process stages
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_mass_mailing_campaign', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<button name="%(utm.action_view_utm_stage)d"
|
||||
icon="fa-arrow-right" type="action" string="Campaign Stages"
|
||||
class="btn-link"/>
|
||||
</div>
|
||||
Manage mass mailing campaigns
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,12 +28,15 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="mass_mailing_outgoing_mail_server"/>
|
||||
<div class="text-muted">
|
||||
Use a specific mail server for mailings
|
||||
Use a dedicated server for mailings
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('mass_mailing_outgoing_mail_server', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<field name="mass_mailing_mail_server_id" options="{'no_create': True, 'no_open': True}"/>
|
||||
</div>
|
||||
<div class="mt8">
|
||||
<button type="action" name="base.action_ir_mail_server_list" string="Configure Email Server" icon="fa-arrow-right" class="oe_link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -53,7 +49,7 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="show_blacklist_buttons"/>
|
||||
<div class="text-muted">
|
||||
Allow the recipient to manage himself his state in the blacklist via the unsubscription page.
|
||||
Allow recipients to blacklist themselves
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
Process operations at specific work centers based on the routing
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_mrp_routings','=',False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<div>
|
||||
<button name="%(mrp.mrp_routing_action)d" icon="fa-arrow-right" type="action" string="Routings" class="btn-link"/>
|
||||
</div>
|
||||
@@ -33,17 +33,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-12 o_setting_box" attrs="{'invisible': [('group_mrp_routings', '=', False)]}" id="quality_control">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_quality_control" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_quality_control"/>
|
||||
<div class="text-muted">
|
||||
Add quality checks to your work orders
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-12 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_mrp_subcontracting"/>
|
||||
@@ -55,8 +44,18 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6 col-12 o_setting_box" attrs="{'invisible': [('group_mrp_routings', '=', False)]}" id="quality_control">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_quality_control" widget="upgrade_boolean"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="module_quality_control"/>
|
||||
<div class="text-muted">
|
||||
Add quality checks to your work orders
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2>Products</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-lg-6 col-12 o_setting_box" id="mrp_byproduct" title="Add by-products to bills of materials. This can be used to get several finished products as well. Without this option you only do: A + B = C. With the option: A + B = C + D.">
|
||||
<div class="o_setting_left_pane">
|
||||
@@ -96,7 +95,6 @@
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('use_manufacturing_lead','=',False)]}">
|
||||
<div class="mt16" >
|
||||
Move forward deadline start dates by
|
||||
<field name="manufacturing_lead" class="oe_inline"/> days
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,4 +4,3 @@
|
||||
from . import phone_blacklist
|
||||
from . import phone_validation_mixin
|
||||
from . import mail_thread_phone
|
||||
from . import res_company
|
||||
|
||||
@@ -19,21 +19,15 @@ class PhoneValidationMixin(models.AbstractModel):
|
||||
return self.country_id
|
||||
return self.env.company.country_id
|
||||
|
||||
def _phone_get_always_international(self):
|
||||
if 'company_id' in self and self.company_id:
|
||||
return self.company_id.phone_international_format == 'prefix'
|
||||
return self.env.company.phone_international_format == 'prefix'
|
||||
|
||||
def phone_format(self, number, country=None, company=None):
|
||||
country = country or self._phone_get_country()
|
||||
if not country:
|
||||
return number
|
||||
always_international = company.phone_international_format == 'prefix' if company else self._phone_get_always_international()
|
||||
return phone_validation.phone_format(
|
||||
number,
|
||||
country.code if country else None,
|
||||
country.phone_code if country else None,
|
||||
force_format='INTERNATIONAL' if always_international else 'NATIONAL',
|
||||
force_format='INTERNATIONAL',
|
||||
raise_exception=False
|
||||
)
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# -*- 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'
|
||||
|
||||
phone_international_format = fields.Selection([
|
||||
('no_prefix', 'No prefix'),
|
||||
('prefix', 'Add international prefix'),
|
||||
], string="Local Numbers", default="prefix",
|
||||
help="Always encode phone numbers using international format. Otherwise "
|
||||
"numbers coming from the company's country are nationally formatted. "
|
||||
"International numbers are always using international format."
|
||||
)
|
||||
@@ -21,7 +21,7 @@
|
||||
<field name="sale_tax_id" colspan="4" nolabel="1" domain="[('type_tax_use', 'in', ('sale', 'all')), ('company_id', '=', company_id)]"/>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button name="%(account.action_tax_form)d" icon="fa-arrow-right" type="action" string="Taxes" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -43,7 +43,9 @@
|
||||
<field name="group_sale_pricelist" invisible="1"/>
|
||||
<field name="product_pricelist_setting" widget="radio" class="o_light_label"/>
|
||||
</div>
|
||||
<button name="%(product.product_pricelist_action2)d" icon="fa-arrow-right" type="action" string="Pricelists" groups="product.group_sale_pricelist" class="btn-link"/>
|
||||
<div class="mt8">
|
||||
<button name="%(product.product_pricelist_action2)d" icon="fa-arrow-right" type="action" string="Pricelists" groups="product.group_sale_pricelist" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -57,7 +59,7 @@
|
||||
Record transactions in foreign currencies
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_multi_currency', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button type="action" name="%(base.action_currency_form)d" string="Currencies" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
Track customer satisfaction on tasks
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_project_rating', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(project.open_task_type_form)d" icon="fa-arrow-right" type="action" string="Set Email Template to Stages" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -213,7 +213,7 @@ class PurchaseOrder(models.Model):
|
||||
|
||||
@api.onchange('partner_id')
|
||||
def onchange_partner_id_warning(self):
|
||||
if not self.partner_id:
|
||||
if not self.partner_id or not self.env.user.has_group('purchase.group_warning_purchase'):
|
||||
return
|
||||
warning = {}
|
||||
title = False
|
||||
@@ -626,7 +626,7 @@ class PurchaseOrderLine(models.Model):
|
||||
|
||||
@api.onchange('product_id')
|
||||
def onchange_product_id_warning(self):
|
||||
if not self.product_id:
|
||||
if not self.product_id or not self.env.user.has_group('purchase.group_warning_purchase'):
|
||||
return
|
||||
warning = {}
|
||||
title = False
|
||||
|
||||
@@ -21,8 +21,6 @@ class ResConfigSettings(models.TransientModel):
|
||||
help="This default value is applied to any new product created. "
|
||||
"This can be changed in the product detail form.", default="receive")
|
||||
group_warning_purchase = fields.Boolean("Purchase Warnings", implied_group='purchase.group_warning_purchase')
|
||||
group_manage_vendor_price = fields.Boolean("Vendor Pricelists",
|
||||
implied_group="purchase.group_manage_vendor_price")
|
||||
module_account_3way_match = fields.Boolean("3-way matching: purchases, receptions and bills")
|
||||
module_purchase_requisition = fields.Boolean("Purchase Agreements")
|
||||
module_purchase_product_matrix = fields.Boolean("Variants Grid Entry")
|
||||
|
||||
@@ -20,11 +20,6 @@
|
||||
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="group_manage_vendor_price" model="res.groups">
|
||||
<field name="name">Manage Vendor Price</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
</record>
|
||||
|
||||
<record id="group_warning_purchase" model="res.groups">
|
||||
<field name="name">A warning can be set on a product or a customer (Purchase)</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<menuitem
|
||||
action="product.product_supplierinfo_type_action" id="menu_product_pricelist_action2_purchase"
|
||||
parent="menu_procurement_management" sequence="16" groups="purchase.group_manage_vendor_price"/>
|
||||
parent="menu_purchase_config" sequence="1"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_product_in_config_purchase" name="Products"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<label for="po_order_approval"/>
|
||||
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." aria-label="Values set here are company-specific." groups="base.group_multi_company" role="img"/>
|
||||
<div class="text-muted">
|
||||
Managers must approve orders
|
||||
Request managers to approve orders above a minimum amount
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('po_order_approval', '=', False)]}">
|
||||
<div class="row mt16">
|
||||
@@ -39,7 +39,7 @@
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="lock_confirmed_po"/>
|
||||
<div class="text-muted">
|
||||
No longer edit orders once confirmed
|
||||
Automatically lock confirmed orders to prevent edition
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -99,25 +99,6 @@
|
||||
</div>
|
||||
<h2>Products</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box" title="By default, vendor prices can be set manually in the product detail form. If your vendors provide you with pricelist files, this option allows you to easily import them into the system from ‘Purchase > Vendor Pricelists’ menu.">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="group_manage_vendor_price"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="group_manage_vendor_price"/>
|
||||
<div class="text-muted">
|
||||
Import vendor pricelists
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_manage_vendor_price', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<a role="button" class="btn-link" target="_blank" href="https://www.odoo.com/documentation/user/12.0/general/base_import/import_faq.html">
|
||||
<i class="fa fa-arrow-right"/>
|
||||
How to import
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box" title="If installed, the product variants will be added to purchase orders through a grid entry.">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="module_purchase_product_matrix"/>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<field name="inherit_id" ref="purchase.res_config_settings_view_form_purchase"/>
|
||||
<field name="arch" type="xml">
|
||||
<div id="use_purchase_requisition" position="replace">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(purchase_requisition.tender_type_action)d" icon="fa-arrow-right" type="action" string="Agreement Types" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
Sell variants of a product using attributes (size, color, etc.)
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_product_variant','=',False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(product.attribute_action)d" icon="fa-arrow-right" type="action" string="Attributes" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -59,7 +59,7 @@
|
||||
Sell and purchase products in different units of measure
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_uom','=',False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(uom.product_uom_form_action)d" icon="fa-arrow-right" type="action" string="Units of Measure" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -126,7 +126,9 @@
|
||||
<field name="group_sale_pricelist" invisible="1"/>
|
||||
<field name="product_pricelist_setting" widget="radio" class="o_light_label"/>
|
||||
</div>
|
||||
<button name="%(product.product_pricelist_action2)d" icon="fa-arrow-right" type="action" string="Pricelists" groups="product.group_product_pricelist" class="btn-link"/>
|
||||
<div class="mt8">
|
||||
<button name="%(product.product_pricelist_action2)d" icon="fa-arrow-right" type="action" string="Pricelists" groups="product.group_product_pricelist" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -179,12 +181,12 @@
|
||||
<div class="text-muted">
|
||||
Request an online payment to confirm orders
|
||||
</div>
|
||||
<div attrs="{'invisible': [('portal_confirmation_pay', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('portal_confirmation_pay', '=', False)]}">
|
||||
<button name='%(payment.action_payment_acquirer)d' icon="fa-arrow-right" type="action" string="Payment Acquirers" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box" id="confirmation_email_setting" attrs="{'invisible': [('portal_confirmation_pay', '=', False) , ('portal_confirmation_sign', '=', False)]}">
|
||||
<div class="col-12 col-lg-6 o_setting_box" id="confirmation_email_setting" attrs="{'invisible': [('portal_confirmation_pay', '=', False) , ('portal_confirmation_sign', '=', False)]}" groups="base.group_no_one">
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Confirmation Email</span>
|
||||
<div class="text-muted">
|
||||
@@ -394,7 +396,7 @@
|
||||
<div class="text-muted">
|
||||
Generate the invoice automatically when the online payment is confirmed
|
||||
</div>
|
||||
<div attrs="{'invisible': [('automatic_invoice','=',False)]}">
|
||||
<div attrs="{'invisible': [('automatic_invoice','=',False)]}" groups="base.group_no_one">
|
||||
<label for="template_id" class="o_light_label"/>
|
||||
<field name="template_id" class="oe_inline" options="{'no_create': True}"/>
|
||||
</div>
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='sale_coupon']" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<button name="%(sale_coupon.sale_coupon_program_action_promo_program)d" icon="fa-arrow-right" type="action" string="Promotion Programs" class="btn-link"/>
|
||||
</div>
|
||||
<div attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<button name="%(sale_coupon.sale_coupon_program_action_coupon_program)d" icon="fa-arrow-right" type="action" string="Coupon Programs" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
<label for="default_sale_order_template_id" class="o_light_label"/>
|
||||
<field name="default_sale_order_template_id" class="oe_inline"/>
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button name="%(sale_management.sale_order_template_action)d" icon="fa-arrow-right" type="action" string="Quotation Templates" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
Display incoterms on orders & invoices
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_display_incoterm','=',False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button name="%(account.action_incoterms_tree)d" icon="fa-arrow-right" type="action" string="Incoterms" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -33,28 +33,12 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="product_template_action_time_based" model="ir.actions.act_window">
|
||||
<record id="product_template_action_default_services" model="ir.actions.act_window">
|
||||
<field name="name">Products</field>
|
||||
<field name="res_model">product.template</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="sale_timesheet.product_template_view_search_sale_timesheet"/>
|
||||
<field name="context">{'search_default_product_time_based':1, 'default_type': 'service', 'default_invoice_policy': 'delivery', 'default_service_type': 'timesheet', 'default_service_policy': 'delivered_timesheet'}</field>
|
||||
</record>
|
||||
|
||||
<record id="product_template_action_fixed" model="ir.actions.act_window">
|
||||
<field name="name">Products</field>
|
||||
<field name="res_model">product.template</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="sale_timesheet.product_template_view_search_sale_timesheet"/>
|
||||
<field name="context">{'search_default_product_service_fixed':1, 'default_type': 'service', 'default_invoice_policy': 'order', 'default_service_type': 'timesheet', 'default_service_policy': 'ordered_timesheet'}</field>
|
||||
</record>
|
||||
|
||||
<record id="product_template_action_milestone" model="ir.actions.act_window">
|
||||
<field name="name">Products</field>
|
||||
<field name="res_model">product.template</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="sale_timesheet.product_template_view_search_sale_timesheet"/>
|
||||
<field name="context">{'search_default_product_service_milestone':1, 'default_type': 'service', 'default_invoice_policy': 'delivery', 'default_service_type': 'manual', 'default_service_policy': 'delivered_manual'}</field>
|
||||
<field name="context">{'search_default_services': 1, 'default_type': 'service'}</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -17,15 +17,9 @@
|
||||
Sell services and invoice time spent
|
||||
</div>
|
||||
<div class="content-group" name="msg_module_sale_timesheet">
|
||||
<div class="pt-2">
|
||||
<div class="mt8">
|
||||
<div>
|
||||
<button name="%(sale_timesheet.product_template_action_fixed)d" string="Configure your fixed price services" type="action" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
<div>
|
||||
<button name="%(sale_timesheet.product_template_action_time_based)d" string="Configure your time-based services" type="action" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
<div>
|
||||
<button name="%(sale_timesheet.product_template_action_milestone)d" string="Configure your milestone services" type="action" class="btn-link" icon="fa-arrow-right"/>
|
||||
<button name="%(sale_timesheet.product_template_action_default_services)d" string="Configure your services" type="action" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
Set product attributes (e.g. color, size) to manage variants
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('group_product_variant', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('group_product_variant', '=', False)]}">
|
||||
<button name="%(product.attribute_action)d" icon="fa-arrow-right" type="action" string="Attributes" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -218,7 +218,7 @@
|
||||
Sell and purchase products in different units of measure
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('group_uom', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('group_uom', '=', False)]}">
|
||||
<button name="%(uom.product_uom_form_action)d" icon="fa-arrow-right" type="action" string="Units Of Measure" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -234,7 +234,7 @@
|
||||
Manage product packagings (e.g. pack of 6 bottles, box of 10 pieces)
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('group_stock_packaging', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('group_stock_packaging', '=', False)]}">
|
||||
<button name="%(product.action_packaging_view)d" icon="fa-arrow-right" type="action" string="Product Packagings" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -300,7 +300,7 @@
|
||||
Track product location in your warehouse
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('group_stock_multi_locations', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('group_stock_multi_locations', '=', False)]}">
|
||||
<button name="%(stock.action_location_form)d" icon="fa-arrow-right" type="action" string="Locations" class="btn-link"/><br/>
|
||||
<button name="stock.action_putaway_tree" icon="fa-arrow-right" type="action" string="Putaway Rules" class="btn-link"/>
|
||||
</div>
|
||||
@@ -317,7 +317,7 @@
|
||||
Manage several warehouses
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('group_stock_multi_warehouses', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('group_stock_multi_warehouses', '=', False)]}">
|
||||
<button name="%(stock.action_warehouse_form)d" icon="fa-arrow-right" type="action" string="Warehouses" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -333,7 +333,7 @@
|
||||
Use your own routes
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('group_stock_adv_location', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('group_stock_adv_location', '=', False)]}">
|
||||
<button name="%(stock.action_warehouse_form)d" icon="fa-arrow-right" type="action" string="Set Warehouse Routes" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -924,7 +924,7 @@
|
||||
}
|
||||
}
|
||||
button.btn-link:first-child {
|
||||
padding-left: 0;
|
||||
padding: 0;
|
||||
}
|
||||
a.oe-link {
|
||||
font-size: 12px;
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<field name="website_default_lang_id" widget="selection" attrs="{'required': [('website_id', '!=', False)]}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="mt8">
|
||||
<button type="action" name="%(base.action_view_base_language_install)d" string="Install new language" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -125,7 +125,7 @@
|
||||
<div class="mt8">
|
||||
<field name="auth_signup_uninvited" class="o_light_label" widget="radio" required="True"/>
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="mt8 content-group">
|
||||
<button type="object" name="open_template_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -295,7 +295,7 @@
|
||||
<field name="group_multi_website"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label string="Multi-Websites" for="group_multi_website"/>
|
||||
<label string="Multi-Website" for="group_multi_website"/>
|
||||
<div class="text-muted">
|
||||
Manage multiple websites
|
||||
</div>
|
||||
@@ -317,7 +317,7 @@
|
||||
<field name="google_maps_api_key" attrs="{'required': [('has_google_maps', '=', True)]}" />
|
||||
</div>
|
||||
</div>
|
||||
<div attrs="{'invisible': [('has_google_maps', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('has_google_maps', '=', False)]}">
|
||||
<a role="button" class="btn-link" target="_blank"
|
||||
href="https://console.developers.google.com/flows/enableapi?apiid=maps_backend,static_maps_backend&keyType=CLIENT_SIDE&reusekey=true">
|
||||
<i class="fa fa-arrow-right"/>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
Sell variants of a product using attributes (size, color, etc.)
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_product_variant', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button type="action" name="%(product.attribute_action)d" string="Attributes" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -114,7 +114,7 @@
|
||||
<field name="group_product_pricelist" invisible="1"/>
|
||||
<field name="product_pricelist_setting" class="o_light_label" widget="radio"/>
|
||||
</div>
|
||||
<div attrs="{'invisible': [('group_product_pricelist', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('group_product_pricelist', '=', False)]}">
|
||||
<button type="action" name="%(product.product_pricelist_action2)d" string="Pricelists" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -140,7 +140,7 @@
|
||||
Sell in several currencies
|
||||
</div>
|
||||
<div class="content-group" attrs="{'invisible': [('group_multi_currency', '=', False)]}">
|
||||
<div class="mt16">
|
||||
<div class="mt8">
|
||||
<button type="action" name="%(base.action_currency_form)d" string="Currencies" class="btn-link" icon="fa-arrow-right"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='website_sale_coupon']" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<button name="%(sale_coupon.sale_coupon_program_action_promo_program)d" icon="fa-arrow-right" type="action" string="Promotion Programs" class="btn-link"/>
|
||||
</div>
|
||||
<div attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_sale_coupon', '=', False)]}">
|
||||
<button name="%(sale_coupon.sale_coupon_program_action_coupon_program)d" icon="fa-arrow-right" type="action" string="Coupon Programs" class="btn-link"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -14,35 +14,35 @@
|
||||
</div>
|
||||
<div id="website_delivery_dhl" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_delivery_dhl', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_delivery_dhl', '=', False)]}">
|
||||
<button name="%(delivery.action_delivery_carrier_form)d" icon="fa-arrow-right" type="action" string="DHL Shipping Methods" class="btn-link" context="{'search_default_delivery_type': 'dhl'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="website_delivery_fedex" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_delivery_fedex', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_delivery_fedex', '=', False)]}">
|
||||
<button name="%(delivery.action_delivery_carrier_form)d" icon="fa-arrow-right" type="action" string="FedEx Shipping Methods" class="btn-link" context="{'search_default_delivery_type': 'fedex'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="website_delivery_usps" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_delivery_usps', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_delivery_usps', '=', False)]}">
|
||||
<button name="%(delivery.action_delivery_carrier_form)d" icon="fa-arrow-right" type="action" string="USPS Shipping Methods" class="btn-link" context="{'search_default_delivery_type': 'usps'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="website_delivery_bpost" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_delivery_bpost', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_delivery_bpost', '=', False)]}">
|
||||
<button name="%(delivery.action_delivery_carrier_form)d" icon="fa-arrow-right" type="action" string="bpost Shipping Methods" class="btn-link" context="{'search_default_delivery_type': 'bpost'}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="website_delivery_easypost" position="after">
|
||||
<div class="content-group">
|
||||
<div class="mt16" attrs="{'invisible': [('module_delivery_easypost', '=', False)]}">
|
||||
<div class="mt8" attrs="{'invisible': [('module_delivery_easypost', '=', False)]}">
|
||||
<button name="%(delivery.action_delivery_carrier_form)d" icon="fa-arrow-right" type="action" string="Easypost Shipping Methods" class="btn-link" context="{'search_default_delivery_type': 'easypost'}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user