コード例 #1
0
        public DataTable DetalhesItem(int VendaBilheteriaItemID)
        {
            DataTable tabela = new DataTable("DetalhesItem");

            try
            {
                tabela.Columns.Add("PacoteNome", typeof(string));
                tabela.Columns.Add("LocalNome", typeof(string));
                tabela.Columns.Add("EventoNome", typeof(string));
                tabela.Columns.Add("Horario", typeof(string));
                tabela.Columns.Add("SetorNome", typeof(string));
                tabela.Columns.Add("PrecoNome", typeof(string));
                tabela.Columns.Add("PrecoValor", typeof(decimal));
                tabela.Columns.Add("Status", typeof(string));
                tabela.Columns.Add("Codigo", typeof(string));

                bd.Consulta("" +
                            "SELECT " +
                            "	tPacote.Nome AS PacoteNome, "+
                            "	tLocal.Nome AS LocalNome, "+
                            "	tEvento.Nome AS EventoNome, "+
                            "	tApresentacao.Horario, "+
                            "	tSetor.Nome AS SetorNome, "+
                            "	tPreco.Nome AS PrecoNome, "+
                            "	tPreco.Valor AS PrecoValor, "+
                            "	tIngresso.Status, "+
                            "	tIngresso.Codigo "+
                            "FROM " +
                            "	tVendaBilheteriaItem "+
                            "INNER JOIN " +
                            "	tIngressoLog ON tIngressoLog.VendaBilheteriaItemID = tVendaBilheteriaItem.ID "+
                            "INNER JOIN " +
                            "	tIngresso ON tIngresso.ID = tIngressoLog.IngressoID "+
                            "INNER JOIN " +
                            "	tLocal ON tLocal.ID = tIngresso.LocalID "+
                            "INNER JOIN " +
                            "	tEvento ON tEvento.ID = tIngresso.EventoID "+
                            "INNER JOIN " +
                            "	tApresentacao ON tApresentacao.ID = tIngresso.ApresentacaoID "+
                            "INNER JOIN " +
                            "	tSetor ON tSetor.ID = tIngresso.SetorID "+
                            "INNER JOIN " +
                            "	tPreco ON tPreco.ID = tIngresso.PrecoID "+
                            "LEFT OUTER JOIN " +
                            "	tPacote ON tPacote.ID = tIngresso.PacoteID "+
                            "WHERE " +
                            "	tVendaBilheteriaItem.ID = "+ VendaBilheteriaItemID + " " +
                            "");

                while (bd.Consulta().Read())
                {
                    DataRow linha = tabela.NewRow();
                    linha["PacoteNome"] = bd.LerString("PacoteNome");
                    linha["LocalNome"]  = bd.LerString("LocalNome");
                    linha["EventoNome"] = bd.LerString("EventoNome");
                    linha["Horario"]    = bd.LerDateTime("Horario");
                    linha["SetorNome"]  = bd.LerString("SetorNome");
                    linha["PrecoNome"]  = bd.LerString("PrecoNome");
                    linha["PrecoValor"] = bd.LerDecimal("PrecoValor");
                    linha["Status"]     = Ingresso.StatusDescritivo(bd.LerString("Status"));
                    linha["Codigo"]     = bd.LerString("Codigo");
                    tabela.Rows.Add(linha);
                }
                bd.Fechar();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(tabela);
        }
コード例 #2
0
        public DataTable PesquisarSenha(string senha, bool novoHistorico = false, int intVendaBilheteriaID = 0)
        {
            DataTable tabela;

            if (novoHistorico)
            {
                tabela = EstruturaHistoricoNovo();
            }
            else
            {
                tabela = EstruturaHistorico();
            }

            BD     bd                  = new BD();
            string strStatus           = "";
            bool   pagamentoProcessado = false;

            try
            {
                if (intVendaBilheteriaID.Equals(0))
                {
                    using (IDataReader oDataReader = bd.Consulta("" +
                                                                 "SELECT " +
                                                                 "   tVendaBilheteria.ID, " +
                                                                 "   tVendaBilheteria.Status, " +
                                                                 "   tVendaBilheteria.PagamentoProcessado " +
                                                                 "FROM " +
                                                                 "  tVendaBilheteria (NOLOCK) " +
                                                                 "WHERE " +
                                                                 "  (Senha = '" + senha + "')"

                                                                 ))
                    {
                        if (!oDataReader.Read())
                        {
                            throw new ApplicationException("Venda não encontrada!");
                        }

                        if (bd.LerInt("ID") < 1)
                        {
                            throw new ApplicationException("Venda não encontrada!");
                        }

                        intVendaBilheteriaID = bd.LerInt("ID");

                        strStatus           = bd.LerString("Status");
                        pagamentoProcessado = bd.LerBoolean("PagamentoProcessado");
                    }

                    bd.Fechar();
                }

                StringBuilder strSql = new StringBuilder();

                strSql.Append(" SELECT ");
                strSql.Append("( ");
                strSql.Append(" SELECT  ");
                strSql.Append(" COUNT(tIngressoLog.ID) ");
                strSql.Append(" FROM ");
                strSql.Append(" tIngressoLog (NOLOCK) ");
                strSql.Append(" WHERE ");
                strSql.Append(" (tIngressoLog.VendaBilheteriaID = " + intVendaBilheteriaID + ") ");
                strSql.Append(" ) AS TotIngressos, ");
                strSql.Append(" i.ID AS IngressoID, ");
                strSql.Append(" il.VendaBilheteriaID, ");
                strSql.Append(" i.Codigo, ");
                strSql.Append(" il.IngressoID, ");
                strSql.Append(" ev.ID EventoID, ");
                strSql.Append(" ev.Nome Evento, ");
                strSql.Append(" il.ID, ");
                strSql.Append(" il.[TimeStamp] as Data, ");
                strSql.Append(" il.Acao, ");
                strSql.Append(" il.Obs, ");
                strSql.Append(" p.Nome AS Preco, ");
                strSql.Append(" p.Valor, ");
                strSql.Append(" b.Nome AS Bloqueio, ");
                strSql.Append(" c.Nome AS Cortesia, ");
                strSql.Append(" lo.Nome AS Loja, ");
                strSql.Append(" i.Status, ");
                strSql.Append(" p.ID AS PrecoID, ");
                strSql.Append(" u.Nome AS Usuario, ");
                strSql.Append(" ci.Nome AS Cliente, vb.CLienteID, ");
                strSql.Append(" vb.NotaFiscalEstabelecimento, ");
                strSql.Append(" vb.Senha, ");
                strSql.Append(" l.Nome AS Local, l.Cidade, ");
                strSql.Append(" a.Horario AS Apresentacao, ");
                strSql.Append(" a.ID AS ApresentacaoID, ");
                strSql.Append(" s.Nome AS Setor, ");
                strSql.Append(" il.CodigoBarra, ");
                strSql.Append(" en.Tipo AS TaxaEntregaTipo, ");
                // Calcula os campos TaxaConvenienciaValor e TaxaConveniencia por ingresso
                strSql.Append(" vb.TaxaEntregaValor, ");
                strSql.Append(" CASE WHEN (SELECT COUNT(ID) FROM tingresso WHERE VendaBilheteriaID = " + intVendaBilheteriaID + ") > 1 ");
                strSql.Append(" THEN CAST(vbi.TaxaConveniencia/(SELECT COUNT(ID) FROM tIngresso WHERE VendaBilheteriaID = " + intVendaBilheteriaID + ") AS DECIMAL(10,2)) ");
                strSql.Append(" ELSE vbi.TaxaConveniencia END AS TaxaConveniencia, ");
                strSql.Append(" CASE WHEN (SELECT COUNT(ID) FROM tingresso WHERE VendaBilheteriaID = " + intVendaBilheteriaID + ") > 1 ");
                strSql.Append(" THEN CAST(vbi.TaxaConvenienciaValor/(SELECT COUNT(ID) FROM tIngresso WHERE VendaBilheteriaID = " + intVendaBilheteriaID + ") AS DECIMAL(10,2)) ");
                strSql.Append(" ELSE ISNULL(vbi.TaxaConvenienciaValor,0) END AS TaxaConvenienciaValor, ");
                //Forma antiga de exibição

                //strSql.Append(" vbi.TaxaConveniencia, ");
                //strSql.Append(" ISNULL(vbi.TaxaConvenienciaValor,0) AS TaxaConvenienciaValor, ");
                strSql.Append(" IsNull(us.Nome, ' - ') as  Supervisor, ");
                strSql.Append(" ep.Nome AS PeriodoAgenda ,");
                strSql.Append(" en.Nome AS EntregaNome ,");
                strSql.Append(" ea.Data AS DataAgenda ,");
                strSql.Append(" ear.Nome AS AreaEntrega ,");
                strSql.Append(" en.Tipo AS TaxaEntregaTipo, ");
                strSql.Append(" ISNULL(vb.ClienteEnderecoID,0) AS EnderecoEntrega , ");
                strSql.Append(" pdv.Nome as PDVEntrega, ");
                strSql.Append(" ev.TipoCodigoBarra, i.ApresentacaoSetorID ");
                strSql.Append(" ,ci.Email ");
                strSql.Append(" ,cl.Nome AS Canal ");
                strSql.Append(" ,en.ID AS EntregaID ");
                strSql.Append(" ,i.Status AS StatusDet ");
                strSql.Append(" ,i.LugarID ");
                strSql.Append(" ,i.PacoteID ");
                strSql.Append(" ,i.PacoteGrupo ");
                strSql.Append(" ,vb.EntregaControleID ");
                strSql.Append(" FROM tIngressoLog il (NOLOCK) ");
                strSql.Append(" LEFT JOIN tVendaBilheteria vb (NOLOCK) ON vb.ID = il.VendaBilheteriaID  ");
                strSql.Append(" LEFT JOIN tVendaBilheteriaItem vbi (NOLOCK) ON il.VendaBilheteriaItemID = vbi.ID ");
                strSql.Append(" INNER JOIN tUsuario u (NOLOCK) ON u.ID = il.UsuarioID ");
                strSql.Append(" LEFT JOIN tUsuario us (NOLOCK) ON us.ID = il.SupervisorID ");
                strSql.Append(" LEFT OUTER JOIN tPreco p (NOLOCK) ON p.ID = il.PrecoID ");
                strSql.Append(" INNER JOIN tIngresso i (NOLOCK) ON i.ID = IngressoID ");
                strSql.Append(" INNER JOIN tEvento ev (NOLOCK) ON ev.ID = i.EventoID ");
                strSql.Append(" INNER JOIN tLocal l (NOLOCK) ON l.ID = i.LocalID ");
                strSql.Append(" INNER JOIN tSetor s (NOLOCK) ON s.ID = i.SetorID ");
                strSql.Append(" INNER JOIN tApresentacao a (NOLOCK) ON a.ID = i.ApresentacaoID ");
                strSql.Append(" LEFT JOIN tLoja lo (NOLOCK) ON lo.ID = il.LojaID ");
                strSql.Append(" LEFT JOIN tCanal cl (NOLOCK) ON cl.ID = il.CanalID  ");
                strSql.Append(" LEFT JOIN tCliente ci (NOLOCK) ON ci.ID = vb.ClienteID ");
                strSql.Append(" LEFT JOIN tCortesia c (NOLOCK) ON c.ID = il.CortesiaID ");
                strSql.Append(" LEFT JOIN tBloqueio b (NOLOCK) ON b.ID = il.BloqueioID ");
                strSql.Append(" LEFT JOIN tEntregaControle ec (NOLOCK) ON vb.EntregaControleID = ec.ID ");
                strSql.Append(" LEFT JOIN tEntrega en (NOLOCK) ON ec.EntregaID = en.ID ");
                strSql.Append(" LEFT JOIN tEntregaPeriodo ep (NOLOCK) ON ec.PeriodoID = ep.ID ");
                strSql.Append(" LEFT JOIN tEntregaArea ear (NOLOCK) ON ec.EntregaAreaID = ear.ID ");
                strSql.Append(" LEFT JOIN tEntregaAgenda ea (NOLOCK) ON vb.EntregaAgendaID = ea.ID ");
                strSql.Append(" LEFT JOIN tPontoVenda pdv (NOLOCK) ON vb.PdvID = pdv.ID ");
                strSql.Append(" WHERE ");
                strSql.Append(" ( ");
                strSql.Append(" il.IngressoID IN ( ");
                strSql.Append(" SELECT ");
                strSql.Append(" IngressoID ");
                strSql.Append(" FROM  ");
                strSql.Append(" tIngressoLog (NOLOCK) ");
                strSql.Append(" WHERE ");
                strSql.Append(" (VendaBilheteriaID = " + intVendaBilheteriaID + ") ");
                strSql.Append(" ) ");
                strSql.Append(" ) ");
                strSql.Append(" ORDER BY ");
                strSql.Append(" il.IngressoID, ");
                strSql.Append(" il.ID ");

                using (IDataReader oDataReader = bd.Consulta(strSql.ToString()))
                {
                    int     ingressoID      = 0;
                    bool    blnInserirDados = false;
                    string  strSenhaVenda   = "";
                    DataRow linha           = null;

                    int itens = 0;
                    while (oDataReader.Read())
                    {
                        itens++;
                        if (ingressoID != bd.LerInt("IngressoID"))
                        {
                            ingressoID      = bd.LerInt("IngressoID");
                            blnInserirDados = false;
                            strSenhaVenda   = "";
                        }

                        if (bd.LerString("Acao") == IngressoLog.VENDER)
                        {
                            strSenhaVenda = bd.LerString("Senha");
                        }

                        // Se a operação for venda, Liga o Flag de Inserir Dados
                        if (((bd.LerString("Acao") == IngressoLog.VENDER || bd.LerString("Acao") == IngressoLog.PRE_RESERVA) &&
                             strStatus != VendaBilheteria.CANCELADO && bd.LerInt("VendaBilheteriaID") == intVendaBilheteriaID) ||
                            (bd.LerString("Acao") == IngressoLog.CANCELAR && strStatus == VendaBilheteria.CANCELADO &&
                             bd.LerInt("VendaBilheteriaID") == intVendaBilheteriaID))
                        {
                            blnInserirDados = true;
                        }

                        // Insere as Informações dos Ingressos
                        if (blnInserirDados)
                        {
                            if (strSenhaVenda == "")
                            {
                                if (strStatus == VendaBilheteria.PRE_RESERVADO)
                                {
                                    strSenhaVenda = "-";
                                }
                                else
                                {
                                    strSenhaVenda = bd.LerString("Senha");
                                }
                            }

                            linha = tabela.NewRow();
                            linha["IngressoID"]          = bd.LerInt("IngressoID");
                            linha["IngressoLogID"]       = bd.LerInt("ID");
                            linha["Codigo"]              = bd.LerString("Codigo");
                            linha["Data"]                = bd.LerStringFormatoDataHora("Data");
                            linha["Cliente"]             = bd.LerString("Cliente");
                            linha["ClienteID"]           = bd.LerString("ClienteID");
                            linha["Evento"]              = bd.LerString("Evento");
                            linha["EventoID"]            = bd.LerString("EventoID");
                            linha["ApresentacaoID"]      = bd.LerString("ApresentacaoID");
                            linha["ApresentacaoSetorID"] = bd.LerInt("ApresentacaoSetorID");
                            linha["TipoCodigoBarra"]     = bd.LerString("TipoCodigoBarra");
                            // Se for uma senha de cancelamento alimentar a Senha de Venda e Senha de Cancelamento
                            if (strStatus == VendaBilheteria.CANCELADO)
                            {
                                linha["Senha"]             = strSenhaVenda;
                                linha["SenhaCancelamento"] = bd.LerString("Senha");
                            }
                            else
                            {
                                // Se for uma senha de venda, armazenar senha de venda, e somente a senha de cancalemento se for uma ação cancelar
                                linha["Senha"] = strSenhaVenda;

                                if (bd.LerString("Acao") == IngressoLog.CANCELAR)
                                {
                                    linha["SenhaCancelamento"] = bd.LerString("Senha");
                                }
                                else
                                {
                                    linha["SenhaCancelamento"] = " - ";
                                }
                            }

                            linha["Ação"]                = IngressoLog.AcaoDescritiva(bd.LerString("Acao"));
                            linha["Status"]              = Ingresso.StatusDescritivo(bd.LerString("Status"));
                            linha["StatusDetalhado"]     = Ingresso.StatusDetalhado(bd.LerString("Status"), bd.LerString("TaxaEntregaTipo"));
                            linha["PrecoID"]             = bd.LerInt("PrecoID");
                            linha["Preço"]               = bd.LerString("Preco");
                            linha["Loja"]                = bd.LerString("Loja");
                            linha["PagamentoProcessado"] = pagamentoProcessado;
                            linha["VendaBilheteriaID"]   = bd.LerString("VendaBilheteriaID");
                            linha["EntregaID"]           = bd.LerInt("EntregaID");
                            linha["Entrega"]             = bd.LerString("EntregaNome");
                            linha["Periodo"]             = bd.LerString("PeriodoAgenda");
                            linha["DataAgenda"]          = bd.LerDateTime("DataAgenda");
                            linha["AreaEntrega"]         = bd.LerString("AreaEntrega");
                            linha["EnderecoEntrega"]     = bd.LerInt("EnderecoEntrega");
                            linha["PDVEntrega"]          = bd.LerString("PDVEntrega");
                            if (novoHistorico)
                            {
                                linha["StatusDet"]             = bd.LerString("StatusDet");
                                linha["TaxaEntregaValor"]      = bd.LerString("TaxaEntregaValor");
                                linha["TaxaConveniencia"]      = bd.LerInt("TaxaConveniencia");
                                linha["TaxaConvenienciaValor"] = bd.LerString("TaxaConvenienciaValor");
                                linha["TaxaEntregaTipo"]       = bd.LerString("TaxaEntregaTipo");
                                linha["Cidade"] = bd.LerString("Cidade");
                            }

                            if (bd.LerString("Acao") == IngressoLog.VENDER || bd.LerString("Acao") == IngressoLog.CANCELAR)
                            {
                                linha["Valor"] = bd.LerDecimal("Valor");
                            }

                            if (bd.LerString("Cortesia") != "")
                            {
                                linha["Cortesia"] = bd.LerString("Cortesia");
                            }
                            if (bd.LerString("Bloqueio") != "")
                            {
                                linha["Bloqueio"] = bd.LerString("Bloqueio");
                            }
                            linha["Usuario"] = bd.LerString("Usuario");
                            linha["Obs"]     = bd.LerString("Obs");

                            linha["Local"]        = bd.LerString("Local");
                            linha["Apresentacao"] = bd.LerStringFormatoDataHora("Apresentacao");
                            linha["Setor"]        = bd.LerString("Setor");
                            linha["CodigoBarra"]  = bd.LerString("CodigoBarra");
                            linha["Supervisor"]   = bd.LerString("Supervisor");
                            linha["Email"]        = bd.LerString("Email");
                            linha["Canal"]        = bd.LerString("Canal");

                            if (novoHistorico)
                            {
                                linha["LugarID"]           = bd.LerInt("LugarID");
                                linha["PacoteID"]          = bd.LerInt("PacoteID");
                                linha["PacoteGrupo"]       = bd.LerString("PacoteGrupo");
                                linha["EntregaControleID"] = bd.LerInt("EntregaControleID");
                            }

                            tabela.Rows.Add(linha);
                        }

                        // Caso a operação inserida for Cancelar, Desligar a Flag de Inserir Dados
                        if (bd.LerString("Acao") == IngressoLog.CANCELAR)
                        {
                            blnInserirDados = false;
                        }
                    }
                }
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Problemas ao acessar o banco de dados: " + ex.Message);
            }
            catch
            {
                throw;
            }
            finally
            {
                bd.Fechar();
            }

            return(tabela);
        }
コード例 #3
0
ファイル: Cliente.cs プロジェクト: icaroferj/ir-api
        public DataSet RelatorioClientesCompras(int ApresentacaoID, int EventoID)
        {
            try
            {
                DataSet retorno = EstruturaBuscaRelatorioClientesCompras();
                string  sql     = "";
                string  filtro  = "";

                if (ApresentacaoID > 0)
                {
                    filtro = "WHERE ApresentacaoID = " + ApresentacaoID;
                }
                else
                {
                    filtro = "WHERE tIngresso.EventoID = " + EventoID;
                }



                sql = @"SELECT tIngressoLog.ClienteID,CASE WHEN tCliente.CNPJ  <> ''
						THEN tCliente.NomeFantasia
						ELSE tCliente.Nome COLLATE Latin1_General_CI_AI
						END AS Nome,tCliente.DDDTelefone,tCliente.Telefone,tCliente.DDDTelefoneComercial,
						tCliente.TelefoneComercial,tCliente.DDDCelular,tCliente.Celular,tCliente.Email,tCliente.RecebeEmail,
						tCliente.CEPCliente,tCliente.EnderecoCliente,tCliente.NumeroCliente,tCliente.CidadeCliente,tCliente.EstadoCliente,
						tCliente.ComplementoCliente,tCliente.BairroCliente,tCliente.ContatoTipoID
						FROM tIngressoLog
						INNER JOIN tIngresso ON (tIngresso.ID = tIngressoLog.IngressoID)
						INNER JOIN tCliente ON (tIngressoLog.ClienteID=tCliente.ID)  "                         + filtro + @" 
						 GROUP BY tIngressoLog.ClienteID,tCliente.Nome,tCliente.DDDTelefone,tCliente.Telefone,tCliente.DDDTelefoneComercial,
						tCliente.TelefoneComercial,tCliente.DDDCelular,tCliente.Celular,tCliente.Email,tCliente.RecebeEmail,
						tCliente.CEPCliente,tCliente.EnderecoCliente,tCliente.NumeroCliente,tCliente.CidadeCliente,tCliente.EstadoCliente,
						tCliente.ComplementoCliente,tCliente.BairroCliente,tCliente.ContatoTipoID, tCliente.CNPJ ,tCliente.NomeFantasia"                        ;

                bd.Consulta(sql);

                while (bd.Consulta().Read())
                {
                    DataRow linha     = retorno.Tables[TAB_CLIENTE].NewRow();
                    int     clienteID = bd.LerInt("ClienteID");
                    linha[CLIENTE_ID] = clienteID;
                    linha[NOME]       = bd.LerString("Nome");
                    string endereco = bd.LerString("EnderecoCliente") + "," + bd.LerString("NumeroCliente") + "," + bd.LerString("ComplementoCliente") + "," + bd.LerString("BairroCliente") + "," + bd.LerString("CidadeCliente") + "," + bd.LerString("EstadoCliente") + "," + bd.LerString("CEPCliente");
                    linha[ENDERECO]           = endereco.Replace(",,", ",");
                    linha[TELEFONE]           = bd.LerString("DDDTelefone") + "-" + bd.LerString("Telefone");
                    linha[TELEFONE_COMERCIAL] = bd.LerString("DDDTelefoneComercial") + "-" + bd.LerString("TelefoneComercial");
                    linha[TELEFONE_CELULAR]   = bd.LerString("DDDCelular") + "-" + bd.LerString("Celular");
                    linha[EMAIL] = bd.LerString("Email");

                    ContatoTipo oContatoTipo = new ContatoTipo();

                    linha[PREFERENCIA_CONTATO] = oContatoTipo.TipoContato(bd.LerInt("ContatoTipoID"));

                    retorno.Tables[TAB_CLIENTE].Rows.Add(linha);
                }

                bd.Fechar();

                foreach (DataRow linha in retorno.Tables[TAB_CLIENTE].Rows)
                {
                    linha[QTD_INGRESSOS_CLIENTE] = QtdIngressosComprados((int)linha[CLIENTE_ID], filtro);
                }



                sql = @"SELECT tIngressoLog.VendaBilheteriaID,tIngressoLog.ClienteID,
						COUNT(tIngressoLog.VendaBilheteriaID) AS QtdIngressos,
						tVendaBilheteria.Senha, 
						ValorTotal, ISNULL(VendaCancelada,'F') AS VendaCancelada
						FROM tIngressoLog
						INNER JOIN tIngresso ON (tIngresso.ID = tIngressoLog.IngressoID)
						INNER JOIN tCliente ON (tIngressoLog.ClienteID=tCliente.ID)
						INNER JOIN tVendaBilheteria ON (tVendaBilheteria.ID = tIngressoLog.VendaBilheteriaID) "                         + filtro + @" 
						and Acao = 'V' GROUP BY tIngressoLog.VendaBilheteriaID,tIngressoLog.ClienteID,tIngressoLog.VendaBilheteriaID,
						tVendaBilheteria.Senha, ValorTotal, VendaCancelada"                        ;

                bd.Consulta(sql);

                while (bd.Consulta().Read())
                {
                    DataRow linha = retorno.Tables[TAB_COMPRA].NewRow();

                    int clienteID = bd.LerInt("ClienteID");
                    linha[VENDA_ID]         = bd.LerInt("VendaBilheteriaID");
                    linha[CLIENTE_ID]       = clienteID;
                    linha[SENHA]            = bd.LerString("Senha");
                    linha[VALOR_TOTAL]      = bd.LerDecimal("ValorTotal").ToString("c");
                    linha[COMPRA_CANCELADA] = bd.LerString("VendaCancelada") == "T" ? "Sim" : "Não";
                    linha[QTD_INGRESSO]     = bd.LerInt("QtdIngressos");

                    retorno.Tables[TAB_COMPRA].Rows.Add(linha);
                }

                bd.Fechar();

                VendaBilheteria oVendaBilheteria = new VendaBilheteria();

                foreach (DataRow linha in retorno.Tables[TAB_COMPRA].Rows)
                {
                    linha[FORMA_PAGAMENTO] = oVendaBilheteria.FormasPagametoString((int)linha[VENDA_ID]);
                }

                sql = @"SELECT tIngressoLog.VendaBilheteriaID,tIngresso.Codigo, tApresentacao.Horario, 
						tSetor.Nome as Setor, tPreco.Nome as Preco,tPreco.Valor ,tIngresso.CodigoBarra,tIngresso.Status
						FROM tIngressoLog
						INNER JOIN tIngresso ON (tIngresso.ID = tIngressoLog.IngressoID)
						INNER JOIN tCliente ON (tIngressoLog.ClienteID=tCliente.ID)
						INNER JOIN tApresentacao ON (tIngresso.ApresentacaoID=tApresentacao.ID)
						INNER JOIN tSetor ON (tIngresso.SetorID=tSetor.ID)
						INNER JOIN tPreco ON (tIngressoLog.PrecoID=tPreco.ID)  "                         + filtro +
                      @"  AND Acao = 'V'  AND tIngressoLog.ClienteID > 0 ";

                bd.Consulta(sql);

                while (bd.Consulta().Read())
                {
                    DataRow linha = retorno.Tables[TAB_INGRESSO].NewRow();


                    linha[VENDA_ID]        = bd.LerInt("VendaBilheteriaID");
                    linha[CODIGO_INGRESSO] = bd.LerString("Codigo");;
                    string dataApresentacao = bd.LerDateTime("Horario").ToString();
                    linha[APRESENTACAO]    = dataApresentacao.Remove(dataApresentacao.Length - 3);
                    linha[SETOR]           = bd.LerString("Setor");
                    linha[PRECO]           = bd.LerString("Preco") + " - " + bd.LerDecimal("Valor").ToString("c");
                    linha[CODIGO_BARRAS]   = bd.LerString("CodigoBarra");
                    linha[STATUS_INGRESSO] = Ingresso.StatusDescritivo(bd.LerString("Status"));
                    retorno.Tables[TAB_INGRESSO].Rows.Add(linha);
                }

                bd.Fechar();

                return(retorno);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }