[IMP] res_partner:add res_partner_address field to res_partner
bzr revid: kjo@tinyerp.com-20120220091705-y7xdh00sdkotpqj6
This commit is contained in:
parent
e3cc141be5
commit
93960634c1
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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-->
|
||||
|
||||
|
||||
<!--
|
||||
|
|
|
@ -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"/>
|
||||
-->
|
||||
|
|
|
@ -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 & 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"/>
|
||||
|
|
|
@ -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
|
||||
|
|
|
|
@ -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."
|
||||
|
||||
|
|
|
@ -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 = []
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue