Odoo Help


OpenERP Server Error on Quotation ?

Claudiu Dominic Bolonyi
on 6/21/13, 8:33 AM 2,154 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--

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

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: 2154 times
Last updated: 4/30/15, 10:52 AM