2017-11-25 3 views
4

Um Daten von mro.request zu mro.order zu übertragen Ich habe eine Funktion mit dem Namen action_confirm und auch Übergang für meinen Workflow, die Schaffung eines neuen Objekts funktionierte perfekt auch die Übertragung von Daten aus char, date ... aber um ein one2many Feld zu füllen, funktioniert es nicht und ich bekomme keinen Fehler.odoo Fill one2many von einem Modell zu einem anderen Modell

mein Knopf ist workflow Ich weiß, dass ich etwas fehlt, kann es einfach nicht verstehen out.below, finden Sie meinen Code ... Mit freundlichen Grüßen

meine Modelle:

1/

class mro_request(osv.osv): 

    _name = 'mro.request' 

    _columns = { 
    'intervention': fields.one2many('fleet.service.type.line','intervention_id','Order réparations', help='Cost type purchased with this cost'), 
    'priority' : fields.selection([('0', 'Not urgent'), ('1', 'Normale'), ('2', 'Urgent'), ('3', 'Tres Urgent'),('4', 'Critique')], 'Priorité', 
     select=True, readonly=True, states=dict.fromkeys(['draft', 'confirmed'], [('readonly', False)])), 
    } 

    @api.multi 
    def action_confirm(self): 
     or_object = self.env['mro.order'] 
     affectation_line = self.env['fleet.service.type.line'] 


    ## creating maintenance order object is working 
     obj = {'state': 'draft', 'date_planned' : self.execution_date,'intervention': self.intervention, 
      'asset_id' : self.asset_id.id, 'description': self.description} 
     purchase_id = or_object.create(obj) 


     list_intervention=[] 
     for line in self.intervention : 
      art = {} 

      art['desc'] = line.description 
      art['intervention_type'] = line.intervention_type.name 

      art_id = affectation_line.create(art) 
      list_intervention.append(art_id) 

     self.write({'state': 'run'}) 

     return True 

2/

class mro_order(osv.osv): 

    _name = 'mro.order' 

    _columns = { 
    'intervention': fields.one2many('fleet.service.type.line','intervention_id','Order réparations', help='Cost type purchased with this cost'), 
    'priority' : fields.selection([('0', 'Not urgent'), ('1', 'Normale'), ('2', 'Urgent'), ('3', 'Tres Urgent'),('4', 'Critique')], 'Priorité', 
     select=True, readonly=True), 
    } 

3/

class fleet_service_type_line(osv.Model): 
    _name = 'fleet.service.type.line' 
    _description = 'Type of services available on a vehicle' 
    _columns = { 

    'intervention_id' : fields.many2one('mro.request'), 
    'intervention_type' : fields.many2one('fleet.service.type','Type Intervention'), 
    'intervention_mro' : fields.many2one('mro.order','Type Intervention'), 
    'user_id'   : fields.many2one('res.users', 'Chef Atelier', help="Workshop Chief"), 
    'desc' : fields.char('desc'), 

    } 
+0

haben Sie versucht, was @Zety hier vorgeschlagene https://stackoverflow.com/questions/39524632/how-to-automatically-fill-a-one2many- field-values-to-another-one2many-Feld-in-0 – user3676872

+0

es hat nicht funktioniert. – imad

Antwort

3

versuchen Sie dies:

@api.multi 
def action_confirm(self): 
    or_object = self.env['mro.order'] 

    ## creating maintenance order object is working 
    obj = { 
     'state': 'draft', 
     'date_planned' : self.execution_date, 
     'intervention': self.intervention, 
     'asset_id' : self.asset_id.id, 
     'description': self.description 
    } 

    # before you create your model add the list 
    # of records to be created in intervention 
    list_intervention=[] 
    for line in self.intervention : 
     art = {} 
     art['desc'] = line.description 
     art['intervention_type'] = line.intervention_type.name 
     # x2many field accept list of cammands (command, value1, value2) 
     # for create pass 0 in cammand and a dictionary in value2 
     list_intervention.append((0, 0, art)) 

    obj.update({ # add the list of command to obj 
     'intervention': list_intervention, 
     }) 
    # now the create method will create the record in intervention too 
    or_object = or_object.create(obj)   
    self.write({'state': 'run'}) 
    return True 
+0

Vielen Dank, tatsächlich habe ich diese Art von Lösung gefunden, aber ich wusste nicht, wie man genau verwendet ... Danke nochmal. Du hast meinen Tag gerettet. – imad

+1

Willkommen hier, um zu helfen ^^ – Cherif

Verwandte Themen