顧客と企業の両方を別のデータベースから OpenERP にインポートしようとしています。顧客と会社の両方をインポートできますが、それらをリンクできません:これは私が使用しようとしているコードです:
if data:
for erprow in data:
#mielöt updatelünk vagy létrehozunk csekoljuk le hogy alá tudjuk e rendelniegy cégnek
cegargs = [('panda_id', '=', int(csvrow[1])),]
cegids = sock.execute(dbname, uid, pwd, model, 'search', cegargs)
cegfields = ['id', 'name', 'child_ids',]
cegdata = sock.execute(dbname, uid, pwd, 'res.partner', 'read', cegids, cegfields)
"""if cegdata:
#childcustomer = str(erprow['id']) + '/' + str(cegdata[0]['id'])
child = cegdata[0]['child_ids']
if not child:
child = False
update = True
print cegdata[0]['child_ids']
if erprow['id'] in child:
update = False
else:
child.append(int(erprow['id']))
if update:
cegvalues = {}
cegvalues['child_ids'] = child
results = sock.execute(dbname, uid, pwd, 'res.partner', 'write', cegids, cegvalues)
print '-------', cegdata[0]['child_ids']"""
parent_id = False
if cegdata:
parent_id = [int(cegdata[0]['id']), cegdata[0]['name']]
# a tömböknek (dictionary pythomban) nevük van....
values = {}
#string be convertálom különben mindig külömböző lesz
"""if str(erprow['active']) != str(csvrow[0]):
values['active'] = csvrow[0]"""
# x_panda_id ki hagyva mert az alapján vana keresés...
if erprow['zip'] != csvrow[11]:
values['zip'] = csvrow[11]
#a country kicsit nezebb mivel Openerpnek van saját táblája országokrol és IDvel müködik.
if erprow['country'] != country_tomb:
values['country'] = country_id
values['country_id'] = country_id
if erprow['name'] != nev:
values['name'] = nev
if erprow['street'] != csvrow[13]:
values['street'] = csvrow[13]
"""if erprow['street2'] != csvrow[6]:
values['street2'] = csvrow[6]"""
if erprow['city'] != csvrow[12]:
values['city'] = csvrow[12]
"""if erprow['comment'] != csvrow[8]:
values['comment'] = csvrow[8]"""
if erprow['email'] != csvrow[9]:
values['email'] = csvrow[9]
if erprow['fax'] != csvrow[8]:
values['fax'] = csvrow[8]
if erprow['mobile'] != csvrow[10]:
values['mobile'] = csvrow[10]
if erprow['function'] != csvrow[5]:
values['function'] = csvrow[5]
if erprow['phone'] != telefon:
values['phone'] = telefon
if erprow['parent_id'] != parent_id:
erprow['parent_id'] = parent_id
if cegdata:
if erprow['company_id'] != int(cegdata[0]['id']):
values['company_id'] = cegdata[0]['id']
if values:
number += 1
results = sock.execute(dbname, uid, pwd, model, 'write', ids, values)
print loop, '. ', number , ". results frissités pandából...", parent_id
else:
number += 1
print loop, '. ', number , ". sor létezik de nincs frisités.", parent_id
else:
#mielöt updatelünk vagy létrehozunk csekoljuk le hogy alá tudjuk e rendelniegy cégnek
cegargs = [('panda_id', '=', int(csvrow[1])),]
cegids = sock.execute(dbname, uid, pwd, model, 'search', cegargs)
cegfields = ['id', 'name',]
cegdata = sock.execute(dbname, uid, pwd, 'res.partner', 'read', cegids, cegfields)
parent_id = False
if cegdata:
parent_id = [int(cegdata[0]['id']), cegdata[0]['name']]
number += 1
print loop, '. ', number, ".Nem létezik - Létrehozzás"
partner_data = {'name':nev, 'active': True, 'panda_id': csvrow[0], 'zip' : csvrow[11], 'country_id': country_id, 'street': csvrow[13], 'city': csvrow[12], 'email': csvrow[9], 'fax': csvrow[8], 'mobile': csvrow[10], 'function': csvrow[5], 'phone': telefon, 'parent_id': parent_id,}
partner_id = sock.execute(dbname, uid, pwd, model, 'create', partner_data)
loop += 1
print loop, local_number
openerp スケジューラーではなく、コマンドラインから実行するこのスクリプトが原因で、多くの印刷物があります。悲しいことに、それらを Company-> child としてリンクする方法がわかりません。