//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); }
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); }
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); }
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); }
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); }
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); }
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()); } }
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); }
//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(); } }
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 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); }
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); }
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); }
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); }
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(); } }
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 }
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); }
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 }
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); }
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); }
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); }
//Metodo Insert public async Task InsertAsync(Fechamento fechamento) { _context.Add(fechamento); await _context.SaveChangesAsync(); }
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); }
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); }
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); }
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 }); }