public List <SustitutosInfo> Lista(string Referencia, string Catalogo)
        {
            db.SetParameterValue(command, "i_operation", 'S');
            db.SetParameterValue(command, "i_option", 'A');

            db.SetParameterValue(command, "i_Catalogo", Catalogo);
            db.SetParameterValue(command, "i_Referencia", Referencia);

            // falta poner parametro de busqueda

            List <SustitutosInfo> col = new List <SustitutosInfo>();

            IDataReader dr = null;

            SustitutosInfo m = null;

            try
            {
                dr = db.ExecuteReader(command);

                while (dr.Read())
                {
                    m = Factory(dr);

                    col.Add(m);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));

                bool rethrow = ExceptionPolicy.HandleException(ex, "DataAccess Policy");

                if (rethrow)
                {
                    throw;
                }
            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
            }

            return(col);
        }
        private SustitutosInfo Factory(IDataReader dr)
        {
            SustitutosInfo item = new SustitutosInfo();

            try
            {
                item.Ref_sustituto = Tools.ToString(dr, "Ref_Sustituto");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));
            }

            try
            {
                item.Descripcion = Tools.ToString(dr, "Descripcion");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));
            }

            try
            {
                item.Id_corto = Tools.ToString(dr, "Id_Corto");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));
            }

            try
            {
                item.PrecioConIVA = Tools.ToDecimal(dr, "PrecioConIVA");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));
            }

            try
            {
                item.Pagina = Tools.ToString(dr, "Pagina");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));
            }


            try
            {
                item.Foto = Tools.ToString(dr, "Foto");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(string.Format("NIVI Error: {0} , NameSpace: {1}, Clase: {2}, Metodo: {3} ", ex.Message, MethodBase.GetCurrentMethod().DeclaringType.Namespace, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name));
            }

            String prec  = item.PrecioConIVA + "";
            String prec2 = "";

            for (int i = 0; i < prec.Length; i++)
            {
                if (prec.Substring(i, 1).Equals(","))
                {
                    prec2 += ".";
                }
                else
                {
                    prec2 += prec.Substring(i, 1);
                }
            }


            item.Descripcion = "<strong><font color=#167ac6> " + item.Descripcion + "</font></strong> </br>" +
                               "<strong>Codigo Rapido: </strong>" + item.Id_corto + "</br>" +
                               "<strong>Referencia: </strong>" + item.Ref_sustituto + "</br>" +
                               "<strong>Precio: </strong>" + prec2 + "</br>" +
                               "<strong><font color=#ef3652><u>click aquí para seleccionar</u></font></strong>";

            //"<strong>Pagina: </strong>" + item.Pagina + "</br>" +



            return(item);
        }