Como sobreescribir métodos privados de un modelo

582 views
Skip to first unread message

Andres Gonzales

unread,
May 29, 2015, 1:42:35 PM5/29/15
to openerp-s...@googlegroups.com
Saludos amigos, tengo un problema:
estoy intentando sobreescribir los metodos _amount_line y _amount_all de los modelos sale.order.line y sale.order respectivamente, lo que pasa es que estoy creando presupuestos desde un botón pero con una particularidad.

para mi clientes tengo un tabla donde acumulo sus cuotas mensuales, en esta tabla se guarda el valor de la cuota para ese mes ya que si cambia su precio y aun no ha pagado ninguna cuota se mantiene el precio anterior
entonces con el botón que les comente genero los presupuestos pero necesito poder darle un subtotal diferente al resultado de la multiplicación del precio del producto por la cantidad, se que suena algo raro pero así es como se definieron las funcionalidades que me han solicitado

alguien sabe como poder sobreescribir estos metodos privados he intentando con la manera que siempre use pero no ocurre nada, esta es la manera de como lo he hecho:

class sale_order_line(osv.osv):
    _inherit = 'sale.order.line'

    def _sale_order_line__amount_line(self, cr, uid, ids, field_name, arg, context=None):
        valor_return = super(sale_order_line, self)._amount_line(cr ,uid, ids, field_name, arg, context=None)
        print "val", valor_return
        return valor_return

sale_order_line()

si alguien me puede ayudar con esto se lo agradecería mucho, saludos y gracias por el tiempo que se tomaron para leer mi problema.
Gracias.


Christopher Ormaza

unread,
May 29, 2015, 1:46:44 PM5/29/15
to openerp-s...@googlegroups.com
Hola, cuando se me ha presentado este caso, no he visto forma de reemplazar la función original, lo que suelo hacer re declarar el campo y pasarle otra función con un nombre similar, es decir agrega _columns, copia y pega la declaración inicial del campo, y en la función del calculo pasale tu nueva función

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
photo
Christopher Ormaza
Odoo Ecuador
m: ( 593) -980160581 
 Facebook  Twitter  LinkedIn  YouTube

Roberto Lizana

unread,
May 31, 2015, 3:34:44 AM5/31/15
to openerp-s...@googlegroups.com
La sobreescritura de métodos no es especifico de Odoo, puedes usar la ayuda de Python (https://docs.python.org/2/tutorial/classes.html#inheritance) para aprender como se hace.

Para sobreescribir un método se tiene que llamar igual que el original, en el ejemplo que pasas estas renombrando el metodo '_amount_line' por '_sale_order_line__amount_line' y por eso no te funciona, cambia la linea...


    def _sale_order_line__amount_line(self, cr, uid, ids, field_name, arg, context=None):

por

    def _amount_line(self, cr, uid, ids, field_name, arg, context=None):

Un saludo,
Roberto Lizana
El 29/05/15 a las 19:46, Christopher Ormaza escribió:

Andres Gonzales

unread,
Jun 1, 2015, 4:54:54 PM6/1/15
to openerp-s...@googlegroups.com
Hola Roberto tambien he intentado poniendo el nombre igual al original pero no habia resultados, luego intente de esta manera ya que lei que se podia poner el nombre de la clase luego el metodo pero tampoco funciono, no sabes alguna manera de poder sobreescribir el metodo? saludos. Gracias
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
photo
Christopher Ormaza
Odoo Ecuador
m: ( 593) -980160581 
 Facebook  Twitter  LinkedIn  YouTube
--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages