From 9f2e1f59d9644fdaf31f97b7e658bfc4cafe3d4c Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Fri, 15 Feb 2019 09:18:05 +0000 Subject: [PATCH] [FIX] hr_payroll_account: payroll precision When the Payroll precision is higher than the currency precision, accounting entries are inconsistent: debit or credit fields use the payroll precision, while the balance uses the currency precision. We make the AML consistent by forcing the currency precision. opw-1924360 closes odoo/odoo#31131 --- .../models/hr_payroll_account.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/hr_payroll_account/models/hr_payroll_account.py b/addons/hr_payroll_account/models/hr_payroll_account.py index 989d5f260f4..d8dc6916abf 100644 --- a/addons/hr_payroll_account/models/hr_payroll_account.py +++ b/addons/hr_payroll_account/models/hr_payroll_account.py @@ -54,13 +54,13 @@ class HrPayslip(models.Model): @api.multi def action_payslip_done(self): res = super(HrPayslip, self).action_payslip_done() - precision = self.env['decimal.precision'].precision_get('Payroll') for slip in self: line_ids = [] debit_sum = 0.0 credit_sum = 0.0 date = slip.date or slip.date_to + currency = slip.company_id.currency_id name = _('Payslip of %s') % (slip.employee_id.name) move_dict = { @@ -70,8 +70,8 @@ class HrPayslip(models.Model): 'date': date, } for line in slip.details_by_salary_rule_category: - amount = slip.credit_note and -line.total or line.total - if float_is_zero(amount, precision_digits=precision): + amount = currency.round(slip.credit_note and -line.total or line.total) + if currency.is_zero(amount): continue debit_account_id = line.salary_rule_id.account_debit.id credit_account_id = line.salary_rule_id.account_credit.id @@ -106,7 +106,7 @@ class HrPayslip(models.Model): line_ids.append(credit_line) credit_sum += credit_line[2]['credit'] - credit_line[2]['debit'] - if float_compare(credit_sum, debit_sum, precision_digits=precision) == -1: + if currency.compare_amounts(credit_sum, debit_sum) == -1: acc_id = slip.journal_id.default_credit_account_id.id if not acc_id: raise UserError(_('The Expense Journal "%s" has not properly configured the Credit Account!') % (slip.journal_id.name)) @@ -117,11 +117,11 @@ class HrPayslip(models.Model): 'journal_id': slip.journal_id.id, 'date': date, 'debit': 0.0, - 'credit': debit_sum - credit_sum, + 'credit': currency.round(debit_sum - credit_sum), }) line_ids.append(adjust_credit) - elif float_compare(debit_sum, credit_sum, precision_digits=precision) == -1: + elif currency.compare_amounts(debit_sum, credit_sum) == -1: acc_id = slip.journal_id.default_debit_account_id.id if not acc_id: raise UserError(_('The Expense Journal "%s" has not properly configured the Debit Account!') % (slip.journal_id.name)) @@ -131,7 +131,7 @@ class HrPayslip(models.Model): 'account_id': acc_id, 'journal_id': slip.journal_id.id, 'date': date, - 'debit': credit_sum - debit_sum, + 'debit': currency.round(credit_sum - debit_sum), 'credit': 0.0, }) line_ids.append(adjust_debit)