Skip to Content
Menu
This question has been flagged
8 Replies
10727 Views

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
Discard
Best Answer

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
Discard
Author Best Answer

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
Discard
Best Answer

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
Discard
Author

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

Author

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

Author

Nothing is set to the tax_line_ids

Author

your solution is not working!

Related Posts Replies Views Activity
1
Jan 25
3364
2
Aug 24
5828
6
Dec 22
8759
1
Dec 19
4206
1
Jul 18
3500