Foro de Odoo Argentina


¡BIENVENIDO AL FORO DE ODOO ARGENTINA!

BRINDAMOS UN ESPACIO A LA COMUNIDAD ARGENTINA DE ODOO PARA CENTRALIZAR EL DEBATE, COMPARTIR IDEAS, DESARROLLOS, Y FORMAR PARTE DE UNA COMUNIDAD QUE CRECE DÍA A DÍA

¿No estás registrado?  REGISTRATE

0

Como calculo el valor de un campo utilizando el valor de otro campo que esta fuera de mi modelo

Avatar
Andy Paredes

Hola quiero saber como puedo calcular un valor de un campo tomando el valor de otro que esta en otro modelo.
En mi actual proyecto estas son dos de mis modelos y alguno de sus campos:

class registro_model(models.Model):

    _name = 'comprasmayores.registro'
    monto = fields.Float(help='Monto del bien o servicio a solicitar')
    iva = fields.Float(string='IVA', compute='_iva', store=True)
    total = fields.Float(string='Monto Total', compute='_total', store=True)
    ut = fields.Float(string="U.T", compute='_ut', store=True)

    @api.depends('monto')
    def _iva(self):
        for r in self:
            r.iva = 12 * r.monto / 100

    @api.depends('monto', 'iva')
    def _total(self):
        for r in self:
            r.total = r.monto + r.iva

class ut_model(models.Model):

    _name = 'comprasmayores.ut'
    ut_fija = fields.Float(string='Valor actual de la Unidad Tributaria')

la cosa es que quiero calcular el valor del campo 'ut' de la siguiente manera, dividir el valor del campo 'total' con el de 'ut_fija' y como ven ambos se encuentran en modelos diferentes, por lo que obviamente al intentar llamar a 'ut_fija' en mi primer modelo obtengo un error esto fue lo que intente al principio:

@api.depends('total')
    def _ut(self):
        for r in self:
            r.ut = r.total / r.ut_fija

Espero que alguien sepa como quiero realizar esta operacion.
Nota: en mi segundo modelo solo existe ese campo ('ut_fija') y solo existira un registro del mismo por lo que supongo no hay que ir buscando el id de este, me encuentro desarrollando sobre Odoo v9, espero haber sido lo suficientemente claro.

Otra cosa, la clase ut_model esta en un archivo diferente de mi clase principal ya que esta esta en una especie de archivo de configuracion

Avatar
Descartar
2 Respuestas
0
Avatar
Andy Paredes
Best Answer

He actualizado la pregunta he confundido algunos nombres de campos y mencionar algunas cosas y decidi enviar un pedazo mas del codigo, disculpen...

1 Comentario
Avatar
Descartar
Avatar
Gustavo Orrillo
-

proba cambiando el api.depends to api.multi. El campo calculado se calcula siempre que se va a mostrar el campo, es por eso que tiene que ser multi.

0
Avatar
Gustavo Orrillo
Best Answer

El tema es asi...

@api.multi
def _ut(self):

        obra_fija = self.env[ 'comprasmayores.ut']

       if obra_fija:
        for r in self:
            r.ut = r.monto / r.ut_fija[0]

Eso deberia hacerlo...

Mil disculpas por el formato...

 

 

3 Comentarios
Avatar
Descartar
Avatar
Andy Paredes
-

Sigue sin hacer el calculo, :/ y ya llevo mas de una semana estancado en esto

Avatar
Gustavo Orrillo
-

Pregunta, se está invocando la funcion? Lo podes saber si haces esto: @api.multi def _ut(sel): import pdb;pdb.set_trace() si se invoca el debugger desde la linea de comandos, significa que se llama la fnción. Si no se está llmaando, hay otro problema entonces

Avatar
Gustavo Orrillo
-

Pregunta, se está invocando la funcion? Lo podes saber si haces esto: @api.multi def _ut(sel): import pdb;pdb.set_trace() si se invoca el debugger desde la linea de comandos, significa que se llama la fnción. Si no se está llmaando, hay otro problema entonces