sale.order.line
モデルで_amount_line
関数をオーバーライドしようとしていますが、これはcustumロジックを追加するためです。あなたはcompute_allメソッド呼び出しでミスを犯しているOdoo 8 override _amount_line
0
A
答えて
2
:私はOdooを実行すると
class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'
def _amount_line(self):
tax_obj = self.env['account.tax']
cur_obj = self.env['res.currency']
res = {}
for line in self:
print line.tax_id
price = self._calc_line_base_price(line)
qty = self._calc_line_quantity(line)
print" price:{} & quantity: {}".format(price,qty)
taxes = tax_obj.compute_all(line.tax_id, price, qty,
line.product_id,
line.order_id.partner_id)
cur = line.order_id.pricelist_id.currency_id
res[line.id] = cur_obj.round(cur, taxes['total'])
return res
remise_palier = fields.Float('Remise palier (%)')
remise_total = fields.Float('Remise totale (%)')
price_subtotal = fields.Float(compute='_amount_line', string='Subtotal')
、私はエラーを取得:
は、ここに私のコードです。
このメソッドは、このようにする必要があり、Odoo V8では
@api.multi
def _amount_line(self):
tax_obj = self.env['account.tax']
cur_obj = self.env['res.currency']
for line in self:
print line.tax_id
price = self._calc_line_base_price(line)
qty = self._calc_line_quantity(line)
print" price:{} & quantity: {}".format(price,qty)
taxes = line.tax_id.compute_all(price, qty, line.product_id, line.order_id.partner_id)
cur = line.order_id.pricelist_id.currency_id
line.price_subtotal = cur.round(taxes['total'])
1
+ compute_all
コールは税自体にする必要があります。それを「クラスメソッド」と呼ぶ必要はありません。次のスニペットは、あなたのために働く必要があります。
@api.multi
# @api.depends() use it for recomputation triggers
def _amount_line(self):
for line in self:
print line.tax_id
price = self._calc_line_base_price(line)
qty = self._calc_line_quantity(line)
print" price:{} & quantity: {}".format(price,qty)
taxes = line.tax_id.compute_all(
price, qty, line.product_id, line.order_id.partner_id)
cur = line.order_id.pricelist_id.currency_id
line.price_subtotal = cur.round(taxes['total'])
編集:あなたは新しいAPI計算フィールドの機能に何かを返す必要はありません。計算されたフィールドに値を割り当てるだけです。
Edit2:round()
の新しいAPIスタイルのメソッドがあります。私はスニペットを変更しました。
関連する問題
- 1. ODOO 8 - ホットコードプッシュ
- 2. Odoo 8 - ドメインフィルタ
- 3. odoo-8テンプレート
- 4. ドメイン[odoo 8]のエラー
- 5. 文書パスodoo 8
- 6. ウェブサイトでポップアップodoo 8
- 7. BackUp Odoo 8 Windowsエラーファイルゼロサイズファイル
- 8. odoo 8複数ページナビゲーションコントローラ
- 9. Odoo 8は、私がOdoo 8インストールしまった
- 10. 印刷レポートQwebのOdoo 8
- 11. 未払い数がodoo 8
- 12. Odoo 8:onchange manyone2one not working
- 13. Odoo 8 - デフォルトのフィールド値
- 14. httpリダイレクトエラー302とodoo 8
- 15. Odoo 8コントローラ認証クロスサイト
- 16. Odoo 8メソッド解決順序
- 17. Odoo 8 displayStock_move.picking_id.partner_idを表示
- 18. Odoo 8コントローラとPostman/Curlメソッドコール
- 19. エラー要件pyparsing 1.5.7 odoo 8
- 20. many2many odooの関数フィールド8
- 21. URLコントローラへのOdoo 8パスモデル
- 22. は、Windows上で実行されているodoo 8を使用してodoo 8
- 23. odoo 8をodoo 10に移行する方法
- 24. 受注の変更要求日、odoo 8
- 25. Odoo-8ジャーナルアイテムリストビューを変更する
- 26. Odoo 8のレコードセットとは何ですか?
- 27. odoo 8のグループ内のImplied_idsとユーザー
- 28. odoo 8つの質量確認製造
- 29. Odoo 8の開発の要点
- 30. Odoo 8:Many2oneフィールドのネストされたフォームビュー
こんにちは。それはうまくいかなかった。ここに元の行はsale.py 'taxes = tax_obj.compute_all(cr、uid、line.tax_id、price、qty、 line.product_id、 line.order_id.partner_id)です。 –
申し訳ありません、それは動作しますが、私は'return new_api(self、* args、** kwargs)を返します。TypeError:round()は2つの引数をとります(3が指定されています)' –
'line.price_subtotal = cur.round(taxes ['total'])それは働かないの? –