2017-08-31 1 views
1

J'essaie d'écrire un onchange qui renvoie un message et met à jour une valeur en même temps. Jusqu'à présent, il affiche le message mais le champ reste le même. Le code que j'ai est:Afficher un message et affecter une valeur à un champ dans une méthode onchange

@api.onchange('changed_field') 
def my_onchange_method(self):  
    if self.other_field: 
     self.changed_field=False 
     raise Warning('Some message.') 

Je pense que mon erreur est la façon d'envoyer le message, quelqu'un pourrait-il me dire comment y parvenir dans Odoo 9? Merci.

Répondre

2

Je pense que vous relancez l'exception de d'avertissement intégré, ce qui explique probablement pourquoi le champ n'est pas mis à jour (je pense que les modifications sont annulées lorsque l'exception est levée).

Essayez ceci:

@api.onchange('changed_field') 
def my_onchange_method(self):  
    if self.other_field: 
     self.changed_field = False 
     return { 
      'warning': { 
       'title': 'TITLE OF THE WARNING MESSAGE BOX', 
       'message': 'YOUR WARNING MESSAGE', 
      } 
     } 

Je peux confirmer cela fonctionne au moins pour Odoo 8. Il faudra probablement travailler pour Odoo 9.

+0

Il a parfaitement fonctionné. Merci ;) – Dayana

0
def onchange_amount_paid(self, cr, uid, ids, amount_paid, context=None): 


res = {'value':{}} 

if amount_paid: 

if fee_type==1 and amount_paid<70: 

warning = { 'title': ("Warning"), 'message': ('registration account minimum payment is 70'), } 

return {'value': res.get('value',{}), 'warning':warning} 

return {'value': res.get('value',{})}