From 63987af41eac0814801dfdb7bc97f6d7109472ab Mon Sep 17 00:00:00 2001 From: "Harry (OpenERP)" Date: Fri, 16 Sep 2011 16:38:00 +0530 Subject: [PATCH] [FIX] edi: get partner already exits or not using get_object and get_object_by_name. bzr revid: hmo@tinyerp.com-20110916110800-8dec58lrgyilv144 --- openerp/addons/base/ir/ir_edi.py | 11 +++++---- openerp/addons/base/res/edi_res_company.py | 26 +++++++++++++++++----- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/openerp/addons/base/ir/ir_edi.py b/openerp/addons/base/ir/ir_edi.py index 062517b1f87..e830e18428f 100644 --- a/openerp/addons/base/ir/ir_edi.py +++ b/openerp/addons/base/ir/ir_edi.py @@ -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) diff --git a/openerp/addons/base/res/edi_res_company.py b/openerp/addons/base/res/edi_res_company.py index 945678c3259..53ddf487996 100644 --- a/openerp/addons/base/res/edi_res_company.py +++ b/openerp/addons/base/res/edi_res_company.py @@ -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)