Пример #1
0
        private List <Fechamento> ValidarHorasExecedentesSemCodigoDivergencia(string id)
        {
            List <Fechamento> listFechamento = new List <Fechamento>();

            Marcacao marcacao = new Marcacao();

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

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

            foreach (Lancamento lancamento in listLancamento)
            {
                var lancamentolist             = _lancamentoerviceRepository.ObterLancamento(lancamento.DateLancamento, matricula);
                var totalHoraExedenteComCodigo = _fechamentoNegocio.CalcularTotalHoraExedentes(lancamentolist);
                var totalHoraExedenteSemCodigo = _fechamentoNegocio.CalcularTotalHoraExedentesSemCodigo(lancamentolist, jornadaTrabalho);
                var FechamentoResultValidacao  = _fechamentoNegocio.ValidarDiferencaHorasExcedentes(totalHoraExedenteComCodigo, totalHoraExedenteSemCodigo, lancamento.DateLancamento, jornadaTrabalho);

                if (FechamentoResultValidacao.Descricao != null)
                {
                    listFechamento.Add(FechamentoResultValidacao);
                }
            }
            return(listFechamento);
        }
Пример #2
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);
        }
        public ActionResult Create(ViewModelMacacao marcacao)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Marcacao                aberturaMarcacao = new Marcacao();
                    ViewModelLancamento     lancamento       = new ViewModelLancamento();
                    JornadaTrabalho         jornada          = new JornadaTrabalho();
                    CodDivergenciaViewModel codiv            = new CodDivergenciaViewModel();
                    if (marcacao.DataDialancamento != null)
                    {
                        marcacao.DataDia = marcacao.DataDialancamento?.ToString("yyyy-MM-dd");
                    }
                    string codigoAbertura     = aberturaMarcacao.AbeturaExiste(_marcacao.ObterListMarcacaoPorMatUser(User.GetDados("Matricula")), marcacao.DataDia.ToDia(), marcacao.DataDia.ToAno());
                    string codJornadaTrabalho = jornada.ValidarJornadaTrabalhoExisteParaLancamento(_jornadaTrbServiceRepository.ObterListJornada(), marcacao.DataDia.ToDateProtheusReverse());

                    if (codigoAbertura == "0")
                    {
                        var configuracao = _configuracao.ObterConfiguracao();
                        marcacao.DataInicio    = ObterPrimeiroDia(configuracao, marcacao);
                        marcacao.DataFim       = ObterDiaFim(configuracao, marcacao);
                        marcacao.AnoMes        = marcacao.DataDia.ToShortDateProtheus();
                        marcacao.MatUsuario    = User.GetDados("Matricula");
                        marcacao.Filial        = User.GetDados("Filial");
                        marcacao.Status        = Constantes.ABERTO;
                        marcacao.codigojornada = codJornadaTrabalho;
                        _marcacao.SalvarMarcacao(_mapper.Map <Marcacao>(marcacao));
                    }

                    if (marcacao.Lancamento != null)
                    {
                        marcacao.Lancamento.ValidaHoraLancamento();
                        marcacao.Lancamento.Observacao = marcacao.Lancamento.Observacao.ReplaceSaveObservacaoProthues();
                        var codiviergencia = _prothuesService.ObterCodigoDivergenciaPorCodigo(Convert.ToString(marcacao.Lancamento.CodDivergencia));
                        if (marcacao.Lancamento.CodDivergencia != null && marcacao.Lancamento.CodDivergencia != 0)
                        {
                            codiv.ValidaCodigoDivergencia(codiviergencia);
                            codiv.ValidaCodigoDivergenciaConstante(codiviergencia.Constant, marcacao.Lancamento.CodDivergencia);
                        }
                        lancamento = marcacao.Lancamento;
                        lancamento.ValidaHorasLancamentoOutraMarcacao(_lancamentoerviceRepository.ObterLancamento(marcacao.DataDia.ToDateProtheus(), User.GetDados("Matricula")));
                        marcacao.Lancamento.Codigo          = aberturaMarcacao.AbeturaExiste(_marcacao.ObterListMarcacaoPorMatUser(User.GetDados("Matricula")), marcacao.DataDia.ToDia(), marcacao.DataDia.ToAno());
                        marcacao.Lancamento.codEmpredimento = marcacao.Lancamento.EmpreendimentoIds[0].Substring(0, marcacao.Lancamento.EmpreendimentoIds[0].IndexOf('-'));
                        marcacao.Lancamento.Fase            = marcacao.Lancamento.EmpreendimentoIds[0].Substring(marcacao.Lancamento.EmpreendimentoIds[0].IndexOf('-') + 1);
                        _lancamentoerviceRepository.SalvarLancamento(_mapper.Map <Lancamento>(marcacao.Lancamento), User.GetDados("Filial"), marcacao.DataDia.ToDateProtheus());
                    }
                    return(Json(new { sucesso = "Lançamento cadastrado com sucesso!" }));
                }

                return(Json(new
                {
                    msg = string.Join("\n", ModelState.Values
                                      .SelectMany(x => x.Errors)
                                      .Select(x => x.ErrorMessage)),
                    erro = true
                }));
            }
            catch (Exception e)
            {
                return(Json(new { msg = e.Message, erro = true }));
            }
        }