簡體   English   中英

Odoo Web服務API用於創建包含3個項目的銷售訂單記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM