2016-08-30 7 views
0

xlからres.partnerの顧客を名前で検索したい場合はyes、そうであれば受注で自分のパートナーIDを割り当てます。xmlrpcで作成します。受注を作成します。注:xlsファイルからodooに受注を移行することを目的としています。実際のコードは次のとおりです。Odoo XML RPCの検索と挿入

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

あなたの現在のコードに問題が実際には述べられていません – danidee

答えて

1

ここでは、動作するはずのスクリプトの修正です。私は、販売注文の作成にどの値を渡すべきかを検討しませんでした。あなたは正しい値を渡していることを確認する必要があります。また、使用しないいくつかのパッケージをインポートしますが、それらを使用することを想定しているので、それらを残しました。要するに、システム内の連絡先を検索する必要があります。 IDを使用している場合は、連絡先を作成し、新しい連絡先IDを使用して受注を作成します。

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