Ir al contenido
Menú
Se marcó esta pregunta
8 Respuestas
10730 Vistas

I want to assign the tax_id from the product in the sale.order to my new field.

Here I have the screenshots:


Like in the screenshots I want to add the +8.0 UST directly in the tax field .

my code looks like this:

tax_line_ids = fields.Many2many('account.tax', string='Taxes', domain=['|', ('active', '=', False), ('active', '=', True)])



@api.onchange('order_line')
def _onchange_order_line(self):
for line in self.order_line:

if self.tax_line_ids.id == line.tax_id.id:
return 0
else:
self.tax_line_ids.id = line.tax_id.id


But I get an error when I try to do this: self.tax_line_ids.id = line.tax_id.id

It should add the new TAX to the new field "tax_line_ids"

I get this error:

line 22, in _onchange_order_line
    self.tax_line_ids.id = line.tax_id.id
  File "/odoo10/odoo10-server/odoo/fields.py", line 2439, in __set__
    raise TypeError("field 'id' cannot be assigned")
TypeError: field 'id' cannot be assigned

I want to thank you for the incoming help.

Thank you

Avatar
Descartar
Mejor respuesta

The right way is:

@api.onchange('order_line')
def _onchange_order_line(self):
     self.ensure_one()
     _tax_line_ids = []
 for line in self.order_line:
    if self.tax_line_ids.id == line.tax_id.id:
    continue
    else:
             _tax_line_ids.append( line.tax_id )
     
     self.write({ 'tax_line_ids': [6, 0, _tax_line_ids ] })
Avatar
Descartar
Autor Mejor respuesta

I tried this:


@api.onchange('order_line')
def _onchange_order_line(self):
for line in self.order_line:
self.write({'tax_line_ids': line.tax_id})

But it's still empty after all. Can someone help me?



Avatar
Descartar
Mejor respuesta

Dear  wizardz,

Try to replace the last line on onchange  function to :

 

self.tax_line_ids = [(6,0,[line.tax_id.id])]

you can insert more than one tax by this syntax:

self.tax_line_ids = [(6,0,[1,2,3,...])]

I hope I helped you..

Avatar
Descartar
Autor

self.tax_line_ids.id = [(6, 0, [line.tax_id.id])]

File "/odoo10/odoo10-server/odoo/fields.py", line 2439, in __set__

raise TypeError("field 'id' cannot be assigned")

TypeError: field 'id' cannot be assigned

not working like this

Try it without .id in the left side

Autor

I tried this:

@api.onchange('order_line')

def _onchange_order_line(self):

for line in self.order_line:

self.tax_line_ids = [(6, 0, [line.tax_id.id])]

still not working and I don't know why...

Autor

Nothing is set to the tax_line_ids

Autor

your solution is not working!

Publicaciones relacionadas Respuestas Vistas Actividad
1
ene 25
3368
2
ago 24
5828
6
dic 22
8759
1
dic 19
4206
1
jul 18
3502