¿Cómo puedo hacer para mostrar campos de dos modelos diferentes? Odoo 10

1,067 views
Skip to first unread message

Myriam Portillo

unread,
Jul 23, 2018, 8:50:18 AM7/23/18
to Usuarios Odoo / OpenERP en España
Tengo el campo Precio de venta (list_price) del modelo product.template y el campo cantidad (amount) del modelo account.tax.template. Quiero multiplicar esos dos campos en una vista: product.template.product.form ¿Cómo prodría hacerlo?

Este es mi código: 


from odoo import fields, models, api, tools


class ProductTemplate(models.Model):
_name = 'product.template'
_inherit = 'product.template'

pventa_iva = fields.Float('PVP (IVA)')
pcompra_iva = fields.Float('COSTE (IVA)')
iva = fields.Integer('datos con iva', compute='_venta_iva')
total = fields.Float(compute='_compute_total')

 @api.multi
def _venta_iva(self):
res = self.env['account.tax'].browse('amount')
return res
@api.depends('list_price', 'iva')
def _compute_total(self):
for record in self:
record.total = record.list_price * record.iva

cubells

unread,
Jul 23, 2018, 9:00:51 AM7/23/18
to openerp-s...@googlegroups.com
El 23/7/18 a les 14:50, Myriam Portillo ha escrit:
> Tengo el campo Precio de venta (list_price) del modelo product.template
> y el campo cantidad (amount) del modelo account.tax.template. Quiero
> multiplicar esos dos campos en una vista: product.template.product.form
> ¿Cómo prodría hacerlo?

Tienes que tener una campo que una ambos modelos.

En este caso, por lo que entiendo, podrías utilizar el campo
property_account_income_id (many2many) o bien
property_account_expense_id (many2many).

Pero has de tener en cuenta que un producto puede tener diversos
impuestos. Y que dependiendo de la posición fiscal, vale un precio o
vale otro. Entiendo que quieres calcular el precio del producto con iva.
Así lo podrías calcular.

Lo que no puedes hacer es mezclar peras con manzanas.

Te recomiendo que aprendas las relaciones con los modelos.

--
Atentament, cubells.
--

Myriam Portillo

unread,
Jul 23, 2018, 12:14:54 PM7/23/18
to Usuarios Odoo / OpenERP en España
Muy buenas 

No me sirven los campos property_account_income_id para calcular el iva, por lo tanto he creado una relación many2many (amount = fields.Many2many(comodel_name='account.tax', string='Tax')) pero sigue sin servirme. 
Adjunto imagen de los campos que me aparecen.

Yo lo que realmente quiero es sacar el valor de la base de datos que se guarda cuando introduces un iva en el campo de la imagen.

Tengo esta consulta a la base de datos pero no me funciona:

@api.model_cr
def init(self):
tools.drop_view_if_exists(self._cr, 'product_template')
result = self._cr.execute("""
SELECT
amount
from
"public"."account_tax"
INNER JOIN product_taxes_rel ON account_tax.id = product_taxes_rel.tax_id
WHERE prod_id = 59502


""")
result = self.cr.fetchone()

return result
Captura de pantalla 2018-07-23 a las 18.06.05.png

cubells

unread,
Jul 23, 2018, 12:34:45 PM7/23/18
to openerp-s...@googlegroups.com
El 23/7/18 a les 18:14, Myriam Portillo ha escrit:
> Muy buenas 
>
> No me sirven los campos property_account_income_id para calcular el iva,

Por qué no te sirve?



--
Atentament, cubells.
--

Myriam Portillo

unread,
Jul 23, 2018, 12:54:20 PM7/23/18
to Usuarios Odoo / OpenERP en España
Porque me selecciona una cuenta de ingresos...yo lo que necesito es la cantidad que se guarda en la base de datos cuando marcas el iva.

cubells

unread,
Jul 23, 2018, 5:44:03 PM7/23/18
to openerp-s...@googlegroups.com
El 23/7/18 a les 18:54, Myriam Portillo ha escrit:
> Porque me selecciona una cuenta de ingresos...yo lo que necesito es la
> cantidad que se guarda en la base de datos cuando marcas el iva.
>


perdona, es taxes_id y/o supplier_taxes_id

--
Atentament, cubells.
--

Myriam Portillo

unread,
Jul 24, 2018, 3:12:08 AM7/24/18
to Usuarios Odoo / OpenERP en España
Muy buenas
Gracias por ayudarme.
el campo taxes_id me muestra la tabla para ingresar el tipo de iva , pero yo lo que sigo necesitando es el numero que genera ese iva introducido en la base de datos

cubells

unread,
Jul 24, 2018, 5:05:42 AM7/24/18
to openerp-s...@googlegroups.com
El 24/7/18 a les 09:12, Myriam Portillo ha escrit:
> Muy buenas
> Gracias por ayudarme.
> el campo taxes_id me muestra la tabla para ingresar el tipo de iva ,
> pero yo lo que sigo necesitando es el numero que genera ese iva
> introducido en la base de datos
>


Claro, tendrás que mirar el amunt de cada tax_id. Revisa los modelos por
favor.


--
Atentament, cubells.
--

Myriam Portillo

unread,
Jul 25, 2018, 7:37:13 AM7/25/18
to Usuarios Odoo / OpenERP en España
Muy buenas 

¿Cómo puedo mostrar en la vista:  id="product_template_product_form_view" el campo total = fields.Float('total', compute='_getamount') de la clase class AccountTax(models.Model)????

Adjunto imagen del códgio.

Muchas gracias
Captura de pantalla 2018-07-25 a las 13.31.08.png

cubells

unread,
Jul 25, 2018, 8:16:13 AM7/25/18
to openerp-s...@googlegroups.com
El 25/7/18 a les 13:37, Myriam Portillo ha escrit:
> Muy buenas 
>
> ¿Cómo puedo mostrar en la
> vista:  id="product_template_product_form_view" el campo total =
> fields.Float('total', compute='_getamount') de la clase class
> AccountTax(models.Model)????

(madre mía)


tendrás que añadir tú un campo que tenga un compute y calcule el dato
como tú quieres.


--
Atentament, cubells.
--
Message has been deleted

cedesa cedesa

unread,
Sep 24, 2018, 3:51:25 AM9/24/18
to Usuarios Odoo / OpenERP en España

Hola a todos

Yo soy nuevo en odoo, estoy haciendo una modificación para un cliente que tiene el mismo problema. ¿Hay alguna solución? ¿Cómo se podría hacer?

Jorge Omar Carrizoza Jimenez

unread,
Sep 24, 2018, 10:44:19 AM9/24/18
to openerp-s...@googlegroups.com
Se me ocurre que hagas otro campo function y en ese campo function sumes los dos valores. Y en la vista muestres este nuevo campo Function

El lun., 24 sept. 2018 a las 2:51, cedesa cedesa (<mgarcia...@gmail.com>) escribió:

Hola a todos

Yo soy nuevo en odoo, estoy haciendo una modificación para un cliente que tiene el mismo problema. ¿Hay alguna solución? ¿Cómo se podría hacer?

--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para cancelar 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.


--
 
Jorge Omar Carrizoza Jimenez
Desarrollador Sr
(55) 2456.1414 Ext. 6680
(55) 0000.0000
jorge.c...@pchmayoreo.com.mx
jorge.c...@pchmayoreo.com.mx
Iztaccihuatl #322, Col. Santa Cruz Aviación, Del. Venustiano Carranza, C.P. 15540, Ciudad de México

Myriam Portillo

unread,
Sep 25, 2018, 5:45:47 AM9/25/18
to Usuarios Odoo / OpenERP en España
Muy buenas! 

Yo tengo echo este código:

class ProductTemplate(models.Model):
_name = 'product.template'
_inherit = 'product.template'

pventa_iva = fields.Float('PVP (IVA)')
pcompra_iva = fields.Float('COSTE (IVA)')
    total = fields.Float(compute='_compute_total', store=True)
cant = fields.Many2many(comodel_name='product.template',
relation='product_taxes_rel',
column1='prod_id',
colum2='tax_id', )

@api.depends('list_price', 'cant')

def _compute_total(self):
for record in self:
            record.total = record.list_price * record.cant

y en la view tengo:
<record id="product_template_product_form_view" model="ir.ui.view">
<field name="name">product.template.product.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<field name="list_price" position="after">
<field name="total"/>
</field>
<field name="uom_id" position="before">
<field name="list_price"/>
</field>
</field>
</record>

Pero no me devuelve ningún valor, ni me da ningún error.....si tu consigues solucionarlo avísame, yo sigo intentándolo...

No estaría mal que Jorge Omar o Cubells nos dieran un poco de ayuda.

Mucha suerte
Reply all
Reply to author
Forward
0 new messages