From 91ff1b477a38f59b66659dd9a627e29ac649d98d Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 7 Mar 2012 16:19:42 +0100 Subject: [PATCH] [IMP] base: change the res.partner field is_company into a boolean field bzr revid: rco@openerp.com-20120307151942-t73orqjvgu5jwybw --- openerp/addons/base/res/res_partner.py | 102 ++++++++----------- openerp/addons/base/res/res_partner_demo.xml | 54 +++++----- openerp/addons/base/res/res_partner_view.xml | 41 +++++--- 3 files changed, 97 insertions(+), 100 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index f05d6641929..10700c536f5 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -161,7 +161,7 @@ class res_partner(osv.osv): 'fax': fields.char('Fax', size=64), 'mobile': fields.char('Mobile', size=64), 'birthdate': fields.char('Birthdate', size=64), - 'is_company': fields.selection( [ ('contact','Person'),('partner','Company') ],'Contact Type', help="Select if the partner is a company or person"), + 'is_company': fields.boolean('Company', help="Check if the contact is a company, otherwise it is a person"), 'use_parent_address': fields.boolean('Use Company Address', help="Check to use the company's address"), 'photo': fields.binary('Photo'), 'company_id': fields.many2one('res.company', 'Company', select=1), @@ -175,9 +175,11 @@ class res_partner(osv.osv): return False def _get_photo(self, cr, uid, is_company, context=None): - if is_company == 'contact': - return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'photo.png'), 'rb') .read().encode('base64') - return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'company_icon.png'), 'rb') .read().encode('base64') + if is_company: + path = os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'company_icon.png') + else: + path = os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'photo.png') + return open(path, 'rb').read().encode('base64') _defaults = { 'active': True, @@ -185,10 +187,10 @@ class res_partner(osv.osv): 'category_id': _default_category, 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c), 'color': 0, - 'is_company': 'contact', + 'is_company': False, 'type': 'default', - 'use_parent_address':True, - 'photo': _get_photo, + 'use_parent_address': True, + 'photo': lambda self, cr, uid, context: self._get_photo(cr, uid, False, context) } def copy(self, cr, uid, id, default=None, context=None): @@ -198,19 +200,16 @@ class res_partner(osv.osv): default.update({'name': _('%s (copy)')%(name), 'events':[]}) return super(res_partner, self).copy(cr, uid, id, default, context) - def onchange_type(self, cr, uid, ids, is_company, title, child_ids, photo,context=None): - value = {'value': {'is_comapny': '', 'title': '','photo':''}} - if is_company == 'contact': - value['value'] = {'is_company': is_company, - 'title': '','child_ids':[(5,)], - 'photo': self._get_photo(cr, uid, is_company, context)} - elif is_company == 'partner': - value['value'] = {'is_company': is_company, - 'title': '', - 'parent_id':False, - 'photo': self._get_photo(cr, uid, is_company, context)} - return value - + def onchange_type(self, cr, uid, ids, is_company, context=None): + value = {'title': False, + 'photo': self._get_photo(cr, uid, is_company, context)} + if is_company: + value['parent_id'] = False + domain = {'title': [('domain', '=', 'partner')]} + else: + value['child_ids'] = [(5,)] + domain = {'title': [('domain', '=', 'contact')]} + return {'value': value, 'domain': domain} def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): vals = {'value':{}} @@ -248,44 +247,37 @@ class res_partner(osv.osv): return False return True +# _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] def write(self, cr, uid, ids, vals, context=None): - # Update the all child and parent_id record - update_ids=False + # Update all children and parent_id records if isinstance(ids, (int, long)): ids = [ids] - for partner_id in self.browse(cr, uid, ids, context=context): - is_company=partner_id.is_company - parent_id=partner_id.parent_id.id - if is_company == 'contact' and parent_id: - update_ids= self.search(cr, uid, [('parent_id', '=', parent_id),('use_parent_address','=',True)], context=context) - if parent_id not in update_ids: - update_ids.append(parent_id) - elif is_company == 'partner': - update_ids= self.search(cr, uid, [('parent_id', '=', partner_id.id),('use_parent_address','=',True)], context=context) - if update_ids: - self.udpate_address(cr,uid,update_ids,False,vals,context) + for partner in self.browse(cr, uid, ids, context=context): + is_company = partner.is_company + parent_id = partner.parent_id.id + if is_company: + update_ids = self.search(cr, uid, [('parent_id', '=', partner.id), ('use_parent_address','=',True)], context=context) + elif not is_company and parent_id: + update_ids = [parent_id] + self.search(cr, uid, [('parent_id', '=', parent_id), ('use_parent_address','=',True)], context=context) + else: + update_ids = [] + self.update_address(cr, uid, update_ids, vals, context) return super(res_partner,self).write(cr, uid, ids, vals, context=context) def create(self, cr, uid, vals, context=None): if vals.get('parent_id') and vals.get('use_parent_address'): - update_ids= self.search(cr, uid, [('parent_id', '=', vals.get('parent_id')),('use_parent_address','=',True)], context=context) - update_ids.append(vals.get('parent_id')) - self.udpate_address(cr,uid,False,update_ids,vals) + update_ids = [vals['parent_id']] + \ + self.search(cr, uid, [('parent_id', '=', vals['parent_id']),('use_parent_address','=',True)], context=context) + self.update_address(cr, uid, update_ids, vals) return super(res_partner,self).create(cr, uid, vals, context=context) - - def udpate_address(self,cr,uid,update_ids,parent_id,vals, context=None): + def update_address(self, cr, uid, ids, vals, context=None): + addr_vals = {} for key, data in vals.iteritems(): - if key in ('street','street2','zip','city','state_id','country_id','email','phone','fax','mobile','website','ref','lang') and data : - update_list=update_ids or parent_id - if update_list : - sql = """UPDATE res_partner SET %(field)s = %%(value)s - WHERE id in %%(id)s"""%{'field' : key,} - cr.execute(sql, {'value': data or '', - 'id':tuple(update_list)}) - return True -# _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] + if key in ('street','street2','zip','city','state_id','country_id','email','phone','fax','mobile','website','ref','lang') and data: + addr_vals[key] = data + return super(res_partner, self).write(cr, uid, ids, addr_vals, context) def name_get(self, cr, uid, ids, context=None): if context is None: @@ -401,7 +393,7 @@ class res_partner(osv.osv): ('name','=','main_partner')])[0], ).res_id - def _display_address(self, cr, uid, address,type ,context=None): + def _display_address(self, cr, uid, address, type, context=None): ''' The purpose of this function is to build and return an address formatted accordingly to the standards of the country where it belongs. @@ -413,10 +405,10 @@ class res_partner(osv.osv): ''' if type: - if address.is_company=='partner' and address.child_ids: + if address.is_company and address.child_ids: for child_id in address.child_ids: - if child_id.type==type: - address=child_id + if child_id.type == type: + address = child_id # get the information that will be injected into the display format # get the address format @@ -435,14 +427,9 @@ class res_partner(osv.osv): return address_format % args - def default_get(self, cr, uid, fields, context=None): - res = super(res_partner, self).default_get( cr, uid, fields, context) - if 'is_company' in res: - res.update({'photo': self._get_photo(cr, uid, res.get('is_company', 'contact'), context)}) - return res -#This feature is Deprecated for backward Compability only +# res.partner.address is deprecated; it is still there for backward compability only class res_partner_address(osv.osv): _table = "res_partner" _name = 'res.partner.address' @@ -478,4 +465,5 @@ class res_partner_address(osv.osv): def create(self, cr, uid, vals, context=None): logging.getLogger('res.partner').warning("Deprecated, use of res.partner.address and used res.partner") return super(res_partner_address,self).create(cr, uid, vals, context=context) + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 99ed8965073..e4f43cb0c06 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -93,56 +93,56 @@ 1 - partner + 1 www.asustek.com Agrolait - partner + 1 www.agrolait.com Camptocamp - partner + 1 1 - partner + 1 www.camptocamp.com www.syleam.fr Syleam - partner + 1 SmartBusiness - partner + 1 Axelor 1 - partner + 1 www.axelor.com/ Tiny AT Work - partner + 1 www.tinyatwork.com/ Bank Wealthy and sons - partner + 1 www.wealthyandsons.com/ China Export - partner + 1 www.chinaexport.com/ @@ -150,13 +150,13 @@ 1 - partner + 1 www.distribpc.com/ Ecole de Commerce de Liege - partner + 1 www.eci-liege.info// @@ -164,7 +164,7 @@ 1 - partner + 1 Maxtor @@ -172,20 +172,20 @@ 1 - partner + 1 Seagate 1 - partner + 1 http://mediapole.net Mediapole SPRL - partner + 1 www.balmerinc.com @@ -193,38 +193,38 @@ or - partner + 1 Tecsas 3020170000003 - partner + 1 Leclerc - partner + 1 Centrale d'achats BML 3020178572427 - partner + 1 Magazin BML 1 3020178570171 - partner + 1 Université de Liège - partner + 1 http://www.ulg.ac.be/ @@ -235,7 +235,7 @@ Dubois sprl - partner + 1 http://www.dubois.be/ @@ -266,7 +266,7 @@ The Shelve House - partner + 1 @@ -274,7 +274,7 @@ 1 0 - partner + 1 vicking-direct.be @@ -283,14 +283,14 @@ 1 - partner + 1 woodywoodpecker.com ZeroOne Inc - partner + 1 http://www.zerooneinc.com/ diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 0c3652ac152..b5fc080330f 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -327,14 +327,17 @@
- - - - + + + + + + - - + @@ -348,9 +351,10 @@ + - - + @@ -370,18 +374,20 @@ - + - - + + - + @@ -396,8 +402,8 @@ - - + + @@ -417,7 +423,7 @@ - + @@ -470,6 +476,9 @@ + + + @@ -534,7 +543,7 @@
+91
- +