Quantcast
Channel: OpenERP Help - Individual question feed
Viewing all articles
Browse latest Browse all 69

Write method called in the create method

$
0
0
I have created a custom module and i am redefining the create and write methods. When i create a new sale order, the method create is called, but also the write method.. How it is possible ? Thanks def create(self, cr, uid, vals, context=None): # creation du devis par heritage(et des lignes de commandes du devis) // obligatoire de creer le devis pour acceder aux lignes du devis id = super(sale_order, self).create(cr, uid, vals, context) # creation d'une liste vide qui contiendra tous les numeros de sections saisis dans la vue liste_numeros_section = [] # recuperation des id de chaque ligne du devis (qui ne sont pas des options) order_line_ids = self.pool.get('sale.order.line').search(cr, uid, [('order_id', '=', id), ('is_option', '=', False)], context=context) #recuperation de l'objet section section_pool = self.pool.get('sale.order.section') for i in self.pool.get('sale.order.line').browse(cr,uid,order_line_ids, context=context): # pour chaque ligne du devis # si nouveau numero de section, alors creation section + lien avec ligne de devis actuelle if not(i.number_section in liste_numeros_section): liste_numeros_section.append(i.number_section) dict_section = { 'order_id': id, 'order_line': [(4, i.id)], # lier ligne du devis actuelle a la section (creation d'une relation) 'number': i.number_section, } section_pool.create(cr,uid,dict_section, context=context) else: # si le numero de section existe deja, alors creation lien ligne du devis actuelle /section id_section = self.pool.get('sale.order.section').search(cr,uid, [('number', '=', i.number_section), ('order_id', '=', id)], context=context) #recupere section qui correspond a la ligne du devis dict_section = { 'order_line': [(4, i.id)], # lier ligne du devis actuelle a la section (creation d'une relation) } section_pool.write(cr,uid,id_section,dict_section, context=context) return id def write(self, cr, user, ids, vals, context=None): raise osv.except_osv(_('Erreur!'),_('Vous ne pouvez pas confirmer une commande qui contient une ou des options')) # mise a jour du devis par heritage super(sale_order, self).write(cr, user, ids, vals, context) order_id = ids[0] # recuperation de l'id du devis courant # recuperation de l'objet ligne de devis order_line_pool = self.pool.get('sale.order.line') # recuperation de l'objet section section_pool = self.pool.get('sale.order.section') # recuperation des id de chaque ligne du devis (qui ne sont pas des options) order_line_ids = order_line_pool.search(cr, user, [('order_id', '=', order_id), ('is_option', '=', False)], context=context) # recuperation des id de chaque section du devis section_ids = section_pool.search(cr, user, [('order_id', '=', order_id)], context=context) # creation d'une liste vide qui contiendra tous les numeros de sections saisis dans la vue liste_numeros_section = [] # pour chaque ligne du devis for i in self.pool.get('sale.order.line').browse(cr,user,order_line_ids, context=context): if not (i.section_id in section_ids): # si nouvelle section dict_section = { 'order_id': order_id, # lier ligne du devis actuelle a la section (creation d'une relation) 'order_line': [(4, i.id)], 'number': i.number_section, } section_pool.create(cr,user,dict_section, context=context) else: dict_section = { # mise a jour de la relation entre la section et la ligne du devis 'order_line': [(6, 0, i.id)], 'number': i.number_section, } section_pool.write(cr,user,i.section_id,dict_section, context=context) return True

Viewing all articles
Browse latest Browse all 69

Trending Articles