From 93960634c169bab8b9a0e221c3a5cd07f53b1468 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Mon, 20 Feb 2012 14:47:05 +0530 Subject: [PATCH 001/141] [IMP] res_partner:add res_partner_address field to res_partner bzr revid: kjo@tinyerp.com-20120220091705-y7xdh00sdkotpqj6 --- openerp/addons/base/base_data.xml | 10 +- openerp/addons/base/base_demo.xml | 2 +- openerp/addons/base/res/res_company.py | 8 +- openerp/addons/base/res/res_partner.py | 137 +++--------------- openerp/addons/base/res/res_partner_demo.xml | 82 +++++------ .../addons/base/res/res_partner_report.xml | 2 +- openerp/addons/base/res/res_partner_view.xml | 27 ++-- .../addons/base/security/ir.model.access.csv | 6 +- .../addons/base/test/test_osv_expression.yml | 27 +--- openerp/report/report_sxw.py | 2 +- openerp/tests/test_orm.py | 2 +- openerp/tools/import_email.py | 4 +- 12 files changed, 97 insertions(+), 212 deletions(-) diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index 525c7e2e334..70ade7133a9 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -1058,15 +1058,15 @@ Your Company - + - + @@ -1102,9 +1102,9 @@ - + diff --git a/openerp/addons/base/base_demo.xml b/openerp/addons/base/base_demo.xml index 3d1eae3c4bc..3ba951618cf 100644 --- a/openerp/addons/base/base_demo.xml +++ b/openerp/addons/base/base_demo.xml @@ -2,7 +2,7 @@ - + Fabien Dupont Chaussee de Namur 1367 diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index f04e28832a0..b22800bfb94 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -77,13 +77,12 @@ class res_company(osv.osv): """ Read the 'address' functional fields. """ result = {} part_obj = self.pool.get('res.partner') - address_obj = self.pool.get('res.partner.address') for company in self.browse(cr, uid, ids, context=context): result[company.id] = {}.fromkeys(field_names, False) if company.partner_id: 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'], field_names, context=context) + address = part_obj.read(cr, uid, address_data['default'], field_names, context=context) for field in field_names: result[company.id][field] = address[field] or False return result @@ -105,13 +104,12 @@ class res_company(osv.osv): company = self.browse(cr, uid, company_id, context=context) 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}) + part_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) + part_obj.create(cr, uid, {name: value or False, 'partner_id': company.partner_id.id}, context=context) return True diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index f4a36b46b77..f2152aeaa55 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -134,23 +134,32 @@ class res_partner(osv.osv): 'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'), 'website': fields.char('Website',size=64, help="Website of Partner."), 'comment': fields.text('Notes'), - 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), 'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories'), 'events': fields.one2many('res.partner.event', 'partner_id', 'Events'), 'credit_limit': fields.float(string='Credit Limit'), 'ean13': fields.char('EAN13', size=13), - 'active': fields.boolean('Active'), 'customer': fields.boolean('Customer', help="Check this box if the partner is a customer."), 'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."), - 'city': fields.related('address', 'city', type='char', string='City'), - 'function': fields.related('address', 'function', type='char', string='function'), - 'subname': fields.related('address', 'name', type='char', string='Contact Name'), - 'phone': fields.related('address', 'phone', type='char', string='Phone'), - 'mobile': fields.related('address', 'mobile', type='char', string='Mobile'), - 'country': fields.related('address', 'country_id', type='many2one', relation='res.country', string='Country'), 'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."), - 'email': fields.related('address', 'email', type='char', size=240, string='E-mail'), - 'company_id': fields.many2one('res.company', 'Company', select=1), + 'color': fields.integer('Color Index'), + 'partner_id': fields.many2one('res.partner', 'Partner Name', ondelete='set null', select=True, help="Keep empty for a private address, not related to partner."), + 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), + 'function': fields.char('Function', size=128), + 'street': fields.char('Street', size=128), + 'street2': fields.char('Street2', size=128), + 'zip': fields.char('Zip', change_default=True, size=24), + 'city': fields.char('City', size=128), + 'state_id': fields.many2one("res.country.state", 'Fed. State', domain="[('country_id','=',country_id)]"), + 'country_id': fields.many2one('res.country', 'Country'), + 'email': fields.char('E-Mail', size=240), + 'phone': fields.char('Phone', size=64), + 'fax': fields.char('Fax', size=64), + 'mobile': fields.char('Mobile', size=64), + 'birthdate': fields.char('Birthdate', size=64), + 'active': fields.boolean('Active', help="Uncheck the active field to hide the contact."), +# 'company_id': fields.related('partner_id','company_id',type='many2one',relation='res.company',string='Company', store=True), + 'company_id': fields.many2one('res.company', 'Company',select=1), + 'is_company': fields.boolean('Company', help="Check if you want to create company"), 'color': fields.integer('Color Index'), } def _default_category(self, cr, uid, context=None): @@ -166,6 +175,8 @@ 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': lambda *a: 0, + 'type': 'default', } def copy(self, cr, uid, id, default=None, context=None): @@ -243,9 +254,8 @@ class res_partner(osv.osv): def address_get(self, cr, uid, ids, adr_pref=None): if adr_pref is None: adr_pref = ['default'] - address_obj = self.pool.get('res.partner.address') - address_ids = address_obj.search(cr, uid, [('partner_id', 'in', ids)]) - address_rec = address_obj.read(cr, uid, address_ids, ['type']) + address_ids = self.search(cr, uid, [('partner_id', 'in', ids)]) + address_rec = self.read(cr, uid, address_ids, ['type']) res = list((addr['type'],addr['id']) for addr in address_rec) adr = dict(res) # get the id of the (first) default address if there is one, @@ -293,107 +303,6 @@ class res_partner(osv.osv): ).res_id res_partner() -class res_partner_address(osv.osv): - _description ='Partner Addresses' - _name = 'res.partner.address' - _order = 'type, name' - _columns = { - 'partner_id': fields.many2one('res.partner', 'Partner Name', ondelete='set null', select=True, help="Keep empty for a private address, not related to partner."), - 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), - 'function': fields.char('Function', size=128), - 'title': fields.many2one('res.partner.title','Title'), - 'name': fields.char('Contact Name', size=64, select=1), - 'street': fields.char('Street', size=128), - 'street2': fields.char('Street2', size=128), - 'zip': fields.char('Zip', change_default=True, size=24), - 'city': fields.char('City', size=128), - 'state_id': fields.many2one("res.country.state", 'Fed. State', domain="[('country_id','=',country_id)]"), - 'country_id': fields.many2one('res.country', 'Country'), - 'email': fields.char('E-Mail', size=240), - 'phone': fields.char('Phone', size=64), - 'fax': fields.char('Fax', size=64), - 'mobile': fields.char('Mobile', size=64), - 'birthdate': fields.char('Birthdate', size=64), - 'is_customer_add': fields.related('partner_id', 'customer', type='boolean', string='Customer'), - 'is_supplier_add': fields.related('partner_id', 'supplier', type='boolean', string='Supplier'), - 'active': fields.boolean('Active', help="Uncheck the active field to hide the contact."), -# 'company_id': fields.related('partner_id','company_id',type='many2one',relation='res.company',string='Company', store=True), - 'company_id': fields.many2one('res.company', 'Company',select=1), - 'color': fields.integer('Color Index'), - } - _defaults = { - 'active': lambda *a: 1, - 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner.address', context=c), - } - def name_get(self, cr, user, ids, context=None): - if context is None: - context = {} - if not len(ids): - return [] - res = [] - for r in self.read(cr, user, ids, ['name','zip','country_id', 'city','partner_id', 'street']): - if context.get('contact_display', 'contact')=='partner' and r['partner_id']: - res.append((r['id'], r['partner_id'][1])) - else: - # make a comma-separated list with the following non-empty elements - elems = [r['name'], r['country_id'] and r['country_id'][1], r['city'], r['street']] - addr = ', '.join(filter(bool, elems)) - if (context.get('contact_display', 'contact')=='partner_address') and r['partner_id']: - res.append((r['id'], "%s: %s" % (r['partner_id'][1], addr or '/'))) - else: - res.append((r['id'], addr or '/')) - return res - - def name_search(self, cr, user, name, args=None, operator='ilike', context=None, limit=100): - if not args: - args=[] - if not context: - context={} - if context.get('contact_display', 'contact')=='partner ' or context.get('contact_display', 'contact')=='partner_address ' : - ids = self.search(cr, user, [('partner_id',operator,name)], limit=limit, context=context) - else: - if not name: - ids = self.search(cr, user, args, limit=limit, context=context) - else: - ids = self.search(cr, user, [('zip','=',name)] + args, limit=limit, context=context) - if not ids: - ids = self.search(cr, user, [('city',operator,name)] + args, limit=limit, context=context) - if name: - ids += self.search(cr, user, [('name',operator,name)] + args, limit=limit, context=context) - ids += self.search(cr, user, [('partner_id',operator,name)] + args, limit=limit, context=context) - return self.name_get(cr, user, ids, context=context) - - def get_city(self, cr, uid, id): - return self.browse(cr, uid, id).city - - def _display_address(self, cr, uid, address, 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. - - :param address: browse record of the res.partner.address to format - :returns: the address formatted in a display that fit its country habits (or the default ones - if not country is specified) - :rtype: string - ''' - # get the address format - address_format = address.country_id and address.country_id.address_format or \ - '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' - # get the information that will be injected into the display format - args = { - 'state_code': address.state_id and address.state_id.code or '', - 'state_name': address.state_id and address.state_id.name or '', - 'country_code': address.country_id and address.country_id.code or '', - 'country_name': address.country_id and address.country_id.name or '', - } - address_field = ['title', 'street', 'street2', 'zip', 'city'] - for field in address_field : - args[field] = getattr(address, field) or '' - - return address_format % args - -res_partner_address() - # 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 d38a6a68511..de7a318cc08 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -294,7 +294,7 @@ Resource: res.partner.address --> - + Bruxelles Michel Schumacher 1000 @@ -305,7 +305,7 @@ default - + Avignon CEDEX 09 Laurent Jacot 84911 @@ -316,7 +316,7 @@ default - + Champs sur Marne Laith Jubair 77420 @@ -327,7 +327,7 @@ default - + Louvain-la-Neuve Thomas Passot 1348 @@ -336,7 +336,7 @@ Rue de l'Angelique, 1 - + Taiwan Tang 23410 @@ -347,7 +347,7 @@ default - + Hong Kong Wong 23540 @@ -358,7 +358,7 @@ default - + Brussels Etienne Lacarte 2365 @@ -369,7 +369,7 @@ + 32 025 897 456 - + Namur Jean Guy Lavente 2541 @@ -380,7 +380,7 @@ + 32 081256987 - + Wavre Sylvie Lelitre 5478 @@ -392,7 +392,7 @@ - + Wavre Paul Lelitre 5478 @@ -404,7 +404,7 @@ - + Wavre Serge Lelitre 5478 @@ -416,7 +416,7 @@ - + Paris Arthur Grosbonnet 75016 @@ -428,7 +428,7 @@ - + Alencon Sebastien LANGE 61000 @@ -439,7 +439,7 @@ default - + Liege Karine Lesbrouffe 6985 @@ -450,7 +450,7 @@ default - + Shanghai Zen 478552 @@ -461,7 +461,7 @@ +86-751-64845671 - + default Grenoble Loïc Dupont @@ -473,7 +473,7 @@ +33-658-256545 - + default Carl François Bruxelles @@ -484,7 +484,7 @@ +32-258-256545 - + default Lucien Ferguson 89 Chaussée de Liège @@ -494,7 +494,7 @@ +32-621-568978 - + default Marine Leclerc rue Grande @@ -504,7 +504,7 @@ +33-298.334558 - + invoice Claude Leclerc rue Grande @@ -515,7 +515,7 @@ - + default Martine Ohio Place du 20Août @@ -525,7 +525,7 @@ +32-45895245 - + Lausanne Luc Maurer 1015 @@ -535,7 +535,7 @@ default - + Cupertino Seagate Technology 95014 @@ -546,7 +546,7 @@ default - + Buenos Aires Jack Daniels 1659 @@ -558,7 +558,7 @@ default - + Boston Tiny Work 5501 @@ -574,7 +574,7 @@ Resource: res.partner.address for Training --> - + @@ -586,34 +586,34 @@ - + - + - + - + - + @@ -621,7 +621,7 @@ - + @@ -634,7 +634,7 @@ - + @@ -643,7 +643,7 @@ - + @@ -651,7 +651,7 @@ - + @@ -662,7 +662,7 @@ - + @@ -672,7 +672,7 @@ - + @@ -684,7 +684,7 @@ - + diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 1f0e8f88b1c..28338f863c0 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -20,7 +20,7 @@ ===================== --> - + - + @@ -341,11 +341,10 @@ - + + + @@ -413,8 +412,8 @@ - - + + @@ -465,7 +464,7 @@
, - +
diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index 59ebafb2f99..838ecb2c3d4 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -55,8 +55,8 @@ "access_res_lang_group_user","res_lang group_user","model_res_lang","group_system",1,1,1,1 "access_res_partner_group_partner_manager","res_partner group_partner_manager","model_res_partner","group_partner_manager",1,1,1,1 "access_res_partner_group_user","res_partner group_user","model_res_partner","group_user",1,0,0,0 -"access_res_partner_address_group_partner_manager","res_partner_address group_partner_manager","model_res_partner_address","group_partner_manager",1,1,1,1 -"access_res_partner_address_group_user","res_partner_address group_user","model_res_partner_address","group_user",1,0,0,0 +"access_res_partner_address_group_partner_manager","res_partner_address group_partner_manager","model_res_partner","group_partner_manager",1,1,1,1 +"access_res_partner_address_group_user","res_partner_address group_user","model_res_partner","group_user",1,0,0,0 "access_res_partner_bank_group_user","res_partner_bank group_user","model_res_partner_bank","group_user",1,0,0,0 "access_res_partner_bank_group_partner_manager","res_partner_bank group_partner_manager","model_res_partner_bank","group_partner_manager",1,1,1,1 "access_res_partner_bank_type_group_partner_manager","res_partner_bank_type group_partner_manager","model_res_partner_bank_type","group_partner_manager",1,1,1,1 @@ -117,7 +117,7 @@ "access_ir_filter all","ir_filters all","model_ir_filters",,1,0,0,0 "access_ir_filter employee","ir_filters employee","model_ir_filters","group_user",1,1,1,1 "access_ir_filters","ir_filters_all","model_ir_filters",,1,1,1,1 -"access_res_partner_address","res.partner.address","model_res_partner_address","group_system",1,1,1,1 +"access_res_partner_address","res.partner.address","model_res_partner","group_system",1,1,1,1 "access_res_widget","res.widget","model_res_widget","group_erp_manager",1,1,1,1 "access_res_widget_user","res.widget.user","model_res_widget",,1,0,0,0 "access_res_log_all","res.log","model_res_log",,1,1,1,1 diff --git a/openerp/addons/base/test/test_osv_expression.yml b/openerp/addons/base/test/test_osv_expression.yml index d9a1b215000..852647b540b 100644 --- a/openerp/addons/base/test/test_osv_expression.yml +++ b/openerp/addons/base/test/test_osv_expression.yml @@ -68,19 +68,19 @@ - Testing that some domain expressions work - - !python {model: res.partner.address }: | + !python {model: res.partner }: | ids = self.search(cr, uid, [('partner_id','=','Agrolait')]) assert len(ids) >= 1, ids - Trying the "in" operator, for scalar value - - !python {model: res.partner.address }: | + !python {model: res.partner }: | ids = self.search(cr, uid, [('partner_id','in','Agrolait')]) assert len(ids) >= 1, ids - Trying the "in" operator for list value - - !python {model: res.partner.address }: | + !python {model: res.partner }: | ids = self.search(cr, uid, [('partner_id','in',['Agrolait','ASUStek'])]) assert len(ids) >= 1, ids - @@ -89,15 +89,6 @@ !python {model: ir.ui.menu }: | ids = self.search(cr, uid, [('sequence','in',[1, 2, 10, 20])]) assert len(ids) >= 1, ids -- - Test one2many operator with empty search list -- - !assert {model: res.partner, search: "[('address', 'in', [])]", count: 0, string: "Ids should be empty"} -- - Test one2many operator with False -- - !assert {model: res.partner, search: "[('address', '=', False)]"}: - - address in (False, None, []) - Test many2many operator with empty search list - @@ -107,10 +98,6 @@ - !assert {model: res.partner, search: "[('category_id', '=', False)]"}: - category_id in (False, None, []) -- - Filtering on invalid value across x2many relationship should return an empty set -- - !assert {model: res.partner, search: "[('address.city','=','foo')]", count: 0, string: "Searching for address.city = foo should give empty results"} - Check if many2one works with empty search list - @@ -525,15 +512,7 @@ vals = {'category_id': [(6, 0, [ref("base.res_partner_category_8")])], 'name': 'OpenERP Test', 'active': False, - 'address': [(0, 0, {'country_id': ref("base.be")})] } self.create(cr, uid, vals, context=context) res_ids = self.search(cr, uid, [('category_id', 'ilike', 'supplier'), ('active', '=', False)]) assert len(res_ids) != 0, "Record not Found with category supplier and active False." -- - Testing for One2Many field with country Belgium and active=False -- - !python {model: res.partner }: | - res_ids = self.search(cr, uid, [('address.country_id','=','Belgium'),('active','=',False)]) - assert len(res_ids) != 0, "Record not Found with country Belgium and active False." - diff --git a/openerp/report/report_sxw.py b/openerp/report/report_sxw.py index 4a713ac3df8..9764a64a3f6 100644 --- a/openerp/report/report_sxw.py +++ b/openerp/report/report_sxw.py @@ -321,7 +321,7 @@ class rml_parse(object): return res def display_address(self, address_browse_record): - return self.pool.get('res.partner.address')._display_address(self.cr, self.uid, address_browse_record) + return self.pool.get('res.partner')._display_address(self.cr, self.uid, address_browse_record) def repeatIn(self, lst, name,nodes_parent=False): ret_lst = [] diff --git a/openerp/tests/test_orm.py b/openerp/tests/test_orm.py index c11d4cd19d2..3640fd17f78 100644 --- a/openerp/tests/test_orm.py +++ b/openerp/tests/test_orm.py @@ -19,7 +19,7 @@ class TestO2MSerialization(unittest2.TestCase): def setUp(self): self.cr = openerp.modules.registry.RegistryManager.get(DB).db.cursor() self.partner = openerp.modules.registry.RegistryManager.get(DB)['res.partner'] - self.address = openerp.modules.registry.RegistryManager.get(DB)['res.partner.address'] +# self.address = openerp.modules.registry.RegistryManager.get(DB)['res.partner.address'] def tearDown(self): self.cr.rollback() diff --git a/openerp/tools/import_email.py b/openerp/tools/import_email.py index b597dab5722..d73c50865a2 100644 --- a/openerp/tools/import_email.py +++ b/openerp/tools/import_email.py @@ -86,8 +86,8 @@ class ReceiverEmail2Event(object): def get_partners(self, headers, msg): alladdresses = self.get_addresses(headers, msg) - address_ids = self.rpc(('res.partner.address', 'search', [('email', 'in', alladdresses)])) - addresses = self.rpc(('res.partner.address', 'read', address_ids)) + address_ids = self.rpc(('res.partner', 'search', [('email', 'in', alladdresses)])) + addresses = self.rpc(('res.partner', 'read', address_ids)) return [x['partner_id'][0] for x in addresses] def __call__(self, request): From 0d6c14fec43c3e93c7db47980db98ec49bf2de6f Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Mon, 20 Feb 2012 16:14:30 +0530 Subject: [PATCH 002/141] [IMP] res_partner: set parent_id field bzr revid: kjo@tinyerp.com-20120220104430-x2sc8ivxa9pi7ikk --- openerp/addons/base/res/res_partner.py | 1 - openerp/addons/base/res/res_partner_demo.xml | 98 +++++++------------ openerp/addons/base/res/res_partner_view.xml | 2 + .../addons/base/test/test_osv_expression.yml | 6 +- 4 files changed, 40 insertions(+), 67 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index f2152aeaa55..b2b1a95096a 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -142,7 +142,6 @@ class res_partner(osv.osv): 'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."), 'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."), 'color': fields.integer('Color Index'), - 'partner_id': fields.many2one('res.partner', 'Partner Name', ondelete='set null', select=True, help="Keep empty for a private address, not related to partner."), 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'function': fields.char('Function', size=128), 'street': fields.char('Street', size=128), diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index de7a318cc08..0b36f2aac50 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -93,27 +93,23 @@ 1 - www.asustek.com Agrolait - www.agrolait.com Camptocamp 1 - www.camptocamp.com www.syleam.fr Syleam - SmartBusiness @@ -123,7 +119,6 @@ Axelor 1 - www.axelor.com/ @@ -133,13 +128,11 @@ Bank Wealthy and sons - www.wealthyandsons.com/ China Export - www.chinaexport.com/ @@ -147,13 +140,11 @@ 1 - www.distribpc.com/ Ecole de Commerce de Liege - www.eci-liege.info// @@ -161,7 +152,6 @@ 1 - Maxtor @@ -169,20 +159,17 @@ 1 - Seagate 1 - http://mediapole.net Mediapole SPRL - www.balmerinc.com @@ -190,19 +177,16 @@ or - Tecsas 3020170000003 - Leclerc - Centrale d'achats BML @@ -210,7 +194,6 @@ - Magazin BML 1 @@ -218,12 +201,10 @@ - Université de Liège - http://www.ulg.ac.be/ @@ -234,35 +215,29 @@ Dubois sprl - http://www.dubois.be/ Eric Dubois - Fabien Dupont - Lucie Vonck - NotSoTiny SARL - notsotiny.be The Shelve House - @@ -270,7 +245,6 @@ 1 0 - vicking-direct.be @@ -279,14 +253,12 @@ 1 - woodywoodpecker.com ZeroOne Inc - http://www.zerooneinc.com/ @@ -303,7 +275,7 @@ (+32)2 211 34 83 Rue des Palais 51, bte 33 default - + Avignon CEDEX 09 @@ -314,7 +286,7 @@ (+33)4.32.74.10.57 85 rue du traite de Rome default - + Champs sur Marne @@ -325,7 +297,7 @@ +33 1 64 61 04 01 12 rue Albert Einstein default - + Louvain-la-Neuve @@ -334,7 +306,7 @@ (+32).10.45.17.73 Rue de l'Angelique, 1 - + Taiwan @@ -345,7 +317,7 @@ info@asustek.com + 1 64 61 04 01 default - + Hong Kong @@ -356,7 +328,7 @@ info@maxtor.com + 11 8528 456 789 default - + Brussels @@ -367,7 +339,7 @@ default info@elecimport.com + 32 025 897 456 - + Namur @@ -378,7 +350,7 @@ default info@distribpc.com + 32 081256987 - + Wavre @@ -389,7 +361,7 @@ default s.l@agrolait.be 003281588558 - + @@ -401,7 +373,7 @@ delivery p.l@agrolait.be 003281588557 - + @@ -413,7 +385,7 @@ invoice serge.l@agrolait.be 003281588556 - + @@ -425,7 +397,7 @@ default a.g@wealthyandsons.com 003368978776 - + @@ -437,7 +409,7 @@ +33 (0) 2 33 31 22 10 default - + Liege @@ -448,7 +420,7 @@ k.lesbrouffe@eci-liege.info +32 421 52571 default - + Shanghai @@ -459,7 +431,7 @@ default zen@chinaexport.com +86-751-64845671 - + default @@ -471,7 +443,7 @@ default l.dupont@tecsas.fr +33-658-256545 - + default @@ -482,7 +454,7 @@ 89 Chaussée de Waterloo carl.françois@bml.be +32-258-256545 - + default @@ -492,7 +464,7 @@ 5000 lucien.ferguson@bml.be +32-621-568978 - + default @@ -502,7 +474,7 @@ 29200 marine@leclerc.fr +33-298.334558 - + invoice @@ -512,7 +484,7 @@ 29200 claude@leclerc.fr +33-298.334598 - + @@ -523,7 +495,7 @@ 4000 martine.ohio@ulg.ac.be +32-45895245 - + Lausanne @@ -533,7 +505,7 @@ PSE-A, EPFL default - + Cupertino @@ -544,7 +516,7 @@ info@seagate.com +1 408 256987 default - + Buenos Aires @@ -556,7 +528,7 @@ (5411) 4773-9666 default - + Boston @@ -567,7 +539,7 @@ One Lincoln Street default - + diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 28338f863c0..3ec9fbfb163 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -317,6 +317,7 @@ + @@ -422,6 +423,7 @@ + diff --git a/openerp/addons/base/test/test_osv_expression.yml b/openerp/addons/base/test/test_osv_expression.yml index 852647b540b..300c39ba451 100644 --- a/openerp/addons/base/test/test_osv_expression.yml +++ b/openerp/addons/base/test/test_osv_expression.yml @@ -69,19 +69,19 @@ Testing that some domain expressions work - !python {model: res.partner }: | - ids = self.search(cr, uid, [('partner_id','=','Agrolait')]) + ids = self.search(cr, uid, [('parent_id','=','Agrolait')]) assert len(ids) >= 1, ids - Trying the "in" operator, for scalar value - !python {model: res.partner }: | - ids = self.search(cr, uid, [('partner_id','in','Agrolait')]) + ids = self.search(cr, uid, [('parent_id','in','Agrolait')]) assert len(ids) >= 1, ids - Trying the "in" operator for list value - !python {model: res.partner }: | - ids = self.search(cr, uid, [('partner_id','in',['Agrolait','ASUStek'])]) + ids = self.search(cr, uid, [('parent_id','in',['Agrolait','ASUStek'])]) assert len(ids) >= 1, ids - Check we can use "in" operator for plain fields. From 323811c285ef980b7835ec47ee6d3f162593e188 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Mon, 20 Feb 2012 18:36:58 +0530 Subject: [PATCH 003/141] [IMP] res_partner: change res_partner view bzr revid: kjo@tinyerp.com-20120220130658-2frz0vxjy0tkbl42 --- openerp/addons/base/res/res_partner_view.xml | 73 +++++++++----------- 1 file changed, 31 insertions(+), 42 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 3ec9fbfb163..db4c287ac46 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -332,65 +332,54 @@ - + - - - + - - - + + + + + + + + + + + + - + + + + + From a245e9d632cd1fca676ec240f80125aaefee454e Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 11:11:23 +0530 Subject: [PATCH 004/141] [IMP] res_partner: change the menu name Contacts bzr revid: kjo@tinyerp.com-20120221054123-prz5fd0odxwktp7n --- openerp/addons/base/res/res_partner_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index db4c287ac46..af9229b8f02 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -340,7 +340,7 @@ - + @@ -490,7 +490,7 @@ - Customers + Contacts ir.actions.act_window res.partner form From 8e7736df183e80da9472724fa074ff42f07e62eb Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 11:28:55 +0530 Subject: [PATCH 005/141] [IMP] res_partner: set name Contacts to tree view bzr revid: kjo@tinyerp.com-20120221055855-zktnp5ubv57opdtq --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index af9229b8f02..74ca6a4dcd7 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -309,7 +309,7 @@ tree - + From b800cd26012c07f9313aa0d32df1eb5effd2ce3b Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 11:47:10 +0530 Subject: [PATCH 006/141] [IMP] res_partner: change company field tooltip bzr revid: kjo@tinyerp.com-20120221061710-96acnar7jbqcdt95 --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index b2b1a95096a..d6e4901011e 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -158,7 +158,7 @@ class res_partner(osv.osv): 'active': fields.boolean('Active', help="Uncheck the active field to hide the contact."), # 'company_id': fields.related('partner_id','company_id',type='many2one',relation='res.company',string='Company', store=True), 'company_id': fields.many2one('res.company', 'Company',select=1), - 'is_company': fields.boolean('Company', help="Check if you want to create company"), + 'is_company': fields.boolean('Company', help="Check the field to create company otherwise it is personal contacts"), 'color': fields.integer('Color Index'), } def _default_category(self, cr, uid, context=None): From b6696e250ad8a966419029c043b7365f54fba662 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 14:16:15 +0530 Subject: [PATCH 007/141] [IMP] change res_company and res_bank bzr revid: kjo@tinyerp.com-20120221084615-oxcm3q1qg3upmp9n --- openerp/addons/base/res/res_bank.py | 10 +++++----- openerp/addons/base/res/res_company.py | 2 +- openerp/addons/base/res/res_partner.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index b9e449284e1..7f9107f986d 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -219,11 +219,11 @@ class res_partner_bank(osv.osv): if partner_id: part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context) result['owner_name'] = part.name - result['street'] = part.address and part.address[0].street or False - result['city'] = part.address and part.address[0].city or False - result['zip'] = part.address and part.address[0].zip or False - result['country_id'] = part.address and part.address[0].country_id and part.address[0].country_id.id or False - result['state_id'] = part.address and part.address[0].state_id and part.address[0].state_id.id or False + result['street'] = part and part.street or False + result['city'] = part and part.city or False + result['zip'] = part and part.zip or False + result['country_id'] = part and part.country_id and part.country_id.id or False + result['state_id'] = part and part.state_id and part.state_id.id or False return {'value': result} res_partner_bank() diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index b22800bfb94..8866846932c 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -80,7 +80,7 @@ class res_company(osv.osv): for company in self.browse(cr, uid, ids, context=context): result[company.id] = {}.fromkeys(field_names, False) if company.partner_id: - address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default']) + address_data = part_obj.address_get(cr, uid, [company.parent_id.id], adr_pref=['default']) if address_data['default']: address = part_obj.read(cr, uid, address_data['default'], field_names, context=context) for field in field_names: diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index d6e4901011e..372c1231824 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -253,7 +253,7 @@ class res_partner(osv.osv): def address_get(self, cr, uid, ids, adr_pref=None): if adr_pref is None: adr_pref = ['default'] - address_ids = self.search(cr, uid, [('partner_id', 'in', ids)]) + address_ids = self.search(cr, uid, [('parent_id', 'in', ids)]) address_rec = self.read(cr, uid, address_ids, ['type']) res = list((addr['type'],addr['id']) for addr in address_rec) adr = dict(res) From 00d9c02229b6a119b948380514b48c9145330db1 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 14:24:58 +0530 Subject: [PATCH 008/141] [IMP] change label parent company bzr revid: kjo@tinyerp.com-20120221085458-13oyrs1h7k6ruq5u --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 74ca6a4dcd7..ba36a237849 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -373,7 +373,7 @@ - + From 81c288015cc10b64811953104d65fbb459cb4641 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 16:08:04 +0530 Subject: [PATCH 009/141] [IMP] res_partner view change bzr revid: kjo@tinyerp.com-20120221103804-96d0jg3n1gj07otf --- openerp/addons/base/res/res_partner_view.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index ba36a237849..4cea1516b68 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -317,7 +317,7 @@ - + @@ -378,14 +378,16 @@ - - + + + + From aea4dc6931ad0d616cb0235fdd535e29141cedbf Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 16:30:32 +0530 Subject: [PATCH 010/141] [IMP] change contacts page location bzr revid: kjo@tinyerp.com-20120221110032-yq9jo9t2m8v3t82o --- openerp/addons/base/res/res_partner_view.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 4cea1516b68..2ab64554cb7 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -367,6 +367,9 @@ + + + @@ -385,9 +388,6 @@ - - - From fb6a2c7c4c8d436a04dd8e1ed4aa9a5b798c9d1f Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 17:01:58 +0530 Subject: [PATCH 011/141] [IMP] remove res_partner_address right and object bzr revid: kjo@tinyerp.com-20120221113158-5td030b5muw0gnlr --- openerp/addons/base/res/wizard/partner_wizard_massmail.py | 2 +- openerp/addons/base/security/ir.model.access.csv | 3 --- openerp/tests/test_orm.py | 1 - 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/openerp/addons/base/res/wizard/partner_wizard_massmail.py b/openerp/addons/base/res/wizard/partner_wizard_massmail.py index 330d585de98..ee8eda91902 100644 --- a/openerp/addons/base/res/wizard/partner_wizard_massmail.py +++ b/openerp/addons/base/res/wizard/partner_wizard_massmail.py @@ -60,7 +60,7 @@ class partner_massmail_wizard(osv.osv_memory): ir_mail_server = self.pool.get('ir.mail_server') emails_seen = set() for partner in partners: - for adr in partner.address: + for adr in partner.child_ids: if adr.email and not adr.email in emails_seen: try: emails_seen.add(adr.email) diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index 838ecb2c3d4..5140ac1b144 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -55,8 +55,6 @@ "access_res_lang_group_user","res_lang group_user","model_res_lang","group_system",1,1,1,1 "access_res_partner_group_partner_manager","res_partner group_partner_manager","model_res_partner","group_partner_manager",1,1,1,1 "access_res_partner_group_user","res_partner group_user","model_res_partner","group_user",1,0,0,0 -"access_res_partner_address_group_partner_manager","res_partner_address group_partner_manager","model_res_partner","group_partner_manager",1,1,1,1 -"access_res_partner_address_group_user","res_partner_address group_user","model_res_partner","group_user",1,0,0,0 "access_res_partner_bank_group_user","res_partner_bank group_user","model_res_partner_bank","group_user",1,0,0,0 "access_res_partner_bank_group_partner_manager","res_partner_bank group_partner_manager","model_res_partner_bank","group_partner_manager",1,1,1,1 "access_res_partner_bank_type_group_partner_manager","res_partner_bank_type group_partner_manager","model_res_partner_bank_type","group_partner_manager",1,1,1,1 @@ -117,7 +115,6 @@ "access_ir_filter all","ir_filters all","model_ir_filters",,1,0,0,0 "access_ir_filter employee","ir_filters employee","model_ir_filters","group_user",1,1,1,1 "access_ir_filters","ir_filters_all","model_ir_filters",,1,1,1,1 -"access_res_partner_address","res.partner.address","model_res_partner","group_system",1,1,1,1 "access_res_widget","res.widget","model_res_widget","group_erp_manager",1,1,1,1 "access_res_widget_user","res.widget.user","model_res_widget",,1,0,0,0 "access_res_log_all","res.log","model_res_log",,1,1,1,1 diff --git a/openerp/tests/test_orm.py b/openerp/tests/test_orm.py index 3640fd17f78..69ddd37ecd4 100644 --- a/openerp/tests/test_orm.py +++ b/openerp/tests/test_orm.py @@ -19,7 +19,6 @@ class TestO2MSerialization(unittest2.TestCase): def setUp(self): self.cr = openerp.modules.registry.RegistryManager.get(DB).db.cursor() self.partner = openerp.modules.registry.RegistryManager.get(DB)['res.partner'] -# self.address = openerp.modules.registry.RegistryManager.get(DB)['res.partner.address'] def tearDown(self): self.cr.rollback() From 33a5c3648de2c10c44dcb84a199658ee61c05e4a Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Tue, 21 Feb 2012 18:38:57 +0530 Subject: [PATCH 012/141] [IMP] res_partner: change in _email_send method bzr revid: kjo@tinyerp.com-20120221130857-l1s3ixwmwn7o12w5 --- openerp/addons/base/res/res_partner.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 372c1231824..73c633dd7f0 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -232,9 +232,8 @@ class res_partner(osv.osv): def _email_send(self, cr, uid, ids, email_from, subject, body, on_error=None): partners = self.browse(cr, uid, ids) for partner in partners: - if len(partner.address): - if partner.address[0].email: - tools.email_send(email_from, [partner.address[0].email], subject, body, on_error) + if partner.email: + tools.email_send(email_from, [partner.email], subject, body, on_error) return True def email_send(self, cr, uid, ids, email_from, subject, body, on_error=''): From 72949e29002ccc7a52d4fc488037dcb3c6eba17a Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Wed, 22 Feb 2012 12:54:52 +0530 Subject: [PATCH 013/141] [IMP] res_partner: view change bzr revid: kjo@tinyerp.com-20120222072452-mt9e8m00xbt6ei8y --- openerp/addons/base/res/res_bank.py | 1 - openerp/addons/base/res/res_partner_view.xml | 12 +++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index 7f9107f986d..7f6c11abb99 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -108,7 +108,6 @@ class res_partner_bank(osv.osv): value = '' if not context.get('address'): return value - for address in self.pool.get('res.partner').resolve_o2m_commands_to_record_dicts( cursor, user, 'address', context['address'], ['type', field], context=context): diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 2ab64554cb7..6d95335bb51 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -362,14 +362,10 @@ - - - + + - - - @@ -381,10 +377,12 @@ - + + + From ea0e222002e04a2a06dd6a1fe47220af167be911 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Wed, 22 Feb 2012 18:30:20 +0530 Subject: [PATCH 014/141] [IMP] res_partner view change bzr revid: kjo@tinyerp.com-20120222130020-mt336dpul07b9cgt --- openerp/addons/base/res/res_partner.py | 1 + openerp/addons/base/res/res_partner_view.xml | 53 ++++++++++---------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 73c633dd7f0..4127d6fb557 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -160,6 +160,7 @@ class res_partner(osv.osv): 'company_id': fields.many2one('res.company', 'Company',select=1), 'is_company': fields.boolean('Company', help="Check the field to create company otherwise it is personal contacts"), 'color': fields.integer('Color Index'), + 'is_company_address': fields.boolean('Company Address', help="Check the field to use the company address"), } def _default_category(self, cr, uid, context=None): if context is None: diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 6d95335bb51..15b6d0ed3f2 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -311,13 +311,11 @@ - + - - @@ -328,26 +326,29 @@ form
- - + + - + - + - + + + + + + - - - - - - + + + + @@ -355,28 +356,28 @@ - - - - - - + + + + + + + + + - + + - + - - - - From 123315db72596b8c7cbb6e7ea21e261525bd38c6 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Wed, 22 Feb 2012 19:04:51 +0530 Subject: [PATCH 015/141] [IMP] add photo file in view bzr revid: kjo@tinyerp.com-20120222133451-22hsl2zti7umlgf4 --- openerp/addons/base/res/res_partner.py | 3 ++- openerp/addons/base/res/res_partner_view.xml | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 4127d6fb557..6178cba3ffb 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -124,7 +124,7 @@ class res_partner(osv.osv): _columns = { 'name': fields.char('Name', size=128, required=True, select=True), 'date': fields.date('Date', select=1), - 'title': fields.many2one('res.partner.title','Partner Firm'), + 'title': fields.many2one('res.partner.title','Title'), 'parent_id': fields.many2one('res.partner','Parent Partner'), 'child_ids': fields.one2many('res.partner', 'parent_id', 'Partner Ref.'), 'ref': fields.char('Reference', size=64, select=1), @@ -160,6 +160,7 @@ class res_partner(osv.osv): 'company_id': fields.many2one('res.company', 'Company',select=1), 'is_company': fields.boolean('Company', help="Check the field to create company otherwise it is personal contacts"), 'color': fields.integer('Color Index'), + 'photo': fields.binary('Photo'), 'is_company_address': fields.boolean('Company Address', help="Check the field to use the company address"), } def _default_category(self, cr, uid, context=None): diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 15b6d0ed3f2..e8241299bbb 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -327,11 +327,15 @@ - - - - - + + + + + + + + + @@ -341,6 +345,10 @@ + + + + From 6999ae4dc0a5d2709bc37570940e8bc0ca057859 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" Date: Thu, 23 Feb 2012 11:43:46 +0530 Subject: [PATCH 016/141] [IMP] res_partner: address onchange method add bzr revid: kjo@tinyerp.com-20120223061346-co33pf7qi05b46hx --- openerp/addons/base/res/res_partner.py | 8 +++++ openerp/addons/base/res/res_partner_view.xml | 36 +++++++++----------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 6178cba3ffb..b35c4f012d8 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -189,6 +189,14 @@ class res_partner(osv.osv): def do_share(self, cr, uid, ids, *args): return True + + def onchange_address(self, cr, uid, ids, is_company_address, parent_id, context=None): + if is_company_address != False and parent_id: + data = self.read(cr, uid, parent_id, ['street', 'street2', 'zip', 'city', 'email', 'phone', 'fax', 'mobile', 'country_id', 'state_id', 'website', 'ref', 'lang'], context=context) + else: + data = self.read(cr, uid, ids[0], ['street', 'street2', 'zip', 'city', 'email', 'phone', 'fax', 'mobile', 'country_id', 'state_id', 'website', 'ref', 'lang'], context=context) + + return {'value': {'street': data['street'], 'street2':data['street2'], 'zip':data['zip'], 'city':data['city'], 'email':data['email'], 'phone':data['phone'], 'fax':data['fax'], 'mobile':data['mobile'], 'country_id':data['country_id'], 'state_id':data['state_id'], 'website':data['website'], 'ref':data['ref'], 'lang':data['lang']}} def _check_ean_key(self, cr, uid, ids, context=None): for partner_o in pooler.get_pool(cr.dbname).get('res.partner').read(cr, uid, ids, ['ean13',]): diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index e8241299bbb..6a43a7554c1 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -314,8 +314,6 @@ - - @@ -330,10 +328,10 @@ - + - + @@ -343,7 +341,7 @@ - + @@ -353,27 +351,25 @@ - - - - - - - + + + + + + - - - - - - - - + + + + + + + From b0192abb5fedbd1a3675fb96d6e7845748bdbf48 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" Date: Thu, 23 Feb 2012 14:42:17 +0530 Subject: [PATCH 017/141] [Fix] : Fix Label reports bzr revid: sbh@tinyerp.com-20120223091217-573vqlxwprt70ba8 --- .../addons/base/report/corporate_defaults.xml | 2 -- .../addons/base/report/corporate_defaults.xsl | 24 ++++++++-------- .../base/res/report/partner_address.xml | 2 -- .../base/res/report/partner_address.xsl | 28 +++++-------------- 4 files changed, 19 insertions(+), 37 deletions(-) diff --git a/openerp/addons/base/report/corporate_defaults.xml b/openerp/addons/base/report/corporate_defaults.xml index cef5acdd020..88d42d40814 100644 --- a/openerp/addons/base/report/corporate_defaults.xml +++ b/openerp/addons/base/report/corporate_defaults.xml @@ -6,7 +6,6 @@ <name type="field" name="partner_id.name"/> - <address type="zoom" name="partner_id.address"> <street type="field" name="street"/> <zip type="field" name="zip"/> <city type="field" name="city"/> @@ -14,7 +13,6 @@ <country type="field" name="country_id.name"/> <phone type="field" name="phone"/> <email type="field" name="email"/> - </address> </corporation> <user> <name type="field" name="name"/> diff --git a/openerp/addons/base/report/corporate_defaults.xsl b/openerp/addons/base/report/corporate_defaults.xsl index 414071466af..e0f6918ec59 100644 --- a/openerp/addons/base/report/corporate_defaults.xsl +++ b/openerp/addons/base/report/corporate_defaults.xsl @@ -22,18 +22,18 @@ <setFont name="Helvetica" size="10"/> <drawRightString x="20cm" y="28.5cm"><xsl:value-of select="//corporate-header/corporation/rml_header1"/></drawRightString> - <drawString x="1cm" y="27cm"><xsl:value-of select="//corporate-header/corporation/address/street"/></drawString> + <drawString x="1cm" y="27cm"><xsl:value-of select="//corporate-header/corporation/street"/></drawString> <drawString x="1cm" y="26.5cm"> - <xsl:value-of select="//corporate-header/corporation/address/zip"/> + <xsl:value-of select="//corporate-header/corporation/zip"/> <xsl:text> </xsl:text> - <xsl:value-of select="//corporate-header/corporation/address/city"/> + <xsl:value-of select="//corporate-header/corporation/city"/> <xsl:text> - </xsl:text> - <xsl:value-of select="//corporate-header/corporation/address/country"/> + <xsl:value-of select="//corporate-header/corporation/country"/> </drawString> <drawString x="1cm" y="26cm">Phone:</drawString> - <drawRightString x="7cm" y="26cm"><xsl:value-of select="//corporate-header/corporation/address/phone"/></drawRightString> + <drawRightString x="7cm" y="26cm"><xsl:value-of select="//corporate-header/corporation/phone"/></drawRightString> <drawString x="1cm" y="25.5cm">Mail:</drawString> - <drawRightString x="7cm" y="25.5cm"><xsl:value-of select="//corporate-header/corporation/address/email"/></drawRightString> + <drawRightString x="7cm" y="25.5cm"><xsl:value-of select="//corporate-header/corporation/email"/></drawRightString> <!--page bottom--> @@ -57,18 +57,18 @@ <setFont name="Helvetica" size="10"/> <drawRightString x="1cm" y="27.5cm"><xsl:value-of select="//corporate-header/corporation/rml_header1"/></drawRightString> - <drawString x="1cm" y="27cm"><xsl:value-of select="//corporate-header/corporation/address/street"/></drawString> + <drawString x="1cm" y="27cm"><xsl:value-of select="//corporate-header/corporation/street"/></drawString> <drawString x="1cm" y="26.5cm"> - <xsl:value-of select="//corporate-header/corporation/address/zip"/> + <xsl:value-of select="//corporate-header/corporation/zip"/> <xsl:text> </xsl:text> - <xsl:value-of select="//corporate-header/corporation/address/city"/> + <xsl:value-of select="//corporate-header/corporation/city"/> <xsl:text> - </xsl:text> - <xsl:value-of select="//corporate-header/corporation/address/country"/> + <xsl:value-of select="//corporate-header/corporation/country"/> </drawString> <drawString x="1cm" y="26cm">Phone:</drawString> - <drawRightString x="7cm" y="26cm"><xsl:value-of select="//corporate-header/corporation/address/phone"/></drawRightString> + <drawRightString x="7cm" y="26cm"><xsl:value-of select="//corporate-header/corporation/phone"/></drawRightString> <drawString x="1cm" y="25.5cm">Mail:</drawString> - <drawRightString x="7cm" y="25.5cm"><xsl:value-of select="//corporate-header/corporation/address/email"/></drawRightString> + <drawRightString x="7cm" y="25.5cm"><xsl:value-of select="//corporate-header/corporation/email"/></drawRightString> <!--page bottom--> diff --git a/openerp/addons/base/res/report/partner_address.xml b/openerp/addons/base/res/report/partner_address.xml index 2a413f4e3c6..706e5fbd6fe 100644 --- a/openerp/addons/base/res/report/partner_address.xml +++ b/openerp/addons/base/res/report/partner_address.xml @@ -3,7 +3,6 @@ <address type="fields" name="id"> <company-title type="field" name="title.name"/> <company-name type="field" name="name"/> - <contact type="zoom" name="address"> <type type="field" name="type"/> <title type="field" name="title.name"/> <name type="field" name="name"/> @@ -13,6 +12,5 @@ <city type="field" name="city"/> <state type="field" name="state_id.name"/> <country type="field" name="country_id.name"/> - </contact> </address> </addresses> diff --git a/openerp/addons/base/res/report/partner_address.xsl b/openerp/addons/base/res/report/partner_address.xsl index 01fcc120c23..bbf069605e8 100644 --- a/openerp/addons/base/res/report/partner_address.xsl +++ b/openerp/addons/base/res/report/partner_address.xsl @@ -58,31 +58,17 @@ <xsl:template match="address" mode="story"> <para style="nospace"><xsl:value-of select="company-name"/><xsl:text> </xsl:text><xsl:value-of select="company-title"/></para> - <xsl:choose> - <xsl:when test="count(contact[type='default']) >= 1"> - <!-- apply the first 'contact' node with the type 'default' --> - <xsl:apply-templates select="contact[type='default'][1]"/> - </xsl:when> - <xsl:when test="count(contact[type='']) >= 1"> - <!-- apply the first 'contact' node with an empty type --> - <xsl:apply-templates select="contact[type=''][1]"/> - </xsl:when> - <xsl:otherwise> - <!-- apply the first 'contact' node --> - <xsl:apply-templates select="contact[1]"/> - </xsl:otherwise> - </xsl:choose> - <xsl:if test="position() < last()"> - <nextFrame/> - </xsl:if> - </xsl:template> - - <xsl:template match="contact"> - <para style="nospace"><xsl:value-of select="title"/><xsl:text> </xsl:text><xsl:value-of select="name"/></para> <para style="nospace"><xsl:value-of select="street"/></para> <para style="nospace"><xsl:value-of select="street2"/></para> <para style="nospace"><xsl:value-of select="zip"/><xsl:text> </xsl:text><xsl:value-of select="city"/></para> <para style="nospace"><xsl:value-of select="state"/></para> <para style="nospace"><xsl:value-of select="country"/></para> + <xsl:if test="position() < last()"> + <nextFrame/> + </xsl:if> + </xsl:template> + + <xsl:template match="contact"> + </xsl:template> </xsl:stylesheet> From 0120ff0c42b0665b4e1ea04516d70de124b3eb0f Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Thu, 23 Feb 2012 14:44:36 +0530 Subject: [PATCH 018/141] [IMP] base: Remove unused field from xml bzr revid: sbh@tinyerp.com-20120223091436-97q6ps20k4067gpk --- openerp/addons/base/res/report/partner_address.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/openerp/addons/base/res/report/partner_address.xml b/openerp/addons/base/res/report/partner_address.xml index 706e5fbd6fe..109d231c8a8 100644 --- a/openerp/addons/base/res/report/partner_address.xml +++ b/openerp/addons/base/res/report/partner_address.xml @@ -4,8 +4,6 @@ <company-title type="field" name="title.name"/> <company-name type="field" name="name"/> <type type="field" name="type"/> - <title type="field" name="title.name"/> - <name type="field" name="name"/> <street type="field" name="street"/> <street2 type="field" name="street2"/> <zip type="field" name="zip"/> From 0f6b199c74dcddcd62e15422bb717c82300f57c9 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Thu, 23 Feb 2012 15:07:36 +0530 Subject: [PATCH 019/141] [Fix] report: Fix the header and print preivew report bzr revid: sbh@tinyerp.com-20120223093736-a1o9cyu582jh0e17 --- .../base/report/corporate_sxw_header.xml | 8 ++++---- openerp/addons/base/report/mako_header.html | 18 +++++++++--------- openerp/addons/base/res/res_company.py | 10 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/openerp/addons/base/report/corporate_sxw_header.xml b/openerp/addons/base/report/corporate_sxw_header.xml index 2f6f885f3ba..d6330e66a7a 100644 --- a/openerp/addons/base/report/corporate_sxw_header.xml +++ b/openerp/addons/base/report/corporate_sxw_header.xml @@ -204,8 +204,8 @@ </table:table-cell> </table:table-row> </table:table> - <text:p text:style-name="P3">[[ company.partner_id.address and company.partner_id.address[0].street ]]</text:p> - <text:p text:style-name="P3">[[ company.partner_id.address and company.partner_id.address[0].zip ]] [[ company.partner_id.address and company.partner_id.address[0].city ]] - [[ company.partner_id.address and company.partner_id.address[0].country_id and company.partner_id.address[0].country_id.name ]]</text:p> + <text:p text:style-name="P3">[[ company.partner_id and company.partner_id.street ]]</text:p> + <text:p text:style-name="P3">[[ company.partner_id and company.partner_id.zip ]] [[ company.partner_id and company.partner_id.city ]] - [[ company.partner_id and company.partner_id.country_id and company.partner_id.country_id.name ]]</text:p> <table:table table:name="Table3" table:style-name="Table3"> <table:table-column table:style-name="Table3.A"/> <table:table-column table:style-name="Table3.B"/> @@ -214,7 +214,7 @@ <text:p text:style-name="P4">Phone :</text:p> </table:table-cell> <table:table-cell table:style-name="Table3.A1" table:value-type="string"> - <text:p text:style-name="P5">[[ company.partner_id.address and company.partner_id.address[0].phone ]]</text:p> + <text:p text:style-name="P5">[[ company.partner_id and company.partner_id.phone ]]</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -222,7 +222,7 @@ <text:p text:style-name="P4">Mail :</text:p> </table:table-cell> <table:table-cell table:style-name="Table3.A2" table:value-type="string"> - <text:p text:style-name="P5">[[ company.partner_id.address and company.partner_id.address[0].email ]]</text:p> + <text:p text:style-name="P5">[[ company.partner_id and company.partner_id.email ]]</text:p> </table:table-cell> </table:table-row> </table:table> diff --git a/openerp/addons/base/report/mako_header.html b/openerp/addons/base/report/mako_header.html index 5bd3aaf18fb..a8c7d71b8d9 100644 --- a/openerp/addons/base/report/mako_header.html +++ b/openerp/addons/base/report/mako_header.html @@ -14,33 +14,33 @@ <tr> <td> - % if company['partner_id']['address'] and company['partner_id']['address'][0]['street']: - <small>${company.partner_id.address[0].street}</small></br> + % if company['partner_id'] and company['partner_id']['street']: + <small>${company.partner_id.street}</small></br> %endif </td> </tr> <tr> <td> - % if company['partner_id']['address'] and company['partner_id']['address'][0]['zip']: - <small>${company.partner_id.address[0].zip} - ${company.partner_id.address[0].city}-${company.partner_id.address[0].country_id and company.partner_id.address[0].country_id.name}</small></br> + % if company['partner_id'] and company['partner_id']['zip']: + <small>${company.partner_id.zip} + ${company.partner_id.city}-${company.partner_id.country_id and company.partner_id.country_id.name}</small></br> %endif </td> </tr> <tr> <td> - % if company['partner_id']['address'] and company['partner_id']['address'][0]['phone']: - <small><b>Phone:</b>${company.partner_id.address and company.partner_id.address[0].phone}</small></br> + % if company['partner_id'] and company['partner_id']['phone']: + <small><b>Phone:</b>${company.partner_id and company.partner_id.phone}</small></br> %endif </td> </tr> <tr> <td> - % if company['partner_id']['address'] and company['partner_id']['address'][0]['email']: - <small><b>Mail:</b>${company.partner_id.address and company.partner_id.address[0].email}</small></br></<address> + % if company['partner_id'] and company['partner_id']['email']: + <small><b>Mail:</b>${company.partner_id and company.partner_id.email}</small></br></<address> %endif </td> </tr> diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 8866846932c..0da8825c9f1 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -109,7 +109,7 @@ class res_company(osv.osv): if address: part_obj.write(cr, uid, [address], {name: value or False}) else: - part_obj.create(cr, uid, {name: value or False, 'partner_id': company.partner_id.id}, context=context) + part_obj.create(cr, uid, {name: value or False, 'parent_id': company.partner_id.id}, context=context) return True @@ -294,12 +294,12 @@ class res_company(osv.osv): <drawString x="1.3cm" y="%s">[[ company.partner_id.name ]]</drawString> - <drawString x="1.3cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].street or '' ]]</drawString> - <drawString x="1.3cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].zip or '' ]] [[ company.partner_id.address and company.partner_id.address[0].city or '' ]] - [[ company.partner_id.address and company.partner_id.address[0].country_id and company.partner_id.address[0].country_id.name or '']]</drawString> + <drawString x="1.3cm" y="%s">[[ company.partner_id and company.partner_id.street or '' ]]</drawString> + <drawString x="1.3cm" y="%s">[[ company.partner_id and company.partner_id.city or '' ]] - [[ company.partner_id and company.partner_id.country_id and company.partner_id.country_id.name or '']]</drawString> <drawString x="1.3cm" y="%s">Phone:</drawString> - <drawRightString x="7cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].phone or '' ]]</drawRightString> + <drawRightString x="7cm" y="%s">[[ company.partner_id and company.partner_id.phone or '' ]]</drawRightString> <drawString x="1.3cm" y="%s">Mail:</drawString> - <drawRightString x="7cm" y="%s">[[ company.partner_id.address and company.partner_id.address[0].email or '' ]]</drawRightString> + <drawRightString x="7cm" y="%s">[[ company.partner_id and company.partner_id.email or '' ]]</drawRightString> <lines>1.3cm %s 7cm %s</lines> <!--page bottom--> From 1e88b2d9c4b4e6ffabfee48fd7501cd0ccbbedc9 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 23 Feb 2012 12:09:07 +0100 Subject: [PATCH 020/141] [IMP] base/report: reindent xml bzr revid: rco@openerp.com-20120223110907-y4w70xygyvieooj8 --- openerp/addons/base/report/corporate_defaults.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openerp/addons/base/report/corporate_defaults.xml b/openerp/addons/base/report/corporate_defaults.xml index 88d42d40814..12e8bb5eeea 100644 --- a/openerp/addons/base/report/corporate_defaults.xml +++ b/openerp/addons/base/report/corporate_defaults.xml @@ -6,13 +6,13 @@ <rml_footer2 type="field" name="rml_footer2"/> <title type="field" name="partner_id.title"/> <name type="field" name="partner_id.name"/> - <street type="field" name="street"/> - <zip type="field" name="zip"/> - <city type="field" name="city"/> - <state type="field" name="state_id.name"/> - <country type="field" name="country_id.name"/> - <phone type="field" name="phone"/> - <email type="field" name="email"/> + <street type="field" name="street"/> + <zip type="field" name="zip"/> + <city type="field" name="city"/> + <state type="field" name="state_id.name"/> + <country type="field" name="country_id.name"/> + <phone type="field" name="phone"/> + <email type="field" name="email"/> </corporation> <user> <name type="field" name="name"/> From e114bb5211e62d9123f252fcb1cb524dc30c4aa0 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 23 Feb 2012 12:12:44 +0100 Subject: [PATCH 021/141] [IMP] base/res/report: reindent xml bzr revid: rco@openerp.com-20120223111244-g3ezpw004f4k7bfz --- openerp/addons/base/res/report/partner_address.xml | 14 +++++++------- openerp/addons/base/res/report/partner_address.xsl | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/openerp/addons/base/res/report/partner_address.xml b/openerp/addons/base/res/report/partner_address.xml index 109d231c8a8..1449eb5bc0c 100644 --- a/openerp/addons/base/res/report/partner_address.xml +++ b/openerp/addons/base/res/report/partner_address.xml @@ -3,12 +3,12 @@ <address type="fields" name="id"> <company-title type="field" name="title.name"/> <company-name type="field" name="name"/> - <type type="field" name="type"/> - <street type="field" name="street"/> - <street2 type="field" name="street2"/> - <zip type="field" name="zip"/> - <city type="field" name="city"/> - <state type="field" name="state_id.name"/> - <country type="field" name="country_id.name"/> + <type type="field" name="type"/> + <street type="field" name="street"/> + <street2 type="field" name="street2"/> + <zip type="field" name="zip"/> + <city type="field" name="city"/> + <state type="field" name="state_id.name"/> + <country type="field" name="country_id.name"/> </address> </addresses> diff --git a/openerp/addons/base/res/report/partner_address.xsl b/openerp/addons/base/res/report/partner_address.xsl index bbf069605e8..ca212f2d2b0 100644 --- a/openerp/addons/base/res/report/partner_address.xsl +++ b/openerp/addons/base/res/report/partner_address.xsl @@ -64,7 +64,7 @@ <para style="nospace"><xsl:value-of select="state"/></para> <para style="nospace"><xsl:value-of select="country"/></para> <xsl:if test="position() < last()"> - <nextFrame/> + <nextFrame/> </xsl:if> </xsl:template> From e06a8dbd0ebde5c962b10a2f62236fe7cc53ef1a Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 23 Feb 2012 12:41:12 +0100 Subject: [PATCH 022/141] [IMP] base/res: clean a bit partner fields, and fix onchange_address bzr revid: rco@openerp.com-20120223114112-ehxy2hvfap3u0nq8 --- openerp/addons/base/res/res_partner.py | 48 ++++++++++++++++---------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index b35c4f012d8..b5de96f09b4 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -126,7 +126,7 @@ class res_partner(osv.osv): 'date': fields.date('Date', select=1), 'title': fields.many2one('res.partner.title','Title'), 'parent_id': fields.many2one('res.partner','Parent Partner'), - 'child_ids': fields.one2many('res.partner', 'parent_id', 'Partner Ref.'), + 'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts'), 'ref': fields.char('Reference', size=64, select=1), 'lang': fields.selection(_lang_get, 'Language', help="If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english."), 'user_id': fields.many2one('res.users', 'Salesman', help='The internal user that is in charge of communicating with this partner if any.'), @@ -138,12 +138,12 @@ class res_partner(osv.osv): 'events': fields.one2many('res.partner.event', 'partner_id', 'Events'), 'credit_limit': fields.float(string='Credit Limit'), 'ean13': fields.char('EAN13', size=13), + 'active': fields.boolean('Active'), 'customer': fields.boolean('Customer', help="Check this box if the partner is a customer."), 'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."), 'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."), - 'color': fields.integer('Color Index'), - 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'function': fields.char('Function', size=128), + 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'street': fields.char('Street', size=128), 'street2': fields.char('Street2', size=128), 'zip': fields.char('Zip', change_default=True, size=24), @@ -155,13 +155,11 @@ class res_partner(osv.osv): 'fax': fields.char('Fax', size=64), 'mobile': fields.char('Mobile', size=64), 'birthdate': fields.char('Birthdate', size=64), - 'active': fields.boolean('Active', help="Uncheck the active field to hide the contact."), -# 'company_id': fields.related('partner_id','company_id',type='many2one',relation='res.company',string='Company', store=True), - 'company_id': fields.many2one('res.company', 'Company',select=1), - 'is_company': fields.boolean('Company', help="Check the field to create company otherwise it is personal contacts"), - 'color': fields.integer('Color Index'), + 'is_company': fields.boolean('Company', help="Check if the partner is a company, uncheck it for a person"), + 'is_company_address': fields.boolean('Use Parent Address', help="Check to use the parent partner's address"), 'photo': fields.binary('Photo'), - 'is_company_address': fields.boolean('Company Address', help="Check the field to use the company address"), + 'company_id': fields.many2one('res.company', 'Company', select=1), + 'color': fields.integer('Color Index'), } def _default_category(self, cr, uid, context=None): if context is None: @@ -171,12 +169,12 @@ class res_partner(osv.osv): return [] _defaults = { - 'active': lambda *a: 1, - 'customer': lambda *a: 1, + 'active': True, + 'customer': True, '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': lambda *a: 0, + 'is_company': False, 'type': 'default', } @@ -191,12 +189,24 @@ class res_partner(osv.osv): return True def onchange_address(self, cr, uid, ids, is_company_address, parent_id, context=None): - if is_company_address != False and parent_id: - data = self.read(cr, uid, parent_id, ['street', 'street2', 'zip', 'city', 'email', 'phone', 'fax', 'mobile', 'country_id', 'state_id', 'website', 'ref', 'lang'], context=context) - else: - data = self.read(cr, uid, ids[0], ['street', 'street2', 'zip', 'city', 'email', 'phone', 'fax', 'mobile', 'country_id', 'state_id', 'website', 'ref', 'lang'], context=context) - - return {'value': {'street': data['street'], 'street2':data['street2'], 'zip':data['zip'], 'city':data['city'], 'email':data['email'], 'phone':data['phone'], 'fax':data['fax'], 'mobile':data['mobile'], 'country_id':data['country_id'], 'state_id':data['state_id'], 'website':data['website'], 'ref':data['ref'], 'lang':data['lang']}} + if is_company_address and parent_id: + parent = self.browse(cr, uid, parent_id, context=context) + return {'value': { + 'street': parent.street, + 'street2': parent.street2, + 'zip': parent.zip, + 'city': parent.city, + 'state_id': parent.state_id.id, + 'country_id': parent.country_id.id, + 'email': parent.email, + 'phone': parent.phone, + 'fax': parent.fax, + 'mobile': parent.mobile, + 'website': parent.website, + 'ref': parent.ref, + 'lang': parent.lang, + }} + return {} def _check_ean_key(self, cr, uid, ids, context=None): for partner_o in pooler.get_pool(cr.dbname).get('res.partner').read(cr, uid, ids, ['ean13',]): @@ -309,8 +319,8 @@ class res_partner(osv.osv): model_data.search(cr, uid, [('module','=','base'), ('name','=','main_partner')])[0], ).res_id + res_partner() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - From f72fc4acfa5ae29504621fdda7d8a7e20195068a Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 23 Feb 2012 14:53:47 +0100 Subject: [PATCH 023/141] [IMP] base/res: simplify code and fix res_partner.address_get bzr revid: rco@openerp.com-20120223135347-ff3h8eikq2xj7x4q --- openerp/addons/base/res/res_bank.py | 11 ++++++----- openerp/addons/base/res/res_partner.py | 14 ++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/openerp/addons/base/res/res_bank.py b/openerp/addons/base/res/res_bank.py index 7f6c11abb99..891794cb99c 100644 --- a/openerp/addons/base/res/res_bank.py +++ b/openerp/addons/base/res/res_bank.py @@ -108,6 +108,7 @@ class res_partner_bank(osv.osv): value = '' if not context.get('address'): return value + for address in self.pool.get('res.partner').resolve_o2m_commands_to_record_dicts( cursor, user, 'address', context['address'], ['type', field], context=context): @@ -218,11 +219,11 @@ class res_partner_bank(osv.osv): if partner_id: part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context) result['owner_name'] = part.name - result['street'] = part and part.street or False - result['city'] = part and part.city or False - result['zip'] = part and part.zip or False - result['country_id'] = part and part.country_id and part.country_id.id or False - result['state_id'] = part and part.state_id and part.state_id.id or False + result['street'] = part.street or False + result['city'] = part.city or False + result['zip'] = part.zip or False + result['country_id'] = part.country_id.id + result['state_id'] = part.state_id.id return {'value': result} res_partner_bank() diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index b5de96f09b4..c6354fa8cd2 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -272,19 +272,21 @@ class res_partner(osv.osv): def address_get(self, cr, uid, ids, adr_pref=None): if adr_pref is None: adr_pref = ['default'] - address_ids = self.search(cr, uid, [('parent_id', 'in', ids)]) - address_rec = self.read(cr, uid, address_ids, ['type']) - res = list((addr['type'],addr['id']) for addr in address_rec) - adr = dict(res) + # retrieve addresses from the partner itself and its children + res = [] + for p in self.browse(cr, uid, ids, context): + res.append((p.type, p.id)) + res.extend((c.type, c.id) for c in p.child_ids) + addr = dict(reversed(res)) # get the id of the (first) default address if there is one, # otherwise get the id of the first address in the list if res: - default_address = adr.get('default', res[0][1]) + default_address = addr.get('default', res[0][1]) else: default_address = False result = {} for a in adr_pref: - result[a] = adr.get(a, default_address) + result[a] = addr.get(a, default_address) return result def gen_next_ref(self, cr, uid, ids): From a70e1fef3db25ffe1597089d8cc4eaa89a5c6f75 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 23 Feb 2012 15:54:26 +0100 Subject: [PATCH 024/141] [IMP] base/res/partner: rename field and improve partner form bzr revid: rco@openerp.com-20120223145426-7q18zqbt0wqwvzpf --- openerp/addons/base/res/res_partner.py | 6 +- openerp/addons/base/res/res_partner_view.xml | 70 +++++++++----------- 2 files changed, 36 insertions(+), 40 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index c6354fa8cd2..629766b29f4 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -156,7 +156,7 @@ class res_partner(osv.osv): 'mobile': fields.char('Mobile', size=64), 'birthdate': fields.char('Birthdate', size=64), 'is_company': fields.boolean('Company', help="Check if the partner is a company, uncheck it for a person"), - 'is_company_address': fields.boolean('Use Parent Address', help="Check to use the parent partner's address"), + '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), 'color': fields.integer('Color Index'), @@ -188,8 +188,8 @@ class res_partner(osv.osv): def do_share(self, cr, uid, ids, *args): return True - def onchange_address(self, cr, uid, ids, is_company_address, parent_id, context=None): - if is_company_address and parent_id: + def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): + if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) return {'value': { 'street': parent.street, diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 6a43a7554c1..5b3c7480eb0 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -323,54 +323,50 @@ <field name="model">res.partner</field> <field name="type">form</field> <field name="arch" type="xml"> - <form string="Partners" col='1'> + <form string="Partners"> <group col="8" colspan="4"> - <group colspan="4" col="4"> - <group col="2"> - <field name="name" select="1"/> - <field name="function"/> - </group> - <group col="2"> - <field name="title" size="0" groups="base.group_extended"/> - <field name="parent_id" string="Parent Company" groups="base.group_extended" attrs="{'invisible': [('is_company','=', True)]}"/> - </group> + <group col="2"> + <field name="name"/> + <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}"/> + <field name="function" attrs="{'invisible': [('is_company','=', True)]}"/> </group> <group col="2"> - <field name="customer" select="1"/> + <field name="title" size="0" groups="base.group_extended"/> + <field name="is_company"/> + </group> + <group col="2"> + <field name="customer"/> <field name="supplier"/> </group> - <group col="2"> - <field name="is_company" select="1"/> - <field name="is_company_address" on_change="onchange_address(is_company_address, parent_id)"/> - </group> <group col="2"> <field name="photo" widget='image' nolabel="1"/> </group> - </group> <notebook colspan="4"> <page string="General"> - <newline/> - <group colspan="2" col="4" > - <separator string="Address" colspan="4" col="4" /> - <field name="type" string="Type" colspan="2" attrs="{'invisible': [('is_company', '=', True)]}"/> - <field name="street" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="street2" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="zip" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="city" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="country_id" completion="1" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="state_id" attrs="{'readonly': [('is_company','=', True)]}"/> + <group colspan="2"> + <separator string="Address" colspan="4"/> + <field name="type" string="Type"/> + <field name="use_parent_address" attrs="{'invisible': [('parent_id', '=', False)]}" + on_change="onchange_address(use_parent_address, parent_id)"/> + <newline/> + <field name="street" colspan="4" attrs="{'readonly': [('use_parent_address','=', True)]}"/> + <field name="street2" colspan="4" attrs="{'readonly': [('use_parent_address','=', True)]}"/> + <field name="zip" attrs="{'readonly': [('use_parent_address','=', True)]}"/> + <field name="city" attrs="{'readonly': [('use_parent_address','=', True)]}"/> + <field name="country_id" completion="1" attrs="{'readonly': [('use_parent_address','=', True)]}"/> + <field name="state_id" attrs="{'readonly': [('use_parent_address','=', True)]}"/> </group> - <group colspan="2" col="4"> + <group colspan="2"> <separator string="Communication" colspan="4"/> - <field name="phone" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> + <field name="lang" colspan="4"/> + <field name="phone" colspan="4"/> <field name="mobile" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="fax" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="email" widget="email" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="website" widget="url" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="ref" groups="base.group_extended" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - <field name="lang" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> - </group> + <field name="fax" colspan="4"/> + <field name="email" widget="email" colspan="4"/> + <field name="website" widget="url" colspan="4"/> + <field name="ref" groups="base.group_extended" colspan="4"/> + </group> <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> <field name="child_ids" nolabel="1"/> </group> @@ -385,11 +381,11 @@ </page> <page string="History" groups="base.group_extended" invisible="True"> </page> - <page string="Category" groups="base.group_extended"> - <field name="category_id" nolabel="1" colspan="8" /> + <page string="Categories" groups="base.group_extended"> + <field name="category_id" colspan="4" nolabel="1"/> </page> <page string="Notes"> - <field colspan="4" name="comment" nolabel="1"/> + <field name="comment" colspan="4" nolabel="1"/> </page> </notebook> </form> From 3310e9f2fa7712c344aa9cd5dcd8f25f1d0a758a Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 23 Feb 2012 16:43:48 +0100 Subject: [PATCH 025/141] [FIX] base/res/partner: fix kanban view (unknown fields) bzr revid: rco@openerp.com-20120223154348-sdzk9nozb6mi84lg --- openerp/addons/base/res/res_partner_view.xml | 24 ++++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 5b3c7480eb0..c32095de646 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -428,7 +428,12 @@ <kanban> <field name="color"/> <field name="name"/> + <field name="title"/> <field name="email"/> + <field name="parent_id"/> + <field name="is_company"/> + <field name="function"/> + <field name="phone"/> <templates> <t t-name="kanban-box"> <t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/> @@ -439,6 +444,8 @@ <tr> <td class="oe_kanban_title1" align="left" valign="middle"> <field name="name"/> + <t t-if="record.name.raw_value and record.title.raw_value">,</t> + <field name="title"/> </td> <td valign="top" width="22"> <img t-att-src="kanban_gravatar(record.email.value, 22)" class="oe_kanban_gravatar"/> @@ -450,18 +457,21 @@ <table class="oe_kanban_table"> <tr> <td valign="top" width="64" align="left"> - <img src="/base/static/src/img/kanban_partner.png" width="64" height="64"/> + <img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" width="64" height="64"/> </td> <td valign="top" align="left"> <div class="oe_kanban_title2"> - <field name="title"/> - <t t-if="record.title.raw_value and record.country.raw_value">,</t> - <!--field name="country"/--> + <t t-if="record.parent_id.raw_value"> + <field name="parent_id"/> + </t> + <t t-if="record.is_company.raw_value"> + <field name="country_id"/> + </t> </div> <div class="oe_kanban_title3"> - <field name="subname"/> - <t t-if="record.subname.raw_value and record.function.raw_value">,</t> - <field name="function"/> + <t t-if="record.function.raw_value"> + <field name="function"/> + </t> </div> <div class="oe_kanban_title3"> <i><field name="email"/> From f4a91d5d21983d775babdc55d2fe36f97b527037 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Fri, 24 Feb 2012 12:46:35 +0530 Subject: [PATCH 026/141] [IMP] base/res_partner_demo.xml change bzr revid: kjo@tinyerp.com-20120224071635-1lw946hbfdyv45cw --- openerp/addons/base/res/res_partner_demo.xml | 44 ++++++++++++++++---- openerp/addons/base/res/res_partner_view.xml | 2 +- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 0b36f2aac50..c794a821ca6 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -93,50 +93,60 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> + <field eval="1" name="is_company"/> <field name="website">www.asustek.com</field> </record> <record id="res_partner_agrolait" model="res.partner"> <field name="name">Agrolait</field> <field eval="[(6, 0, [ref('base.res_partner_category_0')])]" name="category_id"/> + <field eval="1" name="is_company"/> <field name="website">www.agrolait.com</field> </record> <record id="res_partner_c2c" model="res.partner"> <field name="name">Camptocamp</field> <field eval="[(6, 0, [ref('res_partner_category_10'), ref('res_partner_category_5')])]" name="category_id"/> + <field eval="1" name="is_company"/> <field name="supplier">1</field> <field name="website">www.camptocamp.com</field> </record> <record id="res_partner_sednacom" model="res.partner"> <field name="website">www.syleam.fr</field> <field name="name">Syleam</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_5')])]" name="category_id"/> </record> <record id="res_partner_thymbra" model="res.partner"> <field name="name">SmartBusiness</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> </record> <record id="res_partner_desertic_hispafuentes" model="res.partner"> <field name="name">Axelor</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> <field name="supplier">1</field> <field name="website">www.axelor.com/</field> </record> <record id="res_partner_tinyatwork" model="res.partner"> <field name="name">Tiny AT Work</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_5'), ref('res_partner_category_10')])]" name="category_id"/> <field name="website">www.tinyatwork.com/</field> </record> <record id="res_partner_2" model="res.partner"> <field name="name">Bank Wealthy and sons</field> + <field eval="1" name="is_company"/> <field name="website">www.wealthyandsons.com/</field> </record> <record id="res_partner_3" model="res.partner"> <field name="name">China Export</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="website">www.chinaexport.com/</field> </record> <record id="res_partner_4" model="res.partner"> <field name="name">Distrib PC</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> @@ -144,17 +154,20 @@ </record> <record id="res_partner_5" model="res.partner"> <field name="name">Ecole de Commerce de Liege</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> <field name="website">www.eci-liege.info//</field> </record> <record id="res_partner_6" model="res.partner"> <field name="name">Elec Import</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> </record> <record id="res_partner_maxtor" model="res.partner"> <field name="name">Maxtor</field> + <field eval="1" name="is_company"/> <field eval="32000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> @@ -162,6 +175,7 @@ </record> <record id="res_partner_seagate" model="res.partner"> <field name="name">Seagate</field> + <field eval="1" name="is_company"/> <field eval="5000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> @@ -169,27 +183,32 @@ <record id="res_partner_8" model="res.partner"> <field name="website">http://mediapole.net</field> <field name="name">Mediapole SPRL</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> </record> <record id="res_partner_9" model="res.partner"> <field name="website">www.balmerinc.com</field> <field name="name">BalmerInc S.A.</field> + <field eval="1" name="is_company"/> <field eval="12000.00" name="credit_limit"/> <field name="ref">or</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> </record> <record id="res_partner_10" model="res.partner"> <field name="name">Tecsas</field> + <field eval="1" name="is_company"/> <field name="ean13">3020170000003</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> </record> <record id="res_partner_11" model="res.partner"> <field name="name">Leclerc</field> + <field eval="1" name="is_company"/> <field eval="1200.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/> </record> <record id="res_partner_14" model="res.partner"> <field name="name">Centrale d'achats BML</field> + <field eval="1" name="is_company"/> <field name="ean13">3020178572427</field> <field eval="15000.00" name="credit_limit"/> <field name="parent_id" ref="res_partner_10"/> @@ -197,6 +216,7 @@ </record> <record id="res_partner_15" model="res.partner"> <field name="name">Magazin BML 1</field> + <field eval="1" name="is_company"/> <field name="ean13">3020178570171</field> <field name="parent_id" ref="res_partner_14"/> <field eval="1500.00" name="credit_limit"/> @@ -204,6 +224,7 @@ </record> <record id="res_partner_accent" model="res.partner"> <field name="name">Université de Liège</field> + <field eval="1" name="is_company"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="website">http://www.ulg.ac.be/</field> </record> @@ -215,33 +236,36 @@ <record id="res_partner_duboissprl0" model="res.partner"> <field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/> <field name="name">Dubois sprl</field> + <field eval="1" name="is_company"/> <field name="website">http://www.dubois.be/</field> </record> - <record id="res_partner_ericdubois0" model="res.partner"> + <!--record id="res_partner_ericdubois0" model="res.partner"> <field name="name">Eric Dubois</field> - </record> + </record--> - <record id="res_partner_fabiendupont0" model="res.partner"> + <!--record id="res_partner_fabiendupont0" model="res.partner"> <field name="name">Fabien Dupont</field> - </record> + </record--> <record id="res_partner_lucievonck0" model="res.partner"> <field name="name">Lucie Vonck</field> </record> - <record id="res_partner_notsotinysarl0" model="res.partner"> + <!--record id="res_partner_notsotinysarl0" model="res.partner"> <field name="name">NotSoTiny SARL</field> <field name="website">notsotiny.be</field> - </record> + </record--> <record id="res_partner_theshelvehouse0" model="res.partner"> <field name="name">The Shelve House</field> + <field eval="1" name="is_company"/> <field eval="[(6,0,[ref('res_partner_category_retailers0')])]" name="category_id"/> </record> <record id="res_partner_vickingdirect0" model="res.partner"> <field name="name">Vicking Direct</field> + <field eval="1" name="is_company"/> <field eval="[(6,0,[ref('res_partner_category_miscellaneoussuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field name="customer">0</field> @@ -250,6 +274,7 @@ <record id="res_partner_woodywoodpecker0" model="res.partner"> <field name="name">Wood y Wood Pecker</field> + <field eval="1" name="is_company"/> <field eval="[(6,0,[ref('res_partner_category_woodsuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> @@ -258,6 +283,7 @@ <record id="res_partner_zerooneinc0" model="res.partner"> <field name="name">ZeroOne Inc</field> + <field eval="1" name="is_company"/> <field eval="[(6,0,[ref('res_partner_category_consumers0')])]" name="category_id"/> <field name="website">http://www.zerooneinc.com/</field> </record> @@ -550,7 +576,7 @@ <field eval="'Namur'" name="city"/> <field eval="'NotSoTiny SARL'" name="name"/> <field eval="'5000'" name="zip"/> - <field name="parent_id" ref="res_partner_notsotinysarl0"/> + <!--field name="parent_id" ref="res_partner_notsotinysarl0"/--> <field name="country_id" ref="base.be"/> <field eval="'(+32).81.81.37.00'" name="phone"/> <field eval="'Rue du Nid 1'" name="street"/> @@ -638,7 +664,7 @@ <field eval="'Namur'" name="city"/> <field eval="'Fabien Dupont'" name="name"/> <field eval="'5000'" name="zip"/> - <field name="parent_id" ref="res_partner_fabiendupont0"/> + <!--field name="parent_id" ref="res_partner_fabiendupont0"/--> <field name="country_id" ref="base.be"/> <field eval="'Blvd Kennedy, 13'" name="street"/> </record> @@ -648,7 +674,7 @@ <field eval="'Mons'" name="city"/> <field eval="'Eric Dubois'" name="name"/> <field eval="'7000'" name="zip"/> - <field name="parent_id" ref="res_partner_ericdubois0"/> + <!--field name="parent_id" ref="res_partner_ericdubois0"/--> <field name="country_id" ref="base.be"/> <field eval="'Chaussée de Binche, 27'" name="street"/> <field eval="'e.dubois@gmail.com'" name="email"/> diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index c32095de646..a65244b5374 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -361,7 +361,7 @@ <separator string="Communication" colspan="4"/> <field name="lang" colspan="4"/> <field name="phone" colspan="4"/> - <field name="mobile" colspan="4" attrs="{'readonly': [('is_company','=', True)]}"/> + <field name="mobile" colspan="4"/> <field name="fax" colspan="4"/> <field name="email" widget="email" colspan="4"/> <field name="website" widget="url" colspan="4"/> From a7895adc862ade60b5bee98ae698477174888784 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Fri, 24 Feb 2012 14:38:54 +0530 Subject: [PATCH 027/141] [IMP] res_partner: set domain on title field bzr revid: kjo@tinyerp.com-20120224090854-t2gq45iw4g2wjw5z --- openerp/addons/base/res/res_partner.py | 10 +++++++++- openerp/addons/base/res/res_partner_view.xml | 10 +++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 629766b29f4..c3b3015f8b3 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -155,7 +155,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.boolean('Company', help="Check if the partner is a company, uncheck it for a person"), + 'is_company': fields.selection( [ ('contact','Person'),('partner','Company') ],'Partner Type', help="Select if the partner is a company or 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), @@ -188,6 +188,14 @@ class res_partner(osv.osv): def do_share(self, cr, uid, ids, *args): return True + def onchange_type(self, cr, uid, ids, is_company, title, context=None): + if is_company == 'contact': + return {'value': {'is_company': is_company, 'title': ''}} + elif is_company == 'partner': + return {'value': {'is_company': is_company, 'title': ''}} + return {'value': {'is_comapny': '', 'title': ''}} + + def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index a65244b5374..cd70bf8295a 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -327,12 +327,11 @@ <group col="8" colspan="4"> <group col="2"> <field name="name"/> - <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}"/> - <field name="function" attrs="{'invisible': [('is_company','=', True)]}"/> + <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}"/> </group> <group col="2"> - <field name="title" size="0" groups="base.group_extended"/> - <field name="is_company"/> + <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> + <field name="is_company" on_change="onchange_type(is_company, title)"/> </group> <group col="2"> <field name="customer"/> @@ -366,8 +365,9 @@ <field name="email" widget="email" colspan="4"/> <field name="website" widget="url" colspan="4"/> <field name="ref" groups="base.group_extended" colspan="4"/> + <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="4"/> </group> - <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> + <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> <field name="child_ids" nolabel="1"/> </group> </page> From 508c4e83109d077d38461445274e797be3e6e4ac Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Fri, 24 Feb 2012 15:58:44 +0530 Subject: [PATCH 028/141] [IMP] set default value of contact type bzr revid: kjo@tinyerp.com-20120224102844-91a8jv3udzatfqfr --- openerp/addons/base/res/res_partner.py | 4 +- openerp/addons/base/res/res_partner_demo.xml | 52 ++++++++++---------- openerp/addons/base/res/res_partner_view.xml | 9 ++-- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index c3b3015f8b3..872910aaf95 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -155,7 +155,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') ],'Partner Type', help="Select if the partner is a company or person"), + 'is_company': fields.selection( [ ('contact','Person'),('partner','Company') ],'Contact Type', help="Select if the partner is a company or 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), @@ -174,7 +174,7 @@ 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': False, + 'is_company': 'contact', 'type': 'default', } diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index c794a821ca6..017abc13e79 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -93,60 +93,60 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="website">www.asustek.com</field> </record> <record id="res_partner_agrolait" model="res.partner"> <field name="name">Agrolait</field> <field eval="[(6, 0, [ref('base.res_partner_category_0')])]" name="category_id"/> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="website">www.agrolait.com</field> </record> <record id="res_partner_c2c" model="res.partner"> <field name="name">Camptocamp</field> <field eval="[(6, 0, [ref('res_partner_category_10'), ref('res_partner_category_5')])]" name="category_id"/> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="supplier">1</field> <field name="website">www.camptocamp.com</field> </record> <record id="res_partner_sednacom" model="res.partner"> <field name="website">www.syleam.fr</field> <field name="name">Syleam</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_5')])]" name="category_id"/> </record> <record id="res_partner_thymbra" model="res.partner"> <field name="name">SmartBusiness</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> </record> <record id="res_partner_desertic_hispafuentes" model="res.partner"> <field name="name">Axelor</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> <field name="supplier">1</field> <field name="website">www.axelor.com/</field> </record> <record id="res_partner_tinyatwork" model="res.partner"> <field name="name">Tiny AT Work</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_5'), ref('res_partner_category_10')])]" name="category_id"/> <field name="website">www.tinyatwork.com/</field> </record> <record id="res_partner_2" model="res.partner"> <field name="name">Bank Wealthy and sons</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="website">www.wealthyandsons.com/</field> </record> <record id="res_partner_3" model="res.partner"> <field name="name">China Export</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="website">www.chinaexport.com/</field> </record> <record id="res_partner_4" model="res.partner"> <field name="name">Distrib PC</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> @@ -154,20 +154,20 @@ </record> <record id="res_partner_5" model="res.partner"> <field name="name">Ecole de Commerce de Liege</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> <field name="website">www.eci-liege.info//</field> </record> <record id="res_partner_6" model="res.partner"> <field name="name">Elec Import</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> </record> <record id="res_partner_maxtor" model="res.partner"> <field name="name">Maxtor</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="32000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> @@ -175,7 +175,7 @@ </record> <record id="res_partner_seagate" model="res.partner"> <field name="name">Seagate</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="5000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> @@ -183,32 +183,32 @@ <record id="res_partner_8" model="res.partner"> <field name="website">http://mediapole.net</field> <field name="name">Mediapole SPRL</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> </record> <record id="res_partner_9" model="res.partner"> <field name="website">www.balmerinc.com</field> <field name="name">BalmerInc S.A.</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="12000.00" name="credit_limit"/> <field name="ref">or</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> </record> <record id="res_partner_10" model="res.partner"> <field name="name">Tecsas</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="ean13">3020170000003</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> </record> <record id="res_partner_11" model="res.partner"> <field name="name">Leclerc</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="1200.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/> </record> <record id="res_partner_14" model="res.partner"> <field name="name">Centrale d'achats BML</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="ean13">3020178572427</field> <field eval="15000.00" name="credit_limit"/> <field name="parent_id" ref="res_partner_10"/> @@ -216,7 +216,7 @@ </record> <record id="res_partner_15" model="res.partner"> <field name="name">Magazin BML 1</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="ean13">3020178570171</field> <field name="parent_id" ref="res_partner_14"/> <field eval="1500.00" name="credit_limit"/> @@ -224,7 +224,7 @@ </record> <record id="res_partner_accent" model="res.partner"> <field name="name">Université de Liège</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="website">http://www.ulg.ac.be/</field> </record> @@ -236,7 +236,7 @@ <record id="res_partner_duboissprl0" model="res.partner"> <field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/> <field name="name">Dubois sprl</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field name="website">http://www.dubois.be/</field> </record> @@ -259,13 +259,13 @@ <record id="res_partner_theshelvehouse0" model="res.partner"> <field name="name">The Shelve House</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_retailers0')])]" name="category_id"/> </record> <record id="res_partner_vickingdirect0" model="res.partner"> <field name="name">Vicking Direct</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_miscellaneoussuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field name="customer">0</field> @@ -274,7 +274,7 @@ <record id="res_partner_woodywoodpecker0" model="res.partner"> <field name="name">Wood y Wood Pecker</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_woodsuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> @@ -283,7 +283,7 @@ <record id="res_partner_zerooneinc0" model="res.partner"> <field name="name">ZeroOne Inc</field> - <field eval="1" name="is_company"/> + <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_consumers0')])]" name="category_id"/> <field name="website">http://www.zerooneinc.com/</field> </record> diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index cd70bf8295a..199baaaa2ee 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -345,9 +345,12 @@ <page string="General"> <group colspan="2"> <separator string="Address" colspan="4"/> - <field name="type" string="Type"/> - <field name="use_parent_address" attrs="{'invisible': [('parent_id', '=', False)]}" - on_change="onchange_address(use_parent_address, parent_id)"/> + <group colspan="2"> + <field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/> + </group> + <group colspan="2"> + <field name="use_parent_address" attrs="{'invisible': [('parent_id', '=', False)]}" on_change="onchange_address(use_parent_address, parent_id)"/> + </group> <newline/> <field name="street" colspan="4" attrs="{'readonly': [('use_parent_address','=', True)]}"/> <field name="street2" colspan="4" attrs="{'readonly': [('use_parent_address','=', True)]}"/> From fe8708ecfb0d807c375300f1f5c0abf59b6f402d Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Fri, 24 Feb 2012 19:09:08 +0530 Subject: [PATCH 029/141] [Fix]:base/res: Add backwards compatible for res.partner.address bzr revid: sbh@tinyerp.com-20120224133908-prvmlde4ivyz70zi --- openerp/addons/base/base_data.xml | 10 +- openerp/addons/base/res/res_partner.py | 30 +++ openerp/addons/base/res/res_partner_demo.xml | 218 ++++++++++--------- 3 files changed, 145 insertions(+), 113 deletions(-) diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index 70ade7133a9..525c7e2e334 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -1058,15 +1058,15 @@ <record id="main_partner" model="res.partner"> <field name="name">Your Company</field> <!-- Address and Company ID will be set later --> - <!--field name="address" eval="[]"/--> + <field name="address" eval="[]"/> <field name="company_id" eval="None"/> <field name="customer" eval="False"/> </record> - <!--record id="main_address" model="res.partner.address"> + <record id="main_address" model="res.partner.address"> <field name="partner_id" ref="main_partner"/> <field name="type">default</field> <field name="company_id" eval="None"/> - </record--> + </record> <!-- Currencies --> <record id="EUR" model="res.currency"> @@ -1102,9 +1102,9 @@ <record id="main_partner" model="res.partner"> <field name="company_id" ref="main_company"/> </record> - <!--record id="main_address" model="res.partner.address"> + <record id="main_address" model="res.partner.address"> <field name="company_id" ref="main_company"/> - </record--> + </record> <record id="EUR" model="res.currency"> <field name="company_id" ref="main_company"/> </record> diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 872910aaf95..cef9ead8cf1 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -332,5 +332,35 @@ class res_partner(osv.osv): res_partner() +# Deprecated this feature +class res_partner_address(osv.osv): + _table = "res_partner" + _name = 'res.partner.address' + _order = 'type, name' + _columns = { + 'partner_id': fields.many2one('res.partner', 'Partner Name', ondelete='set null', select=True, help="Keep empty for a private address, not related to partner."), + 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), + 'function': fields.char('Function', size=128), + 'title': fields.many2one('res.partner.title','Title'), + 'name': fields.char('Contact Name', size=64, select=1), + 'street': fields.char('Street', size=128), + 'street2': fields.char('Street2', size=128), + 'zip': fields.char('Zip', change_default=True, size=24), + 'city': fields.char('City', size=128), + 'state_id': fields.many2one("res.country.state", 'Fed. State', domain="[('country_id','=',country_id)]"), + 'country_id': fields.many2one('res.country', 'Country'), + 'email': fields.char('E-Mail', size=240), + 'phone': fields.char('Phone', size=64), + 'fax': fields.char('Fax', size=64), + 'mobile': fields.char('Mobile', size=64), + 'birthdate': fields.char('Birthdate', size=64), + 'is_customer_add': fields.related('partner_id', 'customer', type='boolean', string='Customer'), + 'is_supplier_add': fields.related('partner_id', 'supplier', type='boolean', string='Supplier'), + 'active': fields.boolean('Active', help="Uncheck the active field to hide the contact."), +# 'company_id': fields.related('partner_id','company_id',type='many2one',relation='res.company',string='Company', store=True), + 'company_id': fields.many2one('res.company', 'Company',select=1), + 'color': fields.integer('Color Index'), + } +res_partner_address() # 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 017abc13e79..d38a6a68511 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -93,139 +93,137 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="is_company">partner</field> + <field name="address" eval="[]"/> <field name="website">www.asustek.com</field> </record> <record id="res_partner_agrolait" model="res.partner"> <field name="name">Agrolait</field> <field eval="[(6, 0, [ref('base.res_partner_category_0')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="address" eval="[]"/> <field name="website">www.agrolait.com</field> </record> <record id="res_partner_c2c" model="res.partner"> <field name="name">Camptocamp</field> <field eval="[(6, 0, [ref('res_partner_category_10'), ref('res_partner_category_5')])]" name="category_id"/> - <field name="is_company">partner</field> <field name="supplier">1</field> + <field name="address" eval="[]"/> <field name="website">www.camptocamp.com</field> </record> <record id="res_partner_sednacom" model="res.partner"> <field name="website">www.syleam.fr</field> <field name="name">Syleam</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_5')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_thymbra" model="res.partner"> <field name="name">SmartBusiness</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> </record> <record id="res_partner_desertic_hispafuentes" model="res.partner"> <field name="name">Axelor</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> <field name="supplier">1</field> + <field name="address" eval="[]"/> <field name="website">www.axelor.com/</field> </record> <record id="res_partner_tinyatwork" model="res.partner"> <field name="name">Tiny AT Work</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_5'), ref('res_partner_category_10')])]" name="category_id"/> <field name="website">www.tinyatwork.com/</field> </record> <record id="res_partner_2" model="res.partner"> <field name="name">Bank Wealthy and sons</field> - <field name="is_company">partner</field> + <field name="address" eval="[]"/> <field name="website">www.wealthyandsons.com/</field> </record> <record id="res_partner_3" model="res.partner"> <field name="name">China Export</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> + <field name="address" eval="[]"/> <field name="website">www.chinaexport.com/</field> </record> <record id="res_partner_4" model="res.partner"> <field name="name">Distrib PC</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> + <field name="address" eval="[]"/> <field name="website">www.distribpc.com/</field> </record> <record id="res_partner_5" model="res.partner"> <field name="name">Ecole de Commerce de Liege</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> + <field name="address" eval="[]"/> <field name="website">www.eci-liege.info//</field> </record> <record id="res_partner_6" model="res.partner"> <field name="name">Elec Import</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_maxtor" model="res.partner"> <field name="name">Maxtor</field> - <field name="is_company">partner</field> <field eval="32000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_seagate" model="res.partner"> <field name="name">Seagate</field> - <field name="is_company">partner</field> <field eval="5000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> + <field name="address" eval="[]"/> </record> <record id="res_partner_8" model="res.partner"> <field name="website">http://mediapole.net</field> <field name="name">Mediapole SPRL</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_9" model="res.partner"> <field name="website">www.balmerinc.com</field> <field name="name">BalmerInc S.A.</field> - <field name="is_company">partner</field> <field eval="12000.00" name="credit_limit"/> <field name="ref">or</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_10" model="res.partner"> <field name="name">Tecsas</field> - <field name="is_company">partner</field> <field name="ean13">3020170000003</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_11" model="res.partner"> <field name="name">Leclerc</field> - <field name="is_company">partner</field> <field eval="1200.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_14" model="res.partner"> <field name="name">Centrale d'achats BML</field> - <field name="is_company">partner</field> <field name="ean13">3020178572427</field> <field eval="15000.00" name="credit_limit"/> <field name="parent_id" ref="res_partner_10"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_15" model="res.partner"> <field name="name">Magazin BML 1</field> - <field name="is_company">partner</field> <field name="ean13">3020178570171</field> <field name="parent_id" ref="res_partner_14"/> <field eval="1500.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_accent" model="res.partner"> <field name="name">Université de Liège</field> - <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> + <field name="address" eval="[]"/> <field name="website">http://www.ulg.ac.be/</field> </record> @@ -236,55 +234,59 @@ <record id="res_partner_duboissprl0" model="res.partner"> <field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/> <field name="name">Dubois sprl</field> - <field name="is_company">partner</field> + <field name="address" eval="[]"/> <field name="website">http://www.dubois.be/</field> </record> - <!--record id="res_partner_ericdubois0" model="res.partner"> + <record id="res_partner_ericdubois0" model="res.partner"> <field name="name">Eric Dubois</field> - </record--> + <field name="address" eval="[]"/> + </record> - <!--record id="res_partner_fabiendupont0" model="res.partner"> + <record id="res_partner_fabiendupont0" model="res.partner"> <field name="name">Fabien Dupont</field> - </record--> + <field name="address" eval="[]"/> + </record> <record id="res_partner_lucievonck0" model="res.partner"> <field name="name">Lucie Vonck</field> + <field name="address" eval="[]"/> </record> - <!--record id="res_partner_notsotinysarl0" model="res.partner"> + <record id="res_partner_notsotinysarl0" model="res.partner"> <field name="name">NotSoTiny SARL</field> + <field name="address" eval="[]"/> <field name="website">notsotiny.be</field> - </record--> + </record> <record id="res_partner_theshelvehouse0" model="res.partner"> <field name="name">The Shelve House</field> - <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_retailers0')])]" name="category_id"/> + <field name="address" eval="[]"/> </record> <record id="res_partner_vickingdirect0" model="res.partner"> <field name="name">Vicking Direct</field> - <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_miscellaneoussuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field name="customer">0</field> + <field name="address" eval="[]"/> <field name="website">vicking-direct.be</field> </record> <record id="res_partner_woodywoodpecker0" model="res.partner"> <field name="name">Wood y Wood Pecker</field> - <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_woodsuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> + <field name="address" eval="[]"/> <field name="website">woodywoodpecker.com</field> </record> <record id="res_partner_zerooneinc0" model="res.partner"> <field name="name">ZeroOne Inc</field> - <field name="is_company">partner</field> <field eval="[(6,0,[ref('res_partner_category_consumers0')])]" name="category_id"/> + <field name="address" eval="[]"/> <field name="website">http://www.zerooneinc.com/</field> </record> @@ -292,7 +294,7 @@ Resource: res.partner.address --> - <record id="res_partner_address_1" model="res.partner"> + <record id="res_partner_address_1" model="res.partner.address"> <field name="city">Bruxelles</field> <field name="name">Michel Schumacher</field> <field name="zip">1000</field> @@ -301,9 +303,9 @@ <field name="phone">(+32)2 211 34 83</field> <field name="street">Rue des Palais 51, bte 33</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_9"/> + <field name="partner_id" ref="res_partner_9"/> </record> - <record id="res_partner_address_2" model="res.partner"> + <record id="res_partner_address_2" model="res.partner.address"> <field name="city">Avignon CEDEX 09</field> <field name="name">Laurent Jacot</field> <field name="zip">84911</field> @@ -312,9 +314,9 @@ <field name="phone">(+33)4.32.74.10.57</field> <field name="street">85 rue du traite de Rome</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_10"/> + <field name="partner_id" ref="res_partner_10"/> </record> - <record id="res_partner_address_3000" model="res.partner"> + <record id="res_partner_address_3000" model="res.partner.address"> <field name="city">Champs sur Marne</field> <field name="name">Laith Jubair</field> <field name="zip">77420</field> @@ -323,18 +325,18 @@ <field name="phone">+33 1 64 61 04 01</field> <field name="street">12 rue Albert Einstein</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_desertic_hispafuentes"/> + <field name="partner_id" ref="res_partner_desertic_hispafuentes"/> </record> - <record id="res_partner_address_3" model="res.partner"> + <record id="res_partner_address_3" model="res.partner.address"> <field name="city">Louvain-la-Neuve</field> <field name="name">Thomas Passot</field> <field name="zip">1348</field> <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="phone">(+32).10.45.17.73</field> <field name="street">Rue de l'Angelique, 1</field> - <field name="parent_id" ref="res_partner_8"/> + <field name="partner_id" ref="res_partner_8"/> </record> - <record id="res_partner_address_tang" model="res.partner"> + <record id="res_partner_address_tang" model="res.partner.address"> <field name="city">Taiwan</field> <field name="name">Tang</field> <field name="zip">23410</field> @@ -343,9 +345,9 @@ <field name="email">info@asustek.com</field> <field name="phone">+ 1 64 61 04 01</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_asus"/> + <field name="partner_id" ref="res_partner_asus"/> </record> - <record id="res_partner_address_wong" model="res.partner"> + <record id="res_partner_address_wong" model="res.partner.address"> <field name="city">Hong Kong</field> <field name="name">Wong</field> <field name="zip">23540</field> @@ -354,9 +356,9 @@ <field name="email">info@maxtor.com</field> <field name="phone">+ 11 8528 456 789</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_maxtor"/> + <field name="partner_id" ref="res_partner_maxtor"/> </record> - <record id="res_partner_address_6" model="res.partner"> + <record id="res_partner_address_6" model="res.partner.address"> <field name="city">Brussels</field> <field name="name">Etienne Lacarte</field> <field name="zip">2365</field> @@ -365,9 +367,9 @@ <field name="type">default</field> <field name="email">info@elecimport.com</field> <field name="phone">+ 32 025 897 456</field> - <field name="parent_id" ref="res_partner_6"/> + <field name="partner_id" ref="res_partner_6"/> </record> - <record id="res_partner_address_7" model="res.partner"> + <record id="res_partner_address_7" model="res.partner.address"> <field name="city">Namur</field> <field name="name">Jean Guy Lavente</field> <field name="zip">2541</field> @@ -376,9 +378,9 @@ <field name="type">default</field> <field name="email">info@distribpc.com</field> <field name="phone">+ 32 081256987</field> - <field name="parent_id" ref="res_partner_4"/> + <field name="partner_id" ref="res_partner_4"/> </record> - <record id="res_partner_address_8" model="res.partner"> + <record id="res_partner_address_8" model="res.partner.address"> <field name="city">Wavre</field> <field name="name">Sylvie Lelitre</field> <field name="zip">5478</field> @@ -387,10 +389,10 @@ <field name="type">default</field> <field name="email">s.l@agrolait.be</field> <field name="phone">003281588558</field> - <field name="parent_id" ref="res_partner_agrolait"/> + <field name="partner_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_madam"/> </record> - <record id="res_partner_address_8delivery" model="res.partner"> + <record id="res_partner_address_8delivery" model="res.partner.address"> <field name="city">Wavre</field> <field name="name">Paul Lelitre</field> <field name="zip">5478</field> @@ -399,10 +401,10 @@ <field name="type">delivery</field> <field name="email">p.l@agrolait.be</field> <field name="phone">003281588557</field> - <field name="parent_id" ref="res_partner_agrolait"/> + <field name="partner_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> </record> - <record id="res_partner_address_8invoice" model="res.partner"> + <record id="res_partner_address_8invoice" model="res.partner.address"> <field name="city">Wavre</field> <field name="name">Serge Lelitre</field> <field name="zip">5478</field> @@ -411,10 +413,10 @@ <field name="type">invoice</field> <field name="email">serge.l@agrolait.be</field> <field name="phone">003281588556</field> - <field name="parent_id" ref="res_partner_agrolait"/> + <field name="partner_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> </record> - <record id="res_partner_address_9" model="res.partner"> + <record id="res_partner_address_9" model="res.partner.address"> <field name="city">Paris</field> <field name="name">Arthur Grosbonnet</field> <field name="zip">75016</field> @@ -423,10 +425,10 @@ <field name="type">default</field> <field name="email">a.g@wealthyandsons.com</field> <field name="phone">003368978776</field> - <field name="parent_id" ref="res_partner_2"/> + <field name="partner_id" ref="res_partner_2"/> <field name="title" ref="base.res_partner_title_sir"/> </record> - <record id="res_partner_address_11" model="res.partner"> + <record id="res_partner_address_11" model="res.partner.address"> <field name="city">Alencon</field> <field name="name">Sebastien LANGE</field> <field name="zip">61000</field> @@ -435,9 +437,9 @@ <field name="phone">+33 (0) 2 33 31 22 10</field> <field model="res.country" name="country_id" search="[('name','=','France')]"/> <field name="type">default</field> - <field name="parent_id" ref="res_partner_sednacom"/> + <field name="partner_id" ref="res_partner_sednacom"/> </record> - <record id="res_partner_address_10" model="res.partner"> + <record id="res_partner_address_10" model="res.partner.address"> <field name="city">Liege</field> <field name="name">Karine Lesbrouffe</field> <field name="zip">6985</field> @@ -446,9 +448,9 @@ <field name="email">k.lesbrouffe@eci-liege.info</field> <field name="phone">+32 421 52571</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_5"/> + <field name="partner_id" ref="res_partner_5"/> </record> - <record id="res_partner_address_zen" model="res.partner"> + <record id="res_partner_address_zen" model="res.partner.address"> <field name="city">Shanghai</field> <field name="name">Zen</field> <field name="zip">478552</field> @@ -457,9 +459,9 @@ <field name="type">default</field> <field name="email">zen@chinaexport.com</field> <field name="phone">+86-751-64845671</field> - <field name="parent_id" ref="res_partner_3"/> + <field name="partner_id" ref="res_partner_3"/> </record> - <record id="res_partner_address_12" model="res.partner"> + <record id="res_partner_address_12" model="res.partner.address"> <field name="type">default</field> <field name="city">Grenoble</field> <field name="name">Loïc Dupont</field> @@ -469,9 +471,9 @@ <field name="type">default</field> <field name="email">l.dupont@tecsas.fr</field> <field name="phone">+33-658-256545</field> - <field name="parent_id" ref="res_partner_10"/> + <field name="partner_id" ref="res_partner_10"/> </record> - <record id="res_partner_address_13" model="res.partner"> + <record id="res_partner_address_13" model="res.partner.address"> <field name="type">default</field> <field name="name">Carl François</field> <field name="city">Bruxelles</field> @@ -480,9 +482,9 @@ <field name="street">89 Chaussée de Waterloo</field> <field name="email">carl.françois@bml.be</field> <field name="phone">+32-258-256545</field> - <field name="parent_id" ref="res_partner_14"/> + <field name="partner_id" ref="res_partner_14"/> </record> - <record id="res_partner_address_14" model="res.partner"> + <record id="res_partner_address_14" model="res.partner.address"> <field name="type">default</field> <field name="name">Lucien Ferguson</field> <field name="street">89 Chaussée de Liège</field> @@ -490,9 +492,9 @@ <field name="zip">5000</field> <field name="email">lucien.ferguson@bml.be</field> <field name="phone">+32-621-568978</field> - <field name="parent_id" ref="res_partner_15"/> + <field name="partner_id" ref="res_partner_15"/> </record> - <record id="res_partner_address_15" model="res.partner"> + <record id="res_partner_address_15" model="res.partner.address"> <field name="type">default</field> <field name="name">Marine Leclerc</field> <field name="street">rue Grande</field> @@ -500,9 +502,9 @@ <field name="zip">29200</field> <field name="email">marine@leclerc.fr</field> <field name="phone">+33-298.334558</field> - <field name="parent_id" ref="res_partner_11"/> + <field name="partner_id" ref="res_partner_11"/> </record> - <record id="res_partner_address_16" model="res.partner"> + <record id="res_partner_address_16" model="res.partner.address"> <field name="type">invoice</field> <field name="name">Claude Leclerc</field> <field name="street">rue Grande</field> @@ -510,10 +512,10 @@ <field name="zip">29200</field> <field name="email">claude@leclerc.fr</field> <field name="phone">+33-298.334598</field> - <field name="parent_id" ref="res_partner_11"/> + <field name="partner_id" ref="res_partner_11"/> </record> - <record id="res_partner_address_accent" model="res.partner"> + <record id="res_partner_address_accent" model="res.partner.address"> <field name="type">default</field> <field name="name">Martine Ohio</field> <field name="street">Place du 20Août</field> @@ -521,9 +523,9 @@ <field name="zip">4000</field> <field name="email">martine.ohio@ulg.ac.be</field> <field name="phone">+32-45895245</field> - <field name="parent_id" ref="res_partner_accent"/> + <field name="partner_id" ref="res_partner_accent"/> </record> - <record id="res_partner_address_Camptocamp" model="res.partner"> + <record id="res_partner_address_Camptocamp" model="res.partner.address"> <field name="city">Lausanne</field> <field name="name">Luc Maurer</field> <field name="zip">1015</field> @@ -531,9 +533,9 @@ <field model="res.country" name="country_id" search="[('name','=','Switzerland')]"/> <field name="street">PSE-A, EPFL </field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_c2c"/> + <field name="partner_id" ref="res_partner_c2c"/> </record> - <record id="res_partner_address_seagate" model="res.partner"> + <record id="res_partner_address_seagate" model="res.partner.address"> <field name="city">Cupertino</field> <field name="name">Seagate Technology</field> <field name="zip">95014</field> @@ -542,9 +544,9 @@ <field name="email">info@seagate.com</field> <field name="phone">+1 408 256987</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_seagate"/> + <field name="partner_id" ref="res_partner_seagate"/> </record> - <record id="res_partner_address_thymbra" model="res.partner"> + <record id="res_partner_address_thymbra" model="res.partner.address"> <field name="city">Buenos Aires</field> <field name="name">Jack Daniels</field> <field name="zip">1659</field> @@ -554,9 +556,9 @@ <field name="phone">(5411) 4773-9666 </field> <field model="res.country" name="country_id" search="[('name','=','Argentina')]"/> <field name="type">default</field> - <field name="parent_id" ref="res_partner_thymbra"/> + <field name="partner_id" ref="res_partner_thymbra"/> </record> - <record id="res_partner_address_tinyatwork" model="res.partner"> + <record id="res_partner_address_tinyatwork" model="res.partner.address"> <field name="city">Boston</field> <field name="name">Tiny Work</field> <field name="zip">5501</field> @@ -565,18 +567,18 @@ <field model="res.country" name="country_id" search="[('name','=','United States')]"/> <field name="street">One Lincoln Street</field> <field name="type">default</field> - <field name="parent_id" ref="res_partner_tinyatwork"/> + <field name="partner_id" ref="res_partner_tinyatwork"/> </record> <!-- Resource: res.partner.address for Training --> - <record id="res_partner_address_notsotinysarl0" model="res.partner"> + <record id="res_partner_address_notsotinysarl0" model="res.partner.address"> <field eval="'Namur'" name="city"/> <field eval="'NotSoTiny SARL'" name="name"/> <field eval="'5000'" name="zip"/> - <!--field name="parent_id" ref="res_partner_notsotinysarl0"/--> + <field name="partner_id" ref="res_partner_notsotinysarl0"/> <field name="country_id" ref="base.be"/> <field eval="'(+32).81.81.37.00'" name="phone"/> <field eval="'Rue du Nid 1'" name="street"/> @@ -584,42 +586,42 @@ </record> - <record id="res_partner_address_henrychard0" model="res.partner"> + <record id="res_partner_address_henrychard0" model="res.partner.address"> <field eval="'Paris'" name="city"/> <field eval="'Henry Chard'" name="name"/> <field name="country_id" ref="base.fr"/> </record> - <record id="res_partner_address_geoff0" model="res.partner"> + <record id="res_partner_address_geoff0" model="res.partner.address"> <field eval="'Brussels'" name="city"/> <field eval="'Geoff'" name="name"/> <field name="country_id" ref="base.be"/> </record> - <record id="res_partner_address_rogerpecker0" model="res.partner"> + <record id="res_partner_address_rogerpecker0" model="res.partner.address"> <field eval="'Kainuu'" name="city"/> <field eval="'Roger Pecker'" name="name"/> <field name="country_id" ref="base.fi"/> </record> - <!--record id="res_partner_address_0" model="res.partner"> + <record id="res_partner_address_0" model="res.partner.address"> <field eval="'Brussels'" name="city"/> <field name="country_id" ref="base.be"/> - </record--> + </record> - <record id="res_partner_address_henrychard1" model="res.partner"> + <record id="res_partner_address_henrychard1" model="res.partner.address"> <field eval="'Paris'" name="city"/> <field eval="'Henry Chard'" name="name"/> - <field name="parent_id" ref="res_partner_theshelvehouse0"/> + <field name="partner_id" ref="res_partner_theshelvehouse0"/> <field name="country_id" ref="base.fr"/> </record> - <record id="res_partner_address_brussels0" model="res.partner"> + <record id="res_partner_address_brussels0" model="res.partner.address"> <field eval="'Brussels'" name="city"/> <field eval="'Leen Vandenloep'" name="name"/> <field eval="'Puurs'" name="city"/> @@ -627,54 +629,54 @@ <field name="country_id" ref="base.be"/> <field eval="'(+32).70.12.85.00'" name="phone"/> <field eval="'Schoonmansveld 28'" name="street"/> - <field name="parent_id" ref="res_partner_vickingdirect0"/> + <field name="partner_id" ref="res_partner_vickingdirect0"/> <field name="country_id" ref="base.be"/> </record> - <record id="res_partner_address_rogerpecker1" model="res.partner"> + <record id="res_partner_address_rogerpecker1" model="res.partner.address"> <field eval="'Kainuu'" name="city"/> <field eval="'Roger Pecker'" name="name"/> - <field name="parent_id" ref="res_partner_woodywoodpecker0"/> + <field name="partner_id" ref="res_partner_woodywoodpecker0"/> <field eval="'(+358).9.589 689'" name="phone"/> <field name="country_id" ref="base.fi"/> </record> - <record id="res_partner_address_geoff1" model="res.partner"> + <record id="res_partner_address_geoff1" model="res.partner.address"> <field eval="'Brussels'" name="city"/> <field eval="'Geoff'" name="name"/> - <field name="parent_id" ref="res_partner_zerooneinc0"/> + <field name="partner_id" ref="res_partner_zerooneinc0"/> <field name="country_id" ref="base.be"/> </record> - <record id="res_partner_address_marcdubois0" model="res.partner"> + <record id="res_partner_address_marcdubois0" model="res.partner.address"> <field eval="'Brussels'" name="city"/> <field eval="'Marc Dubois'" name="name"/> <field eval="'1000'" name="zip"/> - <field name="parent_id" ref="res_partner_duboissprl0"/> + <field name="partner_id" ref="res_partner_duboissprl0"/> <field name="country_id" ref="base.be"/> <field eval="'Avenue de la Liberté 56'" name="street"/> <field eval="'m.dubois@dubois.be'" name="email"/> </record> - <record id="res_partner_address_fabiendupont0" model="res.partner"> + <record id="res_partner_address_fabiendupont0" model="res.partner.address"> <field eval="'Namur'" name="city"/> <field eval="'Fabien Dupont'" name="name"/> <field eval="'5000'" name="zip"/> - <!--field name="parent_id" ref="res_partner_fabiendupont0"/--> + <field name="partner_id" ref="res_partner_fabiendupont0"/> <field name="country_id" ref="base.be"/> <field eval="'Blvd Kennedy, 13'" name="street"/> </record> - <record id="res_partner_address_ericdubois0" model="res.partner"> + <record id="res_partner_address_ericdubois0" model="res.partner.address"> <field eval="'Mons'" name="city"/> <field eval="'Eric Dubois'" name="name"/> <field eval="'7000'" name="zip"/> - <!--field name="parent_id" ref="res_partner_ericdubois0"/--> + <field name="partner_id" ref="res_partner_ericdubois0"/> <field name="country_id" ref="base.be"/> <field eval="'Chaussée de Binche, 27'" name="street"/> <field eval="'e.dubois@gmail.com'" name="email"/> @@ -682,23 +684,23 @@ </record> - <!--record id="res_partner_address_notsotinysarl1" model="res.partner"> + <record id="res_partner_address_notsotinysarl1" model="res.partner.address"> <field eval="'Antwerpen'" name="city"/> <field eval="'2000'" name="zip"/> - <field name="parent_id" ref="res_partner_notsotinysarl0"/> + <field name="partner_id" ref="res_partner_notsotinysarl0"/> <field name="country_id" ref="base.be"/> <field eval="'Antwerpsesteenweg 254'" name="street"/> <field eval="'invoice'" name="type"/> </record> - <record id="res_partner_address_4" model="res.partner"> + <record id="res_partner_address_4" model="res.partner.address"> <field eval="'Grand-Rosière'" name="city"/> <field eval="'1367'" name="zip"/> - <field name="parent_id" ref="res_partner_lucievonck0"/> + <field name="partner_id" ref="res_partner_lucievonck0"/> <field name="country_id" ref="base.be"/> <field eval="'Chaussée de Namur'" name="street"/> - </record--> + </record> <!-- From ab7a5b16c9be8d9f57c280ad3da9fabcdc0f521e Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Mon, 27 Feb 2012 12:34:05 +0530 Subject: [PATCH 030/141] [IMP] res_partner: domain on parent_id field bzr revid: kjo@tinyerp.com-20120227070405-dnntj5ekk9x6plca --- openerp/addons/base/res/res_partner.py | 3 ++- openerp/addons/base/res/res_partner_view.xml | 22 ++++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index cef9ead8cf1..ff856be0cb8 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # -############################################################################## +########################################################################onchange_address###### import math @@ -197,6 +197,7 @@ class res_partner(osv.osv): def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): + print "\n =-=-=-=-=->>", parent_id, use_parent_address if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) return {'value': { diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 199baaaa2ee..b04954195c2 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -326,13 +326,14 @@ <form string="Partners"> <group col="8" colspan="4"> <group col="2"> - <field name="name"/> - <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}"/> + <field name="is_company" on_change="onchange_type(is_company, title)"/> + <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> </group> <group col="2"> - <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> - <field name="is_company" on_change="onchange_type(is_company, title)"/> + <field name="name"/> + <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> + <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> <group col="2"> <field name="customer"/> <field name="supplier"/> @@ -352,12 +353,12 @@ <field name="use_parent_address" attrs="{'invisible': [('parent_id', '=', False)]}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> - <field name="street" colspan="4" attrs="{'readonly': [('use_parent_address','=', True)]}"/> - <field name="street2" colspan="4" attrs="{'readonly': [('use_parent_address','=', True)]}"/> - <field name="zip" attrs="{'readonly': [('use_parent_address','=', True)]}"/> - <field name="city" attrs="{'readonly': [('use_parent_address','=', True)]}"/> - <field name="country_id" completion="1" attrs="{'readonly': [('use_parent_address','=', True)]}"/> - <field name="state_id" attrs="{'readonly': [('use_parent_address','=', True)]}"/> + <field name="street" colspan="4"/> + <field name="street2" colspan="4"/> + <field name="zip"/> + <field name="city"/> + <field name="country_id"/> + <field name="state_id"/> </group> <group colspan="2"> <separator string="Communication" colspan="4"/> @@ -368,7 +369,6 @@ <field name="email" widget="email" colspan="4"/> <field name="website" widget="url" colspan="4"/> <field name="ref" groups="base.group_extended" colspan="4"/> - <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> <field name="child_ids" nolabel="1"/> From aaab31453e619f04faf94408cf50cfeeebdc20a2 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Mon, 27 Feb 2012 12:35:28 +0530 Subject: [PATCH 031/141] [IMP] res_partner: remove print statement bzr revid: kjo@tinyerp.com-20120227070528-pgoon7kdnlr83kz5 --- openerp/addons/base/res/res_partner.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index ff856be0cb8..fcfffabf9d7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -197,7 +197,6 @@ class res_partner(osv.osv): def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): - print "\n =-=-=-=-=->>", parent_id, use_parent_address if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) return {'value': { From d4ae852caa647f55dc0592ada5a04bf72ba95bcd Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 27 Feb 2012 12:35:28 +0530 Subject: [PATCH 032/141] [Fix]base/res: Fix the address get method bzr revid: sbh@tinyerp.com-20120227070528-t8ewhheaxy63c9qe --- openerp/addons/base/res/res_partner.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index fcfffabf9d7..70ac3cf9e9f 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -282,9 +282,11 @@ class res_partner(osv.osv): adr_pref = ['default'] # retrieve addresses from the partner itself and its children res = [] - for p in self.browse(cr, uid, ids, context): - res.append((p.type, p.id)) - res.extend((c.type, c.id) for c in p.child_ids) + # need to fix the ids ,It get False value in list like ids[False] + if ids and ids[0]!=False: + for p in self.browse(cr, uid, ids): + res.append((p.type, p.id)) + res.extend((c.type, c.id) for c in p.child_ids) addr = dict(reversed(res)) # get the id of the (first) default address if there is one, # otherwise get the id of the first address in the list From cf495b04e8b36b2884aae578be5fecbf4fdba582 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Mon, 27 Feb 2012 12:39:20 +0530 Subject: [PATCH 033/141] [IMP] res_partner: change the view bzr revid: kjo@tinyerp.com-20120227070920-x3y0n882p2de41hh --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index b04954195c2..b30bd49ac82 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -328,12 +328,12 @@ <group col="2"> <field name="is_company" on_change="onchange_type(is_company, title)"/> <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> + <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> </group> <group col="2"> <field name="name"/> <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> - <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> <group col="2"> <field name="customer"/> <field name="supplier"/> From 4bbe96a3543d7c49fc09a9a19dcd1e236b4b65ba Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Mon, 27 Feb 2012 13:03:13 +0530 Subject: [PATCH 034/141] [IMP] res_partner: set domain on use_parent_address field bzr revid: kjo@tinyerp.com-20120227073313-q680c9bu12pjqjlj --- openerp/addons/base/res/res_partner_view.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index b30bd49ac82..f2ae93eeb34 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -348,9 +348,7 @@ <separator string="Address" colspan="4"/> <group colspan="2"> <field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/> - </group> - <group colspan="2"> - <field name="use_parent_address" attrs="{'invisible': [('parent_id', '=', False)]}" on_change="onchange_address(use_parent_address, parent_id)"/> + <field name="use_parent_address" attrs="{'invisible': ['|', ('is_company','=', 'partner'), ('parent_id', '=', False)]}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> <field name="street" colspan="4"/> From fa64c13138543aa9bfcc61d9579b0cb3de715793 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 27 Feb 2012 15:35:30 +0530 Subject: [PATCH 035/141] [IMP]base/res: Move display_address method in res.partner bzr revid: sbh@tinyerp.com-20120227100530-8xg61062982kyf97 --- openerp/addons/base/res/res_partner.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 70ac3cf9e9f..3fb32e47038 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -331,6 +331,32 @@ class res_partner(osv.osv): model_data.search(cr, uid, [('module','=','base'), ('name','=','main_partner')])[0], ).res_id + + def _display_address(self, cr, uid, address, 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. + + :param address: browse record of the res.partner.address to format + :returns: the address formatted in a display that fit its country habits (or the default ones + if not country is specified) + :rtype: string + ''' + # get the address format + address_format = address.country_id and address.country_id.address_format or \ + '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' + # get the information that will be injected into the display format + args = { + 'state_code': address.state_id and address.state_id.code or '', + 'state_name': address.state_id and address.state_id.name or '', + 'country_code': address.country_id and address.country_id.code or '', + 'country_name': address.country_id and address.country_id.name or '', + } + address_field = ['title', 'street', 'street2', 'zip', 'city'] + for field in address_field : + args[field] = getattr(address, field) or '' + + return address_format % args res_partner() From 2c7d2973f29ba6cbd77fa08db4fedb5c61a3c0ec Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 27 Feb 2012 18:09:04 +0530 Subject: [PATCH 036/141] [IMP]base/res : make contact type required bzr revid: sbh@tinyerp.com-20120227123904-98m7kec2x64yosya --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 3fb32e47038..0bd555f70d7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -155,7 +155,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.selection( [ ('contact','Person'),('partner','Company') ],'Contact Type', help="Select if the partner is a company or person",required=True), '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), From d62cd975fbedc26af69a490e41fd3a51de1d6a1a Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 27 Feb 2012 18:15:42 +0530 Subject: [PATCH 037/141] [IMP]base/res : set true for parent_address bzr revid: sbh@tinyerp.com-20120227124542-nhdnq62z0b8fnslb --- openerp/addons/base/res/res_partner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 0bd555f70d7..a4da32d3d57 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -176,6 +176,7 @@ class res_partner(osv.osv): 'color': 0, 'is_company': 'contact', 'type': 'default', + 'use_parent_address':True } def copy(self, cr, uid, id, default=None, context=None): From 2369d4649de554c8254550abb84a3afb9181244a Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 27 Feb 2012 18:30:53 +0530 Subject: [PATCH 038/141] [IMP]base/res : parent not display in childs contact bzr revid: sbh@tinyerp.com-20120227130053-pt6c88195q4ohfjr --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index f2ae93eeb34..0257bda3acf 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -369,7 +369,7 @@ <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" nolabel="1"/> + <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> From e982f916c43ddfcffd52e3565fd4af8351f82e67 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 28 Feb 2012 12:35:34 +0530 Subject: [PATCH 039/141] [IMP] base/res_partner: change demo and view bzr revid: kjo@tinyerp.com-20120228070534-bluy3498x3616y3n --- openerp/addons/base/res/res_partner.py | 4 +- openerp/addons/base/res/res_partner_demo.xml | 207 ++++++++++--------- openerp/addons/base/res/res_partner_view.xml | 4 +- 3 files changed, 109 insertions(+), 106 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index a4da32d3d57..8f79e653453 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -122,7 +122,7 @@ class res_partner(osv.osv): _name = "res.partner" _order = "name" _columns = { - 'name': fields.char('Name', size=128, required=True, select=True), + 'name': fields.char('Name', size=128, select=True), 'date': fields.date('Date', select=1), 'title': fields.many2one('res.partner.title','Title'), 'parent_id': fields.many2one('res.partner','Parent Partner'), @@ -155,7 +155,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",required=True), + 'is_company': fields.selection( [ ('contact','Person'),('partner','Company') ],'Contact Type', help="Select if the partner is a company or 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), diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index d38a6a68511..b558c7610fb 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -93,53 +93,56 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.asustek.com</field> </record> <record id="res_partner_agrolait" model="res.partner"> <field name="name">Agrolait</field> <field eval="[(6, 0, [ref('base.res_partner_category_0')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.agrolait.com</field> </record> <record id="res_partner_c2c" model="res.partner"> <field name="name">Camptocamp</field> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_10'), ref('res_partner_category_5')])]" name="category_id"/> <field name="supplier">1</field> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.camptocamp.com</field> </record> <record id="res_partner_sednacom" model="res.partner"> <field name="website">www.syleam.fr</field> <field name="name">Syleam</field> <field eval="[(6, 0, [ref('res_partner_category_5')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_thymbra" model="res.partner"> <field name="name">SmartBusiness</field> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> </record> <record id="res_partner_desertic_hispafuentes" model="res.partner"> <field name="name">Axelor</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> <field name="supplier">1</field> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.axelor.com/</field> </record> <record id="res_partner_tinyatwork" model="res.partner"> <field name="name">Tiny AT Work</field> + <field name="is_company">partner</field> <field eval="[(6, 0, [ref('res_partner_category_5'), ref('res_partner_category_10')])]" name="category_id"/> <field name="website">www.tinyatwork.com/</field> </record> <record id="res_partner_2" model="res.partner"> <field name="name">Bank Wealthy and sons</field> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.wealthyandsons.com/</field> </record> <record id="res_partner_3" model="res.partner"> <field name="name">China Export</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.chinaexport.com/</field> </record> <record id="res_partner_4" model="res.partner"> @@ -147,13 +150,13 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.distribpc.com/</field> </record> <record id="res_partner_5" model="res.partner"> <field name="name">Ecole de Commerce de Liege</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">www.eci-liege.info//</field> </record> <record id="res_partner_6" model="res.partner"> @@ -161,7 +164,7 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_maxtor" model="res.partner"> <field name="name">Maxtor</field> @@ -169,20 +172,20 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_seagate" model="res.partner"> <field name="name">Seagate</field> <field eval="5000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_8" model="res.partner"> <field name="website">http://mediapole.net</field> <field name="name">Mediapole SPRL</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_9" model="res.partner"> <field name="website">www.balmerinc.com</field> @@ -190,19 +193,19 @@ <field eval="12000.00" name="credit_limit"/> <field name="ref">or</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_10" model="res.partner"> <field name="name">Tecsas</field> <field name="ean13">3020170000003</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_11" model="res.partner"> <field name="name">Leclerc</field> <field eval="1200.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_14" model="res.partner"> <field name="name">Centrale d'achats BML</field> @@ -210,7 +213,7 @@ <field eval="15000.00" name="credit_limit"/> <field name="parent_id" ref="res_partner_10"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_15" model="res.partner"> <field name="name">Magazin BML 1</field> @@ -218,12 +221,12 @@ <field name="parent_id" ref="res_partner_14"/> <field eval="1500.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_accent" model="res.partner"> <field name="name">Université de Liège</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">http://www.ulg.ac.be/</field> </record> @@ -238,7 +241,7 @@ <field name="website">http://www.dubois.be/</field> </record> - <record id="res_partner_ericdubois0" model="res.partner"> + <!--record id="res_partner_ericdubois0" model="res.partner"> <field name="name">Eric Dubois</field> <field name="address" eval="[]"/> </record> @@ -246,23 +249,23 @@ <record id="res_partner_fabiendupont0" model="res.partner"> <field name="name">Fabien Dupont</field> <field name="address" eval="[]"/> - </record> + </record--> <record id="res_partner_lucievonck0" model="res.partner"> <field name="name">Lucie Vonck</field> <field name="address" eval="[]"/> </record> - <record id="res_partner_notsotinysarl0" model="res.partner"> + <!--record id="res_partner_notsotinysarl0" model="res.partner"> <field name="name">NotSoTiny SARL</field> <field name="address" eval="[]"/> <field name="website">notsotiny.be</field> - </record> + </record--> <record id="res_partner_theshelvehouse0" model="res.partner"> <field name="name">The Shelve House</field> <field eval="[(6,0,[ref('res_partner_category_retailers0')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> </record> <record id="res_partner_vickingdirect0" model="res.partner"> @@ -270,7 +273,7 @@ <field eval="[(6,0,[ref('res_partner_category_miscellaneoussuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field name="customer">0</field> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">vicking-direct.be</field> </record> @@ -279,14 +282,14 @@ <field eval="[(6,0,[ref('res_partner_category_woodsuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">woodywoodpecker.com</field> </record> <record id="res_partner_zerooneinc0" model="res.partner"> <field name="name">ZeroOne Inc</field> <field eval="[(6,0,[ref('res_partner_category_consumers0')])]" name="category_id"/> - <field name="address" eval="[]"/> + <field name="is_company">partner</field> <field name="website">http://www.zerooneinc.com/</field> </record> @@ -294,7 +297,7 @@ Resource: res.partner.address --> - <record id="res_partner_address_1" model="res.partner.address"> + <record id="res_partner_address_1" model="res.partner"> <field name="city">Bruxelles</field> <field name="name">Michel Schumacher</field> <field name="zip">1000</field> @@ -303,9 +306,9 @@ <field name="phone">(+32)2 211 34 83</field> <field name="street">Rue des Palais 51, bte 33</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_9"/> + <field name="parent_id" ref="res_partner_9"/> </record> - <record id="res_partner_address_2" model="res.partner.address"> + <record id="res_partner_address_2" model="res.partner"> <field name="city">Avignon CEDEX 09</field> <field name="name">Laurent Jacot</field> <field name="zip">84911</field> @@ -314,9 +317,9 @@ <field name="phone">(+33)4.32.74.10.57</field> <field name="street">85 rue du traite de Rome</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_10"/> + <field name="parent_id" ref="res_partner_10"/> </record> - <record id="res_partner_address_3000" model="res.partner.address"> + <record id="res_partner_address_3000" model="res.partner"> <field name="city">Champs sur Marne</field> <field name="name">Laith Jubair</field> <field name="zip">77420</field> @@ -325,18 +328,18 @@ <field name="phone">+33 1 64 61 04 01</field> <field name="street">12 rue Albert Einstein</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_desertic_hispafuentes"/> + <field name="parent_id" ref="res_partner_desertic_hispafuentes"/> </record> - <record id="res_partner_address_3" model="res.partner.address"> + <record id="res_partner_address_3" model="res.partner"> <field name="city">Louvain-la-Neuve</field> <field name="name">Thomas Passot</field> <field name="zip">1348</field> <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="phone">(+32).10.45.17.73</field> <field name="street">Rue de l'Angelique, 1</field> - <field name="partner_id" ref="res_partner_8"/> + <field name="parent_id" ref="res_partner_8"/> </record> - <record id="res_partner_address_tang" model="res.partner.address"> + <record id="res_partner_address_tang" model="res.partner"> <field name="city">Taiwan</field> <field name="name">Tang</field> <field name="zip">23410</field> @@ -345,9 +348,9 @@ <field name="email">info@asustek.com</field> <field name="phone">+ 1 64 61 04 01</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_asus"/> + <field name="parent_id" ref="res_partner_asus"/> </record> - <record id="res_partner_address_wong" model="res.partner.address"> + <record id="res_partner_address_wong" model="res.partner"> <field name="city">Hong Kong</field> <field name="name">Wong</field> <field name="zip">23540</field> @@ -356,9 +359,9 @@ <field name="email">info@maxtor.com</field> <field name="phone">+ 11 8528 456 789</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_maxtor"/> + <field name="parent_id" ref="res_partner_maxtor"/> </record> - <record id="res_partner_address_6" model="res.partner.address"> + <record id="res_partner_address_6" model="res.partner"> <field name="city">Brussels</field> <field name="name">Etienne Lacarte</field> <field name="zip">2365</field> @@ -367,9 +370,9 @@ <field name="type">default</field> <field name="email">info@elecimport.com</field> <field name="phone">+ 32 025 897 456</field> - <field name="partner_id" ref="res_partner_6"/> + <field name="parent_id" ref="res_partner_6"/> </record> - <record id="res_partner_address_7" model="res.partner.address"> + <record id="res_partner_address_7" model="res.partner"> <field name="city">Namur</field> <field name="name">Jean Guy Lavente</field> <field name="zip">2541</field> @@ -378,9 +381,9 @@ <field name="type">default</field> <field name="email">info@distribpc.com</field> <field name="phone">+ 32 081256987</field> - <field name="partner_id" ref="res_partner_4"/> + <field name="parent_id" ref="res_partner_4"/> </record> - <record id="res_partner_address_8" model="res.partner.address"> + <record id="res_partner_address_8" model="res.partner"> <field name="city">Wavre</field> <field name="name">Sylvie Lelitre</field> <field name="zip">5478</field> @@ -389,10 +392,10 @@ <field name="type">default</field> <field name="email">s.l@agrolait.be</field> <field name="phone">003281588558</field> - <field name="partner_id" ref="res_partner_agrolait"/> + <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_madam"/> </record> - <record id="res_partner_address_8delivery" model="res.partner.address"> + <record id="res_partner_address_8delivery" model="res.partner"> <field name="city">Wavre</field> <field name="name">Paul Lelitre</field> <field name="zip">5478</field> @@ -401,10 +404,10 @@ <field name="type">delivery</field> <field name="email">p.l@agrolait.be</field> <field name="phone">003281588557</field> - <field name="partner_id" ref="res_partner_agrolait"/> + <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> </record> - <record id="res_partner_address_8invoice" model="res.partner.address"> + <record id="res_partner_address_8invoice" model="res.partner"> <field name="city">Wavre</field> <field name="name">Serge Lelitre</field> <field name="zip">5478</field> @@ -413,10 +416,10 @@ <field name="type">invoice</field> <field name="email">serge.l@agrolait.be</field> <field name="phone">003281588556</field> - <field name="partner_id" ref="res_partner_agrolait"/> + <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> </record> - <record id="res_partner_address_9" model="res.partner.address"> + <record id="res_partner_address_9" model="res.partner"> <field name="city">Paris</field> <field name="name">Arthur Grosbonnet</field> <field name="zip">75016</field> @@ -425,10 +428,10 @@ <field name="type">default</field> <field name="email">a.g@wealthyandsons.com</field> <field name="phone">003368978776</field> - <field name="partner_id" ref="res_partner_2"/> + <field name="parent_id" ref="res_partner_2"/> <field name="title" ref="base.res_partner_title_sir"/> </record> - <record id="res_partner_address_11" model="res.partner.address"> + <record id="res_partner_address_11" model="res.partner"> <field name="city">Alencon</field> <field name="name">Sebastien LANGE</field> <field name="zip">61000</field> @@ -437,9 +440,9 @@ <field name="phone">+33 (0) 2 33 31 22 10</field> <field model="res.country" name="country_id" search="[('name','=','France')]"/> <field name="type">default</field> - <field name="partner_id" ref="res_partner_sednacom"/> + <field name="parent_id" ref="res_partner_sednacom"/> </record> - <record id="res_partner_address_10" model="res.partner.address"> + <record id="res_partner_address_10" model="res.partner"> <field name="city">Liege</field> <field name="name">Karine Lesbrouffe</field> <field name="zip">6985</field> @@ -448,9 +451,9 @@ <field name="email">k.lesbrouffe@eci-liege.info</field> <field name="phone">+32 421 52571</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_5"/> + <field name="parent_id" ref="res_partner_5"/> </record> - <record id="res_partner_address_zen" model="res.partner.address"> + <record id="res_partner_address_zen" model="res.partner"> <field name="city">Shanghai</field> <field name="name">Zen</field> <field name="zip">478552</field> @@ -459,9 +462,9 @@ <field name="type">default</field> <field name="email">zen@chinaexport.com</field> <field name="phone">+86-751-64845671</field> - <field name="partner_id" ref="res_partner_3"/> + <field name="parent_id" ref="res_partner_3"/> </record> - <record id="res_partner_address_12" model="res.partner.address"> + <record id="res_partner_address_12" model="res.partner"> <field name="type">default</field> <field name="city">Grenoble</field> <field name="name">Loïc Dupont</field> @@ -471,9 +474,9 @@ <field name="type">default</field> <field name="email">l.dupont@tecsas.fr</field> <field name="phone">+33-658-256545</field> - <field name="partner_id" ref="res_partner_10"/> + <field name="parent_id" ref="res_partner_10"/> </record> - <record id="res_partner_address_13" model="res.partner.address"> + <record id="res_partner_address_13" model="res.partner"> <field name="type">default</field> <field name="name">Carl François</field> <field name="city">Bruxelles</field> @@ -482,9 +485,9 @@ <field name="street">89 Chaussée de Waterloo</field> <field name="email">carl.françois@bml.be</field> <field name="phone">+32-258-256545</field> - <field name="partner_id" ref="res_partner_14"/> + <field name="parent_id" ref="res_partner_14"/> </record> - <record id="res_partner_address_14" model="res.partner.address"> + <record id="res_partner_address_14" model="res.partner"> <field name="type">default</field> <field name="name">Lucien Ferguson</field> <field name="street">89 Chaussée de Liège</field> @@ -492,9 +495,9 @@ <field name="zip">5000</field> <field name="email">lucien.ferguson@bml.be</field> <field name="phone">+32-621-568978</field> - <field name="partner_id" ref="res_partner_15"/> + <field name="parent_id" ref="res_partner_15"/> </record> - <record id="res_partner_address_15" model="res.partner.address"> + <record id="res_partner_address_15" model="res.partner"> <field name="type">default</field> <field name="name">Marine Leclerc</field> <field name="street">rue Grande</field> @@ -502,9 +505,9 @@ <field name="zip">29200</field> <field name="email">marine@leclerc.fr</field> <field name="phone">+33-298.334558</field> - <field name="partner_id" ref="res_partner_11"/> + <field name="parent_id" ref="res_partner_11"/> </record> - <record id="res_partner_address_16" model="res.partner.address"> + <record id="res_partner_address_16" model="res.partner"> <field name="type">invoice</field> <field name="name">Claude Leclerc</field> <field name="street">rue Grande</field> @@ -512,10 +515,10 @@ <field name="zip">29200</field> <field name="email">claude@leclerc.fr</field> <field name="phone">+33-298.334598</field> - <field name="partner_id" ref="res_partner_11"/> + <field name="parent_id" ref="res_partner_11"/> </record> - <record id="res_partner_address_accent" model="res.partner.address"> + <record id="res_partner_address_accent" model="res.partner"> <field name="type">default</field> <field name="name">Martine Ohio</field> <field name="street">Place du 20Août</field> @@ -523,9 +526,9 @@ <field name="zip">4000</field> <field name="email">martine.ohio@ulg.ac.be</field> <field name="phone">+32-45895245</field> - <field name="partner_id" ref="res_partner_accent"/> + <field name="parent_id" ref="res_partner_accent"/> </record> - <record id="res_partner_address_Camptocamp" model="res.partner.address"> + <record id="res_partner_address_Camptocamp" model="res.partner"> <field name="city">Lausanne</field> <field name="name">Luc Maurer</field> <field name="zip">1015</field> @@ -533,9 +536,9 @@ <field model="res.country" name="country_id" search="[('name','=','Switzerland')]"/> <field name="street">PSE-A, EPFL </field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_c2c"/> + <field name="parent_id" ref="res_partner_c2c"/> </record> - <record id="res_partner_address_seagate" model="res.partner.address"> + <record id="res_partner_address_seagate" model="res.partner"> <field name="city">Cupertino</field> <field name="name">Seagate Technology</field> <field name="zip">95014</field> @@ -544,9 +547,9 @@ <field name="email">info@seagate.com</field> <field name="phone">+1 408 256987</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_seagate"/> + <field name="parent_id" ref="res_partner_seagate"/> </record> - <record id="res_partner_address_thymbra" model="res.partner.address"> + <record id="res_partner_address_thymbra" model="res.partner"> <field name="city">Buenos Aires</field> <field name="name">Jack Daniels</field> <field name="zip">1659</field> @@ -556,9 +559,9 @@ <field name="phone">(5411) 4773-9666 </field> <field model="res.country" name="country_id" search="[('name','=','Argentina')]"/> <field name="type">default</field> - <field name="partner_id" ref="res_partner_thymbra"/> + <field name="parent_id" ref="res_partner_thymbra"/> </record> - <record id="res_partner_address_tinyatwork" model="res.partner.address"> + <record id="res_partner_address_tinyatwork" model="res.partner"> <field name="city">Boston</field> <field name="name">Tiny Work</field> <field name="zip">5501</field> @@ -567,18 +570,18 @@ <field model="res.country" name="country_id" search="[('name','=','United States')]"/> <field name="street">One Lincoln Street</field> <field name="type">default</field> - <field name="partner_id" ref="res_partner_tinyatwork"/> + <field name="parent_id" ref="res_partner_tinyatwork"/> </record> <!-- Resource: res.partner.address for Training --> - <record id="res_partner_address_notsotinysarl0" model="res.partner.address"> + <record id="res_partner_address_notsotinysarl0" model="res.partner"> <field eval="'Namur'" name="city"/> <field eval="'NotSoTiny SARL'" name="name"/> <field eval="'5000'" name="zip"/> - <field name="partner_id" ref="res_partner_notsotinysarl0"/> + <!--field name="parent_id" ref="res_partner_notsotinysarl0"/--> <field name="country_id" ref="base.be"/> <field eval="'(+32).81.81.37.00'" name="phone"/> <field eval="'Rue du Nid 1'" name="street"/> @@ -586,42 +589,42 @@ </record> - <record id="res_partner_address_henrychard0" model="res.partner.address"> + <record id="res_partner_address_henrychard0" model="res.partner"> <field eval="'Paris'" name="city"/> <field eval="'Henry Chard'" name="name"/> <field name="country_id" ref="base.fr"/> </record> - <record id="res_partner_address_geoff0" model="res.partner.address"> + <record id="res_partner_address_geoff0" model="res.partner"> <field eval="'Brussels'" name="city"/> <field eval="'Geoff'" name="name"/> <field name="country_id" ref="base.be"/> </record> - <record id="res_partner_address_rogerpecker0" model="res.partner.address"> + <record id="res_partner_address_rogerpecker0" model="res.partner"> <field eval="'Kainuu'" name="city"/> <field eval="'Roger Pecker'" name="name"/> <field name="country_id" ref="base.fi"/> </record> - <record id="res_partner_address_0" model="res.partner.address"> + <record id="res_partner_address_0" model="res.partner"> <field eval="'Brussels'" name="city"/> <field name="country_id" ref="base.be"/> </record> - <record id="res_partner_address_henrychard1" model="res.partner.address"> + <record id="res_partner_address_henrychard1" model="res.partner"> <field eval="'Paris'" name="city"/> <field eval="'Henry Chard'" name="name"/> - <field name="partner_id" ref="res_partner_theshelvehouse0"/> + <field name="parent_id" ref="res_partner_theshelvehouse0"/> <field name="country_id" ref="base.fr"/> </record> - <record id="res_partner_address_brussels0" model="res.partner.address"> + <record id="res_partner_address_brussels0" model="res.partner"> <field eval="'Brussels'" name="city"/> <field eval="'Leen Vandenloep'" name="name"/> <field eval="'Puurs'" name="city"/> @@ -629,54 +632,54 @@ <field name="country_id" ref="base.be"/> <field eval="'(+32).70.12.85.00'" name="phone"/> <field eval="'Schoonmansveld 28'" name="street"/> - <field name="partner_id" ref="res_partner_vickingdirect0"/> + <field name="parent_id" ref="res_partner_vickingdirect0"/> <field name="country_id" ref="base.be"/> </record> - <record id="res_partner_address_rogerpecker1" model="res.partner.address"> + <record id="res_partner_address_rogerpecker1" model="res.partner"> <field eval="'Kainuu'" name="city"/> <field eval="'Roger Pecker'" name="name"/> - <field name="partner_id" ref="res_partner_woodywoodpecker0"/> + <field name="parent_id" ref="res_partner_woodywoodpecker0"/> <field eval="'(+358).9.589 689'" name="phone"/> <field name="country_id" ref="base.fi"/> </record> - <record id="res_partner_address_geoff1" model="res.partner.address"> + <record id="res_partner_address_geoff1" model="res.partner"> <field eval="'Brussels'" name="city"/> <field eval="'Geoff'" name="name"/> - <field name="partner_id" ref="res_partner_zerooneinc0"/> + <field name="parent_id" ref="res_partner_zerooneinc0"/> <field name="country_id" ref="base.be"/> </record> - <record id="res_partner_address_marcdubois0" model="res.partner.address"> + <record id="res_partner_address_marcdubois0" model="res.partner"> <field eval="'Brussels'" name="city"/> <field eval="'Marc Dubois'" name="name"/> <field eval="'1000'" name="zip"/> - <field name="partner_id" ref="res_partner_duboissprl0"/> + <field name="parent_id" ref="res_partner_duboissprl0"/> <field name="country_id" ref="base.be"/> <field eval="'Avenue de la Liberté 56'" name="street"/> <field eval="'m.dubois@dubois.be'" name="email"/> </record> - <record id="res_partner_address_fabiendupont0" model="res.partner.address"> + <record id="res_partner_address_fabiendupont0" model="res.partner"> <field eval="'Namur'" name="city"/> <field eval="'Fabien Dupont'" name="name"/> <field eval="'5000'" name="zip"/> - <field name="partner_id" ref="res_partner_fabiendupont0"/> + <!--field name="parent_id" ref="res_partner_fabiendupont0"/--> <field name="country_id" ref="base.be"/> <field eval="'Blvd Kennedy, 13'" name="street"/> </record> - <record id="res_partner_address_ericdubois0" model="res.partner.address"> + <record id="res_partner_address_ericdubois0" model="res.partner"> <field eval="'Mons'" name="city"/> <field eval="'Eric Dubois'" name="name"/> <field eval="'7000'" name="zip"/> - <field name="partner_id" ref="res_partner_ericdubois0"/> + <!--field name="parent_id" ref="res_partner_ericdubois0"/--> <field name="country_id" ref="base.be"/> <field eval="'Chaussée de Binche, 27'" name="street"/> <field eval="'e.dubois@gmail.com'" name="email"/> @@ -684,20 +687,20 @@ </record> - <record id="res_partner_address_notsotinysarl1" model="res.partner.address"> + <!--record id="res_partner_address_notsotinysarl1" model="res.partner.address"> <field eval="'Antwerpen'" name="city"/> <field eval="'2000'" name="zip"/> - <field name="partner_id" ref="res_partner_notsotinysarl0"/> + <field name="parent_id" ref="res_partner_notsotinysarl0"/> <field name="country_id" ref="base.be"/> <field eval="'Antwerpsesteenweg 254'" name="street"/> <field eval="'invoice'" name="type"/> - </record> + </record--> - <record id="res_partner_address_4" model="res.partner.address"> + <record id="res_partner_address_4" model="res.partner"> <field eval="'Grand-Rosière'" name="city"/> <field eval="'1367'" name="zip"/> - <field name="partner_id" ref="res_partner_lucievonck0"/> + <field name="parent_id" ref="res_partner_lucievonck0"/> <field name="country_id" ref="base.be"/> <field eval="'Chaussée de Namur'" name="street"/> </record> diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 0257bda3acf..1f7b315d957 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -326,12 +326,12 @@ <form string="Partners"> <group col="8" colspan="4"> <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title)"/> + <field name="is_company" on_change="onchange_type(is_company, title)" attrs="{'requierd': True}"/> <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> </group> <group col="2"> - <field name="name"/> + <field name="name" attrs="{'requierd': True}"/> <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <group col="2"> From 14bd60efec07afb4a63105b5077d12bbd59bb57f Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 28 Feb 2012 12:39:35 +0530 Subject: [PATCH 040/141] [IMP] base/res_partner: set attrs name and is_company bzr revid: kjo@tinyerp.com-20120228070935-rx4klchhmjp0nhgl --- openerp/addons/base/res/res_partner_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 1f7b315d957..c91290014e5 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -326,12 +326,12 @@ <form string="Partners"> <group col="8" colspan="4"> <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title)" attrs="{'requierd': True}"/> + <field name="is_company" on_change="onchange_type(is_company, title)" attrs="{'required': True}"/> <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> </group> <group col="2"> - <field name="name" attrs="{'requierd': True}"/> + <field name="name" attrs="{'required': True}"/> <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <group col="2"> From 61317c17be6223b72421e4b2028831970e751aba Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 28 Feb 2012 13:54:56 +0530 Subject: [PATCH 041/141] [Fix]base/res: company address and person contact should be sychronize bzr revid: sbh@tinyerp.com-20120228082456-b5s9iw4wnjuflbk8 --- openerp/addons/base/res/res_partner.py | 34 +++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 8f79e653453..aa63b78195d 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -232,7 +232,39 @@ class res_partner(osv.osv): if math.ceil(sum/10.0)*10-sum!=int(thisean[12]): return False return True - + + + def write(self, cr, uid, ids, vals, context=None): + # Update the all child and parent_id record ,Need to fixit + update_ids=False + if ids and isinstance(ids, (tuple, list)): + ids=ids[0] + is_company=ids and self.browse(cr,uid,ids).is_company + if is_company == 'contact': + parent_id=self.browse(cr,uid,ids[0]).parent_id.id + if parent_id: + update_ids= self.search(cr, uid, [('parent_id', '=', parent_id),('use_parent_address','=',True)], context=context) + if parent_id and parent_id not in update_ids: + update_ids.append(parent_id) + elif is_company == 'partner': + update_ids= self.search(cr, uid, [('parent_id', 'in', ids),('use_parent_address','=',True)], context=context) + if update_ids: + self.udpate_address(cr,uid,update_ids,vals,context) + return super(res_partner,self).write(cr, uid, ids, vals, context=context) + + + def udpate_address(self,cr,uid,update_ids,vals, context=None): + for id in update_ids: + for key, data in vals.iteritems(): + if data: + sql = "update res_partner set %(field)s = %%(value)s where id = %%(id)s" % { + 'field': key, + } + cr.execute(sql, { + 'value': data, + 'id':id + }) + return True # _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] def name_get(self, cr, uid, ids, context=None): From 095b0bf02686a8eb1af66cc6004b8a588c0060f6 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 28 Feb 2012 14:05:42 +0530 Subject: [PATCH 042/141] [IMP] base/res_partner: improve search and context bzr revid: kjo@tinyerp.com-20120228083542-esbxvxj9fhzxdoql --- openerp/addons/base/res/res_partner_view.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index c91290014e5..225201b7085 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -314,6 +314,8 @@ <field name="function"/> <field name="phone"/> <field name="email"/> + <field name="user_id" invisible="1"/> + <field name="is_company" invisible="1"/> </tree> </field> </record> @@ -369,7 +371,7 @@ <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> + <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1" context="{'default_parent_id': id}"/> </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> @@ -414,7 +416,7 @@ <newline /> <group expand="0" string="Group By..."> <filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" /> - <filter string="Parent" context="{'group_by': 'parent_id'}"/> + <filter string="Contact Type" context="{'group_by': 'is_company'}"/> </group> </search> </field> From 7b4386a653599902728877df52de7c1de18724cb Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 28 Feb 2012 14:24:38 +0530 Subject: [PATCH 043/141] [IMP] base/res: improve code bzr revid: sbh@tinyerp.com-20120228085438-0zbv6v6k52n8tyas --- openerp/addons/base/res/res_partner.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index aa63b78195d..bc123cc76fd 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -235,21 +235,20 @@ class res_partner(osv.osv): def write(self, cr, uid, ids, vals, context=None): - # Update the all child and parent_id record ,Need to fixit + # Update the all child and parent_id record update_ids=False - if ids and isinstance(ids, (tuple, list)): - ids=ids[0] - is_company=ids and self.browse(cr,uid,ids).is_company - if is_company == 'contact': - parent_id=self.browse(cr,uid,ids[0]).parent_id.id - if parent_id: + 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 and parent_id not in update_ids: - update_ids.append(parent_id) - elif is_company == 'partner': - update_ids= self.search(cr, uid, [('parent_id', 'in', ids),('use_parent_address','=',True)], context=context) - if update_ids: - self.udpate_address(cr,uid,update_ids,vals,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,vals,context) return super(res_partner,self).write(cr, uid, ids, vals, context=context) From 3b666cb89ef1da0985db9abe7869def129bb1a33 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 28 Feb 2012 14:26:57 +0530 Subject: [PATCH 044/141] [IMP] base/res: improve code bzr revid: sbh@tinyerp.com-20120228085657-ahmf0jvjm6jjc35s --- openerp/addons/base/res/res_partner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index bc123cc76fd..0f0c8bd26dd 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -244,7 +244,8 @@ class res_partner(osv.osv): 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) + 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: From e545916f6b922d57d7200fd0e45e298378f1a832 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 28 Feb 2012 14:51:00 +0530 Subject: [PATCH 045/141] [IMP] base/res: improve onchange type for child_ids bzr revid: sbh@tinyerp.com-20120228092100-jhiwef4ln421wl9b --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 0f0c8bd26dd..a75508d4b10 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -191,7 +191,7 @@ class res_partner(osv.osv): def onchange_type(self, cr, uid, ids, is_company, title, context=None): if is_company == 'contact': - return {'value': {'is_company': is_company, 'title': ''}} + return {'value': {'is_company': is_company, 'title': '','child_ids':''}} elif is_company == 'partner': return {'value': {'is_company': is_company, 'title': ''}} return {'value': {'is_comapny': '', 'title': ''}} From 61662bcc355d883332fff3a11012e407ceb01f58 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 28 Feb 2012 15:07:25 +0530 Subject: [PATCH 046/141] [IMP] base/res: improve onchange type bzr revid: sbh@tinyerp.com-20120228093725-8siah3juypome4ur --- openerp/addons/base/res/res_partner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index a75508d4b10..7ba5210eb1c 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -178,7 +178,7 @@ class res_partner(osv.osv): 'type': 'default', 'use_parent_address':True } - + def copy(self, cr, uid, id, default=None, context=None): if default is None: default = {} @@ -193,7 +193,7 @@ class res_partner(osv.osv): if is_company == 'contact': return {'value': {'is_company': is_company, 'title': '','child_ids':''}} elif is_company == 'partner': - return {'value': {'is_company': is_company, 'title': ''}} + return {'value': {'is_company': is_company, 'title': '','parent_id':''}} return {'value': {'is_comapny': '', 'title': ''}} From 5357066185df13ea6ab865288b07d93e420e5068 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 28 Feb 2012 16:47:30 +0530 Subject: [PATCH 047/141] [IMP] base/res_partner: change tree view bzr revid: kjo@tinyerp.com-20120228111730-jcojpwwj0e9pcnep --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 225201b7085..1c78fcfaba5 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -311,7 +311,7 @@ <field name="arch" type="xml"> <tree string="Contacts"> <field name="name"/> - <field name="function"/> + <field name="function" invisible="1"/> <field name="phone"/> <field name="email"/> <field name="user_id" invisible="1"/> From c8f9b2f5bf91ee1cdf19e01a76852d41b1f94c5e Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 28 Feb 2012 17:15:05 +0530 Subject: [PATCH 048/141] [Fix] [IMP] base/res :fix the update record issue bzr revid: sbh@tinyerp.com-20120228114505-qmlbye3bgfqxfw3g --- openerp/addons/base/res/res_partner.py | 17 +++++++++-------- openerp/addons/base/res/res_partner_view.xml | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 7ba5210eb1c..e38b39d0fd0 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -189,9 +189,9 @@ class res_partner(osv.osv): def do_share(self, cr, uid, ids, *args): return True - def onchange_type(self, cr, uid, ids, is_company, title, context=None): + def onchange_type(self, cr, uid, ids, is_company, title, child_ids,context=None): if is_company == 'contact': - return {'value': {'is_company': is_company, 'title': '','child_ids':''}} + return {'value': {'is_company': is_company, 'title': '','child_ids':[(5,)]}} elif is_company == 'partner': return {'value': {'is_company': is_company, 'title': '','parent_id':''}} return {'value': {'is_comapny': '', 'title': ''}} @@ -254,16 +254,17 @@ class res_partner(osv.osv): def udpate_address(self,cr,uid,update_ids,vals, context=None): + # Remove this after all testing for id in update_ids: for key, data in vals.iteritems(): - if data: + if key in ('street','street2','zip','city','state_id','country_id','email','phone','fax','mobile','website','ref','lang'): sql = "update res_partner set %(field)s = %%(value)s where id = %%(id)s" % { - 'field': key, - } + 'field': key, + } cr.execute(sql, { - 'value': data, - 'id':id - }) + 'value': data, + 'id':id + }) return True # _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 1c78fcfaba5..3ee80fece49 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -328,7 +328,7 @@ <form string="Partners"> <group col="8" colspan="4"> <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title)" attrs="{'required': True}"/> + <field name="is_company" on_change="onchange_type(is_company, title,child_ids)" attrs="{'required': True}"/> <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> </group> From b06995c2e6adbafbe4a25f071892995ad8d9761b Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 28 Feb 2012 17:40:08 +0530 Subject: [PATCH 049/141] [IMP] base/res_partner: change form view on child create bzr revid: kjo@tinyerp.com-20120228121008-7rrelzpg2fjh4tb5 --- openerp/addons/base/res/res_partner_view.xml | 70 +++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 3ee80fece49..f949f79df28 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -371,7 +371,75 @@ <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1" context="{'default_parent_id': id}"/> + <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1" context="{'default_parent_id': id}"> + <form string="Partners"> + <group col="8" colspan="4"> + <group col="2"> + <field name="is_company" on_change="onchange_type(is_company, title,child_ids)" attrs="{'required': True}"/> + <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> + <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> + </group> + <group col="2"> + <field name="name" attrs="{'required': True}"/> + <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> + </group> + <group col="2"> + <field name="customer"/> + <field name="supplier"/> + </group> + <group col="2"> + <field name="photo" widget='image' nolabel="1"/> + </group> + </group> + <notebook colspan="4"> + <page string="General"> + <group colspan="2"> + <separator string="Address" colspan="4"/> + <group colspan="2"> + <field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/> + <field name="use_parent_address" attrs="{'invisible': [('is_company','=', 'partner')]}" on_change="onchange_address(use_parent_address, parent_id)"/> + </group> + <newline/> + <field name="street" colspan="4"/> + <field name="street2" colspan="4"/> + <field name="zip"/> + <field name="city"/> + <field name="country_id"/> + <field name="state_id"/> + </group> + <group colspan="2"> + <separator string="Communication" colspan="4"/> + <field name="lang" colspan="4"/> + <field name="phone" colspan="4"/> + <field name="mobile" colspan="4"/> + <field name="fax" colspan="4"/> + <field name="email" widget="email" colspan="4"/> + <field name="website" widget="url" colspan="4"/> + <field name="ref" groups="base.group_extended" colspan="4"/> + </group> + <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> + <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> + </group> + </page> + <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> + <separator string="General Information" colspan="4"/> + <field name="user_id"/> + <field name="active" groups="base.group_extended"/> + <field name="date"/> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> + <newline/> + </page> + <page string="History" groups="base.group_extended" invisible="True"> + </page> + <page string="Categories" groups="base.group_extended"> + <field name="category_id" colspan="4" nolabel="1"/> + </page> + <page string="Notes"> + <field name="comment" colspan="4" nolabel="1"/> + </page> + </notebook> + </form> + </field> </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> From 5821c1147720cb47de39586d4423d1e95ab0cf79 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 28 Feb 2012 18:54:13 +0530 Subject: [PATCH 050/141] [IMP] base/res_partner: remove child form view bzr revid: kjo@tinyerp.com-20120228132413-1a7zk412jt7if0db --- openerp/addons/base/res/res_partner_view.xml | 70 +------------------- 1 file changed, 1 insertion(+), 69 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index f949f79df28..1de1419eb5e 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -371,75 +371,7 @@ <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1" context="{'default_parent_id': id}"> - <form string="Partners"> - <group col="8" colspan="4"> - <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title,child_ids)" attrs="{'required': True}"/> - <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> - <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> - </group> - <group col="2"> - <field name="name" attrs="{'required': True}"/> - <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> - </group> - <group col="2"> - <field name="customer"/> - <field name="supplier"/> - </group> - <group col="2"> - <field name="photo" widget='image' nolabel="1"/> - </group> - </group> - <notebook colspan="4"> - <page string="General"> - <group colspan="2"> - <separator string="Address" colspan="4"/> - <group colspan="2"> - <field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/> - <field name="use_parent_address" attrs="{'invisible': [('is_company','=', 'partner')]}" on_change="onchange_address(use_parent_address, parent_id)"/> - </group> - <newline/> - <field name="street" colspan="4"/> - <field name="street2" colspan="4"/> - <field name="zip"/> - <field name="city"/> - <field name="country_id"/> - <field name="state_id"/> - </group> - <group colspan="2"> - <separator string="Communication" colspan="4"/> - <field name="lang" colspan="4"/> - <field name="phone" colspan="4"/> - <field name="mobile" colspan="4"/> - <field name="fax" colspan="4"/> - <field name="email" widget="email" colspan="4"/> - <field name="website" widget="url" colspan="4"/> - <field name="ref" groups="base.group_extended" colspan="4"/> - </group> - <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> - </group> - </page> - <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> - <separator string="General Information" colspan="4"/> - <field name="user_id"/> - <field name="active" groups="base.group_extended"/> - <field name="date"/> - <field name="company_id" groups="base.group_multi_company" widget="selection"/> - <newline/> - </page> - <page string="History" groups="base.group_extended" invisible="True"> - </page> - <page string="Categories" groups="base.group_extended"> - <field name="category_id" colspan="4" nolabel="1"/> - </page> - <page string="Notes"> - <field name="comment" colspan="4" nolabel="1"/> - </page> - </notebook> - </form> - </field> + <field name="child_ids" nolabel="1" context="{'default_parent_id': id}"/> </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> From 0856c439a6b9dd2fdbffc08f51a5da59b203c8ad Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Wed, 29 Feb 2012 09:46:10 +0530 Subject: [PATCH 051/141] [ADD]base/res: Add deprecated warning on create, write method of res.partner.address bzr revid: sbh@tinyerp.com-20120229041610-ld3yiqszfhtie0cf --- openerp/addons/base/res/res_partner.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index e38b39d0fd0..d7f9a3c4201 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -25,6 +25,7 @@ from osv import fields,osv import tools import pooler from tools.translate import _ +import logging class res_payterm(osv.osv): _description = 'Payment term' @@ -423,6 +424,12 @@ class res_partner_address(osv.osv): 'company_id': fields.many2one('res.company', 'Company',select=1), 'color': fields.integer('Color Index'), } + def write(self, cr, uid, ids, vals, context=None): + logging.getLogger('res.partner').warning("Deprecated, use of res.partner.address and used res.partner") + return super(res_partner_address,self).write(cr, uid, ids, vals, context=context) + 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) res_partner_address() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From a3279e2f84f14a9b6841de232b1b18bd300debd2 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 29 Feb 2012 10:24:41 +0530 Subject: [PATCH 052/141] [IMP] base/res_partner: change in demo file bzr revid: kjo@tinyerp.com-20120229045441-ljgg0jf6od964dtb --- openerp/addons/base/res/res_partner_demo.xml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index b558c7610fb..d31a1a6ab1e 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -237,7 +237,7 @@ <record id="res_partner_duboissprl0" model="res.partner"> <field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/> <field name="name">Dubois sprl</field> - <field name="address" eval="[]"/> + <field name="is_compnay">partner</field> <field name="website">http://www.dubois.be/</field> </record> @@ -253,7 +253,10 @@ <record id="res_partner_lucievonck0" model="res.partner"> <field name="name">Lucie Vonck</field> - <field name="address" eval="[]"/> + <field eval="'Grand-Rosière'" name="city"/> + <field eval="'1367'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'Chaussée de Namur'" name="street"/> </record> <!--record id="res_partner_notsotinysarl0" model="res.partner"> @@ -697,13 +700,13 @@ </record--> - <record id="res_partner_address_4" model="res.partner"> + <!--record id="res_partner_address_4" model="res.partner"> <field eval="'Grand-Rosière'" name="city"/> <field eval="'1367'" name="zip"/> <field name="parent_id" ref="res_partner_lucievonck0"/> <field name="country_id" ref="base.be"/> <field eval="'Chaussée de Namur'" name="street"/> - </record> + </record--> <!-- From 41e9e2b38abf680ef49acb787bf5a09e78ca4d4c Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 29 Feb 2012 12:58:57 +0530 Subject: [PATCH 053/141] [IMP] base/res_partner: set required true for name and company bzr revid: kjo@tinyerp.com-20120229072857-gd117xdkm49k9py2 --- openerp/addons/base/res/res_partner_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 1de1419eb5e..d39e2eea3ce 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -328,12 +328,12 @@ <form string="Partners"> <group col="8" colspan="4"> <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title,child_ids)" attrs="{'required': True}"/> + <field name="is_company" on_change="onchange_type(is_company, title,child_ids)" required="1"/> <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> </group> <group col="2"> - <field name="name" attrs="{'required': True}"/> + <field name="name" required="1"/> <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <group col="2"> From 4b6cd64e6ecb923f9e94a891c0518d574416bb81 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Wed, 29 Feb 2012 14:43:45 +0530 Subject: [PATCH 054/141] [Fix]base/res: Fix synchronization of company address and person contact bzr revid: sbh@tinyerp.com-20120229091345-xhmgpiqruy165lia --- openerp/addons/base/res/res_partner.py | 40 ++++++++++++++++---------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index d7f9a3c4201..6f42391a79f 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -194,7 +194,7 @@ class res_partner(osv.osv): if is_company == 'contact': return {'value': {'is_company': is_company, 'title': '','child_ids':[(5,)]}} elif is_company == 'partner': - return {'value': {'is_company': is_company, 'title': '','parent_id':''}} + return {'value': {'is_company': is_company, 'title': '','parent_id':False}} return {'value': {'is_comapny': '', 'title': ''}} @@ -242,30 +242,40 @@ class res_partner(osv.osv): 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 + 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) + 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) + 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,vals,context) - return super(res_partner,self).write(cr, uid, ids, vals, context=context) + self.udpate_address(cr,uid,update_ids,False,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'): + 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) + return super(res_partner,self).create(cr, uid, vals, context=context) - def udpate_address(self,cr,uid,update_ids,vals, context=None): - # Remove this after all testing - for id in update_ids: - for key, data in vals.iteritems(): - if key in ('street','street2','zip','city','state_id','country_id','email','phone','fax','mobile','website','ref','lang'): - sql = "update res_partner set %(field)s = %%(value)s where id = %%(id)s" % { + def udpate_address(self,cr,uid,update_ids,parent_id,vals, context=None): + # Remove this method after testing all case +# if update_ids: +# osv.osv.write(self, cr, uid,update_ids, vals,context=context) + 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, - 'id':id - }) + 'value': data or '', + 'id':tuple(update_list) + }) return True # _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] From 9af570b3fefae4d0101fdb5d447e0cebd4c1b6bc Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 29 Feb 2012 15:32:41 +0530 Subject: [PATCH 055/141] [IMP] base/res_partner: change kanban view bzr revid: kjo@tinyerp.com-20120229100241-novvq29r4v6rk0gx --- openerp/addons/base/res/res_partner_view.xml | 54 ++++++++------------ 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index d39e2eea3ce..c888f5c07b7 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -371,7 +371,7 @@ <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" nolabel="1" context="{'default_parent_id': id}"/> + <field name="child_ids" nolabel="1"/> </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> @@ -437,50 +437,37 @@ <field name="is_company"/> <field name="function"/> <field name="phone"/> + <field name="street"/> + <field name="street2"/> + <field name="photo"/> + <field name="zip"/> + <field name="city"/> + <field name="country_id"/> + <field name="mobile"/> <templates> <t t-name="kanban-box"> <t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/> <div t-att-class="color + (record.color.raw_value == 1 ? ' oe_kanban_color_alert' : '')"> <div class="oe_kanban_box oe_kanban_color_border"> <div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle"> - <table class="oe_kanban_table"> - <tr> - <td class="oe_kanban_title1" align="left" valign="middle"> - <field name="name"/> - <t t-if="record.name.raw_value and record.title.raw_value">,</t> - <field name="title"/> - </td> - <td valign="top" width="22"> - <img t-att-src="kanban_gravatar(record.email.value, 22)" class="oe_kanban_gravatar"/> - </td> - </tr> - </table> - </div> <div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger oe_kanban_color_border"> <table class="oe_kanban_table"> <tr> <td valign="top" width="64" align="left"> <img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" width="64" height="64"/> </td> - <td valign="top" align="left"> - <div class="oe_kanban_title2"> - <t t-if="record.parent_id.raw_value"> - <field name="parent_id"/> - </t> - <t t-if="record.is_company.raw_value"> - <field name="country_id"/> - </t> - </div> - <div class="oe_kanban_title3"> - <t t-if="record.function.raw_value"> - <field name="function"/> - </t> - </div> - <div class="oe_kanban_title3"> - <i><field name="email"/> - <t t-if="record.phone.raw_value and record.email.raw_value">,</t> - <field name="phone"/></i> - </div> + <td class="oe_kanban_title1" align="left" valign="middle"> + <h4><a type="edit"><field name="name"/></a></h4> + <field name="street"/> + <field name="street2"/><br/> + <field name="city"/> + <field name="zip"/><br/> + <field name="country_id"/><br/> + <field name="email"/><br/> + <field name="mobile"/><br/> + </td> + <td t-if="record.is_company.raw_value == 'contact'" valign="top" align="right"> + <img t-att-src="kanban_gravatar(record.photo.value, 22)" class="oe_kanban_gravatar"/> </td> </tr> </table> @@ -495,6 +482,7 @@ </div> <br class="oe_kanban_clear"/> </div> + </div> </div> </div> </t> From b8f6f5c9f60d87743d6e45b89044aa43162655d1 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 29 Feb 2012 16:19:14 +0530 Subject: [PATCH 056/141] [IMP] base/res_partner: set context on child_ids field bzr revid: kjo@tinyerp.com-20120229104914-8ao2db0q8kpqer06 --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index c888f5c07b7..f1347861ce1 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -371,7 +371,7 @@ <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" nolabel="1"/> + <field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1"/> </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> From 292610067393751b994ecc3ecaa617c7a26fb021 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 29 Feb 2012 16:38:39 +0530 Subject: [PATCH 057/141] [IMP] base/res_partner: add demo data bzr revid: kjo@tinyerp.com-20120229110839-895x65cp1xyomnxx --- openerp/addons/base/res/res_partner_demo.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index d31a1a6ab1e..031ec2befd2 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -614,6 +614,7 @@ <record id="res_partner_address_0" model="res.partner"> + <field eval="Brus" name="name"/> <field eval="'Brussels'" name="city"/> <field name="country_id" ref="base.be"/> </record> From 2092950a0bcfcc858e8a914ae2c8ce87dcf7c693 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 29 Feb 2012 16:43:36 +0530 Subject: [PATCH 058/141] [IMP] base/res_partner: change demo data bzr revid: kjo@tinyerp.com-20120229111336-v6doiyqi4e7m1mmj --- openerp/addons/base/res/res_partner_demo.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 031ec2befd2..ce42b90a938 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -614,7 +614,7 @@ <record id="res_partner_address_0" model="res.partner"> - <field eval="Brus" name="name"/> + <field name="name">Brus</field> <field eval="'Brussels'" name="city"/> <field name="country_id" ref="base.be"/> </record> From e1a9ac3dac9bb14ea3f411b16469ec6e20e5ed8f Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Wed, 29 Feb 2012 17:36:16 +0530 Subject: [PATCH 059/141] [Fix]base/res: Fix name of field in demo data bzr revid: sbh@tinyerp.com-20120229120616-j1tyxqogm9x6zvle --- openerp/addons/base/res/res_partner_demo.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index ce42b90a938..348e9f0931a 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -237,7 +237,7 @@ <record id="res_partner_duboissprl0" model="res.partner"> <field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/> <field name="name">Dubois sprl</field> - <field name="is_compnay">partner</field> + <field name="is_company">partner</field> <field name="website">http://www.dubois.be/</field> </record> @@ -669,7 +669,7 @@ </record> - <record id="res_partner_address_fabiendupont0" model="res.partner"> + <record id="res_partner_fabiendupont0" model="res.partner"> <field eval="'Namur'" name="city"/> <field eval="'Fabien Dupont'" name="name"/> <field eval="'5000'" name="zip"/> @@ -679,7 +679,7 @@ </record> - <record id="res_partner_address_ericdubois0" model="res.partner"> + <record id="res_partner_ericdubois0" model="res.partner"> <field eval="'Mons'" name="city"/> <field eval="'Eric Dubois'" name="name"/> <field eval="'7000'" name="zip"/> From ed0f29599d39026d94171a9c00cbf3f9175aebab Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Thu, 1 Mar 2012 10:41:42 +0530 Subject: [PATCH 060/141] [IMP] base/res_partner: change kanban view and set as default bzr revid: kjo@tinyerp.com-20120301051142-2q23ape31lqzvvg0 --- openerp/addons/base/res/res_partner_view.xml | 70 ++++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index f1347861ce1..4fdf345bd90 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -448,39 +448,39 @@ <t t-name="kanban-box"> <t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/> <div t-att-class="color + (record.color.raw_value == 1 ? ' oe_kanban_color_alert' : '')"> - <div class="oe_kanban_box oe_kanban_color_border"> - <div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle"> - <div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger oe_kanban_color_border"> - <table class="oe_kanban_table"> - <tr> - <td valign="top" width="64" align="left"> - <img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" width="64" height="64"/> - </td> - <td class="oe_kanban_title1" align="left" valign="middle"> - <h4><a type="edit"><field name="name"/></a></h4> - <field name="street"/> - <field name="street2"/><br/> - <field name="city"/> - <field name="zip"/><br/> - <field name="country_id"/><br/> - <field name="email"/><br/> - <field name="mobile"/><br/> - </td> - <td t-if="record.is_company.raw_value == 'contact'" valign="top" align="right"> - <img t-att-src="kanban_gravatar(record.photo.value, 22)" class="oe_kanban_gravatar"/> - </td> - </tr> - </table> - </div> - <div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick"> - <div class="oe_kanban_left"> - <a string="Edit" icon="gtk-edit" type="edit"/> - <a string="Change Color" icon="color-picker" type="color" name="color"/> - <a title="Mail" t-att-href="'mailto:'+record.email.value" style="text-decoration: none;" > - <img src="/web/static/src/img/icons/terp-mail-message-new.png" border="0" width="16" height="16"/> - </a> + <div class="oe_module_vignette"> + <a type="edit"> + <img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" width="64" height="64" class="oe_module_icon"/> + </a> + <div class="oe_module_desc"> + <div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger oe_kanban_color_border"> + <table class="oe_kanban_table"> + <tr> + <td class="oe_kanban_title1" align="left" valign="middle"> + <h4><a type="edit"><field name="name"/></a></h4> + <field name="street"/> + <field name="street2"/><br/> + <field name="city"/> + <field name="zip"/><br/> + <field name="country_id"/><br/> + <field name="email"/><br/> + <field name="mobile"/><br/> + </td> + <td t-if="record.is_company.raw_value == 'contact'" valign="top" align="right"> + <img t-att-src="kanban_gravatar(record.photo.value, 22)" class="oe_kanban_gravatar"/> + </td> + </tr> + </table> </div> - <br class="oe_kanban_clear"/> + <div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick"> + <div class="oe_kanban_left"> + <a string="Edit" icon="gtk-edit" type="edit"/> + <a string="Change Color" icon="color-picker" type="color" name="color"/> + <a title="Mail" t-att-href="'mailto:'+record.email.value" style="text-decoration: none;" > + <img src="/web/static/src/img/icons/terp-mail-message-new.png" border="0" width="16" height="16"/> + </a> + </div> + <br class="oe_kanban_clear"/> </div> </div> </div> @@ -496,15 +496,15 @@ <field name="type">ir.actions.act_window</field> <field name="res_model">res.partner</field> <field name="view_type">form</field> - <field name="view_mode">kanban</field> + <field name="view_mode">tree</field> <field name="context">{"search_default_customer":1}</field> <field name="search_view_id" ref="view_res_partner_filter"/> <field name="help">A customer is an entity you do business with, like a company or an organization. A customer can have several contacts or addresses which are the people working for this company. You can use the history tab, to follow all transactions related to a customer: sales order, emails, opportunities, claims, etc. If you use the email gateway, the Outlook or the Thunderbird plugin, don't forget to register emails to each contact so that the gateway will automatically attach incoming emails to the right partner.</field> </record> <record id="action_partner_form_view1" model="ir.actions.act_window.view"> <field eval="10" name="sequence"/> - <field name="view_mode">tree</field> - <field name="view_id" ref="view_partner_tree"/> + <field name="view_mode">kanban</field> + <field name="view_id" ref="res_partner_kanban_view"/> <field name="act_window_id" ref="action_partner_form"/> </record> <record id="action_partner_form_view2" model="ir.actions.act_window.view"> From 1a6d306456e0102b2ef36745554d08852f55df06 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Thu, 1 Mar 2012 12:13:12 +0530 Subject: [PATCH 061/141] [Add] base/res: Add the photo field in res.partner bzr revid: kjo@tinyerp.com-20120301064312-ac1c9wnb6dtu6rv8 --- openerp/addons/base/res/photo.png | Bin 0 -> 2685 bytes openerp/addons/base/res/res_partner.py | 16 ++++++++++++---- openerp/addons/base/res/res_partner_view.xml | 17 ++++++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 openerp/addons/base/res/photo.png diff --git a/openerp/addons/base/res/photo.png b/openerp/addons/base/res/photo.png new file mode 100644 index 0000000000000000000000000000000000000000..1d124127b2bf7115fdb38ab2fc136fdf5b531237 GIT binary patch literal 2685 zcmV-@3WD{CP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW zd<bNS00009a7bBm000Fs000Fs0k`caQUCw|8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H13HnJyK~!jg)mlxATt^Z9s(;?^%xpHR-L+RH#w4~ZM-jrt3j~Q+ zii8v)E|DyxNFV_R4k!l@cjF7<5GfKNM=k{A5Fe9pAwUxGlSn{Fd`KKN%38`=yRp4L zo}c&A-Bld+Ju<d8#_<e_XsPsi=Jl)kzSq@N-8DlZg8%1c{ufHmojbQsRn?b?=!h|< zZ>@cEZEfxEk3asno3<^Q<_tXZ%rjptisIYOxmYO`k|dEhj$y6UT5BSrwW26~{@7!W z4W?ytDg>T*;)!H-cJ@bQSsn&Z0w~fnt+Ff&aU4?|$JSb#0!W>6rYy_fJo@OPzn|DJ z05uIIb8~Y)b<W+ZwcY{np;GFS)_Tnt^FbWPAEarz*6DQCyWQ^9PN!4mdH$W}pMU<L zY1p2az_ZUjdwMh)%`@|kwf1rpMe6`Ii0DHAmx<`I*80OJiq^9%+lZoQ(->0#_|B70 zJ{e7Ff1*YF^wUrGwAPOR820=9t-)Y$WoBk(n}`Y#aUle8&Y`L*4WQCm2j?7#h#{i6 zg9i`(1i;TeH3G(%FL>|6)vH$rhYugVHZwERUt3!nZES2*Q55mw;-Xk<5kd&gIUbEh z6hg2egbYBZEX#wF*q@kywf6Iyo15;ThaM^x78XX<+T#BE?{`Y6aQ^&xxp3hEhQlH5 zzWeTwBngZ$l~QW7y}douS{EUNxu>3b%1#nqC(Q!~XJ=>q+}vEPl&Y0dL2Dhf)^hy# zaXESNWIK)ku!wkOt_Oob{pzc)*2Wl)qUb&VZ{I0^i54+4ck?`FrIaV4pp*(qDG(8e z2qMz<WlTbz=l;l%BcUh??smI}C&4fg0U|=4=Kvr|DQ>_^dyj~AjVOioUL(A3-#+%< zW70e{5dmXNIXgSs0^4&;`~4Up0l;w_OQ+L86h&7i!Ena}UU}t}<K1p|*v!CnVE1Zc zZ<<<JT3X_Tg@te3DF$G&8A$HA=bmnoB&yM)#=!ljiAXCXBJDT>Kp!}8z+-|13`{_v z)9L)9uIsMWS_6ng#E6J)35)@6!IOw+5wXqq$a|j<(d(ZIffFZAlp%z-8@EXTq(l?} z(DYFocdPczCjc@LNvf*ijg5^rKNSK15JLFva5&r+kz7PNA%ujPt%xXQMkCaSX68sl zvJgVf%rP@Refsoi{?rJZI(6zT0KX0)WX#+RA#_3rQ3JLG4rW%&Y?wJ=<~)Rud+$G3 zUS9s^B=#pJ001XXp1k0_-)81cLm&+yjL!lwvkD<tW=<RM2{XSosqLu{005=bYu@{e znRD-b>YTG71kKD8LZGH^LkNj;E-lM43L*SyDz>Mgq^hbv)OBr`Icwf><h@tkd({w7 z-h1nui$e(U`uh6Lv17-IY1p0$f#v1pYdbqTm%R5$>q6dp?Y)Qho*FVHgb;0SZ`*#q z|F>z_1*Sv*0HP>*>(Zr5)_ZT8J-=$+JT)_+opa{>_un^JmQ9qr#@p1&Dp{6Y9F0bb znGFEN%!-;M&|LM(%8FiCSfIgR@XoaCPK^LF*M|-rqLq~uSZmed;v(AJW>r;KSy{pS z{5<C8=jqg`Q{}YmPK|&uhVwkf(W6Ik<;oRaU0ucI<|ddKaU5g+{{7M%F{fGzoEiaZ z?E$T|Pm;tfE-nVGH77|T&N*0Xx!dh}Ypo+9fByXWLk~Rg!28p%JGDjJ>2$uKwXTS$ zBqB#dfrz+~KtxVNN+K$=Ec^bn>`qLeD2n;@_4V)Od9DCl6Okb^S0WOaSpZ1WF98hF zH0{sL&CM1?@x7|5mL|1-$1b$Bwe`iSs=jWmJ=E*<iqU9v)mpphz3)5cD(`&=AqW5o zAp~Zw<2df;c^)aH$Qbka5W<&-!{I73|FPTcz7F6MZ|pu%ZM5I-&p78Ean5~7Yu(XW zmm)F>AzTX~Y#U>Clu`pCD$25SWm$?+3Q-hMk|b6{5^HTINs<`=Ga}LjkO4@Td8Cwj z%{lkGJkPhLN?>bi>;BPb^i8ex=h8G~A}WkABM}*Dtp`LjAfgd7kF?fRUDsYjxX~>{ zL|SX5wKmO}Aq9{(;5*HBJQI-=fFYs_BJxs_ByUYjV0Cr%2LQg(>2ykK?NDnyP)ZGn zXb51Wlq!g*1W*I;L=^CmD~u~Ae021*jl?3-9&mC1xrlT`q(elBi2OB8(_i5hu60WS ztE;O&^xmK7^?HLONp=A25Ya$uJ=9v4L{y82BO)&%Ohnv({y3%W@k}>FG<MfvBqB*O z3mxpb*Ih)^6_GcxEc@lhVf@%dys@!yw65#py<Tr%t-Yd@x*9^bW{epbV`=~nK-dHH zt)^5O5@AdnfSQOZ0ELJY04e}ML<qp~;c)ncJkQ_wL<EYWcr?#*7e&zy5nTnaX^a_a zt!n_j0mA^=3f%2RgYj`Zb`3=205}l|Exr(f)mnc8!0i***w{!!<g;4qfr#vgNI!%y zOp>Gm;6>ynAHTy2+xSDF`7F!~?7CMfBDweeV87q*b-UebH!9dOk(FinwJ3_n7&8Je z5|M(L9T9nMwBy#Ua;HRCDb>1FAtJ-ZK5MNX-0Q)c2&}BESZ01$Ywd}s5|IkK)5;<O zr4$+tHx;q&uwAF8sUrz92LQE*R7B*Rb0^N8J$n=0o4$DOz4uZP+28oIG*xEZic(5@ z@6}kbYFeU1L^E@1OSO4Kb~}g9oH-N!Hv;Owfdh|3QDlk80En@hbTR;$_dX?}B!mz* z_u6=F8qv2Y?fC!XgGLhU`hAAo+>nY$%*;k96|b+aKYSyB>lX3LFTYG#mL0t7uDf&; zMTz&mCnBDRED;sn`<jRxGY4k&N-4%}1i9T%N@LgY#HIl#5i!hci6~;`6hIHajI}mZ zO3~KV)@SzZ+jqUf8>7dIFTU6bA^iB>d+$9uKR;htYe(Muk%*L9>$=zL)m2sbvMgPm z=i~8woWx$qjBbz?cq^8fO<mWKh(sciXst65NiSWx6koh}@r~hd_>0r0PuI63008IC zom1ZXdqm_b_uY5jgG)<GS(>JyIk0%8R2U2f-WcOs0z|}(ueSN&#t=JRy;e#oYKp<v zxm8`)T0~4$Rc38%?b_<<>YoAp<(+rlSwC~;%uQR0TW%%Jo;|CUmzQ-}mWx$YJ+QR2 zbR^5N12Z!-y>7Q_j4|zgpPR_hZl47Jm|2<y+LHLF>bu)lO}0f{*M4VbXJ;@NTwGgQ z`&X~mdvpK({a0Uj;RV?X_-zr`Yi0oGG);A<)1k|kFVA}K=S3tn#>CFKn3<C}j#H&n z7RPbwy$3TF%si^9YNWNUM5JWqI!Tg|_kQEpv12=%o16UZyYGgVUV2HMd+xd0J{L^< rUy1g|yz#bIyas?9-{fA;e$w`D7*uXqF(Wye00000NkvXXu0mjf2FeL+ literal 0 HcmV?d00001 diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 6f42391a79f..6bbd55bc981 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -26,6 +26,7 @@ import tools import pooler from tools.translate import _ import logging +import os class res_payterm(osv.osv): _description = 'Payment term' @@ -180,6 +181,12 @@ class res_partner(osv.osv): 'use_parent_address':True } + 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') + else: + return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'res_company_logo.png'), 'rb') .read().encode('base64') + def copy(self, cr, uid, id, default=None, context=None): if default is None: default = {} @@ -190,12 +197,13 @@ class res_partner(osv.osv): def do_share(self, cr, uid, ids, *args): return True - def onchange_type(self, cr, uid, ids, is_company, title, child_ids,context=None): + def onchange_type(self, cr, uid, ids, is_company, title, child_ids, photo,context=None): + photo=False if is_company == 'contact': - return {'value': {'is_company': is_company, 'title': '','child_ids':[(5,)]}} + return {'value': {'is_company': is_company, 'title': '','child_ids':[(5,)], 'photo': self._get_photo(cr, uid, is_company, context)}} elif is_company == 'partner': - return {'value': {'is_company': is_company, 'title': '','parent_id':False}} - return {'value': {'is_comapny': '', 'title': ''}} + return {'value': {'is_company': is_company, 'title': '','parent_id':False, 'photo': self._get_photo(cr, uid, is_company, context)}} + return {'value': {'is_comapny': '', 'title': '','photo':''}} def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 4fdf345bd90..82ca9cd01ac 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -328,7 +328,7 @@ <form string="Partners"> <group col="8" colspan="4"> <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title,child_ids)" required="1"/> + <field name="is_company" on_change="onchange_type(is_company, title,child_ids,photo)" required="1"/> <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> </group> @@ -467,7 +467,7 @@ <field name="mobile"/><br/> </td> <td t-if="record.is_company.raw_value == 'contact'" valign="top" align="right"> - <img t-att-src="kanban_gravatar(record.photo.value, 22)" class="oe_kanban_gravatar"/> + <!--img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" class="oe_kanban_gravatar"/--> </td> </tr> </table> @@ -496,23 +496,30 @@ <field name="type">ir.actions.act_window</field> <field name="res_model">res.partner</field> <field name="view_type">form</field> - <field name="view_mode">tree</field> + <field name="view_mode">tree,form,kanban</field> <field name="context">{"search_default_customer":1}</field> <field name="search_view_id" ref="view_res_partner_filter"/> <field name="help">A customer is an entity you do business with, like a company or an organization. A customer can have several contacts or addresses which are the people working for this company. You can use the history tab, to follow all transactions related to a customer: sales order, emails, opportunities, claims, etc. If you use the email gateway, the Outlook or the Thunderbird plugin, don't forget to register emails to each contact so that the gateway will automatically attach incoming emails to the right partner.</field> </record> <record id="action_partner_form_view1" model="ir.actions.act_window.view"> - <field eval="10" name="sequence"/> + <field eval="0" name="sequence"/> <field name="view_mode">kanban</field> <field name="view_id" ref="res_partner_kanban_view"/> <field name="act_window_id" ref="action_partner_form"/> </record> <record id="action_partner_form_view2" model="ir.actions.act_window.view"> - <field eval="20" name="sequence"/> + <field eval="2" name="sequence"/> <field name="view_mode">form</field> <field name="view_id" ref="view_partner_form"/> <field name="act_window_id" ref="action_partner_form"/> </record> + + <record id="action_partner_tree_view1" model="ir.actions.act_window.view"> + <field name="sequence" eval="1"/> + <field name="view_mode">tree</field> + <field name="view_id" ref="view_partner_tree"/> + <field name="act_window_id" ref="action_partner_form"/> + </record> <menuitem action="action_partner_form" id="menu_partner_form" From dcea683f059144767379c5b3fd9bf05bb86d434a Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Thu, 1 Mar 2012 17:23:37 +0530 Subject: [PATCH 062/141] [IMP] base/res_partner: add child view bzr revid: kjo@tinyerp.com-20120301115337-sjp39r980l2dqunv --- openerp/addons/base/res/res_partner.py | 2 +- openerp/addons/base/res/res_partner_view.xml | 70 +++++++++++++++++++- 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 6bbd55bc981..2ec9d3707e3 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -274,7 +274,7 @@ class res_partner(osv.osv): # if update_ids: # osv.osv.write(self, cr, uid,update_ids, vals,context=context) 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 : + 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" % { diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 82ca9cd01ac..26568ba87f8 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -371,7 +371,75 @@ <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> - <field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1"/> + <field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1"> + <form string="Partners"> + <group col="8" colspan="4"> + <group col="2"> + <field name="is_company" on_change="onchange_type(is_company, title,child_ids,photo)" required="1" domain="[('is_company', '=', 'partner')]"/> + <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> + <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> + </group> + <group col="2"> + <field name="name" required="1"/> + <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> + </group> + <group col="2"> + <field name="customer"/> + <field name="supplier"/> + </group> + <group col="2"> + <field name="photo" widget='image' nolabel="1"/> + </group> + </group> + <notebook colspan="4"> + <page string="General"> + <group colspan="2"> + <separator string="Address" colspan="4"/> + <group colspan="2"> + <field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/> + <field name="use_parent_address" attrs="{'invisible': [('is_company','=', 'partner')]}" on_change="onchange_address(use_parent_address, parent_id)"/> + </group> + <newline/> + <field name="street" colspan="4"/> + <field name="street2" colspan="4"/> + <field name="zip"/> + <field name="city"/> + <field name="country_id"/> + <field name="state_id"/> + </group> + <group colspan="2"> + <separator string="Communication" colspan="4"/> + <field name="lang" colspan="4"/> + <field name="phone" colspan="4"/> + <field name="mobile" colspan="4"/> + <field name="fax" colspan="4"/> + <field name="email" widget="email" colspan="4"/> + <field name="website" widget="url" colspan="4"/> + <field name="ref" groups="base.group_extended" colspan="4"/> + </group> + <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> + <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> + </group> + </page> + <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> + <separator string="General Information" colspan="4"/> + <field name="user_id"/> + <field name="active" groups="base.group_extended"/> + <field name="date"/> + <field name="company_id" groups="base.group_multi_company" widget="selection"/> + <newline/> + </page> + <page string="History" groups="base.group_extended" invisible="True"> + </page> + <page string="Categories" groups="base.group_extended"> + <field name="category_id" colspan="4" nolabel="1"/> + </page> + <page string="Notes"> + <field name="comment" colspan="4" nolabel="1"/> + </page> + </notebook> + </form> + </field> </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> From d684d1633320907eed6ea18c2767130ea97c1fa2 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Fri, 2 Mar 2012 10:44:39 +0530 Subject: [PATCH 063/141] [IMP] base/res_partner: change kanban view bzr revid: kjo@tinyerp.com-20120302051439-i3of3pdkp5gyraip --- openerp/addons/base/res/res_partner_view.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 26568ba87f8..0c3652ac152 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -526,13 +526,13 @@ <tr> <td class="oe_kanban_title1" align="left" valign="middle"> <h4><a type="edit"><field name="name"/></a></h4> - <field name="street"/> - <field name="street2"/><br/> - <field name="city"/> - <field name="zip"/><br/> - <field name="country_id"/><br/> - <field name="email"/><br/> - <field name="mobile"/><br/> + <i><div t-if="record.street.raw_value or record.street2.raw_value"><field name="street"/> + <field name="street2"/><br/></div> + <div t-if="record.city.raw_value or record.zip.raw_value"><field name="city"/> + <field name="zip"/><br/></div><div t-if="record.country_id.raw_value"> + <field name="country_id"/><br/></div><div t-if="record.email.raw_value"> + <field name="email"/><br/></div><div t-if="record.mobile.raw_value"> + <span>+91</span><field name="mobile"/><br/></div></i> </td> <td t-if="record.is_company.raw_value == 'contact'" valign="top" align="right"> <!--img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" class="oe_kanban_gravatar"/--> From 115f6cc326ba7451eb9c193d31d379f30e1f390b Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Fri, 2 Mar 2012 15:15:38 +0530 Subject: [PATCH 064/141] [IMP] base/res_partner: remove duplicate demo bzr revid: kjo@tinyerp.com-20120302094538-lajxsjdrg37ly0tw --- openerp/addons/base/res/res_partner_demo.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 348e9f0931a..cfc406698ad 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -592,25 +592,25 @@ </record> - <record id="res_partner_address_henrychard0" model="res.partner"> + <!--record id="res_partner_address_henrychard0" model="res.partner"> <field eval="'Paris'" name="city"/> <field eval="'Henry Chard'" name="name"/> <field name="country_id" ref="base.fr"/> - </record> + </record--> - <record id="res_partner_address_geoff0" model="res.partner"> + <!--record id="res_partner_address_geoff0" model="res.partner"> <field eval="'Brussels'" name="city"/> <field eval="'Geoff'" name="name"/> <field name="country_id" ref="base.be"/> - </record> + </record--> - <record id="res_partner_address_rogerpecker0" model="res.partner"> + <!--record id="res_partner_address_rogerpecker0" model="res.partner"> <field eval="'Kainuu'" name="city"/> <field eval="'Roger Pecker'" name="name"/> <field name="country_id" ref="base.fi"/> - </record> + </record--> <record id="res_partner_address_0" model="res.partner"> From 68c5ef4a0b6c75498f0dbfca87161425fee44c65 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Fri, 2 Mar 2012 16:30:21 +0530 Subject: [PATCH 065/141] [IMP] base/res_partner: address filed add in res_partner bzr revid: kjo@tinyerp.com-20120302110021-waa5p82e5tq27qpm --- openerp/addons/base/res/res_partner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 2ec9d3707e3..2ce5e92e541 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -136,6 +136,7 @@ class res_partner(osv.osv): 'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'), 'website': fields.char('Website',size=64, help="Website of Partner."), 'comment': fields.text('Notes'), + 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # it should remove in vesion 7 but for now it use for backward compatibility 'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories'), 'events': fields.one2many('res.partner.event', 'partner_id', 'Events'), 'credit_limit': fields.float(string='Credit Limit'), From efdf616e096963371c65c0d30dd4f39ddfd5d36b Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Fri, 2 Mar 2012 16:35:17 +0530 Subject: [PATCH 066/141] [IMP] base/res : take the defult photo image on create time bzr revid: sbh@tinyerp.com-20120302110517-1ufjptji4rv9kxwr --- openerp/addons/base/res/res_partner.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 2ce5e92e541..46f68fe3013 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -263,6 +263,9 @@ class res_partner(osv.osv): return super(res_partner,self).write(cr, uid, ids, vals, context=context) def create(self, cr, uid, vals, context=None): + # temo get the defulat photo image ,it will remove + if 'photo' not in vals: + vals['photo'] =self._get_photo(cr,uid,vals.get('is_company'),context) if vals.get('parent_id'): 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')) From 563478f7570d54121ed333c5129024f737e64521 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Fri, 2 Mar 2012 17:59:17 +0530 Subject: [PATCH 067/141] [IMP]base/res: Improve the name_get it display with company name bzr revid: sbh@tinyerp.com-20120302122917-72hz1mh0zyadlu62 --- openerp/addons/base/res/res_partner.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 46f68fe3013..0b74035ef11 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -300,8 +300,13 @@ class res_partner(osv.osv): rec_name = 'ref' else: rec_name = 'name' - - res = [(r['id'], r[rec_name]) for r in self.read(cr, uid, ids, [rec_name], context)] + reads = self.read(cr, uid, ids, [rec_name,'parent_id'], context=context) + res = [] + for record in reads: + name = record['name'] + if record['parent_id']: + name =name + '(' + record['parent_id'][1] +')' + res.append((record['id'], name)) return res def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): From abfcd28d04e1129f16c46e5b84408e774c192b03 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 5 Mar 2012 09:46:26 +0530 Subject: [PATCH 068/141] [IMP] base/res: improve the condtion of update address bzr revid: sbh@tinyerp.com-20120305041626-vhdsiz9iuovni10g --- openerp/addons/base/res/res_partner.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 0b74035ef11..a8c1439c893 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -264,9 +264,7 @@ class res_partner(osv.osv): def create(self, cr, uid, vals, context=None): # temo get the defulat photo image ,it will remove - if 'photo' not in vals: - vals['photo'] =self._get_photo(cr,uid,vals.get('is_company'),context) - if vals.get('parent_id'): + 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) From f7debac6de4b9de0af67ecd3e349ae034f21f0ef Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 5 Mar 2012 10:03:59 +0530 Subject: [PATCH 069/141] [IMP] base/res: Improve the name_search of parnter bzr revid: sbh@tinyerp.com-20120305043359-he9ycxosp08cyyml --- openerp/addons/base/res/res_partner.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index a8c1439c893..4d2842fc6be 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -313,6 +313,19 @@ class res_partner(osv.osv): # short-circuit ref match when possible if name and operator in ('=', 'ilike', '=ilike', 'like'): ids = self.search(cr, uid, [('ref', '=', name)] + args, limit=limit, context=context) + if not ids: + names=map(lambda i : i.strip(),name.split('(')) + for i in range(len(names)): + dom=[('name', operator, names[i])] + if i>0: + dom+=[('id','child_of',ids)] + ids = self.search(cr, uid, dom, limit=limit, context=context) + contact_ids = ids + while contact_ids: + contact_ids = self.search(cr, uid, [('parent_id', 'in', contact_ids)], limit=limit, context=context) + ids += contact_ids + if args: + ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) if ids: return self.name_get(cr, uid, ids, context) return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit) From 84ad85a25d5daee560846e25c74175f71447b55e Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 5 Mar 2012 12:04:33 +0530 Subject: [PATCH 070/141] [IMP]base/res: add the company_name in display address bzr revid: sbh@tinyerp.com-20120305063433-l0pkhcwyj3nq1o7b --- openerp/addons/base/res/res_partner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 4d2842fc6be..5341bb33aed 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -424,6 +424,7 @@ class res_partner(osv.osv): 'state_name': address.state_id and address.state_id.name or '', 'country_code': address.country_id and address.country_id.code or '', 'country_name': address.country_id and address.country_id.name or '', + 'company_name': address.parent_id and address.parent_id.name or '', } address_field = ['title', 'street', 'street2', 'zip', 'city'] for field in address_field : From ed26c94f4da796bb4d0fdcd33b2079726c678ff3 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 5 Mar 2012 12:23:51 +0530 Subject: [PATCH 071/141] [IMP]base/res: add the company_name in defualt address format bzr revid: sbh@tinyerp.com-20120305065351-x9eth3j6icxykh8v --- openerp/addons/base/res/res_country.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_country.py b/openerp/addons/base/res/res_country.py index f240784dc47..bcc30ea3136 100644 --- a/openerp/addons/base/res/res_country.py +++ b/openerp/addons/base/res/res_country.py @@ -46,7 +46,7 @@ addresses belonging to this country.\n\nYou can use the python-style string pate 'The code of the country must be unique !') ] _defaults = { - 'address_format': "%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s\n%(country_name)s", + 'address_format': "%(company_name)s\n%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s\n%(country_name)s", } def name_search(self, cr, user, name='', args=None, operator='ilike', From 104c6f296c8ea353910b50823f2db41e1c1a37fb Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP <jam@tinyerp.com> Date: Mon, 5 Mar 2012 12:56:18 +0530 Subject: [PATCH 072/141] [FIX] photo default_get based on contact type bzr revid: jam@tinyerp.com-20120305072618-k6jd0ro78dfs86lo --- openerp/addons/base/res/res_partner.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 5341bb33aed..4309583732c 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # -########################################################################onchange_address###### +############################################################################## import math @@ -171,6 +171,11 @@ class res_partner(osv.osv): return [context['category_id']] return [] + 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', 'res_company_logo.png'), 'rb') .read().encode('base64') + _defaults = { 'active': True, 'customer': True, @@ -179,15 +184,10 @@ class res_partner(osv.osv): 'color': 0, 'is_company': 'contact', 'type': 'default', - 'use_parent_address':True + 'use_parent_address':True, + 'photo': _get_photo, } - - 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') - else: - return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'res_company_logo.png'), 'rb') .read().encode('base64') - + def copy(self, cr, uid, id, default=None, context=None): if default is None: default = {} @@ -431,6 +431,12 @@ class res_partner(osv.osv): args[field] = getattr(address, field) or '' 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_comapny' in res: + res.update({'photo': self._get_photo(self, cr, uid, res.get('is_comapny', 'contact'), context)}) + return res res_partner() From 4bef7bd1aa22dbf6d7a570014d9bdb48c3aaafbd Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 5 Mar 2012 17:58:01 +0530 Subject: [PATCH 073/141] [Fix] base/res: Fix typo bzr revid: sbh@tinyerp.com-20120305122801-1tscam6gm7krharu --- openerp/addons/base/res/res_partner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 4309583732c..f47a0357149 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -434,8 +434,8 @@ class res_partner(osv.osv): def default_get(self, cr, uid, fields, context=None): res = super(res_partner, self).default_get( cr, uid, fields, context) - if 'is_comapny' in res: - res.update({'photo': self._get_photo(self, cr, uid, res.get('is_comapny', 'contact'), context)}) + if 'is_company' in res: + res.update({'photo': self._get_photo(self, cr, uid, res.get('is_company', 'contact'), context)}) return res res_partner() From e4ec8a61ae766c124a0e181a561e9186b5d31ec0 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP <jam@tinyerp.com> Date: Mon, 5 Mar 2012 18:34:52 +0530 Subject: [PATCH 074/141] [FIX] Fiexed the fucntion args bzr revid: jam@tinyerp.com-20120305130452-e5nthymr4re0wyix --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index f47a0357149..c74fb890515 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -435,7 +435,7 @@ class res_partner(osv.osv): 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(self, cr, uid, res.get('is_company', 'contact'), context)}) + res.update({'photo': self._get_photo(cr, uid, res.get('is_company', 'contact'), context)}) return res res_partner() From 686cea244198a404b8ae341f06e2a17b56d87127 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 6 Mar 2012 11:39:34 +0530 Subject: [PATCH 075/141] [ADD]base/res: improve display address method for printing contact type address bzr revid: sbh@tinyerp.com-20120306060934-kor7w3upsvpw39gi --- openerp/addons/base/res/res_partner.py | 13 ++++++++++--- openerp/report/report_sxw.py | 4 ++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index c74fb890515..99945b00ce2 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -405,7 +405,7 @@ class res_partner(osv.osv): ('name','=','main_partner')])[0], ).res_id - def _display_address(self, cr, uid, address, 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. @@ -415,10 +415,17 @@ class res_partner(osv.osv): if not country is specified) :rtype: string ''' + + if type: + if address.is_company=='partner' and address.child_ids: + for child_id in address.child_ids: + if child_id.type==type: + address=child_id + + # get the information that will be injected into the display format # get the address format address_format = address.country_id and address.country_id.address_format or \ - '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' - # get the information that will be injected into the display format + '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' args = { 'state_code': address.state_id and address.state_id.code or '', 'state_name': address.state_id and address.state_id.name or '', diff --git a/openerp/report/report_sxw.py b/openerp/report/report_sxw.py index 9764a64a3f6..f1eb981b32c 100644 --- a/openerp/report/report_sxw.py +++ b/openerp/report/report_sxw.py @@ -320,8 +320,8 @@ class rml_parse(object): res='%s %s'%(currency_obj.symbol, res) return res - def display_address(self, address_browse_record): - return self.pool.get('res.partner')._display_address(self.cr, self.uid, address_browse_record) + def display_address(self, address_browse_record,type=''): + return self.pool.get('res.partner')._display_address(self.cr, self.uid, address_browse_record,type) def repeatIn(self, lst, name,nodes_parent=False): ret_lst = [] From 0e031ccc8b4a88a184cb0cbeac93f583939dd1cb Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP <jam@tinyerp.com> Date: Tue, 6 Mar 2012 12:19:43 +0530 Subject: [PATCH 076/141] [REF/CLN] base-res partner quick refetor bzr revid: jam@tinyerp.com-20120306064943-hsazhry5un89j8it --- openerp/addons/base/res/res_partner.py | 188 ++++++++++++------------- 1 file changed, 91 insertions(+), 97 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 99945b00ce2..db13cb9681c 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -19,14 +19,15 @@ # ############################################################################## +import os import math - -from osv import fields,osv +from osv import osv +from osv import fields import tools -import pooler from tools.translate import _ import logging -import os +import pooler + class res_payterm(osv.osv): _description = 'Payment term' @@ -35,7 +36,7 @@ class res_payterm(osv.osv): _columns = { 'name': fields.char('Payment Term (short name)', size=64), } -res_payterm() + class res_partner_category(osv.osv): @@ -47,7 +48,7 @@ class res_partner_category(osv.osv): used to select the short version of the category name (without the direct parent), when set to ``'short'``. The default is - the long version.""" + the long version.""" if context is None: context = {} if context.get('partner_category_display') == 'short': @@ -100,7 +101,7 @@ class res_partner_category(osv.osv): _parent_store = True _parent_order = 'name' _order = 'parent_left' -res_partner_category() + class res_partner_title(osv.osv): _name = 'res.partner.title' @@ -110,12 +111,12 @@ class res_partner_title(osv.osv): 'domain': fields.selection([('partner','Partner'),('contact','Contact')], 'Domain', required=True, size=24) } _order = 'name' -res_partner_title() + def _lang_get(self, cr, uid, context=None): - obj = self.pool.get('res.lang') - ids = obj.search(cr, uid, [], context=context) - res = obj.read(cr, uid, ids, ['code', 'name'], context) + lang_pool = self.pool.get('res.lang') + ids = lang_pool.search(cr, uid, [], context=context) + res = lang_pool.read(cr, uid, ids, ['code', 'name'], context) return [(r['code'], r['name']) for r in res] + [('','')] @@ -136,7 +137,7 @@ class res_partner(osv.osv): 'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'), 'website': fields.char('Website',size=64, help="Website of Partner."), 'comment': fields.text('Notes'), - 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # it should remove in vesion 7 but for now it use for backward compatibility + 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # it should be remove in vesion 7 but for now it use for backward compatibility 'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories'), 'events': fields.one2many('res.partner.event', 'partner_id', 'Events'), 'credit_limit': fields.float(string='Credit Limit'), @@ -146,7 +147,9 @@ class res_partner(osv.osv): 'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."), 'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."), 'function': fields.char('Function', size=128), - 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), + 'type': fields.selection( [('default','Default'),('invoice','Invoice'), + ('delivery','Delivery'), ('contact','Contact'), + ('other','Other')],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'street': fields.char('Street', size=128), 'street2': fields.char('Street2', size=128), 'zip': fields.char('Zip', change_default=True, size=24), @@ -168,8 +171,8 @@ class res_partner(osv.osv): if context is None: context = {} if 'category_id' in context and context['category_id']: - return [context['category_id']] - return [] + return [context.get('category_id')] + return False def _get_photo(self, cr, uid, is_company, context=None): if is_company == 'contact': @@ -192,40 +195,42 @@ class res_partner(osv.osv): if default is None: default = {} name = self.read(cr, uid, [id], ['name'], context)[0]['name'] - default.update({'name': name+ _(' (copy)'), 'events':[]}) + default.update({'name': _('%s (copy)')%(name), 'events':[]}) return super(res_partner, self).copy(cr, uid, id, default, context) - def do_share(self, cr, uid, ids, *args): - return True - def onchange_type(self, cr, uid, ids, is_company, title, child_ids, photo,context=None): - photo=False + value = {'value': {'is_comapny': '', 'title': '','photo':''}} if is_company == 'contact': - return {'value': {'is_company': is_company, 'title': '','child_ids':[(5,)], 'photo': self._get_photo(cr, uid, is_company, context)}} + value['value'] = {'is_company': is_company, + 'title': '','child_ids':[(5,)], + 'photo': self._get_photo(cr, uid, is_company, context)} elif is_company == 'partner': - return {'value': {'is_company': is_company, 'title': '','parent_id':False, 'photo': self._get_photo(cr, uid, is_company, context)}} - return {'value': {'is_comapny': '', 'title': '','photo':''}} - - + value['value'] = {'is_company': is_company, + 'title': '', + 'parent_id':False, + 'photo': self._get_photo(cr, uid, is_company, context)} + return value + + def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): + vals = {'value':{}} if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) - return {'value': { - 'street': parent.street, - 'street2': parent.street2, - 'zip': parent.zip, - 'city': parent.city, - 'state_id': parent.state_id.id, - 'country_id': parent.country_id.id, - 'email': parent.email, - 'phone': parent.phone, - 'fax': parent.fax, - 'mobile': parent.mobile, - 'website': parent.website, - 'ref': parent.ref, - 'lang': parent.lang, - }} - return {} + vals['value'] = {'street': parent.street, + 'street2': parent.street2, + 'zip': parent.zip, + 'city': parent.city, + 'state_id': parent.state_id.id, + 'country_id': parent.country_id.id, + 'email': parent.email, + 'phone': parent.phone, + 'fax': parent.fax, + 'mobile': parent.mobile, + 'website': parent.website, + 'ref': parent.ref, + 'lang': parent.lang, + } + return vals def _check_ean_key(self, cr, uid, ids, context=None): for partner_o in pooler.get_pool(cr.dbname).get('res.partner').read(cr, uid, ids, ['ean13',]): @@ -242,51 +247,44 @@ class res_partner(osv.osv): if math.ceil(sum/10.0)*10-sum!=int(thisean[12]): return False return True - - + + def write(self, cr, uid, ids, vals, context=None): - # Update the all child and parent_id record + # Update the all child and parent_id record update_ids=False 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 + 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: + 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)# + 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) - return super(res_partner,self).write(cr, uid, ids, vals, context=context) - + return super(res_partner,self).write(cr, uid, ids, vals, context=context) + def create(self, cr, uid, vals, context=None): - # temo get the defulat photo image ,it will remove 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) - return super(res_partner,self).create(cr, uid, vals, context=context) - - + return super(res_partner,self).create(cr, uid, vals, context=context) + + def udpate_address(self,cr,uid,update_ids,parent_id,vals, context=None): - # Remove this method after testing all case -# if update_ids: -# osv.osv.write(self, cr, uid,update_ids, vals,context=context) 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 : + 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 + 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'])] def name_get(self, cr, uid, ids, context=None): @@ -301,9 +299,9 @@ class res_partner(osv.osv): reads = self.read(cr, uid, ids, [rec_name,'parent_id'], context=context) res = [] for record in reads: - name = record['name'] + name = record.get('name', '/') if record['parent_id']: - name =name + '(' + record['parent_id'][1] +')' + name = "%s ( %s )"%(name, record['parent_id'][1]) res.append((record['id'], name)) return res @@ -314,16 +312,16 @@ class res_partner(osv.osv): if name and operator in ('=', 'ilike', '=ilike', 'like'): ids = self.search(cr, uid, [('ref', '=', name)] + args, limit=limit, context=context) if not ids: - names=map(lambda i : i.strip(),name.split('(')) - for i in range(len(names)): - dom=[('name', operator, names[i])] - if i>0: - dom+=[('id','child_of',ids)] - ids = self.search(cr, uid, dom, limit=limit, context=context) + names = map(lambda x : x.strip(),name.split('(')) + for name in range(len(names)): + domain = [('name', operator, names[name])] + if name > 0: + domain.extend([('id', 'child_of', ids)]) + ids = self.search(cr, uid, domain, limit=limit, context=context) contact_ids = ids while contact_ids: contact_ids = self.search(cr, uid, [('parent_id', 'in', contact_ids)], limit=limit, context=context) - ids += contact_ids + ids.extend(contact_ids) if args: ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) if ids: @@ -342,7 +340,6 @@ class res_partner(osv.osv): self.pool.get('ir.cron').create(cr, uid, { 'name': 'Send Partner Emails', 'user_id': uid, -# 'nextcall': False, 'model': 'res.partner', 'function': '_email_send', 'args': repr([ids[:16], email_from, subject, body, on_error]) @@ -353,6 +350,7 @@ class res_partner(osv.osv): def address_get(self, cr, uid, ids, adr_pref=None): if adr_pref is None: adr_pref = ['default'] + result = {} # retrieve addresses from the partner itself and its children res = [] # need to fix the ids ,It get False value in list like ids[False] @@ -363,13 +361,11 @@ class res_partner(osv.osv): addr = dict(reversed(res)) # get the id of the (first) default address if there is one, # otherwise get the id of the first address in the list + default_address = False if res: default_address = addr.get('default', res[0][1]) - else: - default_address = False - result = {} - for a in adr_pref: - result[a] = addr.get(a, default_address) + for adr in adr_pref: + result[adr] = addr.get(adr, default_address) return result def gen_next_ref(self, cr, uid, ids): @@ -395,16 +391,16 @@ class res_partner(osv.osv): if (not context.get('category_id', False)): return False return _('Partners: ')+self.pool.get('res.partner.category').browse(cr, uid, context['category_id'], context).name + def main_partner(self, cr, uid): ''' Return the id of the main partner ''' model_data = self.pool.get('ir.model.data') - return model_data.browse( - cr, uid, - model_data.search(cr, uid, [('module','=','base'), - ('name','=','main_partner')])[0], - ).res_id - + return model_data.browse(cr, uid, + model_data.search(cr, uid, [('module','=','base'), + ('name','=','main_partner')])[0], + ).res_id + 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 @@ -415,17 +411,17 @@ class res_partner(osv.osv): if not country is specified) :rtype: string ''' - + if type: if address.is_company=='partner' and address.child_ids: for child_id in address.child_ids: if child_id.type==type: address=child_id - + # get the information that will be injected into the display format # get the address format address_format = address.country_id and address.country_id.address_format or \ - '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' + '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' args = { 'state_code': address.state_id and address.state_id.code or '', 'state_name': address.state_id and address.state_id.name or '', @@ -438,16 +434,15 @@ class res_partner(osv.osv): args[field] = getattr(address, field) or '' 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 -res_partner() -# Deprecated this feature +#This feature is Deprecated for backward Compability only class res_partner_address(osv.osv): _table = "res_partner" _name = 'res.partner.address' @@ -472,16 +467,15 @@ class res_partner_address(osv.osv): 'is_customer_add': fields.related('partner_id', 'customer', type='boolean', string='Customer'), 'is_supplier_add': fields.related('partner_id', 'supplier', type='boolean', string='Supplier'), 'active': fields.boolean('Active', help="Uncheck the active field to hide the contact."), -# 'company_id': fields.related('partner_id','company_id',type='many2one',relation='res.company',string='Company', store=True), 'company_id': fields.many2one('res.company', 'Company',select=1), 'color': fields.integer('Color Index'), } + def write(self, cr, uid, ids, vals, context=None): logging.getLogger('res.partner').warning("Deprecated, use of res.partner.address and used res.partner") - return super(res_partner_address,self).write(cr, uid, ids, vals, context=context) + return super(res_partner_address,self).write(cr, uid, ids, vals, context=context) + 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) -res_partner_address() - + return super(res_partner_address,self).create(cr, uid, vals, context=context) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 7203ee46c4a57b8c9d34fcf9b90bb97f1822c55c Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 7 Mar 2012 11:13:58 +0530 Subject: [PATCH 077/141] [IMP]base/res_partner: change res_partner_demo.xml bzr revid: kjo@tinyerp.com-20120307054358-cr9n2edu4yn8xhv2 --- openerp/addons/base/res/res_partner_demo.xml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index cfc406698ad..99ed8965073 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -211,14 +211,12 @@ <field name="name">Centrale d'achats BML</field> <field name="ean13">3020178572427</field> <field eval="15000.00" name="credit_limit"/> - <field name="parent_id" ref="res_partner_10"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> <field name="is_company">partner</field> </record> <record id="res_partner_15" model="res.partner"> <field name="name">Magazin BML 1</field> <field name="ean13">3020178570171</field> - <field name="parent_id" ref="res_partner_14"/> <field eval="1500.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> <field name="is_company">partner</field> @@ -691,14 +689,15 @@ </record> - <!--record id="res_partner_address_notsotinysarl1" model="res.partner.address"> + <record id="res_partner_address_notsotinysarl1" model="res.partner"> <field eval="'Antwerpen'" name="city"/> + <field eval="'NotSoTiny'" name="name"/> <field eval="'2000'" name="zip"/> - <field name="parent_id" ref="res_partner_notsotinysarl0"/> + <field name="parent_id" ref="res_partner_address_notsotinysarl0"/> <field name="country_id" ref="base.be"/> <field eval="'Antwerpsesteenweg 254'" name="street"/> <field eval="'invoice'" name="type"/> - </record--> + </record> <!--record id="res_partner_address_4" model="res.partner"> From 8a6af6fcec437a010d52c3647ba2b8bccfe879ca Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Wed, 7 Mar 2012 13:32:39 +0100 Subject: [PATCH 078/141] [FIX] base: fixed wrong field access (company.parent_id) bzr revid: rco@openerp.com-20120307123239-n8om385bfhpyh1ls --- openerp/addons/base/res/res_company.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 0da8825c9f1..3d3234ab551 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -80,7 +80,7 @@ class res_company(osv.osv): for company in self.browse(cr, uid, ids, context=context): result[company.id] = {}.fromkeys(field_names, False) if company.partner_id: - address_data = part_obj.address_get(cr, uid, [company.parent_id.id], adr_pref=['default']) + address_data = part_obj.address_get(cr, uid, [company.partner_id.id], adr_pref=['default']) if address_data['default']: address = part_obj.read(cr, uid, address_data['default'], field_names, context=context) for field in field_names: From aa7d348f645948be3a392f2b0da207f0677d3665 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP <jam@tinyerp.com> Date: Wed, 7 Mar 2012 18:50:50 +0530 Subject: [PATCH 079/141] [ADD] Added new compnay logo bzr revid: jam@tinyerp.com-20120307132050-wysqr94hwodayad1 --- openerp/addons/base/res/company_icon.png | Bin 0 -> 19790 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 openerp/addons/base/res/company_icon.png diff --git a/openerp/addons/base/res/company_icon.png b/openerp/addons/base/res/company_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..10de35e12021107d29b6810cb0acbe126f04d5f8 GIT binary patch literal 19790 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 literal 0 HcmV?d00001 From 45b67c9c81aeabed9f9afda8eb1c7ec20d237ed1 Mon Sep 17 00:00:00 2001 From: Jigar Amin - OpenERP <jam@tinyerp.com> Date: Wed, 7 Mar 2012 18:52:43 +0530 Subject: [PATCH 080/141] [IMP] new company image link and removed name_get space bzr revid: jam@tinyerp.com-20120307132243-blqm748i2iq1qv2l --- openerp/addons/base/res/res_partner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index db13cb9681c..de9af85caea 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -177,7 +177,7 @@ class res_partner(osv.osv): 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', 'res_company_logo.png'), 'rb') .read().encode('base64') + return open(os.path.join( tools.config['root_path'], 'addons', 'base', 'res', 'company_icon.png'), 'rb') .read().encode('base64') _defaults = { 'active': True, @@ -301,7 +301,7 @@ class res_partner(osv.osv): for record in reads: name = record.get('name', '/') if record['parent_id']: - name = "%s ( %s )"%(name, record['parent_id'][1]) + name = "%s (%s)"%(name, record['parent_id'][1]) res.append((record['id'], name)) return res From c53c5a9d9eef8919da5dcd131d03ae29b5074a18 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Wed, 7 Mar 2012 16:12:33 +0100 Subject: [PATCH 081/141] [IMP] base: fix typo and reindent code bzr revid: rco@openerp.com-20120307151233-tnlx0rgo6k13oko9 --- openerp/addons/base/res/res_partner.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index de9af85caea..f05d6641929 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -21,8 +21,7 @@ import os import math -from osv import osv -from osv import fields +from osv import osv, fields import tools from tools.translate import _ import logging @@ -137,7 +136,7 @@ class res_partner(osv.osv): 'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'), 'website': fields.char('Website',size=64, help="Website of Partner."), 'comment': fields.text('Notes'), - 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # it should be remove in vesion 7 but for now it use for backward compatibility + 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # should be removed in version 7, but kept until then for backward compatibility 'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories'), 'events': fields.one2many('res.partner.event', 'partner_id', 'Events'), 'credit_limit': fields.float(string='Credit Limit'), @@ -149,7 +148,8 @@ class res_partner(osv.osv): 'function': fields.char('Function', size=128), 'type': fields.selection( [('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), - ('other','Other')],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), + ('other','Other')], + 'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'street': fields.char('Street', size=128), 'street2': fields.char('Street2', size=128), 'zip': fields.char('Zip', change_default=True, size=24), From 91ff1b477a38f59b66659dd9a627e29ac649d98d Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Wed, 7 Mar 2012 16:19:42 +0100 Subject: [PATCH 082/141] [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 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.asustek.com</field> </record> <record id="res_partner_agrolait" model="res.partner"> <field name="name">Agrolait</field> <field eval="[(6, 0, [ref('base.res_partner_category_0')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.agrolait.com</field> </record> <record id="res_partner_c2c" model="res.partner"> <field name="name">Camptocamp</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field eval="[(6, 0, [ref('res_partner_category_10'), ref('res_partner_category_5')])]" name="category_id"/> <field name="supplier">1</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.camptocamp.com</field> </record> <record id="res_partner_sednacom" model="res.partner"> <field name="website">www.syleam.fr</field> <field name="name">Syleam</field> <field eval="[(6, 0, [ref('res_partner_category_5')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_thymbra" model="res.partner"> <field name="name">SmartBusiness</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> </record> <record id="res_partner_desertic_hispafuentes" model="res.partner"> <field name="name">Axelor</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> <field name="supplier">1</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.axelor.com/</field> </record> <record id="res_partner_tinyatwork" model="res.partner"> <field name="name">Tiny AT Work</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field eval="[(6, 0, [ref('res_partner_category_5'), ref('res_partner_category_10')])]" name="category_id"/> <field name="website">www.tinyatwork.com/</field> </record> <record id="res_partner_2" model="res.partner"> <field name="name">Bank Wealthy and sons</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.wealthyandsons.com/</field> </record> <record id="res_partner_3" model="res.partner"> <field name="name">China Export</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.chinaexport.com/</field> </record> <record id="res_partner_4" model="res.partner"> @@ -150,13 +150,13 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.distribpc.com/</field> </record> <record id="res_partner_5" model="res.partner"> <field name="name">Ecole de Commerce de Liege</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">www.eci-liege.info//</field> </record> <record id="res_partner_6" model="res.partner"> @@ -164,7 +164,7 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_maxtor" model="res.partner"> <field name="name">Maxtor</field> @@ -172,20 +172,20 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_seagate" model="res.partner"> <field name="name">Seagate</field> <field eval="5000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_8" model="res.partner"> <field name="website">http://mediapole.net</field> <field name="name">Mediapole SPRL</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_9" model="res.partner"> <field name="website">www.balmerinc.com</field> @@ -193,38 +193,38 @@ <field eval="12000.00" name="credit_limit"/> <field name="ref">or</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_10" model="res.partner"> <field name="name">Tecsas</field> <field name="ean13">3020170000003</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_11" model="res.partner"> <field name="name">Leclerc</field> <field eval="1200.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_14" model="res.partner"> <field name="name">Centrale d'achats BML</field> <field name="ean13">3020178572427</field> <field eval="15000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_15" model="res.partner"> <field name="name">Magazin BML 1</field> <field name="ean13">3020178570171</field> <field eval="1500.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_accent" model="res.partner"> <field name="name">Université de Liège</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">http://www.ulg.ac.be/</field> </record> @@ -235,7 +235,7 @@ <record id="res_partner_duboissprl0" model="res.partner"> <field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/> <field name="name">Dubois sprl</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">http://www.dubois.be/</field> </record> @@ -266,7 +266,7 @@ <record id="res_partner_theshelvehouse0" model="res.partner"> <field name="name">The Shelve House</field> <field eval="[(6,0,[ref('res_partner_category_retailers0')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> </record> <record id="res_partner_vickingdirect0" model="res.partner"> @@ -274,7 +274,7 @@ <field eval="[(6,0,[ref('res_partner_category_miscellaneoussuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field name="customer">0</field> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">vicking-direct.be</field> </record> @@ -283,14 +283,14 @@ <field eval="[(6,0,[ref('res_partner_category_woodsuppliers0')])]" name="category_id"/> <field name="supplier">1</field> <field eval="0" name="customer"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">woodywoodpecker.com</field> </record> <record id="res_partner_zerooneinc0" model="res.partner"> <field name="name">ZeroOne Inc</field> <field eval="[(6,0,[ref('res_partner_category_consumers0')])]" name="category_id"/> - <field name="is_company">partner</field> + <field name="is_company">1</field> <field name="website">http://www.zerooneinc.com/</field> </record> 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 @@ <field name="arch" type="xml"> <form string="Partners"> <group col="8" colspan="4"> - <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title,child_ids,photo)" required="1"/> - <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> - <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> + <group col="4" colspan="4"> + <field name="name" required="1"/> + <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', 'contact')]"/> + <newline/> + <field name="function" attrs="{'invisible': [('is_company', '=', True)]}"/> + <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}" + domain="[('is_company', '=', True)]" context="{'default_is_company': True}" + on_change="onchange_address(use_parent_address, parent_id)"/> </group> <group col="2"> - <field name="name" required="1"/> - <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)"/> + <field name="is_company" on_change="onchange_type(is_company)"/> </group> <group col="2"> <field name="customer"/> @@ -348,9 +351,10 @@ <page string="General"> <group colspan="2"> <separator string="Address" colspan="4"/> + <field name="type" string="Type" attrs="{'invisible': [('is_company','=', True)]}"/> <group colspan="2"> - <field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/> - <field name="use_parent_address" attrs="{'invisible': ['|', ('is_company','=', 'partner'), ('parent_id', '=', False)]}" on_change="onchange_address(use_parent_address, parent_id)"/> + <field name="use_parent_address" attrs="{'invisible': [('parent_id', '=', False)]}" + on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> <field name="street" colspan="4"/> @@ -370,18 +374,20 @@ <field name="website" widget="url" colspan="4"/> <field name="ref" groups="base.group_extended" colspan="4"/> </group> - <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> + <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> <field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1"> <form string="Partners"> <group col="8" colspan="4"> <group col="2"> - <field name="is_company" on_change="onchange_type(is_company, title,child_ids,photo)" required="1" domain="[('is_company', '=', 'partner')]"/> - <field name="function" attrs="{'invisible': [('is_company','=', 'partner')]}" colspan="2"/> + <field name="is_company" on_change="onchange_type(is_company)" domain="[('is_company', '=', 'partner')]"/> + <field name="function" attrs="{'invisible': [('is_company','=', True)]}" colspan="2"/> <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> </group> <group col="2"> <field name="name" required="1"/> - <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', 'partner')]}" domain="[('is_company', '=', 'partner')]" context="{'default_is_company': 'partner'}" on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> + <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}" + domain="[('is_company', '=', True)]" context="{'default_is_company': True}" + on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> </group> <group col="2"> <field name="customer"/> @@ -396,8 +402,8 @@ <group colspan="2"> <separator string="Address" colspan="4"/> <group colspan="2"> - <field name="type" string="Type" attrs="{'invisible': [('is_company','=', 'partner')]}"/> - <field name="use_parent_address" attrs="{'invisible': [('is_company','=', 'partner')]}" on_change="onchange_address(use_parent_address, parent_id)"/> + <field name="type" string="Type" attrs="{'invisible': [('is_company','=', True)]}"/> + <field name="use_parent_address" attrs="{'invisible': [('is_company','=', True)]}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> <field name="street" colspan="4"/> @@ -417,7 +423,7 @@ <field name="website" widget="url" colspan="4"/> <field name="ref" groups="base.group_extended" colspan="4"/> </group> - <group colspan="4" attrs="{'invisible': [('is_company','!=', 'partner')]}"> + <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> </group> </page> @@ -470,6 +476,9 @@ <field name="arch" type="xml"> <search string="Search Partner"> <group col='10' colspan='4'> + <filter string="Persons" name="type_person" icon="terp-personal" domain="[('is_company','=',0)]"/> + <filter string="Companies" name="type_company" icon="terp-partner" domain="[('is_company','=',1)]"/> + <separator orientation="vertical"/> <filter string="Customers" name="customer" icon="terp-personal" domain="[('customer','=',1)]" help="Customer Partners"/> <filter string="Suppliers" name="supplier" icon="terp-personal" domain="[('supplier','=',1)]" help="Supplier Partners"/> <separator orientation="vertical"/> @@ -534,7 +543,7 @@ <field name="email"/><br/></div><div t-if="record.mobile.raw_value"> <span>+91</span><field name="mobile"/><br/></div></i> </td> - <td t-if="record.is_company.raw_value == 'contact'" valign="top" align="right"> + <td t-if="record.is_company.raw_value" valign="top" align="right"> <!--img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" class="oe_kanban_gravatar"/--> </td> </tr> From 56eacf7630dfbead83721d5baea715aa1b29d500 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Wed, 7 Mar 2012 16:28:27 +0100 Subject: [PATCH 083/141] [IMP] base: small code improvement bzr revid: rco@openerp.com-20120307152827-d9mue5j8pw8owr36 --- openerp/addons/base/res/res_partner.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 10700c536f5..71657192ebe 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -167,11 +167,12 @@ class res_partner(osv.osv): 'company_id': fields.many2one('res.company', 'Company', select=1), 'color': fields.integer('Color Index'), } + def _default_category(self, cr, uid, context=None): if context is None: context = {} - if 'category_id' in context and context['category_id']: - return [context.get('category_id')] + if context.get('category_id'): + return [context['category_id']] return False def _get_photo(self, cr, uid, is_company, context=None): From c5fd97f47e6a6ee9ba71dadf7f6804f9c5db370c Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Wed, 7 Mar 2012 16:36:46 +0100 Subject: [PATCH 084/141] [IMP] base/res_partner: factor code using address fields bzr revid: rco@openerp.com-20120307153646-p4xzk2w8kppy222c --- openerp/addons/base/res/res_partner.py | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 71657192ebe..b74d79d2f33 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -119,6 +119,9 @@ def _lang_get(self, cr, uid, context=None): return [(r['code'], r['name']) for r in res] + [('','')] +ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id', + 'email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang') + class res_partner(osv.osv): _description='Partner' _name = "res.partner" @@ -213,23 +216,11 @@ class res_partner(osv.osv): return {'value': value, 'domain': domain} def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): - vals = {'value':{}} + vals = {'value': {}} if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) - vals['value'] = {'street': parent.street, - 'street2': parent.street2, - 'zip': parent.zip, - 'city': parent.city, - 'state_id': parent.state_id.id, - 'country_id': parent.country_id.id, - 'email': parent.email, - 'phone': parent.phone, - 'fax': parent.fax, - 'mobile': parent.mobile, - 'website': parent.website, - 'ref': parent.ref, - 'lang': parent.lang, - } + for key in ADDRESS_FIELDS: + vals['value'][key] = parent[key] return vals def _check_ean_key(self, cr, uid, ids, context=None): @@ -274,10 +265,7 @@ class res_partner(osv.osv): return super(res_partner,self).create(cr, uid, vals, context=context) 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: - addr_vals[key] = data + addr_vals = dict( [(key, vals[key]) for key in ADDRESS_FIELDS if vals.get(key)] ) return super(res_partner, self).write(cr, uid, ids, addr_vals, context) def name_get(self, cr, uid, ids, context=None): From d937bd734c689a611e01a4f25472c3819c123dd9 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Wed, 7 Mar 2012 16:57:04 +0100 Subject: [PATCH 085/141] [FIX] base/res_partner: add right photo upon creation of partners bzr revid: rco@openerp.com-20120307155704-s5bnfdc0y4awe27r --- openerp/addons/base/res/res_partner.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index b74d79d2f33..2a428f29fb4 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -194,7 +194,7 @@ class res_partner(osv.osv): 'is_company': False, 'type': 'default', 'use_parent_address': True, - 'photo': lambda self, cr, uid, context: self._get_photo(cr, uid, False, context) + 'photo': lambda self, cr, uid, context: self._get_photo(cr, uid, False, context), } def copy(self, cr, uid, id, default=None, context=None): @@ -259,9 +259,11 @@ class res_partner(osv.osv): def create(self, cr, uid, vals, context=None): if vals.get('parent_id') and vals.get('use_parent_address'): - update_ids = [vals['parent_id']] + \ + 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) + self.update_address(cr, uid, update_ids, vals) + if 'photo' not in vals: + vals['photo'] = self._get_photo(cr, uid, vals.get('is_company', False), context) return super(res_partner,self).create(cr, uid, vals, context=context) def update_address(self, cr, uid, ids, vals, context=None): From 5917566f494d07382b214d0033267402fa4a513d Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Wed, 7 Mar 2012 16:57:29 +0100 Subject: [PATCH 086/141] [IMP] base/res_partner: view of contacts bzr revid: rco@openerp.com-20120307155729-bczph0al7zuy6mo9 --- openerp/addons/base/res/res_partner_view.xml | 39 ++++++++++---------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index b5fc080330f..a7e8728da95 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -331,8 +331,8 @@ <field name="name" required="1"/> <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', 'contact')]"/> <newline/> - <field name="function" attrs="{'invisible': [('is_company', '=', True)]}"/> - <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}" + <field name="function" attrs="{'invisible': [('is_company', '=', True)]}" colspan="4"/> + <field name="parent_id" string="Company" colspan="4" attrs="{'invisible': [('is_company','=', True)]}" domain="[('is_company', '=', True)]" context="{'default_is_company': True}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> @@ -378,25 +378,26 @@ <field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1"> <form string="Partners"> <group col="8" colspan="4"> - <group col="2"> - <field name="is_company" on_change="onchange_type(is_company)" domain="[('is_company', '=', 'partner')]"/> - <field name="function" attrs="{'invisible': [('is_company','=', True)]}" colspan="2"/> - <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', is_company)]"/> + <group col="4" colspan="4"> + <field name="name" required="1"/> + <field name="title" size="0" groups="base.group_extended" domain="[('domain', '=', 'contact')]"/> + <newline/> + <field name="function" attrs="{'invisible': [('is_company', '=', True)]}" colspan="4"/> + <field name="parent_id" string="Company" colspan="4" attrs="{'invisible': [('is_company','=', True)]}" + domain="[('is_company', '=', True)]" context="{'default_is_company': True}" + on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> + </group> + <group col="2"> + <field name="is_company" on_change="onchange_type(is_company)"/> + </group> + <group col="2"> + <field name="customer"/> + <field name="supplier"/> + </group> + <group col="2"> + <field name="photo" widget='image' nolabel="1"/> </group> - <group col="2"> - <field name="name" required="1"/> - <field name="parent_id" string="Company" attrs="{'invisible': [('is_company','=', True)]}" - domain="[('is_company', '=', True)]" context="{'default_is_company': True}" - on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> </group> - <group col="2"> - <field name="customer"/> - <field name="supplier"/> - </group> - <group col="2"> - <field name="photo" widget='image' nolabel="1"/> - </group> - </group> <notebook colspan="4"> <page string="General"> <group colspan="2"> From 79787b73d26e0f3c30c9006aaebbb54262bc8df9 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 8 Mar 2012 10:17:45 +0100 Subject: [PATCH 087/141] [FIX] base/res_partner: small fix for backward compatibility bzr revid: rco@openerp.com-20120308091745-vtyit22743qx3wl6 --- openerp/addons/base/res/res_partner.py | 8 +++++--- openerp/osv/fields.py | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 2a428f29fb4..6550d97d824 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -159,6 +159,7 @@ class res_partner(osv.osv): 'city': fields.char('City', size=128), 'state_id': fields.many2one("res.country.state", 'Fed. State', domain="[('country_id','=',country_id)]"), 'country_id': fields.many2one('res.country', 'Country'), + 'country': fields.related('country_id', type='many2one', relation='res.country', string='Country'), # for backward compatibility 'email': fields.char('E-Mail', size=240), 'phone': fields.char('Phone', size=64), 'fax': fields.char('Fax', size=64), @@ -426,7 +427,8 @@ class res_partner_address(osv.osv): _name = 'res.partner.address' _order = 'type, name' _columns = { - 'partner_id': fields.many2one('res.partner', 'Partner Name', ondelete='set null', select=True, help="Keep empty for a private address, not related to partner."), + 'parent_id': fields.many2one('res.partner', 'Company', ondelete='set null', select=True), + 'partner_id': fields.related('parent_id', type='many2one', relation='res.partner', string='Partner'), # for backward compatibility 'type': fields.selection( [ ('default','Default'),('invoice','Invoice'), ('delivery','Delivery'), ('contact','Contact'), ('other','Other') ],'Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'function': fields.char('Function', size=128), 'title': fields.many2one('res.partner.title','Title'), @@ -450,11 +452,11 @@ class res_partner_address(osv.osv): } def write(self, cr, uid, ids, vals, context=None): - logging.getLogger('res.partner').warning("Deprecated, use of res.partner.address and used res.partner") + logging.getLogger('res.partner').warning("Deprecated use of res.partner.address") return super(res_partner_address,self).write(cr, uid, ids, vals, context=context) def create(self, cr, uid, vals, context=None): - logging.getLogger('res.partner').warning("Deprecated, use of res.partner.address and used res.partner") + logging.getLogger('res.partner').warning("Deprecated use of res.partner.address") 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/osv/fields.py b/openerp/osv/fields.py index 7c1761a4aec..922fd5f4074 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -1155,17 +1155,17 @@ class related(function): def _fnct_search(self, tobj, cr, uid, obj=None, name=None, domain=None, context=None): self._field_get2(cr, uid, obj, context) i = len(self._arg)-1 - sarg = name + sarg = name if isinstance(name, (list, tuple)) else [name] while i>0: - if type(sarg) in [type([]), type( (1,) )]: - where = [(self._arg[i], 'in', sarg)] - else: - where = [(self._arg[i], '=', sarg)] if domain: where = map(lambda x: (self._arg[i],x[1], x[2]), domain) domain = [] + else: + where = [(self._arg[i], 'in', sarg)] sarg = obj.pool.get(self._relations[i]['object']).search(cr, uid, where, context=context) i -= 1 + if domain: # happens if len(self._arg) == 1 + return map(lambda x: (self._arg[0],x[1], x[2]), domain) return [(self._arg[0], 'in', sarg)] def _fnct_write(self,obj,cr, uid, ids, field_name, values, args, context=None): From 566c0239c021beea9010002bddebd2c03160dfc6 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 8 Mar 2012 13:27:12 +0100 Subject: [PATCH 088/141] [IMP] base/res_partner: improve management of 'use_parent_address' bzr revid: rco@openerp.com-20120308122712-g47fr2j328x51rsj --- openerp/addons/base/res/res_partner.py | 53 +++++++++++++------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 6550d97d824..a2f3402d584 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -118,9 +118,12 @@ def _lang_get(self, cr, uid, context=None): res = lang_pool.read(cr, uid, ids, ['code', 'name'], context) return [(r['code'], r['name']) for r in res] + [('','')] +def value_or_id(val): + """ return val or val.id if val is a browse record """ + return val if isinstance(val, (bool, int, long, float, basestring)) else val.id -ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id', - 'email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang') +POSTAL_ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id') +ADDRESS_FIELDS = POSTAL_ADDRESS_FIELDS + ('email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang') class res_partner(osv.osv): _description='Partner' @@ -217,12 +220,10 @@ class res_partner(osv.osv): return {'value': value, 'domain': domain} def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): - vals = {'value': {}} if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) - for key in ADDRESS_FIELDS: - vals['value'][key] = parent[key] - return vals + return {'value': dict((key, value_or_id(parent[key])) for key in ADDRESS_FIELDS)} + return {} def _check_ean_key(self, cr, uid, ids, context=None): for partner_o in pooler.get_pool(cr.dbname).get('res.partner').read(cr, uid, ids, ['ean13',]): @@ -243,33 +244,33 @@ class res_partner(osv.osv): # _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] def write(self, cr, uid, ids, vals, context=None): - # Update all children and parent_id records if isinstance(ids, (int, long)): ids = [ids] - 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) + res = super(res_partner,self).write(cr, uid, ids, vals, context=context) + self.update_address(cr, uid, ids, context) + return res def create(self, cr, uid, vals, context=None): - if vals.get('parent_id') and vals.get('use_parent_address'): - 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) if 'photo' not in vals: vals['photo'] = self._get_photo(cr, uid, vals.get('is_company', False), context) - return super(res_partner,self).create(cr, uid, vals, context=context) + id = super(res_partner,self).create(cr, uid, vals, context=context) + self.update_address(cr, uid, [id], context) + return id - def update_address(self, cr, uid, ids, vals, context=None): - addr_vals = dict( [(key, vals[key]) for key in ADDRESS_FIELDS if vals.get(key)] ) - return super(res_partner, self).write(cr, uid, ids, addr_vals, context) + def update_address(self, cr, uid, ids, context=None): + """ update parent and children after having changed partner ids """ + for partner in self.browse(cr, uid, ids, context): + update_ids = [] + if partner.is_company: + children_domain = [('parent_id', '=', partner.id), ('use_parent_address','=',True)] + update_ids = self.search(cr, uid, children_domain, context=context) + elif partner.parent_id and partner.use_parent_address: + parent_and_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address','=',True)] + update_ids = [partner.parent_id.id] + self.search(cr, uid, parent_and_siblings, context=context) + if update_ids: + vals = dict((key, value_or_id(partner[key])) for key in POSTAL_ADDRESS_FIELDS if partner[key]) + super(res_partner, self).write(cr, uid, ids, vals, context) + return True def name_get(self, cr, uid, ids, context=None): if context is None: From 416dc7848c59f73278a9d1010f4bb23e9d897855 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Thu, 8 Mar 2012 15:03:42 +0100 Subject: [PATCH 089/141] [FIX] base/res_partner: fix last change (issue: all contacts updated?) bzr revid: rco@openerp.com-20120308140342-fw0unworetlj3mgm --- openerp/addons/base/res/res_partner.py | 46 +++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index a2f3402d584..bbd5320a9b9 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -244,33 +244,33 @@ class res_partner(osv.osv): # _constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])] def write(self, cr, uid, ids, vals, context=None): + # Update parent and siblings or children records if isinstance(ids, (int, long)): ids = [ids] - res = super(res_partner,self).write(cr, uid, ids, vals, context=context) - self.update_address(cr, uid, ids, context) - return res - - def create(self, cr, uid, vals, context=None): - if 'photo' not in vals: - vals['photo'] = self._get_photo(cr, uid, vals.get('is_company', False), context) - id = super(res_partner,self).create(cr, uid, vals, context=context) - self.update_address(cr, uid, [id], context) - return id - - def update_address(self, cr, uid, ids, context=None): - """ update parent and children after having changed partner ids """ - for partner in self.browse(cr, uid, ids, context): + for partner in self.browse(cr, uid, ids, context=context): update_ids = [] if partner.is_company: - children_domain = [('parent_id', '=', partner.id), ('use_parent_address','=',True)] - update_ids = self.search(cr, uid, children_domain, context=context) - elif partner.parent_id and partner.use_parent_address: - parent_and_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address','=',True)] - update_ids = [partner.parent_id.id] + self.search(cr, uid, parent_and_siblings, context=context) - if update_ids: - vals = dict((key, value_or_id(partner[key])) for key in POSTAL_ADDRESS_FIELDS if partner[key]) - super(res_partner, self).write(cr, uid, ids, vals, context) - return True + domain_children = [('parent_id', '=', partner.id), ('use_parent_address', '=', True)] + update_ids = self.search(cr, uid, domain_children, context=context) + elif partner.parent_id: + domain_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address', '=', True)] + update_ids = [partner.parent_id.id] + self.search(cr, uid, domain_siblings, context=context) + 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): + # Update parent and siblings records + if vals.get('parent_id') and vals.get('use_parent_address'): + domain_siblings = [('parent_id', '=', vals['parent_id']), ('use_parent_address', '=', True)] + update_ids = [vals['parent_id']] + self.search(cr, uid, domain_siblings, context=context) + self.update_address(cr, uid, update_ids, vals, context) + if 'photo' not in vals: + vals['photo'] = self._get_photo(cr, uid, vals.get('is_company', False), context) + return super(res_partner,self).create(cr, uid, vals, context=context) + + def update_address(self, cr, uid, ids, vals, context=None): + addr_vals = dict((key, vals[key]) for key in POSTAL_ADDRESS_FIELDS if vals.get(key)) + 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: From ae33341a6403d318b8bef9c7a4c2e683247f2853 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Fri, 9 Mar 2012 11:57:41 +0530 Subject: [PATCH 090/141] [ Fix]: fix the demo data bzr revid: kjo@tinyerp.com-20120309062741-qul17k0x4hcxd6g5 --- openerp/addons/base/res/res_partner_demo.xml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index e4f43cb0c06..70d4b1fcc13 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -239,15 +239,17 @@ <field name="website">http://www.dubois.be/</field> </record> - <!--record id="res_partner_ericdubois0" model="res.partner"> + <record id="res_partner_ericdubois0" model="res.partner"> <field name="name">Eric Dubois</field> + <field name="is_company">1</field> <field name="address" eval="[]"/> </record> <record id="res_partner_fabiendupont0" model="res.partner"> <field name="name">Fabien Dupont</field> + <field name="is_company">1</field> <field name="address" eval="[]"/> - </record--> + </record> <record id="res_partner_lucievonck0" model="res.partner"> <field name="name">Lucie Vonck</field> @@ -667,21 +669,21 @@ </record> - <record id="res_partner_fabiendupont0" model="res.partner"> + <record id="res_partner_address_fabiendupont0" model="res.partner"> <field eval="'Namur'" name="city"/> <field eval="'Fabien Dupont'" name="name"/> <field eval="'5000'" name="zip"/> - <!--field name="parent_id" ref="res_partner_fabiendupont0"/--> + <field name="parent_id" ref="res_partner_fabiendupont0"/> <field name="country_id" ref="base.be"/> <field eval="'Blvd Kennedy, 13'" name="street"/> </record> - <record id="res_partner_ericdubois0" model="res.partner"> + <record id="res_partner_address_ericdubois0" model="res.partner"> <field eval="'Mons'" name="city"/> <field eval="'Eric Dubois'" name="name"/> <field eval="'7000'" name="zip"/> - <!--field name="parent_id" ref="res_partner_ericdubois0"/--> + <field name="parent_id" ref="res_partner_ericdubois0"/> <field name="country_id" ref="base.be"/> <field eval="'Chaussée de Binche, 27'" name="street"/> <field eval="'e.dubois@gmail.com'" name="email"/> From a3a2c698ab727ecde4e7cb7f55dde82ec616cc16 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Fri, 9 Mar 2012 12:24:22 +0530 Subject: [PATCH 091/141] [Fix]base/res: res.parnter.address inherit compatiblity and open the address view bzr revid: sbh@tinyerp.com-20120309065422-2wz5ch29x9qs8lf3 --- openerp/addons/base/res/res_partner_view.xml | 8 ++++---- openerp/osv/orm.py | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index a7e8728da95..07e70044934 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -20,7 +20,7 @@ ===================== --> - <!--record id="view_res_partner_address_filter" model="ir.ui.view"> + <record id="view_res_partner_address_filter" model="ir.ui.view"> <field name="name">res.partner.address.select</field> <field name="model">res.partner.address</field> <field name="type">search</field> @@ -200,14 +200,14 @@ </record> <menuitem action="action_partner_address_form" id="menu_partner_address_form" groups="base.group_extended" name="Contacts" - parent="base.menu_address_book" sequence="30"/--> + parent="base.menu_address_book" sequence="30"/> <!-- ========================================= the short form used in the partner form ========================================= --> - <!--record id="view_partner_address_form2" model="ir.ui.view"> + <record id="view_partner_address_form2" model="ir.ui.view"> <field name="name">res.partner.address.form2</field> <field name="model">res.partner.address</field> <field name="type">form</field> @@ -234,7 +234,7 @@ <field name="email" widget="email"/> </form> </field> - </record--> + </record> <!-- ======================= diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 8901cf5ed87..680eb034a50 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -866,7 +866,10 @@ class BaseModel(object): parent_names = [parent_names] else: name = cls._name - + # for res.parnter.address compatiblity ,should be remove in v7 + if 'res.partner.address' in parent_names: + parent_names.pop(parent_names.index('res.partner.address')) + parent_names.append('res.partner') if not name: raise TypeError('_name is mandatory in case of multiple inheritance') From 900db58e89f70dd3825ea3fc6fad6a833b6488cb Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Fri, 9 Mar 2012 12:32:36 +0530 Subject: [PATCH 092/141] [Fix]base/res :add the country field in partner view bzr revid: sbh@tinyerp.com-20120309070236-urryy1b6zn1s82k8 --- openerp/addons/base/res/res_partner_view.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 07e70044934..372e0f28137 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -316,6 +316,7 @@ <field name="email"/> <field name="user_id" invisible="1"/> <field name="is_company" invisible="1"/> + <field name="country" invisible="1"/> </tree> </field> </record> From 0844aa7d1068a789f11e721ee02e803ff85f60db Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Fri, 9 Mar 2012 08:53:41 +0100 Subject: [PATCH 093/141] [FIX] base/res_partner: use 'country_id' instead of 'country' bzr revid: rco@openerp.com-20120309075341-vx2nxs3tgnh2354r --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 372e0f28137..0f7bd2e09e9 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -316,7 +316,7 @@ <field name="email"/> <field name="user_id" invisible="1"/> <field name="is_company" invisible="1"/> - <field name="country" invisible="1"/> + <field name="country_id" invisible="1"/> </tree> </field> </record> From 0e1b0b16fa7315fcc1ab521d43107f7bdb8795eb Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Fri, 9 Mar 2012 08:55:16 +0100 Subject: [PATCH 094/141] [IMP] undo rev. 4158 for osv/fields.py, fix it in another branch bzr revid: rco@openerp.com-20120309075516-8g1yke3onu3pjjba --- openerp/osv/fields.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 922fd5f4074..6ab3078e9ac 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -1154,18 +1154,22 @@ class related(function): def _fnct_search(self, tobj, cr, uid, obj=None, name=None, domain=None, context=None): self._field_get2(cr, uid, obj, context) + + models = map(lambda r: r['object'], self._relations) + model_fields = zip(models, self._arg) + i = len(self._arg)-1 - sarg = name if isinstance(name, (list, tuple)) else [name] + sarg = name while i>0: + if type(sarg) in [type([]), type( (1,) )]: + where = [(self._arg[i], 'in', sarg)] + else: + where = [(self._arg[i], '=', sarg)] if domain: where = map(lambda x: (self._arg[i],x[1], x[2]), domain) domain = [] - else: - where = [(self._arg[i], 'in', sarg)] sarg = obj.pool.get(self._relations[i]['object']).search(cr, uid, where, context=context) i -= 1 - if domain: # happens if len(self._arg) == 1 - return map(lambda x: (self._arg[0],x[1], x[2]), domain) return [(self._arg[0], 'in', sarg)] def _fnct_write(self,obj,cr, uid, ids, field_name, values, args, context=None): From 32993a254e4394abd302dedc5866e66ba9b9c870 Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Fri, 9 Mar 2012 10:34:07 +0100 Subject: [PATCH 095/141] [IMP] base/res_partner: add parent_id in kanban view bzr revid: rco@openerp.com-20120309093407-m5674s9kz86tug2w --- openerp/addons/base/res/res_partner_view.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 0f7bd2e09e9..6194f9001c5 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -503,7 +503,7 @@ <!-- Partner Kanban View --> <record model="ir.ui.view" id="res_partner_kanban_view"> - <field name="name">RES - PARTNER KANBAN</field> + <field name="name">res.partner.kanban</field> <field name="model">res.partner</field> <field name="type">kanban</field> <field name="arch" type="xml"> @@ -536,7 +536,9 @@ <table class="oe_kanban_table"> <tr> <td class="oe_kanban_title1" align="left" valign="middle"> - <h4><a type="edit"><field name="name"/></a></h4> + <h4><a type="edit"><field name="name"/></a> + <div t-if="record.parent_id.raw_value"><field name="parent_id"/></div> + </h4> <i><div t-if="record.street.raw_value or record.street2.raw_value"><field name="street"/> <field name="street2"/><br/></div> <div t-if="record.city.raw_value or record.zip.raw_value"><field name="city"/> From 3904353be7a2c6f20c6fd04940b12383fa3672ba Mon Sep 17 00:00:00 2001 From: Raphael Collet <rco@openerp.com> Date: Fri, 9 Mar 2012 10:38:22 +0100 Subject: [PATCH 096/141] [FIX] osv/fields: undo change bzr revid: rco@openerp.com-20120309093822-s3tktmveggr5d7yh --- openerp/osv/fields.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 6ab3078e9ac..7c1761a4aec 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -1154,10 +1154,6 @@ class related(function): def _fnct_search(self, tobj, cr, uid, obj=None, name=None, domain=None, context=None): self._field_get2(cr, uid, obj, context) - - models = map(lambda r: r['object'], self._relations) - model_fields = zip(models, self._arg) - i = len(self._arg)-1 sarg = name while i>0: From b2afe9c0bf4c56e47e67eb2250945030c6002b6f Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 12 Mar 2012 11:27:28 +0530 Subject: [PATCH 097/141] [Fix]base/res :Add country field in tree view bzr revid: sbh@tinyerp.com-20120312055728-s6qnj74iifa2qddr --- openerp/addons/base/res/res_partner_view.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 6194f9001c5..eb3bcaef863 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -316,6 +316,7 @@ <field name="email"/> <field name="user_id" invisible="1"/> <field name="is_company" invisible="1"/> + <field name="country" invisible="1"/> <field name="country_id" invisible="1"/> </tree> </field> From dff99a53aa28ce64e46eceed44630b950f4cc4a0 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 12 Mar 2012 11:59:42 +0530 Subject: [PATCH 098/141] [IMP]base/res :remove duplicate menu of contact bzr revid: sbh@tinyerp.com-20120312062942-11ht6lavb82xxz34 --- openerp/addons/base/res/res_partner_view.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index eb3bcaef863..a9dee26d99c 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -198,9 +198,9 @@ <field name="view_id" ref="view_partner_address_form1"/> <field name="act_window_id" ref="action_partner_address_form"/> </record> - <menuitem action="action_partner_address_form" id="menu_partner_address_form" + <!--menuitem action="action_partner_address_form" id="menu_partner_address_form" groups="base.group_extended" name="Contacts" - parent="base.menu_address_book" sequence="30"/> + parent="base.menu_address_book" sequence="30"/--> <!-- ========================================= From c6e04a4739844597715df9b0f4c1e563ecd1fa9f Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Mon, 12 Mar 2012 14:16:36 +0530 Subject: [PATCH 099/141] [IMP]base/res_company and res_partner: add photo field and readonly address bzr revid: kjo@tinyerp.com-20120312084636-ew5j4arua8hjdpih --- openerp/addons/base/base_update.xml | 2 +- openerp/addons/base/res/res_company.py | 3 +- openerp/addons/base/res/res_partner_demo.xml | 9 +++- openerp/addons/base/res/res_partner_view.xml | 52 ++++++++++---------- 4 files changed, 37 insertions(+), 29 deletions(-) diff --git a/openerp/addons/base/base_update.xml b/openerp/addons/base/base_update.xml index c5594f76e22..e52bf54545c 100644 --- a/openerp/addons/base/base_update.xml +++ b/openerp/addons/base/base_update.xml @@ -225,7 +225,7 @@ <field name="parent_id" groups="base.group_multi_company"/> </group> <group colspan="2" col="2"> - <field name="logo" nolabel="1" widget="image"/> + <field name="photo" nolabel="1" widget="image"/> </group> </group> <notebook colspan="4"> diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 3d3234ab551..0bfd1ba2c99 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -143,6 +143,7 @@ class res_company(osv.osv): 'vat': fields.related('partner_id', 'vat', string="Tax ID", type="char", size=32), 'company_registry': fields.char('Company Registry', size=64), 'paper_format': fields.selection([('a4', 'A4'), ('us_letter', 'US Letter')], "Paper Format", required=True), + 'photo': fields.related('partner_id', 'photo', string="Photo", type="binary"), } _sql_constraints = [ ('name_uniq', 'unique (name)', 'The company name must be unique !') @@ -227,7 +228,7 @@ class res_company(osv.osv): self.cache_restart(cr) return super(res_company, self).create(cr, uid, vals, context=context) obj_partner = self.pool.get('res.partner') - partner_id = obj_partner.create(cr, uid, {'name': vals['name']}, context=context) + partner_id = obj_partner.create(cr, uid, {'name': vals['name'],'is_company':1}, context=context) vals.update({'partner_id': partner_id}) self.cache_restart(cr) company_id = super(res_company, self).create(cr, uid, vals, context=context) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 70d4b1fcc13..4a6e5da754d 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -104,10 +104,16 @@ </record> <record id="res_partner_c2c" model="res.partner"> <field name="name">Camptocamp</field> - <field name="is_company">1</field> <field eval="[(6, 0, [ref('res_partner_category_10'), ref('res_partner_category_5')])]" name="category_id"/> <field name="supplier">1</field> <field name="is_company">1</field> + <field name="city">Le Bourget du Lac</field> + <field name="zip">73377</field> + <field name="phone">+41 21 619 10 04 </field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="street">Savoie Technolac, BP 352</field> + <field name="type">default</field> + <field name="email">openerp@camptocamp.com</field> <field name="website">www.camptocamp.com</field> </record> <record id="res_partner_sednacom" model="res.partner"> @@ -539,6 +545,7 @@ <field model="res.country" name="country_id" search="[('name','=','Switzerland')]"/> <field name="street">PSE-A, EPFL </field> <field name="type">default</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_c2c"/> </record> <record id="res_partner_address_seagate" model="res.partner"> diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 6194f9001c5..191e9eea57a 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -358,22 +358,22 @@ on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> - <field name="street" colspan="4"/> - <field name="street2" colspan="4"/> - <field name="zip"/> - <field name="city"/> - <field name="country_id"/> - <field name="state_id"/> + <field name="street" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="street2" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="zip" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="city" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="country_id" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="state_id" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> </group> <group colspan="2"> <separator string="Communication" colspan="4"/> - <field name="lang" colspan="4"/> - <field name="phone" colspan="4"/> - <field name="mobile" colspan="4"/> - <field name="fax" colspan="4"/> - <field name="email" widget="email" colspan="4"/> - <field name="website" widget="url" colspan="4"/> - <field name="ref" groups="base.group_extended" colspan="4"/> + <field name="lang" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="phone" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="mobile" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="fax" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="email" widget="email" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="website" widget="url" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="ref" groups="base.group_extended" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> <field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1"> @@ -408,22 +408,22 @@ <field name="use_parent_address" attrs="{'invisible': [('is_company','=', True)]}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> - <field name="street" colspan="4"/> - <field name="street2" colspan="4"/> - <field name="zip"/> - <field name="city"/> - <field name="country_id"/> - <field name="state_id"/> + <field name="street" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="street2" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="zip" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="city" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="country_id" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="state_id" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> </group> <group colspan="2"> <separator string="Communication" colspan="4"/> - <field name="lang" colspan="4"/> - <field name="phone" colspan="4"/> - <field name="mobile" colspan="4"/> - <field name="fax" colspan="4"/> - <field name="email" widget="email" colspan="4"/> - <field name="website" widget="url" colspan="4"/> - <field name="ref" groups="base.group_extended" colspan="4"/> + <field name="lang" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="phone" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="mobile" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="fax" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="email" widget="email" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="website" widget="url" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="ref" groups="base.group_extended" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> From 20aa7d6fe8003b27343bd5e61978336aa87a89a9 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 12 Mar 2012 15:03:32 +0530 Subject: [PATCH 100/141] [Fix]: Improve display adress for print company name bzr revid: sbh@tinyerp.com-20120312093332-oucqpsrcn33o82me --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index bbd5320a9b9..a6b93b865a4 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -406,7 +406,7 @@ class res_partner(osv.osv): # get the information that will be injected into the display format # get the address format address_format = address.country_id and address.country_id.address_format or \ - '%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' + '%(company_name)s\n%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' args = { 'state_code': address.state_id and address.state_id.code or '', 'state_name': address.state_id and address.state_id.name or '', From d8f4e757332c93ff425418495bc84f18849d0216 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Mon, 12 Mar 2012 15:14:29 +0530 Subject: [PATCH 101/141] [IMP]base/res_partner: change demo data bzr revid: kjo@tinyerp.com-20120312094429-fpmceeizvbn8eraa --- openerp/addons/base/res/res_partner_demo.xml | 314 +++++++++++-------- 1 file changed, 176 insertions(+), 138 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 4a6e5da754d..fd4453c63f6 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -94,12 +94,27 @@ <field name="supplier">1</field> <field eval="0" name="customer"/> <field name="is_company">1</field> + <field name="city">Taiwan</field> + <field name="name">Tang</field> + <field name="zip">23410</field> + <field model="res.country" name="country_id" search="[('name','=','Taiwan')]"/> + <field name="street">31 Hong Kong street</field> + <field name="email">info@asustek.com</field> + <field name="phone">+ 1 64 61 04 01</field> <field name="website">www.asustek.com</field> </record> <record id="res_partner_agrolait" model="res.partner"> <field name="name">Agrolait</field> <field eval="[(6, 0, [ref('base.res_partner_category_0')])]" name="category_id"/> <field name="is_company">1</field> + <field name="city">Wavre</field> + <field name="zip">5478</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">69 rue de Chimay</field> + <field name="type">default</field> + <field name="email">s.l@agrolait.be</field> + <field name="phone">003281588558</field> + <field name="title" ref="base.res_partner_title_madam"/> <field name="website">www.agrolait.com</field> </record> <record id="res_partner_c2c" model="res.partner"> @@ -120,11 +135,26 @@ <field name="website">www.syleam.fr</field> <field name="name">Syleam</field> <field eval="[(6, 0, [ref('res_partner_category_5')])]" name="category_id"/> + <field name="city">Alencon</field> + <field name="zip">61000</field> + <field name="email">contact@syleam.fr</field> + <field name="street">1 place de l'Église</field> + <field name="phone">+33 (0) 2 33 31 22 10</field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="type">default</field> <field name="is_company">1</field> </record> <record id="res_partner_thymbra" model="res.partner"> <field name="name">SmartBusiness</field> <field name="is_company">1</field> + <field name="city">Buenos Aires</field> + <field name="zip">1659</field> + <field name="email">contact@smartbusiness.ar</field> + <field name="street">Palermo, Capital Federal </field> + <field name="street2">C1414CMS Capital Federal </field> + <field name="phone">(5411) 4773-9666 </field> + <field model="res.country" name="country_id" search="[('name','=','Argentina')]"/> + <field name="type">default</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> </record> <record id="res_partner_desertic_hispafuentes" model="res.partner"> @@ -132,23 +162,51 @@ <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> <field name="supplier">1</field> <field name="is_company">1</field> + <field name="city">Champs sur Marne</field> + <field name="zip">77420</field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="email">info@axelor.com</field> + <field name="phone">+33 1 64 61 04 01</field> + <field name="street">12 rue Albert Einstein</field> + <field name="type">default</field> <field name="website">www.axelor.com/</field> </record> <record id="res_partner_tinyatwork" model="res.partner"> <field name="name">Tiny AT Work</field> <field name="is_company">1</field> <field eval="[(6, 0, [ref('res_partner_category_5'), ref('res_partner_category_10')])]" name="category_id"/> + <field name="city">Boston</field> + <field name="zip">5501</field> + <field name="email">info@tinyatwork.com</field> + <field name="phone">+33 (0) 2 33 31 22 10</field> + <field model="res.country" name="country_id" search="[('name','=','United States')]"/> + <field name="street">One Lincoln Street</field> + <field name="type">default</field> <field name="website">www.tinyatwork.com/</field> </record> <record id="res_partner_2" model="res.partner"> <field name="name">Bank Wealthy and sons</field> <field name="is_company">1</field> + <field name="city">Paris</field> + <field name="zip">75016</field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="street">1 rue Rockfeller</field> + <field name="type">default</field> + <field name="email">a.g@wealthyandsons.com</field> + <field name="phone">003368978776</field> <field name="website">www.wealthyandsons.com/</field> </record> <record id="res_partner_3" model="res.partner"> <field name="name">China Export</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="is_company">1</field> + <field name="city">Shanghai</field> + <field name="zip">478552</field> + <field model="res.country" name="country_id" search="[('name','=','China')]"/> + <field name="street">52 Chop Suey street</field> + <field name="type">default</field> + <field name="email">zen@chinaexport.com</field> + <field name="phone">+86-751-64845671</field> <field name="website">www.chinaexport.com/</field> </record> <record id="res_partner_4" model="res.partner"> @@ -157,12 +215,26 @@ <field name="supplier">1</field> <field eval="0" name="customer"/> <field name="is_company">1</field> + <field name="city">Namur</field> + <field name="zip">2541</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">42 rue de la Lesse</field> + <field name="type">default</field> + <field name="email">info@distribpc.com</field> + <field name="phone">+ 32 081256987</field> <field name="website">www.distribpc.com/</field> </record> <record id="res_partner_5" model="res.partner"> <field name="name">Ecole de Commerce de Liege</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> <field name="is_company">1</field> + <field name="city">Liege</field> + <field name="zip">6985</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">2 Impasse de la Soif</field> + <field name="email">k.lesbrouffe@eci-liege.info</field> + <field name="phone">+32 421 52571</field> + <field name="type">default</field> <field name="website">www.eci-liege.info//</field> </record> <record id="res_partner_6" model="res.partner"> @@ -171,6 +243,13 @@ <field name="supplier">1</field> <field eval="0" name="customer"/> <field name="is_company">1</field> + <field name="city">Brussels</field> + <field name="zip">2365</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">23 rue du Vieux Bruges</field> + <field name="type">default</field> + <field name="email">info@elecimport.com</field> + <field name="phone">+ 32 025 897 456</field> </record> <record id="res_partner_maxtor" model="res.partner"> <field name="name">Maxtor</field> @@ -179,6 +258,14 @@ <field name="supplier">1</field> <field eval="0" name="customer"/> <field name="is_company">1</field> + <field name="city">Hong Kong</field> + <field name="name">Wong</field> + <field name="zip">23540</field> + <field model="res.country" name="country_id" search="[('name','=','China')]"/> + <field name="street">56 Beijing street</field> + <field name="email">info@maxtor.com</field> + <field name="phone">+ 11 8528 456 789</field> + <field name="type">default</field> </record> <record id="res_partner_seagate" model="res.partner"> <field name="name">Seagate</field> @@ -186,12 +273,25 @@ <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="supplier">1</field> <field name="is_company">1</field> + <field name="city">Cupertino</field> + <field name="name">Seagate Technology</field> + <field name="zip">95014</field> + <field model="res.country" name="country_id" search="[('name','=','United States')]"/> + <field name="street">10200 S. De Anza Blvd</field> + <field name="email">info@seagate.com</field> + <field name="phone">+1 408 256987</field> + <field name="type">default</field> </record> <record id="res_partner_8" model="res.partner"> <field name="website">http://mediapole.net</field> <field name="name">Mediapole SPRL</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> <field name="is_company">1</field> + <field name="city">Louvain-la-Neuve</field> + <field name="zip">1348</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="phone">(+32).10.45.17.73</field> + <field name="street">Rue de l'Angelique, 1</field> </record> <record id="res_partner_9" model="res.partner"> <field name="website">www.balmerinc.com</field> @@ -200,18 +300,38 @@ <field name="ref">or</field> <field eval="[(6, 0, [ref('res_partner_category_1')])]" name="category_id"/> <field name="is_company">1</field> + <field name="city">Bruxelles</field> + <field name="zip">1000</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="email">info@balmerinc.be</field> + <field name="phone">(+32)2 211 34 83</field> + <field name="street">Rue des Palais 51, bte 33</field> + <field name="type">default</field> </record> <record id="res_partner_10" model="res.partner"> <field name="name">Tecsas</field> <field name="ean13">3020170000003</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="is_company">1</field> + <field name="city">Avignon CEDEX 09</field> + <field name="zip">84911</field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="email">contact@tecsas.fr</field> + <field name="phone">(+33)4.32.74.10.57</field> + <field name="street">85 rue du traite de Rome</field> + <field name="type">default</field> </record> <record id="res_partner_11" model="res.partner"> <field name="name">Leclerc</field> <field eval="1200.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/> <field name="is_company">1</field> + <field name="type">default</field> + <field name="street">rue Grande</field> + <field name="city">Brest</field> + <field name="zip">29200</field> + <field name="email">marine@leclerc.fr</field> + <field name="phone">+33-298.334558</field> </record> <record id="res_partner_14" model="res.partner"> <field name="name">Centrale d'achats BML</field> @@ -219,6 +339,14 @@ <field eval="15000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> <field name="is_company">1</field> + <field name="type">default</field> + <field name="name">Carl François</field> + <field name="city">Bruxelles</field> + <field name="zip">1000</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">89 Chaussée de Waterloo</field> + <field name="email">carl.françois@bml.be</field> + <field name="phone">+32-258-256545</field> </record> <record id="res_partner_15" model="res.partner"> <field name="name">Magazin BML 1</field> @@ -226,11 +354,23 @@ <field eval="1500.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> <field name="is_company">1</field> + <field name="type">default</field> + <field name="street">89 Chaussée de Liège</field> + <field name="city">Namur</field> + <field name="zip">5000</field> + <field name="email">lucien.ferguson@bml.be</field> + <field name="phone">+32-621-568978</field> </record> <record id="res_partner_accent" model="res.partner"> <field name="name">Université de Liège</field> <field eval="[(6, 0, [ref('res_partner_category_9')])]" name="category_id"/> <field name="is_company">1</field> + <field name="type">default</field> + <field name="street">Place du 20Août</field> + <field name="city">Liège</field> + <field name="zip">4000</field> + <field name="email">martine.ohio@ulg.ac.be</field> + <field name="phone">+32-45895245</field> <field name="website">http://www.ulg.ac.be/</field> </record> @@ -242,6 +382,11 @@ <field eval="'Sprl Dubois would like to sell our bookshelves but they have no storage location, so it would be exclusively on order'" name="comment"/> <field name="name">Dubois sprl</field> <field name="is_company">1</field> + <field eval="'Brussels'" name="city"/> + <field eval="'1000'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'Avenue de la Liberté 56'" name="street"/> + <field eval="'m.dubois@dubois.be'" name="email"/> <field name="website">http://www.dubois.be/</field> </record> @@ -249,12 +394,22 @@ <field name="name">Eric Dubois</field> <field name="is_company">1</field> <field name="address" eval="[]"/> + <field eval="'Mons'" name="city"/> + <field eval="'7000'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'Chaussée de Binche, 27'" name="street"/> + <field eval="'e.dubois@gmail.com'" name="email"/> + <field eval="'(+32).758 958 789'" name="phone"/> </record> <record id="res_partner_fabiendupont0" model="res.partner"> <field name="name">Fabien Dupont</field> <field name="is_company">1</field> <field name="address" eval="[]"/> + <field eval="'Namur'" name="city"/> + <field eval="'5000'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'Blvd Kennedy, 13'" name="street"/> </record> <record id="res_partner_lucievonck0" model="res.partner"> @@ -275,6 +430,8 @@ <field name="name">The Shelve House</field> <field eval="[(6,0,[ref('res_partner_category_retailers0')])]" name="category_id"/> <field name="is_company">1</field> + <field eval="'Paris'" name="city"/> + <field name="country_id" ref="base.fr"/> </record> <record id="res_partner_vickingdirect0" model="res.partner"> @@ -283,6 +440,12 @@ <field name="supplier">1</field> <field name="customer">0</field> <field name="is_company">1</field> + <field eval="'Puurs'" name="city"/> + <field eval="'2870'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'(+32).70.12.85.00'" name="phone"/> + <field eval="'Schoonmansveld 28'" name="street"/> + <field name="country_id" ref="base.be"/> <field name="website">vicking-direct.be</field> </record> @@ -292,6 +455,9 @@ <field name="supplier">1</field> <field eval="0" name="customer"/> <field name="is_company">1</field> + <field eval="'Kainuu'" name="city"/> + <field eval="'(+358).9.589 689'" name="phone"/> + <field name="country_id" ref="base.fi"/> <field name="website">woodywoodpecker.com</field> </record> @@ -299,6 +465,8 @@ <field name="name">ZeroOne Inc</field> <field eval="[(6,0,[ref('res_partner_category_consumers0')])]" name="category_id"/> <field name="is_company">1</field> + <field eval="'Brussels'" name="city"/> + <field name="country_id" ref="base.be"/> <field name="website">http://www.zerooneinc.com/</field> </record> @@ -307,14 +475,7 @@ --> <record id="res_partner_address_1" model="res.partner"> - <field name="city">Bruxelles</field> <field name="name">Michel Schumacher</field> - <field name="zip">1000</field> - <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> - <field name="email">info@balmerinc.be</field> - <field name="phone">(+32)2 211 34 83</field> - <field name="street">Rue des Palais 51, bte 33</field> - <field name="type">default</field> <field name="parent_id" ref="res_partner_9"/> </record> <record id="res_partner_address_2" model="res.partner"> @@ -327,25 +488,14 @@ <field name="street">85 rue du traite de Rome</field> <field name="type">default</field> <field name="parent_id" ref="res_partner_10"/> + <field name="use_parent_address" eval="0"/> </record> <record id="res_partner_address_3000" model="res.partner"> - <field name="city">Champs sur Marne</field> <field name="name">Laith Jubair</field> - <field name="zip">77420</field> - <field model="res.country" name="country_id" search="[('name','=','France')]"/> - <field name="email">info@axelor.com</field> - <field name="phone">+33 1 64 61 04 01</field> - <field name="street">12 rue Albert Einstein</field> - <field name="type">default</field> <field name="parent_id" ref="res_partner_desertic_hispafuentes"/> </record> <record id="res_partner_address_3" model="res.partner"> - <field name="city">Louvain-la-Neuve</field> <field name="name">Thomas Passot</field> - <field name="zip">1348</field> - <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> - <field name="phone">(+32).10.45.17.73</field> - <field name="street">Rue de l'Angelique, 1</field> <field name="parent_id" ref="res_partner_8"/> </record> <record id="res_partner_address_tang" model="res.partner"> @@ -357,39 +507,19 @@ <field name="email">info@asustek.com</field> <field name="phone">+ 1 64 61 04 01</field> <field name="type">default</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_asus"/> </record> <record id="res_partner_address_wong" model="res.partner"> - <field name="city">Hong Kong</field> <field name="name">Wong</field> - <field name="zip">23540</field> - <field model="res.country" name="country_id" search="[('name','=','China')]"/> - <field name="street">56 Beijing street</field> - <field name="email">info@maxtor.com</field> - <field name="phone">+ 11 8528 456 789</field> - <field name="type">default</field> <field name="parent_id" ref="res_partner_maxtor"/> </record> <record id="res_partner_address_6" model="res.partner"> - <field name="city">Brussels</field> <field name="name">Etienne Lacarte</field> - <field name="zip">2365</field> - <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> - <field name="street">23 rue du Vieux Bruges</field> - <field name="type">default</field> - <field name="email">info@elecimport.com</field> - <field name="phone">+ 32 025 897 456</field> <field name="parent_id" ref="res_partner_6"/> </record> <record id="res_partner_address_7" model="res.partner"> - <field name="city">Namur</field> <field name="name">Jean Guy Lavente</field> - <field name="zip">2541</field> - <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> - <field name="street">42 rue de la Lesse</field> - <field name="type">default</field> - <field name="email">info@distribpc.com</field> - <field name="phone">+ 32 081256987</field> <field name="parent_id" ref="res_partner_4"/> </record> <record id="res_partner_address_8" model="res.partner"> @@ -401,6 +531,7 @@ <field name="type">default</field> <field name="email">s.l@agrolait.be</field> <field name="phone">003281588558</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_madam"/> </record> @@ -413,6 +544,7 @@ <field name="type">delivery</field> <field name="email">p.l@agrolait.be</field> <field name="phone">003281588557</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> </record> @@ -425,52 +557,25 @@ <field name="type">invoice</field> <field name="email">serge.l@agrolait.be</field> <field name="phone">003281588556</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> </record> <record id="res_partner_address_9" model="res.partner"> - <field name="city">Paris</field> <field name="name">Arthur Grosbonnet</field> - <field name="zip">75016</field> - <field model="res.country" name="country_id" search="[('name','=','France')]"/> - <field name="street">1 rue Rockfeller</field> - <field name="type">default</field> - <field name="email">a.g@wealthyandsons.com</field> - <field name="phone">003368978776</field> <field name="parent_id" ref="res_partner_2"/> <field name="title" ref="base.res_partner_title_sir"/> </record> <record id="res_partner_address_11" model="res.partner"> - <field name="city">Alencon</field> <field name="name">Sebastien LANGE</field> - <field name="zip">61000</field> - <field name="email">contact@syleam.fr</field> - <field name="street">1 place de l'Église</field> - <field name="phone">+33 (0) 2 33 31 22 10</field> - <field model="res.country" name="country_id" search="[('name','=','France')]"/> - <field name="type">default</field> <field name="parent_id" ref="res_partner_sednacom"/> </record> <record id="res_partner_address_10" model="res.partner"> - <field name="city">Liege</field> <field name="name">Karine Lesbrouffe</field> - <field name="zip">6985</field> - <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> - <field name="street">2 Impasse de la Soif</field> - <field name="email">k.lesbrouffe@eci-liege.info</field> - <field name="phone">+32 421 52571</field> - <field name="type">default</field> <field name="parent_id" ref="res_partner_5"/> </record> <record id="res_partner_address_zen" model="res.partner"> - <field name="city">Shanghai</field> <field name="name">Zen</field> - <field name="zip">478552</field> - <field model="res.country" name="country_id" search="[('name','=','China')]"/> - <field name="street">52 Chop Suey street</field> - <field name="type">default</field> - <field name="email">zen@chinaexport.com</field> - <field name="phone">+86-751-64845671</field> <field name="parent_id" ref="res_partner_3"/> </record> <record id="res_partner_address_12" model="res.partner"> @@ -483,27 +588,15 @@ <field name="type">default</field> <field name="email">l.dupont@tecsas.fr</field> <field name="phone">+33-658-256545</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_10"/> </record> <record id="res_partner_address_13" model="res.partner"> - <field name="type">default</field> <field name="name">Carl François</field> - <field name="city">Bruxelles</field> - <field name="zip">1000</field> - <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> - <field name="street">89 Chaussée de Waterloo</field> - <field name="email">carl.françois@bml.be</field> - <field name="phone">+32-258-256545</field> <field name="parent_id" ref="res_partner_14"/> </record> <record id="res_partner_address_14" model="res.partner"> - <field name="type">default</field> <field name="name">Lucien Ferguson</field> - <field name="street">89 Chaussée de Liège</field> - <field name="city">Namur</field> - <field name="zip">5000</field> - <field name="email">lucien.ferguson@bml.be</field> - <field name="phone">+32-621-568978</field> <field name="parent_id" ref="res_partner_15"/> </record> <record id="res_partner_address_15" model="res.partner"> @@ -514,6 +607,7 @@ <field name="zip">29200</field> <field name="email">marine@leclerc.fr</field> <field name="phone">+33-298.334558</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_11"/> </record> <record id="res_partner_address_16" model="res.partner"> @@ -524,17 +618,12 @@ <field name="zip">29200</field> <field name="email">claude@leclerc.fr</field> <field name="phone">+33-298.334598</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_11"/> </record> <record id="res_partner_address_accent" model="res.partner"> - <field name="type">default</field> <field name="name">Martine Ohio</field> - <field name="street">Place du 20Août</field> - <field name="city">Liège</field> - <field name="zip">4000</field> - <field name="email">martine.ohio@ulg.ac.be</field> - <field name="phone">+32-45895245</field> <field name="parent_id" ref="res_partner_accent"/> </record> <record id="res_partner_address_Camptocamp" model="res.partner"> @@ -549,37 +638,15 @@ <field name="parent_id" ref="res_partner_c2c"/> </record> <record id="res_partner_address_seagate" model="res.partner"> - <field name="city">Cupertino</field> <field name="name">Seagate Technology</field> - <field name="zip">95014</field> - <field model="res.country" name="country_id" search="[('name','=','United States')]"/> - <field name="street">10200 S. De Anza Blvd</field> - <field name="email">info@seagate.com</field> - <field name="phone">+1 408 256987</field> - <field name="type">default</field> <field name="parent_id" ref="res_partner_seagate"/> </record> <record id="res_partner_address_thymbra" model="res.partner"> - <field name="city">Buenos Aires</field> <field name="name">Jack Daniels</field> - <field name="zip">1659</field> - <field name="email">contact@smartbusiness.ar</field> - <field name="street">Palermo, Capital Federal </field> - <field name="street2">C1414CMS Capital Federal </field> - <field name="phone">(5411) 4773-9666 </field> - <field model="res.country" name="country_id" search="[('name','=','Argentina')]"/> - <field name="type">default</field> <field name="parent_id" ref="res_partner_thymbra"/> </record> <record id="res_partner_address_tinyatwork" model="res.partner"> - <field name="city">Boston</field> <field name="name">Tiny Work</field> - <field name="zip">5501</field> - <field name="email">info@tinyatwork.com</field> - <field name="phone">+33 (0) 2 33 31 22 10</field> - <field model="res.country" name="country_id" search="[('name','=','United States')]"/> - <field name="street">One Lincoln Street</field> - <field name="type">default</field> <field name="parent_id" ref="res_partner_tinyatwork"/> </record> @@ -628,73 +695,44 @@ <record id="res_partner_address_henrychard1" model="res.partner"> - <field eval="'Paris'" name="city"/> <field eval="'Henry Chard'" name="name"/> <field name="parent_id" ref="res_partner_theshelvehouse0"/> - <field name="country_id" ref="base.fr"/> </record> <record id="res_partner_address_brussels0" model="res.partner"> - <field eval="'Brussels'" name="city"/> <field eval="'Leen Vandenloep'" name="name"/> - <field eval="'Puurs'" name="city"/> - <field eval="'2870'" name="zip"/> - <field name="country_id" ref="base.be"/> - <field eval="'(+32).70.12.85.00'" name="phone"/> - <field eval="'Schoonmansveld 28'" name="street"/> <field name="parent_id" ref="res_partner_vickingdirect0"/> - <field name="country_id" ref="base.be"/> </record> <record id="res_partner_address_rogerpecker1" model="res.partner"> - <field eval="'Kainuu'" name="city"/> <field eval="'Roger Pecker'" name="name"/> <field name="parent_id" ref="res_partner_woodywoodpecker0"/> - <field eval="'(+358).9.589 689'" name="phone"/> - <field name="country_id" ref="base.fi"/> </record> <record id="res_partner_address_geoff1" model="res.partner"> - <field eval="'Brussels'" name="city"/> <field eval="'Geoff'" name="name"/> <field name="parent_id" ref="res_partner_zerooneinc0"/> - <field name="country_id" ref="base.be"/> </record> <record id="res_partner_address_marcdubois0" model="res.partner"> - <field eval="'Brussels'" name="city"/> <field eval="'Marc Dubois'" name="name"/> - <field eval="'1000'" name="zip"/> <field name="parent_id" ref="res_partner_duboissprl0"/> - <field name="country_id" ref="base.be"/> - <field eval="'Avenue de la Liberté 56'" name="street"/> - <field eval="'m.dubois@dubois.be'" name="email"/> </record> <record id="res_partner_address_fabiendupont0" model="res.partner"> - <field eval="'Namur'" name="city"/> <field eval="'Fabien Dupont'" name="name"/> - <field eval="'5000'" name="zip"/> <field name="parent_id" ref="res_partner_fabiendupont0"/> - <field name="country_id" ref="base.be"/> - <field eval="'Blvd Kennedy, 13'" name="street"/> </record> <record id="res_partner_address_ericdubois0" model="res.partner"> - <field eval="'Mons'" name="city"/> <field eval="'Eric Dubois'" name="name"/> - <field eval="'7000'" name="zip"/> <field name="parent_id" ref="res_partner_ericdubois0"/> - <field name="country_id" ref="base.be"/> - <field eval="'Chaussée de Binche, 27'" name="street"/> - <field eval="'e.dubois@gmail.com'" name="email"/> - <field eval="'(+32).758 958 789'" name="phone"/> </record> From 7288a49499b7c1017b25d6e12b3350cd81a7dfac Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 12 Mar 2012 16:42:28 +0530 Subject: [PATCH 102/141] [IMP]base: res.company set logo field realted to partner bzr revid: sbh@tinyerp.com-20120312111228-7zy1o4q2vykayuwy --- openerp/addons/base/base_data.xml | 1 + openerp/addons/base/res/res_company.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index 525c7e2e334..931cc6fe8b0 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -1061,6 +1061,7 @@ <field name="address" eval="[]"/> <field name="company_id" eval="None"/> <field name="customer" eval="False"/> + <field name="is_company" eval="True"/> </record> <record id="main_address" model="res.partner.address"> <field name="partner_id" ref="main_partner"/> diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index 3d3234ab551..e6fcd92c298 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -124,7 +124,7 @@ class res_company(osv.osv): 'rml_header': fields.text('RML Header', required=True), 'rml_header2': fields.text('RML Internal Header', required=True), 'rml_header3': fields.text('RML Internal Header', required=True), - 'logo': fields.binary('Logo'), + 'logo': fields.related('partner_id', 'photo', string="Photo", type="binary"), 'currency_id': fields.many2one('res.currency', 'Currency', required=True), 'currency_ids': fields.one2many('res.currency', 'company_id', 'Currency'), 'user_ids': fields.many2many('res.users', 'res_company_users_rel', 'cid', 'user_id', 'Accepted Users'), @@ -223,11 +223,12 @@ class res_company(osv.osv): self._get_company_children.clear_cache(self) def create(self, cr, uid, vals, context=None): + if not vals.get('name', False) or vals.get('partner_id', False): self.cache_restart(cr) return super(res_company, self).create(cr, uid, vals, context=context) obj_partner = self.pool.get('res.partner') - partner_id = obj_partner.create(cr, uid, {'name': vals['name']}, context=context) + partner_id = obj_partner.create(cr, uid, {'name': vals['name'],'is_company':True}, context=context) vals.update({'partner_id': partner_id}) self.cache_restart(cr) company_id = super(res_company, self).create(cr, uid, vals, context=context) From 41a5021110f34262b3889ddf83eb5f7a4e064093 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 13 Mar 2012 11:00:48 +0530 Subject: [PATCH 103/141] [IMP]base/res_partner : demo data change bzr revid: kjo@tinyerp.com-20120313053048-jmybumt3hif622y2 --- openerp/addons/base/res/res_partner_demo.xml | 213 +++++++++++++++---- openerp/addons/base/res/res_partner_view.xml | 52 ++--- 2 files changed, 202 insertions(+), 63 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index fd4453c63f6..0b032fe4659 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -95,7 +95,6 @@ <field eval="0" name="customer"/> <field name="is_company">1</field> <field name="city">Taiwan</field> - <field name="name">Tang</field> <field name="zip">23410</field> <field model="res.country" name="country_id" search="[('name','=','Taiwan')]"/> <field name="street">31 Hong Kong street</field> @@ -111,10 +110,8 @@ <field name="zip">5478</field> <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="street">69 rue de Chimay</field> - <field name="type">default</field> <field name="email">s.l@agrolait.be</field> <field name="phone">003281588558</field> - <field name="title" ref="base.res_partner_title_madam"/> <field name="website">www.agrolait.com</field> </record> <record id="res_partner_c2c" model="res.partner"> @@ -127,7 +124,6 @@ <field name="phone">+41 21 619 10 04 </field> <field model="res.country" name="country_id" search="[('name','=','France')]"/> <field name="street">Savoie Technolac, BP 352</field> - <field name="type">default</field> <field name="email">openerp@camptocamp.com</field> <field name="website">www.camptocamp.com</field> </record> @@ -141,7 +137,6 @@ <field name="street">1 place de l'Église</field> <field name="phone">+33 (0) 2 33 31 22 10</field> <field model="res.country" name="country_id" search="[('name','=','France')]"/> - <field name="type">default</field> <field name="is_company">1</field> </record> <record id="res_partner_thymbra" model="res.partner"> @@ -154,7 +149,6 @@ <field name="street2">C1414CMS Capital Federal </field> <field name="phone">(5411) 4773-9666 </field> <field model="res.country" name="country_id" search="[('name','=','Argentina')]"/> - <field name="type">default</field> <field eval="[(6, 0, [ref('res_partner_category_4')])]" name="category_id"/> </record> <record id="res_partner_desertic_hispafuentes" model="res.partner"> @@ -168,7 +162,6 @@ <field name="email">info@axelor.com</field> <field name="phone">+33 1 64 61 04 01</field> <field name="street">12 rue Albert Einstein</field> - <field name="type">default</field> <field name="website">www.axelor.com/</field> </record> <record id="res_partner_tinyatwork" model="res.partner"> @@ -181,7 +174,6 @@ <field name="phone">+33 (0) 2 33 31 22 10</field> <field model="res.country" name="country_id" search="[('name','=','United States')]"/> <field name="street">One Lincoln Street</field> - <field name="type">default</field> <field name="website">www.tinyatwork.com/</field> </record> <record id="res_partner_2" model="res.partner"> @@ -191,7 +183,6 @@ <field name="zip">75016</field> <field model="res.country" name="country_id" search="[('name','=','France')]"/> <field name="street">1 rue Rockfeller</field> - <field name="type">default</field> <field name="email">a.g@wealthyandsons.com</field> <field name="phone">003368978776</field> <field name="website">www.wealthyandsons.com/</field> @@ -204,7 +195,6 @@ <field name="zip">478552</field> <field model="res.country" name="country_id" search="[('name','=','China')]"/> <field name="street">52 Chop Suey street</field> - <field name="type">default</field> <field name="email">zen@chinaexport.com</field> <field name="phone">+86-751-64845671</field> <field name="website">www.chinaexport.com/</field> @@ -219,7 +209,6 @@ <field name="zip">2541</field> <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="street">42 rue de la Lesse</field> - <field name="type">default</field> <field name="email">info@distribpc.com</field> <field name="phone">+ 32 081256987</field> <field name="website">www.distribpc.com/</field> @@ -234,7 +223,6 @@ <field name="street">2 Impasse de la Soif</field> <field name="email">k.lesbrouffe@eci-liege.info</field> <field name="phone">+32 421 52571</field> - <field name="type">default</field> <field name="website">www.eci-liege.info//</field> </record> <record id="res_partner_6" model="res.partner"> @@ -247,7 +235,6 @@ <field name="zip">2365</field> <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="street">23 rue du Vieux Bruges</field> - <field name="type">default</field> <field name="email">info@elecimport.com</field> <field name="phone">+ 32 025 897 456</field> </record> @@ -259,13 +246,11 @@ <field eval="0" name="customer"/> <field name="is_company">1</field> <field name="city">Hong Kong</field> - <field name="name">Wong</field> <field name="zip">23540</field> <field model="res.country" name="country_id" search="[('name','=','China')]"/> <field name="street">56 Beijing street</field> <field name="email">info@maxtor.com</field> <field name="phone">+ 11 8528 456 789</field> - <field name="type">default</field> </record> <record id="res_partner_seagate" model="res.partner"> <field name="name">Seagate</field> @@ -274,13 +259,11 @@ <field name="supplier">1</field> <field name="is_company">1</field> <field name="city">Cupertino</field> - <field name="name">Seagate Technology</field> <field name="zip">95014</field> <field model="res.country" name="country_id" search="[('name','=','United States')]"/> <field name="street">10200 S. De Anza Blvd</field> <field name="email">info@seagate.com</field> <field name="phone">+1 408 256987</field> - <field name="type">default</field> </record> <record id="res_partner_8" model="res.partner"> <field name="website">http://mediapole.net</field> @@ -306,7 +289,6 @@ <field name="email">info@balmerinc.be</field> <field name="phone">(+32)2 211 34 83</field> <field name="street">Rue des Palais 51, bte 33</field> - <field name="type">default</field> </record> <record id="res_partner_10" model="res.partner"> <field name="name">Tecsas</field> @@ -319,14 +301,12 @@ <field name="email">contact@tecsas.fr</field> <field name="phone">(+33)4.32.74.10.57</field> <field name="street">85 rue du traite de Rome</field> - <field name="type">default</field> </record> <record id="res_partner_11" model="res.partner"> <field name="name">Leclerc</field> <field eval="1200.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_0')])]" name="category_id"/> <field name="is_company">1</field> - <field name="type">default</field> <field name="street">rue Grande</field> <field name="city">Brest</field> <field name="zip">29200</field> @@ -339,7 +319,6 @@ <field eval="15000.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> <field name="is_company">1</field> - <field name="type">default</field> <field name="name">Carl François</field> <field name="city">Bruxelles</field> <field name="zip">1000</field> @@ -354,7 +333,6 @@ <field eval="1500.00" name="credit_limit"/> <field eval="[(6, 0, [ref('res_partner_category_11')])]" name="category_id"/> <field name="is_company">1</field> - <field name="type">default</field> <field name="street">89 Chaussée de Liège</field> <field name="city">Namur</field> <field name="zip">5000</field> @@ -476,63 +454,108 @@ <record id="res_partner_address_1" model="res.partner"> <field name="name">Michel Schumacher</field> + <field name="website">www.balmerinc.com</field> + <field name="ref">or</field> + <field name="city">Bruxelles</field> + <field name="zip">1000</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="email">info@balmerinc.be</field> + <field name="phone">(+32)2 211 34 83</field> + <field name="street">Rue des Palais 51, bte 33</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_9"/> </record> <record id="res_partner_address_2" model="res.partner"> - <field name="city">Avignon CEDEX 09</field> <field name="name">Laurent Jacot</field> + <field name="city">Avignon CEDEX 09</field> <field name="zip">84911</field> <field model="res.country" name="country_id" search="[('name','=','France')]"/> <field name="email">contact@tecsas.fr</field> <field name="phone">(+33)4.32.74.10.57</field> <field name="street">85 rue du traite de Rome</field> - <field name="type">default</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_10"/> - <field name="use_parent_address" eval="0"/> </record> <record id="res_partner_address_3000" model="res.partner"> <field name="name">Laith Jubair</field> + <field name="city">Champs sur Marne</field> + <field name="zip">77420</field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="email">info@axelor.com</field> + <field name="phone">+33 1 64 61 04 01</field> + <field name="street">12 rue Albert Einstein</field> + <field name="website">www.axelor.com/</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_desertic_hispafuentes"/> </record> <record id="res_partner_address_3" model="res.partner"> <field name="name">Thomas Passot</field> + <field name="website">http://mediapole.net</field> + <field name="city">Louvain-la-Neuve</field> + <field name="zip">1348</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="phone">(+32).10.45.17.73</field> + <field name="street">Rue de l'Angelique, 1</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_8"/> </record> <record id="res_partner_address_tang" model="res.partner"> - <field name="city">Taiwan</field> <field name="name">Tang</field> + <field name="city">Taiwan</field> <field name="zip">23410</field> <field model="res.country" name="country_id" search="[('name','=','Taiwan')]"/> <field name="street">31 Hong Kong street</field> <field name="email">info@asustek.com</field> <field name="phone">+ 1 64 61 04 01</field> - <field name="type">default</field> - <field name="use_parent_address" eval="0"/> + <field name="website">www.asustek.com</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_asus"/> </record> <record id="res_partner_address_wong" model="res.partner"> <field name="name">Wong</field> + <field name="city">Hong Kong</field> + <field name="zip">23540</field> + <field model="res.country" name="country_id" search="[('name','=','China')]"/> + <field name="street">56 Beijing street</field> + <field name="email">info@maxtor.com</field> + <field name="phone">+ 11 8528 456 789</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_maxtor"/> </record> <record id="res_partner_address_6" model="res.partner"> <field name="name">Etienne Lacarte</field> + <field name="city">Brussels</field> + <field name="zip">2365</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">23 rue du Vieux Bruges</field> + <field name="email">info@elecimport.com</field> + <field name="phone">+ 32 025 897 456</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_6"/> </record> <record id="res_partner_address_7" model="res.partner"> <field name="name">Jean Guy Lavente</field> + <field name="city">Namur</field> + <field name="zip">2541</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">42 rue de la Lesse</field> + <field name="email">info@distribpc.com</field> + <field name="phone">+ 32 081256987</field> + <field name="website">www.distribpc.com/</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_4"/> </record> <record id="res_partner_address_8" model="res.partner"> - <field name="city">Wavre</field> <field name="name">Sylvie Lelitre</field> + <field name="parent_id" ref="res_partner_agrolait"/> + <field name="city">Wavre</field> <field name="zip">5478</field> <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="street">69 rue de Chimay</field> - <field name="type">default</field> - <field name="email">s.l@agrolait.be</field> - <field name="phone">003281588558</field> - <field name="use_parent_address" eval="0"/> - <field name="parent_id" ref="res_partner_agrolait"/> + <field name="email">s.l@agrolait.be</field> + <field name="phone">003281588558</field> + <field name="website">www.agrolait.com</field> + <field name="use_parent_address" eval="1"/> <field name="title" ref="base.res_partner_title_madam"/> </record> <record id="res_partner_address_8delivery" model="res.partner"> @@ -564,18 +587,50 @@ <record id="res_partner_address_9" model="res.partner"> <field name="name">Arthur Grosbonnet</field> <field name="parent_id" ref="res_partner_2"/> + <field name="city">Paris</field> + <field name="zip">75016</field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="street">1 rue Rockfeller</field> + <field name="email">a.g@wealthyandsons.com</field> + <field name="phone">003368978776</field> + <field name="website">www.wealthyandsons.com/</field> + <field name="use_parent_address" eval="1"/> <field name="title" ref="base.res_partner_title_sir"/> </record> <record id="res_partner_address_11" model="res.partner"> <field name="name">Sebastien LANGE</field> + <field name="website">www.syleam.fr</field> + <field name="city">Alencon</field> + <field name="zip">61000</field> + <field name="email">contact@syleam.fr</field> + <field name="street">1 place de l'Église</field> + <field name="phone">+33 (0) 2 33 31 22 10</field> + <field model="res.country" name="country_id" search="[('name','=','France')]"/> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_sednacom"/> </record> <record id="res_partner_address_10" model="res.partner"> <field name="name">Karine Lesbrouffe</field> + <field name="city">Liege</field> + <field name="zip">6985</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">2 Impasse de la Soif</field> + <field name="email">k.lesbrouffe@eci-liege.info</field> + <field name="phone">+32 421 52571</field> + <field name="website">www.eci-liege.info//</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_5"/> </record> <record id="res_partner_address_zen" model="res.partner"> <field name="name">Zen</field> + <field name="city">Shanghai</field> + <field name="zip">478552</field> + <field model="res.country" name="country_id" search="[('name','=','China')]"/> + <field name="street">52 Chop Suey street</field> + <field name="email">zen@chinaexport.com</field> + <field name="phone">+86-751-64845671</field> + <field name="website">www.chinaexport.com/</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_3"/> </record> <record id="res_partner_address_12" model="res.partner"> @@ -592,11 +647,24 @@ <field name="parent_id" ref="res_partner_10"/> </record> <record id="res_partner_address_13" model="res.partner"> - <field name="name">Carl François</field> + <field name="name">Carl</field> + <field name="city">Bruxelles</field> + <field name="zip">1000</field> + <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> + <field name="street">89 Chaussée de Waterloo</field> + <field name="email">carl.françois@bml.be</field> + <field name="phone">+32-258-256545</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_14"/> </record> <record id="res_partner_address_14" model="res.partner"> <field name="name">Lucien Ferguson</field> + <field name="street">89 Chaussée de Liège</field> + <field name="city">Namur</field> + <field name="zip">5000</field> + <field name="email">lucien.ferguson@bml.be</field> + <field name="phone">+32-621-568978</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_15"/> </record> <record id="res_partner_address_15" model="res.partner"> @@ -624,6 +692,13 @@ <record id="res_partner_address_accent" model="res.partner"> <field name="name">Martine Ohio</field> + <field name="street">Place du 20Août</field> + <field name="city">Liège</field> + <field name="zip">4000</field> + <field name="email">martine.ohio@ulg.ac.be</field> + <field name="phone">+32-45895245</field> + <field name="website">http://www.ulg.ac.be/</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_accent"/> </record> <record id="res_partner_address_Camptocamp" model="res.partner"> @@ -639,14 +714,37 @@ </record> <record id="res_partner_address_seagate" model="res.partner"> <field name="name">Seagate Technology</field> + <field name="city">Cupertino</field> + <field name="zip">95014</field> + <field model="res.country" name="country_id" search="[('name','=','United States')]"/> + <field name="street">10200 S. De Anza Blvd</field> + <field name="email">info@seagate.com</field> + <field name="phone">+1 408 256987</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_seagate"/> </record> <record id="res_partner_address_thymbra" model="res.partner"> <field name="name">Jack Daniels</field> + <field name="city">Buenos Aires</field> + <field name="zip">1659</field> + <field name="email">contact@smartbusiness.ar</field> + <field name="street">Palermo, Capital Federal </field> + <field name="street2">C1414CMS Capital Federal </field> + <field name="phone">(5411) 4773-9666 </field> + <field model="res.country" name="country_id" search="[('name','=','Argentina')]"/> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_thymbra"/> </record> <record id="res_partner_address_tinyatwork" model="res.partner"> <field name="name">Tiny Work</field> + <field name="city">Boston</field> + <field name="zip">5501</field> + <field name="email">info@tinyatwork.com</field> + <field name="phone">+33 (0) 2 33 31 22 10</field> + <field model="res.country" name="country_id" search="[('name','=','United States')]"/> + <field name="street">One Lincoln Street</field> + <field name="website">www.tinyatwork.com/</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_tinyatwork"/> </record> @@ -696,42 +794,83 @@ <record id="res_partner_address_henrychard1" model="res.partner"> <field eval="'Henry Chard'" name="name"/> + <field eval="'Paris'" name="city"/> + <field name="country_id" ref="base.fr"/> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_theshelvehouse0"/> </record> <record id="res_partner_address_brussels0" model="res.partner"> <field eval="'Leen Vandenloep'" name="name"/> + <field eval="'Puurs'" name="city"/> + <field eval="'2870'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'(+32).70.12.85.00'" name="phone"/> + <field eval="'Schoonmansveld 28'" name="street"/> + <field name="country_id" ref="base.be"/> + <field name="website">vicking-direct.be</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_vickingdirect0"/> </record> <record id="res_partner_address_rogerpecker1" model="res.partner"> <field eval="'Roger Pecker'" name="name"/> + <field name="is_company">1</field> + <field eval="'Kainuu'" name="city"/> + <field eval="'(+358).9.589 689'" name="phone"/> + <field name="country_id" ref="base.fi"/> + <field name="website">woodywoodpecker.com</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_woodywoodpecker0"/> </record> <record id="res_partner_address_geoff1" model="res.partner"> <field eval="'Geoff'" name="name"/> + <field eval="'Brussels'" name="city"/> + <field name="country_id" ref="base.be"/> + <field name="website">http://www.zerooneinc.com/</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_zerooneinc0"/> </record> <record id="res_partner_address_marcdubois0" model="res.partner"> <field eval="'Marc Dubois'" name="name"/> + <field eval="'Brussels'" name="city"/> + <field eval="'1000'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'Avenue de la Liberté 56'" name="street"/> + <field eval="'m.dubois@dubois.be'" name="email"/> + <field name="website">http://www.dubois.be/</field> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_duboissprl0"/> </record> <record id="res_partner_address_fabiendupont0" model="res.partner"> - <field eval="'Fabien Dupont'" name="name"/> + <field eval="'Fabien'" name="name"/> + <field eval="'Namur'" name="city"/> + <field eval="'5000'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'Blvd Kennedy, 13'" name="street"/> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_fabiendupont0"/> </record> <record id="res_partner_address_ericdubois0" model="res.partner"> - <field eval="'Eric Dubois'" name="name"/> + <field eval="'Eric'" name="name"/> + <field name="address" eval="[]"/> + <field eval="'Mons'" name="city"/> + <field eval="'7000'" name="zip"/> + <field name="country_id" ref="base.be"/> + <field eval="'Chaussée de Binche, 27'" name="street"/> + <field eval="'e.dubois@gmail.com'" name="email"/> + <field eval="'(+32).758 958 789'" name="phone"/> + <field name="use_parent_address" eval="1"/> <field name="parent_id" ref="res_partner_ericdubois0"/> </record> diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 191e9eea57a..6194f9001c5 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -358,22 +358,22 @@ on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> - <field name="street" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="street2" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="zip" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="city" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="country_id" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="state_id" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="street" colspan="4"/> + <field name="street2" colspan="4"/> + <field name="zip"/> + <field name="city"/> + <field name="country_id"/> + <field name="state_id"/> </group> <group colspan="2"> <separator string="Communication" colspan="4"/> - <field name="lang" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="phone" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="mobile" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="fax" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="email" widget="email" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="website" widget="url" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> - <field name="ref" groups="base.group_extended" colspan="4" attrs="{'readonly': [('parent_id', '!=', False), ('use_parent_address', '=', True)]}"/> + <field name="lang" colspan="4"/> + <field name="phone" colspan="4"/> + <field name="mobile" colspan="4"/> + <field name="fax" colspan="4"/> + <field name="email" widget="email" colspan="4"/> + <field name="website" widget="url" colspan="4"/> + <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> <field name="child_ids" context="{'default_parent_id': active_id}" nolabel="1"> @@ -408,22 +408,22 @@ <field name="use_parent_address" attrs="{'invisible': [('is_company','=', True)]}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> - <field name="street" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="street2" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="zip" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="city" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="country_id" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="state_id" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="street" colspan="4"/> + <field name="street2" colspan="4"/> + <field name="zip"/> + <field name="city"/> + <field name="country_id"/> + <field name="state_id"/> </group> <group colspan="2"> <separator string="Communication" colspan="4"/> - <field name="lang" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="phone" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="mobile" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="fax" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="email" widget="email" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="website" widget="url" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> - <field name="ref" groups="base.group_extended" colspan="4" attrs="{'readonly': [('use_parent_address', '=', True)]}"/> + <field name="lang" colspan="4"/> + <field name="phone" colspan="4"/> + <field name="mobile" colspan="4"/> + <field name="fax" colspan="4"/> + <field name="email" widget="email" colspan="4"/> + <field name="website" widget="url" colspan="4"/> + <field name="ref" groups="base.group_extended" colspan="4"/> </group> <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> From 18d4bee8355e299b665e83742daf8d714fdb2da8 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 13 Mar 2012 11:43:38 +0530 Subject: [PATCH 104/141] [IMP]base/res :set photo when create company from childs bzr revid: sbh@tinyerp.com-20120313061338-dh2i2ve0rhbl1jha --- openerp/addons/base/res/res_partner.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index a6b93b865a4..ba161731e6c 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -259,13 +259,15 @@ class res_partner(osv.osv): return super(res_partner,self).write(cr, uid, ids, vals, context=context) def create(self, cr, uid, vals, context=None): + if context is None: + context={} # Update parent and siblings records if vals.get('parent_id') and vals.get('use_parent_address'): domain_siblings = [('parent_id', '=', vals['parent_id']), ('use_parent_address', '=', True)] update_ids = [vals['parent_id']] + self.search(cr, uid, domain_siblings, context=context) self.update_address(cr, uid, update_ids, vals, context) - if 'photo' not in vals: - vals['photo'] = self._get_photo(cr, uid, vals.get('is_company', False), context) + if 'photo' not in vals : + vals['photo'] = self._get_photo(cr, uid, vals.get('is_company', False) or context.get('default_is_company'), context) return super(res_partner,self).create(cr, uid, vals, context=context) def update_address(self, cr, uid, ids, vals, context=None): From 3b56005bcb0b924a456643e5dda8db681fcbdda6 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 13 Mar 2012 12:09:06 +0530 Subject: [PATCH 105/141] [IMP]base/res_partner: set indentation in demo bzr revid: kjo@tinyerp.com-20120313063906-3gv0qpr9fafmj8el --- openerp/addons/base/res/res_partner_demo.xml | 62 ++++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 4c9d786f4d5..81f5c5dd21b 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -64,22 +64,22 @@ <!-- Resource: res.partner.category for training --> - <record id="res_partner_category_consumers0" model="res.partner.category"> - <field name="name">Consumers</field> - <field name="parent_id" ref="res_partner_category_0"/> - </record> - <record id="res_partner_category_retailers0" model="res.partner.category"> - <field name="name">Retailers</field> - <field name="parent_id" ref="res_partner_category_0"/> - </record> - <record id="res_partner_category_miscellaneoussuppliers0" model="res.partner.category"> - <field name="name">Miscellaneous Suppliers</field> - <field name="parent_id" ref="res_partner_category_8"/> - </record> - <record id="res_partner_category_woodsuppliers0" model="res.partner.category"> - <field name="name">Wood Suppliers</field> - <field name="parent_id" ref="res_partner_category_8"/> - </record> + <record id="res_partner_category_consumers0" model="res.partner.category"> + <field name="name">Consumers</field> + <field name="parent_id" ref="res_partner_category_0"/> + </record> + <record id="res_partner_category_retailers0" model="res.partner.category"> + <field name="name">Retailers</field> + <field name="parent_id" ref="res_partner_category_0"/> + </record> + <record id="res_partner_category_miscellaneoussuppliers0" model="res.partner.category"> + <field name="name">Miscellaneous Suppliers</field> + <field name="parent_id" ref="res_partner_category_8"/> + </record> + <record id="res_partner_category_woodsuppliers0" model="res.partner.category"> + <field name="name">Wood Suppliers</field> + <field name="parent_id" ref="res_partner_category_8"/> + </record> <!-- Resource: res.partner @@ -562,8 +562,8 @@ <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="street">71 rue de Chimay</field> <field name="type">delivery</field> - <field name="email">p.l@agrolait.be</field> - <field name="phone">003281588557</field> + <field name="email">p.l@agrolait.be</field> + <field name="phone">003281588557</field> <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> @@ -575,8 +575,8 @@ <field model="res.country" name="country_id" search="[('name','=','Belgium')]"/> <field name="street">69 rue de Chimay</field> <field name="type">invoice</field> - <field name="email">serge.l@agrolait.be</field> - <field name="phone">003281588556</field> + <field name="email">serge.l@agrolait.be</field> + <field name="phone">003281588556</field> <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_agrolait"/> <field name="title" ref="base.res_partner_title_sir"/> @@ -632,14 +632,14 @@ </record> <record id="res_partner_address_12" model="res.partner"> <field name="type">default</field> - <field name="city">Grenoble</field> + <field name="city">Grenoble</field> <field name="name">Loïc Dupont</field> <field name="zip">38100</field> <field model="res.country" name="country_id" search="[('name','=','China')]"/> <field name="street">Rue Lavoisier 145</field> <field name="type">default</field> - <field name="email">l.dupont@tecsas.fr</field> - <field name="phone">+33-658-256545</field> + <field name="email">l.dupont@tecsas.fr</field> + <field name="phone">+33-658-256545</field> <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_10"/> </record> @@ -668,22 +668,22 @@ <field name="type">default</field> <field name="name">Marine Leclerc</field> <field name="street">rue Grande</field> - <field name="city">Brest</field> + <field name="city">Brest</field> <field name="zip">29200</field> - <field name="email">marine@leclerc.fr</field> - <field name="phone">+33-298.334558</field> - <field name="use_parent_address" eval="0"/> + <field name="email">marine@leclerc.fr</field> + <field name="phone">+33-298.334558</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_11"/> </record> <record id="res_partner_address_16" model="res.partner"> <field name="type">invoice</field> <field name="name">Claude Leclerc</field> <field name="street">rue Grande</field> - <field name="city">Brest</field> + <field name="city">Brest</field> <field name="zip">29200</field> - <field name="email">claude@leclerc.fr</field> - <field name="phone">+33-298.334598</field> - <field name="use_parent_address" eval="0"/> + <field name="email">claude@leclerc.fr</field> + <field name="phone">+33-298.334598</field> + <field name="use_parent_address" eval="0"/> <field name="parent_id" ref="res_partner_11"/> </record> From c5a666a4a721a40335a6c410b2625f1c791d75a1 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Fri, 16 Mar 2012 13:48:17 +0100 Subject: [PATCH 106/141] [IMP] base, res.partner.address: added _defaults and call to write() and create() functions of res.partner for a better backward compatibility bzr revid: qdp-launchpad@openerp.com-20120316124817-rokpu5nykwabtlad --- openerp/addons/base/res/res_partner.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index ba161731e6c..7a9cde0ae25 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -454,12 +454,25 @@ class res_partner_address(osv.osv): 'color': fields.integer('Color Index'), } + _defaults = { + 'active': True, + 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c), + 'color': 0, + 'type': 'default', + } + def write(self, cr, uid, ids, vals, context=None): logging.getLogger('res.partner').warning("Deprecated use of res.partner.address") - return super(res_partner_address,self).write(cr, uid, ids, vals, context=context) + if 'partner_id' in vals: + vals['parent_id'] = vals.get('partner_id') + del(vals['partner_id']) + return self.pool.get('res.partner').write(cr, uid, ids, vals, context=context) def create(self, cr, uid, vals, context=None): logging.getLogger('res.partner').warning("Deprecated use of res.partner.address") - return super(res_partner_address,self).create(cr, uid, vals, context=context) + if 'partner_id' in vals: + vals['parent_id'] = vals.get('partner_id') + del(vals['partner_id']) + return self.pool.get('res.partner').create(cr, uid, vals, context=context) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 629d662f636eab939dbfa5e5da8634e3803ebf2c Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Fri, 16 Mar 2012 14:53:39 +0100 Subject: [PATCH 107/141] [IMP] base, report header: simplified code by removing useless check as partner_id is required on res_company bzr revid: qdp-launchpad@openerp.com-20120316135339-qsnr1qfcgc7mr94m --- openerp/addons/base/report/corporate_sxw_header.xml | 8 ++++---- openerp/addons/base/report/mako_header.html | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/openerp/addons/base/report/corporate_sxw_header.xml b/openerp/addons/base/report/corporate_sxw_header.xml index d6330e66a7a..d752ffa91a5 100644 --- a/openerp/addons/base/report/corporate_sxw_header.xml +++ b/openerp/addons/base/report/corporate_sxw_header.xml @@ -204,8 +204,8 @@ </table:table-cell> </table:table-row> </table:table> - <text:p text:style-name="P3">[[ company.partner_id and company.partner_id.street ]]</text:p> - <text:p text:style-name="P3">[[ company.partner_id and company.partner_id.zip ]] [[ company.partner_id and company.partner_id.city ]] - [[ company.partner_id and company.partner_id.country_id and company.partner_id.country_id.name ]]</text:p> + <text:p text:style-name="P3">[[ company.partner_id.street ]]</text:p> + <text:p text:style-name="P3">[[ company.partner_id.zip ]] [[ company.partner_id.city ]] - [[ company.partner_id.country_id and company.partner_id.country_id.name ]]</text:p> <table:table table:name="Table3" table:style-name="Table3"> <table:table-column table:style-name="Table3.A"/> <table:table-column table:style-name="Table3.B"/> @@ -214,7 +214,7 @@ <text:p text:style-name="P4">Phone :</text:p> </table:table-cell> <table:table-cell table:style-name="Table3.A1" table:value-type="string"> - <text:p text:style-name="P5">[[ company.partner_id and company.partner_id.phone ]]</text:p> + <text:p text:style-name="P5">[[ company.partner_id.phone ]]</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -222,7 +222,7 @@ <text:p text:style-name="P4">Mail :</text:p> </table:table-cell> <table:table-cell table:style-name="Table3.A2" table:value-type="string"> - <text:p text:style-name="P5">[[ company.partner_id and company.partner_id.email ]]</text:p> + <text:p text:style-name="P5">[[ company.partner_id.email ]]</text:p> </table:table-cell> </table:table-row> </table:table> diff --git a/openerp/addons/base/report/mako_header.html b/openerp/addons/base/report/mako_header.html index a8c7d71b8d9..02839e1ffb3 100644 --- a/openerp/addons/base/report/mako_header.html +++ b/openerp/addons/base/report/mako_header.html @@ -14,7 +14,7 @@ <tr> <td> - % if company['partner_id'] and company['partner_id']['street']: + % if company['partner_id']['street']: <small>${company.partner_id.street}</small></br> %endif </td> @@ -22,7 +22,7 @@ <tr> <td> - % if company['partner_id'] and company['partner_id']['zip']: + % if company['partner_id']['zip']: <small>${company.partner_id.zip} ${company.partner_id.city}-${company.partner_id.country_id and company.partner_id.country_id.name}</small></br> %endif @@ -31,16 +31,16 @@ <tr> <td> - % if company['partner_id'] and company['partner_id']['phone']: - <small><b>Phone:</b>${company.partner_id and company.partner_id.phone}</small></br> + % if company['partner_id']['phone']: + <small><b>Phone:</b>${company.partner_id.phone}</small></br> %endif </td> </tr> <tr> <td> - % if company['partner_id'] and company['partner_id']['email']: - <small><b>Mail:</b>${company.partner_id and company.partner_id.email}</small></br></<address> + % if company['partner_id']['email']: + <small><b>Mail:</b>${company.partner_id.email}</small></br></<address> %endif </td> </tr> From 2671b0ee91ed9dc8b0898e07e46486137ff1ce37 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Fri, 16 Mar 2012 14:59:41 +0100 Subject: [PATCH 108/141] [FIX] base, massmail wizard: we don't want to consider the child companies but only the contacts bzr revid: qdp-launchpad@openerp.com-20120316135941-8n4uttx2nrlwoqqk --- openerp/addons/base/res/wizard/partner_wizard_massmail.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openerp/addons/base/res/wizard/partner_wizard_massmail.py b/openerp/addons/base/res/wizard/partner_wizard_massmail.py index ee8eda91902..cc1b80a1710 100644 --- a/openerp/addons/base/res/wizard/partner_wizard_massmail.py +++ b/openerp/addons/base/res/wizard/partner_wizard_massmail.py @@ -61,6 +61,9 @@ class partner_massmail_wizard(osv.osv_memory): emails_seen = set() for partner in partners: for adr in partner.child_ids: + if adr.is_company: + #we don't want to consider child companies but only the contacts + continue if adr.email and not adr.email in emails_seen: try: emails_seen.add(adr.email) From cc5d6e1b8628f4abbc2f82621b52d5f76d723a1e Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Mon, 19 Mar 2012 11:24:59 +0100 Subject: [PATCH 109/141] [REF] base, res_company: code optimization (partner_id is required on res.company) bzr revid: qdp-launchpad@openerp.com-20120319102459-bihu12q6tvizuay8 --- openerp/addons/base/res/res_company.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index e6fcd92c298..d0e580160f9 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -223,12 +223,11 @@ class res_company(osv.osv): self._get_company_children.clear_cache(self) def create(self, cr, uid, vals, context=None): - if not vals.get('name', False) or vals.get('partner_id', False): self.cache_restart(cr) return super(res_company, self).create(cr, uid, vals, context=context) obj_partner = self.pool.get('res.partner') - partner_id = obj_partner.create(cr, uid, {'name': vals['name'],'is_company':True}, context=context) + partner_id = obj_partner.create(cr, uid, {'name': vals['name'], 'is_company':True}, context=context) vals.update({'partner_id': partner_id}) self.cache_restart(cr) company_id = super(res_company, self).create(cr, uid, vals, context=context) @@ -295,12 +294,12 @@ class res_company(osv.osv): <drawString x="1.3cm" y="%s">[[ company.partner_id.name ]]</drawString> - <drawString x="1.3cm" y="%s">[[ company.partner_id and company.partner_id.street or '' ]]</drawString> - <drawString x="1.3cm" y="%s">[[ company.partner_id and company.partner_id.city or '' ]] - [[ company.partner_id and company.partner_id.country_id and company.partner_id.country_id.name or '']]</drawString> + <drawString x="1.3cm" y="%s">[[ company.partner_id.street or '' ]]</drawString> + <drawString x="1.3cm" y="%s">[[ company.partner_id.city or '' ]] - [[ company.partner_id.country_id and company.partner_id.country_id.name or '']]</drawString> <drawString x="1.3cm" y="%s">Phone:</drawString> - <drawRightString x="7cm" y="%s">[[ company.partner_id and company.partner_id.phone or '' ]]</drawRightString> + <drawRightString x="7cm" y="%s">[[ company.partner_id.phone or '' ]]</drawRightString> <drawString x="1.3cm" y="%s">Mail:</drawString> - <drawRightString x="7cm" y="%s">[[ company.partner_id and company.partner_id.email or '' ]]</drawRightString> + <drawRightString x="7cm" y="%s">[[ company.partner_id.email or '' ]]</drawRightString> <lines>1.3cm %s 7cm %s</lines> <!--page bottom--> From cdf3036682c939bc9a9719735a028d2bfe2c24e3 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Mon, 19 Mar 2012 11:26:05 +0100 Subject: [PATCH 110/141] [IMP] base, res_company: usability improvement bzr revid: qdp-launchpad@openerp.com-20120319102605-wrx0a0vgj6drpazz --- openerp/addons/base/res/res_company.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_company.py b/openerp/addons/base/res/res_company.py index d0e580160f9..7778f6a055a 100644 --- a/openerp/addons/base/res/res_company.py +++ b/openerp/addons/base/res/res_company.py @@ -124,7 +124,7 @@ class res_company(osv.osv): 'rml_header': fields.text('RML Header', required=True), 'rml_header2': fields.text('RML Internal Header', required=True), 'rml_header3': fields.text('RML Internal Header', required=True), - 'logo': fields.related('partner_id', 'photo', string="Photo", type="binary"), + 'logo': fields.related('partner_id', 'photo', string="Logo", type="binary"), 'currency_id': fields.many2one('res.currency', 'Currency', required=True), 'currency_ids': fields.one2many('res.currency', 'company_id', 'Currency'), 'user_ids': fields.many2many('res.users', 'res_company_users_rel', 'cid', 'user_id', 'Accepted Users'), From 17c4d4ccaa76ba58ad094acf6327bf7f6d52c36e Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Mon, 19 Mar 2012 11:31:20 +0100 Subject: [PATCH 111/141] [FIX] base_data.xml: removed reference to deprecated res.partner.address object bzr revid: qdp-launchpad@openerp.com-20120319103120-hqk3xyw6ndw91muj --- openerp/addons/base/base_data.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index afe2291c516..05c4afee931 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -1058,16 +1058,10 @@ <record id="main_partner" model="res.partner"> <field name="name">Your Company</field> <!-- Address and Company ID will be set later --> - <field name="address" eval="[]"/> <field name="company_id" eval="None"/> <field name="customer" eval="False"/> <field name="is_company" eval="True"/> </record> - <record id="main_address" model="res.partner.address"> - <field name="partner_id" ref="main_partner"/> - <field name="type">default</field> - <field name="company_id" eval="None"/> - </record> <!-- Currencies --> <record id="EUR" model="res.currency"> @@ -1103,9 +1097,6 @@ <record id="main_partner" model="res.partner"> <field name="company_id" ref="main_company"/> </record> - <record id="main_address" model="res.partner.address"> - <field name="company_id" ref="main_company"/> - </record> <record id="EUR" model="res.currency"> <field name="company_id" ref="main_company"/> </record> From 44cb4af51d9e77f41f4ef5c545726a1f479e4a37 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Mon, 19 Mar 2012 11:35:11 +0100 Subject: [PATCH 112/141] [REF] base, res_partner: code optimization bzr revid: qdp-launchpad@openerp.com-20120319103511-vzf5p8n7a9wso6ek --- openerp/addons/base/res/res_partner.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 7a9cde0ae25..10c4c5838f2 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -27,7 +27,6 @@ from tools.translate import _ import logging import pooler - class res_payterm(osv.osv): _description = 'Payment term' _name = 'res.payterm' @@ -36,7 +35,6 @@ class res_payterm(osv.osv): 'name': fields.char('Payment Term (short name)', size=64), } - class res_partner_category(osv.osv): def name_get(self, cr, uid, ids, context=None): @@ -101,7 +99,6 @@ class res_partner_category(osv.osv): _parent_order = 'name' _order = 'parent_left' - class res_partner_title(osv.osv): _name = 'res.partner.title' _columns = { @@ -111,17 +108,12 @@ class res_partner_title(osv.osv): } _order = 'name' - def _lang_get(self, cr, uid, context=None): lang_pool = self.pool.get('res.lang') ids = lang_pool.search(cr, uid, [], context=context) res = lang_pool.read(cr, uid, ids, ['code', 'name'], context) return [(r['code'], r['name']) for r in res] + [('','')] -def value_or_id(val): - """ return val or val.id if val is a browse record """ - return val if isinstance(val, (bool, int, long, float, basestring)) else val.id - POSTAL_ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id') ADDRESS_FIELDS = POSTAL_ADDRESS_FIELDS + ('email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang') @@ -220,6 +212,10 @@ class res_partner(osv.osv): return {'value': value, 'domain': domain} def onchange_address(self, cr, uid, ids, use_parent_address, parent_id, context=None): + def value_or_id(val): + """ return val or val.id if val is a browse record """ + return val if isinstance(val, (bool, int, long, float, basestring)) else val.id + if use_parent_address and parent_id: parent = self.browse(cr, uid, parent_id, context=context) return {'value': dict((key, value_or_id(parent[key])) for key in ADDRESS_FIELDS)} From 1a887a5f0cb5d84a498fe8b8281de2e353080984 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Mon, 19 Mar 2012 11:36:02 +0100 Subject: [PATCH 113/141] [FIX] base, res_partner: put back required=True on name field of res.partner bzr revid: qdp-launchpad@openerp.com-20120319103602-uotc8pizwa34f9gd --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 10c4c5838f2..53e56b59ac7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -122,7 +122,7 @@ class res_partner(osv.osv): _name = "res.partner" _order = "name" _columns = { - 'name': fields.char('Name', size=128, select=True), + 'name': fields.char('Name', size=128, required=True, select=True), 'date': fields.date('Date', select=1), 'title': fields.many2one('res.partner.title','Title'), 'parent_id': fields.many2one('res.partner','Parent Partner'), From 81d6591212d6e636a7298d42cf587f098351586b Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Mon, 19 Mar 2012 11:50:06 +0100 Subject: [PATCH 114/141] [FIX] base: put back access rules related to res.partner.address (we must keep access rights as lmong as the model still exists otherwise it's a security hole) bzr revid: qdp-launchpad@openerp.com-20120319105006-tqk337epajcs1hho --- openerp/addons/base/__openerp__.py | 1 + openerp/addons/base/res/res_partner.py | 2 +- openerp/addons/base/security/ir.model.access-1.csv | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 openerp/addons/base/security/ir.model.access-1.csv diff --git a/openerp/addons/base/__openerp__.py b/openerp/addons/base/__openerp__.py index 802a0510e28..a353344190f 100644 --- a/openerp/addons/base/__openerp__.py +++ b/openerp/addons/base/__openerp__.py @@ -75,6 +75,7 @@ 'security/base_security.xml', 'publisher_warranty/publisher_warranty_view.xml', 'security/ir.model.access.csv', + 'security/ir.model.access-1.csv', # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version 'res/res_widget_view.xml', 'res/res_widget_data.xml', 'publisher_warranty/publisher_warranty_data.xml', diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 53e56b59ac7..ff02c690e92 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -420,7 +420,7 @@ class res_partner(osv.osv): -# res.partner.address is deprecated; it is still there for backward compability only +# res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version class res_partner_address(osv.osv): _table = "res_partner" _name = 'res.partner.address' diff --git a/openerp/addons/base/security/ir.model.access-1.csv b/openerp/addons/base/security/ir.model.access-1.csv new file mode 100644 index 00000000000..071458f2b8f --- /dev/null +++ b/openerp/addons/base/security/ir.model.access-1.csv @@ -0,0 +1,4 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_res_partner_address_group_partner_manager","res_partner_address group_partner_manager","model_res_partner_address","group_partner_manager",1,1,1,1 +"access_res_partner_address_group_user","res_partner_address group_user","model_res_partner_address","group_user",1,0,0,0 +"access_res_partner_address","res.partner.address","model_res_partner_address","group_system",1,1,1,1 From ca7b265e9e7f3a601f0b128366de43ca849de747 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Mon, 19 Mar 2012 12:13:57 +0100 Subject: [PATCH 115/141] [REV] base, test_osv_expression: put back the tests that were removed for no reason and replaced the reference to the field 'address' by 'child_ids' bzr revid: qdp-launchpad@openerp.com-20120319111357-nuy2abv4far32h1k --- .../addons/base/test/test_osv_expression.yml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/openerp/addons/base/test/test_osv_expression.yml b/openerp/addons/base/test/test_osv_expression.yml index 19139fde301..fa7a69b74e9 100644 --- a/openerp/addons/base/test/test_osv_expression.yml +++ b/openerp/addons/base/test/test_osv_expression.yml @@ -89,6 +89,15 @@ !python {model: ir.ui.menu }: | ids = self.search(cr, uid, [('sequence','in',[1, 2, 10, 20])]) assert len(ids) >= 1, ids +- + Test one2many operator with empty search list +- + !assert {model: res.partner, search: "[('child_ids', 'in', [])]", count: 0, string: "Ids should be empty"} +- + Test one2many operator with False +- + !assert {model: res.partner, search: "[('child_ids', '=', False)]"}: + - address in (False, None, []) - Test many2many operator with empty search list - @@ -98,6 +107,10 @@ - !assert {model: res.partner, search: "[('category_id', '=', False)]"}: - category_id in (False, None, []) +- + Filtering on invalid value across x2many relationship should return an empty set +- + !assert {model: res.partner, search: "[('child_ids.city','=','foo')]", count: 0, string: "Searching for address.city = foo should give empty results"} - Check if many2one works with empty search list - @@ -502,7 +515,15 @@ vals = {'category_id': [(6, 0, [ref("base.res_partner_category_8")])], 'name': 'OpenERP Test', 'active': False, + 'child_ids': [(0, 0, {'name': 'address of OpenERP Test', 'country_id': ref("base.be")})] } self.create(cr, uid, vals, context=context) res_ids = self.search(cr, uid, [('category_id', 'ilike', 'supplier'), ('active', '=', False)]) assert len(res_ids) != 0, "Record not Found with category supplier and active False." +- + Testing for One2Many field with country Belgium and active=False +- + !python {model: res.partner }: | + res_ids = self.search(cr, uid, [('child_ids.country_id','=','Belgium'),('active','=',False)]) + assert len(res_ids) != 0, "Record not Found with country Belgium and active False." + From f8d9d4792850a3be74f0eb224a4ad9152c60ea63 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Mon, 19 Mar 2012 18:37:22 +0530 Subject: [PATCH 116/141] [fix]base/res:remove the reference of childs only if save the record bzr revid: sbh@tinyerp.com-20120319130722-u1qvxoc945lsfo21 --- openerp/addons/base/res/res_partner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index ff02c690e92..9f3b8df88c9 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -207,7 +207,6 @@ class res_partner(osv.osv): value['parent_id'] = False domain = {'title': [('domain', '=', 'partner')]} else: - value['child_ids'] = [(5,)] domain = {'title': [('domain', '=', 'contact')]} return {'value': value, 'domain': domain} @@ -243,6 +242,8 @@ class res_partner(osv.osv): # Update parent and siblings or children records if isinstance(ids, (int, long)): ids = [ids] + if vals.get('is_company')==False: + vals.update({'child_ids' : [(5,)]}) for partner in self.browse(cr, uid, ids, context=context): update_ids = [] if partner.is_company: From 15d9e002cf29650c94a312c1d1b66e859ebd3295 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Tue, 20 Mar 2012 11:02:51 +0100 Subject: [PATCH 117/141] [IMP] base, res_partner: improved name_search to improve the readability and performances bzr revid: qdp-launchpad@openerp.com-20120320100251-wuv42z80y9nblmyq --- openerp/addons/base/res/res_partner.py | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 9f3b8df88c9..8275a4400f7 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -292,22 +292,14 @@ class res_partner(osv.osv): def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): if not args: args = [] - # short-circuit ref match when possible if name and operator in ('=', 'ilike', '=ilike', 'like'): - ids = self.search(cr, uid, [('ref', '=', name)] + args, limit=limit, context=context) - if not ids: - names = map(lambda x : x.strip(),name.split('(')) - for name in range(len(names)): - domain = [('name', operator, names[name])] - if name > 0: - domain.extend([('id', 'child_of', ids)]) - ids = self.search(cr, uid, domain, limit=limit, context=context) - contact_ids = ids - while contact_ids: - contact_ids = self.search(cr, uid, [('parent_id', 'in', contact_ids)], limit=limit, context=context) - ids.extend(contact_ids) - if args: - ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) + # search on the name of the contacts and of its company + name = '%' + name + '%' + cr.execute('''SELECT partner.id FROM res_partner partner + LEFT JOIN res_partner company ON partner.parent_id = company.id + WHERE partner.name || ' (' || COALESCE(company.name,'') || ')' + ''' + operator + ''' %s ''', (name,)) + ids = cr.fetchall() if ids: return self.name_get(cr, uid, ids, context) return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit) From 3da7c8b8e29029ae6f66474d64b75d4c4e463d70 Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 20 Mar 2012 17:02:30 +0530 Subject: [PATCH 118/141] [IMP]base/res: improved name_search for checking args bzr revid: sbh@tinyerp.com-20120320113230-blhsb47cfzfnfhi3 --- openerp/addons/base/res/res_partner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 8275a4400f7..01047a6dc7b 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -300,6 +300,8 @@ class res_partner(osv.osv): WHERE partner.name || ' (' || COALESCE(company.name,'') || ')' ''' + operator + ''' %s ''', (name,)) ids = cr.fetchall() + if args: + ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) if ids: return self.name_get(cr, uid, ids, context) return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit) From 9bcfaf8d3622316e31299ae2212231c41cde4a7f Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" <sbh@tinyerp.com> Date: Tue, 20 Mar 2012 18:18:15 +0530 Subject: [PATCH 119/141] [Fix]base/res :fix name_search of partner bzr revid: sbh@tinyerp.com-20120320124815-qpz1cqy1m36ehwkm --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 01047a6dc7b..701b3ca2307 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -299,7 +299,7 @@ class res_partner(osv.osv): LEFT JOIN res_partner company ON partner.parent_id = company.id WHERE partner.name || ' (' || COALESCE(company.name,'') || ')' ''' + operator + ''' %s ''', (name,)) - ids = cr.fetchall() + ids = map(lambda x: x[0], cr.fetchall()) if args: ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) if ids: From e37b9a5df361d74ca47d6f129a3fbc665c8c4e30 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Tue, 20 Mar 2012 16:47:57 +0100 Subject: [PATCH 120/141] [FIX] base, res_partner: fixed the name_search in order to propagate the right parameter to super() and to not use the '%' symbol if the operator is '=' bzr revid: qdp-launchpad@openerp.com-20120320154757-0o8q4pb2uch76su2 --- openerp/addons/base/res/res_partner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 701b3ca2307..c570c3b1d20 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -294,11 +294,11 @@ class res_partner(osv.osv): args = [] if name and operator in ('=', 'ilike', '=ilike', 'like'): # search on the name of the contacts and of its company - name = '%' + name + '%' + name2 = operator == '=' and name or '%' + name + '%' cr.execute('''SELECT partner.id FROM res_partner partner LEFT JOIN res_partner company ON partner.parent_id = company.id WHERE partner.name || ' (' || COALESCE(company.name,'') || ')' - ''' + operator + ''' %s ''', (name,)) + ''' + operator + ''' %s ''', (name2,)) ids = map(lambda x: x[0], cr.fetchall()) if args: ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) From d4f378c4efa3215f24c159b7b39e57224695a7a0 Mon Sep 17 00:00:00 2001 From: "Sbh (Openerp)" <sbh@tinyerp.com> Date: Tue, 27 Mar 2012 13:00:04 +0530 Subject: [PATCH 121/141] [Fix] base/res :fix write method for updation of field based on use_parent_address bzr revid: sbh@tinyerp.com-20120327073004-3kxgvoem46gag3ta --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 45d9a3688fd..eae8468741e 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -249,7 +249,7 @@ class res_partner(osv.osv): if partner.is_company: domain_children = [('parent_id', '=', partner.id), ('use_parent_address', '=', True)] update_ids = self.search(cr, uid, domain_children, context=context) - elif partner.parent_id: + elif vals.get('use_parent_address') ==True and partner.parent_id: domain_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address', '=', True)] update_ids = [partner.parent_id.id] + self.search(cr, uid, domain_siblings, context=context) self.update_address(cr, uid, update_ids, vals, context) From 0182a1185dcf265dcdf4ac9efd74d4ef3127cd56 Mon Sep 17 00:00:00 2001 From: "Sbh (Openerp)" <sbh@tinyerp.com> Date: Tue, 27 Mar 2012 14:43:54 +0530 Subject: [PATCH 122/141] [Fix]base/res: Fix the update address bzr revid: sbh@tinyerp.com-20120327091354-j9l4cjto9dx2cnn1 --- openerp/addons/base/res/res_partner.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index eae8468741e..5b6d35530af 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -249,9 +249,13 @@ class res_partner(osv.osv): if partner.is_company: domain_children = [('parent_id', '=', partner.id), ('use_parent_address', '=', True)] update_ids = self.search(cr, uid, domain_children, context=context) - elif vals.get('use_parent_address') ==True and partner.parent_id: - domain_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address', '=', True)] - update_ids = [partner.parent_id.id] + self.search(cr, uid, domain_siblings, context=context) + elif partner.parent_id: + if vals.get('use_parent_address')==True: + domain_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address', '=', True)] + update_ids = [partner.parent_id.id] + self.search(cr, uid, domain_siblings, context=context) + if 'use_parent_address' not in vals and partner.use_parent_address: + domain_siblings = [('parent_id', '=', partner.parent_id.id), ('use_parent_address', '=', True)] + update_ids = [partner.parent_id.id] + self.search(cr, uid, domain_siblings, context=context) self.update_address(cr, uid, update_ids, vals, context) return super(res_partner,self).write(cr, uid, ids, vals, context=context) From 177085aa1683ed1e241685a402941d8ec9703b22 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 27 Mar 2012 16:17:25 +0530 Subject: [PATCH 123/141] [FIX]base: change company_logo bzr revid: kjo@tinyerp.com-20120327104725-j6wxg8xsnd6mvdq8 --- openerp/addons/base/res/company_icon.png | Bin 19790 -> 4127 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/openerp/addons/base/res/company_icon.png b/openerp/addons/base/res/company_icon.png index 10de35e12021107d29b6810cb0acbe126f04d5f8..2995ba1264474a44a30f2c092840683c39effca3 100644 GIT binary patch delta 4123 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 Z{{vI8KcE}n(pdli002ovPDHLkV1m>w-$noc literal 19790 zcmXtA1yqyo+a4i|PzOu}$x+fRog<xqFuJ8fQo6&@NXQ6D5eCu%(kUs8gmjm5N!R!O z{^xwpIb&y>ckg+hxZ}F->sq9ms^UY!=Y${-=;13RIVA8N^xq4N4g6I$Jj(#yuw0Rf za8TJ0)fVu9z*$Mp6$Bz8`|pJXO3NSz{)zAQN<|)j4hNr@A2(9gegp)f1HF=y(e#?x zZT610ob;ykIBRV6-|;_~_VE~i2hmA~e5un-H-DA%J|hrWu{uQ`T_#-i>637J@mHk9 zGj?ry^~wRIaRicHIvxbZ{xBUposzZn-)J`RYz?^f_mtXPi<=#@34(Hd`W0ieQdn4~ zQ@+^bdvKn4a@(?4`x1=|$u4_QJMu>UP~*XkCe|CrP*Y(E2_vqQ`#)?!;y>S+wD@^j zS>=yy*+k8ZP0lVZO7Za>*Q#J0Mg|>Lznk1&Y^BAOF)=aWN|~LS($&`|4EdtQLQG8T z=I)+^z+|&6$r>a3W^QgqM@K*4KNcU}*=9Ta_wQQ~ArnM8EI_wVGdVeVd$7Sa&EMZ& zLPBE8ZH9-qS`8N@4Gt^{%C?zraNoJRy{>Wa^z=MGKi_HKqUEH^LxHf!<<+Z=)3dX= zQ~JR<3kwTBfBr-kj?d5Ej*%U%miPAd0*hc(rN@?phmX(M9~H_K1clRq9>gONELh>B z2s)Ha?QDO4|H;Wo*5>-jWlqk2H>s$o0G?RUKtn@gY;3Grzx2PUJj_pIWyL_~1;r{x zJQ1`Jiq^oM2kkVhzxVd=sL?OgPkt%<-_YfF>g(eZP!x3EmX`J3DAQz{w)gPz5>9$$ zPEZe>g+GH!gUwx>ie*3qs2D7U7G73M2yPO>(!;~U#f6u+qpYkfAt3>n2|Q<HV&b$` z6ARgQpxE`+b^fHiy83u`*B(=8t9P}uq$HTB0G1CS12G(Cb%m2E5#U0kK?F=7H82+{ z-Y`sjEhAb<P8})_+cZQ#<V|z+TLX4BCUz!g_Wmp_E&c9LJl~(6l@eBCOF~LWM2xof zN;pZCn@sEK>D9aMX!CuhqNMD%sPrlP*O7CFFL@d$_hM<eBb=X~zqq(K%#`@?<7b2q zVqENZJoo>49Wa0xeg?<G;@WxEOxMD(9_O+|32(w9F2s0Iq;LZBQE(`vTHnFy>?d$s zHa0fgj25e`hkxfPdhX5qw{Sc>heAygU0q$Sn?pt|ej?xy?cyZWf;eh1kBh_Q$jHch zMwO9{@W<BH);ikSP<aX(8m=S+dQ>;!pk5SYPnpdU^_7k|gbo~X{)$Ql1?eWoA}@|| zr3s{4OIU+PaH9XZiSk!HUa0@KKi?~c>@#Zg0B*gz^z(zcx%u_^K|$cHt*)`Lr0?18 zdVdOMzt7cHL3nsLds1KHL5nZ&j6;{5ot?djFM4`<e0_cI6V==HW@{ye4UCKi*Wb_2 z&qsaTojVW{3V@=Fm%;-eVWu2z1X!V9NDOZn1i|%{B`T0IEC+J%%Fnm!z@DO+PS?n& z`Tcs|da=&-=@tL5_{j=Uc7{Q!r~g6ieR<$DmTN^*li%IVWq%6yyR@@^V{hW(;`qDG zx@5ucs%Hk%g@&`G0BgIxx>C&&_x?MQgM<I*rl$<Vx?X;NRsMoBa<wNeE+&R0iuARE z!4*7$huD8{Ghj*T6Dukn0td^0U0A)yAIL!Daw0BNBVAd|TEU23Po=<3Y>@L1<;U)3 z-}4#j>p!Iip8IpXn<v)8S@ShYfTcX+HugK8_k1ER;(ff9CE=^7wVrV>M+*X>;#Y-% zqXAq9e6=j!Rxyr7!ee*p;^Ja)u1;cKcclBn=fUu*l+BH@EYX*ek^vWoITDR$jES#6 z($KJ$gX<RBFsj1{90Jf6TrxPQtL>zn$Bp*$7u~uFMD2YJwXb9Vezz1B1a9AqV+zGR z4GqPgEL&*dpLU#O12GxlmnNg%U+!lX>y#VSzyA!ms$d8|-<>Jl3EQn3^`K|`60Zh7 z`gOSug0P;So$cOXOxVi*yK=p+zUrAtpo6{r%~XZC@A*F9Fna%;G9YSyU%Uuk&;Ey7 zQdSml6m4Rtr-vmSp+u^1eSQ6yR#IG2()ic9IpY#i8myK77J(Zdym{R+-0>G@_7cZ8 zu;1iLru8GWHj4~YzRLCSFtAd4Gt~;Ek9bD~N{fqk3RipXx}@$8XorT4ggt3sZZ{W4 zkvP{6RZ<Lh|9RHVFLK7crL3R}B9$iC9_$9Tdokd8FElh1p5wgI8A;X?`#3JvF9Lt% zg;v|j%F3qH{iS~CnT-Zws2-YN${ZFR9!DkG<aw}QRuRGbD5UMAiQL^Y<m55>PW5+> zg4Jd?45bd`<l@Q_@jUCp^j9kwAqtD^a@3}Py#s8L|MS51HXCT^;%F5xjW?-JQvhGr z$uQAEn_a^|Utw1B7d%56dvIM<1=w&_v(G6T{BK(@4(;VHMdq`8G3UQaZ}yV{z=Rj= z&sx-qCsqtd;Lcnkk3}{!T;WQAf%pHJecVBxRTT=t6$&{>Jb0XPhaW&`^3{+lyV3b> zr7Jo;Jsl42)@4qdu60^GTJ7QgtXyyS6iy}ber+U2HrY~!pr+QZBy8{FeX##`c_q+P z%hxGmX$6_Oh6bObl`f3})#}+jz{Vx~j~T*asc5LFZ(n`=OIwM((uIMLJnrC$0xXga zRj6raZ@&xNF}H&u%+#5c@!8_RROi5wKRG+@Vue=m#P((Mv!P6}+M1efksfk`WZ>Z5 zRmAz1XtE{suk#Q;rWSPr+><6-wMvx;nvRqd8;g;2k=vh(DaL)c*3mmUtux@KY8@U( zvnXB2X`#tuZ)RpjpFTktunb^U=X<l0lao3ePibqhH=O3Ls!gteXcGlEFY}nMETr_< zAflfl&t#Uu3^s$=qef?E8v_^b<{LdNtLnYVZ{1@zhKwGAYy>GM9SvK(j#frTkx+Rs zOl8c+*B9_z*FIOVG!hMZvp+a?+JZk6Y9jhl-{N#y;ywUDz%Woevhy2JEz?jg4{<IX zVF%9wZ$;f|G(CzgruONaB=ONh(OB2}p97aCo7PrV#2pv^3Zx_?MQf18{`>Wtl2_Bi zl9JqD43Z1OWeEa}30#LO*w2<ZI(lV2BjBnB6-5a@_Ln;J7Xu5@3@msFr!>cBrltxz zFSSXVwC3A}oH(f1H-4YBsGD}2Z*Vyo->Rh*_kyhAYgD(iv;cmdR?@FdjYUoQ52ZU( z;vNO{M3nruA|-6D2T-Im2o~{XHhGdhXUTMzB3v@gk}D5Qj)MTVLszFnk_}PfQ8Wpz zTuebcA!^v22|;1J?+?}P7yP69UjyNs==4gc^`;SURjukAlG+cNJkfMedbURosVNt0 z`2quNHv%wCcC|Ay5IPhXmX_}wd>~S`=?#Q=Oq0+4Ts@E?<c7!X&Q!B!s>*^rNx@*# z9(QJ^c}e%}@qYvUi|1G%^eD0rnti3o_5>%$VYaA<Evizu_3&`H!(I@`oU&hGU<x6w zxL<JTJU%zIo%>6Hv1t@O0S^q1Kt_QTz^_=%qxQpP?7cm*x-!en4Y5EMrfP+nz&gE@ zkl6F4F;`YczepqtfZ9tNF?94AHaNL?Rw3(MFX!>cJcHshTu~8a^eXBf=$xr~T&QMi zoaX9yMMU&ipl7PPVs3xc0zIY7<v?4$cjM#Zg=0={=IeL7%Fv`R^zi1J4B?}MI6uZr zRo9`ht$#~PZ$}YshSrvrmbSLN=l({M2Bm)ncZ9yRH#9ajMllufES^gY6W!89)%cm9 zAX-|=uXfcQ$Sj2igTE>{GcpFYV%<n9%OhAJhhhtvg}q}1!>TGOBC)cpd)wQ6n<rat zSG_DCIu<55FmJag^7)qi`C-J4#~+<%{Ppl^<o=ILmQNs%JdnavaTJejP1Wo*>;vwu zy}cc9+TA@0k7y-JY-c|6TQk3SF}vq+v-Vke1MrSOFjX##j|&;8ECF`QP4pvZ4f(f0 zQc&>E<YaA2i=>p4NvXD$Rw()4{{~a3oM@)D)=SBJWi1wr%h}+$ANQerXKjvg-+A8s zLUN!*=Zfpr_1(O$hV@WJz5jL1sxbMgpP<ez8&hI$>Y9}Hg9rs#B3Vvi80vX<)IoxF zbd7z9tq+8?%*om1c&e8rN}G0|gk$KX-OI)E6$#5NpU%{S>phQtm$~l?b*@J%0~5vI z9MzsMq&`wV*?sNTZ|iJ-!Suna7Hib<$dVd!VuD(T!iU#%(u_<fQV5+dM^&A*XRfx1 zuKtX!p&VF0dBR1sblnnRE11stlqglvIF|x9fLy`wJxdPM01OKal16ZOR64TC-C#37 zaesEy*AqSCnrreeo_FL$jU@v|V|0tSTS*}SVkq!DP76yo(*wv4LLu0FGhp=2M`^h( zdpwLrg6$0IE8NA+&C|}!{`<VXkMsRTSF}eXMUNa)_a|Q2TBX0!HG419Yc}Q885wzq zPyYVS<!(BJdwSMxdJCJX5I<UfFA{S2w5^-bV|FkFiFn2ME1!QWCr7)uy6(U6_d0++ zVZ_~`enQ{2ma`whNE(&zss)1OD*iA}58P$MIwC@;LBoiMh@7%T{7<(he5zm=0cCa* z4y!8f?g(zC?o`Oib-;<@KeoUXvhS-SG6X!P`l5SIb?c$t1rvngv^WvKipYYAWEtwS z?!wRW$LdS$D0ZTwOBH6%jj%+_IWkq#^QRqase7h@NEprCGBrC3fQ@di`@7pqKN@om zOiU+(kh&7+=O2&x&w6A?ge`N4gzp*g!-u6MB?E(lKuonuOMZnh@bInDo)F;7RAo<# zVuDIV+&YAB!f8r5IGg=9{$XCH6ipPNky>a&u9V?TEv+PoH29@T|AuRn)qtvs#Qs~V zxwAy3cr|IT`xwMgG@cZ)g3lEcq7(sAM5k)=y>|e~v+4M3uV&jjI1bFG>t|&a+b2^u zl7+#{w=2vW0q<$ZmSlErYi9OUmxB~ub31<imbT@Y^ZZ8bESLT6P3L7K;ATtnHjYVA zJc+$5=+g3XS+L5O0P#mN=7rXs)z>9x9d5%qXCRiIp1Q+uF#<`5CkS~Bp%r}V7!0y- zA?Nq<hj6>3k6U7iaRykkcX22X2p5JTe?<pX8Gdq{pM*xve7xGe`3k|t>4o8e<ly96 z_7zTaN$mR~KD*2Fz0poBygWS4K;DBaTx;M$IZu`u0fW%8;x*R_)yCtP<xcCP+ht6U z;?3_*hBj$6)|2~YEzZ{4`?F51M#U5F>*p>mygUnw^<ESe=_gn7f7B?{<Z8Jd0s@wf zj*fX>CIUkk3a3wqpw<SvuqFMarlAq>5>98w`1*tt>wrT3du+NG2(lyS^3l6$m)UNT z@F;{BwFLM{8-GzvMU!sJbT@>zN6T-R7+b>m$z-o3QE23?KNLgCI_W8&%ll_>a$;hT z{6P)%D+rkmOawsw&|o!0<b$Wu(gck0pNL=<1Lm~>$1G9wbc~xWOWcwrZScQ9K5PS% zdI=2ogZ6jjR#o*C2?=Hu&~MLSa{M3Zz-9AwcSB+aB_$=!L!4j%+2PHTUJFtft~ZL& zEXFh@s_<V$f$ByhzG!K~vd@5nZA+Y3W=~O&qH-!dh{=*VqVLp)&YLSGxX{8PO;E#v zPbFG@<yv2q+GB<qL7e{!6;>+HH-(VIr+1qCZC<U=j2=8YJ9FF|H@ob{kb&*xoxh`b zE5MgeZD*oHfH)2T!$V2(ek<1SN=j#(C>^q_BrNGyxC!e_-Hspmo);{7Z)TRa91~*x zX=M8y0g053)4XWl5#XWW%Jo|F1MBZUD@U;nJmd4IOzhP>xZtXF5HnWX+2X(QX(z;r zL`A2{+I+Kp6A>W;0=1!7d(o}SWy8b1Tge9^<kC?*aImQj6B$yA=PNv7W=7#%6<(b* zdBDNPNy_x3IH_~L7<+@r*i;7ufd|zN5AiKeMAP}FUTH7^46bB}u*WvPXCsy+X-;`{ zclU)1W?^>Fa`d|*DJiMZ^8io%VnXV2wYT@xr27;3NQRPnLoTZtHEek;&i-wR=g+6A zJ)MU;lQf)uY#J1mk<f{q`V>r@<sSC@8uqK3_>B#>(ak^nl!GE&<@tvNQX^y$=}x7i z!iM@j^WiJCL%4fmD(gmU1RNKdyzdwOwT&zRIWK^SX2vE|SU=*XfI4AVi|07QaqBI6 zKqeXj4uf=yto<SiVTt)T>;d+9QRe7dd{8VF)jm;u3?OE^>gSm8%96aKUz;asrrmE) zF#4FYvxhM>l6-a6*wVI^RjClVgjvV(shZ8}`j!w=W)HJbGBpqioy%FS`TK_<%qf+X z)wFopFf&^gZpI>#Tyc<BWXG4_Hh^bYM2knh8m|Z>N9PBN_xql$VlHp*j|yTx#>Vo& zSEbuM;z>yc!1B1V1R*TMw{%uj6<-+W)}Fq7eK=|HyvA%JgBw5+5`p{2>;2XG4`FE4 zg2sjhWTB=Z43xu&Dk@52Uo)C~$@h8rgJRXReQ`@K_+uVK-2UZuSFkB6K3^XkTvxOk z8O(DcnzmzGwln1b4Gm%)w`C7DC-^Kh&^Ky!`R5@=(27XW4r>_^)|Z;n7x61TcyW++ zIO1o0bAykm_vMU10UjP6Gc$9yVoznEfI<*5iZ}UFc-iV@@WHi9i!p*V4}=Y3J*qKp z_%Mjg8VZdk0{j&ctY>TloM6u~<5uHRZ5Xamm^urT@3R057aJtpL;kMl)6hl(URc;U zb)C;P=ZGB>?&Jqm->Mm#A8l4zL>-Klw%~15MR)scw;w!H1nsk!w^E&4{$OQcJX3HE z`_IyA4Md?>BKJRH;zWxON~>_vcm!J)*K>Iv(JqG`<|#AfZ8ijRuz8}z%%o-t9||JP zBRH)NomQ{omGIyD`N2=JHSqrKKeYGg5rWldaWldhkI9mDYKC{AJ0I`;Pg-@<1<p}) zb#-+#fXnNgP0h_^!8zXmAjbkFjQWZK0Zti|T4eG5vZcaEqQiW;C0H4DU=o0@5i(Yo zHeZMvkTVrpsaK%au|+)iOpUybye4FX+2RG*i8qfnif~O9hE*ZUh|%>sbiQ2n6E#T{ zz8Vi+eIX$v4HV``u)%F;Q<r>5NFKTxz;fD2@Glk$hl-vY!a*z^f)R8u08{{|IkLF$ zKRgPYR6#*2J#G8*u3Y^d2Pf-jT5&#!qiZ#6urx-$8GtX-C!2lie481_v|fv-uCJ!# z6{(OQQfwG*n9bYCtd49i62upB0@*PbDu)(`wFcA5^qIV$2v86_HGYBC`I6F7ieBjN zQ(A_`Q<zy$JOlzqMX;?;Xp}ektq)M-7fJ&Gj)fT<%$Y?`hvG@-wM(mMY5HDM3BfZi zfrr|r<usI0;$op7B+9HG6JL~S@AM_H1E6hpe}4hkhMynsUx(6ng2DCFucz{ViZxT? zzAe>jb=w-9uClJJvYocC(PZn2LP7Z85Bq<R79MZE|BIjDs%*=bezKRGzoc4B<AY_@ z*=JRGX;$6T{#Tnq&%qmGt{0V45FI)Z8vceH^`uXEY`0Ez=`!QQqquA5i3&egv%jdb zXrvrM=cQ0gjbsT+vSsx{B7TIfvdn{go8jeL()RW6s*fKZ4tvtm@oH0;o09uvZF(>4 z{x{};#MonR+W%q+$bw0Xv{vf=`EFUVtguCRH2R-jedM=Z0E#fCP!#B=9R2T!i6mua z-fj>Go@z?oRo33N@2|jjT3UXmPBq+yVu><y@;d$a(25)+3x<t7L==8y;adqlc+Fbz zbps*asLcSDWs!n#c-zxa{Z$9UMk&(CX`e)t4GudvmWahNfL1)NM{8SLu1hEJ6&135 zHl`PXWxCFvEXtQM<9?dqoJWwGehJ0uMtM6bOq^v28&l3#^W8gN{=A*&3XR>N2Z6eg zll0x9Wjl?rjV%H0?(WBP^>=r7IAr)M8P7v>k0DBtjLsQDYng?vn{S2(2k~XT;1q7_ zbEOPgRHEMYGOz{}7Ek+?IZf`j{7i7uaVpRogJ&xwgpjz4o)(I!=H}=|mVDJCNulTS zqtzA?BRW~W60LA}305YdFoo8|ZhPlVAaSyVhgPlI2VhV*3#2`CzaZ;c&fMMIJHW%m z!^-q5*vLVtT`a5C<@(QQVXvR3Nu%DINB?$=n2Kz_j4}6GeA(s&6ZK&mP5R<fEBAyc zDoS3>y$ihS`8g^M8Fdkd(aYeD2@E6x3Gi&0=+I2_7W=t1kmUe%Z=jenH#<vt{C9sX zvvxS6+4BHEq!4(1(Pu-!>_L{Or*Lv?h>m=vq3NQv<fK>)<$D=oYWgLf=LlAcYLbnu zm^6gCybhm;jusf^Kr=C~YLiy~6DIs}OZ$&0SI2wr-;T!h{;Pvk*0T_C5oQj|8a8&k zGP8PT;^obqIj#5kxWTgpuO}L2vmQ`+Qz+-41RA-};B))te*S=3B0xNG*g<3Q!j}bu zMluFl**<^G+ud-DAJ%=&C7G&cr1xHbkcXH6mTXB8_It~1<%fQ~VQjFEg#}~OSD@bJ z9m^h+hXy(eev;)oSGhqVg2W7q6CWYAf;*qhbZXRo6hG0@de?$4w<`=+R-#XIfBvwW z9Ge70cl<%SSZjN)>ol#X2m&Hb2$@<-@-(^M5ZYg8*lJve`|WwVEGN526akNbU`z9S zv~=wPq9EfZ#Vl_hb9YNi(*W1p6>npx{LZ^#?)$Fnrps;i#<N|qyWiH-J(1~_bm-un zacvzha@MF2Py(s6vS+53kHvlP#N}mDIKS)pzLt>C3j20L*|t8tY0YeA@_dcM^-NN6 z1xYwLhOE#}GM$Gr5*8msSF)|2qq$2-K`ZHH;bPU`vrJ`)Qs?M!c6G0xE^)$8Gez`= zQ!w)#Po@aU4(q&3=6XUFiJC3yQg*1)zCBsI2Fg!m)1`tiIdybunz-YG-L>bq=5R17 zp1zMI(#6*Ppp&25@4YF|blCXWTqs85TGdVhK{ieVoZr;%q;O;SY@-N3(g+rkN4z_3 zf+Gk${)em&K+<DBAiuIIjAZf8swPdcoBUv(m7KKyQ1>LLcSd|ttrG5?vlpc9QHL_c znskd$;nFb+>->5gdq5%Kr7J{Q-?A`KuLp+VeXnV#)YH@9|7_9leQ$`j+k#w^{T<2X zwAr)YP%OF!5p*Sm$;2I2&Bn&MEW?8gAu40a7-U+`u=3(!S-!U)T?t;xQ#=U$6NWiQ z#dnr-_Q;^ORl%Y)q+Ue_PoUImCmlu-Z}t}NpP5{q5Bemz8o&D^g3kwb<NgBl;8;w* zTo~hFfh)dKH!je5$eQB0ihdnKV!bvX(1;RXruDrGRq%Ipxia>4$(gVVHDy5wXuf<+ zu*s@2#)^>!vpg^#s3bKdKg+8Me<YQ}3f<FJIq~m0*BmY#o>P=)e$`I=O24c))RY`g zl*!N4^<)8!ZQ9PmkGoSA2jOd1vv(BtJD)4<PbqleWPpSqNFyy4+uDK)VrOfb-F%N- zKJX|rQ^Tp@SRg90H(EkKokvzVXPnbCmCJM#(Pp7PQ)>UlNfg?4b+z<sB!}UR%6y%R zr`>yZ_X$%pDK-d#mT$n~v;AFhs;sS{d3Tnc$z$kLi;Cb2r5ehYov$RYZ1%s7&HS4t z{9UhbV7}h}cI8sFfB}P!N2)xgh^DiMVM6wr=?wq6`%uemWJhNA?;&}8$>U%gX?|kr z{BO<vpDSD%jUO~TqOX;G#mK}cz&F_Wx9nF1frgssdJ$o#O<|?W^7wgKt8dO&4J#(n zzAW(V-=(9~TUl9&j@(+V<}vIy*eFkhrzG(DtgN$*{P`a^=Q;C^IIK_Pe_9lugO6E0 z!DZH#5`Y3MjZvz%v!~th%GOw>DkYp4)E;3LQ6otV10l`wn8t$VXAF&wB!vEnK@eIR z9PC@4KmLaErmHM^ZDMc2P{R8SFcc$cB+|)b@vrXr-!i{9i_Hc?t7{H#XOpU*FeG(E zMPcQk`MRNS3Ny#XCn?z=5YN}5BA={&%}_cHhP%W4wOh(b%8z*6Qvxa|HP8FD;hScY zZCV<FjM$>03-z&0vO^$?0fAYWWOQ=}dQcdREjR7VCe9pZ{Xr}D50E_eqGw@B*jT~& z6ulOoTo?F-dBptBmvO|n%FpJ{W^N3Z>I>lnvXNL&Fk4heP$aoIVs09{0t9g(PB0~p z{Yn5^>H9QAVID(#kSY9c_e4%hQ^Gcl83iHK)6?%nAt#icHEL=-fqW}Mz?{=h^(`5Q z7unlGmH0yH+UKlRN6(G3{heDUY@{OqjIL4@=*0*Q;UOmKGUH3K^P<6nNU}Z<Z(zd( zK@=#=A#izhVp(%Ef)xuT^D9%^*VW-cE~nx{^$=b;<nu^e^X)T#vi2DJAroUmgA5%O zA}<tgH~J9767^~58Sx+*DM<N}hrQ!lBIi@yAhE~vpdi=6f={78Wy+^VRE&<*Pzh+H zS;jV7H9KX@(v<&U=1||9>~M66{Zmt_7gt!2n2NUZvP?1myHX*YXPY4DqN44F1%947 z>x0hDqr}ZcA9Jg1u8?@rc4!F?>E+M3s5aUVY_H}ryx^x{Af=CxdcDH=#uwOcWJSgu zd3)5cO&)&;Dbf`5{$4?WN8@2Xc&^!_5W+C4fUKk&$%VWwL}48nF|2W=pkd^AMLQ%R zBi(q9{J+}eO~4%$Pb4(@(0ys^cI!h9jV*-_#KAbYkQBpU_(RRXbNAtADveco(IN2- z)NoyFEPgQdq`4|(ZF<yBU2$>molKH66WFUD_c8$LvT+Hdf_|sRnELB6b!Zxz7akSb z-hzXFP9@Su-cOOXkDqp6Yb>Y#(8&SlV1Jk_Rv?$y&u}(Oo%l%(q9Y(sVOQ48Onck} zdPVWA=rxOSz72CU)r-Y>25hNu&GeC|y>Fz_W36&%od4$nj1pd|sZ+suyGbzZKi-Ny zoZ(FFw~Kn77DlU(t`0Qr`VgQoXxKi_gMun6r*a}jewA$X6hg|bLS72fd=@t4JZjuY zLrOM8fDMa4DHxu?`Ncl0HvMJKJHjm<`5o$Cu`vRILQwW)@IsCNln?sd$0^En2wDV` zc9caAZ`OWIEf3$=*Tk3W2%`PC#szfL88XXeJ;Fzjg$72fLcD&T=s0lO$Tv^C@hWKD zo_`D*t65#4h~nwi#SCnc#Dj6Z{e9kDw<`EYr@d`4YUCA{_;7+aoOrZu<`F1Joh>C= zynMb$K6tUhfgt!R3zQ6;lVg{aPY}6S{DuS@G*Xd%YNsNUh@dAi2X&{y)ws+52o_DZ z(99#~2*3(1ew>GMVnStjS+s%pu+HxT_M&5A!j<=h=GKc>j(-~)EbY?%n8uhgW1tB- z#V;Ftd`BVM$+5h#tII%f^I*6<jGU|p65&Ok(Dw}CnK=0X|D%3sQxljZ530DFeDqR< zKLK$}hepDGbgj1YG+lJ>yo-MQVYTs5;6L*s)6N5P1sSN`mLXrdmgW<Mb_XGGu~0|^ z%-WjdGFLa`6Km3(ex}-UF->|x?agP2m-c+=y%wWTQ&5m8x%$!@<9fI4#&U@!sV-R= z2s6s!{Z?>J#qZ|ptFWFZe~E((i3hkAF+4G#xT2lntl8ioE51TQuF0vXk<{a0QB02y z_DavAkZ)slF5GWZ|Ayu8gkVA8Hesf^+Lr$QE{?JE92U4RO>h?kMocX6lN<-$?E>xD zpKJIxH2+S=vB@>y;Ad{BPX~gDwH<`5^sUeq1;LVGv2b@CtD4QX?PHna`s6om&`W}i zf|Nj1a#VAlKA=$$Na$aS4jr6$62uFlTlqP#m%do{{_;<CahW+83Wln9)@Z%*tM{1{ zhDCFNSau>0ji$qXi)otqHW@9^9F>n?ebTK7a4kOCRnOar2RjRtPp&u%0M2STG{wZY z#ov6f<+dm5)+XwlZ&*V%TSS!<Ta37R<gr9{1I>xih+PnibgAG<NJCb)EHPs@IRg~& zv*Yc_!uVDpEAHEkHmr(@*ic4I`HxTCMSYeG)W<E;()aS4zweF<LKnw!!5~(Y8td;| zwTBFtG25icKXb8;sS2Gis6IJQk7;c2^rJmD{eE`t+o4wXj97RCrl_ds$E*VhYQU9~ z@pan1yS_3A9<g07ExayPt5NSq_!A1!Z%g{6GpFj{kzb>)YROLkA|5K-k+gygx$#uc zQg1FuT(eDVX9w(HbcQp<&i?hXfQ=AJ%(8rXD^vCREj+|HUCyk9p{B)S%V9ZdCpr1u zboS&5i@$6d=gS;Qu4Bp0HRdwvTaSG2ho`dq6|=nsQxNYvcGZ|QSeZ;1gProK-cC5P zz5|fh3Iq}LFdvt2_WLX+UA38KL-F4oJamRdr9e7P>3=Z9RfoG8BL^9^=u=|!!4LPj z#%sA9bh@DLOqFYRbrPy%8D%wXT<`#*p=amyL-%h{31{&o{0r~1)#{qW-p!c1JNul7 zXHN}4xJ6fa(z;-hJqc&$m0!!(o{lEXe(QS&&A-1*aP}XI#;zHfJ~!uBBLUGrvS5os z&VMW6;=FEY)#~c@zMt~C-}jF`-yfK7t!=0qDG|Ei@p3+2*v)KA8EO)7SwoH0@CFqX znZ=Nxh#6v5l?$M1ghRnWAkgB;_pg{rk^G$)Ry8HL&+y*yQ}*)PiOGT&2Ul68MF3yu z7Dv|ijCRid0`mBx_U`x{Tn_mj!OHaQkE7OPU!?L=a}L;dw-0<JMMaw);yp>&&k2gB zwCuDf)AAiw?-R}1d0KoHM{EQWKMT9%)wCSVPnt;FZkz|~2;Ie*_ry})|LQel?t;X? zbjE&I@NLadN7BI<RiC}?6$xtY$PLSXyeFn+VBmi}yU51PL5G*iGNW7Ebh+n*h0DJ+ zw>#hK)=rPIQI>&7+L3rU$*OfDKP$g;WpG?TDg9xm3_NbUKVO?D-qZeo4CQ^9Ihf&f zc8T+b`gI;h2SQLt5WrJ%NH`4&Xi&&N82P5n3Q>@Dh;16FhiKC2Y3U4%@nHv#d+wOc ze2e$(?4r*W0V>zi;}XG2^0X*KLW%G508k-sR?lp5&n<7=9GI?Myx4!Y+UV)OJH5H5 zO=(_Yt3QWpN5Kq}lcO@@VCp1C5|dzGniU4x9Bw4NhRX6M=<BBz>%40@Ac7U8Q?{Ns z-3_+{=j6Vj4!q;fo@SFLF_5a=+2BE;k+Ng&-mUvopB>))NNtFQRC06(kfrj-t3RTa z;^h(F|FJ_%2F8Fs5z(QR=*N+)5?}yGqPvN`9V|m3X5aK%bo0>Ik;*EqLjLD(T91>e z3WibQGmd3}8Owhgo?rMt5v(smw74y5KBl`Du_;eR&cBjAWY50VyK%j^T7R8VW_a0` za;H)?&0#mwK1hj!gELh@f{xnRQb(b_fD4VK?I~*=5ag>l8^UQ;ek-n021a^m^}grJ z1Gjxw4XeW9hbd0;hV}j@nK~w02L~yG`9Ev_eNoIIePBn<;#g4A@cvAU+oaj6LZ8b3 z@)n^o#^K?<C*hW-1@u;ZUbz@aIOELbBi}Zb;=`ioyUwfWl#fSTsUBdrsGHV2grW94 z%8JLgg%Jh4;yv@a*B#uqI{?jzRqhhM^&%P-zj!ma=yxNs{6p4;k{%S?)@eR~r<R(Z zJY1oPNVUQ@t=7z#^86w!cs9okbpI2D0uDR_?@QTr90Qh#0CGdXQRth1wa*0--J;|S zC`~x3%thrxAtU<+j8RhK!P4|{h4P~GWM^=JXr@r>?J<UElUFX-K~dc;(B0k6mH-YW ziP~JFQ|4$lROT`aI3IYosOKllj>%(tNnEVUwkP3Z;p}DaJed{kl(}u#iZ}KuZIBnl z2tVbqliij11tzhAb3*-_rjPwe9ylmN<zGF1s5foj22C9jz^$wLJ_5N(%)b1`KP*`b za7BnVhkjuE=9GoY6k=7J?Q!jAJ;WShDt@Btw&Lkx2;?GwPTJ}DdEjP}PIwre&(+m% zriky^zt1^2Fcd&rvXA>~z}~o*oFouw_p2049Yt@Gwz2f<?`>lu(PJ9P`xT-wjr071 zf})*w#*lrgd?pNW$Kl+$ajn513uz2*cLdt`t;N6TH-R2DZUdf%9Xt>ysk7`$zv1b* zxgZEz+Ebxdge2-=VuRfq-FUDcjkSsxVl10&QS7(2`^&U`m!2lRm+MBp9`}hRx9y#s za^ztZ@*nT7SJ$!P6mC0DzXK)d!l@#@N%zS<cGcN#QXroP$Q(sQ&wV6QzG`mYIo&Nw zT_u@Ztpoknrqe$Ll$4Y%`#{f#p!f9OxQ<12<*T=xheleHn({6<w9;RBnN+7}L_JnM zZ%Q4#_3=6GKBb&28<5I45$C3HdHTlw$iM-mM4!V<8o7LA#2(GAtc4e*SUGLaq}vq% z2M5bd3_gU>hgMjy=_D1qYzCu8_JnI3UX0nQjIGENfO9?`&lE3uuZwZF=IsDpFeqn> zfx#T8V<P7@S;8Q9e^p1qU9fA|TUW`Xd1b&%8rp)1LMj@FX}fW|B$WqbA6eCxx-?!B zcl_PnMih(<OJ46f-TrZs@H%|U9vB_3@L46vq8$kh<$3<Vw7D`E^d^sp*YR~51v4hg zSYd15|N2da-<8R2`Mt)bIyqm<LzOXPq1?gJuPK0&=gZu3loUuSuWtB0hlLP3VbeQj z37lhCu_i{{4e1sRAcWy|3mb5FmDYSMih+RIKBiCJT}oa1k%whptPy43ib<V!@01%i z`-MU}$u$T73Y24YwloV|U|XNu#uNk^|2h%_@7ik9{=h;wrn%xVPABaVE@bynfyi?P z40{QNPBO&ez|ezM$-ki?ykK^)ZE)Nyr`ar<IpJm+Eto{6k-9;(S-;~H+wtWD9b;C< zjG&DGvM}#EadfmcIXy}^?jH*RHZ{2@<g!+X^mJlNe_hn@+)EnKabj6Ls+St~N64lT zgWu9sPa$79W-1-FUilP{FX{)6MOLopqkn!|K2FU?^Ov(ig_{!9_ifQqCqO~Tq;DPF zHrcLrBH>gD^l@~c@<;v}5j}$_bv6fvxiBSAFUkJfAIl9nRu)m-$q0h6?*#dmK*L^K z*EoXZRGeEiqbL+x9Xh^cll<hHK5;uqw_p&ZhnSj8OMDOc)pIfum9tY<DS#;1k}r&| zL&w|4T8vG(>IxDyx5?B!WWtq}mV<1+9hGo7Y>Uo*C`N6yZO6A&Oo;uRGuKKiLb*zq zM=AfH9?jB4-*43vJMZWzs$4;`Fa3+IbBjZnxqPwiXw>9xV!T-_cvI^9X!HI~>Z%6- z9LD9v82ZVF;qjtzhQpXk!xmk}*U>7y*;Hh)?540_^3bftmKH7yluC(<CkXNi1#n@2 zR=zn^*z(LwTE4Bz<zQ^LjVk$AsoWBJ^4T-@`8ASGFcL1el%B8mm(8{ahO*Ht#)Xq8 z5MsbYSQoigo)w{A!IWXY9~p-7LWj9m=3JVPZ-g)^S~?IoX*&y8J0)2(Q<d+t@&i`Z z90*+QW_jSl;zjm-3VRB-$NAZ9?ft(KC;tN=Lq!&%P03qUN$F|}9G((}YUdX6SvI~o z1LAOP{~_$tv>P7QUvJ~a-@C#N;GCig;a*j6q#F6N5DkRL=AMUG77ZH{KB#AmnY7np z$qlRpLW>jfn5#+S!YnmqIG9Jniu97TfX=>7a@wgjN8S0#DAg-miX1eg)qHls4uXpw zRhCRtW|p1&9YIqI6DX>76V2?k5a@8;O-5(DCOQ5)u%&VP0q6d5@t!-DN=i^bIAD2> z0?UHR$;N$G7)A_IN=>#+3+U-0S5(hq6}^4@@bLDY7lu>c8UHqhH;9!T=!S9hlfng_ ze>^>Yjum0H;xM?26=s^6Pmz-4R4^VIK@LkRqE|u|qT0zZ2xw?}5+68MQ}TrcM65;5 zbjwZjkV-+Tc6B$yo*o4W;_t>DE-Z5Z;YLf$$MCXZx&^`r(3RSHuA&aCmh_o@NrWEN zriC;1RZqeU-^+l#m%HBF-2|SUk8b@a;u}-L0^u%?ob;a-?KFfMBGl2s+|b82#S?bD z7RTna*Hdw#N2eWFrXLiM2qxlh2Suv*Khjfq3;E_;e(>Z`hc`G@H`I^VVWXgn=2=Ag zoW1q-f*K80gfwy2LF!(6zD{{yj;D>9uRmlJT$HV;KmQQXadrd$(L$mvSj{skp7JB@ z`!o;Vmg*9vsm-C+ZVpeo648gZ{-uKF(qwa$$X9ev7JDFX8|(E-$NP)x%~-L5o}(0& z-qkeLRQ|il&h*~Gq`Ymkg@3~fFyVWN9ukgKsgM8GD^81Wa<CH39)5utxfucHa;fxW zs=7OJeV^^MV0&n4tPWia#HO3WhDh7s{}fud;8JEj19->2&e9d6Z2}G`8^Lr6s@=CS z<R{|83c}-VrMiqUraiE*W!^3Ymi;+{BFCGvgMfNXHi_HFH#A}{?J!(q(b{WaFhD9& zDfo$re)N+D!=>ROTD*4BcH{up=VeDj7;NY{G`8k0>c;GlS~{N!rL`<Obqw|_L>*2a zTlo5}pT47k1)Bz356qg}c9e4ramU2OprWJ8c90QpEuE+bj+E%p{MDKuO-&3BUvj@S zK)gcx<@laEQszAB{;b@MV1C#iLP^PmNhp)5Kr?RM0FC3xa^szYgZs`GCKtN}Qe=;B zA|ts_JlVrNWOOUt3|d+kG<x(rh8)H1x8WL=)C6!O7H^`ZZqH2oo6Q>)<7mg+n>$3{ zzXVhizOB&{d%L?b98!%5$V2U|*K00$P-+;q7qK~Zd)f^D{7`CqiL6he(<v!qAaaKQ z7rpf=<-TL(`1nr3_rCxB$i#~8bKr%^y$<gWHa1MEK)QSRs--JXL`O?ckax-HJREk- zL%W0~Tk4f+vuBwcn#<)$;Sx_}DR5vqAudAzTN02%+*eE8N6XRw6tT7^LeV~H#6rav z6@g*1HLDar6d8YcvYLH27mS1dH2JBMaf{!^UajL|)7>dRNdRcTJv|;8h}DSPd{#gU zu~WQm)x0elKvf!Z0BfNQRSQi>+njj!vV#Yt0Fl-h)6|*}7<8=J*q4gv_iDYk<W{AU z)cv(S+0P#Lujd0DKx%)gjz(ajE&)gn`^s9h>0RR>Yt#9IH-H8H3z$7{oJ2OkIWIu% zi>=on5FkWwa2Vu?;SRj)&%U19R8Ul;FqeUJ-pfy(%F$PF`onPHO5k8R0j)0H7}@Yg z*}`{jRntxWw=>!Pr*RPYi|o5!*7rlh^?TZL3T*&b{~U?E>E}B>tXk{kZ#nH)P23-a zzr{d6+`s!{wqU_)PprI&&wIxM5Ozr2y=ZN)9;R75cbA`k6b{Dv%7V~~WEo}cNF^N; z0H_01(=q)coa_`%%<}4X)iYaT1pr4$jSHyvl5LzeJPq5pE^v1;V2X_Y>(+9IA9&a; z)WXZld$bbGO(Wrh_Re~a`>RG|vvOK_yMYx&BM*T;F=slA*jrK<Q<8arC2<%R6BoEW zmR;|2Ig0V*YB`zNfx!DK<^0L2E5GllDZj14C?>E9qm;loiaAfinv8Q|Q@V8%KZ(R{ zU#de515Rfb@BXlBc<%4cH=er=O9=5xWQMgtNor@62=$!EGZe)~+oex%I0@}%^V6Q% zYbp>u=>BFeIOx{kQ2RjPSB-qG%f8s+f1LE28}Us;86`wLKh>?!XT!rpHoEa2PeG*@ zKA=NgGLZd56hLUe1y`pHUh-QTH#+B(mzPi5TjAlWv&pL@)^WWgP8k&h=&P|6!>Roc zr2;havBIb|+lz}fMX8$ewcgE?<o&sp%hD9%tc<j)XZP3lXN7P4uckC!AXXWsTpdtp zq#)KjG?<<Y{#n^F4Bucd-%&5M;t^g7mr1MJ`To-3h}6YI;MH7@iSTK&P`T=xG36l^ zH<9={`jXebvA?ilg+@?@>HqSLX^<f|<=~7aGdunFEuZ2W+iON_txT?z0uyg0Vp%0{ z9u(FovKdyvuXdJ7R29%B0ul@BP*fKX6JtktU9P794D15QQ-CcW*OU9F)}a<%IbkF0 zQ9OoxIR7aKCo&b0!wpCv9?^&cLZD{jH%yg*hu8P}ad(SSes^TFi>*%d#2t^{g2LoX zW6TVV4X=i3Tiw@3*Wo#bu7G_GOWwO^S%$)~$jGmaN<DHbD->8?x|?4Eq<t5vf*QS# zir!tENiL<jjq{R#4gz47trk9+Whf3HzQ&P6Cs@t~-mjEX`d_z5eZ_*ozv-8@{2P5; z-g32FX4EKocN7Qgiqi*??mAr#ZAP0~(HaM!E6ozs2c?jUQ0q{Jgna5<le#`=nJN)l z@YyLHD_FSeFAvQ9ZPQdPPNbw|33#Z*o2$u|>r9={2u&^O*_Qz9zE#dq`=(utMiS&e z%={fxupM>tE%nM~vEbci4%PbA`ka|6wox>m6{ayplmF2w(w(x>vIEJ_DO-hjb`xBW z>IyL8NJ)Iqt@Bo3D{}~4YDPvAfJWQe+RkF=u+_!M=sznz&wu)uz1T^cX{pyO*^~fx zE#qBL#paeoZf<VtAyKRI#=vK8|E<>mOaE<8_O`I^)p%{oC9+sg3gF-l`<?Lzo=r$S zy7|Q?paqNv^n_G8V3{YQ6B84*voUI57pj5Cg2X2$p<Z`hH!%R6v-NhiRf3;?_4>{O zZ|j8#Ej;=YjeI_6RxmIeyJlD}gC+dHVWjR06^M>0L@f^ffB}YjO2TyLTuhM883rRw zSiz@T`Kkvnsi#W%3?J3Z>XXN-rh8D0*gdow?dE@T-*s@GRrS;~1_jNB=#!Vsr%O8j z9pP`ic@4}b)a;0f1{?P6Krub(>ZU1|<yXxq-S`JJ7m3Ll8FG(4ON|I6#0S@x;BPyG ziz#5$#rmqtLsM@@68cE2kyfXBhXWs0rpmno{AJpZ?zI;`?xH^`yd*X-7<8z}NQj4H zLx#N)K}sN|i=~XLb3`MZy)0Ckk!}e*t5oJLnp0-eMc>V%_Jrif?fxyq2k0OZR*}4C z)gXG1+;2KOhGc~*2)1*A;&I{FteBtZ?CVRDo5t1~c5;}O&Vc5OHJe-|j_H_tp5=zm zm95}AvXZBSjEP%6X0>J?y)1obs)0xv)eLOaXW<we$dL5E0vIiWR%GAYtg*MRF|=YU z?E<Z|D5)D;*7aiq2I)dwU|b%!RL*`Q{ozEGP)CYKh??YO0z&(bP;yGjLzU$WSzO*= zo{)S;w^O%wK>I3U&uieg<=$6#v)7_hjpaw0dlD-IPSD=AIcQbYSeyd+x@AC?1+akh z^^e7eD>-^x%&rrMH$^s0u4g8PvLp-&HER+)(vSS;C@&c5C8P?mpFZ6vN>7j7!Dc0a zgZo-9u@BPAj%B#0rD(!N`37Pg$>2QL8LmmJU}-SSl2~FJ*9>JAlRmfss4C{N&at>b z^u5q_^3@EdlG3Yy2;QNM=t51lL!+oyB?WfXX{y!~IYnh%R++roY)OF0aZb7eLOh}? z9HG{+_M55rLk5<&{}c0Fw6tpUzwh~WN&DuC_Rx?*ixorOhfW%C3pFFX`sri&!8L1m zqoy^SjU%PMtI5Z}y8>$F-u-0qbkGjsgE13gNPYc<56;s`KDpyQTZ2LOTJWXxkMEp% z2~ur}r}Q(CMqUW)+6OP3QA@rJlzh8r9)2pT5mZ~TU{@_DBs4pyoe?4}Mof!>)Qb5) zk6GlvPOEz!lT)hWw>x={F#=wB&I2MnvAXqQdY?s5!UaX${wdyN5I&d%L}7>jTx|Wl zW-(Cu605NhkjqU_X10eZ!${*c*wc{DGs2SwCkkJYAD7rNlc;@ALc9`Ft^RFjU_5ja zxM!pnM>Xj#d9Llg*IdpoL23PhVTuoz1o^A8@~d=&9D<LD^2{KM7?<FNow)V6_dv9L zsscHkDmMFL1^Qn4@R~Xsm`LnPGsYq1gX@Kf`Re)faD#b{A!3SHxv1|YKFcAW;S;yp zStpqX8NRBFUrD}BJuNs_FDIHGx({e_-_IU)@d-Tr6=G&UYy$_w7v7{-2F4nM??3ne zY1cf$$C1V$ize)Dje(PtrvxI6>Azsbp>2~&zv~vt2BIdSTAx~q?CWagviwR}h#;J= z9gi;LyZQ9J8;}U=ln0y`3^&~z_bYBZBi3`{pzqH8^+TP9oEVQ<YtKCE3g;K?QoAgS zR0c<gR3SzVI|7vawd<)ien%N28(f%&6t~BPusN%!DERYdUA6~UDw|#oqDG_mQex-a z|7oDycarmM-}AlvM}RN+-LvbwTymBvTf5l6zyP3q-Wr0SgrPpoq9g9ioOCh4$S+f~ zGM_jdg`rpBt@n-3jJ=it%~R|3{K1sPu|&dh^J+&VmZ^umz;l2SU=A=37Vl0|UZ`eF z-MLxY+P;EX_HPq~K#1}DC22uh9*xs}LzN{;jPJj^T=mLh`DFRnQeHseX?lMTGv~yP zd+aJ?C9GrlP2km-$^F$NK(jXg2-nNK?lq6o`TRY<4c}WI&PpRjKt*_Isdv*s8xXkj z=S77sM`l)LW~PJy2>3$3m1oEDcghcSn^s2wm~@G#wxgYQ?8WS_3sjpA_W^<A?U|T; z25Qoc<`+fNeV}3-dkg^#5WQMkhfk;n9{0XD@-n347e^Fw^dEUO0pghGE~~07`I!en ztA3KS5dHE$ARgC(fL0Sg*ah*ETyz$mo1VTriVGa*Caw@uq)&MDF$*8ZFMY#&w+n>R z^E|(=Qdp?=`*)s#Z=_6aJmeNt(||DUWaH1=+}!r|6%6!E6LHXdZY)ldo%vcZS3USy z^9!f$z>!`J2(C031Tav_vqVmGfQr=}{^Ww+$>7dp`Qt0m=3LaRF-2%3?U}Z)27=qT z>EiYv@P4ZxTheu70FZu8mrmI}0thj$(!SFjFfVzx%mT#Rmsy)*TLQx;_EC_rUO?w} zeYI20Pb=vy7`uuc+!h=c1>tY-)nmqDb8ad8_itqdE)2y+u~7aY0)y;lhb;K^Jgx(< zzMx}^v_|)rS{DAg&rTb%KoM^W%qmjpz-W3pVke=Bp_x|o6-f##Y48KA`_sfXS$?|} zaZ+~|?Oh+w7Xw>=+st)<VPBrRcv*i^oti!W2th6`+zsy;9NcW{0M`L$z_S07@&^ym zy!qn?vh6l`B&6hvYWbS(8K#AEgBv%XsNol%^KHn%IUa)7{k02Mm&1W~zZGfqlAn+V zB6l$sG7(pPqvTJ9Q}(X}|A=CNAnj;Ul(WEdJwrp~&K0V-2uaYkS{oSrz&_2Ye3J4} zctE(v`^MnUmpHk&0dX(m6JLET3}bm4!x{8xq1^ERcjqHes!(QrF_`r2+7K1HN#@;5 zCZqJPcv0zgJ^S`j1CSSOavM%fP5rWXkDp~K8zd|}CycW4%rjP@40=z6`7wL2$z>0c z7I=O;-Fn~in!6eLQK5RvR)G93)g<-eNFG!pD&%M9@%!4@CybGgag|>+xU6<B-W`VP zlp9;lPoD>pW-y8ri9T2K*l&ca{E=N?^}D*g>*@-<y!3wcGy*5KAiBwXx}oem9EXx6 ziOE1Cq>3n<N9M>&{Ijy)^M^eyJaE)ZscO~ymPO@sVd1}VO=RX;CIPmy6rmL#fh##6 zhWOKD3kavYy)Vb3xdDiGDdd#B*l>B|Y;v?9hr5t#e?ZI99fNE(zW*H;@DDgOQYQoa zi`NV1fb2U!N^ADdR}hH!*MGkY5EDNe@nKb1klNkVmF#SAqQ#ukE8uafg+gHE)o!hv zdPb%SH#ax_2N}Xg7+gTM7DNaCB~9zrXe4+NY3lyBC8sA&3R84vAT}#jE9o%4Q-ia6 z2<+0%xzk2;eW8V&ogHFKKs*4TqcEX-QpRAo!4HERC}C(NMq}^wBtVPgangN%GnsyW z`x76y?YsnNx0l{aF>?1AKNxoDceguT<<xZ44M;}Gel)9wQq#}Q%v^PG2OM=%I*r>^ zzgoC)T=*p<sooU6tsD@&3Zc}Yi0c73Cy>5BG*~Wel>@4crH}E@fCh%8iz-D)6%b~Z zv(DoO5@C?G!c^N0S;N+z9v*B-eJDe|w@k01n7(cmQV5QKSeVE0P+&E=zZOEkq#u@< zXJDCUZK`zCd7o?;IJLT79$VHp2TKR7)<p)3IyWr@yJ8;sG08w~0`4CN9OA?r)w^y2 zO){E3-`eWbtgHY)^4%=n^IGD=&!xV;(VO-XI&kMtY3iptbjl9V|9qNN3s!|6S(=f+ z_1gk10$c(DvfO){OhBo$f+~q0u?1Dkg{dl!)F$kb68<kH3)%EbMBQffK8|M{P=moB z<~et8h_{8DJK_bqPMbOu+z!Q-NehL-mG`b*x^$`4Y60Ay1#{<2DKz=ZIJ74B&O7;h zJ~lV5-|st)jS%*3slC<@ZpSvsWb*j&;}|0r?ovuH<^VvF#QE8|#pNYU(+D9z9RQ#N z0U{LeK<~9%J;NMOz-*3-AV{fHYGL6>Fc^?!MNwo)lH_FS5Iewo6^ljFG>5}stybCI z-Yymj`e49J8^x|J77m9~sZ=Bq@r^5O$K;;?p%k!7Zrqo4C}0>{)k3lOlb`%!CX-<; z1{}u%z?3?lK~wSqaG*we?>CLd<0ns^<avw`H}MMT^wiO#M`Q5_g4=r(5J3nHM`owh z?zcNOCCsaHoG%;>E-$a9QYl$hXJ)1!KvI5sdYTy}RaKM8sd~Mh$?Rk@8C};Ap%@{@ zacZ?%vsL#8LQ~09G#V8Ifi+KJUK%kngV;<#0u-|)WVSLAiAa(_fMN=SH~>J1y+_)- z|F{|s>Rx=G*;>;ySx;$7DaL#(7Fu6lpHI(V!AHTNjDj=5O=+vyX*L>`Wr5q*i)xxS zzpy+vH^aic`<$$LziQ~z)D!@)n({;<vAn#T$>g%x-FCap7y@yi(`xtH9Zk~`$z(Jh zlSOIb70@JvBgnh`fl>;N<G5p#_va7x4`06jV!cDHJ^&bo!NzB(s=B_uzO-~iRn>7X zWMGz^5;D;BdZVHD`xF2pL@4Eb;`H?N($Z2i8kJ?4eX<WFACO9=0H9K-NRkkV#Fmzh z<Z`*)-Q8xpMQn#{!(Ok~@Au24QY;orBoeas)F5(aCQlZX<>*79fTz*PXS6)~^`!%s z{%#x;01U&*=krfI@r|#2?Q7vsh<)jI{D5UP>y37+WjhWNX(&K68eLjin@XotS&<Ym z5j)&S;d}XjJxVvREdVf^P209D%N~t}mSr2pNZ0jJsg%oP8?B~oS_m<>M-gz6B!xnu zSS+q6GU6}=3kaeFAxwz_fS7G@nvL%JAAa!eyO(x%Z&?<DVbXpc{$H=VXK^RYo!Pm2 z{I1snOOo{D6HmPO;){z*3xGJ+(=tYlFxXbNr?bYh?wVkvD9UVlW^Q3V5C}3+L=;6i z7DMAa{^teYKGVX*V$m=RUDqp>%FfQMYNcYDCU^u}Vcb7h3#c68UBQP^Mx|l=V~tkx z`iIxfpFh8~b(00FUJicPLXErq)}9@}w&2mDN6(yj<;f?Xlw`rNsprT80fKa0FIOtP zo=%9(f?>>a)2XTD<<)pRF3WN{o&M})C7%<3$*Y!1CBv|WL%mupXEK>msWcjmFrk!l z#YG>_`vZYwBH{P@F~_kc^DIPQ90_5JFzt2q&CShs-np>3x!Lzr7#zM*=Dyx*dOCIb z^y%lGdoCOfyN1gFKyFZJnr6LLtJmwMWdTN*0=NOe+T3hfQT@SS@E#ohivz$L!LgY; zj4Tz4<-wruswe;yfK7pqMWcaWkoRFA2oY)n9jjafD8>kl4C4<U{r;WbT=?+A>zz&q z9>S$*+PA*-&2NAE+w=4Dj5aaQFrfs2LrA;TDpxA(^ecM>S(ayK=T}yiLZOHxNsO3$ z-omN}3%~>hcJiy)Y-V!1g<QVh>k&^*mBUz3)kq`~3Wa<=-|b8Tn?gR8eGJpw-rhcc ze&g!Z%Z*0sGc<!a(Eji||M=sNfA_nuJ^uBt^FAMO95-|yS3Ky0L8(}5wptSd$n$(6 zkyu?_Po)yFtftfH&rksI&;g*7QpYwLP1|;dwvR?5%d)%OPO(@l<no<fmpX)bX_ySN z3Ppnc06TI8)S<+sN-WssftrLC^M%WoFJHNGrCP1olpOZeC(afjG&?(U`o&Wx{^F!x z)d(R3C_w}h3KY9Gr(Unrs^-X;I9tEpzqq(KJ3FVU3M;G=1VN6)59MsX&>i5tI-O3p z+cizI+wGQ0g={9%8q+uypka(fK?sH-p-@1QBo+pPH<kuqQD~`DxpL*wZ-4vSOeSO7 z#7#*7+3#Qv<eHI4==tZLKXvL<I-Mp!VKVUtfTLhj(rUL0`Fy9_o!mhZ#ku+Um6er9 zBqmA1^z_UFU!R8#z@+|(DSG{Wzg#Y7v%8H(!(sxThb;L6fp91!N)nsSb6dz8KP5t_ z(X4&&{<V#bjZZ$gWqOh)2c>%4;7^jIr=B|go!4GFcI+7DIM?Qk^Lmuh;b2fG6spy# z?Kl`w0+hqPcs#zgwl+OIqbSPE%*=zbIgbVa7Y5s|Rw{;N>bhR9R<hY_tyZ&!BZ9{@ z#sEBz71bXOg=9tHF!qx9$=8h#>UO&~Zrr$V;lf8B9gtv{R9s*TYin!Y`Od2+PMlB_ zg*Xl()EOr*5P)sll}aU_&+CK1q_|4cwB_aHrKKgmKY0J5!XE(uUV)E!h(@E4&F)sp z<)LYS;|jUV>B+LpPNus${&*%W1qT3tVvMn_>swn}8yg$fu3hW*2YU=rDwR5Y`t%Eb z^L#8GcOz{NiVh*|b~~HRHk(aGf+?kf&o?tWzqYo<#)^I(g8yio@ZI+5B%@^Zy3Sx= z+YVE_P1770!(O{vDC8@p@^Cn03Oi7YfdGd^NeO6vMNv2(&sqbr+cB>I0Eok;Y3}Uo zT)K4W`t|FrR+|E-ihSb4iC12F`N)wYll%d5C+r#yj6x}2snjgP&2wN5!jag@%F6U~ zT2)o%Y<)hS$;c1M{yefBaAy%lh2<XF?RK$PEEaN|e$ORK08H=_MbRG!Xnuv~c~^_~ zR*nE5j2*|x<#HPv8`Wy{)iY;~A3rV#f^FL#7lHv(V%gPdb$55S*Y8iZi>j(iOG_&& zE8%cd6h$U^eKFUg2f#~~48!R4I)y@^P%3s?ZMQ58A&!EBKomvRzMsLcUvFTiv_w%% zCK3*{fgpBr1OO;tpiZaT-`%-Ytyal+NBVrebUMAhek_$rNs@HfMgw0S0K8<0DNE&Y zF`v)3S}n`6ut!<qeLhuDG{2t}rti<_g*3k!40st7LTEG^<#M@fE@zBJ7&A=)g~Q?X z_4S2?MNQK_zo_tK0KhBojZ9;x4{EhqA)l?)>y~9r@*x1gbDS*8nx+Y&=q*%c1tYA! ziY>k4IMr%(duON9ZcjdZMNt+P7uVK~Mj{VPRQNIgz#e8$F4?wY7^Bf>WSiE|Fq+Lq zxm>PSYa?@r09e!t7-0;OD5{Fzr${`wxlg~Q__ZLDmHK*jH<PQB$~JKj5I`J<a4MBr zU0<7;nvx`W>}-8vG=h2GS3BUY0-s?R&1SPu$W<zp;b1VX6eJWd^U|uOvGxakzdsxf zk4B?Hp|G>PJs3v`l+tiGytcNsyu7Sw0ZEb`D#8Eq0N}z<DVw9)WT{dv>bic%2^NGz zK~NMWo=6ZvKK*pN(WudJE?N}Dg@wgq$JV3Ks4T08${KzJzyX}K*Xxx^g<`Qd==Lm1 zCR80G<Pg&9c8zf%6UI21OddP-*zD}Asy;{|^G^|gJ)E`Q?^i07Vlm%ow;jh#N)HBu zp5EsWW)696?dZzNN-+4)MTIXp0B+dj*k-foI1bA<7=|%2t<hjmuh%N2a;w#{ZF@M< zbzS!f(#*`vL{wn@R?svd5cp~bJb2D(n&x0IsMqVoVlki3VvLU+du(B0fwhM{Y$Ls| z0QigopJ|$-(Wu#Ms;V3agk)L%B1MHibpY5^E|*!`sz(@G{YeAxM|a^b)63j0C$+6Z keOQn1EBtB)JmTyB006U?Q$K+@GXMYp07*qoM6N<$g0|xSivR!s From e237fba5c6cc57d9738a9fa2e6f65abb6a09781e Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 27 Mar 2012 16:38:30 +0530 Subject: [PATCH 124/141] [FIX]base/res_partner: group_by company bzr revid: kjo@tinyerp.com-20120327110830-uewjpyu06pjbzq2g --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 8ae0bfc3934..a3d3851d11b 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -500,7 +500,7 @@ <newline /> <group expand="0" string="Group By..."> <filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" /> - <filter string="Contact Type" context="{'group_by': 'is_company'}"/> + <filter string="Company" domain="[('is_company', '=', 1)]" context="{'group_by': 'is_company'}"/> </group> </search> </field> From 53ec8d67f2ea31272eec244cf603026d97f1d6e8 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 27 Mar 2012 17:40:21 +0530 Subject: [PATCH 125/141] [FIX]base/res_partner: group_by parent_id bzr revid: kjo@tinyerp.com-20120327121021-ndhk397f7qyemq32 --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index a3d3851d11b..51a365f2f8e 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -500,7 +500,7 @@ <newline /> <group expand="0" string="Group By..."> <filter string="Salesman" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" /> - <filter string="Company" domain="[('is_company', '=', 1)]" context="{'group_by': 'is_company'}"/> + <filter string="Company" context="{'group_by': 'parent_id'}"/> </group> </search> </field> From 111524cb2a3c9e8193f235c179c3315078f0ea73 Mon Sep 17 00:00:00 2001 From: "Sbh (Openerp)" <sbh@tinyerp.com> Date: Tue, 27 Mar 2012 18:15:37 +0530 Subject: [PATCH 126/141] [Fix]base/res: remove duplicate tab bzr revid: sbh@tinyerp.com-20120327124537-lf3ovd4sc0a3p1f4 --- openerp/addons/base/res/res_partner_view.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 51a365f2f8e..db057a3ea29 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -442,8 +442,6 @@ <field name="company_id" groups="base.group_multi_company" widget="selection"/> <newline/> </page> - <page string="History" groups="base.group_extended" invisible="True"> - </page> <page string="Categories" groups="base.group_extended"> <field name="category_id" colspan="4" nolabel="1"/> </page> @@ -533,7 +531,7 @@ <t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/> <div t-att-class="color + (record.color.raw_value == 1 ? ' oe_kanban_color_alert' : '')"> <div class="oe_module_vignette"> - <a type="edit"> + <a type="edit"> <img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" width="64" height="64" class="oe_module_icon"/> </a> <div class="oe_module_desc"> @@ -605,7 +603,7 @@ <field name="view_mode">tree</field> <field name="view_id" ref="view_partner_tree"/> <field name="act_window_id" ref="action_partner_form"/> - </record> + </record> <menuitem action="action_partner_form" id="menu_partner_form" From 6143996006fe811efb6fb8955a5d31fce8dd967d Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Tue, 27 Mar 2012 19:04:47 +0530 Subject: [PATCH 127/141] [FIX]base/res_partner: change demo name bzr revid: kjo@tinyerp.com-20120327133447-nj6n7l5ky4w0pyvz --- openerp/addons/base/base_demo.xml | 2 +- openerp/addons/base/res/res_partner_demo.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/base_demo.xml b/openerp/addons/base/base_demo.xml index 3ba951618cf..a0149096902 100644 --- a/openerp/addons/base/base_demo.xml +++ b/openerp/addons/base/base_demo.xml @@ -3,7 +3,7 @@ <data noupdate="1"> <record id="demo_address" model="res.partner"> - <field name="name">Fabien Dupont</field> + <field name="name">Fabien D'souza</field> <field name="street">Chaussee de Namur</field> <field name="zip">1367</field> <field name="city">Gerompont</field> diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index 1c60256fbda..ad354a11609 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -848,7 +848,7 @@ <record id="res_partner_address_fabiendupont0" model="res.partner"> - <field eval="'Fabien'" name="name"/> + <field eval="'Frank'" name="name"/> <field eval="'Namur'" name="city"/> <field eval="'5000'" name="zip"/> <field name="country_id" ref="base.be"/> @@ -859,7 +859,7 @@ <record id="res_partner_address_ericdubois0" model="res.partner"> - <field eval="'Eric'" name="name"/> + <field eval="'Joy'" name="name"/> <field name="address" eval="[]"/> <field eval="'Mons'" name="city"/> <field eval="'7000'" name="zip"/> From c1a3ea54e0396ff341b12cb439a03cf75847a307 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 10:21:02 +0530 Subject: [PATCH 128/141] [FIX]base/res_partner: change demo bzr revid: kjo@tinyerp.com-20120328045102-j0c3z172t6yxijsi --- openerp/addons/base/res/res_partner_demo.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_demo.xml b/openerp/addons/base/res/res_partner_demo.xml index ad354a11609..441b64a66fd 100644 --- a/openerp/addons/base/res/res_partner_demo.xml +++ b/openerp/addons/base/res/res_partner_demo.xml @@ -755,6 +755,7 @@ <field eval="'5000'" name="zip"/> <!--field name="parent_id" ref="res_partner_notsotinysarl0"/--> <field name="country_id" ref="base.be"/> + <field name="is_company">1</field> <field eval="'(+32).81.81.37.00'" name="phone"/> <field eval="'Rue du Nid 1'" name="street"/> <field eval="'default'" name="type"/> @@ -814,7 +815,6 @@ <record id="res_partner_address_rogerpecker1" model="res.partner"> <field eval="'Roger Pecker'" name="name"/> - <field name="is_company">1</field> <field eval="'Kainuu'" name="city"/> <field eval="'(+358).9.589 689'" name="phone"/> <field name="country_id" ref="base.fi"/> @@ -878,6 +878,7 @@ <field eval="'2000'" name="zip"/> <field name="parent_id" ref="res_partner_address_notsotinysarl0"/> <field name="country_id" ref="base.be"/> + <field name="use_parent_address" eval="0"/> <field eval="'Antwerpsesteenweg 254'" name="street"/> <field eval="'invoice'" name="type"/> </record> From 7d6478499bbb8d140fb1b8b94b41be8463756a89 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 11:00:40 +0530 Subject: [PATCH 129/141] [IMP]base/res_partner: change tool tip of user_parent_address field bzr revid: kjo@tinyerp.com-20120328053040-7uwalgbkqcpf7m2b --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 5b6d35530af..0c48b52da1a 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): 'mobile': fields.char('Mobile', size=64), 'birthdate': fields.char('Birthdate', size=64), '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"), + 'use_parent_address': fields.boolean('Use Company Address', help="Select this if you want to set company's address information for this contact"), 'photo': fields.binary('Photo'), 'company_id': fields.many2one('res.company', 'Company', select=1), 'color': fields.integer('Color Index'), From 89660e343c70b8199aea2faffaf9234c05328fa6 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 11:17:53 +0530 Subject: [PATCH 130/141] [IMP]base/res_partner: change view bzr revid: kjo@tinyerp.com-20120328054753-txg332zpdqx2iofg --- openerp/addons/base/res/res_partner_view.xml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index db057a3ea29..2b63b4a2d8d 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -394,7 +394,7 @@ on_change="onchange_address(use_parent_address, parent_id)" invisible="1"/> </group> <group col="2"> - <field name="is_company" on_change="onchange_type(is_company)"/> + <field name="is_company" on_change="onchange_type(is_company)" invisible="1"/> </group> <group col="2"> <field name="customer"/> @@ -408,8 +408,8 @@ <page string="General"> <group colspan="2"> <separator string="Address" colspan="4"/> + <field name="type" string="Type" attrs="{'invisible': [('is_company','=', True)]}"/> <group colspan="2"> - <field name="type" string="Type" attrs="{'invisible': [('is_company','=', True)]}"/> <field name="use_parent_address" attrs="{'invisible': [('is_company','=', True)]}" on_change="onchange_address(use_parent_address, parent_id)"/> </group> <newline/> @@ -430,9 +430,6 @@ <field name="website" widget="url" colspan="4"/> <field name="ref" groups="base.group_extended" colspan="4"/> </group> - <group colspan="4" attrs="{'invisible': [('is_company','=', False)]}"> - <field name="child_ids" domain="[('id','!=',parent_id.id)]" nolabel="1"/> - </group> </page> <page string="Sales & Purchases" attrs="{'invisible': [('customer', '=', False), ('supplier', '=', False)]}"> <separator string="General Information" colspan="4"/> From d1a1aed066ac70b659fa56e333eaa13c28517653 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 11:30:43 +0530 Subject: [PATCH 131/141] [IMP]base/res_partner: change tooltip of website field bzr revid: kjo@tinyerp.com-20120328060043-kdeju0zx7bpb44i0 --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 0c48b52da1a..5472bd2c937 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -132,7 +132,7 @@ class res_partner(osv.osv): 'user_id': fields.many2one('res.users', 'Salesman', help='The internal user that is in charge of communicating with this partner if any.'), 'vat': fields.char('VAT',size=32 ,help="Value Added Tax number. Check the box if the partner is subjected to the VAT. Used by the VAT legal statement."), 'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'), - 'website': fields.char('Website',size=64, help="Website of Partner."), + 'website': fields.char('Website',size=64, help="Website of Partner or Company"), 'comment': fields.text('Notes'), 'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # should be removed in version 7, but kept until then for backward compatibility 'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Categories'), From 3be0743b81f3112af216a26dfe6224e4e45ad1ca Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 11:48:43 +0530 Subject: [PATCH 132/141] [IMP]base/res_partner: change kanban view bzr revid: kjo@tinyerp.com-20120328061843-65hdemof52ywrbeq --- openerp/addons/base/res/res_partner_view.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 2b63b4a2d8d..d45a8b2af2a 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -539,7 +539,8 @@ <h4><a type="edit"><field name="name"/></a> <div t-if="record.parent_id.raw_value"><field name="parent_id"/></div> </h4> - <i><div t-if="record.street.raw_value or record.street2.raw_value"><field name="street"/> + <i><div t-if="record.street.raw_value"><field name="street"/><br/></div> + <div t-if="record.street2.raw_value"> <field name="street2"/><br/></div> <div t-if="record.city.raw_value or record.zip.raw_value"><field name="city"/> <field name="zip"/><br/></div><div t-if="record.country_id.raw_value"> @@ -557,7 +558,7 @@ <div class="oe_kanban_left"> <a string="Edit" icon="gtk-edit" type="edit"/> <a string="Change Color" icon="color-picker" type="color" name="color"/> - <a title="Mail" t-att-href="'mailto:'+record.email.value" style="text-decoration: none;" > + <a t-if="record.email.raw_value" title="Mail" t-att-href="'mailto:'+record.email.value" style="text-decoration: none;" > <img src="/web/static/src/img/icons/terp-mail-message-new.png" border="0" width="16" height="16"/> </a> </div> From 55f65a3803fc4d6cfe93ea2997332a8fc1a4a566 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 12:37:57 +0530 Subject: [PATCH 133/141] [IMP]base/res_partner: add state_id, phone in kanban view bzr revid: kjo@tinyerp.com-20120328070757-qtjwqwy2j7v35ydp --- openerp/addons/base/res/res_partner_view.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index d45a8b2af2a..baa65c8baf6 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -523,6 +523,7 @@ <field name="city"/> <field name="country_id"/> <field name="mobile"/> + <field name="state_id"/> <templates> <t t-name="kanban-box"> <t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/> @@ -546,7 +547,12 @@ <field name="zip"/><br/></div><div t-if="record.country_id.raw_value"> <field name="country_id"/><br/></div><div t-if="record.email.raw_value"> <field name="email"/><br/></div><div t-if="record.mobile.raw_value"> - <span>+91</span><field name="mobile"/><br/></div></i> + <span>Mobile No </span><field name="mobile"/><br/> + </div><div t-if="record.phone.raw_value"> + <span>Phone No </span><field name="phone"/><br/> + </div><div t-if="record.state_id.raw_value"> + <field name="state_id"/><br/> + </div></i> </td> <td t-if="record.is_company.raw_value" valign="top" align="right"> <!--img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" class="oe_kanban_gravatar"/--> From d48cd8256f4e000aa25462c92abb03e64e9ed98c Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 16:34:26 +0530 Subject: [PATCH 134/141] [IMP]base/res_partner: change in kanban view bzr revid: kjo@tinyerp.com-20120328110426-g1elgn8012lgiuxg --- openerp/addons/base/res/res_partner_view.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index baa65c8baf6..c5ce604a4cf 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -527,7 +527,7 @@ <templates> <t t-name="kanban-box"> <t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/> - <div t-att-class="color + (record.color.raw_value == 1 ? ' oe_kanban_color_alert' : '')"> + <div t-att-class="color + (record.title.raw_value == 1 ? ' oe_kanban_color_alert' : '')"> <div class="oe_module_vignette"> <a type="edit"> <img t-att-src="kanban_image('res.partner', 'photo', record.id.value)" width="64" height="64" class="oe_module_icon"/> @@ -547,9 +547,9 @@ <field name="zip"/><br/></div><div t-if="record.country_id.raw_value"> <field name="country_id"/><br/></div><div t-if="record.email.raw_value"> <field name="email"/><br/></div><div t-if="record.mobile.raw_value"> - <span>Mobile No </span><field name="mobile"/><br/> + <span>Mobile </span><field name="mobile"/><br/> </div><div t-if="record.phone.raw_value"> - <span>Phone No </span><field name="phone"/><br/> + <span>Phone </span><field name="phone"/><br/> </div><div t-if="record.state_id.raw_value"> <field name="state_id"/><br/> </div></i> From e2a9fbf838371bf5ed6a3a9554f87831464eaad9 Mon Sep 17 00:00:00 2001 From: "Sbh (Openerp)" <sbh@tinyerp.com> Date: Wed, 28 Mar 2012 17:41:52 +0530 Subject: [PATCH 135/141] [IMP]base/res: remove defult color bzr revid: sbh@tinyerp.com-20120328121152-gr2tv5zop29eozfp --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index c5ce604a4cf..680b8ad6124 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -526,7 +526,7 @@ <field name="state_id"/> <templates> <t t-name="kanban-box"> - <t t-set="color" t-value="kanban_color(record.color.raw_value || record.name.raw_value)"/> + <t t-set="color" t-value="kanban_color(record.color.raw_value)"/> <div t-att-class="color + (record.title.raw_value == 1 ? ' oe_kanban_color_alert' : '')"> <div class="oe_module_vignette"> <a type="edit"> From 8e3b1168d4a987a50b5a13bdb464eb552c45b0f8 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 18:30:04 +0530 Subject: [PATCH 136/141] [IMP]base/res_partner: change kanban view bzr revid: kjo@tinyerp.com-20120328130004-ct0re73cpwakkn3v --- openerp/addons/base/res/res_partner_view.xml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 680b8ad6124..e6fa2379b26 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -544,14 +544,18 @@ <div t-if="record.street2.raw_value"> <field name="street2"/><br/></div> <div t-if="record.city.raw_value or record.zip.raw_value"><field name="city"/> - <field name="zip"/><br/></div><div t-if="record.country_id.raw_value"> - <field name="country_id"/><br/></div><div t-if="record.email.raw_value"> - <field name="email"/><br/></div><div t-if="record.mobile.raw_value"> - <span>Mobile </span><field name="mobile"/><br/> - </div><div t-if="record.phone.raw_value"> - <span>Phone </span><field name="phone"/><br/> - </div><div t-if="record.state_id.raw_value"> + <field name="zip"/><br/></div> + <div t-if="record.state_id.raw_value"> <field name="state_id"/><br/> + </div> + <div t-if="record.country_id.raw_value"> + <field name="country_id"/><br/></div><div t-if="record.email.raw_value"> + <field name="email"/><br/></div> + <div t-if="record.mobile.raw_value"> + <field name="mobile"/><br/> + </div> + <div t-if="!record.mobile.raw_value and record.phone.raw_value"> + <field name="phone"/><br/> </div></i> </td> <td t-if="record.is_company.raw_value" valign="top" align="right"> From dc52fb35e1e57495963dd9f6517d4ad2372bb26b Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Wed, 28 Mar 2012 18:55:14 +0530 Subject: [PATCH 137/141] [IMP]base/res_partner: add comma between city and zip bzr revid: kjo@tinyerp.com-20120328132514-cjfdnqzz6u7sreq0 --- openerp/addons/base/res/res_partner_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index e6fa2379b26..064a1e468a3 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -543,7 +543,7 @@ <i><div t-if="record.street.raw_value"><field name="street"/><br/></div> <div t-if="record.street2.raw_value"> <field name="street2"/><br/></div> - <div t-if="record.city.raw_value or record.zip.raw_value"><field name="city"/> + <div t-if="record.city.raw_value"><field name="city"/><span>,</span> <field name="zip"/><br/></div> <div t-if="record.state_id.raw_value"> <field name="state_id"/><br/> From 1846ae22a1b60b5233c39e35df58060d5cea5e86 Mon Sep 17 00:00:00 2001 From: "Sbh (Openerp)" <sbh@tinyerp.com> Date: Thu, 29 Mar 2012 11:59:24 +0530 Subject: [PATCH 138/141] [IMP]base/res: add field for printing address base on country format bzr revid: sbh@tinyerp.com-20120329062924-uxehnkxpog12clxa --- openerp/addons/base/res/res_partner.py | 15 ++++++++++++--- openerp/addons/base/res/res_partner_view.xml | 12 ++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 5472bd2c937..e61a59df30e 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -120,6 +120,13 @@ ADDRESS_FIELDS = POSTAL_ADDRESS_FIELDS + ('email', 'phone', 'fax', 'mobile', 'we class res_partner(osv.osv): _description='Partner' _name = "res.partner" + + def _address_display(self, cr, uid, ids, name, args, context=None): + res={} + for addr in self.browse(cr, uid, ids, context): + res[addr.id] =self._display_address(cr,uid,addr,context) + return res + _order = "name" _columns = { 'name': fields.char('Name', size=128, required=True, select=True), @@ -165,6 +172,8 @@ class res_partner(osv.osv): 'photo': fields.binary('Photo'), 'company_id': fields.many2one('res.company', 'Company', select=1), 'color': fields.integer('Color Index'), + 'contact_address': fields.function(_address_display, type='char', string='Address format'), + } def _default_category(self, cr, uid, context=None): @@ -243,7 +252,7 @@ class res_partner(osv.osv): if isinstance(ids, (int, long)): ids = [ids] if vals.get('is_company')==False: - vals.update({'child_ids' : [(5,)]}) + vals.update({'child_ids' : [(5,)]}) for partner in self.browse(cr, uid, ids, context=context): update_ids = [] if partner.is_company: @@ -299,8 +308,8 @@ class res_partner(osv.osv): if name and operator in ('=', 'ilike', '=ilike', 'like'): # search on the name of the contacts and of its company name2 = operator == '=' and name or '%' + name + '%' - cr.execute('''SELECT partner.id FROM res_partner partner - LEFT JOIN res_partner company ON partner.parent_id = company.id + cr.execute('''SELECT partner.id FROM res_partner partner + LEFT JOIN res_partner company ON partner.parent_id = company.id WHERE partner.name || ' (' || COALESCE(company.name,'') || ')' ''' + operator + ''' %s ''', (name2,)) ids = map(lambda x: x[0], cr.fetchall()) diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 064a1e468a3..cb71aa37f95 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -540,16 +540,8 @@ <h4><a type="edit"><field name="name"/></a> <div t-if="record.parent_id.raw_value"><field name="parent_id"/></div> </h4> - <i><div t-if="record.street.raw_value"><field name="street"/><br/></div> - <div t-if="record.street2.raw_value"> - <field name="street2"/><br/></div> - <div t-if="record.city.raw_value"><field name="city"/><span>,</span> - <field name="zip"/><br/></div> - <div t-if="record.state_id.raw_value"> - <field name="state_id"/><br/> - </div> - <div t-if="record.country_id.raw_value"> - <field name="country_id"/><br/></div><div t-if="record.email.raw_value"> + <i><div t-if="record.contact_address.raw_value"><field name="contact_address"/><br/></div> + <div t-if="record.email.raw_value"> <field name="email"/><br/></div> <div t-if="record.mobile.raw_value"> <field name="mobile"/><br/> From b1a29c5a6af2603b39358fa5b2f9c5c7af5e11a4 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" <qdp-launchpad@openerp.com> Date: Thu, 29 Mar 2012 13:43:31 +0200 Subject: [PATCH 139/141] [REF] base: small refactoring of things related to the merge of res.partner and res.partner.address bzr revid: qdp-launchpad@openerp.com-20120329114331-hmlld7fxlw6sh1ks --- openerp/addons/base/res/res_partner.py | 15 +++++++-------- openerp/osv/orm.py | 2 +- openerp/report/report_sxw.py | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index e61a59df30e..99c78c7ebfd 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -123,8 +123,8 @@ class res_partner(osv.osv): def _address_display(self, cr, uid, ids, name, args, context=None): res={} - for addr in self.browse(cr, uid, ids, context): - res[addr.id] =self._display_address(cr,uid,addr,context) + for partner in self.browse(cr, uid, ids, context=context): + res[partner.id] =self._display_address(cr, uid, partner, context=context) return res _order = "name" @@ -172,8 +172,7 @@ class res_partner(osv.osv): 'photo': fields.binary('Photo'), 'company_id': fields.many2one('res.company', 'Company', select=1), 'color': fields.integer('Color Index'), - 'contact_address': fields.function(_address_display, type='char', string='Address format'), - + 'contact_address': fields.function(_address_display, type='char', string='Complete Address'), } def _default_category(self, cr, uid, context=None): @@ -344,19 +343,19 @@ class res_partner(osv.osv): result = {} # retrieve addresses from the partner itself and its children res = [] - # need to fix the ids ,It get False value in list like ids[False] + # need to fix the ids ,It get False value in list like ids[False] if ids and ids[0]!=False: for p in self.browse(cr, uid, ids): res.append((p.type, p.id)) res.extend((c.type, c.id) for c in p.child_ids) - addr = dict(reversed(res)) + address_dict = dict(reversed(res)) # get the id of the (first) default address if there is one, # otherwise get the id of the first address in the list default_address = False if res: - default_address = addr.get('default', res[0][1]) + default_address = address_dict.get('default', res[0][1]) for adr in adr_pref: - result[adr] = addr.get(adr, default_address) + result[adr] = address_dict.get(adr, default_address) return result def gen_next_ref(self, cr, uid, ids): diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index e18d91a454e..daa2458956c 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -864,7 +864,7 @@ class BaseModel(object): parent_names = [parent_names] else: name = cls._name - # for res.parnter.address compatiblity ,should be remove in v7 + # for res.parnter.address compatiblity, should be remove in v7 if 'res.partner.address' in parent_names: parent_names.pop(parent_names.index('res.partner.address')) parent_names.append('res.partner') diff --git a/openerp/report/report_sxw.py b/openerp/report/report_sxw.py index f1eb981b32c..7cd9516c099 100644 --- a/openerp/report/report_sxw.py +++ b/openerp/report/report_sxw.py @@ -320,8 +320,8 @@ class rml_parse(object): res='%s %s'%(currency_obj.symbol, res) return res - def display_address(self, address_browse_record,type=''): - return self.pool.get('res.partner')._display_address(self.cr, self.uid, address_browse_record,type) + def display_address(self, address_browse_record, type=''): + return self.pool.get('res.partner')._display_address(self.cr, self.uid, address_browse_record, type) def repeatIn(self, lst, name,nodes_parent=False): ret_lst = [] From fe45a9a7dedaeff6fd99fe44dd8cf80f2f3570d1 Mon Sep 17 00:00:00 2001 From: "Kuldeep Joshi (OpenERP)" <kjo@tinyerp.com> Date: Thu, 29 Mar 2012 18:55:33 +0530 Subject: [PATCH 140/141] [IMP]base/res_partner: fix the function bzr revid: kjo@tinyerp.com-20120329132533-nmhg0flfz36v4hhl --- openerp/addons/base/res/res_partner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 99c78c7ebfd..4ec49699269 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -391,7 +391,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 From a61f7ce8d1d89801fd42bf2305c9bf36603b6da9 Mon Sep 17 00:00:00 2001 From: "Sbh (Openerp)" <sbh@tinyerp.com> Date: Fri, 30 Mar 2012 10:27:52 +0530 Subject: [PATCH 141/141] [IMP]:base/res : remove type from display address bzr revid: sbh@tinyerp.com-20120330045752-m9d9vgt92uro6fle --- openerp/addons/base/res/res_partner.py | 8 +------- openerp/report/report_sxw.py | 6 +++--- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 4ec49699269..6f04c3483cd 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -391,7 +391,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, context=None): ''' The purpose of this function is to build and return an address formatted accordingly to the @@ -403,12 +403,6 @@ class res_partner(osv.osv): :rtype: string ''' - if type: - if address.is_company and address.child_ids: - for child_id in address.child_ids: - if child_id.type == type: - address = child_id - # get the information that will be injected into the display format # get the address format address_format = address.country_id and address.country_id.address_format or \ diff --git a/openerp/report/report_sxw.py b/openerp/report/report_sxw.py index 7cd9516c099..27bd5fa5394 100644 --- a/openerp/report/report_sxw.py +++ b/openerp/report/report_sxw.py @@ -299,7 +299,7 @@ class rml_parse(object): parse_format = DEFAULT_SERVER_DATETIME_FORMAT if isinstance(value, basestring): # FIXME: the trimming is probably unreliable if format includes day/month names - # and those would need to be translated anyway. + # and those would need to be translated anyway. date = datetime.strptime(value[:get_date_length(parse_format)], parse_format) elif isinstance(value, time.struct_time): date = datetime(*value[:6]) @@ -320,8 +320,8 @@ class rml_parse(object): res='%s %s'%(currency_obj.symbol, res) return res - def display_address(self, address_browse_record, type=''): - return self.pool.get('res.partner')._display_address(self.cr, self.uid, address_browse_record, type) + def display_address(self, address_browse_record): + return self.pool.get('res.partner')._display_address(self.cr, self.uid, address_browse_record) def repeatIn(self, lst, name,nodes_parent=False): ret_lst = []