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 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); }
public void RegistrarEntrega(List <int> lstVendaBilheteriaID, int UsuarioID, int EmpresaID, int CaixaID, int LojaID, int CanalID) { //Auxiliar para consulta BD bd = new BD(); BD bdAux = new BD(); IngressoLog log = null; try { bd.IniciarTransacao(); DataTable dttBulk = new DataTable("VendaBilheteria"); dttBulk.Columns.Add("ID", typeof(int)); DataRow dtr; foreach (int id in lstVendaBilheteriaID) { dtr = dttBulk.NewRow(); dtr["ID"] = id; dttBulk.Rows.Add(dtr); } bdAux.BulkInsert(dttBulk, "#tmpVendaBilheteriaID", false, true); bdAux.Consulta(string.Format( @"SELECT i.ID, i.PrecoID, i.EventoID, i.BloqueioID, i.CortesiaID, i.ClienteID, i.VendaBilheteriaID, vb.ClienteID FROM tVendaBilheteria vb (NOLOCK) INNER JOIN #tmpVendaBilheteriaID tmp ON tmp.ID = vb.ID INNER JOIN tIngresso i (NOLOCK) ON i.VendaBilheteriaID = vb.ID WHERE i.Status = '{0}' ", Ingresso.IMPRESSO)); while (bdAux.Consulta().Read()) { bd.Executar(string.Format( @"UPDATE tIngresso SET Status = '{0}' WHERE tIngresso.ID = {1} ", Ingresso.ENTREGUE, bdAux.LerInt("ID"))); log = new IngressoLog(); log.IngressoID.Valor = bdAux.LerInt("ID"); log.UsuarioID.Valor = UsuarioID; log.TimeStamp.Valor = DateTime.Now; log.Acao.Valor = Ingresso.ENTREGUE; log.PrecoID.Valor = bdAux.LerInt("PrecoID"); log.CortesiaID.Valor = bdAux.LerInt("CortesiaID"); log.BloqueioID.Valor = bdAux.LerInt("BloqueioID"); log.VendaBilheteriaItemID.Valor = 0; log.Obs.Valor = string.Empty; log.EmpresaID.Valor = EmpresaID; log.VendaBilheteriaID.Valor = bdAux.LerInt("VendaBilheteriaID"); log.CaixaID.Valor = CaixaID; log.LojaID.Valor = LojaID; log.CanalID.Valor = CanalID; log.ClienteID.Valor = bdAux.LerInt("ClienteID"); log.CodigoBarra.Valor = string.Empty; log.CodigoImpressao.Valor = 0; if (!Convert.ToBoolean(bd.Executar(log.StringInserir()))) { throw new BilheteriaException("Log de impressão do ingresso não foi inserido."); } } bd.FinalizarTransacao(); } catch (Exception ex) { bd.DesfazerTransacao(); throw ex; } finally { bd.Fechar(); } }
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); }