亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何計算 odoo 13 銷售訂單行上的字段?

如何計算 odoo 13 銷售訂單行上的字段?

慕妹3242003 2023-06-20 16:18:00
我正在嘗試計算銷售訂單行上的折扣字段,并且該方法在 odoo 12 中運行良好但在 odoo 13 中我每次嘗試添加行時都會收到此錯誤sale.order.line(<NewId 0x7f3dd0d624a8>,).discount_mount這是我所做的class discount_cycle(models.Model):_inherit = 'sale.order.line'discount_mount = fields.Float(string="",  required=False , compute='discount_calculation')@api.depends('product_id','discount','price_subtotal')def discount_calculation(self):    for rec in self:        if rec.discount:            if rec.product_uom_qty > 1:                rec.discount_mount = ((rec.price_unit * rec.product_uom_qty) * (rec.discount / 100))            else:                rec.discount_mount = (rec.price_unit * (rec.discount / 100))        pass請注意,在 odoo V 12 中是 @api.one,那么我該如何解決這個問題以及在這種情況下用什么替代 @api.one
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

在 odoo V13 中,您必須將值分配給計算字段,而不是pass需要添加else語句并分配默認值

     else:
             self.discount_mount = 0.0

我知道這很清楚,如果我們沒有折扣,那么該字段應該是 0.0,但 odoo 希望你這樣做


查看完整回答
反對 回復 2023-06-20
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

在任何情況下都需要為非存儲計算字段分配一個值,即使它是假的,如果在計算方法期間未分配,計算存儲字段將保留其先前的值,因此不要依賴任何預期的默認值價值。

裝飾api.one器被移除,現在默認為多記錄。您只需從代碼中刪除裝飾器并循環self(這在您的示例中已經完成)。

如果它使用其他字段的值,則應使用depends()指定這些字段。

您需要將product_idand替換price_subtotalprice_unitand?product_uom_qty

discount是 時0.0,也discount_mount應該是0.0并且在您的表達式中,您將折扣除以然后100進行乘法。discount如果的值為0.0,則不會有問題,表達式將被計算為0.0并且discount_mount字段將設置為0.0這意味著您可以刪除if表達式:

if?rec.discount:


查看完整回答
反對 回復 2023-06-20
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號