From eb11bcb933892cd2c2d2bd372f3a19a6184d4911 Mon Sep 17 00:00:00 2001 From: "Rucha (Open ERP)" Date: Thu, 12 May 2011 19:10:15 +0530 Subject: [PATCH 1/2] [IMP]: base: Improvement in company view, Added function fields for address information bzr revid: rpa@tinyerp.com-20110512134015-8naikq64nabar4vy --- openerp/addons/base/base_update.xml | 10 +++++++++ openerp/addons/base/res/res_company.py | 28 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/openerp/addons/base/base_update.xml b/openerp/addons/base/base_update.xml index 086459dbab7..de8b4b31279 100644 --- a/openerp/addons/base/base_update.xml +++ b/openerp/addons/base/base_update.xml @@ -199,6 +199,16 @@ + + + + + + + + + diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 6401dc15365..89f4790da35 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -72,6 +72,26 @@ class res_company(osv.osv): _name = "res.company" _description = 'Companies' _order = 'name' + + def _get_address_data(self, cr, uid, ids, name, arg, context=None): + result = {} + name = name[0] + for company in self.browse(cr, uid, ids, context=context): + result[company.id] = {} + if company.partner_id and company.partner_id.address: + address = company.partner_id.address[0] + result[company.id][name] = address[name] or False + else: + result[company.id][name] = False + return result + + def _set_address_data(self, cr, uid, company_id, name, value, arg, context=None): + company = self.browse(cr, uid, company_id, context=context) + address = company.partner_id and company.partner_id.address and company.partner_id.address[0].id + address_obj = self.pool.get('res.partner.address') + address_obj.write(cr, uid, [address], {name: value or False}) + return True + _columns = { 'name': fields.char('Company Name', size=64, required=True), 'parent_id': fields.many2one('res.company', 'Parent Company', select=True), @@ -88,6 +108,14 @@ class res_company(osv.osv): 'currency_ids': fields.one2many('res.currency', 'company_id', 'Currency'), 'user_ids': fields.many2many('res.users', 'res_company_users_rel', 'cid', 'user_id', 'Accepted Users'), 'account_no':fields.char('Account No.', size=64), + 'street' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street", multi='street'), + 'street2' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street2", multi='street2'), + 'zip' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="Zip", multi='zip'), + 'city' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="City", multi='city'), +# 'state_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', method=True, string="State", multi='state_id'), +# 'country_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', method=True, string="Country", multi='country_id'), + 'email' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Email", multi='email'), + 'phone' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Phone", multi='phone'), } def _search(self, cr, uid, args, offset=0, limit=None, order=None, From 2b32f8af67b3a35f08224a2bd936be8cb81b8cd7 Mon Sep 17 00:00:00 2001 From: "Rucha (Open ERP)" Date: Fri, 13 May 2011 12:35:21 +0530 Subject: [PATCH 2/2] [IMP]: base: Improvement in function field, and fixed adding new fields in country view bzr revid: rpa@tinyerp.com-20110513070521-qdwxasydlioc2qiu --- openerp/addons/base/base_update.xml | 17 ++++++---- openerp/addons/base/res/res_company.py | 44 ++++++++++++++++---------- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/openerp/addons/base/base_update.xml b/openerp/addons/base/base_update.xml index de8b4b31279..cf1f9ee7e14 100644 --- a/openerp/addons/base/base_update.xml +++ b/openerp/addons/base/base_update.xml @@ -193,9 +193,14 @@
- - - + + + + + + + + @@ -204,15 +209,15 @@ - + + + - diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 89f4790da35..c0a1a87b229 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -75,21 +75,31 @@ class res_company(osv.osv): def _get_address_data(self, cr, uid, ids, name, arg, context=None): result = {} - name = name[0] for company in self.browse(cr, uid, ids, context=context): result[company.id] = {} - if company.partner_id and company.partner_id.address: - address = company.partner_id.address[0] - result[company.id][name] = address[name] or False - else: - result[company.id][name] = False + for field in name: + result[company.id][field] = False + if company.partner_id: + part_obj = self.pool.get('res.partner') + address_obj = self.pool.get('res.partner.address') + address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default']) + if address_data['default']: + address = address_obj.read(cr, uid, address_data['default'], [], context=context) + for field in name: + result[company.id][field] = address[field] or False return result def _set_address_data(self, cr, uid, company_id, name, value, arg, context=None): company = self.browse(cr, uid, company_id, context=context) - address = company.partner_id and company.partner_id.address and company.partner_id.address[0].id - address_obj = self.pool.get('res.partner.address') - address_obj.write(cr, uid, [address], {name: value or False}) + if company.partner_id: + part_obj = self.pool.get('res.partner') + address_obj = self.pool.get('res.partner.address') + address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default']) + address = address_data['default'] + if address: + address_obj.write(cr, uid, [address], {name: value or False}) + else: + address_obj.create(cr, uid, {name: value or False, 'partner_id': company.partner_id.id}, context=context) return True _columns = { @@ -108,14 +118,14 @@ class res_company(osv.osv): 'currency_ids': fields.one2many('res.currency', 'company_id', 'Currency'), 'user_ids': fields.many2many('res.users', 'res_company_users_rel', 'cid', 'user_id', 'Accepted Users'), 'account_no':fields.char('Account No.', size=64), - 'street' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street", multi='street'), - 'street2' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street2", multi='street2'), - 'zip' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="Zip", multi='zip'), - 'city' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="City", multi='city'), -# 'state_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', method=True, string="State", multi='state_id'), -# 'country_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', method=True, string="Country", multi='country_id'), - 'email' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Email", multi='email'), - 'phone' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Phone", multi='phone'), + 'street' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street", multi='address'), + 'street2' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', method=True, string="Street2", multi='address'), + 'zip' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="Zip", multi='address'), + 'city' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', method=True, string="City", multi='address'), + 'state_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', domain="[('country_id', '=', country_id)]", relation='res.country.state', method=True, string="State", multi='address'), + 'country_id' : fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country', method=True, string="Country", multi='address'), + 'email' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Email", multi='address'), + 'phone' : fields.function(_get_address_data, fnct_inv=_set_address_data, size=64, type='char', method=True, string="Phone", multi='address'), } def _search(self, cr, uid, args, offset=0, limit=None, order=None,