2016-03-29 6 views
0

Ich versuche, ein OpenERP-Addon namens mrp_bom_history zu modifizieren, um Standardwerte von den bestehenden Bom Linien als Standardwert zu erhalten.OpenERP one2many Standardwert

Ich habe eine _read_line-Methode gemacht, um eine Liste von bom_line-IDs ähnlich how to initialize a default one2many fields in OpenERP zurückzugeben, aber ich bekomme eine 'Record nicht korrekt geladen' Ausnahme, und ich habe Schwierigkeiten herauszufinden, warum.

Python Code aus save_bom_history.py:

class save_bom_history(osv.osv_memory): 
    def _read_line(self,cr,uid,context=None): 
     bom = self.pool.get('mrp.bom').browse(cr,uid,context['active_id']) 
     result = [] 
     for lines in bom.bom_lines: 
      result.append(lines.id) 
     return result 

    _name  = "save.bom.history" 
    _columns = { 
        'name'   : fields.char('Name'), 
        'cut_off_date' : fields.date('Cut-off Date'), 
        'new_bom_ids' : fields.one2many('save.bom.history.line','\ 
wizard_id','New Bill of Material'), 
        } 

    _defaults = { 
        'name'   : "History", 
        'cut_off_date' : time.strftime('%Y-%m-%d'), 
        'new_bom_ids' : _read_line, 
        } 
+0

Das Objekt save.bom.history.line ist es ein Zauberer? – yannicksoldati

+0

Save_bom_history ist ein Wizard mit einem Namensfeld und einem Cut-Off-Date-Feld und hat dann eine new_bom_ids-Zeile, die Produktname, Produktmenge, Maßeinheit, gültig von, gültig bis enthält. – MortenS

+0

Save.bom.history.line ist auch ein Assistent zum Hinzufügen eines Produkts zur BoM. Die Daten aus den vom Assistenten save_bom_history_line erstellten Zeilen werden beim Erstellen der neuen BoM verwendet. Es ist also in den save.bom.history Assistenten eingebettet. – MortenS

Antwort

0

One2Many und Many2many verwenden, um einen speziellen "Befehle" -Format um den Satz von Datensatz in/die mit dem Feld gespeichert zu manipulieren.

Try this:

result.append((0, 0, lines.id)) 
+0

Es ist ein Schritt in die richtige Richtung, aber ich bekomme einen Assistenten mit leeren Zeilen, die den Zeilen in der BoM entsprechen. Wie bei http://imgur.com/GPyQRDE denke ich, dass es daran liegen könnte, dass es keine Gültigkeit hat und gültig ist, bis ich in den BoM-Zeilen versuche, in den Assistenten zu laden. Ich sollte auch hinzufügen, dass wenn ich versuche, die Zeilen zu bearbeiten, die Änderungen sofort weggeworfen werden. – MortenS

0

ich es durch Rücksendung eines Tupels aus arbeiten, anstatt nur die ID

 for lines in bom.bom_lines: 
     line_data = { 
         'name'    : lines.name, 
         'date_start'  : lines.date_start, 
         'date_stop'  : time.strftime('%Y-%m-%d'), 
         'product_qty'  : lines.product_qty, 
         'product_id'  : lines.product_id and lines.product_id.id or False, 
         'product_uom'  : lines.product_uom and lines.product_uom.id or False, 
         'bom_id'   : bom and bom.id or False, 
         } 
     result.append((0,0,line_data)) 
    return result