Ejemplo n.º 1
0
        } // fim de UltimaAcaoIgualCancelar

        /// <summary>
        /// Checa os ingressos de um item de venda
        /// </summary>
        /// <returns></returns>
        public override bool ChecarIngressoStatusCancelar()
        {
            Ingresso ingresso       = new Ingresso();
            bool     statusCancelar = true;

            try
            {
                // Obtendo dados atravehs de SQL
                string sql =
                    "SELECT     tIngressoLog.IngressoID, tIngressoLog.VendaBilheteriaItemID " +
                    "FROM       tIngressoLog INNER JOIN " +
                    "tIngresso ON tIngressoLog.IngressoID = tIngresso.ID INNER JOIN " +
                    "tVendaBilheteriaItem ON tIngressoLog.VendaBilheteriaItemID = tVendaBilheteriaItem.ID " +
                    "WHERE     (tIngressoLog.VendaBilheteriaItemID = " + this.Control.ID + ")";
                bd.Consulta(sql);
                while (bd.Consulta().Read() && statusCancelar)
                {
                    ingresso.Ler(bd.LerInt("IngressoID"));
                    statusCancelar = ingresso.ChecarStatusCancelar();
                }
                bd.Fechar();
                return(statusCancelar);
            }
            catch (Exception erro)
            {
                throw erro;
            }
        } // fim de ChecarIngressoStatusCancelar
Ejemplo n.º 2
0
        private void GerarIngressosSetor(BD bd, List <GerarEventoEtapa1Fase3Model.SetoresNovo> setores)
        {
            foreach (GerarEventoEtapa1Fase3Model.SetoresNovo setor in setores)
            {
                try
                {
                    var ingresso = new Ingresso();

                    if (setor.Tipo == Setor.Tipo.Pista)
                    {
                        ingresso.Acrescentar(setor.ApresentacaoSetorID, this.Resultado.Evento.Control.ID, setor.ApresentacaoID, setor.SetorID, this.empresaID, this.Resultado.Evento.LocalID.Valor, 0, setor.Quantidade, 1, bd, true, null);
                    }
                    else
                    {
                        setor.Quantidade = ingresso.GerarLugares(setor.SetorID, setor.ApresentacaoSetorID, this.Resultado.Evento.Control.ID, setor.ApresentacaoID, this.empresaID, this.Resultado.Evento.LocalID.Valor, null, Enumerators.TipoCodigoBarra.Estruturado, bd);
                    }

                    ApresentacaoSetor aps = new ApresentacaoSetor(UsuarioID);
                    aps.Control.ID = setor.ApresentacaoSetorID;
                    aps.AtualizarIngressosGerados(bd);
                }
                catch (IngressoException ex)
                {
                    setor.IngressosGerados = false;
                    Console.WriteLine(ex.Message);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Ejemplo n.º 3
0
        }         // fim de InserirVenda

        public int IngressoID(int apresentacaoID, int setorID, string codigo)
        {
            Ingresso ingresso = new Ingresso();

            ingresso.Codigo.Valor = codigo;
            ingresso.Identifica(apresentacaoID, setorID);
            return(ingresso.Control.ID);
        }
Ejemplo n.º 4
0
        } // fim de IngressoIDsPorAcao

        /// <summary>
        /// Alimenta esse IngressoLog de acordo com o Ingresso passado como parametro
        /// </summary>
        public override void Ingresso(Ingresso ingresso)
        {
            this.IngressoID.Valor = ingresso.Control.ID;
            this.UsuarioID.Valor  = ingresso.UsuarioID.Valor;
            this.BloqueioID.Valor = ingresso.BloqueioID.Valor;
            this.CortesiaID.Valor = ingresso.CortesiaID.Valor;
            this.PrecoID.Valor    = ingresso.PrecoID.Valor;
            this.TimeStamp.Valor  = System.DateTime.Now;
        }
        public DataTable PesquisarCodigoBarras(string codigoBarra)
        {
            BD        bd     = null;
            DataTable tabela = EstruturaHistorico();
            int       ingressoID;

            try
            {
                bd         = new BD();
                ingressoID = 0;

                using (IDataReader oDataReader = bd.Consulta("" +
                                                             "SELECT " +
                                                             "   tIngresso.ID " +
                                                             "FROM " +
                                                             "   tIngresso (NOLOCK) " +
                                                             "WHERE " +
                                                             "   (CodigoBarra = '" + codigoBarra + "' OR CodigoBarraCliente='" + codigoBarra + "') " +
                                                             "ORDER BY " +
                                                             "   tIngresso.ID"))
                {
                    if (!oDataReader.Read())
                    {
                        throw new ApplicationException("Código de Barras não encontrado!");
                    }

                    ingressoID = bd.LerInt("ID");

                    if (ingressoID < 1)
                    {
                        throw new ApplicationException("Código de Barras não encontrado!");
                    }

                    Ingresso ingresso = new Ingresso();
                    ingresso.Control.ID = ingressoID;

                    tabela = ingresso.Historico();
                }

                return(AssinaturaBancoIngresso.VerificarSeExisteBancoIngresso(ingressoID, tabela));
            }
            finally
            {
                if (bd != null)
                {
                    bd.Fechar();
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Vai inserir os ingressos on demand, este método só é utilizado em caso de compras para cinema!!!
        /// Não gerará código sequencial nem código do lugar!
        /// </summary>
        /// <param name="estruturaReserva"></param>
        /// <param name="apresentacaoSetorID"></param>
        /// <param name="eventoID"></param>
        /// <param name="apresentacaoID"></param>
        /// <param name="setorID"></param>
        /// <param name="ingressosRetorno"></param>
        /// <param name="listaPreco"></param>
        /// <returns></returns>
        private List <Ingresso> NovoNaoMarcadoOnDemand(EstruturaReservaInternet estruturaReserva, int apresentacaoSetorID, int eventoID, int apresentacaoID, int setorID, List <Ingresso> ingressosRetorno, List <EstruturaPrecoReservaSite> listaPreco)
        {
            BD bd = new BD();

            try
            {
                List <int> ids   = this.NovoNaoMarcadoOnDemand(bd, eventoID, apresentacaoID, apresentacaoSetorID, setorID, listaPreco.Count - ingressosRetorno.Count);
                int        atual = ingressosRetorno.Count;

                for (int i = atual; i < listaPreco.Count; i++)
                {
                    var ingresso = new Ingresso();
                    ingresso.Control.ID             = ids[0];
                    ingresso.PrecoID.Valor          = listaPreco[atual].ID;
                    ingresso.UsuarioID.Valor        = estruturaReserva.UsuarioID;
                    ingresso.LojaID.Valor           = estruturaReserva.LojaID;
                    ingresso.ClienteID.Valor        = estruturaReserva.ClienteID;
                    ingresso.SessionID.Valor        = estruturaReserva.SessionID;
                    ingresso.TimeStampReserva.Valor = DateTime.Now;
                    ingresso.TxConv           = new Bilheteria().TaxaConveniencia(eventoID, listaPreco[atual].ID, estruturaReserva.CanalID);;
                    ingresso.CotaItemID       = listaPreco[atual].CotaItemID;
                    ingresso.CotaItemIDAPS    = listaPreco[atual].CotaItemIDAPS;
                    ingresso.SerieID.Valor    = 0;
                    ingresso.CompraGUID.Valor = estruturaReserva.GUID;
                    ingressosRetorno.Add(ingresso);
                }

                return(ingressosRetorno);
            }
            catch (Exception ex)
            {
                bd.DesfazerTransacao();
                throw ex;
            }
            finally
            {
                bd.Fechar();
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Método para retornar os ingressos (para reserva) dos melhores lugares de mesa fechada.
        /// kim
        /// </summary>
        /// <param name="usuarioID"></param>
        /// <param name="lojaID"></param>
        /// <param name="sessionID"></param>
        /// <param name="clienteID"></param>
        /// <param name="eventoID"></param>
        /// <param name="apresentacaoSetorID"></param>
        /// <param name="precos"></param>
        /// <param name="preReserva"></param>
        /// <returns></returns>
        public List <Ingresso> MelhoresIngressos(int usuarioID, int lojaID, string sessionID, int clienteID, int eventoID,
                                                 int apresentacaoID, int apresentacaoSetorID, int setorID, List <EstruturaPrecoReservaSite> precos,
                                                 Setor.enumLugarMarcado tipoSetor, EstruturaCotasInfo cotaInfo, int serieID, EstruturaReservaInternet estruturaReserva, bool isEntradaFranca)
        {
            BD               bd               = new BD(ConfigurationManager.AppSettings["ConexaoReadOnly"]);
            BD               bdReserva        = new BD();
            Ingresso         oIngresso        = new Ingresso();
            Bilheteria       oBilheteria      = new Bilheteria();
            Cota             oCota            = new Cota();
            CotaItemControle cotaItemControle = new CotaItemControle();
            CotaItem         oCotaItem        = new CotaItem();
            Lugar            oLugar           = new Lugar(); //usado para a busca de melhores lugares.
            List <Ingresso>  ingressosRetorno;
            decimal          precoValor;
            int              p;
            decimal          valorConv          = 0;
            decimal          valorProcessamento = 0;
            //decimal valor;
            Cortesia oCortesia        = new Cortesia();
            int      CortesiaPadraoID = 0;

            DateTime timeStamp = DateTime.Now.AddMinutes(new ConfigGerenciador().getValorTempoReserva());

            try
            {
                int qtdPrecos = 0;
                //Essa variavel duplica o preço e o valor pela quantidade de para reservar.
                //Dessa forma é possível reservar os lugares com os preços corretos. kim
                List <EstruturaPrecoReservaSite> precoPorLugar = new List <EstruturaPrecoReservaSite>();
                List <EstruturaPrecoReservaSite> listaPreco    = new List <EstruturaPrecoReservaSite>();
                EstruturaPrecoReservaSite        itemPreco;

                List <EstruturaCotaItemReserva> listaCotaItem = new List <EstruturaCotaItemReserva>();
                if (cotaInfo.CotaID_Apresentacao != 0 || cotaInfo.CotaID_ApresentacaoSetor != 0)
                {
                    listaCotaItem = oCotaItem.getListaCotaItemReserva(cotaInfo.CotaID_Apresentacao, cotaInfo.CotaID_ApresentacaoSetor);
                }

                cotaInfo.ApresentacaoID      = apresentacaoID;
                cotaInfo.ApresentacaoSetorID = apresentacaoSetorID;

                var qtdIncrementada = 0;

                foreach (EstruturaPrecoReservaSite preco in precos)
                {
                    //Verifica se é possivel reservar o ingresso apartir das cotas geradas p/ a apresentacao/setor

                    oCotaItem.AtualizarInformacoesCota(listaCotaItem, preco, cotaInfo);

                    if (listaCotaItem.Any() && cotaInfo.CotaItemID > 0)
                    {
                        cotaInfo.QuantidadeJaVendida = cotaItemControle.getQuantidadeNovo(cotaInfo.CotaItemID, cotaInfo.CotaItemID_APS, cotaInfo.ApresentacaoID, cotaInfo.ApresentacaoSetorID);
                        var qtdReservar = preco.QuantidadeReservar();
                        if (!cotaInfo.ValidaReserva(qtdReservar))
                        {
                            throw new BilheteriaException(string.Format("Não será possível reservar o preço \"{0}\", o limite de venda foi excedido.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel);
                        }
                    }

                    precoValor = 0;
                    // Verifica se existe quantidade do PrecoID disponivel para venda e retorna via referencia o valor do preço
                    if (preco.Quantidade != oBilheteria.GetIngressosQPodeReservar(clienteID, sessionID, preco.ID, preco.Quantidade, ref precoValor, false, serieID, estruturaReserva))
                    {
                        throw new BilheteriaException(string.Format("A quantidade disponível para o preço \"{0}\" foi excedida.", preco.PrecoNome), Bilheteria.CodMensagemReserva.PrecoIndisponivel);
                    }
                    //incrementa a quantidade
                    qtdPrecos += preco.Quantidade;

                    if (tipoSetor != IRLib.Setor.enumLugarMarcado.Pista)
                    {
                        //duplica os registros para serem usados mais tarde na hora da reserva de lugares marcados
                        for (int x = 0; x < preco.Quantidade; x++)
                        {
                            itemPreco    = new EstruturaPrecoReservaSite();
                            itemPreco.ID = preco.ID;
                            itemPreco.GerenciamentoIngressosID = preco.GerenciamentoIngressosID;
                            itemPreco.Valor             = precoValor;
                            itemPreco.Quantidade        = preco.Quantidade;
                            itemPreco.CotaItemID        = cotaInfo.CotaItemID;
                            itemPreco.CotaItemIDAPS     = cotaInfo.CotaItemID_APS;
                            itemPreco.CodigoCinema      = preco.CodigoCinema;
                            itemPreco.CodigoProgramacao = preco.CodigoProgramacao;
                            precoPorLugar.Add(itemPreco);
                        }
                    }
                    else
                    {
                        //gera novos registros para adicionar a cotaItemID do contrario não ha como verificar a multipla selecao de precos
                        itemPreco    = new EstruturaPrecoReservaSite();
                        itemPreco.ID = preco.ID;
                        itemPreco.GerenciamentoIngressosID = preco.GerenciamentoIngressosID;
                        itemPreco.PrecoNome         = preco.PrecoNome;
                        itemPreco.Quantidade        = preco.Quantidade;
                        itemPreco.Valor             = preco.Valor;
                        itemPreco.CotaItemID        = cotaInfo.CotaItemID;
                        itemPreco.CotaItemIDAPS     = cotaInfo.CotaItemID_APS;
                        itemPreco.CodigoCinema      = preco.CodigoCinema;
                        itemPreco.CodigoProgramacao = preco.CodigoProgramacao;
                        listaPreco.Add(itemPreco);
                    }
                }
                //Lugares marcados. Precisa achar os melhores lugares.
                if (tipoSetor != IRLib.Setor.enumLugarMarcado.Pista)
                {
                    #region Busca Ingresso de Lugar Marcado
                    // Busca a lista dos Melhores Lugares
                    List <Lugar> lugares = oLugar.MelhorLugarMarcado(qtdPrecos, apresentacaoSetorID, tipoSetor);

                    //Verifica se os ingressos estão juntos
                    if (tipoSetor == IRLib.Setor.enumLugarMarcado.MesaFechada)
                    {
                        if (lugares.Count == 0)
                        {
                            throw new Exception("Não foi possível efetuar todas as reserva.");
                        }

                        if (lugares.Count != qtdPrecos)
                        {
                            throw new Exception("Não existem mesas com a capacidade de acomodar todas as pessoas juntas");
                        }
                    }
                    int  quantidadeMesaAberta = 0;
                    bool mesaAberta           = (tipoSetor == IRLib.Setor.enumLugarMarcado.MesaAberta);
                    // Se for mesa aberta o total da de ingressos é a soma de todas as quantidades na listagem.
                    if (mesaAberta)
                    {
                        foreach (Lugar itemLugar in lugares)
                        {
                            quantidadeMesaAberta += itemLugar.Quantidade.Valor;
                        }
                        if (quantidadeMesaAberta != qtdPrecos) // Não encontrou a qtd suficiente?!
                        {
                            lugares.Clear();                   // Limpa os ingressos e passa para a próxima.
                        }
                    }
                    else
                    {
                        if (lugares.Count != qtdPrecos) // Não encontrou a qtd suficiente?!
                        {
                            lugares.Clear();            // Limpa os ingressos e passa para a próxima.
                        }
                    }

                    ingressosRetorno = new List <Ingresso>();
                    p = 0;                   //variavel de controle para os preços
                    int controlePrecoID = 0; //variavel de controle para saber se mudou o precoID e trazer a nova taxa de entrega
                    //Busca os ingressos para os melhores lugares encontrados
                    foreach (Lugar l in lugares)
                    {
                        try
                        {
                            //Só faz a select com base na quantidade caso seja mesa aberta.
                            string top = mesaAberta ? "TOP " + l.Quantidade.Valor : "";

                            string sql = "SELECT " + top + " ID, Codigo,EmpresaID FROM tIngresso(NOLOCK) " +
                                         "WHERE ApresentacaoSetorID = " + apresentacaoSetorID + " AND Status = '" + Ingresso.DISPONIVEL + "' " +
                                         "AND LugarID = " + l.Control.ID;

                            bd.Consulta(sql);


                            while (bd.Consulta().Read())
                            {
                                if (precoPorLugar[p].ID != controlePrecoID)
                                {
                                    valorConv = oBilheteria.TaxaConveniencia(eventoID, precoPorLugar[p].ID, estruturaReserva.CanalID);

                                    //Se não tem conveniencia, não deve contar que possui taxa de processamento, ignora a busca
                                    if (valorConv > 0)
                                    {
                                        valorProcessamento = oBilheteria.ValorTaxaProcessamento(eventoID);
                                    }

                                    controlePrecoID = precoPorLugar[p].ID;
                                }

                                //popula o objeto ingresso
                                oIngresso                        = new Ingresso();
                                oIngresso.Control.ID             = bd.LerInt("ID");
                                oIngresso.PrecoID.Valor          = precoPorLugar[p].ID;
                                oIngresso.UsuarioID.Valor        = usuarioID;
                                oIngresso.Codigo.Valor           = bd.LerString("Codigo");
                                oIngresso.LojaID.Valor           = lojaID;
                                oIngresso.ClienteID.Valor        = clienteID;
                                oIngresso.SessionID.Valor        = sessionID;
                                oIngresso.TimeStampReserva.Valor = timeStamp;
                                oIngresso.LugarID.Valor          = l.Control.ID;
                                oIngresso.TxConv                 = valorProcessamento > 0 ? 0 : valorConv;
                                oIngresso.TaxaProcessamentoValor = valorProcessamento;
                                oIngresso.Grupo.Valor            = l.Grupo.Valor;
                                oIngresso.Classificacao.Valor    = l.Classificacao.Valor;
                                oIngresso.CotaItemID             = precoPorLugar[p].CotaItemID;
                                oIngresso.CotaItemIDAPS          = precoPorLugar[p].CotaItemIDAPS;
                                oIngresso.EmpresaID.Valor        = bd.LerInt("EmpresaID");
                                oIngresso.SerieID.Valor          = serieID;

                                ////se não tiver valor e não tiver conveniencia não deve reservar
                                if (precoPorLugar[p].Valor == 0 && oIngresso.TxConv == 0 && oIngresso.TaxaProcessamentoValor == 0)
                                {
                                    // Atribui a Cortesia Padrão do Evento/Local - INICIO
                                    if (CortesiaPadraoID == 0)
                                    {
                                        CortesiaPadraoID = oCortesia.CortesiaPadraoEvento(eventoID);
                                    }

                                    if (CortesiaPadraoID <= 0)
                                    {
                                        throw new Exception("Falha ao reservar os ingressos. Não existe cortesia associada a este evento.");
                                    }

                                    oIngresso.CortesiaID.Valor = CortesiaPadraoID;
                                    //    // Atribui a Cortesia Padrão do Evento/Local - FIM

                                    //    oIngresso.Status.Valor = Ingresso.CORTESIA_SEM_CONVENIENCIA;
                                    ingressosRetorno.Add(oIngresso);
                                    //    break;//break para inserir somente um registro. esse registro de ingresso vai ser utilizado
                                    //    //como base de info para deletar o preço inválido do banco de dados do site.
                                }
                                else
                                {
                                    ingressosRetorno.Add(oIngresso);
                                }

                                if (tipoSetor != IRLib.Setor.enumLugarMarcado.MesaFechada)
                                {
                                    p++;
                                }
                            }
                            if (tipoSetor == IRLib.Setor.enumLugarMarcado.MesaFechada)
                            {
                                p++;
                            }
                        }
                        catch
                        {
                            throw;
                        }
                    }

                    #endregion
                }

                else //Ingressos de pista
                {
                    #region Busca Ingressos de Pista
                    Ingresso ing;
                    ingressosRetorno = new List <Ingresso>();
                    ArrayList ingressosIDInseridos = new ArrayList(); //lista de ingressos ID para não buscar os mesmos ingressos.
                    string    evitaDuplicidades    = "";              //monta a string para a sql
                    foreach (EstruturaPrecoReservaSite preco in listaPreco)
                    {
                        if (ingressosRetorno.Count > 0)
                        {
                            //Monta a query que evita duplicidade de ingressos na hora de reservar.
                            foreach (Ingresso item in ingressosRetorno)
                            {
                                ingressosIDInseridos.Add(item.Control.ID);
                            }

                            evitaDuplicidades = "AND ID NOT IN ( " + Utilitario.ArrayToString(ingressosIDInseridos) + ") ";
                        }
                        //Busca os ingressos de pista.
                        bd.FecharConsulta();

                        var bdBusca = new BD(ConfigurationManager.AppSettings["ConexaoReadOnly"]);

                        var readerCount = bdBusca.ConsultaCount(string.Format("SELECT TOP {0} ID, Codigo, LugarID FROM tIngresso(NOLOCK) WHERE ApresentacaoSetorID = {1} AND Status = '{2}' {3} ORDER BY newid()", preco.Quantidade, apresentacaoSetorID, Ingresso.DISPONIVEL, evitaDuplicidades));

                        if (readerCount.rowCount > 0 && readerCount.rowCount != preco.Quantidade)
                        {
                            throw new Exception("Quantidade de ingressos selecionado não está disponível. Tente com uma quantidade menor.");
                        }

                        while (bdBusca.Consulta().Read())
                        {
                            valorConv = oBilheteria.TaxaConveniencia(eventoID, preco.ID, estruturaReserva.CanalID);
                            //Se não tem conveniencia, não deve contar que possui taxa de processamento, ignora a busca
                            if (valorConv > 0)
                            {
                                valorProcessamento = oBilheteria.ValorTaxaProcessamento(eventoID);
                            }
                            else
                            {
                                valorProcessamento = 0;
                            }

                            //Popula o objeto ingresso e adiciona a lista de retorno
                            ing = new Ingresso
                            {
                                Control = { ID = bdBusca.LerInt("ID") },
                                PrecoID = { Valor = preco.ID },
                                GerenciamentoIngressosID = { Valor = preco.GerenciamentoIngressosID },
                                UsuarioID              = { Valor = estruturaReserva.UsuarioID },
                                Codigo                 = { Valor = bdBusca.LerString("Codigo") },
                                LojaID                 = { Valor = estruturaReserva.LojaID },
                                ClienteID              = { Valor = clienteID },
                                SessionID              = { Valor = sessionID },
                                TimeStampReserva       = { Valor = timeStamp },
                                LugarID                = { Valor = bdBusca.LerInt("LugarID") },
                                TxConv                 = valorProcessamento > 0 ? 0 : valorConv,
                                TaxaProcessamentoValor = valorProcessamento,
                                CotaItemID             = preco.CotaItemID,
                                CotaItemIDAPS          = preco.CotaItemIDAPS,
                                SerieID                = { Valor = serieID },
                                CompraGUID             = { Valor = estruturaReserva.GUID }
                            };

                            //Se for EntradaGratuita OU (se não tiver valor e não tiver conveniencia não deve reservar)
                            if (preco.Valor == 0 && ing.TxConv == 0 && ing.TaxaProcessamentoValor == 0)
                            {
                                // Atribui a Cortesia Padrão do Evento/Local - INICIO
                                if (CortesiaPadraoID == 0)
                                {
                                    CortesiaPadraoID = oCortesia.CortesiaPadraoEvento(eventoID, isEntradaFranca);
                                }

                                if (CortesiaPadraoID <= 0)
                                {
                                    throw new Exception("Não foi possível reservar o ingresso. Por favor, tente novamente mais tarde.");
                                }

                                ing.CortesiaID.Valor = CortesiaPadraoID;
                                // Atribui a Cortesia Padrão do Evento/Local - FIM

                                //ing.Status.Valor = Ingresso.CORTESIA_SEM_CONVENIENCIA;
                                ingressosRetorno.Add(ing);
                                //break;//break para inserir somente um registro. esse registro de ingresso vai ser utilizado
                                ////como base de info para deletar o preço inválido do banco de dados do site.
                            }
                            else
                            {
                                ingressosRetorno.Add(ing);
                            }
                        }//fim while consulta banco

                        bdBusca.Fechar();
                    }//fim foreach precos

                    //Ingressos para cinema, deve utilizar on demand!
                    if (listaPreco.Any(c => !string.IsNullOrEmpty(c.CodigoCinema)))
                    {
                        ingressosRetorno = this.NovoNaoMarcadoOnDemand(estruturaReserva, apresentacaoSetorID, eventoID, apresentacaoID, setorID, ingressosRetorno, listaPreco);
                    }

                    #endregion
                }

                return(ingressosRetorno);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                bdReserva.Fechar();
                bd.Fechar();
            }
        }
        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);
        }
        public DataTable PesquisarCodigoIngresso(int apresentacaoSetorID, string codigo)
        {
            BD        bd     = null;
            DataTable tabela = EstruturaHistorico();
            int       ingressoID;

            try
            {
                bd         = new BD();
                ingressoID = 0;

                using (IDataReader oDataReader = bd.Consulta("" +
                                                             "SELECT " +
                                                             "   tIngresso.ID " +
                                                             "FROM " +
                                                             "   tIngresso (NOLOCK) " +
                                                             "WHERE " +
                                                             "   (tIngresso.ApresentacaoSetorID = " + apresentacaoSetorID + ") " +
                                                             "AND " +
                                                             "   (tIngresso.Codigo = '" + codigo + "') " +
                                                             "ORDER BY " +
                                                             "   tIngresso.ID"))
                {
                    if (!oDataReader.Read())
                    {
                        throw new ApplicationException("Código do Ingresso não encontrado!");
                    }

                    ingressoID = bd.LerInt("ID");

                    if (ingressoID < 1)
                    {
                        throw new ApplicationException("Código do Ingresso não encontrado!");
                    }

                    int contadorIngressos = 1;

                    while (oDataReader.Read())
                    {
                        contadorIngressos++;
                    }

                    if (contadorIngressos > 1)
                    {
                        throw new IngressoHistoricoGerenciadorException("Apresentação possui mais de 1 lugar com código " + codigo);
                    }

                    Ingresso ingresso = new Ingresso();
                    ingresso.Control.ID = ingressoID;

                    tabela = ingresso.Historico();
                }

                return(AssinaturaBancoIngresso.VerificarSeExisteBancoIngresso(ingressoID, tabela));
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (bd != null)
                {
                    bd.Fechar();
                }
            }
        }
Ejemplo n.º 10
0
        }         // fim de GravarComanda

        /// <summary>
        /// Gravar informações de Comanda e seus itens, antes de imprimir Comanda no Bar
        /// </summary>
        /// <returns></returns>
        public string GravarComanda(
            out int vendaID,
            bool trabalharComIngresso,
            int caixaID,
            int apresentacaoID,
            int setorID,
            string codigo,
            int garconID,
            DataTable comandaItemTabelaMemoria)
        {
            int     comandaID;
            Comanda comanda = new Comanda(usuarioID);

            try{
                vendaID = 0;
                // Gravar na tabela Comanda
                comanda.CaixaID.Valor = caixaID;
                comanda.VendaID.Valor = 0;
                Ingresso ingresso = new Ingresso();
                if (trabalharComIngresso)
                {
                    comanda.IngressoID.Valor = IngressoID(apresentacaoID, setorID, codigo);
                    comanda.GarconID.Valor   = garconID;
                }
                else
                {
                    comanda.IngressoID.Valor = 0;
                    comanda.GarconID.Valor   = 0;
                }
                int incremento = comanda.Ultima() + 1;
                comanda.Ordem.Valor = incremento.ToString();
                comanda.Inserir();                      // *****
                comandaID = comanda.Control.ID;         // retornar ID da Comanda
                foreach (DataRow linha in comandaItemTabelaMemoria.Rows)
                {
                    // Gravar os itens
                    ComandaItem comandaItem = new ComandaItem(usuarioID);
                    comandaItem.ComandaID.Valor  = comandaID;
                    comandaItem.ProdutoID.Valor  = Convert.ToInt32(linha["ProdutoID"]);
                    comandaItem.Quantidade.Valor = Convert.ToInt32(linha["Quantidade"]);
                    // Pesquisar PrecoVenda
                    Produto produto = new Produto();
                    produto.Ler(Convert.ToInt32(linha["ProdutoID"]));
                    comandaItem.PrecoVenda.Valor = produto.PrecoVenda.Valor;
                    // Inserir o item de comanda
                    comandaItem.Inserir();
                    // Atualizar quantidade no estoque para cada item de venda
                    Caixa caixa = new Caixa(usuarioID);
                    caixa.Ler(caixaID);
                    Loja loja = new Loja(usuarioID);
                    loja.Ler(caixa.LojaID.Valor);
                    EstoqueItem estoqueItem = new EstoqueItem(usuarioID);
                    estoqueItem.ProdutoID.Valor = Convert.ToInt32(linha["ProdutoID"]);
                    estoqueItem.EstoqueID.Valor = loja.EstoqueID.Valor;
                    estoqueItem.DefinirID();
                    estoqueItem.AtualizarSaldo(-1 * Convert.ToInt32(linha["Quantidade"]));
                }
                // Em sistema de Ticket, assim que imprimiu a comanda, salva a venda
                if (!trabalharComIngresso)
                {
                    // Chame um mehtodo que cria um registro de Venda e atualiza VendaID nesta Comanda
                    vendaID = InserirVenda(caixaID, comanda.IngressoID.Valor, comandaID);
                }
            }catch (Exception erro) {
                throw erro;
            }
            return(comanda.Ordem.Valor);
        }         // fim de GravarComanda
Ejemplo n.º 11
0
        }         // fim de GravarComandaPagamento

        /// <summary>
        /// Gravar informações de Comanda e seus itens, antes de imprimir Comanda no Bar
        /// Usa como parâmetro Matriz em vez de DataTable
        /// </summary>
        /// <returns></returns>
        public string GravarComanda(
            out int vendaID,
            bool trabalharComIngresso,
            int caixaID,
            int apresentacaoID,
            int setorID,
            string codigo,
            int garconID,
            int [,] comandaItemMatrizMemoria)
        {
            //

            int     comandaID;
            Comanda comanda = new Comanda(usuarioID);

            try{
                vendaID = 0;
                // Gravar na tabela Comanda
                comanda.CaixaID.Valor = caixaID;
                comanda.VendaID.Valor = 0;
                Ingresso ingresso = new Ingresso();
                if (trabalharComIngresso)
                {
                    comanda.IngressoID.Valor = IngressoID(apresentacaoID, setorID, codigo);
                    comanda.GarconID.Valor   = garconID;
                }
                else
                {
                    comanda.IngressoID.Valor = 0;
                    comanda.GarconID.Valor   = 0;
                }
                int incremento = comanda.Ultima() + 1;
                comanda.Ordem.Valor = incremento.ToString();
                comanda.Inserir();                                      // *****
                comandaID = comanda.Control.ID;                         // retornar ID da Comanda
                int tamanho = (int)comandaItemMatrizMemoria.Length / 2; // 2 colunas
                for (int conta = 0; conta < tamanho; conta++)
                {
                    // Gravar os itens
                    int         produtoID   = Convert.ToInt32(comandaItemMatrizMemoria[conta, 0]);
                    int         quantidade  = Convert.ToInt32(comandaItemMatrizMemoria[conta, 1]);
                    ComandaItem comandaItem = new ComandaItem(usuarioID);
                    comandaItem.ComandaID.Valor  = comandaID;
                    comandaItem.ProdutoID.Valor  = produtoID;
                    comandaItem.Quantidade.Valor = quantidade;
                    // Pesquisar PrecoVenda
                    Produto produto = new Produto();
                    produto.Ler(produtoID);                     // *****
                    comandaItem.PrecoVenda.Valor = produto.PrecoVenda.Valor;
                    // Inserir o item de comanda
                    comandaItem.Inserir();                      // *****
                    // Atualizar quantidade no estoque para cada item de venda
                    Caixa caixa = new Caixa(usuarioID);
                    caixa.Ler(caixaID);                         // *****
                    Loja loja = new Loja(usuarioID);
                    loja.Ler(caixa.LojaID.Valor);
                    EstoqueItem estoqueItem = new EstoqueItem(usuarioID);
                    estoqueItem.ProdutoID.Valor = produtoID;
                    estoqueItem.EstoqueID.Valor = loja.EstoqueID.Valor;
                    estoqueItem.DefinirID();                            // *****
                    estoqueItem.AtualizarSaldo(-1 * quantidade);        // *****
                }
                // Em sistema de Ticket, assim que imprimiu a comanda, salva a venda
                if (!trabalharComIngresso)
                {
                    // Chame um mehtodo que cria um registro de Venda e atualiza VendaID nesta Comanda
                    vendaID = InserirVenda(caixaID, comanda.IngressoID.Valor, comandaID);                       // *****
                }
            }catch (Exception erro) {
                throw erro;
            }
            return(comanda.Ordem.Valor);
        }         // fim de GravarComanda
Ejemplo n.º 12
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);
        }
Ejemplo n.º 13
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;
            }
        }
Ejemplo n.º 14
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);
        }