private FichaFinanceiraFuncionario IndexarMovFicha() { var evento = lkEvento.EditValue as Evento; var valor = ParseUtil.ToDecimal(txtValor.Text); var qtd = ParseUtil.ToDecimal(txtQuantidade.Text); var tipo = (TypeReferenciaEvento)cbTipo.SelectedIndex; FichaFinanceiraFuncionario ficha = new FichaFinanceiraFuncionario(func, evento, valor, tipo, comp.DataFinalCompetencia, qtd); ficha.Evento = evento; ficha.FuncionarioCompetencia = func; return(ficha); }
//Gerar ficha financeira de cada funcionario. private ICollection <FichaFinanceiraFuncionario> GerarFichaFinanceira(FuncionarioCompetencia funcionario, GrupoEvento grupo, TypeTipoFechamentoFolha p_tipoFechamento) { var dataRef = funcionario.Competencia.DataFinalCompetencia; foreach (var evento in grupo.EventosGrupo) { //salario contratual if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.SalarioBase) { var qtd = obtemDiasFolha(p_tipoFechamento); var salario = GetSalarioCompetencia(p_tipoFechamento, funcionario); FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario, evento.Evento, salario, evento.Evento.TipoReferencia, dataRef, qtd); fichaFin.Evento = evento.Evento; if (fichaFin.ValorMovimento > 0M) { funcionario.FichaFinanceiraFuncionario.Add(fichaFin); } } //calculo do INSS else if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.INSS) { FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario( funcionarioComp: funcionario, evento: evento.Evento, valor: ValorInss(funcionario), tipoReferencia: evento.Evento.TipoReferencia, dataRef: dataRef, quantidade: GetAliquotaInss(funcionario)); fichaFin.Evento = evento.Evento; if (fichaFin.ValorMovimento > 0M) { funcionario.FichaFinanceiraFuncionario.Add(fichaFin); } } //valor do FGTS no mês. Aliquota sempre é 8% else if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.FGTS) { decimal vlrFGTS = (funcionario.Funcionario.Salario * 8) / 100; funcionario.ValorFgts = vlrFGTS; FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario, evento.Evento, vlrFGTS, evento.Evento.TipoReferencia, dataRef, 8); fichaFin.Evento = evento.Evento; if (fichaFin.ValorMovimento > 0M) { funcionario.FichaFinanceiraFuncionario.Add(fichaFin); } } //Valor do IRRF no mês, lanca o evento somente se aliquota for maior que 0 else if (evento.Evento.CodigoCalculo == TypeCodigoCalculo.IRRF) { var aliqIRRF = GetAliquotaIrrf(funcionario); if (aliqIRRF > 0) { decimal vlrIRRF = (funcionario.Funcionario.Salario - ValorInss(funcionario)) * aliqIRRF / 100; vlrIRRF -= GetDeducaoIrrf(funcionario); FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario, evento.Evento, vlrIRRF, evento.Evento.TipoReferencia, dataRef, aliqIRRF); fichaFin.Evento = evento.Evento; funcionario.FichaFinanceiraFuncionario.Add(fichaFin); } } else //qualquer outro codigo de calculo não tratado especificamente igual os acima... { FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario( funcionarioComp: funcionario, evento: evento.Evento, valor: 0M, //valor eh 0 pq é pra ser editado na folha tipoReferencia: evento.Evento.TipoReferencia, dataRef: dataRef, quantidade: GetAliquotaInss(funcionario)); fichaFin.Evento = evento.Evento; funcionario.FichaFinanceiraFuncionario.Add(fichaFin); } } //percorrendo eventos cadastrados para o funcionario foreach (var eventoFunc in funcionario.Funcionario.Eventos) { FichaFinanceiraFuncionario fichaFin = new FichaFinanceiraFuncionario(funcionario, eventoFunc.Evento, eventoFunc.Valor, eventoFunc.Evento.TipoReferencia, dataRef, 0M); fichaFin.Evento = eventoFunc.Evento; funcionario.FichaFinanceiraFuncionario.Add(fichaFin); } return(funcionario.FichaFinanceiraFuncionario); }