2016-08-30 1 views
0

Ich möchte nach Kunden in res.partner von xl mit ihren Namen suchen, wenn ja, ich ihre Partner-ID im Kundenauftrag zuweisen im Erstellen in xmlrpc sonst fügen Sie diesen Partner und verwenden Sie seine ID in der Kundenauftrag im creating.note, dass der Zweck ist, um Auftrag von xls-Datei zu odoo zu migrieren, für den aktuellen Code ist der folgende.Odoo XML RPC suchen und einfügen

import psycopg2 
import psycopg2.extras 
import pyexcel_xls 
import pyexcel as pe 
from pyexcel_xls import get_data 
from datetime import datetime 
import xmlrpclib 
import json 

url = 'http://localhost:8070' 
db = 'Docker' 
username = 'admin' 
password = 'odoo' 
#data = get_data("salesorder.xls") 
#print(json.dumps(data)) 
records = pe.get_records(file_name="salesorder.xls") 
for record in records: 
    print record['name'] 
    names = record['name'] 
    print record['location'] 
    print record['zip'] 
    print record['republic'] 
    dates = record['date'] 
    print dates 
    print datetime.strptime(dates,'%d/%M/%Y') 
    lastdat=datetime.strptime(dates,'%d/%M/%Y') 


    common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url)) 
    output = common.version() 
    models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url)) 
    ids = models.execute_kw(db, uid, password, 
          'res.partner', 'search', 
          ['name', '=', "names"]) 



    uid = common.authenticate(db, username, password, {}) 
    print output 
    models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url)) 
    id = models.execute_kw(db, uid, password, 'sale.order', 'create',  [{ 
     'name': names, 
     'validity_date':"2016-01-18" 
     #'payment_term_id':"1" 
     # 'user_id':"1" 
     # 'state':"sale" 

    }]) 
    print id 
+0

Sie haben das Problem tatsächlich nicht mit Ihrem aktuellen Code angegeben – danidee

Antwort

1

Hier ist eine Modifikation Ihres Skripts, die meiner Meinung nach funktionieren sollte. Ich habe nicht untersucht, welche Werte in die Erstellung eines Kundenauftrags einfließen sollten. Sie müssen sicherstellen, dass Sie die korrekten Werte übergeben. Sie importieren auch ein paar Pakete, die Sie nicht verwenden, aber ich habe diese vergessen, da ich davon ausgehe, dass Sie sie verwenden möchten. Unter dem Strich müssen Sie nach Ihrem Kontakt im System suchen. Wenn Sie sie finden, verwenden Sie die ID, wenn Sie den Kontakt nicht erstellen und verwenden Sie die neue Kontakt-ID für die Erstellung Ihres Kundenauftrags.

import psycopg2 
import psycopg2.extras 
import pyexcel_xls 
import pyexcel as pe 
from pyexcel_xls import get_data 
from datetime import datetime 
import xmlrpclib 
import json 

url = 'http://localhost:8070' 
db = 'Docker' 
username = 'admin' 
password = 'odoo' 

models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url)) 
common = xmlrpclib.ServerProxy('{}/xmlrpc/2/common'.format(url)) 
uid = common.authenticate(db, username, password, {}) 

records = pe.get_records(file_name="salesorder.xls") 

for record in records: 
    print record['name'] 
    # DEFINE THE VALUES YOU PLAN ON PASSING INTO YOUR SALES ORDER HERE 
    vals = { 
     'name': record['name'], 
     'validity_date':"2016-01-18" 
    } 
    ids = models.execute_kw(db, uid, password, 'res.partner', 'search', [[['name', '=', names]]]) 
    # IF YOU FIND THE CONTACT IN THE SYSTEM ADD THEIR ID TO YOUR VALS OBJECT 
    # IF YOU ARE CONFIDENT YOU DO NOT HAVE DUPLICATES OF NAMES THIS SHOULD WORK, OTHERWISE A MORE PRECISE SEARCH DOMAIN IS NECESSARY 
    if len(ids) > 0: 
     vals['partner_id'] = ids[0] 
    # IF YOU DONT FIND A MATCH YOU CAN CREATE A NEW PARTNER AND USE THAT ID 
    else: 
     vals['partner_id'] = models.execute_kw(db, uid, password, 'res.partner', 'create', [{ 'name': record['name'] }]) 
    sale_order_id = models.execute_kw(db, uid, password, 'sale.order', 'create',[vals]) 
    print sale_order_id