From 87bdb4895d7ad0f5cd59e8b8cf3695c8685d3a01 Mon Sep 17 00:00:00 2001 From: "Ankita Patel (OpenERP)" Date: Fri, 13 Jul 2012 16:15:01 +0530 Subject: [PATCH] [IMP]hr_payroll: create button bzr revid: pat@tinyerp.com-20120713104501-kp20pumuiyrwdaip --- addons/hr_payroll/hr_payroll.py | 32 ++++++++++++++- addons/hr_payroll/hr_payroll_view.xml | 3 +- .../l10n_in_hr_payroll/l10n_in_hr_payroll.py | 40 ------------------- 3 files changed, 32 insertions(+), 43 deletions(-) diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py index d25f167c020..e7cf6165f6e 100644 --- a/addons/hr_payroll/hr_payroll.py +++ b/addons/hr_payroll/hr_payroll.py @@ -236,7 +236,35 @@ class hr_payslip_run(osv.osv): def close_payslip_run(self, cr, uid, ids, context=None): return self.write(cr, uid, ids, {'state': 'close'}, context=context) -hr_payslip_run() + def create_advice_run(self, cr, uid, ids, context=None): + advice_pool = self.pool.get('hr.payroll.advice') + advice_line_pool = self.pool.get('hr.payroll.advice.line') + payslip_pool = self.pool.get('hr.payslip') + payslip_line_pool = self.pool.get('hr.payslip.line') + users = self.pool.get('res.users').browse(cr, uid, [uid], context=context) + for run in self.browse(cr, uid, ids, context=context): + advice_data = { + 'company_id': users[0].company_id.id, + 'name': run.name, + 'date': run.date_end, + 'bank_id': users[0].company_id.bank_ids and users[0].company_id.bank_ids[0].id or False + } + advice_id = advice_pool.create(cr, uid, advice_data, context=context) + slip_ids = payslip_pool.search(cr, uid, [('payslip_run_id', '=', run.id), ('state', '=', 'done')], context=context) + for slip in payslip_pool.browse(cr, uid, slip_ids, context=context): + if not slip.employee_id.bank_account_id and not slip.employee_id.bank_account_id.acc_number: + raise osv.except_osv(_('Error !'), _('Please define bank account for the %s employee') % (slip.employee_id.name)) + line_ids = payslip_line_pool.search(cr, uid, [('slip_id', '=', slip.id), ('code', '=', 'NET')], context=context) + if line_ids: + line = payslip_line_pool.browse(cr, uid, line_ids, context=context)[0] + advice_line = { + 'advice_id': advice_id, + 'name': slip.employee_id.bank_account_id.acc_number, + 'employee_id': slip.employee_id.id, + 'bysal': line.total + } + advice_line_id = advice_line_pool.create(cr, uid, advice_line, context=context) + return True class hr_payslip(osv.osv): ''' @@ -278,7 +306,7 @@ class hr_payslip(osv.osv): \n* If the payslip is confirmed then state is set to \'Done\'.\ \n* When user cancel payslip the state is \'Rejected\'.'), # 'line_ids': fields.one2many('hr.payslip.line', 'slip_id', 'Payslip Line', required=False, readonly=True, states={'draft': [('readonly', False)]}), - 'line_ids': fields.one2many('hr.payslip.line', 'slip_id', 'Payslip Lines', readonly=True, states={'draft':[('readonly',False)]}), + 'line_ids': one2many_mod2('hr.payslip.line', 'slip_id', 'Payslip Lines', readonly=True, states={'draft':[('readonly',False)]}), 'company_id': fields.many2one('res.company', 'Company', required=False, readonly=True, states={'draft': [('readonly', False)]}), 'worked_days_line_ids': fields.one2many('hr.payslip.worked_days', 'payslip_id', 'Payslip Worked Days', required=False, readonly=True, states={'draft': [('readonly', False)]}), 'input_line_ids': fields.one2many('hr.payslip.input', 'payslip_id', 'Payslip Inputs', required=False, readonly=True, states={'draft': [('readonly', False)]}), diff --git a/addons/hr_payroll/hr_payroll_view.xml b/addons/hr_payroll/hr_payroll_view.xml index cd1b64d1c1c..09cff40df49 100644 --- a/addons/hr_payroll/hr_payroll_view.xml +++ b/addons/hr_payroll/hr_payroll_view.xml @@ -18,7 +18,7 @@ - + @@ -727,6 +727,7 @@