2016-11-15 8 views
1

Ich entwickle ein Odoo-Modul für Add-Sequenz für Mitarbeiter, arbeiten perfekt.odoo-10 Sequenzinkrement, wenn Sie auf Abbrechen Schaltfläche klicken

Ich klicken zu erstellen und die Reihenfolge für diese Mitarbeiter erscheinen, aber id annulliert die die Sequenz Schritt erstellen ohnehin

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')) 

Antwort

3

Es erhöht die Sequenznummer, weil Sie Logik in Standardwert bei Felddeklaration festgelegt haben.

Um solche Probleme zu vermeiden, müssen wir die Logik in create() Methode setzen.

Versuchen mit folgendem Code:

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) 

HINWEIS:

Restart Odoo Server und Ihren benutzerdefinierten Modul aktualisieren.

0

Es gibt Fälle, in denen @ Odedras Lösung nicht funktioniert, wenn die Transaktion, die den nhr-Datensatz erstellt, rückgängig gemacht wird. In diesem Fall wird die zugrundeliegende Sequenzimplementierung noch inkrementiert.

Sie können die 'lückenlose' Implementierung von Sequenzen verwenden (es ist ein Feld auf dem Modell ir.sequence), um sicherzustellen, dass alle Zahlen fortlaufend sind. Dies verursacht jedoch enorme Kosten, da die Implementierung mit einer globalen Sperre arbeitet, die die Erstellung Ihrer Datensätze serialisiert.

+0

(odoo 10) Für gapless Umsetzung: no_gap Kandhan

Verwandte Themen