Welcome!

This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

0

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

por
Andy Paredes
en 23/5/17 22:46 776 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


0
Andy Paredes
En 24/5/17 22:19

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

  • Marcar

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.

Gustavo Orrillo
de 24/5/17 22:22

0
Gustavo Orrillo
En 23/5/17 23:00

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

 

 

  • Marcar

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

Andy Paredes
de 24/5/17 00:26

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

Gustavo Orrillo
de 24/5/17 13:21

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

Gustavo Orrillo
de 24/5/17 13:21

Mantener informado

Acerca de esta comunidad

Esta comunidad es para profesionales y entusiastas de nuestros productos y servicios, compartir los mejores contenidos y nuevas ideas de marketing, construir su perfil profesional y mejorar el mercado para todos. Lea las directrices

Herramientas de las preguntas

64 seguidor(es)

Estadísticas

Preguntado: 23/5/17 22:46
Visto: 776 veces
Última actualización: 14/4/18 12:41