¡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

Se marcó esta pregunta
2 Respuestas
4834 Vistas

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
Autor Mejor respuesta

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

Avatar
Descartar

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.

Mejor respuesta

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...

 

 

Avatar
Descartar
Autor

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

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

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