From fe4c9bb3a98417fedf86cb7561e3e05a2b2cdce1 Mon Sep 17 00:00:00 2001 From: Tanguy Charlier Date: Wed, 23 Sep 2015 17:11:59 +0200 Subject: [PATCH] [IMP] res_partner : name field is now optional for addresses. The name_get has been updated accordingly : if an address has no name, we now show parent_name, res_partner.type. The contact template shows the name when it exists, and the parent_name if it does not. This should produce cleaner reports. Though the name field is no longer required on the res.partner model, "required" attribute in views and an sql contraint enforce that all contacts have a name. --- openerp/addons/base/ir/ir_qweb.xml | 7 ++++++- openerp/addons/base/res/res_partner.py | 10 ++++++++-- openerp/addons/base/res/res_partner_view.xml | 6 +++--- openerp/addons/base/res/res_users_view.xml | 4 ++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/openerp/addons/base/ir/ir_qweb.xml b/openerp/addons/base/ir/ir_qweb.xml index 79ae9a7b064..71a06764812 100644 --- a/openerp/addons/base/ir/ir_qweb.xml +++ b/openerp/addons/base/ir/ir_qweb.xml @@ -6,7 +6,12 @@ ----
- + + + + + + diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 61349c0e337..80b0fa5c0f7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -207,7 +207,7 @@ class res_partner(osv.Model, format_address): _order = "display_name" _columns = { - 'name': fields.char('Name', required=True, select=True), + 'name': fields.char('Name', select=True), 'display_name': fields.function(_display_name, type='char', string='Name', store=_display_name_store_triggers, select=True), 'date': fields.date('Date', select=1), 'title': fields.many2one('res.partner.title', 'Title'), @@ -342,6 +342,10 @@ class res_partner(osv.Model, format_address): (osv.osv._check_recursion, 'You cannot create recursive Partner hierarchies.', ['parent_id']), ] + _sql_constraints = [ + ('check_name', "CHECK( (type='contact' AND name IS NOT NULL) or (type!='contact') )", 'Contacts require a name.'), + ] + @api.one def copy(self, default=None): default = dict(default or {}) @@ -578,8 +582,10 @@ class res_partner(osv.Model, format_address): ids = [ids] res = [] for record in self.browse(cr, uid, ids, context=context): - name = record.name + name = record.name or '' if record.parent_id and not record.is_company: + if not name and record.type in ['invoice', 'delivery', 'other']: + name = dict(self.fields_get(cr, uid, context=context)['type']['selection'])[record.type] name = "%s, %s" % (record.parent_name, name) if context.get('show_address_only'): name = self._display_address(cr, uid, record, without_company=True, context=context) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index e7ea9f8d49c..52839fd29a1 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -78,7 +78,7 @@

- +

- +

- +