Siirry sisältöön
Menu
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Tämä kysymys on merkitty
8 Vastaukset
11105 Näkymät

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
Hylkää
Paras vastaus

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
Hylkää
Tekijä Paras vastaus

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
Hylkää
Paras vastaus

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
Hylkää
Tekijä

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

Tekijä

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

Tekijä

Nothing is set to the tax_line_ids

Tekijä

your solution is not working!

Aiheeseen liittyviä artikkeleita Vastaukset Näkymät Toimenpide
1
tammik. 25
3809
2
elok. 24
6026
6
jouluk. 22
9114
Canadian Tax Ratkaistu
1
jouluk. 19
4359
1
heinäk. 18
3847