Пример #1
0
        /// <summary>
        /// Preenche os fundos vinculados à cobertura e ao produto
        /// Considera que o conjunto de fundos do produto é a interseção dos fundos das coberturas
        /// </summary>
        /// <param name="produtoApi">produto (Api)</param>
        /// <param name="produtoCobertura">cobertura (Api)</param>
        /// <param name="cobertura">cobertura (Esb)</param>
        private void PreencherFundos(Model.Produto produtoApi, Cobertura produtoCobertura, Contrato.CoberturaProdutoNegociado cobertura)
        {
            produtoCobertura.Fundos = new List <Model.Fundo>();
            foreach (var fundo in cobertura.Fundos)
            {
                var fundoApi = new Model.Fundo();
                fundoApi.Id = fundo.Id;
                //fundoApi.Cnpj = não existe referência ao cnpj no serviço
                fundoApi.NomeFantasia            = fundo.NomeFantasia;
                fundoApi.PercentualRendaVariavel = (float?)fundo.PercentualRendaVariavel;
                fundoApi.Sigla = fundo.Codigo;

                produtoCobertura.Fundos.Add(fundoApi);
            }

            if (produtoCobertura.Fundos.Count > 0)
            {
                if (produtoApi.Fundos.Count == 0)
                {
                    produtoApi.Fundos.AddRange(produtoCobertura.Fundos);
                }
                else
                {
                    produtoApi.Fundos = produtoApi.Fundos.Intersect(produtoCobertura.Fundos).ToList();
                }
            }
        }
Пример #2
0
        public ActionResult Create(Cobertura Cobertura)
        {
            if (Cobertura.DESCRIPCION == string.Empty
                )
            {
                ModelState.AddModelError(string.Empty, "Error, Se debe llenar todo los campos");
                return(View(Cobertura));
            }
            if (Cobertura.DESCRIPCION == null
                )
            {
                ModelState.AddModelError(string.Empty, "Error, Se debe llenar todo los campos");
                return(View(Cobertura));
            }
            using (var API = new HttpClient())
            {
                API.BaseAddress = new Uri(Baseurl);

                var postTask = API.PostAsJsonAsync <Cobertura>("Coberturas", Cobertura);
                postTask.Wait();
                var result = postTask.Result;
                if (result.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Coberturas"));
                }
            }

            ModelState.AddModelError(string.Empty, "Error, Contate al administrador");
            return(View(Cobertura));
        }
Пример #3
0
        /// <summary>
        /// Preenche os campos de antecipação (idade e tempo) da cobertura e do produto
        /// Considera que o conjunto valores de antecipação do produto é a interseção dos valores de antecipação das coberturas
        /// </summary>
        /// <param name="produtoApi">produto (Api)</param>
        /// <param name="produtoCobertura">cobertura (Api)</param>
        /// <param name="cobertura">cobertura (Esb)</param>
        private void PreencherAntecipacao(Model.Produto produtoApi, Cobertura produtoCobertura, Contrato.CoberturaProdutoNegociado cobertura)
        {
            produtoCobertura.IdadeAntecipacao = new List <int>();
            produtoCobertura.TempoAntecipacao = new List <int>();
            if (cobertura.AdiantamentoContribuicao != null && cobertura.AdiantamentoContribuicao.Count > 0)
            {
                var adiantamento = cobertura.AdiantamentoContribuicao.FirstOrDefault();
                produtoCobertura.IdadeAntecipacao = adiantamento?.Idade.Select(i => (int)i).ToList();
                produtoCobertura.TempoAntecipacao = adiantamento?.Prazo.Select(p => (int)p).ToList();

                if (produtoCobertura.IdadeAntecipacao != null && produtoCobertura.IdadeAntecipacao.Count > 0)
                {
                    if (produtoApi.IdadeAntecipacao.Count == 0)
                    {
                        produtoApi.IdadeAntecipacao.AddRange(produtoCobertura.IdadeAntecipacao);
                    }
                    else
                    {
                        produtoApi.IdadeAntecipacao = produtoApi.IdadeAntecipacao.Intersect(produtoCobertura.IdadeAntecipacao).ToList();
                    }
                }

                if (produtoCobertura.TempoAntecipacao != null && produtoCobertura.TempoAntecipacao.Count > 0)
                {
                    if (produtoApi.TempoAntecipacao.Count == 0)
                    {
                        produtoApi.TempoAntecipacao.AddRange(produtoCobertura.TempoAntecipacao);
                    }
                    else
                    {
                        produtoApi.TempoAntecipacao = produtoApi.TempoAntecipacao.Intersect(produtoCobertura.TempoAntecipacao).ToList();
                    }
                }
            }
        }
        public int EditarCobertura(Cobertura cob)
        {
            try
            {
                SqlConnection cnx = cn.conectar(); //Conexion
                cm = new SqlCommand("Cobertura", cnx);
                cm.Parameters.AddWithValue("b", 4);
                cm.Parameters.AddWithValue("@idcobertura", ""); //del procedimiento
                cm.Parameters.AddWithValue("@descripcion", cob);
                cm.Parameters.AddWithValue("@sumaAsegurada", cob);
                cm.Parameters.AddWithValue("@idseguros", "");

                cm.CommandType = CommandType.StoredProcedure;
                cnx.Open();
                cm.ExecuteNonQuery();
                indicador = 1;
            }
            catch (Exception e)
            {
                e.Message.ToString();
                indicador = 0;
            }
            finally
            {
                cm.Connection.Close();
            }
            return(indicador);
        }
        public int insertarCobertura(Cobertura cobr)
        {
            try
            {
                SqlConnection cnx = cn.conectar();              //Conexion

                cm = new SqlCommand("Pr_Cobertura", cnx);       //Nombre del procedimiento
                cm.Parameters.AddWithValue("@b", 1);            //Valores que toman los parametros
                cm.Parameters.AddWithValue("@idcobertura", ""); //del procedimiento
                cm.Parameters.AddWithValue("@descripcion", c.descripcion);
                cm.Parameters.AddWithValue("@sumaAsegurada", c.sumaAseguradora);
                cm.Parameters.AddWithValue("@idseguros", c.idseguros);



                cm.CommandType = CommandType.StoredProcedure; //Tipo de comando ejecutado
                cnx.Open();                                   //Abrir conexion de BD
                cm.ExecuteNonQuery();                         //Ejecucion de consulta
                indicador = 1;                                //Valor del indicador
            }
            catch (Exception e)
            {
                e.Message.ToString(); //Mostrar mensaje en caso error
                indicador = 0;
            }
            finally
            {
                cm.Connection.Close(); //Cierre de conexion
            }
            return(indicador);
        }
Пример #6
0
        public ActionResult DeleteConfirmed(int id)
        {
            Cobertura cobertura = db.Cobertura.Find(id);

            db.Cobertura.Remove(cobertura);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #7
0
 public JsonResult ObterCobertura(Cobertura cobertura)
 {
     if (cobertura.Id == 0)
     {
         return(null);
     }
     cobertura = db.Cobertura.Find(cobertura.Id);
     return(Json(cobertura.DescricaoCobertura, JsonRequestBehavior.AllowGet));
 }
Пример #8
0
 /// <summary>
 /// Preenche as causas da cobertura
 /// </summary>
 /// <param name="produtoCobertura">cobertura (Api)</param>
 /// <param name="cobertura">cobertura (Esb)</param>
 /// <param name="limites">limites operacionais</param>
 private void PreencherCausas(Cobertura produtoCobertura, Contrato.CoberturaProdutoNegociado cobertura, List <Contrato.LimiteOperacionalPorFaixa> limites)
 {
     if (cobertura.CoberturaId != null)
     {
         produtoCobertura.Causas = limites.Where(l => l.CoberturasIds.Contains(cobertura.CoberturaId.Value))
                                   .GroupBy(l => l.TipoGrupoCobertura).Select(g => new Causa {
             Descricao = g.Key
         }).ToList();
     }
 }
Пример #9
0
 public ActionResult Edit([Bind(Include = "Id,NomeCobertura,Tipo,DescricaoCobertura")] Cobertura cobertura)
 {
     if (ModelState.IsValid)
     {
         db.Entry(cobertura).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(cobertura));
 }
Пример #10
0
        public async Task <bool> AddAsync(Cobertura cobertura)
        {
            Cobertura = cobertura;

            _context.Cobertura.Add(Cobertura);

            await _context.SaveChangesAsync();

            return(true);
        }
Пример #11
0
        /// <summary>
        /// Preenche o tipo de cobertura agrupado da Api
        /// </summary>
        /// <param name="produtoCobertura">cobertura (Api)</param>
        /// <param name="cobertura">cobertura (Esb)</param>
        private void PreencherTipoCobertura(Cobertura produtoCobertura, Contrato.CoberturaProdutoNegociado cobertura)
        {
            TipoCoberturaAgrupadoEnum?tipoCobertura = ObterTipoCobertura(cobertura);

            if (tipoCobertura != null)
            {
                produtoCobertura.Tipo           = new TipoCobertura();
                produtoCobertura.Tipo.Id        = (int?)tipoCobertura.Value;
                produtoCobertura.Tipo.Descricao = ((TipoCoberturaAgrupadoEnum)produtoCobertura.Tipo.Id).GetDescription();
            }
        }
Пример #12
0
 public ActionResult Edit([Bind(Include = "IdCobertura,Nombre,FK_IdProducto,Descripcion")] Cobertura cobertura)
 {
     if (ModelState.IsValid)
     {
         db.Entry(cobertura).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.FK_IdProducto = new SelectList(db.Producto, "IdProducto", "Nombre", cobertura.FK_IdProducto);
     return(View(cobertura));
 }
Пример #13
0
        public ActionResult Create([Bind(Include = "Id,NomeCobertura,DescricaoCobertura")] Cobertura cobertura)
        {
            if (ModelState.IsValid)
            {
                db.Cobertura.Add(cobertura);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(cobertura));
        }
Пример #14
0
        public async Task <IActionResult> PostCobertura([FromBody] Cobertura cobertura)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.Cobertura.Add(cobertura);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetCobertura", new { id = cobertura.Id }, cobertura));
        }
Пример #15
0
        // GET: Coberturas/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Cobertura cobertura = db.Cobertura.Find(id);

            if (cobertura == null)
            {
                return(HttpNotFound());
            }
            return(View(cobertura));
        }
Пример #16
0
        // GET: Coberturas/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Cobertura cobertura = db.Cobertura.Find(id);

            if (cobertura == null)
            {
                return(HttpNotFound());
            }
            ViewBag.FK_IdProducto = new SelectList(db.Producto, "IdProducto", "Nombre", cobertura.FK_IdProducto);
            return(View(cobertura));
        }
Пример #17
0
 /// <summary>
 /// Preenche as UFs recusadas da cobertura e do produto
 /// Considera que o conjunto de UFs recusadas do produto é a união das UFs recusadas das coberturas
 /// </summary>
 /// <param name="produtoApi">produto (Api)</param>
 /// <param name="produtoCobertura">cobertura (Api)</param>
 /// <param name="cobertura">cobertura (Esb)</param>
 private void PreencherUFsRecusadas(Model.Produto produtoApi, Cobertura produtoCobertura, Contrato.CoberturaProdutoNegociado cobertura)
 {
     produtoCobertura.UFsRecusadas = cobertura.UFsRecusadasIds.Select(uf => uf).ToList();
     if (produtoCobertura.UFsRecusadas.Count > 0)
     {
         if (produtoApi.UFsRecusadas.Count == 0)
         {
             produtoApi.UFsRecusadas.AddRange(produtoCobertura.UFsRecusadas);
         }
         else
         {
             produtoApi.UFsRecusadas = produtoApi.UFsRecusadas.Union(produtoCobertura.UFsRecusadas).ToList();
         }
     }
 }
Пример #18
0
        public async Task <bool> UpdateAsync(int id, Cobertura cobertura)
        {
            Cobertura = _context.Cobertura.SingleOrDefault(x => x.Id == id);

            if (Cobertura == null)
            {
                return(false);
            }

            Cobertura.Descricao = cobertura.Descricao;

            await _context.SaveChangesAsync();

            return(true);
        }
Пример #19
0
        private void CalcularRepasse(
            DateTime dataNascimentoTitular,
            Cobertura cobertura,
            Model.Produto produto,
            ModeloPropostaCompleto modeloProposta,
            Dictionary <int, decimal> valoresRepasse,
            List <Cobertura> coberturasNaoExibidas)
        {
            if (cobertura != null && cobertura.EhServico && cobertura.ValorServicoSomadoNaCoberturaDeReferencia)
            {
                decimal valorRepasse  = 0;
                int     idItemProduto = 0;
                if (cobertura.ValoresRepassadoAoCliente != null)
                {
                    valorRepasse = cobertura.ValoresRepassadoAoCliente.Where(
                        c => (c.TipoRepasseCliente == ContratosEnum.TipoRepasseClienteEnum.PorIdade &&
                              dataNascimentoTitular.Idade() >= c.IdadeInicial &&
                              dataNascimentoTitular.Idade() <= c.IdadeFinal) ||
                        (c.TipoRepasseCliente == ContratosEnum.TipoRepasseClienteEnum.Fixo))
                                   .Sum(x => x.Valor);
                }

                if (cobertura.ValorServicoSomadoNaCoberturaDeReferencia && produto.ReferenciaCoberturaId.HasValue)
                {
                    idItemProduto = produto.Coberturas.Find(x => x.IdCoberturaEsim.GetValueOrDefault() == produto.ReferenciaCoberturaId.Value).IdEsim.GetValueOrDefault();
                }
                else
                {
                    idItemProduto = cobertura.IdEsim.GetValueOrDefault();
                }

                if (idItemProduto != 0 && valorRepasse != 0)
                {
                    if (valoresRepasse.ContainsKey(idItemProduto))
                    {
                        valorRepasse += valoresRepasse[idItemProduto];
                        valoresRepasse.Remove(idItemProduto);
                    }

                    valoresRepasse.Add(idItemProduto, valorRepasse);
                }

                if (cobertura.EhServico && !cobertura.ExibeServicoNaListaDeCobertura)
                {
                    coberturasNaoExibidas.Add(cobertura);
                }
            }
        }
Пример #20
0
        private void ValidarCobertura(Cobertura cobertura, Model.Produto produto)
        {
            if (cobertura.CapitalSegurado == 0 || cobertura.Premio == 0)
            {
                return;
            }

            var s = string.Format("IdItemProduto: {0} | Produto: {1}", cobertura.IdEsim, produto.IdEsim);

            var obs = ObservacaoHelper.PreencherObservacao(id: 5,
                                                           origem: typeof(ContratacaoCobertura).ToString(),
                                                           itens: new[] { s });

            Mensagens.Add(obs);
            throw new ProdutoException(obs);
        }
Пример #21
0
        public ActionResult Delete(Cobertura Cobertura, int id)
        {
            using (var API = new HttpClient())
            {
                API.BaseAddress = new Uri(Baseurl);
                var responstask = API.DeleteAsync("CoberturaS/" + id + "");
                responstask.Wait();
                var result = responstask.Result;
                if (result.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Coberturas"));
                }
            }

            return(View(Cobertura));
        }
Пример #22
0
        public ActionResult Edit(Cobertura Cobertura)
        {
            using (var API = new HttpClient())
            {
                API.BaseAddress = new Uri(Baseurl);
                var responstask = API.PutAsJsonAsync("CoberturaS/" + Cobertura.IDCOBERTURA + "", Cobertura);
                responstask.Wait();
                var result = responstask.Result;
                if (result.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Coberturas"));
                }
            }

            return(View(Cobertura));
        }
        public async Task <Response> Post([FromBody] Cobertura coberturaRequest)
        {
            coberturaRequest.Descripcion = Utils.Utilidades.Formato(coberturaRequest.Descripcion);

            bool continuar = await new Repositorio.ConsultarCoberturas().ValidarCobertura(coberturaRequest.Descripcion);

            if (continuar)
            {
                return(new Response()
                {
                    IdError = 1,
                    MessageError = string.Format("Ya existe la cobertura con nombre: {0}", coberturaRequest.Descripcion)
                });
            }

            var response  = new Response();
            int resultado = 0;

            try
            {
                using (var contexto = new ContextDb())
                {
                    var coberturas = new Coberturas();
                    coberturas.Descripcion       = coberturaRequest.Descripcion;
                    coberturas.FechaModificacion = DateTime.Now;
                    contexto.Coberturas.Add(coberturas);
                    resultado = await contexto.SaveChangesAsync();
                }

                if (resultado > 0)
                {
                    response.IdError = 0;
                }
                else
                {
                    response.IdError      = 1;
                    response.MessageError = "Ocurrio un error al crear la cobertura";
                }
            }
            catch (Exception error)
            {
                response.IdError      = 2;
                response.MessageError = error.Message;
            }

            return(response);
        }
Пример #24
0
        public async Task <IHttpActionResult> GetCobertura(int id)
        {
            Cobertura c = await db.Coberturas.FindAsync(id);

            if (c == null)
            {
                return(NotFound());
            }

            DTO_Cobertura cobertura = new DTO_Cobertura()
            {
                Id            = c.Id,
                Descripcion   = c.Descripcion,
                FechaCreacion = c.FechaCreacion
            };

            return(Ok(cobertura));
        }
        public async Task <IActionResult> Create([Bind("Id,Descripcion,FechaModificacion,PlanId")] Cobertura cobertura)
        {
            var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());

            XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));

            var logger = LogManager.GetLogger(typeof(ClientesController));

            logger.Info("Se Agrego la Cobertura :" + cobertura.Descripcion.ToString());

            if (ModelState.IsValid)
            {
                _context.Add(cobertura);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["PlanId"] = new SelectList(_context.Plan, "Id", "Id", cobertura.PlanId);
            return(View(cobertura));
        }
Пример #26
0
        /// <summary>
        /// Preenche os prazos de cobertura da cobertura e do produto
        /// Considera que o conjunto de prazos de cobertura do produto é a interseção dos prazos de cobertura das coberturas
        /// </summary>
        /// <param name="produtoApi">produto (Api)</param>
        /// <param name="produtoCobertura">cobertura (Api)</param>
        /// <param name="cobertura">cobertura (Esb)</param>
        private void PreencherPrazoCerto(Model.Produto produtoApi, Cobertura produtoCobertura, Contrato.CoberturaProdutoNegociado cobertura)
        {
            produtoCobertura.PrazoCerto = new List <int>();
            if (cobertura.PrazoDeCobertura != null && cobertura.PrazoDeCobertura.Count > 0)
            {
                produtoCobertura.PrazoCerto = cobertura.PrazoDeCobertura.Select(p => (int)p).ToList(); /*verificar*/

                if (produtoCobertura.PrazoCerto.Count > 0)
                {
                    if (produtoApi.PrazoCerto.Count == 0)
                    {
                        produtoApi.PrazoCerto.AddRange(produtoCobertura.PrazoCerto);
                    }
                    else
                    {
                        produtoApi.PrazoCerto = produtoApi.PrazoCerto.Intersect(produtoCobertura.PrazoCerto).ToList();
                    }
                }
            }
        }
Пример #27
0
        /// <summary>
        /// Preenche os prazos de decréscimo da cobertura e do produto
        /// Considera que o conjunto de prazos de decréscimo do produto é a interseção dos prazos de decréscimo das coberturas
        /// </summary>
        /// <param name="produtoApi">produto (Api)</param>
        /// <param name="produtoCobertura">cobertura (Api)</param>
        /// <param name="cobertura">cobertura (Esb)</param>
        private void PreencherPrazoDecrescimo(Model.Produto produtoApi, Cobertura produtoCobertura, Contrato.CoberturaProdutoNegociado cobertura)
        {
            produtoCobertura.PrazoDecrescimo = new List <int>();
            if (cobertura.DecrescimoContribuicao != null && cobertura.DecrescimoContribuicao.Count > 0)
            {
                produtoCobertura.PrazoDecrescimo = cobertura.DecrescimoContribuicao.GroupBy(d => d.Prazo).Select(g => (int)g.Key).ToList();

                if (produtoCobertura.PrazoDecrescimo.Count > 0)
                {
                    if (produtoApi.PrazoDecrescimo.Count == 0)
                    {
                        produtoApi.PrazoDecrescimo.AddRange(produtoCobertura.PrazoDecrescimo);
                    }
                    else
                    {
                        produtoApi.PrazoDecrescimo = produtoApi.PrazoDecrescimo.Intersect(produtoCobertura.PrazoDecrescimo).ToList();
                    }
                }
            }
        }
Пример #28
0
        public async Task <IHttpActionResult> PostCobertura(DTO_Cobertura cobertura)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Cobertura nuevaCobertura = new Cobertura()
            {
                Descripcion   = cobertura.Descripcion,
                FechaCreacion = DateTime.Now
            };

            db.Coberturas.Add(nuevaCobertura);
            await db.SaveChangesAsync();

            cobertura.Id = nuevaCobertura.Id;

            return(CreatedAtRoute("DefaultApi", new { id = cobertura.Id }, cobertura));
        }
Пример #29
0
        public ActionResult Edit([Bind(Include = "Id,Descripcion")] Cobertura cobertura)

        {
            if (ModelState.IsValid)
            {
                if (db.Coberturas.FirstOrDefault(s => s.Descripcion == cobertura.Descripcion && s.Id != cobertura.Id) != null)
                {
                    ModelState.AddModelError("Descripcion", "La cobertura que desea ingresar ya existe");
                }
                else
                {
                    db.Entry(cobertura).State = EntityState.Modified;

                    db.SaveChanges();

                    return(RedirectToAction("Index"));
                }
            }

            return(View(cobertura));
        }
Пример #30
0
        public ActionResult Edit(int id)
        {
            Cobertura Cobertura = null;

            using (var API = new HttpClient())
            {
                API.BaseAddress = new Uri(Baseurl);
                var responstask = API.GetAsync("CoberturaS/" + id.ToString());
                responstask.Wait();

                var result = responstask.Result;
                if (result.IsSuccessStatusCode)
                {
                    var readTask = result.Content.ReadAsAsync <Cobertura>();
                    readTask.Wait();
                    Cobertura = readTask.Result;
                }
            }

            return(View(Cobertura));
        }
        public Vida CotizaVidaCPM(string Credito, string Plazo, string AnoCredito, string FechaInicio, string TasaInteresAnual)
        {
            Vida cotizacion = new Vida();
            List<Saldo> saldos = new List<Saldo>();
             
            double tarVida, tasaInteresAnual, tasaInteresMensual, mensualidad, totalIntereses;
            DateTime fechaActual, fechaPasada;

            int i;

            double tmpArriba, tmpAbajo;

            try
            {
                cotizacion.CreditoInicial = Convert.ToDouble(Credito).ToString("$#,##0.00");

                tarVida = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["TarifaVida"].ToString());

                tasaInteresAnual=Convert.ToDouble(TasaInteresAnual);
                tasaInteresAnual = (tasaInteresAnual / 100);

                tasaInteresMensual= (Convert.ToDouble(TasaInteresAnual)/12);
                tasaInteresMensual = (tasaInteresMensual / 100);

                tmpArriba = ((tasaInteresMensual) * Math.Pow(1 + tasaInteresMensual, Convert.ToDouble(Plazo)));
                tmpAbajo = ((Math.Pow(1 + tasaInteresMensual, Convert.ToDouble(Plazo))) - 1);

                mensualidad = (Convert.ToDouble(Credito) * (tmpArriba / tmpAbajo));

                double saldoAnterior = Convert.ToDouble(Credito);

                fechaPasada=Convert.ToDateTime(FechaInicio);

                for (i = 0; i <= (Convert.ToInt32(Plazo)); i++)
                {
                    double saldoInsoluto, cuotaVida, interes, capital;

                    int dias;
                    TimeSpan tiempo;
                    Saldo tmp = new Saldo();

                    if (i == 0)
                    {
                        saldoInsoluto = saldoAnterior;
                        cuotaVida = (saldoInsoluto * tarVida);
                        tmp.FechaPago = fechaPasada.ToString("dd/MM/yyyy");
                        tmp.DiasTranscurridos = "0";
                        tmp.Periodo = i;
                        tmp.Pago = mensualidad;
                        tmp.Capital = 0.00;
                        tmp.Interes = 0.00;
                        tmp.SaldoInsoluto = saldoInsoluto;
                        tmp.CuotaVida = cuotaVida;
                    }
                    else
                    {
                        fechaActual = fechaPasada.AddMonths(1);
                        tiempo = fechaActual.Subtract(fechaPasada);
                        dias = tiempo.Days;

                        if (i == Convert.ToInt32(Plazo))
                        {
                            capital = saldoAnterior;
                            interes = ((saldoAnterior * tasaInteresAnual * dias) / 360);
                            tmp.Periodo = i;
                            tmp.FechaPago = fechaActual.ToString("dd/MM/yyyy");
                            tmp.DiasTranscurridos = Convert.ToString(dias);
                            tmp.Pago = capital + interes;
                            tmp.Capital = capital;
                            tmp.Interes = interes;
                            tmp.SaldoInsoluto = 0.00;
                            tmp.CuotaVida = 0.00;
                        }
                        else
                        {
                            interes = ((saldoAnterior * tasaInteresAnual * dias) / 360);
                            capital = (mensualidad - interes);
                            saldoInsoluto = (saldoAnterior - capital);
                            cuotaVida = (saldoInsoluto * tarVida);

                            tmp.Periodo = i;
                            tmp.Pago = mensualidad;
                            tmp.FechaPago = fechaActual.ToString("dd/MM/yyyy");
                            tmp.DiasTranscurridos = Convert.ToString(dias);
                            tmp.Capital = capital;
                            tmp.Interes = interes;
                            tmp.SaldoInsoluto = saldoInsoluto;
                            tmp.CuotaVida = cuotaVida;

                            saldoAnterior = saldoInsoluto;
                        }
                        fechaPasada = fechaActual;                        
                    }                    
                    saldos.Add(tmp);   
                }         

                cotizacion.HTMLString = GeneraCorridaHTML(saldos);

                int mesInicio, mesFin;
                int noMeses;

                noMeses = ((Convert.ToInt32(AnoCredito) + 1) * 12);

                mesFin = noMeses - 1;
                mesInicio = noMeses - 12;

                double primaTotal, pagoMensual;

                primaTotal = 0.00;
                pagoMensual = 0.00;

                for (i = mesInicio; i <= mesFin; i++)
                {
                    Saldo saldo;

                    saldo = saldos.ElementAt(i);
                    primaTotal += saldo.CuotaVida;

                    saldo.Interes = Math.Round(saldo.Interes, 2);
                    saldo.CuotaVida = Math.Round(saldo.CuotaVida, 2);
                    saldo.Pago = Math.Round(saldo.Pago, 2);
                    saldo.SaldoInsoluto = Math.Round(saldo.SaldoInsoluto, 2);
                    saldo.Capital = Math.Round(saldo.Capital, 2);

                    cotizacion.saldos.Add(saldo);
                }

                pagoMensual = ((primaTotal / 12));

                cotizacion.PrimaTotal = Convert.ToString(primaTotal);
                cotizacion.PagoMensual = Convert.ToString(pagoMensual);

                Cobertura tmp1 = new Cobertura();
                Cobertura tmp2 = new Cobertura();
                Cobertura tmp3 = new Cobertura();
                Cobertura tmp4 = new Cobertura();

                tmp1.Id = "1";
                tmp1.Descripcion = "COBERTURA BASICA";
                tmp1.SumaAseg = "SALDO INSOLUTO";
                cotizacion.coberturas.Add(tmp1);

                tmp2.Id = "2";
                tmp2.Descripcion = "INVALIDEZ TOTAL Y PERMANENTE";
                tmp2.SumaAseg = "AMPARADA";
                cotizacion.coberturas.Add(tmp2);

                tmp3.Id = "3";
                tmp3.Descripcion = "COBERTURA POR DESEMPLEO";
                tmp3.SumaAseg = "AMPARADA";
                cotizacion.coberturas.Add(tmp3);

                tmp4.Id = "4";
                tmp4.Descripcion = "FALLECIMIENTO DEL COACREDITADO";
                tmp4.SumaAseg = "AMPARADA";
                cotizacion.coberturas.Add(tmp4);
            }

            catch (Exception ex)
            {
                cotizacion.ErrorBool = true;
                cotizacion.ErrorDesc = ex.Message;
            }

            return cotizacion;
        }
        public Vivienda CotizaViviendaPRYBE(string SumaAsegurada, string CodigoPostal)
        {
            Vivienda cotizacion = new Vivienda();

            double tarZonaTerremoto, tarZonaFHM, tarCobIncendio, tarCobRC, tarifaFinal, sumaAseg, primaNeta, primaTotal, primerPago, pagoSub, iva, derPoliza;
            string idZonaTerremoto, idZonaFHM;
            Zona zona = new Zona();

            try
            {
                zona = RegresaZona(CodigoPostal);

                idZonaTerremoto = zona.Terremoto;
                idZonaFHM = zona.FHM;

                iva = 1.16;
                derPoliza = 100.00;

                tarZonaTerremoto = 0.00;
                tarZonaFHM = 0.00;

                sumaAseg = Convert.ToDouble(SumaAsegurada);

                if (idZonaFHM == "" || idZonaTerremoto == "")
                {
                    cotizacion.ErrorBool = true;
                    cotizacion.ErrorDesc = "No se encontro la zona de riesgo para el Código Postal capturado";
                }
                else
                {
                    switch (idZonaTerremoto)
                    {
                        case "A":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "B":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "B1":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "C":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "D":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "E":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "F":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "G":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "H":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "H1":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "I":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                        case "J":
                            tarZonaTerremoto = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaTerremoto].ToString());
                            break;
                    }

                    switch (idZonaFHM)
                    {
                        case "A1PY":
                            tarZonaFHM = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaFHM].ToString());
                            break;
                        case "A1ZG":
                            tarZonaFHM = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaFHM].ToString());
                            break;
                        case "A1ZI":
                            tarZonaFHM = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaFHM].ToString());
                            break;
                        case "A1ZP":
                            tarZonaFHM = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaFHM].ToString());
                            break;
                        case "A2":
                            tarZonaFHM = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaFHM].ToString());
                            break;
                        case "A3":
                            tarZonaFHM = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings[idZonaFHM].ToString());
                            break;
                    }

                    tarCobIncendio = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["CobIncendio"].ToString());
                    tarCobRC = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["CobRC"].ToString());

                    tarifaFinal = tarZonaTerremoto + tarZonaFHM + tarCobIncendio + tarCobRC;

                    primaNeta = (sumaAseg * (tarifaFinal / 1000));
                    pagoSub = (primaNeta / 12) * iva;
                    primerPago = (pagoSub) + (derPoliza * iva);

                    cotizacion.PrimaNeta = Convert.ToString(primaNeta);
                    cotizacion.PrimerPago = Convert.ToString(primerPago);
                    cotizacion.PagoSubsecuente = Convert.ToString(pagoSub);
                    cotizacion.PrimaTotal = Convert.ToString(primaNeta * iva);

                    Cobertura tmp1 = new Cobertura();
                    Cobertura tmp2 = new Cobertura();
                    Cobertura tmp3 = new Cobertura();
                    Cobertura tmp4 = new Cobertura();
                    Cobertura tmp5 = new Cobertura();
                    Cobertura tmp6 = new Cobertura();

                    tmp1.Id = "1";
                    tmp1.Descripcion = "TODO RIESGO INCENDIO EDIFICIO";
                    tmp1.SumaAseg = Convert.ToString(sumaAseg);
                    cotizacion.coberturas.Add(tmp1);

                    tmp2.Id = "2";
                    tmp2.Descripcion = "GASTOS EXTRAS";
                    tmp2.SumaAseg = Convert.ToString(sumaAseg * 0.10);
                    cotizacion.coberturas.Add(tmp2);

                    tmp3.Id = "3";
                    tmp3.Descripcion = "REMOCION DE ESCOMBROS";
                    tmp3.SumaAseg = Convert.ToString(sumaAseg * 0.10);
                    cotizacion.coberturas.Add(tmp3);

                    tmp4.Id = "4";
                    tmp4.Descripcion = "FENOMENOS HIDROMETEOROLOGICOS";
                    tmp4.SumaAseg = "AMPARADA";
                    cotizacion.coberturas.Add(tmp4);

                    tmp5.Id = "5";
                    tmp5.Descripcion = "TERREMOTO Y/O ERUPCION VOLCANICA";
                    tmp5.SumaAseg = "AMPARADA";
                    cotizacion.coberturas.Add(tmp5);

                    tmp6.Id = "6";
                    tmp6.Descripcion = "RESPONSABILIDAD CIVIL FAMILIAR";
                    tmp6.SumaAseg = "1,500,000.00";
                    cotizacion.coberturas.Add(tmp6);

                }
            }

            catch (Exception ex)
            {
                cotizacion.ErrorBool = true;
                cotizacion.ErrorDesc = ex.Message;
            }

            return cotizacion;
        }
        public Vida CotizaVidaPRYBE(string Credito, string Plazo, string AnoCredito)
        {
            Vida cotizacion = new Vida();            
            List<Saldo> saldos = new List<Saldo>();

            double tarVida, tasaInteres, mensualidad;

            int i;

            double tmpArriba, tmpAbajo;

            try
            {

                tarVida = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["TarifaVida"].ToString());
                tasaInteres = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["InteresVida"].ToString());
                tasaInteres = (tasaInteres / 100);

                tmpArriba = ((tasaInteres) * Math.Pow(1 + tasaInteres, Convert.ToDouble(Plazo)));
                tmpAbajo = ((Math.Pow(1 + tasaInteres, Convert.ToDouble(Plazo))) - 1);

                mensualidad = (Convert.ToDouble(Credito) * (tmpArriba / tmpAbajo));

                double saldoAnterior = Convert.ToDouble(Credito);

                for (i = 0; i <= (Convert.ToInt32(Plazo)); i++)
                {
                    double saldoInsoluto, cuotaVida, interes, capital;
                    Saldo tmp = new Saldo();

                    if (i == 0)
                    {
                        saldoInsoluto = saldoAnterior;
                        cuotaVida = (saldoInsoluto * tarVida);

                        tmp.Periodo = i;
                        tmp.Pago = mensualidad;
                        tmp.Capital = 0.00;
                        tmp.Interes = 0.00;
                        tmp.SaldoInsoluto = saldoInsoluto;
                        tmp.CuotaVida = cuotaVida;
                    }
                    else
                    {

                        interes = (saldoAnterior * tasaInteres);
                        capital = (mensualidad - interes);
                        saldoInsoluto = (saldoAnterior - capital);
                        cuotaVida = (saldoInsoluto * tarVida);

                        tmp.Periodo = i;
                        tmp.Pago = mensualidad;
                        tmp.Capital = capital;
                        tmp.Interes = interes;
                        tmp.SaldoInsoluto = saldoInsoluto;
                        tmp.CuotaVida = cuotaVida;
                    }
                    saldos.Add(tmp);

                    saldoAnterior = saldoInsoluto;
                }
                               

                cotizacion.HTMLString = GeneraCorridaHTML(saldos);

                int mesInicio, mesFin;
                int noMeses;

                noMeses = ((Convert.ToInt32(AnoCredito) + 1) * 12);

                mesFin = noMeses - 1;
                mesInicio = noMeses - 12;

                double primaTotal, pagoMensual;

                primaTotal = 0.00;
                pagoMensual = 0.00;

                for (i = mesInicio; i <= mesFin; i++)
                {
                    Saldo saldo;

                    saldo = saldos.ElementAt(i);
                    primaTotal += saldo.CuotaVida;

                    saldo.Interes = Math.Round(saldo.Interes, 2);
                    saldo.CuotaVida = Math.Round(saldo.CuotaVida, 2);
                    saldo.Pago = Math.Round(saldo.Pago, 2);
                    saldo.SaldoInsoluto = Math.Round(saldo.SaldoInsoluto, 2);
                    saldo.Capital = Math.Round(saldo.Capital, 2);

                    cotizacion.saldos.Add(saldo);
                }

                pagoMensual = ((primaTotal / 12));

                cotizacion.PrimaTotal = Convert.ToString(primaTotal);
                cotizacion.PagoMensual = Convert.ToString(pagoMensual);

                Cobertura tmp1 = new Cobertura();
                Cobertura tmp2 = new Cobertura();
                Cobertura tmp3 = new Cobertura();
                Cobertura tmp4 = new Cobertura();

                tmp1.Id = "1";
                tmp1.Descripcion = "COBERTURA BASICA";
                tmp1.SumaAseg = "SALDO INSOLUTO";
                cotizacion.coberturas.Add(tmp1);

                tmp2.Id = "2";
                tmp2.Descripcion = "INVALIDEZ TOTAL Y PERMANENTE";
                tmp2.SumaAseg = "AMPARADA";
                cotizacion.coberturas.Add(tmp2);

                tmp3.Id = "3";
                tmp3.Descripcion = "COBERTURA POR DESEMPLEO";
                tmp3.SumaAseg = "AMPARADA";
                cotizacion.coberturas.Add(tmp3);

                tmp4.Id = "4";
                tmp4.Descripcion = "FALLECIMIENTO DEL COACREDITADO";
                tmp4.SumaAseg = "AMPARADA";
                cotizacion.coberturas.Add(tmp4);
            }
                 
            catch (Exception ex)
            {
                cotizacion.ErrorBool = true;
                cotizacion.ErrorDesc = ex.Message;
            }

            return cotizacion;
        }