public String Simul2Json(SimulacionCLE obj)
        {
            String result = JsonConvert.SerializeObject(obj);

            return(result);

            //DataContractJsonSerializer ser;
            //MemoryStream ms = new MemoryStream();
            //ser = new DataContractJsonSerializer(typeof(Modelos.SimulacionCLE));
            //ser.WriteObject(ms, obj);
            //byte[] json = ms.ToArray();
            //ms.Close();
            //return Encoding.UTF8.GetString(json, 0, json.Length);
        }
        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);
        }