public async Task <IActionResult> AprobacionSolicitudViatico(int id)
        {
            var sol = new ViewModelsSolicitudViaticos
            {
                IdSolicitudViatico = id
            };

            try
            {
                await CargarCombos();

                if (id.ToString() != null)
                {
                    var respuestaSolicitudViatico = await apiServicio.ObtenerElementoAsync1 <ViewModelsSolicitudViaticos>(sol, new Uri(WebApp.BaseAddress),
                                                                                                                          "api/SolicitudViaticos/ObtenerSolicitudesViaticosporId");


                    return(View(respuestaSolicitudViatico));
                }
                return(BadRequest());
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
        public async Task <IActionResult> AprobacionSolicitudViatico(ViewModelsSolicitudViaticos viewModelsSolicitudViaticos)
        {
            try
            {
                var VerificarPresupuesto = await apiServicio.ObtenerElementoAsync1 <Response>(viewModelsSolicitudViaticos, new Uri(WebApp.BaseAddress),
                                                                                              "api/Presupuesto/ObtenerPresupuesto");

                if (VerificarPresupuesto.IsSuccess)
                {
                    var sol = new SolicitudViatico()
                    {
                        IdSolicitudViatico = viewModelsSolicitudViaticos.IdSolicitudViatico,
                        Estado             = 2
                    };

                    var respuestaEmpleado = await apiServicio.EditarAsync <Response>(sol, new Uri(WebApp.BaseAddress),
                                                                                     "api/SolicitudViaticos/ActualizarEstadoSolicitudViatico");

                    if (respuestaEmpleado.IsSuccess)
                    {
                        return(RedirectToAction("DetalleSolicitudViaticos", new { id = viewModelsSolicitudViaticos.IdEmpleado }));
                    }
                }
                return(this.RedireccionarMensajeTime("SolicitudViaticosContabilidad", "AprobacionSolicitudViatico", new { id = viewModelsSolicitudViaticos.IdSolicitudViatico }, $"{Mensaje.Error}|{VerificarPresupuesto.Message}|{"25000"}"));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        public async Task <IActionResult> Actividades(ViewModelsSolicitudViaticos viewModelsSolicitudViaticos)
        {
            Response response       = new Response();
            var      informeViatico = new InformeActividadViatico
            {
                Descripcion        = viewModelsSolicitudViaticos.InformeActividadViatico.Descripcion,
                Observacion        = viewModelsSolicitudViaticos.InformeActividadViatico.Observacion,
                IdSolicitudViatico = viewModelsSolicitudViaticos.IdSolicitudViatico
            };

            try
            {
                response = await apiServicio.InsertarAsync(informeViatico,
                                                           new Uri(WebApp.BaseAddress),
                                                           "api/InformeViaticos/Actividades");

                if (response.IsSuccess)
                {
                    return(RedirectToAction("Informe", new { IdSolicitudViatico = informeViatico.IdSolicitudViatico }));
                }

                ViewData["Error"] = response.Message;
                return(RedirectToAction("Informe", new { IdSolicitudViatico = informeViatico.IdSolicitudViatico }));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        public async Task <IActionResult> Informe(int IdSolicitudViatico, string mensaje)
        {
            List <InformeViatico> lista = new List <InformeViatico>();

            try
            {
                var sol = new ViewModelsSolicitudViaticos
                {
                    IdSolicitudViatico = IdSolicitudViatico,
                };
                if (IdSolicitudViatico.ToString() != null)
                {
                    var respuestaSolicitudViatico = await apiServicio.ObtenerElementoAsync1 <ViewModelsSolicitudViaticos>(sol, new Uri(WebApp.BaseAddress),
                                                                                                                          "api/SolicitudViaticos/ObtenerSolicitudesViaticosporId");

                    //InicializarMensaje(null);
                    if (respuestaSolicitudViatico != null)
                    {
                        lista = new List <InformeViatico>();
                        var itinerarioViatico = new InformeViatico
                        {
                            IdSolicitudViatico = IdSolicitudViatico
                        };
                        lista = await apiServicio.ObtenerElementoAsync1 <List <InformeViatico> >(itinerarioViatico, new Uri(WebApp.BaseAddress)
                                                                                                 , "api/InformeViaticos/ListarInformeViaticos");

                        var facturas = new FacturaViatico()
                        {
                            IdSolicitudViatico = IdSolicitudViatico
                        };

                        var listaFacruras = await apiServicio.Listar <FacturaViatico>(facturas, new Uri(WebApp.BaseAddress)
                                                                                      , "api/FacturaViatico/ListarFacturas");

                        HttpContext.Session.SetInt32(Constantes.IdSolicitudtinerario, IdSolicitudViatico);

                        //busca las actividades del informe
                        var informeViatico = new InformeViatico
                        {
                            IdSolicitudViatico = IdSolicitudViatico
                        };
                        var Actividades = await apiServicio.ObtenerElementoAsync1 <InformeActividadViatico>(informeViatico, new Uri(WebApp.BaseAddress)
                                                                                                            , "api/InformeViaticos/ObtenerActividades");

                        respuestaSolicitudViatico.ListaInformeViatico     = lista;
                        respuestaSolicitudViatico.ListaFacturaViatico     = listaFacruras;
                        respuestaSolicitudViatico.InformeActividadViatico = Actividades;
                        InicializarMensaje(mensaje);
                        return(View(respuestaSolicitudViatico));
                    }
                }
                InicializarMensaje(null);
                return(View());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
Пример #5
0
        public async Task <IActionResult> Index(int IdSolicitudViatico, string mensaje)
        {
            try
            {
                var sol = new ViewModelsSolicitudViaticos
                {
                    IdSolicitudViatico = IdSolicitudViatico
                };
                if (IdSolicitudViatico.ToString() != null)
                {
                    var respuestaSolicitudViatico = await apiServicio.ObtenerElementoAsync1 <ViewModelsSolicitudViaticos>(sol, new Uri(WebApp.BaseAddress),
                                                                                                                          "api/SolicitudViaticos/ObtenerSolicitudesViaticosporId");

                    //total informe
                    var informeViatico = new InformeViatico
                    {
                        IdSolicitudViatico = IdSolicitudViatico
                    };

                    var listaintforme = await apiServicio.ObtenerElementoAsync1 <List <InformeViatico> >(informeViatico, new Uri(WebApp.BaseAddress)
                                                                                                         , "api/InformeViaticos/ListarInformeViaticos");

                    ///Valor total de informe
                    var valortotaInforme = listaintforme.Sum(x => x.ValorEstimado);
                    ///total facturas
                    var facturas = new FacturaViatico()
                    {
                        IdSolicitudViatico = IdSolicitudViatico
                    };
                    var listaFacruras = await apiServicio.Listar <FacturaViatico>(facturas, new Uri(WebApp.BaseAddress)
                                                                                  , "api/FacturaViatico/ListarFacturas");

                    //calculo de reliquidacion

                    var valortotalfacturas = listaFacruras.Sum(x => x.ValorTotalFactura);

                    var valorCalculo = (respuestaSolicitudViatico.ValorEstimado * 70) / 100;

                    var EstadoReliquidacion = new ViewModelsSolicitudViaticos();

                    if ((listaFacruras.Count() > 0 || respuestaSolicitudViatico.ListaInformeViatico.Count > 0) && respuestaSolicitudViatico.Estado == 4)
                    {
                        EstadoReliquidacion = calculos(Convert.ToDecimal(valortotaInforme), valortotalfacturas, Convert.ToDecimal(valorCalculo), Convert.ToDecimal(respuestaSolicitudViatico.ValorEstimado));
                    }
                    respuestaSolicitudViatico.Reliquidacion = EstadoReliquidacion.Reliquidacion;
                    respuestaSolicitudViatico.Valor         = EstadoReliquidacion.Valor;
                    InicializarMensaje(mensaje);
                    return(View(respuestaSolicitudViatico));
                }
                return(BadRequest());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        public async Task <IActionResult> Create(ViewModelsSolicitudViaticos viewModelsSolicitudViaticos)
        {
            try
            {
                Response response = new Response();
                var      lista    = new List <TipoViatico>();
                if (viewModelsSolicitudViaticos.FechaSalida <= viewModelsSolicitudViaticos.FechaLlegada)
                {
                    var claim         = HttpContext.User.Identities.Where(x => x.NameClaimType == ClaimTypes.Name).FirstOrDefault();
                    var NombreUsuario = claim.Claims.Where(c => c.Type == ClaimTypes.Name).FirstOrDefault().Value;
                    var empleado      = await ObtenerEmpleado(NombreUsuario);

                    viewModelsSolicitudViaticos.IdEmpleado = empleado.IdEmpleado;
                    //if(viewModelsSolicitudViaticos.IdConfiguracionViatico == 0 )
                    //{
                    //    return this.Redireccionar("SolicitudViaticos", "Create", $"{Mensaje.Error}|{Mensaje.TipoViatico}");

                    //}
                    viewModelsSolicitudViaticos.IdConfiguracionViatico = empleado.IdConfiguracionViatico;
                    viewModelsSolicitudViaticos.FechaSolicitud         = DateTime.Now.Date;
                    response = await apiServicio.InsertarAsync(viewModelsSolicitudViaticos,
                                                               new Uri(WebApp.BaseAddress),
                                                               "api/SolicitudViaticos/InsertarSolicitudViatico");

                    if (response.IsSuccess)
                    {
                        var respuesta = JsonConvert.DeserializeObject <SolicitudViatico>(response.Resultado.ToString());
                        return(RedirectToAction("Create", "ItinerarioViatico", new { IdSolicitudViatico = respuesta.IdSolicitudViatico }));
                    }

                    lista = await apiServicio.Listar <TipoViatico>(new Uri(WebApp.BaseAddress)
                                                                   , "api/TiposDeViatico/ListarTiposDeViatico");

                    viewModelsSolicitudViaticos.ListaTipoViatico = lista;
                    await CargarCombos();

                    this.TempData["Mensaje"] = $"{Mensaje.Error}|{response.Message}";
                    return(View(viewModelsSolicitudViaticos));
                }
                lista = new List <TipoViatico>();
                await CargarCombos();

                lista = await apiServicio.Listar <TipoViatico>(new Uri(WebApp.BaseAddress)
                                                               , "api/TiposDeViatico/ListarTiposDeViatico");

                viewModelsSolicitudViaticos.ListaTipoViatico = lista;
                this.TempData["Mensaje"] = $"{Mensaje.Error}|{"Fechas Incorrectas"}";
                return(View(viewModelsSolicitudViaticos));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
Пример #7
0
        public async Task <Response> ObtenerPresupuesto([FromBody] ViewModelsSolicitudViaticos viewModelsSolicitudViaticos)
        {
            try
            {
                var a = await db.Presupuesto.Where(x => x.IdPresupuesto == viewModelsSolicitudViaticos.IdPresupuesto && x.IdSucursal == null).OrderBy(x => x.Fecha).FirstOrDefaultAsync();

                if (a != null)
                {
                    var b     = db.DetallePresupuesto.Where(x => x.IdPresupuesto == viewModelsSolicitudViaticos.IdPresupuesto).ToListAsync().Result.Sum(x => x.Valor);
                    var valor = b + Convert.ToDouble(viewModelsSolicitudViaticos.ValorEstimado);
                    if (valor <= a.Valor)
                    {
                        var detalle = new DetallePresupuesto
                        {
                            IdPresupuesto      = a.IdPresupuesto,
                            IdSolicitudViatico = viewModelsSolicitudViaticos.IdSolicitudViatico,
                            Valor = Convert.ToDouble(viewModelsSolicitudViaticos.ValorEstimado),
                            Fecha = DateTime.Now
                        };
                        db.DetallePresupuesto.Add(detalle);
                        await db.SaveChangesAsync();

                        return(new Response
                        {
                            IsSuccess = true,
                            Message = Mensaje.Satisfactorio
                        });
                    }
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = "No Contiene Fondos"
                    });
                }
                return(new Response
                {
                    IsSuccess = false
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false
                });
            }
        }
        public async Task <IActionResult> EditEstado(ViewModelsSolicitudViaticos viewModelsSolicitudViaticos)
        {
            Response response = new Response();

            try
            {
                var claim         = HttpContext.User.Identities.Where(x => x.NameClaimType == ClaimTypes.Name).FirstOrDefault();
                var NombreUsuario = claim.Claims.Where(c => c.Type == ClaimTypes.Name).FirstOrDefault().Value;
                var empleado      = await ObtenerEmpleado(NombreUsuario);

                var soli = new SolicitudViatico
                {
                    Estado              = viewModelsSolicitudViaticos.Estado,
                    IdSolicitudViatico  = viewModelsSolicitudViaticos.IdSolicitudViatico,
                    IdEmpleadoAprobador = empleado.IdEmpleado
                };

                response = await apiServicio.InsertarAsync(soli, new Uri(WebApp.BaseAddress),
                                                           "api/SolicitudViaticos/ActualizarEstadoSolicitudViatico");

                if (response.IsSuccess)
                {
                    return(RedirectToAction("DetalleSolicitudViaticos", new { id = viewModelsSolicitudViaticos.IdEmpleado }));
                }
                ViewData["Error"] = response.Message;
                return(View(viewModelsSolicitudViaticos));
            }
            catch (Exception ex)
            {
                await GuardarLogService.SaveLogEntry(new LogEntryTranfer
                {
                    ApplicationName      = Convert.ToString(Aplicacion.WebAppTh),
                    Message              = "Editando un solicitud viático",
                    ExceptionTrace       = ex.Message,
                    LogCategoryParametre = Convert.ToString(LogCategoryParameter.Edit),
                    LogLevelShortName    = Convert.ToString(LogLevelParameter.ERR),
                    UserName             = "******"
                });

                return(BadRequest());
            }
        }
        public async Task <IActionResult> Create(ItinerarioViatico itinerarioViatico)
        {
            var solicitudViatico = new ViewModelsSolicitudViaticos
            {
                IdSolicitudViatico = itinerarioViatico.IdSolicitudViatico
            };
            Response response = new Response();

            try
            {
                var solicitud = await apiServicio.ObtenerElementoAsync1 <SolicitudViatico>(solicitudViatico, new Uri(WebApp.BaseAddress)
                                                                                           , "api/SolicitudViaticos/ListarSolicitudesViaticosPorId");

                if (itinerarioViatico.FechaDesde >= solicitud.FechaSalida && itinerarioViatico.FechaHasta <= solicitud.FechaLlegada)
                {
                    response = await apiServicio.InsertarAsync(itinerarioViatico,
                                                               new Uri(WebApp.BaseAddress),
                                                               "api/ItinerarioViatico/InsertarItinerarioViatico");

                    if (response.IsSuccess)
                    {
                        return(RedirectToAction("Index", new { IdSolicitudViatico = itinerarioViatico.IdSolicitudViatico }));
                    }
                    await CargarCombos();

                    response.Message = "Valor Excede al de la solicitud";
                    InicializarMensaje(response.Message);
                    return(View(itinerarioViatico));
                }
                response.Message = "Fechas incorrectas";
                await CargarCombos();

                ViewData["Error"] = response.Message;
                InicializarMensaje(response.Message);
                return(View(itinerarioViatico));
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
        public async Task <IActionResult> Create()
        {
            InicializarMensaje(null);
            ObtenerInstancia.Instance = null;

            await CargarCombos();

            var lista = new List <TipoViatico>();

            lista = await apiServicio.Listar <TipoViatico>(new Uri(WebApp.BaseAddress)
                                                           , "api/TiposDeViatico/ListarTiposDeViatico");

            var viewModelsSolicitudViaticos = new ViewModelsSolicitudViaticos
            {
                FechaSalida      = DateTime.Now,
                FechaLlegada     = DateTime.Now,
                ListaTipoViatico = lista
            };

            return(View(viewModelsSolicitudViaticos));
        }
Пример #11
0
        ViewModelsSolicitudViaticos calculos(decimal valortotaInforme, decimal valortotalfacturas, decimal valorCalculo, decimal valortotalVIaticos)
        {
            var solicitudViaticoViewModel = new ViewModelsSolicitudViaticos();


            if (valortotaInforme >= valorCalculo && valortotalfacturas >= valorCalculo)
            {
                solicitudViaticoViewModel.Reliquidacion = 0;
            }
            else if (valortotalfacturas > valortotaInforme)
            {
                solicitudViaticoViewModel.Reliquidacion = 1;
                var cal = valortotalfacturas - valortotaInforme;
                if (cal == 0)
                {
                    solicitudViaticoViewModel.Valor = Convert.ToDecimal(valorCalculo - valortotalfacturas);
                }
                else
                {
                    solicitudViaticoViewModel.Valor = Convert.ToDecimal(valorCalculo - cal);
                }
            }
            else if (valortotaInforme < valorCalculo && valortotalfacturas < valorCalculo)
            {
                solicitudViaticoViewModel.Reliquidacion = -1;
                var cal = valortotalfacturas - valortotaInforme;
                if (cal == 0)
                {
                    solicitudViaticoViewModel.Valor = Convert.ToDecimal(valorCalculo - valortotalfacturas);
                }
                else
                {
                    solicitudViaticoViewModel.Valor = Convert.ToDecimal(valorCalculo - cal);
                }
            }

            return(solicitudViaticoViewModel);
        }
        public async Task <IActionResult> Index(int IdSolicitudViatico, string mensaje)
        {
            var sol = new ViewModelsSolicitudViaticos
            {
                IdSolicitudViatico = IdSolicitudViatico
            };

            try
            {
                if (IdSolicitudViatico.ToString() != null)
                {
                    var respuestaSolicitudViatico = await apiServicio.ObtenerElementoAsync1 <ViewModelsSolicitudViaticos>(sol, new Uri(WebApp.BaseAddress),
                                                                                                                          "api/SolicitudViaticos/ObtenerSolicitudesViaticosporId");

                    InicializarMensaje(mensaje);
                    return(View(respuestaSolicitudViatico));
                }
                return(BadRequest());
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }
        }
Пример #13
0
        public async Task <ViewModelsSolicitudViaticos> ObtenerSolicitudesViaticosporId([FromBody] ViewModelsSolicitudViaticos viewModelsSolicitudViaticos)
        {
            try
            {
                var NuevoviewModelsSolicitudViaticos = new ViewModelsSolicitudViaticos();

                NuevoviewModelsSolicitudViaticos = await db.SolicitudViatico.Select(x => new ViewModelsSolicitudViaticos
                {
                    FechaSolicitud      = x.FechaSolicitud,
                    IdEmpleado          = x.IdEmpleado,
                    FondoFinanciamiento = x.FondoFinanciamiento.Nombre,
                    IdSolicitudViatico  = x.IdSolicitudViatico,
                    FechaLlegada        = x.FechaLlegada,
                    HoraLlegada         = x.HoraLlegada,
                    FechaSalida         = x.FechaSalida,
                    HoraSalida          = x.HoraSalida,
                    Ciudad        = x.Ciudad.Nombre,
                    Provincia     = x.Ciudad.Provincia.Nombre,
                    Pais          = x.Ciudad.Provincia.Pais.Nombre,
                    Servidor      = x.Empleado.Persona.Nombres + " " + x.Empleado.Persona.Nombres,
                    Dependencia   = x.Empleado.Dependencia.Nombre,
                    Descripcion   = x.Descripcion,
                    Observacion   = x.Observacion,
                    Estado        = x.Estado,
                    ValorEstimado = x.ValorEstimado
                }
                                                                                    ).SingleOrDefaultAsync(m => m.IdSolicitudViatico == viewModelsSolicitudViaticos.IdSolicitudViatico);

                /// busca el puesto del empleado
                var modalidadpartida = await db.IndiceOcupacionalModalidadPartida.OrderByDescending(x => x.Fecha).Where(m => m.IdEmpleado == NuevoviewModelsSolicitudViaticos.IdEmpleado)
                                       .Select(y => new ManualPuesto
                {
                    Nombre = y.IndiceOcupacional.ManualPuesto.Nombre
                }
                                               ).FirstOrDefaultAsync();

                //lista los itinerio de la solicitud
                var ListaItinerario = await db.ItinerarioViatico.Where(m => m.IdSolicitudViatico == NuevoviewModelsSolicitudViaticos.IdSolicitudViatico)
                                      .Select(m => new ViewModelsItinerarioViaticos
                {
                    IdItinerarioViatico = m.IdItinerarioViatico,
                    IdCiudadDestino     = m.IdCiudadDestino,
                    IdCiudadOrigen      = m.IdCiudadOrigen,
                    Transporte          = m.TipoTransporte.Descripcion,
                    Ruta        = m.CiudadOrigen.Nombre + "-" + m.CiudadDestino.Nombre,
                    FechaDesde  = m.FechaDesde,
                    HoraSalida  = m.HoraSalida,
                    FechaHasta  = m.FechaHasta,
                    HoraLlegada = m.HoraLlegada,
                })
                                      .ToListAsync();

                NuevoviewModelsSolicitudViaticos.Puesto = modalidadpartida.Nombre;
                NuevoviewModelsSolicitudViaticos.ListaItinerarioViatico = ListaItinerario;

                return(NuevoviewModelsSolicitudViaticos);
            }
            catch (Exception ex)
            {
                return(new ViewModelsSolicitudViaticos());
            }
        }
Пример #14
0
        public async Task <Response> PostSolicitudViatico([FromBody] ViewModelsSolicitudViaticos viewModelsSolicitudViaticos)
        {
            try
            {
                var empleado = await db.Empleado.Where(x => x.IdEmpleado == viewModelsSolicitudViaticos.IdEmpleado).FirstOrDefaultAsync();

                var dias = viewModelsSolicitudViaticos.FechaLlegada.Day - viewModelsSolicitudViaticos.FechaSalida.Day;

                if (empleado.EsJefe == true)
                {
                    if (dias == 0)
                    {
                        dias = 1;
                        viewModelsSolicitudViaticos.ValorEstimado = Convert.ToDecimal(ConstantesViaticos.Jefe) * dias;
                    }
                    viewModelsSolicitudViaticos.ValorEstimado = Convert.ToDecimal(ConstantesViaticos.Jefe) * dias;
                }
                else
                {
                    if (dias == 0)
                    {
                        dias = 1;
                        viewModelsSolicitudViaticos.ValorEstimado = Convert.ToDecimal(ConstantesViaticos.Operativo) * dias;
                    }
                    viewModelsSolicitudViaticos.ValorEstimado = Convert.ToDecimal(ConstantesViaticos.Operativo) * dias;
                }
                var datos = new SolicitudViatico()
                {
                    IdEmpleado             = viewModelsSolicitudViaticos.IdEmpleado,
                    IdCiudad               = viewModelsSolicitudViaticos.IdCiudad,
                    IdConfiguracionViatico = viewModelsSolicitudViaticos.IdConfiguracionViatico,
                    FechaSolicitud         = viewModelsSolicitudViaticos.FechaSolicitud,
                    Descripcion            = viewModelsSolicitudViaticos.Descripcion,
                    ValorEstimado          = viewModelsSolicitudViaticos.ValorEstimado,
                    FechaLlegada           = viewModelsSolicitudViaticos.FechaLlegada,
                    FechaSalida            = viewModelsSolicitudViaticos.FechaSalida,
                    Observacion            = viewModelsSolicitudViaticos.Observacion,
                    Estado                = 0,
                    HoraSalida            = viewModelsSolicitudViaticos.HoraSalida,
                    HoraLlegada           = viewModelsSolicitudViaticos.HoraLlegada,
                    IdFondoFinanciamiento = viewModelsSolicitudViaticos.IdFondoFinanciamiento
                };

                var respuesta = Existe(datos);
                if (!respuesta.IsSuccess)
                {
                    var solicitudViatico = db.SolicitudViatico.Add(datos);

                    var solTipoViatico = new SolicitudTipoViatico
                    {
                        IdSolicitudViatico = solicitudViatico.Entity.IdSolicitudViatico,
                        IdTipoViatico      = 1
                    };
                    db.SolicitudTipoViatico.Add(solTipoViatico);

                    await db.SaveChangesAsync();

                    return(new Response
                    {
                        IsSuccess = true,
                        Message = Mensaje.Satisfactorio,
                        Resultado = solicitudViatico.Entity
                    });
                }

                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.ExisteRegistro
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = "No existe tipo de viaticos",
                });
            }
        }
Пример #15
0
        public async Task <IActionResult> Reliquidacion(int IdSolicitudViatico, string mensaje)
        {
            try
            {
                var listaReliquidacion = new List <ReliquidacionViatico>();

                var sol = new ViewModelsSolicitudViaticos
                {
                    IdSolicitudViatico = IdSolicitudViatico
                };
                if (IdSolicitudViatico.ToString() != null)
                {
                    var respuestaSolicitudViatico = await apiServicio.ObtenerElementoAsync1 <ViewModelsSolicitudViaticos>(sol, new Uri(WebApp.BaseAddress),
                                                                                                                          "api/SolicitudViaticos/ObtenerSolicitudesViaticosporId");


                    var reliquidacionViatico = new ReliquidacionViatico
                    {
                        IdSolicitudViatico = IdSolicitudViatico
                    };
                    listaReliquidacion = await apiServicio.ObtenerElementoAsync1 <List <ReliquidacionViatico> >(reliquidacionViatico, new Uri(WebApp.BaseAddress)
                                                                                                                , "api/ReliquidacionViaticos/ListarReliquidaciones");

                    var valortotaReliquidacion = listaReliquidacion.Sum(x => x.ValorEstimado);

                    ///Informe
                    var informeViatico = new InformeViatico
                    {
                        IdSolicitudViatico = IdSolicitudViatico
                    };

                    var listaintforme = await apiServicio.ObtenerElementoAsync1 <List <InformeViatico> >(informeViatico, new Uri(WebApp.BaseAddress)
                                                                                                         , "api/InformeViaticos/ListarInformeViaticos");

                    ///Valor total de informe
                    var valortotaInforme = listaintforme.Sum(x => x.ValorEstimado);

                    ///total facturas
                    var facturas = new FacturaViatico()
                    {
                        IdSolicitudViatico = IdSolicitudViatico
                    };
                    var listaFacruras = await apiServicio.Listar <FacturaViatico>(facturas, new Uri(WebApp.BaseAddress)
                                                                                  , "api/FacturaViatico/ListarFacturas");

                    ///Valor total de Itinerario
                    var valortotalfacturas = listaFacruras.Sum(x => x.ValorTotalFactura);

                    var valorCalculo        = (respuestaSolicitudViatico.ValorEstimado * 70) / 100;
                    var EstadoReliquidacion = new ViewModelsSolicitudViaticos();
                    if ((listaFacruras.Count() > 0 || listaintforme.Count > 0) && respuestaSolicitudViatico.Estado == 4)
                    {
                        EstadoReliquidacion = calculos(Convert.ToDecimal(valortotaInforme), valortotalfacturas, Convert.ToDecimal(valorCalculo), Convert.ToDecimal(respuestaSolicitudViatico.ValorEstimado));
                    }
                    //HttpContext.Session.SetInt32(Constantes.IdSolicitudtinerario, IdSolicitudViatico);
                    //HttpContext.Session.SetInt32(Constantes.ValorReliquidacion, Convert.ToInt32(ValorReliquidacion.Valor));

                    ViewData["IdPresupuesto"] = new SelectList(await apiServicio.Listar <Presupuesto>(new Uri(WebApp.BaseAddress), "api/Presupuesto/ListarPresupuesto"), "IdPresupuesto", "NumeroPartidaPresupuestaria");
                    respuestaSolicitudViatico.ListaReliquidacionViatico = listaReliquidacion;
                    respuestaSolicitudViatico.Reliquidacion             = EstadoReliquidacion.Reliquidacion;
                    respuestaSolicitudViatico.Valor = EstadoReliquidacion.Valor;
                    InicializarMensaje(mensaje);
                    return(View(respuestaSolicitudViatico));
                }
                return(View());
            }

            catch (Exception exe)
            {
                return(BadRequest());
            }
        }