[MIG] base_usability to v14
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
# © 2014-2016 Akretion (http://www.akretion.com)
|
# Copyright 2014-2020 Akretion France (http://www.akretion.com)
|
||||||
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
{
|
{
|
||||||
'name': 'Base Usability',
|
'name': 'Base Usability',
|
||||||
'version': '12.0.0.1.0',
|
'version': '14.0.1.0.0',
|
||||||
'category': 'Partner',
|
'category': 'Partner',
|
||||||
'license': 'AGPL-3',
|
'license': 'AGPL-3',
|
||||||
'summary': 'Better usability in base module',
|
'summary': 'Better usability in base module',
|
||||||
@@ -13,12 +13,11 @@
|
|||||||
'depends': ['base'],
|
'depends': ['base'],
|
||||||
'data': [
|
'data': [
|
||||||
'security/group.xml',
|
'security/group.xml',
|
||||||
'views/partner_view.xml',
|
'views/res_partner.xml',
|
||||||
'views/partner_bank_view.xml',
|
'views/res_partner_bank.xml',
|
||||||
'views/users_view.xml',
|
'views/res_country.xml',
|
||||||
'views/country_view.xml',
|
'views/ir_module.xml',
|
||||||
'views/module_view.xml',
|
'views/ir_sequence.xml',
|
||||||
'views/base_view.xml',
|
|
||||||
],
|
],
|
||||||
'installable': False,
|
'installable': True,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py
|
diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py
|
||||||
index 083607f9..99ae8857 100644
|
index a3baf47c615..e546d450107 100644
|
||||||
--- a/odoo/addons/base/models/res_users.py
|
--- a/odoo/addons/base/models/res_users.py
|
||||||
+++ b/odoo/addons/base/models/res_users.py
|
+++ b/odoo/addons/base/models/res_users.py
|
||||||
@@ -426,7 +426,13 @@ class Users(models.Model):
|
@@ -544,7 +544,13 @@ class Users(models.Model):
|
||||||
for user in users:
|
for user in users:
|
||||||
user.partner_id.active = user.active
|
# if partner is global we keep it that way
|
||||||
if user.partner_id.company_id:
|
if user.partner_id.company_id:
|
||||||
- user.partner_id.write({'company_id': user.company_id.id})
|
- user.partner_id.company_id = user.company_id
|
||||||
+ # AKRETION HACK: if you have a multi-company setup where
|
+ # AKRETION HACK: if you have a multi-company setup where
|
||||||
+ # partners are NOT shared between companies, having
|
+ # partners are NOT shared between companies, having
|
||||||
+ # company_id=False on partners related to users
|
+ # company_id=False on partners related to users
|
||||||
+ # avoids a lot of trouble (you should also disable 'read'
|
+ # avoids a lot of trouble (you should also disable 'read'
|
||||||
+ # on the ir.rule 'user rule' (XMLID base.res_users_rule)
|
+ # on the ir.rule 'user rule' (XMLID base.res_users_rule)
|
||||||
+ # user.partner_id.write({'company_id': user.company_id.id})
|
+ # user.partner_id.company_id = user.company_id
|
||||||
+ user.partner_id.write({'company_id': False})
|
+ user.partner_id.write({'company_id': False})
|
||||||
|
user.partner_id.active = user.active
|
||||||
return users
|
return users
|
||||||
|
|
||||||
@api.multi
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
from . import users
|
from . import res_users
|
||||||
from . import partner
|
from . import res_partner
|
||||||
from . import company
|
from . import res_partner_bank
|
||||||
from . import mail
|
from . import res_partner_category
|
||||||
from . import misc
|
from . import res_company
|
||||||
|
from . import ir_mail_server
|
||||||
from . import ir_model
|
from . import ir_model
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
# © 2015-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
# Copyright 2015-2020 Akretion France (http://www.akretion.com/)
|
||||||
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from odoo import models, api
|
from odoo import api, models
|
||||||
from odoo.addons.base.models.ir_mail_server import extract_rfc2822_addresses
|
from odoo.addons.base.models.ir_mail_server import extract_rfc2822_addresses
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@@ -27,7 +28,7 @@ class IrMailServer(models.Model):
|
|||||||
"with subject '%s'",
|
"with subject '%s'",
|
||||||
smtp_from, message.get('To'), message.get('Cc'),
|
smtp_from, message.get('To'), message.get('Cc'),
|
||||||
message.get('Bcc'), message.get('Subject'))
|
message.get('Bcc'), message.get('Subject'))
|
||||||
return super(IrMailServer, self).send_email(
|
return super().send_email(
|
||||||
message, mail_server_id=mail_server_id,
|
message, mail_server_id=mail_server_id,
|
||||||
smtp_server=smtp_server, smtp_port=smtp_port,
|
smtp_server=smtp_server, smtp_port=smtp_port,
|
||||||
smtp_user=smtp_user, smtp_password=smtp_password,
|
smtp_user=smtp_user, smtp_password=smtp_password,
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# © 2015-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
from odoo import models, fields, api
|
|
||||||
from odoo.tools import misc
|
|
||||||
from odoo.tools import float_compare
|
|
||||||
|
|
||||||
|
|
||||||
class BaseLanguageExport(models.TransientModel):
|
|
||||||
_inherit = 'base.language.export'
|
|
||||||
|
|
||||||
# Default format for language files = format used by OpenERP modules
|
|
||||||
format = fields.Selection(default='po')
|
|
||||||
|
|
||||||
|
|
||||||
class BaseLanguageInstall(models.TransientModel):
|
|
||||||
_inherit = 'base.language.install'
|
|
||||||
|
|
||||||
overwrite = fields.Boolean(default=True)
|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
# © 2015-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
# Copyright 2015-2020 Akretion France (http://www.akretion.com/)
|
||||||
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from odoo import models, api, _
|
from odoo import api, models, _
|
||||||
|
|
||||||
|
|
||||||
class ResCompany(models.Model):
|
class ResCompany(models.Model):
|
||||||
@@ -31,7 +32,6 @@ class ResCompany(models.Model):
|
|||||||
line = separator.join(content)
|
line = separator.join(content)
|
||||||
return line
|
return line
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def _prepare_header_options(self):
|
def _prepare_header_options(self):
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
options = {
|
options = {
|
||||||
@@ -61,7 +61,6 @@ class ResCompany(models.Model):
|
|||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
# for reports
|
# for reports
|
||||||
@api.multi
|
|
||||||
def _display_report_header(
|
def _display_report_header(
|
||||||
self, line_details=[['phone', 'website'], ['vat']],
|
self, line_details=[['phone', 'website'], ['vat']],
|
||||||
icon=True, line_separator=' - '):
|
icon=True, line_separator=' - '):
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
# © 2015-2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
# Copyright 2015-2020 Akretion France (http://www.akretion.com/)
|
||||||
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
@@ -10,30 +11,27 @@ class ResPartner(models.Model):
|
|||||||
# track_visibility is handled in the 'mail' module, and base_usability
|
# track_visibility is handled in the 'mail' module, and base_usability
|
||||||
# doesn't depend on 'mail', but that doesn't hurt, it will just be
|
# doesn't depend on 'mail', but that doesn't hurt, it will just be
|
||||||
# ignored if mail is not installed
|
# ignored if mail is not installed
|
||||||
name = fields.Char(track_visibility='onchange')
|
# TODO move to mail module
|
||||||
parent_id = fields.Many2one(track_visibility='onchange')
|
# name = fields.Char(tracking=True)
|
||||||
ref = fields.Char(track_visibility='onchange', copy=False)
|
# parent_id = fields.Many2one(tracking=True)
|
||||||
lang = fields.Selection(track_visibility='onchange')
|
# ref = fields.Char(tracking=True)
|
||||||
user_id = fields.Many2one(track_visibility='onchange')
|
# lang = fields.Selection(tracking=True)
|
||||||
vat = fields.Char(track_visibility='onchange')
|
# user_id = fields.Many2one(tracking=True)
|
||||||
customer = fields.Boolean(track_visibility='onchange')
|
# vat = fields.Char(tracking=True)
|
||||||
supplier = fields.Boolean(track_visibility='onchange')
|
# street = fields.Char(tracking=True)
|
||||||
type = fields.Selection(track_visibility='onchange')
|
# street2 = fields.Char(tracking=True)
|
||||||
street = fields.Char(track_visibility='onchange')
|
# zip = fields.Char(tracking=True)
|
||||||
street2 = fields.Char(track_visibility='onchange')
|
# city = fields.Char(tracking=True)
|
||||||
zip = fields.Char(track_visibility='onchange')
|
# state_id = fields.Many2one(tracking=True)
|
||||||
city = fields.Char(track_visibility='onchange')
|
# country_id = fields.Many2one(tracking=True)
|
||||||
state_id = fields.Many2one(track_visibility='onchange')
|
# is_company = fields.Boolean(tracking=True)
|
||||||
country_id = fields.Many2one(track_visibility='onchange')
|
# active = fields.Boolean(tracking=True)
|
||||||
email = fields.Char(track_visibility='onchange')
|
# company_id = fields.Many2one(tracking=True)
|
||||||
is_company = fields.Boolean(track_visibility='onchange')
|
ref = fields.Char(copy=False)
|
||||||
active = fields.Boolean(track_visibility='onchange')
|
|
||||||
company_id = fields.Many2one(track_visibility='onchange')
|
|
||||||
# For reports
|
# For reports
|
||||||
name_title = fields.Char(
|
name_title = fields.Char(
|
||||||
compute='_compute_name_title', string='Name with Title')
|
compute='_compute_name_title', string='Name with Title')
|
||||||
|
|
||||||
@api.multi
|
|
||||||
@api.depends('name', 'title')
|
@api.depends('name', 'title')
|
||||||
def _compute_name_title(self):
|
def _compute_name_title(self):
|
||||||
for partner in self:
|
for partner in self:
|
||||||
@@ -49,17 +47,14 @@ class ResPartner(models.Model):
|
|||||||
name_title = ' '.join([title, name_title])
|
name_title = ' '.join([title, name_title])
|
||||||
partner.name_title = name_title
|
partner.name_title = name_title
|
||||||
|
|
||||||
@api.multi
|
|
||||||
def _display_address(self, without_company=False):
|
def _display_address(self, without_company=False):
|
||||||
'''Remove empty lines'''
|
'''Remove empty lines'''
|
||||||
res = super(ResPartner, self)._display_address(
|
res = super()._display_address(without_company=without_company)
|
||||||
without_company=without_company)
|
|
||||||
while "\n\n" in res:
|
while "\n\n" in res:
|
||||||
res = res.replace('\n\n', '\n')
|
res = res.replace('\n\n', '\n')
|
||||||
return res
|
return res
|
||||||
|
|
||||||
# for reports
|
# for reports
|
||||||
@api.multi
|
|
||||||
def _display_full_address(
|
def _display_full_address(
|
||||||
self, details=[
|
self, details=[
|
||||||
'company', 'name', 'address', 'phone',
|
'company', 'name', 'address', 'phone',
|
||||||
@@ -72,10 +67,16 @@ class ResPartner(models.Model):
|
|||||||
if self.is_company:
|
if self.is_company:
|
||||||
company = self.name
|
company = self.name
|
||||||
name = False
|
name = False
|
||||||
|
name_no_title = False
|
||||||
|
title = False
|
||||||
|
title_short = False
|
||||||
else:
|
else:
|
||||||
name = self.name_title
|
|
||||||
company = self.parent_id and self.parent_id.is_company and\
|
company = self.parent_id and self.parent_id.is_company and\
|
||||||
self.parent_id.name or False
|
self.parent_id.name or False
|
||||||
|
name = self.name_title
|
||||||
|
name_no_title = self.name
|
||||||
|
title = self.title.name
|
||||||
|
title_short = self.title.shortcut
|
||||||
options = {
|
options = {
|
||||||
'name': {
|
'name': {
|
||||||
'value': name,
|
'value': name,
|
||||||
@@ -83,6 +84,15 @@ class ResPartner(models.Model):
|
|||||||
'company': {
|
'company': {
|
||||||
'value': company,
|
'value': company,
|
||||||
},
|
},
|
||||||
|
'title': {
|
||||||
|
'value': title,
|
||||||
|
},
|
||||||
|
'title_short': {
|
||||||
|
'value': title_short,
|
||||||
|
},
|
||||||
|
'name_no_title': {
|
||||||
|
'value': name_no_title,
|
||||||
|
},
|
||||||
'phone': {
|
'phone': {
|
||||||
'value': self.phone,
|
'value': self.phone,
|
||||||
# http://www.fileformat.info/info/unicode/char/1f4de/index.htm
|
# http://www.fileformat.info/info/unicode/char/1f4de/index.htm
|
||||||
@@ -122,18 +132,3 @@ class ResPartner(models.Model):
|
|||||||
res.append('%s' % entry['value'])
|
res.append('%s' % entry['value'])
|
||||||
res = '\n'.join(res)
|
res = '\n'.join(res)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
class ResPartnerCategory(models.Model):
|
|
||||||
_inherit = 'res.partner.category'
|
|
||||||
|
|
||||||
name = fields.Char(translate=False)
|
|
||||||
|
|
||||||
|
|
||||||
class ResPartnerBank(models.Model):
|
|
||||||
_inherit = 'res.partner.bank'
|
|
||||||
|
|
||||||
# In the 'base' module, they didn't put any string, so the bank name is
|
|
||||||
# displayed as 'Name', which the string of the related field it
|
|
||||||
# points to
|
|
||||||
bank_name = fields.Char(string='Bank Name')
|
|
||||||
14
base_usability/models/res_partner_bank.py
Normal file
14
base_usability/models/res_partner_bank.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Copyright 2015-2020 Akretion France (http://www.akretion.com/)
|
||||||
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartnerBank(models.Model):
|
||||||
|
_inherit = 'res.partner.bank'
|
||||||
|
|
||||||
|
# In the 'base' module, they didn't put any string, so the bank name is
|
||||||
|
# displayed as 'Name', which the string of the related field it
|
||||||
|
# points to
|
||||||
|
bank_name = fields.Char(string='Bank Name')
|
||||||
11
base_usability/models/res_partner_category.py
Normal file
11
base_usability/models/res_partner_category.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Copyright 2015-2020 Akretion France (http://www.akretion.com/)
|
||||||
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class ResPartnerCategory(models.Model):
|
||||||
|
_inherit = 'res.partner.category'
|
||||||
|
|
||||||
|
name = fields.Char(translate=False)
|
||||||
27
base_usability/models/res_users.py
Normal file
27
base_usability/models/res_users.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Copyright 2018-2020 Akretion France (http://www.akretion.com/)
|
||||||
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
|
from odoo import api, models, SUPERUSER_ID
|
||||||
|
import logging
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class ResUsers(models.Model):
|
||||||
|
_inherit = 'res.users'
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _script_partners_linked_to_users_no_company(self):
|
||||||
|
if self.env.user.id != SUPERUSER_ID:
|
||||||
|
self = self.sudo()
|
||||||
|
logger.info(
|
||||||
|
'START to set company_id=False on partners related to users')
|
||||||
|
users = self.with_context(active_test=False).search([])
|
||||||
|
for user in users:
|
||||||
|
if user.partner_id.company_id:
|
||||||
|
user.partner_id.write({'company_id': False})
|
||||||
|
logger.info(
|
||||||
|
'Wrote company_id=False on user %s ID %d',
|
||||||
|
user.login, user.id)
|
||||||
|
logger.info(
|
||||||
|
'END setting company_id=False on partners related to users')
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# Copyright 2018 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
|
|
||||||
from odoo import models, api, SUPERUSER_ID, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
import logging
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class ResUsers(models.Model):
|
|
||||||
_inherit = 'res.users'
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def default_get(self, fields_list):
|
|
||||||
res = super(ResUsers, self).default_get(fields_list)
|
|
||||||
# For a new partner auto-created when you create a new user, we prefer
|
|
||||||
# customer=False and supplier=True by default
|
|
||||||
res.update({
|
|
||||||
'customer': False,
|
|
||||||
'supplier': True,
|
|
||||||
})
|
|
||||||
return res
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _script_partners_linked_to_users_no_company(self):
|
|
||||||
if self.env.user.id != SUPERUSER_ID:
|
|
||||||
raise UserError(_('You must run this script as admin user'))
|
|
||||||
logger.info(
|
|
||||||
'START to set company_id=False on partners related to users')
|
|
||||||
users = self.search(
|
|
||||||
['|', ('active', '=', True), ('active', '=', False)])
|
|
||||||
for user in users:
|
|
||||||
if user.partner_id.company_id:
|
|
||||||
user.partner_id.company_id = False
|
|
||||||
logger.info(
|
|
||||||
'Wrote company_id=False on user %s ID %d',
|
|
||||||
user.login, user.id)
|
|
||||||
logger.info(
|
|
||||||
'END setting company_id=False on partners related to users')
|
|
||||||
return True
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
© 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
Copyright 2016-2020 Akretion France (http://www.akretion.com/)
|
||||||
|
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
Copyright 2015-2019 Akretion France (http://www.akretion.com/)
|
Copyright 2015-2020 Akretion France (http://www.akretion.com/)
|
||||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record id="module_view_kanban" model="ir.ui.view">
|
|
||||||
<field name="name">Better display of module technical name</field>
|
|
||||||
<field name="model">ir.module.module</field>
|
|
||||||
<field name="inherit_id" ref="base.module_view_kanban"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<xpath expr="//h4[hasclass('o_kanban_record_title')]/code[@groups='base.group_no_one']" position="before">
|
|
||||||
<br/>
|
|
||||||
</xpath>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_module_filter" model="ir.ui.view">
|
<record id="view_module_filter" model="ir.ui.view">
|
||||||
<field name="model">ir.module.module</field>
|
<field name="model">ir.module.module</field>
|
||||||
@@ -25,9 +15,6 @@
|
|||||||
<xpath expr="//filter[@name='extra']" position="after">
|
<xpath expr="//filter[@name='extra']" position="after">
|
||||||
<filter name="installable" string="Installable" domain="[('state', '!=', 'uninstallable')]"/>
|
<filter name="installable" string="Installable" domain="[('state', '!=', 'uninstallable')]"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<group expand="0" position="inside">
|
|
||||||
<filter name="state_groupby" string="State" context="{'group_by': 'state'}"/>
|
|
||||||
</group>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
@@ -2,16 +2,6 @@
|
|||||||
|
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record id="ir_cron_view_tree" model="ir.ui.view">
|
|
||||||
<field name="model">ir.cron</field>
|
|
||||||
<field name="inherit_id" ref="base.ir_cron_view_tree"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="name" position="after">
|
|
||||||
<field name="model_id"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_sequence_search" model="ir.ui.view">
|
<record id="view_sequence_search" model="ir.ui.view">
|
||||||
<field name="model">ir.sequence</field>
|
<field name="model">ir.sequence</field>
|
||||||
<field name="inherit_id" ref="base.view_sequence_search"/>
|
<field name="inherit_id" ref="base.view_sequence_search"/>
|
||||||
@@ -1,24 +1,23 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
© 2015-2016 Akretion (http://www.akretion.com/)
|
Copyright 2015-2020 Akretion France (http://www.akretion.com/)
|
||||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record id="res_country_state_search" model="ir.ui.view">
|
<record id="view_country_state_search" model="ir.ui.view">
|
||||||
<field name="name">base_usability.res.country.state.search</field>
|
<field name="name">base_usability.res.country.state.search</field>
|
||||||
<field name="model">res.country.state</field>
|
<field name="model">res.country.state</field>
|
||||||
|
<field name="inherit_id" ref="base.view_country_state_search"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<search string="Search States">
|
<field name="name" position="attributes">
|
||||||
<field name="name" filter_domain="['|', ('name', 'ilike', self), ('code', '=', self)]" string="Name or Code"/>
|
<attribute name="filter_domain">['|', ('name', 'ilike', self), ('code', '=', self)]</attribute>
|
||||||
|
</field>
|
||||||
|
<field name="name" position="after">
|
||||||
<field name="code"/>
|
<field name="code"/>
|
||||||
<field name="country_id"/>
|
</field>
|
||||||
<group string="Group By" name="groupby">
|
|
||||||
<filter name="country_groupby" string="Country" context="{'group_by': 'country_id'}"/>
|
|
||||||
</group>
|
|
||||||
</search>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
@@ -12,9 +12,6 @@
|
|||||||
<field name="model">res.partner</field>
|
<field name="model">res.partner</field>
|
||||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//field[@name='child_ids']/form//field[@name='email']" position="attributes">
|
|
||||||
<attribute name="widget">email</attribute>
|
|
||||||
</xpath>
|
|
||||||
<!-- Show title not only on Contacts -->
|
<!-- Show title not only on Contacts -->
|
||||||
<xpath expr="//field[@name='child_ids']/form//field[@name='title']" position="attributes">
|
<xpath expr="//field[@name='child_ids']/form//field[@name='title']" position="attributes">
|
||||||
<attribute name="attrs"></attribute>
|
<attribute name="attrs"></attribute>
|
||||||
@@ -38,11 +35,8 @@
|
|||||||
<field name="model">res.partner</field>
|
<field name="model">res.partner</field>
|
||||||
<field name="inherit_id" ref="base.view_partner_tree"/>
|
<field name="inherit_id" ref="base.view_partner_tree"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="country_id" position="attributes">
|
<field name="phone" position="after">
|
||||||
<attribute name="invisible">0</attribute>
|
<field name="mobile" optional="show" widget="phone" class="o_force_ltr"/>
|
||||||
</field>
|
|
||||||
<field name="country_id" position="before">
|
|
||||||
<field name="city"/>
|
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -57,9 +51,6 @@
|
|||||||
<!-- for 'ref', change '=' to 'start with' -->
|
<!-- for 'ref', change '=' to 'start with' -->
|
||||||
<attribute name="filter_domain">['|','|',('display_name','ilike',self),('ref','=ilike',self + '%'),('email','ilike',self)]</attribute>
|
<attribute name="filter_domain">['|','|',('display_name','ilike',self),('ref','=ilike',self + '%'),('email','ilike',self)]</attribute>
|
||||||
</field>
|
</field>
|
||||||
<filter name="inactive" position="before">
|
|
||||||
<separator/>
|
|
||||||
</filter>
|
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
@@ -1,22 +1,21 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
Copyright 2018 Akretion (http://www.akretion.com/)
|
Copyright 2018-2020 Akretion (http://www.akretion.com/)
|
||||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
<record id="view_partner_bank_tree" model="ir.ui.view">
|
<record id="view_partner_bank_tree" model="ir.ui.view">
|
||||||
<field name="name">base_usability.res.partner.bank.tree</field>
|
<field name="name">base_usability.res.partner.bank.tree</field>
|
||||||
<field name="model">res.partner.bank</field>
|
<field name="model">res.partner.bank</field>
|
||||||
<field name="inherit_id" ref="base.view_partner_bank_tree"/>
|
<field name="inherit_id" ref="base.view_partner_bank_tree"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="sequence" position="attributes">
|
<field name="bank_name" position="attributes">
|
||||||
<attribute name="invisible">0</attribute>
|
<attribute name="invisible">1</attribute>
|
||||||
<attribute name="widget">handle</attribute>
|
</field>
|
||||||
|
<field name="bank_name" position="after">
|
||||||
|
<field name="bank_id"/>
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!--
|
|
||||||
Copyright 2018 Akretion (http://www.akretion.com/)
|
|
||||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
|
||||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
||||||
-->
|
|
||||||
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="view_users_tree" model="ir.ui.view">
|
|
||||||
<field name="name">base_usability.res.users.tree</field>
|
|
||||||
<field name="model">res.users</field>
|
|
||||||
<field name="inherit_id" ref="base.view_users_tree"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="login_date" position="after">
|
|
||||||
<field name="company_id" groups="base.group_multi_company"/>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
Reference in New Issue
Block a user