1

GUI Odoo でフィールドを作成しています。'compute' を使用したメソッドがあります。しかし、私はそれを得ることができません。

sales.py モジュールの sale.order.line に compute 属性で作成されたフィールドがあります。

niu = fields.Char(string="NIU", compute="_niu_validation", readonly=True, store=True)

@api.depends('product_id.product_tmpl_id.type')
def _niu_validation(self):
    for rec in self:
        if rec.product_id.product_tmpl_id.type == 'product' and not rec.niu:
                rec.niu = self.env['ir.sequence'].next_by_code('sale.order.line')

これは完全に機能しますが、GUI Odoo で同じことを行いたいと考えています。

画像の下に表示されます: http://es.zimagez.com/zimage/computefield.php

しかし、次のエラーが表示されます。

ValueError: forbidden opcode(s) in u"for rec in self:\n        if rec.product_id.product_tmpl_id.type == 'product' and not rec.niu:\n \t    rec.niu = self.env['ir.sequence'].next_by_code('sale.order.line')"

構文エラーがあるのか​​もしれませんが、GUI Odoo でフィールドのメソッドを定義する方法がわかりません。

ヘルプ、アドバイス、提案は大歓迎です。誰かが私を助けることができれば、私はとても感謝しています.

4

3 に答える 3

1

私は v9 を扱っていないので、少し試行錯誤するだけでよいと思います。

これを試してください:

    if self.product_id.product_tmpl_id.type == 'product' and not self.niu:
            self.niu = self.env['ir.sequence'].next_by_code('sale.order.line')

うまくいかない場合は、次を試してみてください。

    if self.product_id.product_tmpl_id.type == 'product' and not self.niu:
            return self.env['ir.sequence'].next_by_code('sale.order.line')
于 2016-03-01T13:21:04.747 に答える
0

親愛なる、

私は同様の問題に直面しました、あなたは試すことができます

self.product_id.product_tmpl_id.type == 'product' であり、self.niu でない場合: self.['niu'] = self.env['ir.sequence'].next_by_code('sale.order.line')

于 2016-07-04T13:59:02.213 に答える