Ir al contenido
Menú
Se marcó esta pregunta
2 Respuestas
6750 Vistas

I'm trying to execute a method on user_id change in the sale.order model in Odoo v8, it use osv.osv class.

I create an inherited model with a models.Model class and use the @api.onchange decorator but nothing append.

# -*- coding: utf-8 -*-
from openerp import models, fields, api
from openerp.exceptions import Warning
class Order(models.Model):
    _inherit = 'sale.order'
    @api.onchange('user_id')
    def on_saler_change(self):
        raise Warning(('Something happened.'))
How i suppose to do this?
Avatar
Descartar
Mejor respuesta

Martin,

What you can do is,

  • Inherit form view of sale.order having user_id field and add onchange attribute to it as:

    • <field name="user_id" position="attributes">

      • <attribute name="on_change">on_saler_change(user_id)</attribute>

    • </field>

  • in .py inherit sale.order using old api only and define "on_saler_change(user_id)" in it


Hope it helps!    

Avatar
Descartar
Mejor respuesta

Hello Martin,


If this onchange method is from base module then call super for the same method.


from openerp import models, fields, api, _

from openerp.exceptions import UserError

class Order(models.Model):

    _inherit = 'sale.order'


    @api.onchange('user_id')

    def on_saler_change(self):

        raise UserError(_('Something Happened'))

        return super(Order, self).on_saler_change()


Hope it works for you.


Thanks,

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
7
oct 17
12907
3
mar 15
3898
0
nov 16
4015
4
ene 16
10314
2
mar 15
4910