I think the simpliest way would be to add reference as required many2one
to the category, not as marker on the unit.

That way, existence is enforced, and it can only be one reference per
category.

(We have to find a way to avoid the obvious chicken-and-egg problem)

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/731035

Title:
  Reference UoM for category should be checked for uniqueness

Status in OpenERP Modules (addons):
  Confirmed

Bug description:
  Currently any UoM can be set as a reference for a given category which
  seems to be wrong (meaning one category can have several UoM
  references). By conception it is dubious and actually it makes some
  reports crashes like account_invoice_report with the following error
  message:

  Traceback (most recent call last):
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/netsvc.py", line 
489, in dispatch
      result = ExportService.getService(service_name).dispatch(method, auth, 
params)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/service/web_services.py",
 line 599, in dispatch
      res = fn(db, uid, *params)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/osv.py", line 
122, in wrapper
      return f(self, dbname, *args, **kwargs)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/osv.py", line 
176, in execute
      res = self.execute_cr(cr, uid, obj, method, *args, **kw)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/osv.py", line 
167, in execute_cr
      return getattr(object, method)(cr, uid, *args, **kw)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/orm.py", line 
1735, in search
      return self._search(cr, user, args, offset=offset, limit=limit, 
order=order, context=context, count=count)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/orm.py", line 
3981, in _search
      cr.execute('SELECT "%s".id FROM ' % self._table + from_clause + where_str 
+ order_by + limit_str + offset_str, where_clause_params)Traceback (most recent 
call last):
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/netsvc.py", line 
489, in dispatch
      result = ExportService.getService(service_name).dispatch(method, auth, 
params)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/service/web_services.py",
 line 599, in dispatch
      res = fn(db, uid, *params)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/osv.py", line 
122, in wrapper
      return f(self, dbname, *args, **kwargs)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/osv.py", line 
176, in execute
      res = self.execute_cr(cr, uid, obj, method, *args, **kw)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/osv.py", line 
167, in execute_cr
      return getattr(object, method)(cr, uid, *args, **kw)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/orm.py", line 
1735, in search
      return self._search(cr, user, args, offset=offset, limit=limit, 
order=order, context=context, count=count)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/osv/orm.py", line 
3981, in _search
      cr.execute('SELECT "%s".id FROM ' % self._table + from_clause + where_str 
+ order_by + limit_str + offset_str, where_clause_params)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/sql_db.py", line 
78, in wrapper
      return f(self, *args, **kwargs)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/sql_db.py", line 
131, in execute
      res = self._obj.execute(query, params)
  ProgrammingError: more than one row returned by a subquery used as an 
expression

  
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/sql_db.py", line 
78, in wrapper
      return f(self, *args, **kwargs)
    File 
"/usr/local/lib/python2.6/dist-packages/openerp-server_9000/sql_db.py", line 
131, in execute
      res = self._obj.execute(query, params)
  ProgrammingError: more than one row returned by a subquery used as an 
expression

  
  Uniqueness should be checked when the UoM is created/modified. Even more, you 
should not be able to delete the reference of a category if other UoM depend on 
it.

_______________________________________________
Mailing list: https://launchpad.net/~c2c-oerpscenario
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~c2c-oerpscenario
More help   : https://help.launchpad.net/ListHelp

Reply via email to