From c22f7fece7323d91fb702d363d1fa2f15b6b7ff9 Mon Sep 17 00:00:00 2001 From: mtr Date: Wed, 18 May 2011 10:31:48 +0530 Subject: [PATCH 01/13] [IMP] hr_payroll: added fields and assigned value to start_date and end_date on payslip run bzr revid: mtr@mtr-20110518050148-hhomxkvrsjot786n --- addons/hr_payroll/hr_payroll.py | 5 ++++- addons/hr_payroll/hr_payroll_view.xml | 5 ++++- .../hr_payroll/wizard/hr_payroll_payslips_by_employees.py | 6 +++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index b70b30676a8..3d4071275a9 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -211,7 +211,10 @@ class hr_payslip_run(osv.osv): 'state': fields.selection([ ('draft', 'Draft'), ('close', 'Close'), - ], 'State', select=True, readonly=True) + ], 'State', select=True, readonly=True), + 'date_start': fields.date('Date From', required=False), + 'date_end': fields.date('Date To', required=False), + 'credit_note': fields.boolean('Credit Note', help="Indicates this payslip has a refund of another"), } _defaults = { 'state': 'draft', diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml index 4d422d708de..bf258346c43 100644 --- a/addons/hr_payroll/hr_payroll_view.xml +++ b/addons/hr_payroll/hr_payroll_view.xml @@ -649,8 +649,11 @@ form
- + + + + diff --git a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py index ebb9bed26c1..26ceb7e90a6 100644 --- a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py +++ b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py @@ -37,14 +37,17 @@ class hr_payslip_employees(osv.osv_memory): def compute_sheet(self, cr, uid, ids, context=None): emp_pool = self.pool.get('hr.employee') slip_pool = self.pool.get('hr.payslip') + run_pool = self.pool.get('hr.payslip.run') slip_ids = [] + from_date = time.strftime('%Y-%m-01') + to_date = str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10] if context is None: context = {} data = self.read(cr, uid, ids, context=context)[0] if not data['employee_ids']: raise osv.except_osv(_("Warning !"), _("You must select employee(s) to generate payslip(s)")) for emp in emp_pool.browse(cr, uid, data['employee_ids'], context=context): - slip_data = slip_pool.onchange_employee_id(cr, uid, [], time.strftime('%Y-%m-01'), str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10], emp.id, contract_id=False, context=context) + slip_data = slip_pool.onchange_employee_id(cr, uid, [], from_date, to_date, emp.id, contract_id=False, context=context) res = { 'employee_id': emp.id, 'name': slip_data['value'].get('name', False), @@ -55,6 +58,7 @@ class hr_payslip_employees(osv.osv_memory): 'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids', False)] } slip_ids.append(slip_pool.create(cr, uid, res, context=context)) + run_pool.write(cr, uid, context.get('active_ids', []), {'date_start': from_date, 'date_end': to_date}) slip_pool.compute_sheet(cr, uid, slip_ids, context=context) return {'type': 'ir.actions.act_window_close'} From 79b139d0953b2017138d546c4ff0e969c790f4c4 Mon Sep 17 00:00:00 2001 From: mtr Date: Fri, 20 May 2011 18:35:36 +0530 Subject: [PATCH 02/13] [IMP] hr_payroll: improved tooltip,code and view for payslip run bzr revid: mtr@mtr-20110520130536-j56u80qdnvjc6iii --- addons/hr_payroll/hr_payroll.py | 2 +- addons/hr_payroll/hr_payroll_view.xml | 5 +++-- addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 3d4071275a9..2003a847edf 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -214,7 +214,7 @@ class hr_payslip_run(osv.osv): ], 'State', select=True, readonly=True), 'date_start': fields.date('Date From', required=False), 'date_end': fields.date('Date To', required=False), - 'credit_note': fields.boolean('Credit Note', help="Indicates this payslip has a refund of another"), + 'credit_note': fields.boolean('Credit Note', help="If its True,indicates that payslips generated from here are refundable payslips."), } _defaults = { 'state': 'draft', diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml index bf258346c43..d56f49f731f 100644 --- a/addons/hr_payroll/hr_payroll_view.xml +++ b/addons/hr_payroll/hr_payroll_view.xml @@ -649,11 +649,12 @@ form - + - + + diff --git a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py index 26ceb7e90a6..538d6ad7705 100644 --- a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py +++ b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py @@ -58,7 +58,7 @@ class hr_payslip_employees(osv.osv_memory): 'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids', False)] } slip_ids.append(slip_pool.create(cr, uid, res, context=context)) - run_pool.write(cr, uid, context.get('active_ids', []), {'date_start': from_date, 'date_end': to_date}) + run_pool.write(cr, uid, context.get('active_ids', []), {'date_start': from_date, 'date_end': to_date}) slip_pool.compute_sheet(cr, uid, slip_ids, context=context) return {'type': 'ir.actions.act_window_close'} From b6778a8c02ea52dd5eb7611a9d5351ea204bbf00 Mon Sep 17 00:00:00 2001 From: mtr Date: Fri, 20 May 2011 19:07:37 +0530 Subject: [PATCH 03/13] [IMP] hr_payroll: improved tooltip for 'credit_note' field bzr revid: mtr@mtr-20110520133737-w7ioouj4l2jkkk6g --- 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 2003a847edf..5bb0dbb88de 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -214,7 +214,7 @@ class hr_payslip_run(osv.osv): ], 'State', select=True, readonly=True), 'date_start': fields.date('Date From', required=False), 'date_end': fields.date('Date To', required=False), - 'credit_note': fields.boolean('Credit Note', help="If its True,indicates that payslips generated from here are refundable payslips."), + 'credit_note': fields.boolean('Credit Note', help="If its checked, indicates that all payslips generated from here will be refundable payslips."), } _defaults = { 'state': 'draft', From 995cc05169b66b6ec0755ec873c56d085ee05ef0 Mon Sep 17 00:00:00 2001 From: mtr Date: Mon, 23 May 2011 11:31:13 +0530 Subject: [PATCH 04/13] [IMP] hr_payroll: fields become readonly when state is close and changed tooltip for 'credit_note' bzr revid: mtr@mtr-20110523060113-3flgpwe89tu7ezuo --- addons/hr_payroll/hr_payroll.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 5bb0dbb88de..335047d0282 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -212,9 +212,9 @@ class hr_payslip_run(osv.osv): ('draft', 'Draft'), ('close', 'Close'), ], 'State', select=True, readonly=True), - 'date_start': fields.date('Date From', required=False), - 'date_end': fields.date('Date To', required=False), - 'credit_note': fields.boolean('Credit Note', help="If its checked, indicates that all payslips generated from here will be refundable payslips."), + 'date_start': fields.date('Date From', required=False, readonly=True, states={'draft': [('readonly', False)]}), + 'date_end': fields.date('Date To', required=False, readonly=True, states={'draft': [('readonly', False)]}), + 'credit_note': fields.boolean('Credit Note', readonly=True, states={'draft': [('readonly', False)]}, help="If its checked, indicates that all payslips generated from here are refund payslips."), } _defaults = { 'state': 'draft', From 4dd134c822bb39bd88ca9d9651192d3cd351940e Mon Sep 17 00:00:00 2001 From: mtr Date: Tue, 24 May 2011 17:11:17 +0530 Subject: [PATCH 05/13] [IMP] hr_payroll: added fields on wizard and improved code so that generated payslip have date from payslip run bzr revid: mtr@mtr-20110524114117-pqqarqenjwwempmj --- addons/hr_payroll/hr_payroll.py | 6 ++- .../hr_payroll_payslips_by_employees.py | 38 +++++++++++++++++-- .../hr_payroll_payslips_by_employees.xml | 3 ++ 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index 335047d0282..062e650e426 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -212,12 +212,14 @@ class hr_payslip_run(osv.osv): ('draft', 'Draft'), ('close', 'Close'), ], 'State', select=True, readonly=True), - 'date_start': fields.date('Date From', required=False, readonly=True, states={'draft': [('readonly', False)]}), - 'date_end': fields.date('Date To', required=False, readonly=True, states={'draft': [('readonly', False)]}), + 'date_start': fields.date('Date From', required=True, readonly=True, states={'draft': [('readonly', False)]}), + 'date_end': fields.date('Date To', required=True, readonly=True, states={'draft': [('readonly', False)]}), 'credit_note': fields.boolean('Credit Note', readonly=True, states={'draft': [('readonly', False)]}, help="If its checked, indicates that all payslips generated from here are refund payslips."), } _defaults = { 'state': 'draft', + 'date_start': lambda *a: time.strftime('%Y-%m-01'), + 'date_end': lambda *a: str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10], } def draft_payslip_run(self, cr, uid, ids, context=None): diff --git a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py index 538d6ad7705..85557bcee54 100644 --- a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py +++ b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.py @@ -32,18 +32,46 @@ class hr_payslip_employees(osv.osv_memory): _description = 'Generate payslips for all selected employees' _columns = { 'employee_ids': fields.many2many('hr.employee', 'hr_employee_group_rel', 'payslip_id', 'employee_id', 'Employees'), + 'date_from': fields.date('Date From', readonly=True), + 'date_to': fields.date('Date To', readonly=True), + 'credit_note': fields.boolean('Credit Note', readonly=True), } + + def default_get(self, cr, uid, fields, context=None): + """ + To get default values for the object. + @param self: The object pointer. + @param cr: A database cursor + @param uid: ID of the user currently logged in + @param fields: List of fields for which we want default values + @param context: A standard dictionary + @return: A dictionary which of fields with values. + """ + if context is None: + context = {} + run_pool = self.pool.get('hr.payslip.run') + res = super(hr_payslip_employees, self).default_get(cr, uid, fields, context=context) + active_id = context and context.get('active_id', False) + if active_id: + data = run_pool.read(cr, uid, active_id, ['date_start', 'date_end', 'credit_note']) + if 'date_from' in fields: + res.update({'date_from': data['date_start']}) + if 'date_to' in fields: + res.update({'date_to': data['date_end']}) + if 'credit_note' in fields: + res.update({'credit_note': data['credit_note']}) + return res def compute_sheet(self, cr, uid, ids, context=None): emp_pool = self.pool.get('hr.employee') slip_pool = self.pool.get('hr.payslip') run_pool = self.pool.get('hr.payslip.run') slip_ids = [] - from_date = time.strftime('%Y-%m-01') - to_date = str(datetime.now() + relativedelta.relativedelta(months=+1, day=1, days=-1))[:10] if context is None: context = {} data = self.read(cr, uid, ids, context=context)[0] + from_date = data.get('date_from') + to_date = data.get('date_to') if not data['employee_ids']: raise osv.except_osv(_("Warning !"), _("You must select employee(s) to generate payslip(s)")) for emp in emp_pool.browse(cr, uid, data['employee_ids'], context=context): @@ -55,10 +83,12 @@ class hr_payslip_employees(osv.osv_memory): 'contract_id': slip_data['value'].get('contract_id', False), 'payslip_run_id': context.get('active_id', False), 'input_line_ids': [(0, 0, x) for x in slip_data['value'].get('input_line_ids', False)], - 'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids', False)] + 'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids', False)], + 'date_from': from_date, + 'date_to': to_date, + 'credit_note': data.get('credit_note'), } slip_ids.append(slip_pool.create(cr, uid, res, context=context)) - run_pool.write(cr, uid, context.get('active_ids', []), {'date_start': from_date, 'date_end': to_date}) slip_pool.compute_sheet(cr, uid, slip_ids, context=context) return {'type': 'ir.actions.act_window_close'} diff --git a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.xml b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.xml index c8bd142dbf9..95080e0a43f 100644 --- a/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.xml +++ b/addons/hr_payroll/wizard/hr_payroll_payslips_by_employees.xml @@ -8,6 +8,9 @@ form + + +