eiru_payslip_generator.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # -*- coding: utf-8 -*-
  2. from openerp import api, fields, models
  3. class EiruPayslipGenerator(models.Model):
  4. _inherit = 'hr.payslip'
  5. @api.model
  6. def generate_payroll_eiru(self, values):
  7. payslip = self.env['hr.payslip']
  8. payslip_run = self.env['hr.payslip.run'].search([('id', 'in', [values])])
  9. employee = self.env['hr.employee'].search([('active', '=', True)])
  10. payslip_ids = []
  11. for emp in employee:
  12. slip_data = self.onchange_employee_id(payslip_run.date_start, payslip_run.date_end, emp.id)
  13. if not self.env['hr.payslip'].search([('employee_id', '=', emp.id), ('date_from', '=', payslip_run.date_start), ('date_to', '=', payslip_run.date_end)]):
  14. res = {
  15. 'employee_id': emp.id,
  16. 'name': slip_data['value'].get('name', False),
  17. 'struct_id': slip_data['value'].get('struct_id', False),
  18. 'contract_id': slip_data['value'].get('contract_id', False),
  19. 'payslip_run_id': values,
  20. 'input_line_ids': [(0, 0, x) for x in slip_data['value'].get('input_line_ids', False)],
  21. 'worked_days_line_ids': [(0, 0, x) for x in slip_data['value'].get('worked_days_line_ids', False)],
  22. 'date_from': payslip_run.date_start,
  23. 'date_to': payslip_run.date_end,
  24. 'credit_note': payslip_run.credit_note,
  25. 'journal_id' : payslip_run.journal_id.id
  26. }
  27. # Create nominas
  28. id_payslip = payslip.create(res)
  29. payslip_ids.append(id_payslip)
  30. id_payslip.hr_verify_sheet()
  31. id_payslip.process_sheet()
  32. if payslip_ids:
  33. payslip_run.write({'state': 'close'})
  34. return True if payslip_ids else False