public void RegistraCliente()
        {
            iView.Comanda.Value = string.Empty;
            String  ruCliente = iView.Argumento.Value;
            Persona pCliente  = new Persona(dataConnectionString);
            Persona pMatriz   = new Persona(dataConnectionString);

            iView.SinLineaCliente.Text = string.Empty;

            if (0 == pCliente.Obtener(ruCliente))
            {
                iView.RutCliente.Text = Global.ConvertirNroRut(ruCliente);

                iView.NombreCliente.Text = pCliente.NombreEstructurado;
                iView.NombreCliente.Attributes.Add("data-tag", pCliente.Numero);

                Limite llimLimite;
                llimLimite = new Limite(dataConnectionString);
                int liRespuesta = 0;
                liRespuesta = llimLimite.ObtenerLineaCliente(pCliente.Numero);
                if (liRespuesta != 0)
                {
                    //MessageBox.Show("Está por generar una Simulación para un Cliente Nuevo o Sin Línea " + fCliente.NombreEstructurado, "ALERTA!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    pageComm.Add("linea", "Está por generar una Simulación para un Cliente Nuevo o Sin Línea " + pCliente.NombreEstructurado);
                    iView.SinLineaCliente.Text = "<-sin linea";
                    // bOk = EnviaMensajeMail("AVISO", "CLE -> Aviso Vencimiento Línea", MsgVig)
                    // Exit Sub
                }
                //
                // test lineas
                bool   bOk;
                string MsgVig = "";
                MsgVig = pCliente.TieneLineasVigentes();
                if (!("OK" == MsgVig))
                {
                    pageComm.Add("lineas", "Está por generar una Simulación para un Cliente Nuevo o Sin Línea: " + pCliente.NombreEstructurado);
                    iView.SinLineaCliente.Text = "<-sin lineas";
                    //bOk = modMailing.EnviaMensajeMail("AVISO", "CLE -> Aviso Vencimiento Línea", MsgVig);
                    // MsgBox "Testeo Lineas Vigencia: " & MsgVig
                    // ShellExecute 0, vbNullString, "mailto: " & "?subject=Aviso&body=" & MsgVig, vbNullString, vbNullString, vbNormalFocus
                }
                Pais pPais = new Pais(dataConnectionString);
                if (0 == pPais.Obtener(pCliente.CodigoPais))
                {
                    String nroMatr = pCliente.NroCasaMatriz(Global.ConvertirNroRut(ruCliente));
                    if (nroMatr == string.Empty)
                    {
                        iView.CargoCasaMatriz.Checked = false;
                        iView.CargoCasaMatriz.Visible = false;
                        //iView.CargoCasaMatriz.Enabled = false;
                        iView.CasaMatriz.Text = string.Empty;
                        iView.CasaMatriz.Attributes.Add("data-tag", string.Empty);
                    }
                    else
                    {
                        iView.CargoCasaMatriz.Checked = true;
                        iView.CargoCasaMatriz.Visible = true;
                        iView.CargoCasaMatriz.Enabled = false;
                        short q = pMatriz.Obtener(nroMatr);
                        iView.CasaMatriz.Text = pMatriz.NombreEstructurado;;
                        iView.CasaMatriz.Attributes.Add("data-tag", nroMatr);
                    }
                    //SSTab1.Enabled = true;
                    // iView.Nota.Enabled = true;
                    iView.OperPuntual.Enabled = true;
                    iView.Pais.Text           = pPais.Nombre;
                    iView.Pais.Attributes.Add("data-tag", pCliente.CodigoPais.ToString());
                    Categoria pCategoria = new Categoria(dataConnectionString);
                    if (0 == pCategoria.Obtener(pPais.Desarrollo))
                    {
                        iView.Categoria.Text = pCategoria.Nombre;
                        iView.Categoria.Attributes.Add("data-tag", pPais.Desarrollo.ToString());
                    }
                    else
                    {
                        iView.Categoria.Text = "Indefinida";
                        iView.Categoria.Attributes.Add("data-tag", string.Empty);
                    }
                    // ControlaPlazos
                    //SSTab1.SelectedIndex = 0;
                    //cboTipoOperacion.Focus();
                    //iView.Cotizar.Enabled = false;
                }
            }
            else
            {
                pageComm.Add("errordatos", "Ocurrió un error al intentar obtener los datos del Cliente.");
            }

            iView.pageContent = Modelos.Library.JsonInform.PageCommentsToJson(pageComm);
        }
        public bool ObtenerSimulador(bool rechaze)
        {
            string        ltMensaje;
            List <string> errs   = new List <string>();
            int           nroCot = 0;

            nroCot = int.TryParse(iView.NumeroCotizacion.Text, out nroCot) ? nroCot : 0;
            if (nroCot == 0)
            {
                ltMensaje = "Es Nueva";
            }
            else
            {
                ltMensaje = "Es Antigua";
            }

            // Verifica el ingreso de los datos basicos
            if (iView.RutCliente.Text.Trim().Length == 0)
            {
                ltMensaje = "Falta identificar el Cliente";
                if (rechaze)
                {
                    errs.Add(ltMensaje);
                }
            }


            if (Array.Exists((new[] { 0, -1 }),
                             element => element == iView.TipoOperacion.SelectedIndex))
            {
                ltMensaje = "Falta establecer El Tipo de Operación";
                if (rechaze)
                {
                    errs.Add(ltMensaje);
                }
            }
            if (iView.TipoCredito.SelectedIndex == -1)
            {
                ltMensaje = "Debe elegir un Tipo De Crédito";
                if (rechaze)
                {
                    errs.Add(ltMensaje);
                }
            }
            int test = -1;

            if (!int.TryParse(iView.PlazoMaxResidualCtg.Text, out test) || test == 0)
            {
                ltMensaje = "Falta indicar el Plazo de la Operación";
                if (rechaze)
                {
                    errs.Add(ltMensaje);
                }
            }

            Decimal parMoneda = Decimal.TryParse(iView.Paridad.Value, NumberStyles.Number,
                                                 CultureInfo.CreateSpecificCulture("en-US"), out parMoneda) ? parMoneda : 0;

            if (parMoneda == 0)
            {
                ltMensaje = "No Existe Paridad para la Moneda de la Operación";
                if (rechaze)
                {
                    errs.Add(ltMensaje);
                }
            }

            if (iView.Moneda.SelectedIndex == -1)
            {
                ltMensaje = "Se necesita identificar la Moneda";
                if (rechaze)
                {
                    errs.Add(ltMensaje);
                }
            }
            double montOp = double.TryParse(iView.MontoOperacion.Text, out montOp) ? montOp : 0;


            //if (montOp==0 && iView.NroCotizacionAjustar.Text.Trim()=="-") {
            if (montOp == 0)
            {
                ltMensaje = "Debe ingresar el Monto que va a afectar Línea";
                if (rechaze)
                {
                    errs.Add(ltMensaje);
                }
                //return false;
            }
            simu = new SimulacionCLE(dataConnectionString);

            simu.tNumeroOperacion = iView.NroOperacion.Text.Trim();
            simu.tNumeroCliente   = iView.RutCliente.Text.Trim();
            simu.iCargoCasaMatriz = 0;
            if (iView.CasaMatriz.Attributes["data-tag"] != null &&
                iView.CasaMatriz.Attributes["data-tag"].ToString().Trim() != string.Empty)
            {
                simu.iCargoCasaMatriz  = 1;
                simu.tNumeroCasaMatriz = iView.CasaMatriz.Attributes["data-tag"].ToString().Trim();
            }

            if (iView.Nota.Checked)
            {
                if (iView.NomSuby.Attributes["data-tag"] == null || iView.NomSuby.Attributes["data-tag"].ToString().Trim() == string.Empty)
                {
                    ltMensaje = "Debe Indicar El Deudor Indirecto, Garante o Subyacente";
                    if (rechaze)
                    {
                        errs.Add(ltMensaje);
                    }
                }
                if (Array.Exists((new[] { 0, -1 }),
                                 element => element == iView.TipoOperSuby.SelectedIndex))
                {
                    ltMensaje = "Debe Indicar El Tipo Operacion Subyacente";
                    if (rechaze)
                    {
                        errs.Add(ltMensaje);
                    }
                    //return false;
                }
            }
            if (errs.Count > 0)
            {
                errores.Add("faltainfo", errs);
                return(false);
            }

            String famcod = iView.TipoOperacion.SelectedValue;// Items[iView.TipoOperacion.SelectedIndex].ToString();

            famcod             = famcod.Split('-')[0];
            simu.tTipoProducto = famcod; // frmLCEDatosSimulacion.TipoOperacion.List(frmLCEDatosSimulacion.TipoOperacion.ListIndex)
            if (iView.Producto.SelectedIndex >= 0)
            {
                simu.iCodigoProducto = int.Parse(iView.Producto.SelectedValue); // Support.GetItemData(iView.Producto, iView.Producto.SelectedIndex);
            }
            else
            {
                simu.iCodigoProducto = 0;
            }
            simu.tCodigoFamilia = iView.CodigoTipoOperacion.Text;
            simu.iCodigoMoneda  = int.Parse(iView.Moneda.SelectedValue); // Support.GetItemData(iView.Moneda, iView.Moneda.SelectedIndex);
            //Decimal parMoneda = Decimal.TryParse(iView.Paridad.Value, NumberStyles.Number,
            //    CultureInfo.CreateSpecificCulture("en-US"), out parMoneda) ? parMoneda : 0; ;
            Decimal toleranc = Decimal.TryParse(iView.PorcentajeTolerancia.Text, NumberStyles.Number,
                                                CultureInfo.CreateSpecificCulture("en-US"), out toleranc) ? toleranc : 0;;
            Decimal montOpe = Decimal.TryParse(iView.MontoOperacion.Text, NumberStyles.Number,
                                               CultureInfo.CreateSpecificCulture("en-US"), out montOpe) ? montOpe : 0;;
            Decimal lMontOrigen;

            lMontOrigen = Decimal.TryParse(iView.Monto.Text, NumberStyles.Number,
                                           CultureInfo.CreateSpecificCulture("en-US"), out lMontOrigen) ? lMontOrigen : 0;
            lMontOrigen       = (montOpe * (1 + toleranc / 100));
            simu.dMontoOrigen = Convert.ToDouble(lMontOrigen); // tes = double.TryParse(iView.Monto.Text, out tes) ? tes : 0;

            // ojo: simular solo la diferencia entre la cotizacion original y la modificada
            CotizacionCLE oldCot = new CotizacionCLE(dataConnectionString);
            Decimal       lMontAplica, lMontGarant; NumberStyles style;

            style = NumberStyles.AllowDecimalPoint;
            //number = Decimal.Parse(value, style);
//            lMontAplica = Decimal.Parse(iView.MontoEquivalente.Text, NumberStyles.Number); //, out lMontAplica) ? lMontAplica : 0;
            lMontAplica = Decimal.TryParse(iView.MontoEquivalente.Text, NumberStyles.Number,
                                           CultureInfo.CreateSpecificCulture("en-US"), out lMontAplica) ? lMontAplica : 0;
            lMontAplica = (montOpe * (1 + toleranc / 100)) * parMoneda;

            Decimal porGar = Decimal.TryParse(iView.PorcenGarantia.Text, NumberStyles.Number,
                                              CultureInfo.CreateSpecificCulture("en-US"), out porGar) ? porGar : 0;

            lMontGarant = Decimal.TryParse(iView.MontoGarantia.Text, NumberStyles.Number,
                                           CultureInfo.CreateSpecificCulture("en-US"), out lMontGarant) ? lMontGarant : 0;
            lMontGarant         = porGar / 100 * lMontAplica;
            simu.iNroCotizacion = 0;
            if (nroCot > 0)
            {
                if (oldCot.Obtener(nroCot) == 0)
                {
                    lMontAplica = Decimal.Parse(iView.MontoEquivalente.Text)
                                  - (Decimal)oldCot.MontoDolares;
                    simu.iNroCotizacion = nroCot;
                }
                else
                {
                    errores.Add("ObtenerSimulador.1", oldCot.errlist);
                }
                oldCot = null;
            }

            simu.dMontoDolares  = (double)lMontAplica;                                                       // CvNum(frmCotizacionCLE.MontoEquivalente.Text)
            simu.dMontoAfecta   = (double)lMontAplica;
            simu.iCodigoPais    = Convert.ToInt16(iView.Pais.Attributes["data-tag"].ToString().Trim());      // As Integer
            simu.iCodigoCateg   = Convert.ToInt16(iView.Categoria.Attributes["data-tag"].ToString().Trim()); // As Integer
            simu.iEsNotaEstruct = iView.Nota.Checked;
            simu.iEsOperPuntual = iView.OperPuntual.Checked;
            if (simu.iEsNotaEstruct)
            {
                famcod = iView.TipoOperSuby.SelectedValue.Split('-')[0]; //.Items[iView.TipoOperSuby.SelectedIndex].ToString();
                //famcod = Strings.Trim(Strings.Left(famcod, Strings.InStr(famcod, " > ", CompareMethod.Text/*?*/) - 1));
                simu.tTipoProdSuby = famcod;                             // As String
                if (iView.ProdSuby.SelectedIndex >= 0)
                {
                    simu.iCodigoProductoSby = Convert.ToInt32(iView.ProdSuby.SelectedValue); // Support.GetItemData(iView.ProdSuby, iView.ProdSuby.SelectedIndex);
                }
                else
                {
                }
                simu.tNumeroPerSuby   = Convert.ToString(iView.NomSuby.Attributes["data-tag"].ToString().Trim());  // As String
                simu.iCodigoPaisSuby  = Convert.ToInt16(iView.PaisSuby.Attributes["data-tag"].ToString().Trim());  // As Integer
                simu.iCodigoCategSuby = Convert.ToInt16(iView.CategSuby.Attributes["data-tag"].ToString().Trim()); // As Integer
                float pork;

                simu.sPorcGarantia = (float.TryParse(iView.PorcenGarantia.Text, NumberStyles.Number, new CultureInfo("en-US"), out pork) ? pork : 0) / 100;

                simu.dMontoGarantia = (double)(lMontGarant); // double.Parse(iView.MontoGarantia.Text);

                //if (Strings.Trim(Convert.ToString(iView.CasaMatrizSuby.Tag)) != string.Empty)
                //{
                //    // gSimulacion.iCargoCasaMatrizSuby = 1
                //    // gSimulacion.tNumeroCasaMatrizSuby = lperPersona.Obtener(frmCotizacionCLE.CasaMatrizSuby.Tag)
                //}
                //else
                //{
                //    // gSimulacion.iCargoCasaMatrizSuby = 0
                //}
            }
            else
            {
                simu.sPorcGarantia  = 0;
                simu.dMontoGarantia = 0;
            }

            simu.iDiasPlazo = (int)Math.Round(Convert.ToSingle(iView.PlazoMaxResidualCtg.Text));

            short ok;

            String  lblCodigoFamilia_Text = simu.tCodigoFamilia;
            Persona per = new Persona(dataConnectionString);

            simu.nombreCliente = (per.Obtener(simu.tNumeroCliente) == 0) ? per.NombreEstructurado : string.Empty;
            per = null;
            Pais pai = new Pais(dataConnectionString);

            simu.nombrePaisCliente = (pai.Obtener(simu.iCodigoPais) == 0) ? pai.Nombre : string.Empty;
            pai = null;
            TipoProducto tipo = new TipoProducto(dataConnectionString);

            if (tipo.Obtener(simu.tTipoProducto) == 0)
            {
                simu.nombreTipoProducto = tipo.Nombre;
            }
            tipo = null;
            Producto pro = new Producto(dataConnectionString);

            if (pro.Obtener(simu.iCodigoProducto) == 0)
            {
                simu.nombreProducto = pro.Nombre;
            }
            pro = null;
            Moneda mon = new Moneda(dataConnectionString);

            if (mon.Obtener(simu.iCodigoMoneda) == 0)
            {
                simu.nombreMonedaMonto = mon.Nombre;
            }
            mon = null;
            if (simu.iCargoCasaMatriz == 1)
            {
                Persona matriz = new Persona(dataConnectionString);
                if (matriz.Obtener(simu.tNumeroCasaMatriz) == 0)
                {
                    simu.nombreMatriz = matriz.NombreEstructurado;
                }
                matriz = null;
            }

            String MontoAfecta_Text      = simu.dMontoOrigen.ToString();
            String MontoEquivalente_Text = simu.dMontoDolares.ToString();

            if (simu.tNumeroPerSuby != null && simu.tNumeroPerSuby != "")
            {
                Persona sub = new Persona(dataConnectionString);
                if (sub.Obtener(simu.tNumeroPerSuby) == 0)
                {
                    simu.nombreDeudorSubyace = sub.NombreEstructurado;
                }
                sub = null;
                Pais spai = new Pais(dataConnectionString);
                if (spai.Obtener(simu.iCodigoPaisSuby) == 0)
                {
                    simu.nombrePaisSubyace = spai.Nombre;
                }
                spai = null;
                TipoProducto stipo = new TipoProducto(dataConnectionString);
                if (stipo.Obtener(simu.tTipoProdSuby) == 0)
                {
                    simu.nombreTipoProductoSubyace = stipo.Nombre;
                }
                stipo = null;
                Producto spro = new Producto(dataConnectionString);
                if (spro.Obtener(simu.iCodigoProductoSby) == 0)
                {
                    simu.nombreProductoSubyace = spro.Nombre;
                }
                spro = null;

                String sprPorcenGarantia = simu.sPorcGarantia.ToString();
                String sprMontoGarantia  = simu.dMontoGarantia.ToString();
            }
            else
            {
                simu.tNumeroPerSuby = string.Empty;
            }



            return(true);
        }
        public void RegistraSubyacente()
        {
            iView.Comanda.Value = string.Empty;
            String  ruCliente = iView.Argumento.Value;
            Persona pCliente  = new Persona(dataConnectionString);

            iView.SinLineaSuby.Text = string.Empty;

            if (0 == pCliente.Obtener(ruCliente))
            {
                iView.NroPerSuby.Text = Global.ConvertirNroRut(ruCliente);

                iView.NomSuby.Text = pCliente.NombreEstructurado;
                iView.NomSuby.Attributes.Add("data-tag", pCliente.Numero);

                //nroMatr = fCliente.NroCasaMatriz(modGlobal.ConvertirNroRut(modGlobal.gtCodigoEncontrado));
                //if (nroMatr == string.Empty)
                //{
                //    chkCargoMatrizSubyacente.CheckState = CheckState.Unchecked;
                //    chkCargoMatrizSubyacente.Visible = false;
                //    chkCargoMatrizSubyacente.Enabled = false;
                //    txCasaMatrizSuby.Text = string.Empty;
                //    txCasaMatrizSuby.Tag = string.Empty;
                //}
                //else
                //{
                //    chkCargoMatrizSubyacente.CheckState = CheckState.Checked;
                //    chkCargoMatrizSubyacente.Visible = true;
                //    chkCargoMatrizSubyacente.Enabled = false;
                //    q = fMatriz.Obtener(nroMatr);
                //    txCasaMatrizSuby.Text = fMatriz.NombreEstructurado;
                //    txCasaMatrizSuby.Tag = nroMatr;
                //}
                Pais pPais = new Pais(dataConnectionString);
                if (0 == pPais.Obtener(pCliente.CodigoPais))
                {
                    iView.PaisSuby.Text = pPais.Nombre;
                    iView.PaisSuby.Attributes.Add("data-tag", pCliente.CodigoPais.ToString());

                    Categoria pCategoria = new Categoria(dataConnectionString);
                    if (0 == pCategoria.Obtener(pPais.Desarrollo))
                    {
                        iView.CategSuby.Text = pCategoria.Nombre;
                        iView.CategSuby.Attributes.Add("data-tag", pPais.Desarrollo.ToString());
                    }
                    else
                    {
                        iView.CategSuby.Text = "Indefinida";
                        iView.CategSuby.Attributes.Add("data-tag", string.Empty);
                    }
                    iView.Nota.Checked = true;
                    //this.cboTipoOperSuby.Focus();
                }
                Limite llimLimite;
                llimLimite = new Limite(dataConnectionString);
                int liRespuesta = 0;
                liRespuesta = llimLimite.ObtenerLineaCliente(ruCliente);
                if (liRespuesta != 0)
                {
                    pageComm.Add("lineasuby", "Está por generar una Simulación para un Deudor Subyacente Nuevo o Sin Línea " + pCliente.NombreEstructurado);
                    iView.SinLineaSuby.Text = "<-sin linea";
                }
                //
            }
            else
            {
                pageComm.Add("errordatos", "Ocurrió un error al intentar obtener los datos del Deudor Subyacente.");
            }

            iView.pageContent = Modelos.Library.JsonInform.PageCommentsToJson(pageComm);
        }