How to fix this error i got while migrating Odoo v10 module to Odoo v12
Odoo Server Error
Traceback (most recent call last):
File "/odoo12/odoo12-server/odoo/http.py", line 656, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/odoo12/odoo12-server/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/odoo12/odoo12-server/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/odoo12/odoo12-server/odoo/http.py", line 698, in dispatch
result = self._call_function(**self.params)
File "/odoo12/odoo12-server/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/odoo12/odoo12-server/odoo/service/model.py", line 98, in wrapper
return f(dbname, *args, **kwargs)
File "/odoo12/odoo12-server/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/odoo12/odoo12-server/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/odoo12/odoo12-server/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 966, in call_button
action = self._call_kw(model, method, args, {})
File "/odoo12/odoo12-server/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/odoo12/odoo12-server/odoo/api.py", line 759, in call_kw
return _call_kw_multi(method, model, args, kwargs)
File "/odoo12/odoo12-server/odoo/api.py", line 746, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/odoo12/custom/addons/schoo_training/models/training.py", line 272, in action_training_invoice_create
price = new_price.values()[0] if new_price else train.test_type.lst_price
TypeError: 'dict_values' object does not support indexing
Below is my working code in Odoo v10
def action_training_invoice_create(self):
invoice_obj = self.env["account.invoice"]
invoice_line_obj = self.env["account.invoice.line"]
inv_line_ids = []
for train in self:
if train.student:
curr_invoice = {
'partner_id': train.student.partner_id.id,
'student' : train.student.id,
'account_id': train.student.partner_id.property_account_receivable_id.id,
'state': 'draft',
'date_invoice':fields.Date.today(),
}
inv_id = invoice_obj.create(curr_invoice)
if inv_id:
prd_account_id = self._default_account()
if train.test_type:
new_price = self.pricelist_id.price_get(train.test_type.product_id.id, 1)
price = new_price.values()[0] if new_price else train.test_type.lst_price
curr_invoice_line = {
'name': "Charge for " + str(train.test_type.name) + " training test",
'product_id': train.test_type.product_id.id,
'price_unit': price,
'quantity': 1.0,
'invoice_id': inv_id.id,
}
inv_line_ids = invoice_line_obj.create(curr_invoice_line)
self.write({'state': 'Awaiting Verification','invoice_id': inv_id.id})
Could someone look into my error please