|
@@ -0,0 +1,40 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+from openerp import api, fields, models
|
|
|
+
|
|
|
+class EiruPayslipGenerator(models.Model):
|
|
|
+ _inherit = 'hr.payslip'
|
|
|
+
|
|
|
+ @api.model
|
|
|
+ def generate_payroll_eiru(self, values):
|
|
|
+ payslip = self.env['hr.payslip']
|
|
|
+ payslip_run = self.env['hr.payslip.run'].search([('id', 'in', [values])])
|
|
|
+ employee = self.env['hr.employee'].search([('active', '=', True)])
|
|
|
+ payslip_ids = []
|
|
|
+
|
|
|
+ for emp in employee:
|
|
|
+ slip_data = self.onchange_employee_id(payslip_run.date_start, payslip_run.date_end, emp.id)
|
|
|
+ if not self.env['hr.payslip'].search([('employee_id', '=', emp.id), ('date_from', '=', payslip_run.date_start), ('date_to', '=', payslip_run.date_end)]):
|
|
|
+ res = {
|
|
|
+ 'employee_id': emp.id,
|
|
|
+ 'name': slip_data['value'].get('name', False),
|
|
|
+ 'struct_id': slip_data['value'].get('struct_id', False),
|
|
|
+ 'contract_id': slip_data['value'].get('contract_id', False),
|
|
|
+ 'payslip_run_id': values,
|
|
|
+ '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)],
|
|
|
+ 'date_from': payslip_run.date_start,
|
|
|
+ 'date_to': payslip_run.date_end,
|
|
|
+ 'credit_note': payslip_run.credit_note,
|
|
|
+ 'journal_id' : payslip_run.journal_id.id
|
|
|
+ }
|
|
|
+ # Create nominas
|
|
|
+ id_payslip = payslip.create(res)
|
|
|
+ payslip_ids.append(id_payslip)
|
|
|
+
|
|
|
+ id_payslip.hr_verify_sheet()
|
|
|
+ id_payslip.process_sheet()
|
|
|
+
|
|
|
+ if payslip_ids:
|
|
|
+ payslip_run.write({'state': 'close'})
|
|
|
+
|
|
|
+ return True if payslip_ids else False
|