public void VerificaPagamentoTotal()
        {
            BD bdAux = new BD();

            try
            {
                string sql =
                    string.Format(@"SELECT vbba.* 
                                    FROM tVendaBilheteriaFormaPagamentoBoleto vbb(NOLOCK) 
                                    INNER JOIN tVendaBilheteriaFormaPagamentoBoleto vbba(NOLOCK) ON vbb.VendaBilheteriaFormaPagamentoID = vbba.VendaBilheteriaFormaPagamentoID
                                    WHERE vbb.ID = {0} and vbba.ValorPago <= 0.00 ", this.Control.ID);

                bdAux.Consulta(sql);
                if (bdAux.Consulta().Read())
                {
                    return;
                }

                bdAux.FecharConsulta();

                VendaBilheteria oVb = new VendaBilheteria();
                oVb.AtualizaPagamentoConcluido(this.Control.ID);
            }
            finally
            {
                bdAux.Fechar();
            }
        }
Example #2
0
        public void AtribuirHorarios(int quantidade, int horas)
        {
            BD bd = new BD();

            try
            {
                string busca =
                    @"SELECT
						TOP 500 vb.ID, MIN(ap.Horario) AS MenorApresentacao
						FROM tVendaBilheteria vb (NOLOCK)
						INNER JOIN tIngresso i (NOLOCK) ON i.VendaBilheteriaID = vb.ID
						INNER JOIN tApresentacao ap (NOLOCK) ON ap.ID = i.ApresentacaoID
					WHERE vb.Status = 'P' AND vb.DataVenda > '20110000000000' AND (vb.EmailSincronizado IS NULL OR vb.EmailSincronizado = 'F')
					GROUP BY vb.ID
					ORDER BY vb.ID ASC"                    ;

                bd.Consulta(busca);


                var data = new
                {
                    VendaBilheteriaID = 0,
                    Data = DateTime.Now,
                };

                var lista = VendaBilheteria.ToAnonymousList(data);

                while (bd.Consulta().Read())
                {
                    lista.Add(new
                    {
                        VendaBilheteriaID = bd.LerInt("ID"),
                        Data = bd.LerDateTime("MenorApresentacao"),
                    });
                }

                bd.FecharConsulta();

                foreach (var venda in lista)
                {
                    bd.Executar(
                        string.Format(@"UPDATE tVendaBilheteria 
							SET EmailSincronizado = '{0}', EmailEnviar = '{1}' 
							WHERE ID = {2}"                            , "T", venda.Data.AddHours(horas).ToString("yyyyMMddHHmmss"), venda.VendaBilheteriaID));
                }
            }
            finally
            {
                bd.Fechar();
            }
        }
Example #3
0
        }// fim de ValorIngresso

        /// <summary>
        /// Obter o valor da entrega do item de venda, é obtido pelo valor da Venda
        /// </summary>
        /// <returns>Valor do ingresso por item de venda</returns>
        public override decimal ValorEntrega()
        {
            decimal valor = 0;

            try
            {
                VendaBilheteria vendaBilheteria = new VendaBilheteria();
                vendaBilheteria.Ler(this.VendaBilheteriaID.Valor);
                valor = vendaBilheteria.TaxaEntregaValor.Valor / vendaBilheteria.QuantidadeItens();
            }
            catch (Exception erro)
            {
                throw erro;
            }
            return(valor);
        }// fim de ValorEntrega
        public List <int> ProcessaCancelamentoBoleto(BD bd, int vendaBilheteriaID, decimal valorCancelado)
        {
            List <int>      lstRetorno       = new List <int>();
            VendaBilheteria oVendaBilheteria = new VendaBilheteria();

            oVendaBilheteria.LerFormaPagamento(vendaBilheteriaID);

            decimal valoresPagos  = oVendaBilheteria.BoletosPagos(vendaBilheteriaID);
            decimal valorReal     = oVendaBilheteria.ValorTotal.Valor;
            decimal valorPendente = this.VerficiaValorReal(vendaBilheteriaID);


            this.Cancelar(bd, vendaBilheteriaID, oVendaBilheteria.ClienteID.Valor, valoresPagos);

            if (valorPendente > 0)
            {
                lstRetorno = this.ReCalcular(bd, valorReal, oVendaBilheteria.Parcelas(vendaBilheteriaID), oVendaBilheteria.FormasPagamentoID(vendaBilheteriaID), valorCancelado, oVendaBilheteria.ClienteID.Valor);
            }

            return(lstRetorno);
        }
Example #5
0
        public void AlterarCliente(BD bd, int assinaturaClienteID, int assinanteID, int clienteIDAntigo, int clienteID)
        {
            int antigoCliente = 0;
            int novoCliente   = 0;

            //Desmembrando uma assinatura já desmembrada
            if (clienteIDAntigo > 0 && clienteID > 0)
            {
                antigoCliente = clienteIDAntigo;
                novoCliente   = clienteID;
            }
            //Removendo desmembramento
            else if (clienteIDAntigo == 0 && clienteID > 0)
            {
                antigoCliente = assinanteID;
                novoCliente   = clienteID;
            }
            //Desmembrando assinatura normal
            else if (clienteIDAntigo > 0 && clienteID == 0)
            {
                antigoCliente = clienteIDAntigo;
                clienteID     = assinanteID;
            }
            else
            {
                throw new Exception("Tentativa de desmembramento inválida.");
            }

            BD bdAux = new BD();

            try
            {
                var obj = new
                {
                    IngressoID           = 0,
                    BancoIngressoID      = 0,
                    ClienteID            = 0,
                    CreditoID            = 0,
                    CreditoClienteID     = 0,
                    ComprovanteID        = 0,
                    ComprovanteClienteID = 0,
                };

                var lista = VendaBilheteria.ToAnonymousList(obj);

                string sql = string.Format(@"SELECT 
                                               DISTINCT bi.ID, bi.IngressoID, bi.ClienteID, bc.ID AS CreditoID, bc.ClienteID AS CreditoClienteID, bic.ID AS ComprovanteID, bic.ClienteID AS ComprovanteClienteID
                                            FROM tIngresso i (NOLOCK)
                                            INNER JOIN tAssinaturaBancoIngresso bi (NOLOCK) ON bi.IngressoID = i.ID
                                            LEFT JOIN tAssinaturaBancoIngressoHistorico bh (NOLOCK) ON bh.AssinaturaBancoIngressoID = bi.ID
                                            LEFT JOIN tAssinaturaBancoIngressoCredito bc (NOLOCK) ON bh.AssinaturaBancoIngressoCreditoID = bc.ID
                                            LEFT JOIN tAssinaturaBancoIngressoComprovante bic (NOLOCK) ON bic.ID = bh.AssianturaBancoIngressoComprovanteID
                                            WHERE i.AssinaturaClienteID = {0} AND (bc.ID IS NULL OR bc.ClienteID = {1}) AND (bc.ID IS NULL OR bc.Utilizado = 'F')
                                            ", assinaturaClienteID, antigoCliente);

                if (!bdAux.Consulta(sql).Read())
                {
                    return;
                }

                do
                {
                    lista.Add(new
                    {
                        IngressoID           = bdAux.LerInt("IngressoID"),
                        BancoIngressoID      = bdAux.LerInt("ID"),
                        ClienteID            = bdAux.LerInt("ClienteID"),
                        CreditoID            = bdAux.LerInt("CreditoID"),
                        CreditoClienteID     = bdAux.LerInt("CreditoClienteID"),
                        ComprovanteID        = bdAux.LerInt("ComprovanteID"),
                        ComprovanteClienteID = bdAux.LerInt("ComprovanteClienteID"),
                    });
                } while (bdAux.Consulta().Read());

                bdAux.FecharConsulta();

                foreach (var item in lista)
                {
                    if (item.ClienteID == antigoCliente)
                    {
                        bd.Executar(string.Format("UPDATE tAssinaturaBancoIngresso SET ClienteID = {0} WHERE ID = {1} AND ClienteID = {2}", novoCliente, item.BancoIngressoID, antigoCliente));
                    }

                    if (item.CreditoClienteID > 0 && item.CreditoClienteID == antigoCliente)
                    {
                        bd.Executar(string.Format("UPDATE tAssinaturaBancoIngressoCredito SET ClienteID = {0} WHERE ID = {1} AND ClienteID = {2}", novoCliente, item.CreditoClienteID, antigoCliente));
                    }

                    if (item.ComprovanteID > 0 && item.ComprovanteClienteID == antigoCliente)
                    {
                        bd.Executar(string.Format("UPDATE tAssinaturaBancoIngressoComprovante SET ClienteID = {0} WHERE ID = {1} AND ClienteID = {2}", novoCliente, item.ComprovanteID, antigoCliente));
                    }
                }
            }
            finally
            {
                bdAux.Fechar();
            }
        }
Example #6
0
        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;
            }
        }
        public int VenderInternet(Dictionary <int, decimal> ingressosID, string sessionID, EstruturaReservaInternet estruturaReservaInternet, int entregaControleID, int pdvID, int clienteEnderecoID, int clienteID, string ip, EstruturaCortesia estruturaCortesia)
        {
            BD  bd = new BD();
            int vendaBilheteriaID = 0;

            try
            {
                StringBuilder stbSQL = new StringBuilder();

                //caixa para registrar a venda
                int caixaID = 0;

                if (estruturaReservaInternet.CaixaID == 0)
                {
                    caixaID = VerificaCaixaInternet();
                }
                else
                {
                    //Verificar o caixa do usuario.
                    caixaID = estruturaReservaInternet.CaixaID;
                }

                DataSet ds = MontaDadosVendaInternet(ingressosID, clienteID, sessionID, estruturaReservaInternet.CanalID, estruturaReservaInternet.UsuarioID);

                DataTable itensReservados   = ds.Tables[TABELA_GRID];    // Resumo
                DataTable ingressosVendidos = ds.Tables[TABELA_RESERVA]; // Detalhamento

                //verifica se a quantidade reservada no site é a mesma reservada no sistema
                if (ingressosVendidos.Rows.Count != ingressosID.Count)
                {
                    throw new BilheteriaException("Quantidade de ingressos diferente da reserva.", CodMensagemVenda.FalhaVenda);
                }

                bd.IniciarTransacao();

                //verifica se existem reservas
                if (itensReservados.Rows.Count == 0 && ingressosVendidos.Rows.Count == 0)
                {
                    throw new BilheteriaException("Não existe reserva para o cliente.", CodMensagemVenda.ReservaInexistente);
                }

                // VendaBilheteria
                int empresaID = new Canal().BuscaEmpresaIDporLojaID(estruturaReservaInternet.LojaID);

                VendaBilheteria vendaBilheteria = new VendaBilheteria();


                vendaBilheteria.Status.Valor              = VendaBilheteria.PAGO;
                vendaBilheteria.NivelRisco.Valor          = (int)VendaBilheteria.enumNivelRisco.SemRisco;
                vendaBilheteria.ClienteID.Valor           = clienteID;
                vendaBilheteria.CaixaID.Valor             = caixaID;
                vendaBilheteria.DataVenda.Valor           = System.DateTime.Now;
                vendaBilheteria.ClienteEnderecoID.Valor   = clienteEnderecoID;
                vendaBilheteria.EntregaControleID.Valor   = entregaControleID;
                vendaBilheteria.PdvID.Valor               = pdvID;
                vendaBilheteria.PagamentoProcessado.Valor = true;
                vendaBilheteria.Status.Valor              = VendaBilheteria.PAGO;
                vendaBilheteria.IP.Valor = ip;

                string sqlVendaBilheteria = vendaBilheteria.StringInserir();
                object vendaID            = bd.ConsultaValor(sqlVendaBilheteria);
                vendaBilheteria.Control.ID = (vendaID != null) ? Convert.ToInt32(vendaID) : 0;

                if (vendaBilheteria.Control.ID == 0)
                {
                    throw new BilheteriaException("Venda não foi gerada.", CodMensagemVenda.FalhaVenda);
                }

                string sqlSenha = "SELECT Senha FROM tVendaBilheteria (NOLOCK) WHERE ID=" + vendaBilheteria.Control.ID;
                object ret      = bd.ConsultaValor(sqlSenha);
                var    senha    = (ret != null) ? Convert.ToString(ret) : null;
                vendaBilheteriaID = vendaBilheteria.Control.ID;

                DataRow[] itensNormais     = itensReservados.Select(TIPO + "='" + TIPO_INGRESSO + "' AND " + TIPO_LUGAR + "<>'" + Setor.MesaFechada + "'");
                DataRow[] itensMesaFechada = itensReservados.Select(TIPO + "='" + TIPO_INGRESSO + "' AND " + TIPO_LUGAR + "='" + Setor.MesaFechada + "'");
                DataRow[] itensPacote      = itensReservados.Select(TIPO + "='" + TIPO_PACOTE + "'");

                #region Ingressos Normais
                foreach (DataRow item in itensNormais)
                {
                    DataRow[] ingressos = ingressosVendidos.Select(RESERVAID + "='" + (int)item[RESERVAID] + "'");

                    VendaBilheteriaItem vendaBilheteriaItem = new VendaBilheteriaItem();
                    vendaBilheteriaItem.VendaBilheteriaID.Valor = vendaBilheteria.Control.ID;
                    vendaBilheteriaItem.PacoteID.Valor          = 0;
                    vendaBilheteriaItem.Acao.Valor                  = VendaBilheteriaItem.VENDA;
                    vendaBilheteriaItem.TaxaConveniencia.Valor      = (int)item[CONV];
                    vendaBilheteriaItem.TaxaConvenienciaValor.Valor = (decimal)item["TaxaConvenienciaValor"];
                    vendaBilheteriaItem.TaxaComissao.Valor          = (int)item[TAXA_COMISSAO];
                    vendaBilheteriaItem.ComissaoValor.Valor         = (decimal)item[COMISSAO_VALOR];

                    string sqlVendaBilheteriaItem = vendaBilheteriaItem.StringInserir();
                    object id = bd.ConsultaValor(sqlVendaBilheteriaItem);
                    vendaBilheteriaItem.Control.ID = (id != null) ? Convert.ToInt32(id) : 0;

                    if (vendaBilheteriaItem.Control.ID == 0)
                    {
                        throw new BilheteriaException("Item de venda não foi gerada.", CodMensagemVenda.FalhaVenda);
                    }

                    int  x  = 0;
                    bool ok = false;
                    stbSQL = new StringBuilder();


                    stbSQL.Append("UPDATE tIngresso SET LojaID=" + estruturaReservaInternet.LojaID + ", ");
                    stbSQL.Append("VendaBilheteriaID=" + vendaBilheteria.Control.ID + ", Status='" + Ingresso.VENDIDO + "', PacoteID = 0, PacoteGrupo = '', CortesiaID = " + estruturaCortesia.ID);
                    stbSQL.Append(" WHERE(AssinaturaClienteID IS NULL OR AssinaturaClienteID = 0) AND ClienteID=" + clienteID + " AND SessionID = '" + sessionID + "' AND Status='" + Ingresso.RESERVADO + "' AND ID=" + (int)item["IngressoID"]);
                    x  = bd.Executar(stbSQL.ToString());
                    ok = (x >= 1);

                    if (!ok)
                    {
                        throw new BilheteriaException("Status do ingresso não pode ser atualizado.", CodMensagemVenda.FalhaVenda);
                    }



                    //inserir na Log
                    IngressoLog ingressoLog = new IngressoLog();
                    ingressoLog.TimeStamp.Valor  = System.DateTime.Now;
                    ingressoLog.IngressoID.Valor = (int)item[INGRESSOID];
                    ingressoLog.UsuarioID.Valor  = estruturaReservaInternet.UsuarioID; //usuario fixo para Internet
                    ingressoLog.BloqueioID.Valor = 0;
                    //ingressoLog.CortesiaID.Valor = Convert.ToInt32(ingressos[0][CORTESIAID]);
                    ingressoLog.CortesiaID.Valor = estruturaCortesia.ID;
                    ingressoLog.PrecoID.Valor    = (int)item[PRECOID];
                    ingressoLog.GerenciamentoIngressosID.Valor = (int)item[GERENCIAMENTO_INGRESSOS_ID];
                    ingressoLog.VendaBilheteriaItemID.Valor    = vendaBilheteriaItem.Control.ID;
                    ingressoLog.VendaBilheteriaID.Valor        = vendaBilheteria.Control.ID;
                    ingressoLog.CaixaID.Valor   = caixaID;                          // ABERTURA E FECHAMENTO DE CAIXA DIARIO PARA INTERNET
                    ingressoLog.LojaID.Valor    = estruturaReservaInternet.LojaID;  //loja fixa Internet
                    ingressoLog.CanalID.Valor   = estruturaReservaInternet.CanalID; //canal fixo Internet
                    ingressoLog.EmpresaID.Valor = empresaID;                        // FIXO IR
                    ingressoLog.ClienteID.Valor = clienteID;
                    ingressoLog.Acao.Valor      = IngressoLog.VENDER;
                    string sqlIngressoLogV = ingressoLog.StringInserir();
                    x = bd.Executar(sqlIngressoLogV);
                    bool okV = (x == 1);
                    if (!okV)
                    {
                        throw new BilheteriaException("Log de venda do ingresso não foi inserido.", CodMensagemVenda.FalhaVenda);
                    }
                }
                #endregion

                #region Mesa Fechada
                foreach (DataRow item in itensMesaFechada)
                {
                    DataRow[] ingressos = ingressosVendidos.Select(RESERVAID + "='" + (int)item[RESERVAID] + "'");

                    VendaBilheteriaItem vendaBilheteriaItem = new VendaBilheteriaItem();
                    vendaBilheteriaItem.VendaBilheteriaID.Valor = vendaBilheteria.Control.ID;
                    vendaBilheteriaItem.PacoteID.Valor          = 0;
                    vendaBilheteriaItem.Acao.Valor                  = VendaBilheteriaItem.VENDA;
                    vendaBilheteriaItem.TaxaConveniencia.Valor      = (int)item[CONV];
                    vendaBilheteriaItem.TaxaConvenienciaValor.Valor = (decimal)item["TaxaConvenienciaValor"];
                    vendaBilheteriaItem.TaxaComissao.Valor          = (int)item[TAXA_COMISSAO];
                    vendaBilheteriaItem.ComissaoValor.Valor         = (decimal)item[COMISSAO_VALOR];

                    string sqlVendaBilheteriaItem = vendaBilheteriaItem.StringInserir();
                    object id = bd.ConsultaValor(sqlVendaBilheteriaItem);
                    vendaBilheteriaItem.Control.ID = (id != null) ? Convert.ToInt32(id) : 0;

                    if (vendaBilheteriaItem.Control.ID == 0)
                    {
                        throw new BilheteriaException("Item de venda não foi gerada.", CodMensagemVenda.FalhaVenda);
                    }

                    foreach (DataRow i in ingressos)
                    {
                        int  x  = 0;
                        bool ok = false;
                        stbSQL = new StringBuilder();

                        stbSQL.Append("UPDATE tIngresso SET LojaID=" + estruturaReservaInternet.LojaID + ", ");
                        stbSQL.Append("VendaBilheteriaID=" + vendaBilheteria.Control.ID + ", Status='" + Ingresso.VENDIDO + "', PacoteID = 0, PacoteGrupo = '', CortesiaID = " + estruturaCortesia.ID);
                        stbSQL.Append(" WHERE (AssinaturaClienteID IS NULL OR AssinaturaClienteID = 0) AND ClienteID=" + clienteID + " AND SessionID = '" + sessionID + "' AND Status='" + Ingresso.RESERVADO + "' AND ID=" + (int)i[INGRESSOID]);

                        x  = bd.Executar(stbSQL.ToString());
                        ok = (x >= 1);
                        if (!ok)
                        {
                            throw new BilheteriaException("Status do ingresso não pode ser atualizado.", CodMensagemVenda.FalhaVenda);
                        }


                        //inserir na Log
                        IngressoLog ingressoLog = new IngressoLog();
                        ingressoLog.TimeStamp.Valor  = System.DateTime.Now;
                        ingressoLog.IngressoID.Valor = (int)i[INGRESSOID];
                        ingressoLog.UsuarioID.Valor  = estruturaReservaInternet.UsuarioID; //USUARIO INTERNET
                        ingressoLog.BloqueioID.Valor = 0;
                        //ingressoLog.CortesiaID.Valor = Convert.ToInt32(i[CORTESIAID]);
                        ingressoLog.CortesiaID.Valor            = estruturaCortesia.ID;
                        ingressoLog.PrecoID.Valor               = (int)i[PRECOID];
                        ingressoLog.VendaBilheteriaItemID.Valor = vendaBilheteriaItem.Control.ID;
                        ingressoLog.VendaBilheteriaID.Valor     = vendaBilheteria.Control.ID;
                        ingressoLog.CaixaID.Valor               = caixaID;              //CAIXA ABERTO DIARIAMENTE PARA INTERNET
                        ingressoLog.LojaID.Valor    = estruturaReservaInternet.LojaID;  //Loja Internet
                        ingressoLog.CanalID.Valor   = estruturaReservaInternet.CanalID; //Canal Internet
                        ingressoLog.EmpresaID.Valor = empresaID;                        //Empresa IR
                        ingressoLog.ClienteID.Valor = clienteID;
                        ingressoLog.Acao.Valor      = IngressoLog.VENDER;
                        string sqlIngressoLogV = ingressoLog.StringInserir();
                        x = bd.Executar(sqlIngressoLogV);
                        bool okV = (x == 1);
                        if (!okV)
                        {
                            throw new BilheteriaException("Log de venda do ingresso não foi inserido.", CodMensagemVenda.FalhaVenda);
                        }
                    }
                }
                #endregion

                #region Pacote
                int PacoteGrupo   = 0;
                int pacoteIDAtual = 0;
                foreach (DataRow item in itensPacote)
                {
                    DataRow[] ingressosPacote = ingressosVendidos.Select(RESERVAID + "='" + (int)item[RESERVAID] + "'");

                    Pacote oPacote = new Pacote();
                    oPacote.Ler((int)ingressosPacote[0][PACOTEID]);

                    VendaBilheteriaItem vendaBilheteriaItem = new VendaBilheteriaItem();
                    vendaBilheteriaItem.VendaBilheteriaID.Valor = vendaBilheteria.Control.ID;
                    vendaBilheteriaItem.PacoteID.Valor          = oPacote.Control.ID;
                    vendaBilheteriaItem.Acao.Valor = VendaBilheteriaItem.VENDA;


                    if (pacoteIDAtual != vendaBilheteriaItem.PacoteID.Valor)
                    {
                        PacoteGrupo   = 0;
                        pacoteIDAtual = vendaBilheteriaItem.PacoteID.Valor;
                    }
                    PacoteGrupo++;

                    vendaBilheteriaItem.PacoteGrupo.Valor = PacoteGrupo;


                    if (item[CONV] == DBNull.Value)
                    {
                        item[CONV] = 0;
                    }
                    if (item[VALOR_CONV] == DBNull.Value)
                    {
                        item[VALOR_CONV] = 0;
                    }
                    if (item[TAXA_COMISSAO] == DBNull.Value)
                    {
                        item[TAXA_COMISSAO] = 0;
                    }
                    if (item[COMISSAO_VALOR] == DBNull.Value)
                    {
                        item[COMISSAO_VALOR] = 0;
                    }

                    int     conv          = (int)item[CONV];
                    decimal valorConv     = (decimal)item["TaxaConvenienciaValor"];
                    int     taxaComissao  = (int)item[TAXA_COMISSAO];
                    decimal comissaovalor = (decimal)item[COMISSAO_VALOR];

                    if (!(bool)item["PermitirCancelamentoAvulso"])
                    {
                        vendaBilheteriaItem.TaxaConveniencia.Valor      = conv;
                        vendaBilheteriaItem.TaxaConvenienciaValor.Valor = valorConv;
                        vendaBilheteriaItem.TaxaComissao.Valor          = taxaComissao;
                        vendaBilheteriaItem.ComissaoValor.Valor         = comissaovalor;

                        string sqlVendaBilheteriaItem = vendaBilheteriaItem.StringInserir();
                        object id = bd.ConsultaValor(sqlVendaBilheteriaItem);
                        vendaBilheteriaItem.Control.ID = (id != null) ? Convert.ToInt32(id) : 0;

                        if (vendaBilheteriaItem.Control.ID == 0)
                        {
                            throw new BilheteriaException("Item de venda não foi gerada.", CodMensagemVenda.FalhaVenda);
                        }
                    }

                    foreach (DataRow i in ingressosPacote)
                    {
                        if ((bool)item["PermitirCancelamentoAvulso"])
                        {
                            CanalPacote canalPacote = new CanalPacote();

                            //busca as taxas de conveniencia e comissão e popula as variaveis
                            DataTable taxasPacote   = canalPacote.BuscaTaxasConvenienciaComissao(estruturaReservaInternet.CanalID, vendaBilheteriaItem.PacoteID.Valor);
                            Preco     precoIngresso = new Preco();
                            precoIngresso.Ler((int)i["PrecoID"]);

                            int     taxaConvenienciaPacote = (int)taxasPacote.Rows[0]["TaxaConveniencia"];
                            decimal taxaMinPacote          = Convert.ToDecimal(taxasPacote.Rows[0]["TaxaMinima"]);
                            decimal taxaMaxPacote          = Convert.ToDecimal(taxasPacote.Rows[0]["TaxaMaxima"]);
                            int     taxaComissaoPacote     = (int)taxasPacote.Rows[0]["TaxaComissao"];
                            decimal comissaoMinPacote      = Convert.ToDecimal(taxasPacote.Rows[0]["ComissaoMinima"]);
                            decimal comissaoMaxPacote      = Convert.ToDecimal(taxasPacote.Rows[0]["ComissaoMaxima"]);
                            decimal comissaoValorTotal     = 0;
                            decimal taxaValorTotal         = 0;

                            if (comissaovalor >= taxaComissaoPacote && taxaComissaoPacote != 0)
                            {
                                comissaoValorTotal = comissaovalor / ingressosPacote.Count();
                            }
                            else
                            {
                                if (taxaComissaoPacote > 0 || comissaoMinPacote > 0)
                                {
                                    decimal dAux = (taxaComissaoPacote / 100m) * precoIngresso.Valor.Valor;

                                    if (dAux < comissaoMinPacote)
                                    {
                                        comissaoValorTotal += Decimal.Round(comissaoMinPacote, 2);
                                    }
                                    else if (dAux > comissaoMaxPacote && comissaoMaxPacote > 0)
                                    {
                                        comissaoValorTotal += Decimal.Round(comissaoMaxPacote, 2);
                                    }
                                    else
                                    {
                                        comissaoValorTotal += Decimal.Round(dAux, 2);
                                    }
                                }
                            }
                            vendaBilheteriaItem.TaxaComissao.Valor = taxaComissaoPacote;

                            vendaBilheteriaItem.ComissaoValor.Valor = comissaoValorTotal;
                            //popula a conveniencia de acordo com a taxa minima e maxima
                            if (valorConv >= taxaMaxPacote && taxaMaxPacote != 0)
                            {
                                taxaValorTotal = valorConv / ingressosPacote.Count();
                            }
                            else
                            {
                                if (taxaConvenienciaPacote > 0 || taxaMinPacote > 0)
                                {
                                    decimal dAux = (taxaConvenienciaPacote / 100m) * precoIngresso.Valor.Valor;

                                    if (dAux < taxaMinPacote)
                                    {
                                        taxaValorTotal += Decimal.Round(taxaMinPacote, 2);
                                    }
                                    else if (dAux > taxaMaxPacote && taxaMaxPacote > 0)
                                    {
                                        taxaValorTotal += Decimal.Round(taxaMaxPacote, 2);
                                    }
                                    else
                                    {
                                        taxaValorTotal += Decimal.Round(dAux, 2);
                                    }
                                }
                            }

                            vendaBilheteriaItem.TaxaConveniencia.Valor      = taxaConvenienciaPacote;
                            vendaBilheteriaItem.TaxaConvenienciaValor.Valor = taxaValorTotal;

                            string sqlVendaBilheteriaItem = vendaBilheteriaItem.StringInserir();
                            object id = bd.ConsultaValor(sqlVendaBilheteriaItem);
                            vendaBilheteriaItem.Control.ID = (id != null) ? Convert.ToInt32(id) : 0;

                            if (vendaBilheteriaItem.Control.ID == 0)
                            {
                                throw new BilheteriaException("Item de venda não foi gerada.", CodMensagemVenda.FalhaVenda);
                            }
                        }

                        int  x  = 0;
                        bool ok = false;
                        stbSQL = new StringBuilder();

                        stbSQL.Append("UPDATE tIngresso SET LojaID=" + estruturaReservaInternet.LojaID + ", ");
                        stbSQL.Append("VendaBilheteriaID=" + vendaBilheteria.Control.ID + ", Status='" + Ingresso.VENDIDO + "', CortesiaID = " + estruturaCortesia.ID);
                        stbSQL.Append(" WHERE (AssinaturaClienteID IS NULL OR AssinaturaClienteID = 0) AND ClienteID=" + clienteID + " AND SessionID = '" + sessionID + "' AND Status='" + Ingresso.RESERVADO + "' AND ID=" + (int)i[INGRESSOID]);
                        x  = bd.Executar(stbSQL.ToString());
                        ok = (x >= 1);
                        if (!ok)
                        {
                            throw new BilheteriaException("Status do ingresso não pode ser atualizado.", CodMensagemVenda.FalhaVenda);
                        }

                        //inserir na Log
                        IngressoLog ingressoLog = new IngressoLog();
                        ingressoLog.TimeStamp.Valor  = System.DateTime.Now;
                        ingressoLog.IngressoID.Valor = (int)i[INGRESSOID];
                        ingressoLog.UsuarioID.Valor  = estruturaReservaInternet.UsuarioID; //usuario
                        ingressoLog.BloqueioID.Valor = 0;
                        //ingressoLog.CortesiaID.Valor = Convert.ToInt32(i[CORTESIAID]);
                        ingressoLog.CortesiaID.Valor            = estruturaCortesia.ID;
                        ingressoLog.PrecoID.Valor               = (int)i[PRECOID];
                        ingressoLog.VendaBilheteriaItemID.Valor = vendaBilheteriaItem.Control.ID;
                        ingressoLog.VendaBilheteriaID.Valor     = vendaBilheteria.Control.ID;
                        ingressoLog.CaixaID.Valor               = caixaID;              //caixa do usuario
                        ingressoLog.LojaID.Valor    = estruturaReservaInternet.LojaID;  //loja
                        ingressoLog.CanalID.Valor   = estruturaReservaInternet.CanalID; //canal
                        ingressoLog.EmpresaID.Valor = empresaID;                        //empresa IR
                        ingressoLog.ClienteID.Valor = clienteID;
                        ingressoLog.Acao.Valor      = IngressoLog.VENDER;
                        string sqlIngressoLogV = ingressoLog.StringInserir();
                        x = bd.Executar(sqlIngressoLogV);
                        bool okV = (x == 1);
                        if (!okV)
                        {
                            throw new BilheteriaException("Log de venda do ingresso não foi inserido.", CodMensagemVenda.FalhaVenda);
                        }
                    }
                }
                #endregion



                bd.FinalizarTransacao();
            }
            catch (Exception ex)
            {
                bd.DesfazerTransacao();

                throw ex;
            }
            finally
            {
                bd.Fechar();
            }
            return(vendaBilheteriaID);
        }
Example #8
0
        public string TrocarPreco(Dictionary <int, int> ingressoXpreco, decimal valorPagar,
                                  decimal valorCancelar, int clienteID, int caixaID, int canalID,
                                  int empresaID, int lojaID, string motivoTroca, int usuarioID,
                                  int BIN, int codigoAutorizacaoCartao, int indiceInstituicaoTransacao,
                                  int indiceTipoCartao, int modalidadePagamentoCodigo,
                                  string modalidadePagamentoTexto, string notaFiscalCliente,
                                  string notaFiscalEstabelecimento, int NSUHost, int NSUSitef,
                                  int formaPagamentoEscolhida)
        {
            BD bd = new BD();

            try
            {
                bd.IniciarTransacao();

                /*
                 * VB
                 * VBI
                 * VBFP
                 * Log
                 * tIngressO
                 */

                #region Cancelamento
                VendaBilheteria vbCancelamento = new VendaBilheteria();
                vbCancelamento.CaixaID.Valor   = caixaID;
                vbCancelamento.ClienteID.Valor = clienteID;
                vbCancelamento.DataVenda.Valor = DateTime.Now;
                vbCancelamento.Obs.Valor       = motivoTroca;
                vbCancelamento.Status.Valor    = VendaBilheteria.CANCELADO;
                vbCancelamento.TaxaConvenienciaValorTotal.Valor = 0;
                vbCancelamento.TaxaEntregaID.Valor       = 0;
                vbCancelamento.TaxaEntregaValor.Valor    = 0;
                vbCancelamento.ValorTotal.Valor          = valorCancelar;
                vbCancelamento.PagamentoProcessado.Valor = true;
                string sql     = vbCancelamento.StringInserir();
                object retorno = bd.ConsultaValor(sql);
                int    vendaBilheteriaIDCancelamento = Convert.ToInt32(retorno);
                if (vendaBilheteriaIDCancelamento == 0)
                {
                    throw new Exception("Não foi possível inserir o cancelamento na VendaBilheteria");
                }

                VendaBilheteriaFormaPagamento vbfpCancelamento = new VendaBilheteriaFormaPagamento();
                vbfpCancelamento.FormaPagamentoID.Valor  = formaPagamentoEscolhida;
                vbfpCancelamento.Porcentagem.Valor       = 100;
                vbfpCancelamento.Valor.Valor             = valorCancelar;
                vbfpCancelamento.VendaBilheteriaID.Valor = vendaBilheteriaIDCancelamento;

                sql     = vbfpCancelamento.StringInserir();
                retorno = bd.ConsultaValor(sql);
                int vendaBilheteriaFormaPagamentoIDCancelamento = Convert.ToInt32(retorno);

                if (vendaBilheteriaFormaPagamentoIDCancelamento == 0)
                {
                    throw new Exception("Não foi possível inserir o cancelamento na VendaBilheteriaFormaPagamento");
                }

                foreach (KeyValuePair <int, int> iXp in ingressoXpreco)
                {
                    int ingressoID          = iXp.Key;
                    VendaBilheteriaItem vbi = new VendaBilheteriaItem();
                    vbi.Acao.Valor                  = VendaBilheteriaItem.CANCELAMENTO;
                    vbi.PacoteID.Valor              = 0;
                    vbi.TaxaConveniencia.Valor      = 0;
                    vbi.TaxaConvenienciaValor.Valor = 0;
                    vbi.VendaBilheteriaID.Valor     = vendaBilheteriaIDCancelamento;

                    sql     = vbi.StringInserir();
                    retorno = bd.ConsultaValor(sql);
                    int vendaBilheteriaItemIDCancelamento = Convert.ToInt32(retorno);
                    if (vendaBilheteriaItemIDCancelamento == 0)
                    {
                        throw new Exception("Não foi possível inserir o cancelamento na VendaBilheteriaItem");
                    }


                    Ingresso ingresso = new Ingresso();
                    ingresso.Ler(ingressoID);
                    IngressoLog oIngressoLog = new IngressoLog();
                    oIngressoLog.Acao.Valor                  = IngressoLog.CANCELAR;
                    oIngressoLog.BloqueioID.Valor            = 0;
                    oIngressoLog.CaixaID.Valor               = caixaID;
                    oIngressoLog.CanalID.Valor               = canalID;
                    oIngressoLog.ClienteID.Valor             = ingresso.ClienteID.Valor;
                    oIngressoLog.CortesiaID.Valor            = 0;
                    oIngressoLog.EmpresaID.Valor             = empresaID;
                    oIngressoLog.IngressoID.Valor            = ingressoID;
                    oIngressoLog.LojaID.Valor                = lojaID;
                    oIngressoLog.Obs.Valor                   = motivoTroca;
                    oIngressoLog.PrecoID.Valor               = ingresso.PrecoID.Valor;
                    oIngressoLog.TimeStamp.Valor             = DateTime.Now;
                    oIngressoLog.UsuarioID.Valor             = usuarioID;
                    oIngressoLog.VendaBilheteriaID.Valor     = vendaBilheteriaIDCancelamento;
                    oIngressoLog.VendaBilheteriaItemID.Valor = vendaBilheteriaItemIDCancelamento;

                    sql     = oIngressoLog.StringInserir();
                    retorno = bd.ConsultaValor(sql);
                }
                #endregion

                #region Nova Venda
                VendaBilheteria vbVenda = new VendaBilheteria();
                vbVenda.BIN.Valor       = BIN;
                vbVenda.CaixaID.Valor   = caixaID;
                vbVenda.ClienteID.Valor = clienteID;
                vbVenda.CodigoAutorizacaoCredito.Valor = codigoAutorizacaoCartao;
                vbVenda.DataVenda.Valor = DateTime.Now;
                vbVenda.IndiceInstituicaoTransacao.Valor = indiceInstituicaoTransacao;
                vbVenda.IndiceTipoCartao.Valor           = indiceTipoCartao;
                vbVenda.ModalidadePagamentoCodigo.Valor  = modalidadePagamentoCodigo;
                vbVenda.ModalidadePagamentoTexto.Valor   = modalidadePagamentoTexto;
                vbVenda.NotaFiscalCliente.Valor          = notaFiscalCliente;
                vbVenda.NotaFiscalEstabelecimento.Valor  = notaFiscalEstabelecimento;
                vbVenda.NSUHost.Valor  = NSUHost;
                vbVenda.NSUSitef.Valor = NSUSitef;
                vbVenda.Obs.Valor      = string.Empty;
                vbVenda.Status.Valor   = VendaBilheteria.PAGO;
                vbVenda.TaxaConvenienciaValorTotal.Valor = 0;
                vbVenda.TaxaEntregaID.Valor       = 0;
                vbVenda.TaxaEntregaValor.Valor    = 0;
                vbVenda.ValorTotal.Valor          = valorPagar;
                vbVenda.PagamentoProcessado.Valor = true;
                sql     = vbVenda.StringInserir();
                retorno = bd.ConsultaValor(sql);
                int vendaBilheteriaID = Convert.ToInt32(retorno);
                if (vendaBilheteriaID == 0)
                {
                    throw new Exception("Não foi possível inserir a venda na VendaBilheteria");
                }

                VendaBilheteriaFormaPagamento vbfpVenda = new VendaBilheteriaFormaPagamento();
                vbfpVenda.FormaPagamentoID.Valor  = formaPagamentoEscolhida;
                vbfpVenda.Porcentagem.Valor       = 100;
                vbfpVenda.Valor.Valor             = valorPagar;
                vbfpVenda.VendaBilheteriaID.Valor = vendaBilheteriaID;

                sql     = vbfpVenda.StringInserir();
                retorno = bd.ConsultaValor(sql);
                int vendaBilheteriaFormaPagamentoID = Convert.ToInt32(retorno);
                if (vendaBilheteriaFormaPagamentoID == 0)
                {
                    throw new Exception("Não foi possível inserir a venda na VendaBilheteriaFormaPagamento");
                }

                foreach (KeyValuePair <int, int> iXp in ingressoXpreco)
                {
                    int ingressoID          = iXp.Key;
                    VendaBilheteriaItem vbi = new VendaBilheteriaItem();
                    vbi.Acao.Valor                  = VendaBilheteriaItem.VENDA;
                    vbi.PacoteID.Valor              = 0;
                    vbi.TaxaConveniencia.Valor      = 0;
                    vbi.TaxaConvenienciaValor.Valor = 0;
                    vbi.VendaBilheteriaID.Valor     = vendaBilheteriaID;

                    sql     = vbi.StringInserir();
                    retorno = bd.ConsultaValor(sql);
                    int vendaBilheteriaItemID = Convert.ToInt32(retorno);
                    if (vendaBilheteriaItemID == 0)
                    {
                        throw new Exception("Não foi possível inserir a venda na VendaBilheteriaItem");
                    }


                    Ingresso ingresso = new Ingresso();
                    ingresso.Ler(ingressoID);
                    IngressoLog oIngressoLog = new IngressoLog();
                    oIngressoLog.Acao.Valor       = IngressoLog.VENDER;
                    oIngressoLog.BloqueioID.Valor = 0;
                    oIngressoLog.CaixaID.Valor    = caixaID;
                    oIngressoLog.CanalID.Valor    = canalID;
                    oIngressoLog.ClienteID.Valor  = ingresso.ClienteID.Valor;
                    oIngressoLog.CortesiaID.Valor = 0;
                    oIngressoLog.EmpresaID.Valor  = empresaID;
                    oIngressoLog.IngressoID.Valor = ingressoID;
                    oIngressoLog.LojaID.Valor     = lojaID;
                    oIngressoLog.Obs.Valor        = string.Empty;
                    int precoID = 0;
                    ingressoXpreco.TryGetValue(ingressoID, out precoID);
                    if (precoID == 0)
                    {
                        throw new Exception("Não existe preço definido para um dos ingressos!");
                    }
                    oIngressoLog.PrecoID.Valor               = precoID;
                    oIngressoLog.TimeStamp.Valor             = DateTime.Now;
                    oIngressoLog.UsuarioID.Valor             = usuarioID;
                    oIngressoLog.VendaBilheteriaID.Valor     = vendaBilheteriaID;
                    oIngressoLog.VendaBilheteriaItemID.Valor = vendaBilheteriaItemID;
                    sql = oIngressoLog.StringInserir();
                    bd.ConsultaValor(sql);

                    //ingresso.CodigoBarra.Valor = new CodigoBarra().GerarCodigoBarra(precoID, ingresso.EventoID.Valor);
                    ingresso.Status.Valor            = Ingresso.VENDIDO;
                    ingresso.VendaBilheteriaID.Valor = vendaBilheteriaID;
                    ingresso.UsuarioID.Valor         = usuarioID;
                    ingresso.LojaID.Valor            = lojaID;
                    ingresso.PrecoID.Valor           = precoID;

                    if (!ingresso.Atualizar(bd))
                    {
                        throw new Exception("Ingresso não pôde ser atualizado!");
                    }
                }
                #endregion
                bd.FinalizarTransacao();
                retorno = bd.ConsultaValor("SELECT Senha FROM tVendaBilheteria WHERE ID = " + vendaBilheteriaID);
                if (retorno is string)
                {
                    return((string)retorno);
                }
                else
                {
                    return(string.Empty);
                }
            }
            catch
            {
                bd.DesfazerTransacao();
            }
            return(null);
        }