[FIX] edi: get partner already exits or not using get_object and get_object_by_name.

bzr revid: hmo@tinyerp.com-20110916110800-8dec58lrgyilv144
This commit is contained in:
Harry (OpenERP) 2011-09-16 16:38:00 +05:30
parent 52c5e29710
commit 63987af41e
2 changed files with 28 additions and 9 deletions

View File

@ -420,6 +420,12 @@ class edi(object):
openobject = model.browse(cr, uid, data.res_id, context=context)
return openobject
def edi_create_relation(self, cr, uid, relation_model, relation_value, context=None):
relation_model = self.pool.get(relation_model)
values = {} #relation_model.default_get(cr, uid, fields, context=context)
values[relation_model._rec_name] = relation_value
return relation_model.create(cr, uid, values, context=context)
def edi_import_relation(self, cr, uid, relation_model, relation_value, xml_id=None, context=None):
relation = False
if xml_id:
@ -427,10 +433,7 @@ class edi(object):
if not relation:
relation = self.edi_get_object_by_name(cr, uid, relation_value, relation_model, context=context)
if not relation:
relation_model = self.pool.get(relation_model)
values = {} #relation_model.default_get(cr, uid, fields, context=context)
values[relation_model._rec_name] = relation_value
relation_id = relation_model.create(cr, uid, values, context=context)
relation_id = self.edi_create_relation(cr, uid, relation_model, relation_value, context=context)
relation = relation_model.browse(cr, uid, relation_id, context=context)
record_xml = self.record_xml_id(cr, uid, relation, context=context)

View File

@ -54,13 +54,29 @@ class res_company(osv.osv):
"""
if values is None:
values = {}
partner_pool = self.pool.get('res.partner')
partner_model = 'res.partner'
partner_pool = self.pool.get(partner_model)
xml_id = edi_document['company_id'][0]
company_address = edi_document.get('company_address', False)
partner_name = edi_document['company_id'][1]
partner = partner_pool.edi_get_object(cr, uid, xml_id, partner_model, context=context)
if not partner:
partner = partner_pool.edi_get_object_by_name(cr, uid, partner_name, partner_model, context=context)
if partner:
record_xml = partner_pool.record_xml_id(cr, uid, partner, context=context)
if record_xml:
module, xml_id = record_xml
xml_id = '%s.%s' % (module, xml_id)
edi_document_partner = {
'__model': 'res.partner',
'__id' : edi_document['company_id'][0],
'name' : edi_document['company_id'][1],
'address': [edi_document['company_address']]
'__model': partner_model,
'__id' : xml_id,
'name' : partner_name,
}
if company_address:
edi_document_partner['address'] = [company_address]
edi_document_partner.update(values)
return partner_pool.edi_import(cr, uid, edi_document_partner, context=context)