[IMP] res_partner:add res_partner_address field to res_partner

bzr revid: kjo@tinyerp.com-20120220091705-y7xdh00sdkotpqj6
This commit is contained in:
Kuldeep Joshi (OpenERP) 2012-02-20 14:47:05 +05:30
parent e3cc141be5
commit 93960634c1
12 changed files with 97 additions and 212 deletions

View File

@ -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>

View File

@ -2,7 +2,7 @@
<openerp>
<data noupdate="1">
<record id="demo_address" model="res.partner.address">
<record id="demo_address" model="res.partner">
<field name="name">Fabien Dupont</field>
<field name="street">Chaussee de Namur</field>
<field name="zip">1367</field>

View File

@ -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

View File

@ -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:

View File

@ -294,7 +294,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>
@ -305,7 +305,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -316,7 +316,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -327,7 +327,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -336,7 +336,7 @@
<field name="street">Rue de l'Angelique, 1</field>
<field name="partner_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>
@ -347,7 +347,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -358,7 +358,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -369,7 +369,7 @@
<field name="phone">+ 32 025 897 456</field>
<field name="partner_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>
@ -380,7 +380,7 @@
<field name="phone">+ 32 081256987</field>
<field name="partner_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>
@ -392,7 +392,7 @@
<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.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>
@ -404,7 +404,7 @@
<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.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>
@ -416,7 +416,7 @@
<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.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>
@ -428,7 +428,7 @@
<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.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>
@ -439,7 +439,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -450,7 +450,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -461,7 +461,7 @@
<field name="phone">+86-751-64845671</field>
<field name="partner_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>
@ -473,7 +473,7 @@
<field name="phone">+33-658-256545</field>
<field name="partner_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>
@ -484,7 +484,7 @@
<field name="phone">+32-258-256545</field>
<field name="partner_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>
@ -494,7 +494,7 @@
<field name="phone">+32-621-568978</field>
<field name="partner_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>
@ -504,7 +504,7 @@
<field name="phone">+33-298.334558</field>
<field name="partner_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>
@ -515,7 +515,7 @@
<field name="partner_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>
@ -525,7 +525,7 @@
<field name="phone">+32-45895245</field>
<field name="partner_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>
@ -535,7 +535,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -546,7 +546,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -558,7 +558,7 @@
<field name="type">default</field>
<field name="partner_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>
@ -574,7 +574,7 @@
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"/>
@ -586,34 +586,34 @@
</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-->
<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"/>
@ -621,7 +621,7 @@
</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"/>
@ -634,7 +634,7 @@
</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"/>
@ -643,7 +643,7 @@
</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"/>
@ -651,7 +651,7 @@
</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"/>
@ -662,7 +662,7 @@
</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"/>
@ -672,7 +672,7 @@
</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"/>
@ -684,7 +684,7 @@
</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="'2000'" name="zip"/>
<field name="partner_id" ref="res_partner_notsotinysarl0"/>
@ -694,13 +694,13 @@
</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="country_id" ref="base.be"/>
<field eval="'Chaussée de Namur'" name="street"/>
</record>
</record-->
<!--

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<report id="res_partner_address_report" model="res.partner" name="res.partner.address" string="Labels" xml="base/res/report/partner_address.xml" xsl="base/res/report/partner_address.xsl" groups="base.group_extended"/>
<report id="res_partner_address_report" model="res.partner" name="res.partner" string="Labels" xml="base/res/report/partner_address.xml" xsl="base/res/report/partner_address.xsl" groups="base.group_extended"/>
<!--
<report string="Business Cards" model="res.partner" name="res.partner.businesscard" xml="base/res/report/business_card.xml" xsl="base/res/report/business_card.xsl"/>
-->

View File

@ -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-->
<!--
=======================
@ -315,7 +315,7 @@
<field name="phone"/>
<field name="email"/>
<field name="city"/>
<field name="country"/>
<!--field name="country"/-->
<field name="user_id"/>
</tree>
</field>
@ -341,11 +341,10 @@
</group>
</group>
<notebook colspan="4">
<page string="General">
<!--page string="General">
<field colspan="4" mode="form,tree" name="address" nolabel="1" select="1" height="260">
<form string="Partner Contacts">
<group colspan="4" col="6">
<field name="name" string="Contact Name"/>
<field domain="[('domain', '=', 'contact')]" name="title" size="0"/>
<field name="function"/>
</group>
@ -375,13 +374,13 @@
<field name="country_id"/>
<field name="phone"/>
<field name="email"/>
</tree>
</field>
<group groups="base.group_extended">
</tree-->
<!--/field-->
<!--group groups="base.group_extended">
<separator colspan="4" string="Categories"/>
<field colspan="4" name="category_id" nolabel="1"/>
</group>
</page>
</page-->
<page string="Sales &amp; Purchases">
<separator string="General Information" colspan="4"/>
<field name="user_id"/>
@ -413,8 +412,8 @@
<filter string="Suppliers" name="supplier" icon="terp-personal" domain="[('supplier','=',1)]" help="Supplier Partners"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="address" select="1"/>
<field name="country" select="1"/>
<!--field name="address" select="1"/-->
<!--field name="country" select="1"/-->
<field name="category_id" select="1" groups="base.group_extended"/>
<field name="user_id" select="1">
<filter help="My Partners" icon="terp-personal+" domain="[('user_id','=',uid)]"/>
@ -465,7 +464,7 @@
<div class="oe_kanban_title2">
<field name="title"/>
<t t-if="record.title.raw_value and record.country.raw_value">,</t>
<field name="country"/>
<!--field name="country"/-->
</div>
<div class="oe_kanban_title3">
<field name="subname"/>

View File

@ -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

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
55 access_res_lang_group_user res_lang group_user model_res_lang group_system 1 1 1 1
56 access_res_partner_group_partner_manager res_partner group_partner_manager model_res_partner group_partner_manager 1 1 1 1
57 access_res_partner_group_user res_partner group_user model_res_partner group_user 1 0 0 0
58 access_res_partner_address_group_partner_manager res_partner_address group_partner_manager model_res_partner_address model_res_partner group_partner_manager 1 1 1 1
59 access_res_partner_address_group_user res_partner_address group_user model_res_partner_address model_res_partner group_user 1 0 0 0
60 access_res_partner_bank_group_user res_partner_bank group_user model_res_partner_bank group_user 1 0 0 0
61 access_res_partner_bank_group_partner_manager res_partner_bank group_partner_manager model_res_partner_bank group_partner_manager 1 1 1 1
62 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 access_ir_filter all ir_filters all model_ir_filters 1 0 0 0
118 access_ir_filter employee ir_filters employee model_ir_filters group_user 1 1 1 1
119 access_ir_filters ir_filters_all model_ir_filters 1 1 1 1
120 access_res_partner_address res.partner.address model_res_partner_address model_res_partner group_system 1 1 1 1
121 access_res_widget res.widget model_res_widget group_erp_manager 1 1 1 1
122 access_res_widget_user res.widget.user model_res_widget 1 0 0 0
123 access_res_log_all res.log model_res_log 1 1 1 1

View File

@ -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."

View File

@ -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 = []

View File

@ -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()

View File

@ -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):