summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobot Odoo <xmo+roboto@odoo.com>2018-11-19 11:55:01 +0100
committerGitHub <noreply@github.com>2018-11-19 11:55:01 +0100
commit2b896bcf82a4cf14fe1984b42f5412bc9a6e3869 (patch)
tree1f79fb7e281e1dfa8184d47c7451ca3bc66a3237
parent76d29d15bfb2c56b7745a9b1fe990a6c558245c1 (diff)
parentdf81f2052f24a5614cb25a444ee72856f58e4c3c (diff)
[MERGE][IMP] sale,base,account : improve sales onboarding
Purpose : Ease navigation in default screens of Sales app to better onboard new users and fix various issues in the views. - onboarding tour : fix "quotations" filter and tooltip appearance - config bar : -remove "Default incoterm" field in "company info" form and move it in "invoicing" settings. - improve "document layout" form design, set "paper format" as required field and add a "preview" button - rename FieldReportLayout "Preview" link and put standard report layout (the default one in odoo) as first image - fix small design issue in widget - "done" button design - customer form : - improve address type tooltip - various changes in "accounting" and "sales & purchases" tabs (stat button, fields reorganizing) - product form : fix "re-invoice policy" field hazardous hiding behavior and improve field appearance - customer portal : - reorganize fields in "customer details" view - minor changes in "quotation" view - Correct "sales order" model description This merge is related to task ID 1892500 . closes odoo/odoo#28254
-rw-r--r--addons/account/__manifest__.py1
-rw-r--r--addons/account/models/res_config_settings.py1
-rw-r--r--addons/account/views/partner_view.xml14
-rw-r--r--addons/account/views/res_company_view.xml15
-rw-r--r--addons/account/views/res_config_settings_views.xml12
-rw-r--r--addons/delivery/models/partner.py2
-rw-r--r--addons/delivery/views/partner_view.xml8
-rw-r--r--addons/mail/views/res_partner_views.xml11
-rw-r--r--addons/payment/views/payment_acquirer_onboarding_templates.xml2
-rw-r--r--addons/payment/wizards/payment_acquirer_onboarding_wizard.py2
-rw-r--r--addons/point_of_sale/views/product_view.xml2
-rw-r--r--addons/portal/static/src/scss/portal.scss1
-rw-r--r--addons/portal/views/portal_templates.xml8
-rw-r--r--addons/sale/controllers/portal.py2
-rw-r--r--addons/sale/data/mail_data.xml1
-rw-r--r--addons/sale/models/product_template.py3
-rw-r--r--addons/sale/models/sale.py2
-rw-r--r--addons/sale/static/src/js/tour.js2
-rw-r--r--addons/sale/views/sale_onboarding_views.xml7
-rw-r--r--addons/sale/views/sale_portal_templates.xml11
-rw-r--r--addons/sale/wizard/payment_acquirer_onboarding_wizard.py2
-rw-r--r--addons/stock/views/res_partner_views.xml2
-rw-r--r--addons/web/data/report_layout.xml10
-rw-r--r--addons/web/static/src/js/fields/special_fields.js2
-rw-r--r--addons/web/static/src/xml/base.xml2
-rw-r--r--addons/website_crm_partner_assign/views/res_partner_views.xml2
-rw-r--r--odoo/addons/base/models/res_partner.py10
-rw-r--r--odoo/addons/base/views/onboarding_views.xml2
-rw-r--r--odoo/addons/base/views/res_company_views.xml6
-rw-r--r--odoo/addons/base/views/res_partner_views.xml10
-rw-r--r--odoo/addons/test_impex/tests/contacts.json2
31 files changed, 77 insertions, 80 deletions
diff --git a/addons/account/__manifest__.py b/addons/account/__manifest__.py
index 8336c8c7dd5..3a6e2b11d88 100644
--- a/addons/account/__manifest__.py
+++ b/addons/account/__manifest__.py
@@ -59,7 +59,6 @@ You could use this simplified accounting in case you work with an (external) acc
'views/account_fiscal_year_view.xml',
'views/account_incoterms_view.xml',
'data/account_incoterms_data.xml',
- 'views/res_company_view.xml',
'views/digest_views.xml',
'wizard/account_invoice_send_views.xml',
],
diff --git a/addons/account/models/res_config_settings.py b/addons/account/models/res_config_settings.py
index 978b85017be..d7fe597dcb5 100644
--- a/addons/account/models/res_config_settings.py
+++ b/addons/account/models/res_config_settings.py
@@ -89,6 +89,7 @@ class ResConfigSettings(models.TransientModel):
qr_code = fields.Boolean(string='Display SEPA QR code', related='company_id.qr_code', readonly=False)
invoice_is_print = fields.Boolean(string='Print', related='company_id.invoice_is_print', readonly=False)
invoice_is_email = fields.Boolean(string='Send Email', related='company_id.invoice_is_email', readonly=False)
+ incoterm_id = fields.Many2one('account.incoterms', string='Default incoterm', related='company_id.incoterm_id', help='International Commercial Terms are a series of predefined commercial terms used in international transactions.', readonly=False)
@api.multi
def set_values(self):
diff --git a/addons/account/views/partner_view.xml b/addons/account/views/partner_view.xml
index 8ea177c506d..23ba9220ac8 100644
--- a/addons/account/views/partner_view.xml
+++ b/addons/account/views/partner_view.xml
@@ -156,7 +156,7 @@
<button name="toggle_active" position="before">
<button class="oe_stat_button" type="action" name="%(account.action_open_partner_analytic_accounts)d"
groups="account.group_account_invoice"
- icon="fa-book" title="Analytic Accounts">
+ icon="fa-book" title="Analytic Accounts" attrs="{'invisible': [('contracts_count', '=', 0)]}">
<field string="Analytic Accounts" name="contracts_count" widget="statinfo"/>
</button>
</button>
@@ -204,12 +204,6 @@
<field name="acc_holder_name" invisible="1"/>
</tree>
</field>
- <button type="action" class="btn-link"
- name="%(base.action_res_partner_bank_account_form)d"
- context="{'search_default_partner_id': active_id, 'default_partner_id': active_id, 'form_view_ref': 'account.view_company_partner_bank_form'}"
- string="View accounts detail"
- colspan="2"
- />
</group>
<group string="Accounting Entries" name="accounting_entries" groups="account.group_account_user">
<field name="currency_id" invisible="1"/>
@@ -224,16 +218,16 @@
</div>
</page>
</page>
- <xpath expr="//page[@name='sales_purchases']/group" position="inside">
+ <xpath expr="//group[@name='misc']" position="before">
<group string="Fiscal Information" name="fiscal_information" priority="5" groups="account.group_account_invoice">
<field name="property_account_position_id" options="{'no_create': True, 'no_open': True}"/>
</group>
</xpath>
<group name="sale" position="inside">
- <field string="Payment Terms" name="property_payment_term_id" widget="selection" groups="account.group_account_invoice"/>
+ <field string="Payment Terms" name="property_payment_term_id" widget="selection" groups="account.group_account_invoice" attrs="{'invisible': [('customer','=', False)]}"/>
</group>
<group name="purchase" position="inside">
- <field string="Payment Terms" name="property_supplier_payment_term_id" widget="selection" groups="account.group_account_invoice"/>
+ <field string="Payment Terms" name="property_supplier_payment_term_id" widget="selection" groups="account.group_account_invoice" attrs="{'invisible': [('supplier','=', False)]}"/>
</group>
</field>
</record>
diff --git a/addons/account/views/res_company_view.xml b/addons/account/views/res_company_view.xml
deleted file mode 100644
index b6eb8f6e13c..00000000000
--- a/addons/account/views/res_company_view.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<odoo>
- <data>
- <record id="res_company_form_view_inherit_account_intrastat" model="ir.ui.view">
- <field name="name">res.company.form.inherit.account.intrastat</field>
- <field name="model">res.company</field>
- <field name="inherit_id" ref="base.view_company_form"/>
- <field name="arch" type="xml">
- <xpath expr="//field[@name='company_registry']" position="after">
- <field name="incoterm_id"/>
- </xpath>
- </field>
- </record>
- </data>
-</odoo>
diff --git a/addons/account/views/res_config_settings_views.xml b/addons/account/views/res_config_settings_views.xml
index 44854c80d66..e91e0ef2a3b 100644
--- a/addons/account/views/res_config_settings_views.xml
+++ b/addons/account/views/res_config_settings_views.xml
@@ -524,6 +524,18 @@
</div>
</div>
</div>
+ <div class="col-12 col-lg-6 o_setting_box">
+ <div class="o_setting_left_pane"/>
+ <div class="o_setting_right_pane">
+ <span class="o_form_label">Default Incoterm</span>
+ <div class="text-muted">
+ Default Incoterm of your company
+ </div>
+ <div class="text-muted">
+ <field name="incoterm_id"/>
+ </div>
+ </div>
+ </div>
</div>
<h2 groups="account.group_account_user">Automated Entries</h2>
<div class="row mt16 o_settings_container" id="recommended_apps" groups="account.group_account_user">
diff --git a/addons/delivery/models/partner.py b/addons/delivery/models/partner.py
index 1c8d89156ce..5b19d154a7c 100644
--- a/addons/delivery/models/partner.py
+++ b/addons/delivery/models/partner.py
@@ -7,4 +7,4 @@ from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
- property_delivery_carrier_id = fields.Many2one('delivery.carrier', company_dependent=True, string="Delivery Method", help="This delivery method will be used when invoicing from picking.")
+ property_delivery_carrier_id = fields.Many2one('delivery.carrier', company_dependent=True, string="Delivery Method", help="Default delivery method used in sales orders.")
diff --git a/addons/delivery/views/partner_view.xml b/addons/delivery/views/partner_view.xml
index 97ec61dfe63..3ca062af12f 100644
--- a/addons/delivery/views/partner_view.xml
+++ b/addons/delivery/views/partner_view.xml
@@ -4,11 +4,11 @@
<record id="view_partner_property_form" model="ir.ui.view">
<field name="name">res.partner.carrier.property.form.inherit</field>
<field name="model">res.partner</field>
- <field name="inherit_id" ref="mail.res_partner_view_form_inherit_mail" />
+ <field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
- <field name="message_bounce" position="before">
- <field name="property_delivery_carrier_id"/>
- </field>
+ <xpath expr="//page[@name='sales_purchases']//field[@name='user_id']" position="after">
+ <field name="property_delivery_carrier_id" attrs="{'invisible': [('customer','=', False)]}"/>
+ </xpath>
</field>
</record>
diff --git a/addons/mail/views/res_partner_views.xml b/addons/mail/views/res_partner_views.xml
index 1abd2f3aa0a..4a9bda24395 100644
--- a/addons/mail/views/res_partner_views.xml
+++ b/addons/mail/views/res_partner_views.xml
@@ -16,8 +16,15 @@
<field name="email" widget="email"/>
</div>
</xpath>
- <xpath expr="//page[@name='sales_purchases']//field[@name='user_id']" position="after">
- <field name="message_bounce" groups="base.group_no_one"/>
+ <xpath expr="//button[@name='toggle_active']" position="before">
+ <button class="oe_stat_button" icon="fa-envelope" groups="base.group_no_one" attrs="{'invisible':[('message_bounce', '=', 0)]}">
+ <div class="o_form_field o_stat_info">
+ <span class="o_stat_value">
+ <field name="message_bounce" widget="statinfo" nolabel="1"/>
+ </span>
+ <span class="o_stat_text">Bounce(s)</span>
+ </div>
+ </button>
</xpath>
<xpath expr="//sheet" position="after">
<div class="oe_chatter">
diff --git a/addons/payment/views/payment_acquirer_onboarding_templates.xml b/addons/payment/views/payment_acquirer_onboarding_templates.xml
index 45b67e57329..76d991aaed7 100644
--- a/addons/payment/views/payment_acquirer_onboarding_templates.xml
+++ b/addons/payment/views/payment_acquirer_onboarding_templates.xml
@@ -33,7 +33,7 @@
<field name="payment_method" widget="radio" nolabel="1"/>
</group>
</div>
- <div class="col offset-md-1" name="right-column">
+ <div class="col" name="right-column">
<div attrs="{'invisible': [('payment_method', '!=', 'paypal')]}">
<group>
<field name="paypal_email_account" attrs="{'required': [('payment_method', '=', 'paypal')]}" />
diff --git a/addons/payment/wizards/payment_acquirer_onboarding_wizard.py b/addons/payment/wizards/payment_acquirer_onboarding_wizard.py
index 5913e5821b7..ba7b6ea1c29 100644
--- a/addons/payment/wizards/payment_acquirer_onboarding_wizard.py
+++ b/addons/payment/wizards/payment_acquirer_onboarding_wizard.py
@@ -30,7 +30,7 @@ class PaymentWizard(models.TransientModel):
@api.onchange('journal_name', 'acc_number')
def _set_manual_post_msg_value(self):
- self.manual_post_msg = _('Please make a payment to <ul><li>Bank: %s</li><li>Account Number: %s</li><li>Account Holder: %s</li></ul>') %\
+ self.manual_post_msg = _('<h3>Please make a payment to: </h3><ul><li>Bank: %s</li><li>Account Number: %s</li><li>Account Holder: %s</li></ul>') %\
(self.journal_name or _("Bank") , self.acc_number or _("Account"), self.env.user.company_id.name)
_payment_acquirer_onboarding_cache = {}
diff --git a/addons/point_of_sale/views/product_view.xml b/addons/point_of_sale/views/product_view.xml
index 3f14c6e4274..0c46c808003 100644
--- a/addons/point_of_sale/views/product_view.xml
+++ b/addons/point_of_sale/views/product_view.xml
@@ -54,7 +54,7 @@
<field name="arch" type="xml">
<xpath expr="//group[@name='pricelists']" position="before">
<group name="pos" string="Point Of Sale">
- <group>
+ <group colspan="2">
<field name="available_in_pos"/>
<field name="pos_categ_id" attrs="{'invisible': [('available_in_pos', '=', False)]}" string="Category"/>
<field name="to_weight" attrs="{'invisible': [('available_in_pos', '=', False)]}"/>
diff --git a/addons/portal/static/src/scss/portal.scss b/addons/portal/static/src/scss/portal.scss
index 2f344baebf5..a02e765f6a3 100644
--- a/addons/portal/static/src/scss/portal.scss
+++ b/addons/portal/static/src/scss/portal.scss
@@ -363,7 +363,6 @@ img.o_we_custom_image {
address {
span[itemprop="name"] {
- font-weight: bold;
margin-bottom: 0.3em;
}
diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml
index 95d3669e34a..6827424deea 100644
--- a/addons/portal/views/portal_templates.xml
+++ b/addons/portal/views/portal_templates.xml
@@ -370,10 +370,6 @@
<label class="col-form-label" for="email">Email</label>
<input type="email" name="email" t-attf-class="form-control #{error.get('email') and 'is-invalid' or ''}" t-att-value="email or partner.email" />
</div>
- <div t-attf-class="form-group #{error.get('phone') and 'o_has_error' or ''} col-xl-6">
- <label class="col-form-label" for="phone">Phone</label>
- <input type="tel" name="phone" t-attf-class="form-control #{error.get('phone') and 'is-invalid' or ''}" t-att-value="phone or partner.phone" />
- </div>
<div class="clearfix" />
<div t-attf-class="form-group #{error.get('company_name') and 'o_has_error' or ''} col-xl-6">
@@ -385,6 +381,10 @@
<label class="col-form-label label-optional" for="vat">VAT Number</label>
<input type="text" name="vat" t-attf-class="form-control #{error.get('vat') and 'is-invalid' or ''}" t-att-value="vat or partner.vat" t-att-readonly="None if partner.can_edit_vat() else '1'" t-att-title="None if partner.can_edit_vat() else 'Changing VAT number is not allowed once document(s) have been issued for your account. Please contact us directly for this operation.'" />
</div>
+ <div t-attf-class="form-group #{error.get('phone') and 'o_has_error' or ''} col-xl-6">
+ <label class="col-form-label" for="phone">Phone</label>
+ <input type="tel" name="phone" t-attf-class="form-control #{error.get('phone') and 'is-invalid' or ''}" t-att-value="phone or partner.phone" />
+ </div>
<div class="clearfix" />
<div t-attf-class="form-group #{error.get('street') and 'o_has_error' or ''} col-xl-6">
diff --git a/addons/sale/controllers/portal.py b/addons/sale/controllers/portal.py
index 0796b65dead..117a0598c08 100644
--- a/addons/sale/controllers/portal.py
+++ b/addons/sale/controllers/portal.py
@@ -198,7 +198,7 @@ class CustomerPortal(CustomerPortal):
return {'error': _('Invalid order')}
if not order_sudo.has_to_be_signed():
- return {'error': _('Order is not in a state requiring customer signature.')}
+ return {'error': _('The order is not in a state requiring customer signature.')}
if not signature:
return {'error': _('Signature is missing.')}
diff --git a/addons/sale/data/mail_data.xml b/addons/sale/data/mail_data.xml
index 5f85067b19f..5edabafb06b 100644
--- a/addons/sale/data/mail_data.xml
+++ b/addons/sale/data/mail_data.xml
@@ -84,6 +84,7 @@
% if object.partner_id.parent_id:
(${object.partner_id.parent_id.name})
% endif
+ ,
<br /><br />
Here is
% if ctx.get('proforma')
diff --git a/addons/sale/models/product_template.py b/addons/sale/models/product_template.py
index cbcb9526287..3f380d4b3b5 100644
--- a/addons/sale/models/product_template.py
+++ b/addons/sale/models/product_template.py
@@ -19,7 +19,7 @@ class ProductTemplate(models.Model):
sale_line_warn_msg = fields.Text('Message for Sales Order Line')
expense_policy = fields.Selection(
[('no', 'No'), ('cost', 'At cost'), ('sales_price', 'Sales price')],
- string='Re-Invoice Policy',
+ string='Re-Invoice Expenses',
default='no',
help="Expenses and vendor bills can be re-invoiced to a customer."
"With this option, a validated expense can be re-invoice to a customer at its cost or sales price.")
@@ -33,6 +33,7 @@ class ProductTemplate(models.Model):
default='order')
@api.multi
+ @api.depends('name')
def _compute_hide_expense_policy(self):
hide_expense_policy = self.user_has_groups('!analytic.group_analytic_accounting,!project.group_project_user,!hr_expense.group_hr_expense_user')
for template in self:
diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py
index a09fa8711e8..d011553ee7b 100644
--- a/addons/sale/models/sale.py
+++ b/addons/sale/models/sale.py
@@ -20,7 +20,7 @@ from werkzeug.urls import url_encode
class SaleOrder(models.Model):
_name = "sale.order"
_inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin']
- _description = "Sale Order"
+ _description = "Sales Order"
_order = 'date_order desc, id desc'
def _default_validity_date(self):
diff --git a/addons/sale/static/src/js/tour.js b/addons/sale/static/src/js/tour.js
index 9992cbb3a42..f14c7d9f88b 100644
--- a/addons/sale/static/src/js/tour.js
+++ b/addons/sale/static/src/js/tour.js
@@ -67,7 +67,7 @@ tour.register('sale_tour', {
}, {
trigger: ".o_sale_print",
extra_trigger: ".o_sale_order.o_form_readonly",
- content: _t("<b>Print this quotation to preview it.</b>"),
+ content: _t("Print this quotation to preview it."),
position: "bottom"
}, {
trigger: ".breadcrumb-item:not(.active):last",
diff --git a/addons/sale/views/sale_onboarding_views.xml b/addons/sale/views/sale_onboarding_views.xml
index d25a9f7df4f..68279fa7fba 100644
--- a/addons/sale/views/sale_onboarding_views.xml
+++ b/addons/sale/views/sale_onboarding_views.xml
@@ -61,7 +61,7 @@
</field>
</record>
<record id="action_open_sale_onboarding_payment_acquirer_wizard" model="ir.actions.act_window">
- <field name="name">How your customers can confirm an order</field>
+ <field name="name">Choose how to confirm quotations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.payment.acquirer.onboarding.wizard</field>
<field name="view_type">form</field>
@@ -77,6 +77,9 @@
<field name="mode">primary</field>
<field name="priority">1000</field>
<field name="arch" type="xml">
+ <xpath expr="//button[@special='save']" position="after">
+ <button string="Preview" type="action" class="btn btn-secondary" name="web.action_report_externalpreview"/>
+ </xpath>
<xpath expr="//button[@special='save']" position="replace">
<button string="Apply" class="btn btn-primary" type="object" name="action_save_onboarding_quotation_layout" />
</xpath>
@@ -112,7 +115,7 @@
</record>
<record id="action_open_sale_onboarding_sample_quotation" model="ir.actions.act_window">
- <field name="name">Send a sample quotation.</field>
+ <field name="name">Send a sample quotation</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mail.compose.message</field>
<field name="view_mode">form</field>
diff --git a/addons/sale/views/sale_portal_templates.xml b/addons/sale/views/sale_portal_templates.xml
index 9a428d7ab19..4d0b6ad1b32 100644
--- a/addons/sale/views/sale_portal_templates.xml
+++ b/addons/sale/views/sale_portal_templates.xml
@@ -305,11 +305,6 @@
<strong>This quotation has been canceled.</strong> <a role="button" href="#discussion"><i class="fa fa-comment"/> Contact us to get a new quotation.</a>
</div>
- <div t-if="sale_order.state == 'draft'" class="alert alert-warning alert-dismissable d-print-none" role="status">
- <button type="button" class="close" data-dismiss="alert" aria-label="close">&amp;times;</button>
- <strong>This is a draft quotation.</strong> <a role="button" href="#discussion"><i class="fa fa-comment"/> Contact us to get the final version.</a>
- </div>
-
<div t-if="sale_order.is_expired" class="alert alert-warning alert-dismissable d-print-none" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="close">&amp;times;</button>
<strong>This offer expired!</strong> <a role="button" href="#discussion"><i class="fa fa-comment"/> Contact us to get a new quotation.</a>
@@ -343,7 +338,7 @@
<!-- chatter -->
<div id="sale_order_communication" class="mt-4">
- <h2>Communication</h2>
+ <h2>History</h2>
<t t-call="portal.message_thread">
<t t-set="object" t-value="sale_order"/>
</t>
@@ -361,8 +356,8 @@
<template id="sale_order_portal_content" name="Sales Order Portal Content">
<!-- Intro -->
<div id="introduction" t-attf-class="pb-2 pt-3 #{'card-header bg-white' if report_type == 'html' else ''}">
- <h2 class="my-0">
- <span t-field="sale_order.type_name"></span>
+ <h2 class="my-0">
+ <t t-esc="sale_order.type_name"/>
<em t-esc="sale_order.name"/>
</h2>
</div>
diff --git a/addons/sale/wizard/payment_acquirer_onboarding_wizard.py b/addons/sale/wizard/payment_acquirer_onboarding_wizard.py
index 36653714cde..f3a9b63fa24 100644
--- a/addons/sale/wizard/payment_acquirer_onboarding_wizard.py
+++ b/addons/sale/wizard/payment_acquirer_onboarding_wizard.py
@@ -15,7 +15,7 @@ class PaymentWizard(models.TransientModel):
return self.env.user.company_id.sale_onboarding_payment_method or 'digital_signature'
payment_method = fields.Selection([
- ('digital_signature', 'Sign online'),
+ ('digital_signature', 'Online signature'),
('paypal', "Pay with PayPal"),
('stripe', "Pay with credit card (via Stripe)"),
('other', "Pay with another payment acquirer"),
diff --git a/addons/stock/views/res_partner_views.xml b/addons/stock/views/res_partner_views.xml
index bd69fde7ba2..21a9f38da45 100644
--- a/addons/stock/views/res_partner_views.xml
+++ b/addons/stock/views/res_partner_views.xml
@@ -12,7 +12,7 @@
<field name="arch" type="xml">
<xpath expr="//page[@name='sales_purchases']/group" position="inside">
<group name="container_row_stock" groups="base.group_no_one" priority="6">
- <group string="Warehouse" name="warehouse">
+ <group string="Inventory" name="inventory" colspan="2">
<field name="property_stock_customer" domain="[('usage','=','customer')]"/>
<field name="property_stock_supplier" domain="[('usage','=','supplier')]"/>
</group>
diff --git a/addons/web/data/report_layout.xml b/addons/web/data/report_layout.xml
index afa8130d73a..d09aeea0ded 100644
--- a/addons/web/data/report_layout.xml
+++ b/addons/web/data/report_layout.xml
@@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
+ <record id="report_layout_standard" model="report.layout">
+ <field name="view_id" ref="web.external_layout_standard"/>
+ <field name="image">/web/static/img/preview_standard.png</field>
+ <field name="pdf">/web/static/pdf/preview_standard.pdf</field>
+ </record>
<record id="report_layout_background" model="report.layout">
<field name="view_id" ref="web.external_layout_background"/>
<field name="image">/web/static/img/preview_background.png</field>
@@ -16,10 +21,5 @@
<field name="image">/web/static/img/preview_clean.png</field>
<field name="pdf">/web/static/pdf/preview_clean.pdf</field>
</record>
- <record id="report_layout_standard" model="report.layout">
- <field name="view_id" ref="web.external_layout_standard"/>
- <field name="image">/web/static/img/preview_standard.png</field>
- <field name="pdf">/web/static/pdf/preview_standard.pdf</field>
- </record>
</data>
</odoo> \ No newline at end of file
diff --git a/addons/web/static/src/js/fields/special_fields.js b/addons/web/static/src/js/fields/special_fields.js
index 90c4f589989..5057b9de33f 100644
--- a/addons/web/static/src/js/fields/special_fields.js
+++ b/addons/web/static/src/js/fields/special_fields.js
@@ -163,7 +163,7 @@ var FieldReportLayout = relational_fields.FieldMany2One.extend({
$container.append($img);
if (val.pdf) {
var $previewLink = $('<a>')
- .text('Preview')
+ .text('Example')
.attr('href', val.pdf)
.attr('target', '_blank');
$container.append($previewLink);
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index ac9aa1207e4..661aab2d9b6 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -1049,7 +1049,7 @@
<div t-foreach="widget.value.data" t-as="file" class="oe_attachment">
<t t-if="!file.data.upload">
<div>
- <a href="#" class="fa fa-times float-right oe_delete" title="Delete this file" aria-label="Delete this file" t-att-data-id="file.data.id"/>
+ <a href="#" class="fa fa-times float-right oe_delete pl-1" title="Delete this file" aria-label="Delete this file" t-att-data-id="file.data.id"/>
<t t-raw="file.data.name || file.data.filename"/>
</div>
<a class="o_image" target="_blank" t-att-href="widget.metadata[file.id] ? widget.metadata[file.id].url : false"
diff --git a/addons/website_crm_partner_assign/views/res_partner_views.xml b/addons/website_crm_partner_assign/views/res_partner_views.xml
index 4ecb010335e..9510ed6aa4c 100644
--- a/addons/website_crm_partner_assign/views/res_partner_views.xml
+++ b/addons/website_crm_partner_assign/views/res_partner_views.xml
@@ -138,7 +138,7 @@
</group>
</xpath>
<xpath expr="//group[@name='sale']" position="inside">
- <field name="assigned_partner_id" groups="base.group_no_one"/>
+ <field name="assigned_partner_id" groups="base.group_no_one" attrs="{'invisible': [('customer','=', False)]}"/>
</xpath>
</data>
</field>
diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py
index f5d0284af3f..28c3ca30326 100644
--- a/odoo/addons/base/models/res_partner.py
+++ b/odoo/addons/base/models/res_partner.py
@@ -151,7 +151,7 @@ class Partner(models.Model):
parent_id = fields.Many2one('res.partner', string='Related Company', index=True)
parent_name = fields.Char(related='parent_id.name', readonly=True, string='Parent name')
child_ids = fields.One2many('res.partner', 'parent_id', string='Contacts', domain=[('active', '=', True)]) # force "active_test" domain to bypass _search() override
- ref = fields.Char(string='Internal Reference', index=True)
+ ref = fields.Char(string='Reference', index=True)
lang = fields.Selection(_lang_get, string='Language', default=lambda self: self.env.lang,
help="All the emails and documents sent to this contact will be translated in this language.")
tz = fields.Selection(_tz_get, string='Timezone', default=lambda self: self._context.get('tz'),
@@ -180,13 +180,13 @@ class Partner(models.Model):
function = fields.Char(string='Job Position')
type = fields.Selection(
[('contact', 'Contact'),
- ('invoice', 'Invoice address'),
- ('delivery', 'Shipping address'),
- ('other', 'Other address'),
+ ('invoice', 'Invoice Address'),
+ ('delivery', 'Shipping Address'),
+ ('other', 'Other Address'),
("private", "Private Address"),
], string='Address Type',
default='contact',
- help="Used by Sales and Purchase Apps to select the relevant address depending on the context.")
+ help="Invoice & Shipping addresses are used in sales orders. Private addresses are only visible by authorized users.")
street = fields.Char()
street2 = fields.Char()
zip = fields.Char(change_default=True)
diff --git a/odoo/addons/base/views/onboarding_views.xml b/odoo/addons/base/views/onboarding_views.xml
index 0a52c7eb55d..ea948d3d981 100644
--- a/odoo/addons/base/views/onboarding_views.xml
+++ b/odoo/addons/base/views/onboarding_views.xml
@@ -41,12 +41,10 @@
<t t-if="text_completed" t-esc="text_completed" />
<t t-else="">Nice work! Your configuration is done.</t>
</span>
- <div class="btn btn-primary btn-sm">
<a type="action" class="btn btn-primary" data-toggle="collapse" href=".o_onboarding_container"
t-att-data-model="close_model" t-att-data-method="close_method">
Close
</a>
- </div>
</div>
</div>
</div>
diff --git a/odoo/addons/base/views/res_company_views.xml b/odoo/addons/base/views/res_company_views.xml
index 92b5d582ce9..8a0773e98da 100644
--- a/odoo/addons/base/views/res_company_views.xml
+++ b/odoo/addons/base/views/res_company_views.xml
@@ -183,12 +183,12 @@
}"/>
</group>
<group>
- <field name="logo" widget="image" />
+ <field name="logo" widget="image" style="width: 50%"/>
<field name="report_header" widget="char"
placeholder="e.g. Global Business Solutions" />
<field name="report_footer" string="Footer"
- placeholder="e.g. Opening hours, bank accounts (one per line)" />
- <field name="paperformat_id" widget="selection" />
+ placeholder="e.g. Bank accounts (one per line)" />
+ <field name="paperformat_id" widget="selection" required="1"/>
</group>
<footer>
<button special="save" string="Save"
diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml
index 1880589a326..447683bfdeb 100644
--- a/odoo/addons/base/views/res_partner_views.xml
+++ b/odoo/addons/base/views/res_partner_views.xml
@@ -374,18 +374,20 @@
<page name='internal_notes' string="Internal Notes">
<field name="comment" placeholder="Internal note..."/>
</page>
- <page name='sales_purchases' string="Sales &amp; Purchases">
+ <page name='sales_purchases' string="Sales &amp; Purchase">
<group name="container_row_2">
<group string="Sales" name="sale" priority="1">
<field name="customer"/>
- <field name="user_id"/>
+ <field name="user_id" attrs="{'invisible': [('customer','=', False)]}"/>
</group>
<group string="Purchase" name="purchase" priority="2">
<field name="supplier"/>
</group>
- <group string="Misc">
- <field name="ref"/>
+ <group string="Point Of Sale">
<field name="barcode"/>
+ </group>
+ <group name="misc" string="Misc">
+ <field name="ref" string="Reference"/>
<field name="company_id" groups="base.group_multi_company" options="{'no_create': True}"/>
<field name="industry_id" attrs="{'invisible': [('is_company', '=', False)]}" options="{'no_create': True}"/>
</group>
diff --git a/odoo/addons/test_impex/tests/contacts.json b/odoo/addons/test_impex/tests/contacts.json
index 21c3271e65c..0c8e7c93108 100644
--- a/odoo/addons/test_impex/tests/contacts.json
+++ b/odoo/addons/test_impex/tests/contacts.json
@@ -1 +1 @@
-[["Wood y Wood Pecker", "", "Snow Street, 25", "Kainuu", "Finland", "Vendor", "1", "0", "1", ""], ["Roger Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Vendor", "1", "0", "0", "Wood y Wood Pecker"], ["Sharon Pecker", "Shipping address", "Snow Street, 28", "Kainuu", "Finland", "Vendor", "1", "0", "0", "Wood y Wood Pecker"], ["Thomas Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Vendor", "1", "0", "0", "Wood y Wood Pecker"], ["Norseman Roundabout", "", "Atonium Street, 45a", "Brussels", "Belgium", "Vendor", "1", "0", "1", ""], ["Yvan Holiday", "Invoice address", "Atonium Street, 45b", "Brussels", "Belgium", "Vendor", "1", "0", "0", "Norseman Roundabout"], ["Jack Unsworth", "Contact", "Atonium Street, 45a", "Brussels", "Belgium", "Vendor", "1", "0", "0", "Norseman Roundabout"]]
+[["Wood y Wood Pecker", "", "Snow Street, 25", "Kainuu", "Finland", "Vendor", "1", "0", "1", ""], ["Roger Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Vendor", "1", "0", "0", "Wood y Wood Pecker"], ["Sharon Pecker", "Shipping Address", "Snow Street, 28", "Kainuu", "Finland", "Vendor", "1", "0", "0", "Wood y Wood Pecker"], ["Thomas Pecker", "Contact", "Snow Street, 27", "Kainuu", "Finland", "Vendor", "1", "0", "0", "Wood y Wood Pecker"], ["Norseman Roundabout", "", "Atonium Street, 45a", "Brussels", "Belgium", "Vendor", "1", "0", "1", ""], ["Yvan Holiday", "Invoice Address", "Atonium Street, 45b", "Brussels", "Belgium", "Vendor", "1", "0", "0", "Norseman Roundabout"], ["Jack Unsworth", "Contact", "Atonium Street, 45a", "Brussels", "Belgium", "Vendor", "1", "0", "0", "Norseman Roundabout"]]