[FIX] hr_expense: mark paid on reconciliation, precision

When comparing floats, `float_compare` must always
be used to avoid precision issues.

e.g., percentages like 1.0000000000000002
must be considered as equal to 1.

opw-666459
This commit is contained in:
Denis Ledoux
2016-01-13 16:10:09 +01:00
parent 10efb0621f
commit d26c85dc0a
@@ -2,7 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from openerp import api, models
from openerp.tools import float_compare
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
@@ -10,7 +10,7 @@ class AccountMoveLine(models.Model):
@api.multi
def reconcile(self, writeoff_acc_id=False, writeoff_journal_id=False):
res = super(AccountMoveLine, self).reconcile(writeoff_acc_id=writeoff_acc_id, writeoff_journal_id=writeoff_journal_id)
account_move_ids = [l.move_id.id for l in self if l.move_id.matched_percentage == 1]
account_move_ids = [l.move_id.id for l in self if float_compare(l.move_id.matched_percentage, 1, precision_digits=5) == 0]
if account_move_ids:
expenses = self.env['hr.expense'].search([('account_move_id', 'in', account_move_ids)])
expenses.paid_expenses()