[英]Odoo web service API to create a sales order record with 3 items
我一直試圖創建一個包含3個項目的銷售訂單記錄,但是無法做到。 但是我可以成功創建一個包含1個項目的記錄。 不知道如何添加多個項目,嘗試了以下代碼后的各種情況幫助我創建了一個項目的記錄
line_vals = {
'product_id': product2_ids[0].get('id'),
'name':'test',
'product_uom_qty': 10,
'price_unit': 30000,
}
order_vals = {
'partner_id': customer_ids[0].get('id'),
'validity_date': datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'),
'order_line': [(0, 0, line_vals)],
}
salesorder = objects.execute_kw(db, uid, pwd, 'sale.order', 'create', [order_vals])
嘗試為許多項目更改此代碼,它只能創建一個或失敗。 有什么建議么?
通常你可以通過兩種方式管理One2many字段,要么你可以在逆模型中編寫many2one引用 ,所以框架會自動管理one2many或你可以准備元組列表並直接用它的父記錄寫一個2個字段。
我們以帳戶發票和發票行為例。 因此,如果您要創建發票行,那么您有兩個可能的選項:首先創建account.invoice記錄,然后在准備數據時在所有發票行中提供該發票參考,或者其他方式是准備帳戶發票數據,並且還准備發票行數據(元組列表)並將其傳遞給account.invoice
。
這里使用第二種方式。
(0,0,{values}) :鏈接到需要使用給定值字典創建的新記錄。
如果訂單有多個訂單行,那么您可以創建元組列表,如[(0,0,{values}),(0,0,{values}),(0,0,{values})] 。
您應該按照以下代碼以相同的順序創建多行 。
order_lines=[]
for product in products:
line_vals = {
'product_id': product.id,
'name':'product.name,
'product_uom_qty': product.product_uom_qty,
'price_unit': product.price_unit,
}
order_lines.append((0, 0,line_vals))
order_vals = {
'partner_id': customer_ids[0].get('id'),
'validity_date': datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'),
'order_line':order_lines,
}
salesorder = objects.execute_kw(db, uid, pwd, 'sale.order', 'create', [order_vals])
這可能對你有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.