1

従業員にシーケンスを追加するための Odoo モジュールを開発し、完璧に動作します。

ボタンをクリックして作成し、これらの従業員のシーケンスを表示しますが、シーケンス増分の作成をキャンセルしました

class nhr(models.Model):
    _inherit = 'hr.employee'
    nhr = fields.Char(string='Nº de contacto', index=True, readonly=True, required=True,
        default=lambda self: self.env['ir.sequence'].next_by_code('nhr.seq'))
4

2 に答える 2

3

フィールド宣言時にデフォルト値にロジックを設定しているため、シーケンス番号が増加します。

このような問題を回避するには、 create()メソッドにロジックを設定する必要があります。

次のコードを試してください。

nhr = fields.Char(string='Nº de contacto', index=True, readonly=True)

@api.model
def create(self, vals):

    vals['nhr'] = self.env['ir.sequence'].next_by_code('nhr.seq')

    return super(nhr, self).create(vals)

ノート:

Odoo サーバーを再起動し、カスタム モジュールをアップグレードします。

于 2016-11-15T17:51:07.467 に答える
0

nhr レコードを作成するトランザクションのロールバック時に、@Odedra のソリューションが機能しない場合があります。この場合、基になるシーケンスの実装は引き続きインクリメントされます。

シーケンスの「ギャップレス」実装 (ir.sequenceモデルのフィールド) を使用して、すべての数値が連続していることを確認できます。ただし、レコードの作成をシリアル化するグローバル ロックで実装が機能するため、これには多大なコストがかかります。

于 2016-11-16T07:41:11.160 に答える