# -*- coding: utf-8 -*- from openerp import api, fields, models from openerp.exceptions import except_orm class HrPayslip(models.Model): _inherit = 'hr.payslip' @api.model def recompute_sheet(self, values): payslip = self.env['hr.payslip'].browse(values) payslip_worked = self.env['hr.payslip.worked_days'].search([('payslip_id', '=' ,payslip.id)]) days = 0 for worked in payslip_worked: days = days + worked.number_of_days worked_days = { 'name': 'Faltas total', 'code': 'FALTAS', 'number_of_days': days, 'number_of_hours': 0, 'payslip_id': payslip.id, 'contract_id': payslip.contract_id.id, 'sequence': 10 } line = self.env['hr.payslip.worked_days'].create(worked_days) payslip.compute_sheet() line.unlink() return True if payslip else False @api.model def join_payslip_faults(self, values): payslip = self.env['hr.payslip'].browse(values['id']) new_line = self.env['hr.payslip.worked_days'] if values['faultsDays'] > 0: payslip_worked_days = { 'name': values['faultsDescri'] if values['faultsDescri'] else "Falta", 'code': 'FALTAS', 'number_of_days': values['faultsDays'], 'number_of_hours': 0, 'payslip_id': payslip.id, 'contract_id': payslip.contract_id.id, 'sequence': 10 } new_line.create(payslip_worked_days) recompute_sheet = self.recompute_sheet(values['id']) return True if recompute_sheet else False @api.model def unlink_payslip_worked(self, values): worked_days = self.env['hr.payslip.worked_days'].search([('payslip_id', '=', values['id']),('id', '=', values['worked_id'])]) unlink_work = worked_days.unlink() return True if unlink_work else False @api.model def write_payslip_worked(self, values): worked_days = self.env['hr.payslip.worked_days'].search([('payslip_id', '=', values['id']),('id', '=', values['worked_id'])]) worked_update = { 'name': values['name'], 'number_of_days': values['days'] } worked_days.write(worked_update) return True if worked_days else False