From 14c647347324e612c9e6d72ad0112c5d42b1114d Mon Sep 17 00:00:00 2001 From: mtr Date: Thu, 31 Mar 2011 15:01:09 +0530 Subject: [PATCH] [IMP] hr_payroll: improved code to avoid duplicate rules on payslip bzr revid: mtr@mtr-20110331093109-0wq8bqq2q4t6y5bz --- addons/hr_payroll/hr_payroll.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index be7c12818dc..98b755074cf 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -834,12 +834,14 @@ class hr_payslip(osv.osv): 'employee_id': slip.employee_id.id, 'base': line.computational_expression } - if line.appears_on_payslip: - if line.condition_range_min or line.condition_range_max: - if not ((value < line.condition_range_min) or (value > line.condition_range_max)): + slip_ids = slip_line_pool.search(cr, uid, [('code', '=', line.code), ('slip_id', '=', slip.id)]) + if not slip_ids: + if line.appears_on_payslip: + if line.condition_range_min or line.condition_range_max: + if not ((value < line.condition_range_min) or (value > line.condition_range_max)): + slip_line_pool.create(cr, uid, vals, {}) + else: slip_line_pool.create(cr, uid, vals, {}) - else: - slip_line_pool.create(cr, uid, vals, {}) basic = contract.wage number = sequence_obj.get(cr, uid, 'salary.slip') @@ -1151,13 +1153,14 @@ class hr_payslip(osv.osv): 'employee_id': employee_id.id, 'base': line.computational_expression } - if line.appears_on_payslip: - if line.condition_range_min or line.condition_range_max: - if not ((value < line.condition_range_min) or (value > line.condition_range_max)): + if vals not in update['value']['line_ids']: + if line.appears_on_payslip: + if line.condition_range_min or line.condition_range_max: + if not ((value < line.condition_range_min) or (value > line.condition_range_max)): + update['value']['line_ids'].append(vals) + else: update['value']['line_ids'].append(vals) - else: - update['value']['line_ids'].append(vals) - + basic = contract.wage all_basic += basic final_total += basic + total