Пример #1
0
        //Fim Validação Mit.
        public List <Fechamento> CalcularTotalHoraExedenteETrabalhadaEabonoeFaltaPorDia(List <Lancamento> listlancamentoDiario, Configuracao config, JornadaTrabalho jornada, string matricula, string filial, string codmarcacao)
        {
            List <Fechamento> listFechamentoCalculadaPorDia = new List <Fechamento>();
            TimeSpan          totalAbono        = TimeSpan.Parse("00:00:00");
            TimeSpan          totalLancamento   = TimeSpan.Parse("00:00:00");
            double            totalHoraExedente = 0;
            double            totalFaltaAtraso  = 0;


            foreach (Lancamento LancamentoResult in listlancamentoDiario)
            {
                var listaLancamentoPorDia = _lancamentoerviceRepository.ObterLancamento(LancamentoResult.DateLancamento, matricula);
                if (listaLancamentoPorDia.Count > 0)
                {
                    totalAbono     += CalcularTotalHorasAbono(listaLancamentoPorDia);
                    totalLancamento = CalcularTotalHoraLancamentoPorDia(listaLancamentoPorDia);
                    Fechamento novo = new Fechamento();
                    novo.DataLancamento = LancamentoResult.DateLancamento;
                    novo.CodigoProjeto  = "00000";
                    novo.CodigoMarcacao = codmarcacao;
                    novo.TotalHora      = Math.Round(totalLancamento.TotalHours, 2);
                    novo.Fase           = "0";
                    if (ValidaEferiado(LancamentoResult.DateLancamento, filial) | ESabadoOuDomingo(Convert.ToDateTime(LancamentoResult.DateLancamento.ToDateProtheusReverseformate())))
                    {
                        novo.TotalHoraExedente = Math.Round(totalLancamento.TotalHours, 2);
                    }
                    else if (totalLancamento > jornada.JornadaMax)
                    {
                        var exedente = totalLancamento - jornada.JornadaDiaria;
                        novo.TotalHoraExedente = Math.Round(exedente.TotalHours, 2);
                    }
                    if (!ValidaEferiado(LancamentoResult.DateLancamento, filial) | !ESabadoOuDomingo(Convert.ToDateTime(LancamentoResult.DateLancamento.ToDateProtheusReverseformate())))
                    {
                        novo.TotalAbono       = Math.Round(totalAbono.TotalHours, 2);
                        novo.TotalFaltaAtraso = Math.Round(CalcularTotalNaoTrabalhadas(listaLancamentoPorDia).TotalHours, 2);
                    }
                    if (ValidaEferiado(LancamentoResult.DateLancamento, filial) | ESabadoOuDomingo(Convert.ToDateTime(LancamentoResult.DateLancamento.ToDateProtheusReverseformate())))
                    {
                    }
                    else
                    {
                        novo.TotalAbono = Math.Round(totalAbono.TotalHours, 2);
                    }
                    listFechamentoCalculadaPorDia.Add(novo);
                }
                totalAbono        = TimeSpan.Parse("00:00:00");
                totalLancamento   = TimeSpan.Parse("00:00:00");
                totalHoraExedente = 0;
                totalFaltaAtraso  = 0;
            }
            return(listFechamentoCalculadaPorDia);
        }
Пример #2
0
        public Fechamento ValidarLancamentoForaDeIntervaloInicio(Lancamento lancamento, JornadaTrabalho jornada)
        {
            Fechamento novoFechamento = new Fechamento();

            if ((lancamento.HoraInicio >= jornada.InterInicio && lancamento.HoraInicio <= jornada.InterFim) && lancamento.CodDivergencia == 0)
            {
                Fechamento novo = new Fechamento();
                novoFechamento.Divergencia    = "Divergência a justificar";
                novoFechamento.DataLancamento = lancamento.DateLancamento.ToDateProtheusReverseformate();
                novoFechamento.Descricao      = "Dia onde a primeira marcação esteja fora do intervalo informado para os campos “Hora Início de” e “Hora inicio até” na tabela de Intervalos para o período do fechamento.";
            }
            return(novoFechamento);
        }
Пример #3
0
        public Fechamento ValidaSemApontamentoRelogioExiste(List <Apontamento> listApontamento, string dataDia)
        {
            Fechamento novo = new Fechamento();

            if (listApontamento.Count == 0 & !ESabadoOuDomingo(Convert.ToDateTime(dataDia.ToDateProtheusReverseformate())))
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = dataDia.ToDateProtheusReverseformate();
                novo.Descricao      = "Dia sem apontamento no relógio.";
                return(novo);
            }
            return(novo);
        }
Пример #4
0
        public void Deve_criar_fechamento_com_diferenca_na_conta()
        {
            var fechamento = new Fechamento(100, 200, 100, 195.70m);

            fechamento.Batido.ShouldBeFalse();

            fechamento.SomaDoCaixa.ShouldEqual(100);
            fechamento.DiferencaNoCaixa.ShouldEqual(0);
            fechamento.SaldoInformadoCaixa.ShouldEqual(100);

            fechamento.SomaDaConta.ShouldEqual(195.70m);
            fechamento.DiferencaNaConta.ShouldEqual(4.3m);
            fechamento.SaldoInformadoConta.ShouldEqual(200);
        }
Пример #5
0
        public void Deve_criar_fechamento_com_diferenca_no_caixa_e_na_conta()
        {
            var fechamento = new Fechamento(100, 200, 94.30m, 202.90m);

            fechamento.Batido.ShouldBeFalse();

            fechamento.SomaDoCaixa.ShouldEqual(94.30m);
            fechamento.DiferencaNoCaixa.ShouldEqual(5.7m);
            fechamento.SaldoInformadoCaixa.ShouldEqual(100);

            fechamento.SomaDaConta.ShouldEqual(202.90m);
            fechamento.DiferencaNaConta.ShouldEqual(-2.9m);
            fechamento.SaldoInformadoConta.ShouldEqual(200);
        }
Пример #6
0
        public List <Fechamento> ValidaDiasSemLancamento(List <Lancamento> lancamentolist, Marcacao marcacao, string filial)
        {
            List <Fechamento> novalistFechamento      = new List <Fechamento>();
            List <Fechamento> fechamentoSemLancamento = new List <Fechamento>();


            Fechamento dataSemLancamento;
            DateTime   initialDate = Convert.ToDateTime(marcacao.DataInicio.ToDateProtheusReverseformate());
            DateTime   finalDate   = Convert.ToDateTime(marcacao.DataFim.ToDateProtheusReverseformate());

            var days = 0;

            days = initialDate.Subtract(finalDate).Days;
            int primeiroDia = 0;

            int count = 0;

            if (days < 0)
            {
                days = days * -1;
            }
            for (int i = 0; i <= days; i++)
            {
                int proximoDia = 1;
                if (primeiroDia == 0)
                {
                    proximoDia = primeiroDia;
                }
                initialDate = initialDate.AddDays(proximoDia);
                primeiroDia++;
                dataSemLancamento = new Fechamento();
                if (initialDate.DayOfWeek != DayOfWeek.Sunday
                    &&
                    initialDate.DayOfWeek != DayOfWeek.Saturday)
                {
                    if (!DataLancamentoExiste(initialDate, lancamentolist))
                    {
                        if (!ValidaEferiado(initialDate.ToString("dd/MM/yyyy").ToDateProtheusConvert(), filial))
                        {
                            dataSemLancamento.DataLancamento = initialDate.ToShortDateString();
                            dataSemLancamento.Divergencia    = "Divergência a justificar";
                            dataSemLancamento.Descricao      = "Dia útil sem marcação.";
                            fechamentoSemLancamento.Add(dataSemLancamento);
                        }
                    }
                }
            }
            return(fechamentoSemLancamento);
        }
Пример #7
0
        public IActionResult ConfirmacaoFerias(string id)
        {
            try
            {
                matricula   = User.GetDados("Matricula");
                filial      = User.GetDados("Filial");
                centrocusto = User.GetDados("Centro de Custo");


                TempData["Createfalse"] = null;
                Marcacao   marcacao   = new Marcacao();
                Fechamento fechamento = new Fechamento();

                var ResultFechamento = ValidacaoFechamento(id);


                if (ResultFechamento.Count > 0)
                {
                    foreach (Fechamento fechamentoResult in ResultFechamento)
                    {
                        if (fechamentoResult.Descricao == "Dia útil sem marcação.")
                        {
                            fechamentoResult.Divergencia = "Divergência justificada";
                            ViewBag.Ferias = "S";
                        }
                    }
                }

                if (ResultFechamento.Count > 0)
                {
                    foreach (Fechamento fechamentoResult in ResultFechamento)
                    {
                        if (fechamentoResult.Divergencia == "Divergência a justificar")
                        {
                            ViewBag.FechamentoBloqueado = "B";
                        }
                    }
                }


                ViewBag.CodigoMarcacao = id;
                return(View("ValidarFechamento", _mapper.Map <List <ViewModelFechamento> >(ResultFechamento.OrderBy(c => c.DataLancamento))));
            }
            catch (Exception e)
            {
                TempData["Createfalse"] = e.Message;
                return(View());
            }
        }
Пример #8
0
        public Fechamento ValidarDiferencaHorasExcedentes(double TotalhorasExcedentesComCodigo, double TotalhorasExcedentesSemCodigo, string datalancamento, JornadaTrabalho jornada)
        {
            Fechamento novo = new Fechamento();

            if (TotalhorasExcedentesSemCodigo != 0)
            {
                if (!(TotalhorasExcedentesComCodigo >= TotalhorasExcedentesSemCodigo))
                {
                    novo.Divergencia    = "Divergência a justificar";
                    novo.DataLancamento = datalancamento.ToDateProtheusReverseformate();
                    novo.Descricao      = "Dia onde o total de horas excedentes é diferente do total de horas com código de divergência.";
                }
            }
            return(novo);
        }
Пример #9
0
 //Metodo Update
 public async Task UpdateAsync(Fechamento fechamento)
 {
     if (!await _context.Fechamento.AnyAsync(x => x.Id == fechamento.Id))
     {
         throw new NotImplementedException();
     }
     try
     {
         _context.Update(fechamento);
         await _context.SaveChangesAsync();
     }
     catch (DbUpdateConcurrencyException)
     {
         throw new NotImplementedException();
     }
 }
Пример #10
0
        public Fechamento CalcularTotalGeralMensalPorDia(IOrderedEnumerable <Lancamento> lancamentoList, JornadaTrabalho jornada, Configuracao config, string matricula, string filial, string codmarcacao)
        {
            TimeSpan          totalLancamento         = TimeSpan.Parse("00:00:00");
            double            totalgeral              = 0;
            double            totalHoraExedente       = 0;
            double            totalAbono              = 0;
            TimeSpan          totalHorasNaoTrabalhada = TimeSpan.Parse("00:00:00");
            var               jrDiaria             = jornada.JornadaMax;
            List <Fechamento> Fechamento           = new List <Fechamento>();
            string            codEmprendimento     = "0";
            string            data                 = "";
            double            totalHorasLancamento = 0;

            Fechamento fechamento = new Fechamento();

            foreach (Lancamento LancamentoResult in lancamentoList)
            {
                var listaLancamentoPorDia = _lancamentoerviceRepository.ObterLancamento(LancamentoResult.DateLancamento, matricula);
                if (listaLancamentoPorDia.Count > 0)
                {
                    totalAbono     += Math.Round(CalcularTotalHorasAbono(listaLancamentoPorDia).TotalHours, 2);
                    totalLancamento = CalcularTotalHoraLancamentoPorDia(listaLancamentoPorDia);
                    if (ValidaEferiado(LancamentoResult.DateLancamento, filial) | ESabadoOuDomingo(Convert.ToDateTime(LancamentoResult.DateLancamento.ToDateProtheusReverseformate())))
                    {
                        totalHoraExedente += Math.Round(totalLancamento.TotalHours, 2);
                    }
                    else if (totalLancamento > jrDiaria)
                    {
                        var exedente = totalLancamento - jornada.JornadaDiaria;
                        totalHoraExedente += Math.Round(exedente.TotalHours, 2);
                    }

                    if (!ValidaEferiado(LancamentoResult.DateLancamento, filial) | !ESabadoOuDomingo(Convert.ToDateTime(LancamentoResult.DateLancamento.ToDateProtheusReverseformate())))
                    {
                        totalHorasNaoTrabalhada += CalcularTotalNaoTrabalhadas(listaLancamentoPorDia);
                    }
                    totalgeral += Math.Round(totalLancamento.TotalHours, 2);
                }
            }

            fechamento.TotalAbono        = totalAbono;
            fechamento.TotalFaltaAtraso  = Math.Round(totalHorasNaoTrabalhada.TotalHours, 2);
            fechamento.TotalHoraExedente = totalHoraExedente;
            fechamento.TotalHora         = totalgeral;
            return(fechamento);
        }
Пример #11
0
        public List <Fechamento> ObterDiasSemLancamento(List <Lancamento> lancamentolist, Marcacao marcacao, string filial, JornadaTrabalho jornada)
        {
            List <Fechamento> novalistFechamento      = new List <Fechamento>();
            List <Fechamento> fechamentoSemLancamento = new List <Fechamento>();
            var jrDiaria = jornada.JornadaDiaria;

            Fechamento dataSemLancamento;
            DateTime   initialDate = Convert.ToDateTime(marcacao.DataInicio.ToDateProtheusReverseformate());
            DateTime   finalDate   = Convert.ToDateTime(marcacao.DataFim.ToDateProtheusReverseformate());

            var days = 0;

            days = initialDate.Subtract(finalDate).Days;

            if (days < 0)
            {
                days = days * -1;
            }

            for (int i = 1; i <= days; i++)
            {
                initialDate       = initialDate.AddDays(1);
                dataSemLancamento = new Fechamento();
                if (initialDate.DayOfWeek != DayOfWeek.Sunday
                    &&
                    initialDate.DayOfWeek != DayOfWeek.Saturday)
                {
                    if (!DataLancamentoExiste(initialDate, lancamentolist))
                    {
                        if (!ValidaEferiado(initialDate.ToString("dd/MM/yyyy").ToDateProtheusConvert(), filial))
                        {
                            dataSemLancamento.DataLancamento    = initialDate.ToString("dd/MM/yyyy").ToDateProtheusConvert();
                            dataSemLancamento.TotalAbono        = 0;
                            dataSemLancamento.TotalHoraExedente = 0;
                            dataSemLancamento.TotalFalta        = Math.Round(Convert.ToDouble((jrDiaria).TotalHours), 2);
                            dataSemLancamento.TotalAtraso       = 0;
                            dataSemLancamento.TotalHora         = 0;
                            fechamentoSemLancamento.Add(dataSemLancamento);
                        }
                    }
                }
            }
            return(fechamentoSemLancamento);
        }
Пример #12
0
        public List <Fechamento> ValidaSeExisteMarcacaoAntesEdepoisDoApontamento(List <Lancamento> listlancamento, List <Apontamento> apontamentolist)
        {
            string            mensagem       = "Dia com diferença entre o total de horas apontado pelas batidas do relógio e pela marcações no sistema.";
            List <Fechamento> listFechamento = new List <Fechamento>();

            if (listlancamento.Count > 0)
            {
                Fechamento novo = new Fechamento();
                if (!VerificaImpar(apontamentolist))
                {
                    if (apontamentolist.Count > 0)
                    {
                        if ((listlancamento.FirstOrDefault().HoraInicio <apontamentolist.FirstOrDefault().apontamento | listlancamento.FirstOrDefault().HoraFim> apontamentolist.LastOrDefault().apontamento) && listlancamento.FirstOrDefault().CodDivergencia == 0)
                        {
                            novo.Divergencia    = "Divergência a justificar";
                            novo.DataLancamento = listlancamento.FirstOrDefault().DateLancamento.ToDateProtheusReverseformate();
                            novo.Descricao      = mensagem;
                        }
                        else if ((listlancamento.FirstOrDefault().HoraInicio <apontamentolist.FirstOrDefault().apontamento | listlancamento.FirstOrDefault().HoraFim> apontamentolist.LastOrDefault().apontamento) && listlancamento.FirstOrDefault().CodDivergencia != 0)
                        {
                            novo.Divergencia    = "Divergência justificada";
                            novo.DataLancamento = listlancamento.FirstOrDefault().DateLancamento.ToDateProtheusReverseformate();
                            novo.Descricao      = mensagem;
                        }

                        if ((listlancamento.LastOrDefault().HoraFim < apontamentolist.LastOrDefault().apontamento) && listlancamento.LastOrDefault().CodDivergencia == 0)
                        {
                            novo.Divergencia    = "Divergência a justificar";
                            novo.DataLancamento = listlancamento.LastOrDefault().DateLancamento.ToDateProtheusReverseformate();
                            novo.Descricao      = mensagem;
                        }
                        else if ((listlancamento.LastOrDefault().HoraFim < apontamentolist.LastOrDefault().apontamento) && listlancamento.LastOrDefault().CodDivergencia != 0)
                        {
                            novo.Divergencia    = "Divergência justificada";
                            novo.DataLancamento = listlancamento.LastOrDefault().DateLancamento.ToDateProtheusReverseformate();
                            novo.Descricao      = mensagem;
                        }
                    }
                    listFechamento.Add(novo);
                }
            }
            return(listFechamento);
        }
Пример #13
0
        public Fechamento ValidaSabadoDomingoFeriadoComApontamento(Lancamento lancamento, Feriado feriado)
        {
            Fechamento novo = new Fechamento();

            if ((Convert.ToDateTime(lancamento.DateLancamento.ToDateProtheusReverseformate()).DayOfWeek == DayOfWeek.Sunday |
                 Convert.ToDateTime(lancamento.DateLancamento.ToDateProtheusReverseformate()).DayOfWeek == DayOfWeek.Saturday | feriado.Descricao != null) && lancamento.CodDivergencia == 0)
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = lancamento.DateLancamento.ToDateProtheusReverseformate();
                novo.Descricao      = "Sábados, domingos e feriados com lançamento.";
            }
            if ((Convert.ToDateTime(lancamento.DateLancamento.ToDateProtheusReverseformate()).DayOfWeek == DayOfWeek.Sunday |
                 Convert.ToDateTime(lancamento.DateLancamento.ToDateProtheusReverseformate()).DayOfWeek == DayOfWeek.Saturday | feriado.Descricao != null) && lancamento.CodDivergencia != 0)
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = lancamento.DateLancamento.ToDateProtheusReverseformate();
                novo.Descricao      = "Sábados, domingos e feriados com lançamentos.";
            }
            return(novo);
        }
Пример #14
0
        private List <Fechamento> ValidaLancamentoForaDeIntervalo(string id)
        {
            Fechamento        fechamento           = new Fechamento();
            List <Fechamento> listaFechamentoFinal = new List <Fechamento>();
            Marcacao          marcacao             = new Marcacao();

            marcacao = _marcacaoServiceRepository.ObterMarcacao(id);
            var jornadaTrabalho = _jornadaTrbServiceRepository.ObterJornadaPorCodigo(marcacao.codigojornada);

            var listLancamento = _lancamentoerviceRepository.ObterListaLancamentoPorCodMarcacoEMatricula(id, matricula).Distinct(new LancamentoComparer());

            if (listLancamento != null)
            {
                foreach (Lancamento lancamento in listLancamento)
                {
                    var fechamentoRetornoPrimeiro      = ValidarPrimeiroLancamentoForaJornadaPorDia(lancamento.DateLancamento, jornadaTrabalho);
                    var fechamentoRetornoUltimo        = ValidarUltimoLancamentoForaJornadaPorDia(lancamento.DateLancamento, jornadaTrabalho);
                    var fechamentoRetornoForaIntervalo = ValidarPrimeiroLancamentoForaIntervaloPorDia(lancamento.DateLancamento, jornadaTrabalho);

                    if (fechamentoRetornoPrimeiro.Descricao != null)
                    {
                        Fechamento novo = new Fechamento();
                        novo = fechamentoRetornoPrimeiro;
                        listaFechamentoFinal.Add(novo);
                    }
                    if (fechamentoRetornoUltimo.Descricao != null)
                    {
                        Fechamento novo = new Fechamento();
                        novo = fechamentoRetornoUltimo;
                        listaFechamentoFinal.Add(novo);
                    }
                    if (fechamentoRetornoForaIntervalo.Descricao != null)
                    {
                        Fechamento novo = new Fechamento();
                        novo = fechamentoRetornoForaIntervalo;
                        listaFechamentoFinal.Add(novo);
                    }
                }
            }
            return(listaFechamentoFinal);
        }
Пример #15
0
        public void Fechamento(Fechamento fechamento)


        {
            SqlConnection con  = new SqlConnection(conexao.StrConexao());
            SqlCommand    cmd1 = con.CreateCommand();

            string date = fechamento.Date.ToString("yyyy-MM-dd");


            cmd1.CommandText = "INSERT INTO TBL_FECHAMENTO (FECH_DEBITO, FECH_CREDITO, FECH_DINHEIRO, FECH_CREDIARIO, FECH_TOTAL, FECH_HORA , FECH_DATA)"
                               + " VALUES (@DEBITO, @CREDITO, @DINHEIRO, @CREDIARIO, @TOTAL, @HORA, @DATA) ";

            cmd1.Parameters.Add(new SqlParameter("@DEBITO", fechamento.Debito));
            cmd1.Parameters.Add(new SqlParameter("@CREDITO", fechamento.Credito));
            cmd1.Parameters.Add(new SqlParameter("@DINHEIRO", fechamento.Dinheito));
            cmd1.Parameters.Add(new SqlParameter("@CREDIARIO", fechamento.Crediario));
            cmd1.Parameters.Add(new SqlParameter("@TOTAL", fechamento.Total));
            cmd1.Parameters.Add(new SqlParameter("@HORA", fechamento.Time));
            cmd1.Parameters.Add(new SqlParameter("@DATA", date));

            con.Open();
            SqlTransaction tran = con.BeginTransaction();

            try
            {
                cmd1.Transaction = tran;
                cmd1.ExecuteNonQuery();
                tran.Commit();
            }
            catch (Exception ex)
            {
                tran.Rollback();
                throw new DomainExceptions("Error!!! " + ex.Message);
            }
            finally
            {
                con.Close();
            }
        }
Пример #16
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,TipoId,OperadorId,Data,Empresa,Valor,Taxa,Despesa,Fluxo,Banco")] Fechamento fechamento)
        {
            if (id != fechamento.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    await _fechamentoService.UpdateAsync(fechamento);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!await _fechamentoService.FechamentoExistsAsync(fechamento.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            //criei a lista de departamentos e atraves da ViewModel OperadorFormViewModel, consigo apresentar na tela de edição o combo de departamentos para a edição do operador

            var operadores = await _operadorService.FindAllAsync();

            var tipos = await _tipoService.FindAllAsync();

            var viewModel = new FechamentoFormViewModel {
                Fechamento = fechamento, Operadores = operadores, Tipos = tipos
            };

            return(View(viewModel));                                                  // agora não mais retornando o operador somente, mas o operador e a lista de departamentos
        }
Пример #17
0
        public Fechamento ValidarUltimoLancamentoForaDeJornada(Lancamento lancamento, JornadaTrabalho jornada)
        {
            Fechamento novoFechamento = new Fechamento();

            if (!ESabadoOuDomingo(Convert.ToDateTime(lancamento.DateLancamento.ToDateProtheusReverseformate())) && !(ValidaEferiado(lancamento.DateLancamento.ToDateProtheusReverseformate(), jornada.Filial)))
            {
                if ((lancamento.HoraFim < jornada.HoraFinal) && lancamento.CodDivergencia == 0)
                {
                    Fechamento novo = new Fechamento();
                    novoFechamento.Divergencia    = "Divergência a justificar";
                    novoFechamento.DataLancamento = lancamento.DateLancamento.ToDateProtheusReverseformate();
                    novoFechamento.Descricao      = "Dia onde a última marcação seja menor que o campo “Hora Saída” na tabela de Intervalos para o período do fechamento.";
                }
                if ((lancamento.HoraFim < jornada.HoraFinal) && lancamento.CodDivergencia != 0)
                {
                    Fechamento novo = new Fechamento();
                    novoFechamento.Divergencia    = "Divergência justificada";
                    novoFechamento.DataLancamento = lancamento.DateLancamento.ToDateProtheusReverseformate();
                    novoFechamento.Descricao      = "Dia onde a última marcação seja menor que o campo “Hora Saída” na tabela de Intervalos para o período do fechamento.";
                }
            }
            return(novoFechamento);
        }
Пример #18
0
        public async Task <IActionResult> Create([Bind("Id,TipoId,Data,Empresa,Valor,Taxa,Despesa,Fluxo,Banco,OperadorId,Status")] Fechamento fechamento)
        {
            if (ModelState.IsValid)
            {
                await _fechamentoService.InsertAsync(fechamento);

                return(RedirectToAction(nameof(Index)));
            }

            //return View(fechamento);  //foi criado assim pelo framework, porem agora será pelo FechamentoFormViewModel  //se as validações não foram atendidas não é criado na tabela e devolve com o objeto incompleto sem criar na tabela
            //essa situação pode ocorrer se as validações não foram feita a nivel de JavaScript
            //criei a lista de departamentos e atraves da ViewModel FechamentoFormViewModel, consigo apresentar na tela de edição o combo de Operadores para a edição do operador
            var operadores = await _operadorService.FindAllAsync();

            var tipos = await _tipoService.FindAllAsync();

            var viewModel = new FechamentoFormViewModel {
                Operadores = operadores, Tipos = tipos
            };

            return(View(viewModel));
            // agora não mais retornando o operador somente, mas o operador e a lista de departamentos, com os erros de validação
        }
Пример #19
0
        public IActionResult ValidarFechamentoVisaoGerencia(string id)
        {
            try

            {
                Marcacao   marcacao   = new Marcacao();
                Fechamento fechamento = new Fechamento();

                marcacao    = _marcacao.ObterMarcacao(id);
                filial      = marcacao.Filial;
                matricula   = marcacao.MatUsuario;
                centrocusto = User.GetDados("Centro de Custo");

                TempData["Createfalse"] = null;

                var ResultFechamento = ValidacaoFechamento(id);

                if (ResultFechamento.Count > 0)
                {
                    foreach (Fechamento fechamentoResult in ResultFechamento)
                    {
                        if (fechamentoResult.StatusFechamento == "B")
                        {
                            ViewBag.FechamentoBloqueado = "B";
                        }
                    }
                }
                ViewBag.CodigoMarcacao = id;
                return(View("ValidarFechamento", _mapper.Map <List <ViewModelFechamento> >(ResultFechamento.OrderBy(c => c.DataLancamento))));
            }
            catch (Exception e)
            {
                TempData["Createfalse"] = e.Message;
                return(View("ValidarFechamento"));
            }
        }
 public void SalvarFechamento(Fechamento item, string filial, string dataProtheus, string matUser, string centroCusto, string projeto, string status, string fase)
 {
     _FechamentoRepository.Add(item, filial, dataProtheus, matUser, centroCusto, projeto, status, fase);
 }
Пример #21
0
        public List <Fechamento> ValidaIntervaloMinimoEMaximo(List <Lancamento> lancamentoDiario, JornadaTrabalho jornada)
        {
            List <Fechamento> listFechamento = new List <Fechamento>();
            double            jornadaDiaria  = Math.Round(jornada.JornadaDiaria.TotalHours, 2);
            double            minimo         = Math.Round(jornada.InterMin.TotalHours, 2);
            double            maximo         = Math.Round(jornada.InterMax.TotalHours, 2);
            TimeSpan          totalHorasIntervalo;
            string            datalancamento = "0";
            int  count  = 0;
            bool existe = false;
            bool eFeriadoSabadoEdomingo = false;

            if (lancamentoDiario.Count > 0)
            {
                for (int i = 0; i < lancamentoDiario.Count; i++)
                {
                    datalancamento = lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate();
                    if (!ValidaEferiado(lancamentoDiario[i].DateLancamento, jornada.Filial) & !ESabadoOuDomingo(Convert.ToDateTime(lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate())))
                    {
                        count++;
                        if (lancamentoDiario[i].HoraFim >= jornada.InterInicio && lancamentoDiario[i].HoraFim <= jornada.InterFim)
                        {
                            if (count < lancamentoDiario.Count)
                            {
                                totalHorasIntervalo = lancamentoDiario[i + 1].HoraInicio - lancamentoDiario[i].HoraFim;
                                if (Math.Round(totalHorasIntervalo.TotalHours, 2) >= minimo && Math.Round(totalHorasIntervalo.TotalHours, 2) <= maximo)
                                {
                                    if (lancamentoDiario[i].HoraFim >= jornada.InterInicio && lancamentoDiario[i + 1].HoraInicio <= jornada.InterFim)
                                    {
                                        Fechamento novo = new Fechamento();
                                        listFechamento.Add(novo);
                                        break;
                                    }
                                    if (lancamentoDiario[i + 1].CodDivergencia == 0 | lancamentoDiario[i].CodDivergencia == 0)
                                    {
                                        Fechamento novo = new Fechamento();
                                        novo.Divergencia    = "Divergência justificada";
                                        novo.DataLancamento = lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate();
                                        novo.Descricao      = "Dia onde intervalo se encontra fora do horário padrão de almoço.";
                                        listFechamento.Add(novo);
                                        break;
                                    }
                                    if (lancamentoDiario[i].CodDivergencia == 0 | lancamentoDiario[i + 1].CodDivergencia == 0)
                                    {
                                        Fechamento novo = new Fechamento();
                                        novo.Divergencia    = "Divergência justificada";
                                        novo.DataLancamento = lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate();
                                        novo.Descricao      = "Dia onde intervalo se encontra fora do horário padrão de almoço.";
                                        listFechamento.Add(novo);
                                        break;
                                    }
                                }
                                else if (!(lancamentoDiario[i].HoraFim >= jornada.InterInicio && lancamentoDiario[i].HoraFim <= jornada.InterFim))
                                {
                                    if (lancamentoDiario[i].CodDivergencia == 0)
                                    {
                                        Fechamento novo = new Fechamento();
                                        novo.Divergencia    = "Divergência justificada";
                                        novo.DataLancamento = lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate();
                                        novo.Descricao      = "Dia onde intervalo se encontra fora do horário padrão de almoço.";
                                        listFechamento.Add(novo);
                                        break;
                                    }
                                    else if (lancamentoDiario[i].CodDivergencia == 0)
                                    {
                                        Fechamento novo = new Fechamento();
                                        novo.Divergencia    = "Divergência justificada";
                                        novo.DataLancamento = lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate();
                                        novo.Descricao      = "Dia onde intervalo se encontra fora do horário padrão de almoço.";
                                        listFechamento.Add(novo);
                                        break;
                                    }
                                }
                                else if (!(lancamentoDiario[i + 1].HoraFim >= jornada.InterInicio && lancamentoDiario[i + 1].HoraFim <= jornada.InterFim))
                                {
                                    if (lancamentoDiario[i + 1].CodDivergencia == 0)
                                    {
                                        Fechamento novo = new Fechamento();
                                        novo.Divergencia    = "Divergência justificada";
                                        novo.DataLancamento = lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate();
                                        novo.Descricao      = "Dia onde intervalo se encontra fora do horário padrão de almoço.";
                                        listFechamento.Add(novo);
                                        break;
                                    }
                                    else if (lancamentoDiario[i + 1].CodDivergencia == 0)
                                    {
                                        Fechamento novo = new Fechamento();
                                        novo.Divergencia    = "Divergência justificada";
                                        novo.DataLancamento = lancamentoDiario[i].DateLancamento.ToDateProtheusReverseformate();
                                        novo.Descricao      = "Dia onde intervalo se encontra fora do horário padrão de almoço.";
                                        listFechamento.Add(novo);
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        eFeriadoSabadoEdomingo = true;
                    }
                }
            }


            return(listFechamento);
        }
Пример #22
0
        public List <Fechamento> ValidacaoFechamento(string id)
        {
            List <Fechamento> listFechamento = new List <Fechamento>();

            //Mit Validação 8.4.4.
            //var listD = ValidaSabadoDomingoEFeriado(id);
            //if (listD.Count > 0)
            //{
            //    foreach (Fechamento fechamentolist in listD)
            //    {
            //        listFechamento.Add(fechamentolist);
            //    }

            //}

            //Mit Validação 8.4.1
            var listLancamento    = ValidaDiasComLancameto(id);
            var listSemLancamento = ValidaDiasSemLancameto(id);

            foreach (Fechamento fechamentolist in listLancamento.OrderBy(x => x.DataLancamento))
            {
                var listApontamento  = _prothuesService.ObterBatidasDePonto(matricula, filial, fechamentolist.DataLancamento.ToDateProtheusConvert());
                var fechamentoReturn = _fechamentoNegocio.ValidarApontamentoImpar(fechamentolist, listApontamento);

                if (fechamentoReturn.Divergencia != null)
                {
                    Fechamento novoFechamento = new Fechamento();
                    novoFechamento = fechamentoReturn;
                    listFechamento.Add(novoFechamento);
                }
            }
            //Mit Validação 8.4.1
            foreach (Fechamento fechamentolist in listSemLancamento.OrderBy(x => x.DataLancamento))
            {
                var listApontamento  = _prothuesService.ObterBatidasDePonto(matricula, filial, fechamentolist.DataLancamento.ToDateProtheusConvert());
                var fechamentoReturn = _fechamentoNegocio.ValidarApontamentoImpar(fechamentolist, listApontamento);

                if (fechamentoReturn.Divergencia != null)
                {
                    Fechamento novoFechamento = new Fechamento();
                    novoFechamento = fechamentoReturn;
                    listFechamento.Add(novoFechamento);
                }
            }

            //Mit Validação 8.4.2
            var listA = ValidaDiferencaTotalHoraDiaLancamentoMacacao(id);

            if (listA.Count > 0)
            {
                foreach (Fechamento fechamentoResult in listA.ToList())
                {
                    listFechamento.Add(fechamentoResult);
                }
            }

            //Mit Validação 8.4.3
            var listE = ValidaDiasSemLancameto(id);

            if (listE.Count > 0)
            {
                foreach (Fechamento fechamentoResult in listE.ToList())
                {
                    listFechamento.Add(fechamentoResult);
                }
            }

            //Mit Validação 8.4.5 e  Validação 8.4.7.
            var listB = ValidaDiferencaBatida(id);

            if (listB.Count > 0)
            {
                foreach (Fechamento fechamentoResult in listB.ToList())
                {
                    listFechamento.Add(fechamentoResult);
                }
            }


            //Mit Validação 8.4.8  a  Validação 8.4.10
            var listC = ValidaDiferencaTotalHoraLancamentoPorDiaETotalHoraJornadaDiaria(id);

            if (listC.Count > 0)
            {
                foreach (Fechamento fechamentoResult in listC.ToList())
                {
                    listFechamento.Add(fechamentoResult);
                }
            }



            //Mit Validação 8.4.8 e 8.4.9 e 8.4.10.
            var listF = ValidaLancamentoForaDeIntervalo(id);

            if (listF.Count > 0)
            {
                foreach (Fechamento fechamentoResult in listF.ToList())
                {
                    listFechamento.Add(fechamentoResult);
                }
            }

            var listG = ValidaLancamentoForaDeIntervaloMinMax(id);

            if (listG.Count > 0)
            {
                foreach (Fechamento fechamentoResult in listG.ToList())
                {
                    listFechamento.Add(fechamentoResult);
                }
            }

            var DiasUteisSemLancamento = ValidaDiasSemLancameto(id);
            var listH = ValidaDiasSemApontamentoRelogio(id, DiasUteisSemLancamento);

            if (listH.Count > 0)
            {
                foreach (Fechamento fechamentoResult in listH.ToList())
                {
                    listFechamento.Add(fechamentoResult);
                }
            }

            return(listFechamento);
        }
Пример #23
0
 //Metodo Insert
 public async Task InsertAsync(Fechamento fechamento)
 {
     _context.Add(fechamento);
     await _context.SaveChangesAsync();
 }
Пример #24
0
 private bool VerificaSeDataEsabadoDomingoOUferiado(List <Fechamento> listafechamento, Fechamento fechamentoCompara)
 {
     foreach (Fechamento fechamento in listafechamento)
     {
         if (fechamento.DataLancamento == fechamentoCompara.DataLancamento)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     return(false);
 }
Пример #25
0
        private bool VerificaSeDataEsabadoDomingoOUferiado(List <Fechamento> listafechamento, Fechamento fechamentoCompara)
        {
            bool existe = false;

            foreach (Fechamento fechamento in listafechamento)
            {
                if (fechamento.DataLancamento == fechamentoCompara.DataLancamento)
                {
                    existe = true;
                }
            }
            return(existe);
        }
Пример #26
0
        public Fechamento ValidaDiferencaEntreJornadaDiariaETotalLancamentoDiario(List <Lancamento> lancamento, decimal totalLancamento, JornadaTrabalho jornada)
        {
            TimeSpan totalhoraLancamentoDia  = TimeSpan.Parse("00:00:00");
            bool     ESabadoDomingoOuFeriado = false;

            foreach (Lancamento LancamentoResult in lancamento)
            {
                totalhoraLancamentoDia += LancamentoResult.HoraFim - LancamentoResult.HoraInicio;
            }

            TimeSpan   diferenca      = jornada.JornadaDiaria - totalhoraLancamentoDia;
            string     mensagem       = $"Dia com hora excedente. Jornada máxima: {jornada.JornadaMax.ToString(@"hh\:mm")}, total apontado : {totalhoraLancamentoDia.ToString(@"hh\:mm")}.";
            string     datalancamento = "0";
            TimeSpan   totalhoraLancamentoDiaComCodigoDivergencia = TimeSpan.Parse("00:00:00");
            Fechamento novo = new Fechamento();
            bool       existeCodigoDivergencia = false;

            foreach (Lancamento LancamentoResult in lancamento)
            {
                ESabadoDomingoOuFeriado = ESabadoOuDomingo(Convert.ToDateTime(LancamentoResult.DateLancamento.ToDateProtheusReverseformate()));
                datalancamento          = LancamentoResult.DateLancamento.ToDateProtheusReverseformate();
                var CodDivergencia = _serviceProthues.ObterTipoCodigoDivergencia(Convert.ToString(LancamentoResult.CodDivergencia));
                if (CodDivergencia != null)
                {
                    if (CodDivergencia.Constant == Constantes.HRSEXCEDENTES)
                    {
                        totalhoraLancamentoDiaComCodigoDivergencia += LancamentoResult.HoraFim - LancamentoResult.HoraInicio;
                        existeCodigoDivergencia = true;
                    }
                }
            }

            foreach (Lancamento LancamentoResult in lancamento)
            {
                datalancamento = LancamentoResult.DateLancamento.ToDateProtheusReverseformate();
                var CodDivergencia = _serviceProthues.ObterTipoCodigoDivergencia(Convert.ToString(LancamentoResult.CodDivergencia));
                if (CodDivergencia != null)
                {
                    existeCodigoDivergencia = true;
                    break;
                }
            }

            double total = Convert.ToDouble(totalLancamento);

            if (total < Math.Round(Convert.ToDouble(jornada.JornadaMin.TotalHours), 2) && existeCodigoDivergencia == false && ESabadoDomingoOuFeriado == false)
            {
                novo.Divergencia    = "Divergência a justificar";
                novo.DataLancamento = datalancamento;
                novo.Descricao      = $"Dia com diferença entre o total apontado e a jor" +
                                      $"nada mínima. Jornada mínima: {jornada.JornadaMin.ToString(@"hh\:mm")}, total apontado : {totalhoraLancamentoDia.ToString(@"hh\:mm")}.";
            }
            if (total < Math.Round(Convert.ToDouble(jornada.JornadaDiaria.TotalHours), 2) && existeCodigoDivergencia == true && ESabadoDomingoOuFeriado == false)
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = datalancamento;
                novo.Descricao      = $"Dia com diferença entre o total apontado e a jor" +
                                      $"nada mínima. Jornada mínima: {jornada.JornadaMin.ToString(@"hh\:mm")}, total apontado : {totalhoraLancamentoDia.ToString(@"hh\:mm")}.";
            }
            if (total < Math.Round(Convert.ToDouble(jornada.JornadaDiaria.TotalHours), 2) && ESabadoDomingoOuFeriado == true)
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = datalancamento;
                novo.Descricao      = $"Sabado, domingo ou feriado com lançamento é considerado como hora excedente.";
            }
            if (total > Math.Round(Convert.ToDouble(jornada.JornadaDiaria.TotalHours), 2) && ESabadoDomingoOuFeriado == true)
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = datalancamento;
                novo.Descricao      = $"Sabado, domingo ou feriado com lançamento é considerado como hora excedente.";
            }
            else if (total > Math.Round(Convert.ToDouble(jornada.JornadaDiaria.TotalHours), 2) && ESabadoDomingoOuFeriado == true)
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = datalancamento;
                novo.Descricao      = $"Sabado, domingo ou feriado com lançamento é considerado como hora excedente.";
            }
            if (total > Math.Round(Convert.ToDouble(jornada.JornadaMax.TotalHours), 2) && ESabadoDomingoOuFeriado == false)
            {
                novo.Divergencia    = "Divergência justificada";
                novo.DataLancamento = datalancamento;
                novo.Descricao      = mensagem + " Excedente: " + diferenca.ToString(@"hh\:mm") + ".";
            }
            return(novo);
        }
Пример #27
0
        public async Task <Retorno <Fechamento> > FecharComanda(int numeroComanda)
        {
            if (numeroComanda == 0)
            {
                return(new Retorno <Fechamento>
                {
                    Mensagem = "Informar um número de comanda válido.",
                    Ok = false,
                });
            }

            var lista = _controleComandaRepositorio.GetAllByNumeroComanda(numeroComanda)
                        .Where(w => w.Fechamento_Id == null);

            var valorTotal = lista.Sum(s => s.Produto.Valor);

            var fechamento = new Fechamento
            {
                ValorTotal = valorTotal
            };

            //implementar regra de desconto.
            var combos = _comboRepositorio.GetAllWithChilds();

            foreach (var combo in combos)
            {
                var vezesDesconto = 0;
                foreach (var item in combo.ComboItem)
                {
                    var quantidadeConsumida = lista.Count(w => w.Produto_Id == item.Produto_Id);
                    var itemAtual           = (quantidadeConsumida / item.Quantidade);
                    if (itemAtual <= 0)
                    {
                        vezesDesconto = 0;
                        break;
                    }

                    vezesDesconto = (vezesDesconto == 0 || vezesDesconto > itemAtual) ? itemAtual : vezesDesconto;
                }

                if (vezesDesconto == 0)
                {
                    continue;
                }

                foreach (var item in combo.ComboDesconto)
                {
                    var descontoItem = lista.FirstOrDefault(f => f.Produto_Id == item.Produto_Id).Produto.Valor *item.Porcentagem / 100;

                    var itens = lista.Where(w => w.Produto_Id == item.Produto_Id).Take(vezesDesconto);

                    foreach (var i in itens)
                    {
                        i.Desconto += descontoItem;
                    }

                    fechamento.ValorTotal -= descontoItem * vezesDesconto;
                }
            }


            await _fechamentoRepositorio.Create(fechamento);

            await _controleComandaRepositorio.AssinarFechamento(
                lista.Select(s => new ControleComanda
            {
                Fechamento_Id = fechamento.Id,
                Id = s.Id,
                NumeroComanda = s.NumeroComanda,
                Produto_Id = s.Produto_Id,
                Desconto = s.Desconto
            }).ToList());

            return(new Retorno <Fechamento> {
                Ok = true, Objeto = fechamento
            });
        }