Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
3 Răspunsuri
5176 Vizualizări

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__'
Imagine profil
Abandonează
Autor

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

Cel mai bun răspuns

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

Imagine profil
Abandonează
Cel mai bun răspuns

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.

Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
1
iul. 25
4238
1
oct. 24
2005
0
dec. 23
1798
3
mai 21
4082
0
apr. 21
2393