2017-05-18 3 views
0

I-Sequenz in meinem Verkaufsauftrag als a/b/c generieren möchten, wo a die Sequenznummer eines many2one Feld ist, ist b das aktuelle Jahr und c ist die Kundenreferenz . Ich habe so codiert. Aber die Werte werden nicht immer (mit Ausnahme des Jahres) in es becuase der fn erstellen oder so denke ich,Wie kann ich ein Feld oder eine Variable als eine Sequenz in odoo setzen

def create(self, vals): 
    seq = str(self.projects_id.sequence) 
    year = str(datetime.now().year-2000) 
    ref = str(self.client_order_ref) 
    if vals.get('name', 'New') == 'New': 
     vals['name'] = seq+'/'+year+'/'+ref 
    return super(sale_order,self).create(vals) 

irgendeine Idee?

+0

@ api.model def create (self, vals): wenn vals.get ('name', 'New') == 'Neu ': vals [' name '] = self.env [' ir.sequence ']. Next_by_code (' modelname ') oder' New ' result = super (Verkauf_orde, r self) .create (vals) Ergebnis zurückgeben in xml hinzufügen \t \t \t \t \t \t / \t \t \t \t \t \t

+0

Verwendung von project.sequence ist keine gute Idee! weil es nicht einzigartig sein wird! – DexJ

Antwort

1

Das ist grausamer Fehler mein Freund !!

Sie schreiben Code in Methode CREATE und Sie werden nicht jeden Datensatz/Cord-in selbst bekommen,

, so dass Sie nicht in der Lage sind Felder zugreifen wie,

self.projects_id.sequence

Alle Werte sind in Vals Wörterbuch.

def create(self, vals): 
    project_id = vals.get('projects_id',False) 
    project_obj = self.env['project.project'] 

    seq = str(project_obj.browse(project_id).sequence) 
    year= str(datetime.now().year-2000) 
    ref = vals.get('client_order_ref','') 

    if vals.get('name', 'New') == 'New': 
     vals['name'] = seq+'/'+year+'/'+ref 
    return super(sale_order,self).create(vals) 

**** Projekt-Sequenz ist keine gute Idee! weil sie nicht einzigartig sind. Sie könnten manchmal doppelte Sequenz bekommen. ***

+0

danx mahn! Ich habe es aussortiert. – nj77

+0

Sie sind willkommen. und akzeptiere die Antwort, wenn es dir geholfen hat! – DexJ

Verwandte Themen