예제 #1
0
 /// <summary>
 /// Incluir um Diaria
 /// </summary>
 /// <returns>ResumoModel</returns>
 public void IncluirDiaria(DiariaAvulsaFiltroDTO model)
 {
     this.Post(new Uri($"{ServicoRotas.Base}{ServicoRotas.Diaria.PostDiaria}"), model);
 }
예제 #2
0
        public ActionResult CadastroDiariaAvulsa(DiariaModel modelo)
        {
            try
            {
                #region Validacoes
                if (modelo.HorarioInicial == null)
                {
                    ModelState.AddModelError("", "Hora inicio do expediente.");
                    return(View(modelo));
                }
                else if (modelo.HorarioFim == null)
                {
                    ModelState.AddModelError("", "Hora Fim do expediente.");
                    return(View(modelo));
                }
                else if (modelo.HorarioFim < modelo.HorarioFim)
                {
                    ModelState.AddModelError("", "Hora Fim do expediente não pode ser menor que o horario inicial.");
                    return(View(modelo));
                }
                if (modelo.PeriodoFinal.ToString().ToDate() < modelo.PeriodoInicial.ToString().ToDate())
                {
                    ModelState.AddModelError("", "A data de expediente final deve ser maior que a inicial.");
                    return(View(modelo));
                }
                else if (modelo.ClienteSelecionado == null)
                {
                    ModelState.AddModelError("", "Favor selecionar um cliente na lista.");
                    return(View(modelo));
                }
                #endregion

                // Entrada
                var diariaAvulsa = new DiariaAvulsaFiltroDTO();

                if (UsuarioLogado.Instance.BhjTpUsu != null && UsuarioLogado.Instance.BhjTpUsu == TipoUsuario.FuncionarioCliente)
                {
                    // Busca Tarifa do Cliente Interno da BHJET
                    var entidade     = tarifaServico.BuscaTaritaCliente(UsuarioLogado.Instance.bhIdCli, modelo.TipoVeiculoSelecionado);
                    var profissional = profissionalServico.BuscaComissaoProfissional(modelo.ProfissionalSelecionado ?? default(int));

                    // Validacoes
                    if (entidade.ValorContrato == null || entidade.FranquiaKM == null || entidade.ValorKMAdicional == null)
                    {
                        ModelState.AddModelError("", "Não foi possível buscar informações para seu contrato de diaria, favor entrar em contato com a Administração da BHJet.");
                        return(View(modelo));
                    }

                    // Modelo Diaria
                    diariaAvulsa = new DiariaAvulsaFiltroDTO()
                    {
                        IDCliente                    = modelo.ClienteSelecionado ?? 0,
                        IDColaboradorEmpresa         = modelo.ProfissionalSelecionado ?? 0,
                        DataInicioExpediente         = modelo.PeriodoInicial.ToDate() ?? new DateTime(),
                        DataFimExpediente            = modelo.PeriodoFinal.ToDate() ?? new DateTime(),
                        HoraInicioExpediente         = modelo.HorarioInicial ?? new TimeSpan(),
                        HoraFimExpediente            = modelo.HorarioFim ?? new TimeSpan(),
                        ValorDiariaNegociado         = entidade.ValorContrato ?? 0,
                        ValorDiariaComissaoNegociado = profissional.decPercentualComissao,
                        FranquiaKMDiaria             = entidade.FranquiaKM ?? 0,
                        ValorKMAdicionalNegociado    = entidade.ValorKMAdicional ?? 0
                    };
                }
                else
                {
                    diariaAvulsa = new DiariaAvulsaFiltroDTO()
                    {
                        IDCliente                    = modelo.ClienteSelecionado ?? 0,
                        IDColaboradorEmpresa         = modelo.ProfissionalSelecionado ?? 0,
                        DataInicioExpediente         = modelo.PeriodoInicial.ToDate() ?? new DateTime(),
                        DataFimExpediente            = modelo.PeriodoFinal.ToDate() ?? new DateTime(),
                        HoraInicioExpediente         = modelo.HorarioInicial ?? new TimeSpan(),
                        HoraFimExpediente            = modelo.HorarioFim ?? new TimeSpan(),
                        ValorDiariaNegociado         = modelo.ValorDiaria.ToDecimalCurrency(),
                        ValorDiariaComissaoNegociado = modelo.ValorComissao.ToDecimalCurrency(),
                        FranquiaKMDiaria             = modelo.FranquiaKMDiaria.ToString().ToDecimalCurrency(),
                        ValorKMAdicionalNegociado    = modelo.ValorKMAdicional.ToDecimalCurrency()
                    };
                }

                if (ModelState.IsValid)
                {
                    // Incluir diaria
                    diariaServico.IncluirDiaria(diariaAvulsa);

                    this.MensagemSucesso("Diaria avulsa cadastrada com sucesso.");

                    ModelState.Clear();
                    return(View());
                }

                return(RedirectToAction("CadastroDiariaAvulsa"));
            }
            catch (Exception e)
            {
                this.TrataErro(e);
                return(RedirectToAction("Index", "Home"));
            }
        }
예제 #3
0
        public IHttpActionResult PostDiariaAvulsa([FromBody] DiariaAvulsaFiltroDTO model)
        {
            // Busca Tarifa Cliente
            //var tarifa = new TarifaRepositorio().BuscaTarificaPorCliente(model.IDCliente, model.tipo);

            // Verifica periodo informado contem varios dias
            if (model.DataFimExpediente.Date > model.DataInicioExpediente)
            {
                // Quantos dias de diarias solicitados
                double qtdDias = (model.DataFimExpediente.Date - model.DataInicioExpediente).TotalDays;

                // Monta diarias por dia
                for (int i = 0; i <= qtdDias; i++)
                {
                    // Monta periodos
                    var dataRegistro = model.DataInicioExpediente.AddDays(i);

                    // Inicio
                    var horaInicio = model.HoraInicioExpediente < new System.TimeSpan(00, 00, 00) ? new System.TimeSpan(00, 00, 00) : model.HoraInicioExpediente;
                    var dataInicio = new System.DateTime(dataRegistro.Year, dataRegistro.Month, dataRegistro.Day, horaInicio.Hours, horaInicio.Minutes, horaInicio.Seconds);

                    // Fim
                    var horaFim = model.HoraFimExpediente < new System.TimeSpan(00, 00, 00) ? new System.TimeSpan(00, 00, 00) : model.HoraFimExpediente;
                    var dataFim = new System.DateTime(dataRegistro.Year, dataRegistro.Month, dataRegistro.Day, horaFim.Hours, horaFim.Minutes, horaFim.Seconds);

                    // Busca Dados detalhados da corrida/OS
                    new DiariaRepositorio().IncluirDiariaAvulsa(new BHJet_Repositorio.Admin.Filtro.NovaDiariaAvulsaFiltro()
                    {
                        IDCliente                    = model.IDCliente,
                        IDColaboradorEmpresa         = model.IDColaboradorEmpresa,
                        IDUsuarioSolicitacao         = UsuarioAutenticado.LoginID.ToLong(),
                        DataHoraFimExpediente        = dataInicio,
                        DataHoraInicioExpediente     = dataFim,
                        FranquiaKMDiaria             = model.FranquiaKMDiaria,
                        ValorDiariaComissaoNegociado = model.ValorDiariaComissaoNegociado,
                        ValorDiariaNegociado         = model.ValorDiariaNegociado,
                        ValorKMAdicionalNegociado    = model.ValorKMAdicionalNegociado
                    });
                }
            }
            else
            {
                // Monta periodos
                model.DataInicioExpediente = new System.DateTime(model.DataInicioExpediente.Year, model.DataInicioExpediente.Month, model.DataInicioExpediente.Day, model.HoraInicioExpediente.Hours, model.HoraInicioExpediente.Minutes, model.HoraInicioExpediente.Seconds);
                model.DataFimExpediente    = new System.DateTime(model.DataFimExpediente.Year, model.DataFimExpediente.Month, model.DataFimExpediente.Day, model.HoraFimExpediente.Hours, model.HoraFimExpediente.Minutes, model.HoraFimExpediente.Seconds);

                // Busca Dados detalhados da corrida/OS
                new DiariaRepositorio().IncluirDiariaAvulsa(new BHJet_Repositorio.Admin.Filtro.NovaDiariaAvulsaFiltro()
                {
                    IDCliente                    = model.IDCliente,
                    IDColaboradorEmpresa         = model.IDColaboradorEmpresa,
                    IDUsuarioSolicitacao         = UsuarioAutenticado.LoginID.ToLong(),
                    DataHoraFimExpediente        = model.DataFimExpediente,
                    DataHoraInicioExpediente     = model.DataInicioExpediente,
                    FranquiaKMDiaria             = model.FranquiaKMDiaria,
                    ValorDiariaComissaoNegociado = model.ValorDiariaComissaoNegociado,
                    ValorDiariaNegociado         = model.ValorDiariaNegociado,
                    ValorKMAdicionalNegociado    = model.ValorKMAdicionalNegociado
                });
            }

            // Return
            return(Ok());
        }