From 8092a079d2bafd9dcd44c1b0552bfd74c88b52cd Mon Sep 17 00:00:00 2001 From: "psi (Open ERP)" Date: Mon, 14 Mar 2011 17:33:59 +0530 Subject: [PATCH 1/5] [IMP] remove unused code bzr revid: psi@tinyerp.co.in-20110314120359-clwrb39i70lkfxsf --- addons/hr_payroll/hr_payroll.py | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index ce3c799a726..e33dc32a498 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -869,8 +869,6 @@ class hr_payslip(osv.osv): holiday_pool = self.pool.get('hr.holidays') sequence_obj = self.pool.get('ir.sequence') empolyee_obj = self.pool.get('hr.employee') - hr_salary_head = self.pool.get('hr.salary.head') - resource_attendance_pool = self.pool.get('resource.calendar.attendance') if context is None: context = {} @@ -906,7 +904,6 @@ class hr_payslip(osv.osv): 'basic_amount': round(0.0), 'basic_before_leaves': round(0.0), 'name':'Salary Slip of %s for %s' % (employee_id.name, tools.ustr(ttyme.strftime('%B-%Y'))), -# 'state':'draft', 'contract_id':False, 'company_id':employee_id.company_id.id }) @@ -992,7 +989,6 @@ class hr_payslip(osv.osv): 'amount': line.amount, 'total': value, 'employee_id': employee_id.id, -# 'function_id': False, 'base': line.computational_expression } if line.appears_on_payslip: @@ -1011,7 +1007,6 @@ class hr_payslip(osv.osv): 'basic_before_leaves': round(basic), 'total_pay': round(basic) + total, 'name':'Salary Slip of %s for %s' % (employee_id.name, tools.ustr(ttyme.strftime('%B-%Y'))), -# 'state':'draft', 'contract_id': contract.id, 'company_id': employee_id.company_id.id }) @@ -1078,18 +1073,6 @@ class hr_payslip(osv.osv): 'employee_id': employee_id.id, 'base': base } -# test = { -# 'name': hday.name, -# 'holiday_type': hday.holiday_type, -# 'employee_id': hday.employee_id.id, -# 'holiday_status_id': hday.holiday_status_id.id, -# 'date_from': hday.date_from, -# 'date_to': hday.date_to, -# 'number_of_days_temp': hday.number_of_days_temp, -# 'state': hday.state, -# 'number_of_days': hday.number_of_days, -# 'type': hday.type -# } days = hday.number_of_days if hday.number_of_days < 0: days = hday.number_of_days * -1 @@ -1112,11 +1095,7 @@ class hr_payslip(osv.osv): total += value res['total'] = value update['value']['line_ids'].append(res) -# update['value']['holiday_ids'].append(test) basic = basic + total - -# leaves = total -# temp_dic = holiday_pool.read(cr, uid, leave_ids, [], context=context) update['value'].update({ 'basic_amount': basic, 'basic_before_leaves': round(basic_before_leaves), @@ -1125,7 +1104,6 @@ class hr_payslip(osv.osv): 'holiday_days': leave, 'worked_days': working_day - leave, 'working_days': working_day, -# 'holiday_ids': temp_dic }) return update From fd1bf58bfbb5a22769b0bd69ee41af5101540035 Mon Sep 17 00:00:00 2001 From: "psi (Open ERP)" Date: Mon, 14 Mar 2011 19:04:28 +0530 Subject: [PATCH 2/5] [IMP] improve code so it will calculate lines for type=code bzr revid: psi@tinyerp.co.in-20110314133428-cey6umex57d62po8 --- addons/hr_payroll/hr_payroll.py | 9 ++-- addons/hr_payroll/hr_payroll_view.xml | 62 ++++++++++++++------------- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index fb0b692adaa..ad60042b782 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -976,9 +976,10 @@ class hr_payslip(osv.osv): value = line.amount else: value = line.amount -# elif line.amount_type == 'code': # Need some clarification so this option remains -# value = slip_line_pool.execute_function(cr, uid, line.id, amt, context) -# line.amount = value + elif line.amount_type=='code': + localdict = {'basic':amt} + exec line.python_code in localdict + value = localdict['result'] total += value vals = { 'category_id': line.category_id.id, @@ -1200,8 +1201,10 @@ class hr_salary_rule(osv.osv): 'sequence': fields.integer('Sequence', required=True, help='Use to arrange calculation sequence'), 'active':fields.boolean('Active'), 'python_code': fields.text('Python code'), + 'python_compute':fields.text('Python Code'), } _defaults = { + 'python_compute': '''# price_unit\n\nresult = basic * 0.10''', 'conditions': 'True', 'computational_expression': 'basic', 'sequence': 5, diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml index bfc6593d6bc..5a5c1b5b061 100644 --- a/addons/hr_payroll/hr_payroll_view.xml +++ b/addons/hr_payroll/hr_payroll_view.xml @@ -81,9 +81,9 @@ - - - + + + @@ -599,33 +599,35 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 57a9c5e7f5857ba53aac20af7b74bbd8794c369d Mon Sep 17 00:00:00 2001 From: "psi (Open ERP)" Date: Tue, 15 Mar 2011 15:27:22 +0530 Subject: [PATCH 3/5] [IMP] small improvement in default of python_compute field of hr.salary.rule object bzr revid: psi@tinyerp.co.in-20110315095722-i6kpzy3c6yt6tjw7 --- addons/hr_payroll/hr_payroll.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index ad60042b782..32dd1872839 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -1204,7 +1204,7 @@ class hr_salary_rule(osv.osv): 'python_compute':fields.text('Python Code'), } _defaults = { - 'python_compute': '''# price_unit\n\nresult = basic * 0.10''', + 'python_compute': '''# basic\n\nresult = basic * 0.10''', 'conditions': 'True', 'computational_expression': 'basic', 'sequence': 5, From c42ce2d208e8c4c4e4ba3c3d66f3fcf6b8f76b94 Mon Sep 17 00:00:00 2001 From: "psi (Open ERP)" Date: Wed, 16 Mar 2011 17:13:02 +0530 Subject: [PATCH 4/5] [IMP] imporve the compute_sheet method of hr.payroll.register bzr revid: psi@tinyerp.co.in-20110316114302-m5vg413dk7otpzxz --- addons/hr_payroll/hr_payroll.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 32dd1872839..6fe28d50e9c 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -165,6 +165,7 @@ class payroll_register(osv.osv): def compute_sheet(self, cr, uid, ids, context=None): emp_pool = self.pool.get('hr.employee') slip_pool = self.pool.get('hr.payslip') + slip_line_pool = self.pool.get('hr.payslip.line') wf_service = netsvc.LocalService("workflow") if context is None: @@ -176,8 +177,6 @@ class payroll_register(osv.osv): old_slips = slip_pool.search(cr, uid, [('employee_id','=', emp.id), ('date','=',vals.date)], context=context) if old_slips: slip_pool.write(cr, uid, old_slips, {'register_id':ids[0]}, context=context) -# for sid in old_slips: -# wf_service.trg_validate(uid, 'hr.payslip', sid, 'compute_sheet', cr) else: res = { 'employee_id':emp.id, @@ -187,7 +186,26 @@ class payroll_register(osv.osv): 'date':vals.date, } slip_id = slip_pool.create(cr, uid, res, context=context) -# wf_service.trg_validate(uid, 'hr.payslip', slip_id, 'compute_sheet', cr) + data = slip_pool.onchange_employee_id(cr, uid, [slip_id], vals.date, emp.id, context=context) + slip_data = { + 'worked_days': data['value'].get('worked_days', 0.0), + 'basic_before_leaves': data['value'].get('basic_before_leaves', 0.0), + 'name': data['value'].get('name', vals.name), + 'holiday_days': data['value'].get('holiday_days', 0.0), + 'working_days': data['value'].get('working_days', 0), + 'basic_amount': data['value'].get('basic_amount', 0.0), + 'leaves': data['value'].get('leaves', 0.0), + 'number': data['value'].get('number', ''), + 'company_id': data['value'].get('company_id', False), + 'struct_id': data['value'].get('struct_id', False), + 'total_pay': data['value'].get('total_pay', 0.0), + 'contract_id': data['value'].get('contract_id', False), + } + if data['value']['line_ids']: + for line in data['value']['line_ids']: + line.update({'slip_id': slip_id}) + slip_line_pool.create(cr, uid, line, context=context) + slip_pool.write(cr, uid, [slip_id], slip_data, context=context) number = self.pool.get('ir.sequence').get(cr, uid, 'salary.register') return self.write(cr, uid, ids, {'state': 'draft', 'number': number}, context=context) From 3947b67231904db96a8abd9a1e7019888ecdf9bc Mon Sep 17 00:00:00 2001 From: "psi (Open ERP)" Date: Wed, 16 Mar 2011 18:44:07 +0530 Subject: [PATCH 5/5] [IMP] small improvment in compute_sheet method of hr.payroll.register bzr revid: psi@tinyerp.co.in-20110316131407-ax2dysk4x6b1kjph --- addons/hr_payroll/hr_payroll.py | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 6fe28d50e9c..76907f82b31 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -187,25 +187,11 @@ class payroll_register(osv.osv): } slip_id = slip_pool.create(cr, uid, res, context=context) data = slip_pool.onchange_employee_id(cr, uid, [slip_id], vals.date, emp.id, context=context) - slip_data = { - 'worked_days': data['value'].get('worked_days', 0.0), - 'basic_before_leaves': data['value'].get('basic_before_leaves', 0.0), - 'name': data['value'].get('name', vals.name), - 'holiday_days': data['value'].get('holiday_days', 0.0), - 'working_days': data['value'].get('working_days', 0), - 'basic_amount': data['value'].get('basic_amount', 0.0), - 'leaves': data['value'].get('leaves', 0.0), - 'number': data['value'].get('number', ''), - 'company_id': data['value'].get('company_id', False), - 'struct_id': data['value'].get('struct_id', False), - 'total_pay': data['value'].get('total_pay', 0.0), - 'contract_id': data['value'].get('contract_id', False), - } - if data['value']['line_ids']: - for line in data['value']['line_ids']: - line.update({'slip_id': slip_id}) - slip_line_pool.create(cr, uid, line, context=context) - slip_pool.write(cr, uid, [slip_id], slip_data, context=context) + for line in data['value']['line_ids']: + line.update({'slip_id': slip_id}) + slip_line_pool.create(cr, uid, line, context=context) + data['value'].pop('line_ids') + slip_pool.write(cr, uid, [slip_id], data['value'], context=context) number = self.pool.get('ir.sequence').get(cr, uid, 'salary.register') return self.write(cr, uid, ids, {'state': 'draft', 'number': number}, context=context)