I agree that with Fabien that float data-type is inadequate for the
arithmetic requirements for unit conversion. In both Python[1] and
PostgreSQL[2], the precision of float types are dependent on CPU
architecture and Operating System. An Ideal fix would be a data type
that is exact to any arbitrary number of digits precision. In Python,
the decimal type defaults to 28 digits of precision[3] however has no
defined maximum in implementation. In the PostgreSQL manual, the numeric
data type is recommended for fields of arbitrary precision. As stated in
the documentation[4] "Specifying NUMERIC without any precision or scale
creates a column in which numeric values of any precision and scale can
be stored, up to the implementation limit on precision.". This datatype,
allows for arbitrary precision and and is arithmetically exact, and
should be the proper solution for this bug.

[1]http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex
[2]http://www.postgresql.org/docs/8.1/static/datatype.html#DATATYPE-FLOAT
[3]http://docs.python.org/library/decimal.html#module-decimal
[4]http://www.postgresql.org/docs/8.1/static/datatype.html#DATATYPE-NUMERIC-DECIMAL

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

Status in OpenObject Addons Modules: Fix Released
Status in OpenObject Addons 5.0 series: Won't Fix
Status in OpenObject Addons trunk series: Fix Released

Bug description:
I have got a category measure unit size.

The master unit is meter, but I need having m2, m3 and related measure units 
like mm, mm2, mm3, micrometer

so 1m = 1000mm
but 1m = 1000000micrometer

If I try including a conversion factor where I need more than 5 zeros, system 
crashes showing this error:

Environment Information :
System : Windows-XP-5.1.2600-SP3
OS Name : nt
Operating System Release : XP
Operating System Version : 5.1.2600
Operating System Architecture : 32bit
Operating System Locale : es_ES.cp1252
Python Version : 2.5.2
OpenERP-Client Version : 5.0.6
Last revision No. & ID :Bazaar Package not Found !Traceback (most recent call 
last):
  File "/home/xabier/openerp-server/server/bin/netsvc.py", line 244, in dispatch
    result = LocalService(service_name)(method, *params)
  File "/home/xabier/openerp-server/server/bin/netsvc.py", line 73, in __call__
    return getattr(self, method)(*params)
  File 
"/home/xabier/openerp-server/server/bin/addons/base_module_record/base_module_record.py",
 line 38, in execute
    res = super(recording_objects_proxy, self).execute(*args, **argv)
  File "/home/xabier/openerp-server/server/bin/service/web_services.py", line 
583, in execute
    res = service.execute(db, uid, object, method, *args)
  File "/home/xabier/openerp-server/server/bin/osv/osv.py", line 59, in wrapper
    return f(self, dbname, *args, **kwargs)
  File "/home/xabier/openerp-server/server/bin/osv/osv.py", line 118, in execute
    res = pool.execute_cr(cr, uid, obj, method, *args, **kw)
  File "/home/xabier/openerp-server/server/bin/osv/osv.py", line 110, in 
execute_cr
    return getattr(object, method)(cr, uid, *args, **kw)
  File "/home/xabier/openerp-server/server/bin/osv/orm.py", line 2458, in write
    'where id in ('+ids_str+')', upd1)
  File "/home/xabier/openerp-server/server/bin/sql_db.py", line 76, in wrapper
    return f(self, *args, **kwargs)
  File "/home/xabier/openerp-server/server/bin/sql_db.py", line 120, in execute
    res = self._obj.execute(query, params)
ProgrammingError: numeric field overflow
DETAIL:  A field with precision 12, scale 6 must round to an absolute value 
less than 10^6.
 
This is limiting the possibility of having all posible and needed conversion 
factors on measure units, so I think it could be considered a bug or maybe 
wishlist

Thank you!!

Ana



_______________________________________________
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