Odoo Help


OpenERP Server Error on Quotation ?

Claudiu Dominic Bolonyi
on 6/21/13, 8:33 AM 1,738 views

Hi everybody,

I encounter a server error when I want to create an Quotation in OpenERP 7. The error appears when i select the product to add from the list. I have the error below:

OpenERP Server Error

Client Traceback (most recent call last):
  File "/home/openerp/openerp-7.0/openerp/addons/web/http.py", line 204, in dispatch
    response["result"] = method(self, **self.params)
  File "/home/openerp/openerp-7.0/openerp/addons/web/controllers/main.py", line 1121, in call_kw
    return self._call_kw(req, model, method, args, kwargs)
  File "/home/openerp/openerp-7.0/openerp/addons/web/controllers/main.py", line 1113, in _call_kw
    return getattr(req.session.model(model), method)(*args, **kwargs)
  File "/home/openerp/openerp-7.0/openerp/addons/web/session.py", line 42, in proxy
    result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw)
  File "/home/openerp/openerp-7.0/openerp/addons/web/session.py", line 30, in proxy_method
    result = self.session.send(self.service_name, method, *args)
  File "/home/openerp/openerp-7.0/openerp/addons/web/session.py", line 103, in send
    raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)

Server Traceback (most recent call last):
  File "/home/openerp/openerp-7.0/openerp/addons/web/session.py", line 89, in send
    return openerp.netsvc.dispatch_rpc(service_name, method, args)
  File "/home/openerp/openerp-7.0/openerp/netsvc.py", line 292, in dispatch_rpc
    result = ExportService.getService(service_name).dispatch(method, params)
  File "/home/openerp/openerp-7.0/openerp/service/web_services.py", line 626, in dispatch
    res = fn(db, uid, *params)
  File "/home/openerp/openerp-7.0/openerp/osv/osv.py", line 188, in execute_kw
    return self.execute(db, uid, obj, method, *args, **kw or {})
  File "/home/openerp/openerp-7.0/openerp/osv/osv.py", line 131, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/openerp/openerp-7.0/openerp/osv/osv.py", line 197, in execute
    res = self.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/openerp/openerp-7.0/openerp/osv/osv.py", line 185, in execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/openerp/openerp-7.0/openerp/addons/warning/warning.py", line 274, in product_id_change
    lang, update_tax, date_order, packaging, fiscal_position, flag, context=context)
  File "/home/openerp/openerp-7.0/openerp/addons/event_sale/event_sale.py", line 63, in product_id_change
    res = super(sale_order_line,self).product_id_change(cr, uid, ids, pricelist, product, qty=qty, uom=uom, qty_uos=qty_uos, uos=uos, name=name, partner_id=partner_id, lang=lang, update_tax=update_tax, date_order=date_order, packaging=packaging, fiscal_position=fiscal_position, flag=flag, context=context)
  File "/home/openerp/openerp-7.0/openerp/addons/sale_stock/sale_stock.py", line 611, in product_id_change
    compare_qty = float_compare(product_obj.virtual_available * uom2.factor, qty * product_obj.uom_id.factor, precision_rounding=product_obj.uom_id.rounding)
  File "/home/openerp/openerp-7.0/openerp/osv/orm.py", line 484, in __getattr__
    return self[name]
  File "/home/openerp/openerp-7.0/openerp/osv/orm.py", line 399, in __getitem__
    field_values = self._table.read(self._cr, self._uid, ids, field_names, context=self._context, load="_classic_write")
  File "/home/openerp/openerp-7.0/openerp/osv/orm.py", line 3604, in read
    result = self._read_flat(cr, user, select, fields, context, load)
  File "/home/openerp/openerp-7.0/openerp/osv/orm.py", line 3712, in _read_flat
    res2 = self._columns[val[0]].get(cr, self, ids, val, user, context=context, values=res)
  File "/home/openerp/openerp-7.0/openerp/osv/fields.py", line 1131, in get
    result = self._fnct(obj, cr, uid, ids, name, self._arg, context)
  File "/home/openerp/openerp-7.0/openerp/addons/stock/product.py", line 358, in _product_available
    stock = self.get_product_available(cr, uid, ids, context=c)
  File "/home/openerp/openerp-7.0/openerp/addons/stock/product.py", line 219, in get_product_available
    warehouse_id = shop_obj.read(cr, uid, int(context['shop']), ['warehouse_id'])['warehouse_id'][0]
TypeError: 'bool' object has no attribute '__getitem__'

Found the problem: The Shop that I've selected had no warehouse pointed to it. Sales>>Shop

Claudiu Dominic Bolonyi
on 6/22/13, 3:31 AM
On 4/30/15, 10:52 AM

If you are not using the warehouse module and it's installed then deinstall it. That worked for me.


Brett Lehrer

--Brett Lehrer--
Brett Lehrer
| 5 4 8
Milwaukee, United States
--Brett Lehrer--
Director of IT and open source enthusiast.
Brett Lehrer
On 4/16/15, 7:57 PM

shop_obj.read(cr, uid, int(context['shop']), ['warehouse_id'])['warehouse_id'] returns False, so False[0] gives you the error you describe.  Be cautious of using so many __getitem__ references at once without verifying that you have data in the first place.

For example, int(context['shop']) can present the same issue.  More reliable code might be:

warehouse_id = False
if context.get('shop') and isinstance(context['shop'], int):
    warehouse_res = shop_obj.read(cr, uid, int(context['shop']), ['warehouse_id'])['warehouse_id']
	if warehouse_res:
	    warehouse_id = warehouse_res[0]
if not warehouse_id:
    raise osv.except_osv("Error", "The given shop does not have a warehouse! Check your configuration.")

This is much more resilient to crashes, and the next time an issue like this arises, you have a meaningful, descriptive error, rather than an uncaught exception and stack trace dumped to the end user.

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

0 follower(s)


Asked: 6/21/13, 8:33 AM
Seen: 1738 times
Last updated: 4/30/15, 10:52 AM