Exemplo n.º 1
0
        public IActionResult CadastrarHora(ViewModelCadastroHora viewModelCadastroHora)
        {
            TempData["CreateSucesso"] = null;
            try
            {
                if (ModelState.IsValid)
                {
                    JornadaTrabalho jornadaTrabalhoNeogocio = new JornadaTrabalho();
                    jornadaTrabalhoNeogocio = _mapper.Map <JornadaTrabalho>(viewModelCadastroHora);
                    jornadaTrabalhoNeogocio.ValidarJornadaTrabalhoSobreposta(_jornadaTrbServiceRepository.ObterListJornada());
                    viewModelCadastroHora.ValidaHorario();
                    viewModelCadastroHora.ValidaIntervalo();
                    viewModelCadastroHora.ValidaJornadaDiaria();
                    viewModelCadastroHora.ValidaData();
                    viewModelCadastroHora.ValidaJornadaMax();

                    var JornadaTrb = _mapper.Map <JornadaTrabalho>(viewModelCadastroHora);
                    _jornadaTrbServiceRepository.SalvarJornada(JornadaTrb);
                    TempData["JornadaCadastrada"] = true;
                    return(RedirectToAction("Index", "JornadaTrabalho"));
                }
                return(View(viewModelCadastroHora));
            }
            catch (Exception e)
            {
                TempData["Createfalse"] = e.Message;
                return(View());
            }
        }
 public RelatorioService(IPontoDiaRepository pontoRepository, FeriadoService feriadoService, IJornadaTrabalhoRepository jornadaRepository, IUnitOfWork unitOfWork)
 {
     this.pontoRepository   = pontoRepository;
     this.feriadoService    = feriadoService;
     this.jornadaRepository = jornadaRepository;
     this.jornadaAtiva      = jornadaRepository.findJornadaAtiva();
     this.unitOfWork        = unitOfWork;
 }
Exemplo n.º 3
0
        public JornadaTrabalho FindByID(string codigo)
        {
            JornadaTrabalho jornadaTrabalho = new JornadaTrabalho();

            using (OracleConnection dbConnection = new OracleConnection(ConnectionString))
            {
                dbConnection.Open();
                var sQuery      = $@"Select LTRIM(RTRIM(ZYV_CODIGO)) AS Codigo,
                                     LTRIM(RTRIM(ZYV_FILIAL)) AS Filial,
                                     LTRIM(RTRIM(ZYV_DESCR)) AS DescJornada,
                                     LTRIM(RTRIM(ZYV_DTINI)) AS DataInicio,
                                     LTRIM(RTRIM(ZYV_DTFIN)) AS DataFim,
                                     LTRIM(RTRIM(ZYV_JORNAD)) AS JornadaDiaria,
                                     LTRIM(RTRIM(ZYV_HRINI)) AS HoraInicioDe,
                                     LTRIM(RTRIM(ZYV_HRIFIN)) AS HoraInicioAte,
                                     LTRIM(RTRIM(ZYV_HFINAL)) AS HoraFinal,
                                     LTRIM(RTRIM(ZYV_INTINI)) AS InterInicio,
                                     LTRIM(RTRIM(ZYV_INTFIN)) AS InterFim,
                                     LTRIM(RTRIM(ZYV_INTMIN)) AS InterMin,
                                     LTRIM(RTRIM(ZYV_INTMAX)) AS InterMax,
                                     LTRIM(RTRIM(ZYV_JORMAX)) AS JornadaMax,
                                     LTRIM(RTRIM(ZYV_JORMIN)) AS JornadaMin
                                     from ZYV010
                                     WHERE ZYV_CODIGO = '{codigo}' AND D_E_L_E_T_  <> '*'";
                var QueryResult = dbConnection.QueryFirstOrDefault <JornadaTrabalhoDb>(sQuery);

                jornadaTrabalho.Codigo        = QueryResult.Codigo;
                jornadaTrabalho.DescJornada   = QueryResult.DescJornada;
                jornadaTrabalho.DataInicio    = Convert.ToDateTime(QueryResult.DataInicio.ToDateProtheusReverseformate());
                jornadaTrabalho.DataFim       = Convert.ToDateTime(QueryResult.DataFim.ToDateProtheusReverseformate());
                jornadaTrabalho.HoraInicioDe  = TimeSpan.Parse(QueryResult.HoraInicioDe);
                jornadaTrabalho.HoraInicioAte = TimeSpan.Parse(QueryResult.HoraInicioAte);
                jornadaTrabalho.HoraFinal     = TimeSpan.Parse(QueryResult.HoraFinal);
                jornadaTrabalho.InterInicio   = TimeSpan.Parse(QueryResult.InterInicio);
                jornadaTrabalho.InterFim      = TimeSpan.Parse(QueryResult.InterFim);
                jornadaTrabalho.InterMin      = TimeSpan.Parse(QueryResult.InterMin);
                jornadaTrabalho.InterMax      = TimeSpan.Parse(QueryResult.InterMax);
                jornadaTrabalho.JornadaDiaria = TimeSpan.Parse(QueryResult.JornadaDiaria);
                if (QueryResult.JornadaMin == null)
                {
                    jornadaTrabalho.JornadaMin = TimeSpan.Parse("00:00");
                }
                else
                {
                    jornadaTrabalho.JornadaMin = TimeSpan.Parse(QueryResult.JornadaMin);
                }
                if (QueryResult.JornadaMax == null)
                {
                    jornadaTrabalho.JornadaMax = TimeSpan.Parse("00:00");
                }
                else
                {
                    jornadaTrabalho.JornadaMax = TimeSpan.Parse(QueryResult.JornadaMax);
                }
                jornadaTrabalho.Filial = QueryResult.Filial;
                return(jornadaTrabalho);
            }
        }
Exemplo n.º 4
0
        public DiaPonto(PontoDia pontoDia, JornadaTrabalho jornadaAtiva)
            : base(pontoDia.Data)
        {
            Check.Require(pontoDia.Tipo != ETipoPonto.FERIADO_TRABALHADO,
                          "Feriado trabalhado não deve ser criado desta forma.");
            Check.Require(pontoDia != null, "O ponto deve ser válido");

            this.PontoDia             = pontoDia;
            this.JornadaTrabalhoAtiva = jornadaAtiva;
        }
Exemplo n.º 5
0
        protected internal DiaJornadaViewModel(JornadaTrabalho jornada, DayOfWeek day)
        {
            this.jornada = jornada;
            this.dia     = jornada.getDia(day);

            this.Entrada        = dia.EntradaEsperada;
            this.Saida          = dia.SaidaEsperada;
            this.Folga          = dia.FolgaEsperada;
            this._diaDeTrabalho = !nenhumHorarioFoiDefinido();
        }
        public JornadaTrabalhoViewModel(IJornadaTrabalhoRepository repository)
        {
            this.repository = repository;
            this.jornada    = repository.findJornadaAtiva();
            criarDias();
            this.DiaJornadaSelecionado = Dias[1]; //Segunda-feira

            _salvarCommand = new RelayCommand(salvar, podeSalvar);
            _fecharCommand = new RelayCommand(fechar);
        }
Exemplo n.º 7
0
 public uint save(JornadaTrabalho jornada)
 {
     using (ISession session = NHibernateHelper.openSession())
         using (ITransaction trans = session.BeginTransaction())
         {
             session.SaveOrUpdate(jornada);
             trans.Commit();
             return(jornada.Id);
         }
 }
Exemplo n.º 8
0
 private void defineHorariosDoDia()
 {
     //if (batidasDoDia.Count == 1)
     //{
     //Define a jornada que será assumida no comportamento do ponto a partir da primeira batida
     jornada = JsonConvert.DeserializeObject <JornadaTrabalho>(
         c.GetAsync(String.Format("servico/IdentificarJornadaTrabalho/{0}?horario={1:hh\\:mm\\:ss}", funcionario.Id, batidasDoDia.Any() ? batidasDoDia.First().Hora : hora.TimeOfDay))
         .Result.Content.ReadAsStringAsync()
         .Result);
     funcionario.IdJornada = jornada.Id;
     //}
 }
        public DiaFeriadoTrabalhado(PontoDia pontoDia, Feriado feriado, JornadaTrabalho jornadaAtiva)
            : base(pontoDia.Data)
        {
            Check.Require(pontoDia.Data == feriado.getData(),
                          "O dia do feriado deve ser o mesmo do dia de trabalho");
            Check.Require(feriado != null, "O feriado deve ser válido");
            Check.Require(pontoDia != null, "O ponto deve ser válido");

            this.PontoDia             = pontoDia;
            this.Feriado              = feriado;
            this.JornadaTrabalhoAtiva = jornadaAtiva;
        }
Exemplo n.º 10
0
        public double CalcularAtraso(IOrderedEnumerable <Lancamento> lancamentoList, JornadaTrabalho jornada)
        {
            TimeSpan TotalAtraso = TimeSpan.Parse("00:00:00");

            foreach (Lancamento LancamentoResult in lancamentoList)
            {
                if (LancamentoResult.HoraInicio > jornada.HoraInicioDe)
                {
                    TotalAtraso += LancamentoResult.HoraInicio - jornada.HoraInicioDe;
                }
            }
            return(TotalAtraso.TotalHours);
        }
Exemplo n.º 11
0
        public override TimeSpan calcularHorasDevedoras(JornadaTrabalho jornada)
        {
            DiaJornada diaJornada = jornada.getDia(Data.DayOfWeek);
            var        trabalhado = calcularHorasTrabalhadas();
            var        esperado   = diaJornada.calcularHorasTrabalhoEsperado();

            var resultado = esperado.Subtract(trabalhado);

            if (resultado > new TimeSpan(0, 10, 59))
            {
                return(resultado);
            }
            return(new TimeSpan(0, 0, 0));
        }
Exemplo n.º 12
0
        public ActionResult Edit(ViewModelMacacao marcacao)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    ViewModelLancamento     lancamentoAliplication = new ViewModelLancamento();
                    Marcacao                aberturaMarcacao       = new Marcacao();
                    JornadaTrabalho         jornada = new JornadaTrabalho();
                    CodDivergenciaViewModel codiv   = new CodDivergenciaViewModel();

                    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);
                        }
                        lancamentoAliplication = marcacao.Lancamento;
                        if (marcacao.DataDialancamento != null)
                        {
                            marcacao.DataDia = marcacao.DataDialancamento?.ToString("yyyy-MM-dd");
                        }
                        lancamentoAliplication.ValidaHorasLancamentoOutraMarcacao(_lancamentoerviceRepository.ObterLancamento(marcacao.DataDia.ToDateProtheus(), User.GetDados("Matricula")));
                        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.AtualizarLancamento(_mapper.Map <Lancamento>(marcacao.Lancamento));
                    }


                    return(Json(new { sucesso = "Lançamento atualizado com sucesso!" }));
                }

                return(Json(new
                {
                    msg = string.Join("; ", ModelState.Values
                                      .SelectMany(x => x.Errors)
                                      .Select(x => x.ErrorMessage)),
                    erro = true
                }));
            }
            catch (Exception e)
            {
                return(Json(new { msg = e.Message, erro = true }));
            }
        }
Exemplo n.º 13
0
        public async Task <IActionResult> AdicionarJornada([FromBody] JornadaTrabalhoDTO jornadaTrabalho)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            var jd      = jornadaTrabalho;
            var jornada = new JornadaTrabalho(jd.IdFuncionario, jd.DiaInicio, jd.DiaFim, jd.HoraInicio, jd.HoraFim);

            _funcionarioRepository.AdicionarJornada(jornada);
            var success = await _funcionarioRepository.UnitOfWork.Commit();

            return(CustomResponse(success));
        }
Exemplo n.º 14
0
        public JornadaTrabalho ObterListaJornadaPorData(string data)
        {
            JornadaTrabalho jornadaTrb           = new JornadaTrabalho();
            var             listaJornadaTrabalho = _jornadaTrbServiceRepository.ObterListJornada();

            foreach (JornadaTrabalho jornada in listaJornadaTrabalho)
            {
                if (Convert.ToDateTime(data.ToDateProtheusReverseformate()) >= jornada.DataInicio && Convert.ToDateTime(data.ToDateProtheusReverseformate()) <= jornada.DataFim)
                {
                    jornada.JornadaDia = jornada.JornadaDiaria.ToString(@"hh\:mm");
                    return(jornada);
                }
            }
            return(jornadaTrb);
        }
Exemplo n.º 15
0
        public RelatorioPonto(Funcionario funcionario, DateTime inicio, DateTime fim, JornadaTrabalho jornadaAtiva, List <DiaRelatorio> todosDias)
        {
            this.Funcionario   = funcionario;
            this.PeriodoInicio = inicio;
            this.PeriodoFim    = fim;
            this.jornadaAtiva  = jornadaAtiva;
            this.Dias          = todosDias;

            int difDias = (fim - inicio).Days + 1;

            Check.Ensure(Dias.Count == difDias, string.Format(
                             "Uma quantidade errada de dias foi gerada para o período: {0} e {1}. Esperado: {2} Encontrado: {3}",
                             inicio.ToShortDateString(),
                             fim.ToShortDateString(),
                             difDias,
                             Dias.Count));
        }
Exemplo n.º 16
0
 public void Add(JornadaTrabalho item)
 {
     try
     {
         using (OracleConnection dbConnection = new OracleConnection(ConnectionString))
         {
             string sQuery = $@"INSERT INTO ZYV010 (ZYV_FILIAL,ZYV_DESCR, ZYV_DTINI, ZYV_DTFIN, ZYV_JORNAD, ZYV_HRINI, ZYV_HRIFIN,ZYV_HFINAL, ZYV_INTINI,ZYV_INTFIN, ZYV_INTMIN,ZYV_INTMAX,ZYV_JORMAX, ZYV_JORMIN, R_E_C_N_O_, R_E_C_D_E_L_)
                             VALUES('{item.Filial}','{item.DescJornada}', '{Convert.ToString(item.DataInicio).ToDateProtheusConvert()}', '{Convert.ToString(item.DataFim).ToDateProtheusConvert()}', '{item.JornadaDiaria}', '{item.HoraInicioDe}','{item.HoraInicioAte}',
                                        '{item.HoraFinal}','{item.InterInicio}', '{item.InterFim}','{item.InterMin}', '{item.InterMax}','{item.JornadaMax}','{item.JornadaMin}',(SELECT NVL(MAX(X.R_E_C_N_O_),0)+1 FROM ZYV010 X),0)";
             dbConnection.Open();
             dbConnection.Execute(sQuery);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 17
0
 public void Update(JornadaTrabalho item)
 {
     try
     {
         using (OracleConnection dbConnection = new OracleConnection(ConnectionString))
         {
             string sQuery = $@"UPDATE ZYV010  
                     SET ZYV_DESCR = '{item.DescJornada}' , ZYV_DTINI = '{Convert.ToString(item.DataInicio).ToDateProtheusConvert()}', ZYV_DTFIN = '{Convert.ToString(item.DataFim).ToDateProtheusConvert()}',
                     ZYV_JORNAD = '{item.JornadaDiaria}', ZYV_HRINI = '{item.HoraInicioDe}', ZYV_HRIFIN =  '{item.HoraInicioAte}', ZYV_HFINAL =  '{item.HoraFinal}',
                     ZYV_INTINI= '{item.InterInicio}', ZYV_INTFIN = '{item.InterFim}',  ZYV_INTMIN = '{item.InterMin}', ZYV_INTMAX = '{item.InterMax}', ZYV_FILIAL = '{item.Filial}', ZYV_JORMAX = '{item.JornadaMax}', ZYV_JORMIN = '{item.JornadaMin}'
                     WHERE ZYV_CODIGO ='{item.Codigo}'";
             dbConnection.Open();
             dbConnection.Execute(sQuery);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 18
0
 public void AdicionarJornada(JornadaTrabalho jornada)
 {
     _context.Jornadas.Add(jornada);
 }
Exemplo n.º 19
0
        public List <JornadaTrabalho> FindAll()
        {
            try
            {
                List <JornadaTrabalho> listJornadaTrabalho = new List <JornadaTrabalho>();
                JornadaTrabalho        jornadaTrabalho;
                using (OracleConnection dbConnection = new OracleConnection(ConnectionString))
                {
                    string sQuery = $@"Select LTRIM(RTRIM(ZYV_CODIGO)) AS Codigo,
                                     LTRIM(RTRIM(ZYV_FILIAL)) AS Filial,
                                     LTRIM(RTRIM(ZYV_DESCR)) AS DescJornada,
                                     LTRIM(RTRIM(ZYV_DTINI)) AS DataInicio,
                                     LTRIM(RTRIM(ZYV_DTFIN)) AS DataFim,
                                     LTRIM(RTRIM(ZYV_JORNAD)) AS JornadaDiaria,
                                     LTRIM(RTRIM(ZYV_HRINI)) AS HoraInicioDe,
                                     LTRIM(RTRIM(ZYV_HRIFIN)) AS HoraInicioAte,
                                     LTRIM(RTRIM(ZYV_HFINAL)) AS HoraFinal,
                                     LTRIM(RTRIM(ZYV_INTINI)) AS InterInicio,
                                     LTRIM(RTRIM(ZYV_INTFIN)) AS InterFim,
                                     LTRIM(RTRIM(ZYV_INTMIN)) AS InterMin,
                                     LTRIM(RTRIM(ZYV_INTMAX)) AS InterMax,
                                     LTRIM(RTRIM(ZYV_JORMAX)) AS JornadaMax,
                                     LTRIM(RTRIM(ZYV_JORMIN)) AS JornadaMin
                                     from ZYV010 WHERE D_E_L_E_T_  <> '*'";
                    dbConnection.Open();
                    var jtResult = dbConnection.Query <JornadaTrabalhoDb>(sQuery);
                    foreach (JornadaTrabalhoDb QueryResult in jtResult)
                    {
                        jornadaTrabalho               = new JornadaTrabalho();
                        jornadaTrabalho.Codigo        = QueryResult.Codigo;
                        jornadaTrabalho.DescJornada   = QueryResult.DescJornada;
                        jornadaTrabalho.DataInicio    = Convert.ToDateTime(QueryResult.DataInicio.ToDateProtheusReverseformate());
                        jornadaTrabalho.DataFim       = Convert.ToDateTime(QueryResult.DataFim.ToDateProtheusReverseformate());
                        jornadaTrabalho.HoraInicioDe  = TimeSpan.Parse(QueryResult.HoraInicioDe);
                        jornadaTrabalho.HoraInicioAte = TimeSpan.Parse(QueryResult.HoraInicioAte);
                        jornadaTrabalho.InterInicio   = TimeSpan.Parse(QueryResult.InterInicio);
                        jornadaTrabalho.HoraInicioAte = TimeSpan.Parse(QueryResult.HoraInicioAte);
                        jornadaTrabalho.InterInicio   = TimeSpan.Parse(QueryResult.InterInicio);
                        jornadaTrabalho.InterFim      = TimeSpan.Parse(QueryResult.InterFim);
                        jornadaTrabalho.InterMin      = TimeSpan.Parse(QueryResult.InterMin);
                        jornadaTrabalho.InterMax      = TimeSpan.Parse(QueryResult.InterMax);
                        jornadaTrabalho.JornadaDiaria = TimeSpan.Parse(QueryResult.JornadaDiaria);
                        if (QueryResult.JornadaMin == null)
                        {
                            jornadaTrabalho.JornadaMin = TimeSpan.Parse("00:00");
                        }
                        else
                        {
                            jornadaTrabalho.JornadaMin = TimeSpan.Parse(QueryResult.JornadaMin);
                        }
                        jornadaTrabalho.Filial = QueryResult.Filial;
                        if (QueryResult.JornadaMax == null)
                        {
                            jornadaTrabalho.JornadaMax = TimeSpan.Parse("00:00");
                        }
                        else
                        {
                            jornadaTrabalho.JornadaMax = TimeSpan.Parse(QueryResult.JornadaMax);
                        }
                        listJornadaTrabalho.Add(jornadaTrabalho);
                    }

                    return(listJornadaTrabalho);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 20
0
        public List <Fechamento> CalcularTotalLancamentoPorProjeto(List <Lancamento> listlancamentoDiario, string matricula, JornadaTrabalho jornada, Configuracao config, string filial, string codmarcacao)
        {
            double            totalLancamento   = 0;
            double            totalHoraExedente = 0;
            double            totalAbono        = 0;
            string            datalancamento    = "0";
            var               jrDiaria          = jornada.JornadaDiaria;
            List <Fechamento> Fechamento        = new List <Fechamento>();
            string            codEmprendimento  = "0";
            string            data = "";
            double            totalHorasLancamento = 0;

            foreach (Lancamento LancamentoResult in listlancamentoDiario)
            {
                var listaPorEmprendimentoDia = _lancamentoerviceRepository.ObterListaLancamentoPorCodProjeto(LancamentoResult.DateLancamento, matricula, LancamentoResult.codEmpredimento);
                if (listaPorEmprendimentoDia.Count > 0)
                {
                    totalLancamento += CalcularTotalHorasLancamentoPorProjeto(listaPorEmprendimentoDia);

                    Fechamento novo = new Fechamento();
                    novo.DataLancamento    = LancamentoResult.DateLancamento;
                    novo.CodigoProjeto     = LancamentoResult.codEmpredimento;
                    novo.CodigoMarcacao    = codmarcacao;
                    novo.Fase              = LancamentoResult.Fase;
                    novo.TotalAbono        = 0;
                    novo.TotalHoraExedente = 0;
                    novo.TotalFaltaAtraso  = 0;
                    novo.TotalHora         = totalLancamento;
                    codEmprendimento       = LancamentoResult.codEmpredimento;
                    datalancamento         = LancamentoResult.DateLancamento;
                    totalAbono             = 0; totalLancamento = 0; totalHoraExedente = 0;
                    if (!Fechamento.Any(x => x.CodigoProjeto == LancamentoResult.codEmpredimento && x.DataLancamento == LancamentoResult.DateLancamento))
                    {
                        Fechamento.Add(novo);
                    }
                }
            }

            var listlancamentosSemMarcaco = ObterDiasSemLancamento(listlancamentoDiario.ToList(), _marcacao.ObterMarcacao(codmarcacao), filial, jornada);

            foreach (Fechamento fechamento in listlancamentosSemMarcaco)
            {
                fechamento.CodigoMarcacao    = codmarcacao;
                fechamento.Filial            = filial;
                fechamento.TotalAbono        = 0;
                fechamento.TotalAtraso       = 0;
                fechamento.TotalFalta        = 0;
                fechamento.TotalFaltaAtraso  = 0;
                fechamento.TotalHoraExedente = 0;
                fechamento.CodigoProjeto     = "00000";
                fechamento.Fase        = "0";
                fechamento.TotalHora   = 0;
                fechamento.Divergencia = "0";
                Fechamento.Add(fechamento);
            }

            return(Fechamento);
        }
Exemplo n.º 21
0
        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 }));
            }
        }
Exemplo n.º 22
0
        public int CalcularQuantidadeDeDiaSemApontamento(IOrderedEnumerable <Lancamento> lancamentoList, JornadaTrabalho jornada)
        {
            DateTime initialDate    = jornada.DataInicio;
            DateTime finalDate      = jornada.DataFim;
            string   datalancamento = "0";
            int      countDiasDiasDiferenteLancamento = 0;
            int      countDiasInguasLancamento        = 0;

            var days      = 0;
            var daysCount = 0;

            days = initialDate.Subtract(finalDate).Days;

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

            for (int i = 1; i <= days; i++)
            {
                initialDate = initialDate.AddDays(1);

                if (initialDate.DayOfWeek != DayOfWeek.Sunday
                    &&
                    initialDate.DayOfWeek != DayOfWeek.Saturday)
                {
                    daysCount++;
                }
            }



            foreach (Lancamento LancamentoResult in lancamentoList)
            {
                if (datalancamento != LancamentoResult.DateLancamento && datalancamento != "0")
                {
                    countDiasDiasDiferenteLancamento++;
                }
                else
                {
                    countDiasInguasLancamento++;
                }

                datalancamento = LancamentoResult.DateLancamento;
            }
            if (countDiasInguasLancamento > 1)
            {
                countDiasInguasLancamento = 1;
            }

            return(daysCount - (countDiasDiasDiferenteLancamento + countDiasInguasLancamento));
        }
Exemplo n.º 23
0
 public DiaFalta(DateTime date, JornadaTrabalho jornadaAtiva) : base(date)
 {
     this.JornadaTrabalhoAtiva = jornadaAtiva;
 }
Exemplo n.º 24
0
        public List <Fechamento> CalcularLancamentoPorData(IEnumerable <Lancamento> orderedlistalancamento, JornadaTrabalho jornadaTrabalho, Configuracao configura, string matricula, string filial, string codmarcacao)
        {
            List <Fechamento> listaFechamentoPorData = new List <Fechamento>();


            listaFechamentoPorData = CalcularTotalHoraExedenteETrabalhadaEabonoeFalta(orderedlistalancamento.OrderBy(x => x.DateLancamento), jornadaTrabalho, configura, matricula, filial, codmarcacao);
            return(listaFechamentoPorData);
        }
Exemplo n.º 25
0
        public List <Fechamento> CalcularTotalHoraExedenteETrabalhadaEabonoeFalta(IEnumerable <Lancamento> lancamentoList, JornadaTrabalho jornada, Configuracao config, string matricula, string filial, string codmarcacao)
        {
            List <Fechamento> listFechamentoCalculada = new List <Fechamento>();

            var listFechamento = _fechamentoServiceRepository.ObterListFechamentoMensalPorDia(matricula, codmarcacao);
            var marcacao       = _marcacao.ObterMarcacao(codmarcacao);

            if (marcacao.Status == Constantes.FECHADO | marcacao.Status == Constantes.APROVADO | marcacao.Status == Constantes.CONTABILIZADO)
            {
                foreach (Fechamento FechamentoResult in listFechamento)
                {
                    Fechamento novo = new Fechamento();
                    novo.DataLancamento    = FechamentoResult.DataLancamento;
                    novo.CodigoProjeto     = FechamentoResult.CodigoProjeto;
                    novo.CodigoMarcacao    = FechamentoResult.CodigoMarcacao;
                    novo.TotalHora         = FechamentoResult.TotalHora;
                    novo.TotalFaltaAtraso  = FechamentoResult.TotalFaltaAtraso;
                    novo.TotalHoraExedente = FechamentoResult.TotalHoraExedente;
                    novo.TotalAbono        = FechamentoResult.TotalAbono;
                    listFechamentoCalculada.Add(novo);
                }
            }
            else
            {
                foreach (Lancamento LancamentoAberto in lancamentoList.ToList())
                {
                    Fechamento novo = new Fechamento();
                    novo.DataLancamento    = LancamentoAberto.DateLancamento;
                    novo.TotalHora         = 0;
                    novo.TotalFaltaAtraso  = 0;
                    novo.TotalHoraExedente = 0;
                    novo.TotalAbono        = 0;
                    listFechamentoCalculada.Add(novo);
                }

                var listlancamentosSemMarcaco = ObterDiasSemLancamento(lancamentoList.ToList(), _marcacao.ObterMarcacao(codmarcacao), filial, jornada);
                foreach (Fechamento fechamento in listlancamentosSemMarcaco)
                {
                    fechamento.CodigoMarcacao    = codmarcacao;
                    fechamento.Filial            = filial;
                    fechamento.TotalAbono        = 0;
                    fechamento.TotalAtraso       = 0;
                    fechamento.TotalFalta        = Math.Round(Convert.ToDouble(jornada.JornadaDiaria.Hours), 2);
                    fechamento.TotalFaltaAtraso  = 0;
                    fechamento.TotalHoraExedente = 0;
                    fechamento.CodigoProjeto     = "0";
                    fechamento.Fase        = "0";
                    fechamento.TotalHora   = 0;
                    fechamento.Divergencia = "0";
                    listFechamentoCalculada.Add(fechamento);
                }
            }

            return(listFechamentoCalculada);
        }
Exemplo n.º 26
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);
        }
Exemplo n.º 27
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);
        }
Exemplo n.º 28
0
        public void horarioDeSaidaNaoDeveSerAntesDoDeEntrada()
        {
            var jornada = new JornadaTrabalho();

            jornada.cadastrarDia(DayOfWeek.Monday, new TimeSpan(9, 0, 0), new TimeSpan(8, 0, 0), new TimeSpan(1, 0, 0));
        }
Exemplo n.º 29
0
 public override TimeSpan calcularHorasExtras(JornadaTrabalho jornada)
 {
     return(new TimeSpan(0));
 }
Exemplo n.º 30
0
        public override TimeSpan calcularHorasDevedoras(JornadaTrabalho jornada)
        {
            DiaJornada diaJornada = jornada.getDia(Data.DayOfWeek);

            return(diaJornada.calcularHorasTrabalhoEsperado());
        }