payslip_faults.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # -*- coding: utf-8 -*-
  2. from openerp import api, fields, models
  3. from openerp.exceptions import except_orm
  4. class HrPayslip(models.Model):
  5. _inherit = 'hr.payslip'
  6. @api.model
  7. def recompute_sheet(self, values):
  8. payslip = self.env['hr.payslip'].browse(values)
  9. payslip_worked = self.env['hr.payslip.worked_days'].search([('payslip_id', '=' ,payslip.id),('code', '=', 'FALTAS')])
  10. days = 0
  11. for worked in payslip_worked:
  12. days = days + worked.number_of_days
  13. worked_days = {
  14. 'name': 'Faltas total',
  15. 'code': 'FALTAS',
  16. 'number_of_days': days,
  17. 'number_of_hours': 0,
  18. 'payslip_id': payslip.id,
  19. 'contract_id': payslip.contract_id.id,
  20. 'sequence': 10
  21. }
  22. line = self.env['hr.payslip.worked_days'].create(worked_days)
  23. payslip.compute_sheet()
  24. line.unlink()
  25. return True if payslip else False
  26. @api.model
  27. def join_payslip_faults(self, values):
  28. payslip = self.env['hr.payslip'].browse(values['id'])
  29. new_line = self.env['hr.payslip.worked_days']
  30. if values['faultsDays'] > 0:
  31. payslip_worked_days = {
  32. 'name': values['faultsDescri'] if values['faultsDescri'] else "Falta",
  33. 'code': 'FALTAS',
  34. 'number_of_days': values['faultsDays'],
  35. 'number_of_hours': 0,
  36. 'payslip_id': payslip.id,
  37. 'contract_id': payslip.contract_id.id,
  38. 'sequence': 10
  39. }
  40. new_line.create(payslip_worked_days)
  41. recompute_sheet = self.recompute_sheet(values['id'])
  42. return True if recompute_sheet else False
  43. @api.model
  44. def unlink_payslip_worked(self, values):
  45. worked_days = self.env['hr.payslip.worked_days'].search([('payslip_id', '=', values['id']),('id', '=', values['worked_id'])])
  46. unlink_work = worked_days.unlink()
  47. return True if unlink_work else False
  48. @api.model
  49. def write_payslip_worked(self, values):
  50. worked_days = self.env['hr.payslip.worked_days'].search([('payslip_id', '=', values['id']),('id', '=', values['worked_id'])])
  51. worked_update = {
  52. 'name': values['name'],
  53. 'number_of_days': values['days']
  54. }
  55. worked_days.write(worked_update)
  56. return True if worked_days else False