123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- # -*- coding: utf-8 -*-
- from openerp import api, fields, models
- from openerp.exceptions import except_orm
- class HrPayslip(models.Model):
- _inherit = 'hr.payslip'
- #Recalcular las lineas de la nomina
- @api.model
- def recompute_sheet(self, values):
- payslip = self.env['hr.payslip'].browse(values)
- # Faltas de Funcionario
- payslip_worked = self.env['hr.payslip.worked_days'].search([('payslip_id', '=' ,payslip.id),('code', '=', 'FALTAS')])
- # Adelanto
- payslip_advancement = self.env['hr.payslip.input'].search([('payslip_id', '=' ,payslip.id),('code', '=', 'ADL')])
- # Comision
- payslip_commission = self.env['hr.payslip.input'].search([('payslip_id', '=' ,payslip.id),('code', '=', 'CMS')])
- line_worked = None
- line_advancent = None
- line_commission = None
- if payslip_worked:
- days = 0
- for worked in payslip_worked:
- days = days + worked.number_of_days
- worked_days = {
- 'name': 'Total Faltas',
- 'code': 'FALTAS',
- 'number_of_days': days,
- 'number_of_hours': 0,
- 'payslip_id': payslip.id,
- 'contract_id': payslip.contract_id.id,
- 'sequence': 15
- }
- line_worked = self.env['hr.payslip.worked_days'].create(worked_days)
- if payslip_advancement:
- amount = 0
- for advancement in payslip_advancement:
- amount = amount + advancement.amount
- advancement_line = {
- 'name': "Total Adelantos",
- 'code': 'ADL',
- 'amount': amount,
- 'payslip_id': payslip.id,
- 'contract_id': payslip.contract_id.id,
- 'sequence': 15
- }
- line_advancent = self.env['hr.payslip.input'].create(advancement_line)
- if payslip_commission:
- amount = 0
- for commission in payslip_commission:
- amount = amount + commission.amount
- commission_line = {
- 'name': "Total Adelantos",
- 'code': 'CMS',
- 'amount': amount,
- 'payslip_id': payslip.id,
- 'contract_id': payslip.contract_id.id,
- 'sequence': 15
- }
- line_commission = self.env['hr.payslip.input'].create(commission_line)
- payslip.hr_verify_sheet()
- payslip.process_sheet()
- if line_worked:
- line_worked.unlink()
- if line_advancent:
- line_advancent.unlink()
- if line_commission:
- line_commission.unlink()
- return True if payslip else False
- # Crear nueva falta
- @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
- # Eliminar falta
- @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
- # Modificar Falta
- @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
- # Crear Adelanto/comision
- @api.model
- def create_payslip_input(self,values):
- payslip = self.env['hr.payslip'].browse(values['id'])
- payslip_input = self.env['hr.payslip.input']
- input_line = {
- 'name': values['details'],
- 'code': values['salary_rule'],
- 'amount': values['ammount_input'],
- 'contract_id': payslip.contract_id.id,
- 'sequence': 10,
- 'payslip_id': payslip.id
- }
- payslip_input.create(input_line)
- return True if payslip_input else False
- # Eliminar Adelanto/Comision
- @api.model
- def unlink_payslip_input(self,values):
- payslip_input =self.env['hr.payslip.input'].search([('id', '=', values['input_id']),('payslip_id', '=', values['id'])])
- payslip_input.unlink()
- return True if payslip_input else False
- # Actualizar Aelanto Comision
- @api.model
- def write_payslip_input(self, values):
- paylip_input = self.env['hr.payslip.input'].search([('payslip_id', '=', values['id']),('id', '=', values['input_id'])])
- input_update = {
- 'name': values['descript_input'],
- 'amount': values['amount_input']
- }
- paylip_input.write(input_update)
- return True if paylip_input else False
|