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); }
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 })); } }