public List <OrcamentoConsulta> Filtrar(int idUsuario, OrcamentoFiltro filtro, string campo, string texto)
        {
            var sb = new StringBuilder();

            sb.AppendLine("SELECT ");
            sb.AppendLine("Orc_Data,");
            sb.AppendLine("Orc_Id,");
            sb.AppendLine("Orc_Numero,");
            sb.AppendLine("Orc_Situacao,");
            sb.AppendLine("Orc_RazaoSocial,");
            sb.AppendLine("Orc_EmailEnviado,");
            sb.AppendLine("Pros_Nome, ");
            sb.AppendLine("Usu_Nome, ");
            sb.AppendLine("Cli_Codigo, ");
            sb.AppendLine("Cli_Nome ");
            sb.AppendLine("FROM Orcamento");
            sb.AppendLine("LEFT JOIN Prospect ON Orc_Prospect = Pros_Id   ");
            sb.AppendLine("LEFT JOIN Usuario ON Orc_Usuario = Usu_Id   ");
            sb.AppendLine("LEFT JOIN Cliente ON Orc_Cliente = Cli_Id   ");
            sb.AppendLine("LEFT JOIN Cidade ON Orc_Cidade = Cid_Id   ");
            sb.AppendLine("LEFT JOIN Tipo ON Orc_Tipo = Tip_Id ");
            sb.AppendLine(" WHERE Orc_Id IS NOT NULL");
            sb.AppendLine(" AND " + campo + " like '%" + texto + "%'");

            sb.AppendLine(Filtro(idUsuario, filtro));

            sb.AppendLine(" AND EXISTS(");
            sb.AppendLine(" 	SELECT 1 FROM Usuario WHERE ((Cli_Revenda = Usu_Revenda) OR (Usu_Revenda IS NULL))");
            sb.AppendLine(" 	AND Usu_Id = "+ idUsuario + ")");

            sb.AppendLine(" AND EXISTS(");
            sb.AppendLine(" 	SELECT 1 FROM Usuario WHERE ((Cli_Id = Usu_Cliente) OR (Usu_Cliente IS NULL))");
            sb.AppendLine(" 	AND Usu_Id = "+ idUsuario + ")");

            if (!PermissaoOrcamentoUsuario(idUsuario))
            {
                sb.AppendLine(" AND Orc_Usuario = " + idUsuario);
            }

            var lista = new List <OrcamentoConsulta>();

            using (var db = new BancoADO())
            {
                db.RetornoReader(sb.ToString());

                while (db.Read())
                {
                    var model = new OrcamentoConsulta();

                    string emailEnviado = "Não";
                    if (db.CampoBool("Orc_EmailEnviado"))
                    {
                        emailEnviado = "Sim";
                    }

                    model.EmailEnviado = emailEnviado;
                    model.Data         = db.CampoData("Orc_Data").ToString("dd/MM/yyyy");
                    model.NomeCliente  = db.CampoStr("Cli_Nome");
                    model.NomeUsuario  = db.CampoStr("Usu_Nome");
                    model.Numero       = db.CampoInt32("Orc_Numero");
                    model.Id           = db.CampoInt32("Orc_Id");
                    model.Situacao     = db.CampoStr("Orc_Situacao");

                    lista.Add(model);
                }
                db.CloseReader();
            }
            return(lista);
        }