Skip to Content
Меню
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
Це запитання позначене
8 Відповіді
11088 Переглядів

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

Аватар
Відмінити
Найкраща відповідь

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 ] })
Аватар
Відмінити
Автор Найкраща відповідь

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?



Аватар
Відмінити
Найкраща відповідь

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

Аватар
Відмінити
Автор

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

Автор

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

Автор

Nothing is set to the tax_line_ids

Автор

your solution is not working!

Related Posts Відповіді Переглядів Дія
1
січ. 25
3790
2
серп. 24
6020
6
груд. 22
9097
Canadian Tax Вирішено
1
груд. 19
4354
1
лип. 18
3837