Go to file
Olivier Dony fc85a7ee5c [FIX] product: remove unnecessary UoM rounding step, add missing test
Remove the intermediate rounding inside _compute_qty(), as it
is not necessary after rev. fa2f7b86 and has undesired side-effects.

An extra float_round() operation inside _compute_qty()
had been added at rev. 311c77bb to avoid a float representation
error in UoM factors that could bias the ceiling() operation
done as the last conversion step.

Example 1:
Dozen has a factor of 1/12, which was previously stored in the
database with a decimal accuracy of 12 significant decimal digits.
This meant the factor was exactly stored as 0.08333333333333.
When reading this back into a Python float, the precision was not
sufficient, and the UoM conversion of 1 Dozen to Units gave a
result of 12.00000000000047961...
After the final ceiling() operation to Unit's rounding, the
converted value ended up as 13.

This problem was initially solved using an extra rounding.

However at revision fa2f7b86 the decimal precision used to store
UoM factors was increased to preserve all significant digits.
This added the extra precision necessary to read the Dozen factor
back into an accurate float value of 1/12, and the conversion of
1 Dozen now gives 12.0 Units, even without the intermediate
rounding operation. (Works for other factor values too)

At the same time that extra rounding operation has undesired
side-effects, as it requires a fixed precision derived from
the rounding precisions of the UoMs. But there is no given precision
that would work in all cases for this intermediate value. It is
always possible to find a valid combination of UoM roundings
that breaks that intermediate step, e.g. by forcing integer
roundings.

Example 2:
Let Grams have a rounding precision set to 1 because no smaller
quantities are allowed, and Kilograms a rounding of 0.001 to allow
representing 1 Gram. (gram factor = 1000 and kilogram rounding = .001
by default)
If we try to convert 1234 Grams into Kilograms, the extra rounding
introduced in 311c77bb will cause a rounding of 1234.0/1000.0 at
the precision of Grams (1), which gives 1.0 as a result.
The net result of this conversion gives 1234.0 Gram = 1.0 Kilogram,
while the correct result (1.234 Kilogram) is perfectly compatible
with the UoM settings.

Similar errors could be triggered with various rounding settings, as
long as the intermediate rounding needs a finite precision.

Two extra tests have been added to cover Example 1 and Example 2.

--
Related to #2072, #1125, #1126, #2672
Closes #2495, #2498
2014-11-27 16:44:34 +01:00
addons [FIX] product: remove unnecessary UoM rounding step, add missing test 2014-11-27 16:44:34 +01:00
debian [IMP] use exact writing for fsf address 2013-05-14 16:32:54 +02:00
doc [IMP] update the documentation patch 2013-09-04 14:58:42 +02:00
history [IMP] use exact writing for fsf address 2013-05-14 16:29:26 +02:00
install Changed the side image in the Windows Installer 2011-12-21 15:01:41 +01:00
openerp [FIX] base: avoid having 'False' in name of a bank 2014-11-27 13:09:01 +01:00
scripts [IMP] disable the document_ftp in the run_all_with_test script 2012-09-04 12:29:25 +02:00
win32 packaging win32 2012-12-21 15:24:02 +01:00
.gitignore [IMP] .gitignore maintenance migration scripts 2014-10-29 19:49:26 +01:00
LICENSE [IMP] license: renamed general license file, and included note about other applicable licenses 2010-12-08 14:33:25 +01:00
LICENSE.web Put back readme and license 2012-10-11 10:52:18 +02:00
MANIFEST.in [FIX] packaging MANIFEST.in sdist includes everything 2011-10-03 19:52:06 +02:00
Makefile [IMP] *: one Makefile to rules them all. 2014-11-05 19:30:28 +01:00
README [IMP] improve experience on for openerp developers on windows, notes in setup.py and fix some imports 2012-11-07 02:57:08 +01:00
README.web Put back readme and license 2012-10-11 10:52:18 +02:00
openerp-server openerp apps main moved to cli ready for new commands 2012-11-27 01:55:13 +01:00
openerp-wsgi.py [IMP] remove shebang 2013-05-14 13:40:45 +02:00
setup.cfg [IMP] redhat remove unused stuff 2011-10-06 05:14:26 +02:00
setup.nsi [IMP] use exact writing for fsf address 2013-05-14 16:32:54 +02:00
setup.py [FIX] setup: allow using pywebdav 0.9.4.1 (and possible future patches), we only want to stay below 0.9.8 2014-04-10 16:02:44 +02:00
setup_rpm.sh [IMP] directory cleanups, moved historical cruft into history 2011-09-26 02:54:44 +02:00

README

About OpenERP
-------------

OpenERP is an OpenSource/Free software Enterprise Resource Planning and
Customer Relationship Management software. More info at:

    http://www.openerp.com

Installation on Debian/Ubuntu
-----------------------------

Add the the apt repository

    deb http://nightly.openerp.com/6.1/deb/ ./

in your source.list and type:

    $ sudo apt-get update
    $ sudo apt-get install openerp

Or download the deb file and type:

    $ sudo dpkg -i <openerp-deb-filename>
    $ sudo apt-get install install -f

Installation on RedHat, Fedora, CentOS
--------------------------------------

Install the required dependencies:

    $ yum install python
    $ easy_install pip
    $ pip install .....

Install the openerp rpm

    $ rpm -i openerp-VERSION.rpm

Installation on Windows
-----------------------

    Check the notes in setup.py

Installation on MacOSX
-----------------------

Setuping you first database
---------------------------

Point your browser to http://localhost:8069/ and click "Manage Databases", the
default master password is "admin".

Detailed System Requirements
----------------------------

The dependencies are listed in setup.py

For Luxembourg localization, you also need:

 pdftk (http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)