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);
        }
Exemple #2
0
        //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);
        }