2016-08-30 57 views
0

我要搜索的客戶res.partner從XL使用自己的名字,然後如果是的,我在銷售訂單IM分配他們的合作伙伴ID在XML-RPC創建其他插入的合作伙伴,用他的身份證在銷售訂單im creation.note,目的是將銷售訂單從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