public decimal mostrarValorVenda(ModeloVendas objVenda) { try { MySqlCommand cmdVendaTotal = new MySqlCommand(); ModeloVendas venda = new ModeloVendas(); string sqlVendaTotal; sqlVendaTotal = @"select valor from vendas where idvenda = @idvenda and idcliente = @idcliente"; cmdVendaTotal.CommandText = sqlVendaTotal; cmdVendaTotal.Parameters.Clear(); cmdVendaTotal.Parameters.AddWithValue("@idvenda", objVenda.Idvenda); cmdVendaTotal.Parameters.AddWithValue("@idcliente", objVenda.Idcliente); cmdVendaTotal.Connection = conn; conn.Open(); MySqlDataReader drVenda = cmdVendaTotal.ExecuteReader(); while (drVenda.Read()) { venda.Valor = Convert.ToDecimal(drVenda["valor"].ToString()); } return(venda.Valor); } catch (MySqlException ex) { throw new Exception(ex.StackTrace); } finally { conn.Close(); } }
public void InserirVendas(ModeloVendas modeloVendas) { if (modeloVendas.cod_formaPgto <= 0) { throw new Exception("O Código Do Tipo de Pagamento Não Pode Ser Negativo"); } if (modeloVendas.cod_func <= 0) { throw new Exception("O Código Do Funcionáro Não Pode Ser Negativo"); } //if (modeloVendas.data_venda != DateTime.Now) //{ // throw new Exception("A data da venda informada não pode ser diferente data actual"); //} if (modeloVendas.estado_venda == "") { throw new Exception("O Campo Estado da Venda Não Pode Ser Vázio"); } if (modeloVendas.total_venda <= 0) { throw new Exception("O Campo Valor Total Não Pode Ser Negativo"); } dallVendas.Inserir(modeloVendas); }
//Médodo de inserção de dados na tabela itens_venda e atualização // do valor da venda na tabela vendas. public void inserirItensVenda(ModeloVendas venda, ModeloItensVendas itens) { string sqlItensVenda, sqlAtualizarVenda; MySqlTransaction t = null; try { // Inserção da tabela itens_Venda cmdItensVenda.Connection = conn; sqlItensVenda = @"insert into itens_venda(idvenda, idproduto, valor_produto, quantidade)values(@idvenda, @idproduto, @valor_produto, @quantidade)"; cmdItensVenda.CommandText = sqlItensVenda; // Atualização do valor da venda na tabela vendas cmdAtualizaVendas.Connection = conn; sqlAtualizarVenda = @"update vendas set valor = @quantidade * @preco where idvenda = @idvenda"; cmdAtualizaVendas.CommandText = sqlAtualizarVenda; // Abertura do banco conn.Open(); // Configuração da transação t = conn.BeginTransaction(IsolationLevel.Serializable); cmdItensVenda.Transaction = t; cmdAtualizaVendas.Transaction = t; // Parâmetros de Inserção da tabela itens_venda cmdItensVenda.Parameters.Clear(); cmdItensVenda.Parameters.AddWithValue("@idvenda", venda.Idvenda); cmdItensVenda.Parameters.AddWithValue("@idproduto", itens.Idproduto); cmdItensVenda.Parameters.AddWithValue("@valor_produto", itens.ValorProduto); cmdItensVenda.Parameters.AddWithValue("@quantidade", itens.Quantidade); // Parâmetros de Atualização do valor da venda cmdAtualizaVendas.Parameters.AddWithValue("@idvenda", venda.Idvenda); cmdAtualizaVendas.Parameters.AddWithValue("@quantidade", itens.Quantidade); cmdAtualizaVendas.Parameters.AddWithValue("@preco", itens.ValorProduto); // Execução das transações cmdItensVenda.ExecuteNonQuery(); cmdAtualizaVendas.ExecuteNonQuery(); t.Commit(); } catch (MySqlException ex) { t.Rollback(); throw new Exception(ex.StackTrace); } finally { conn.Close(); } }
public void InserirItensVenda(ModeloVendas venda, ModeloItensVendas itens) { try { objVendasDal.inserirItensVenda(venda, itens); } catch (Exception ex) { throw new Exception(ex.Message); } }
public void Inserir(ModeloVendas modeloVendas) { MySqlConnection mySqlConnection = new MySqlConnection(); try { mySqlConnection.ConnectionString = DadosDaConexao.StringDeConexao; // Código Para Inserir Na tabela de Vendas MySqlCommand mySqlCommand = new MySqlCommand(); mySqlCommand.Connection = mySqlConnection; mySqlCommand.CommandType = CommandType.Text; mySqlCommand.CommandText = "INSERT INTO tb_Vendas(cod_func,cod_formaPgto,data_venda,total_venda,estado) VALUES(@cod_func,@cod_formaPgto,@data_venda,@total_venda,@estado); Select @@Identity;"; mySqlConnection.Open(); // Abre a Conexão mySqlCommand.Parameters.AddWithValue("@cod_func", modeloVendas.cod_func); mySqlCommand.Parameters.AddWithValue("@cod_formaPgto", modeloVendas.cod_formaPgto); mySqlCommand.Parameters.AddWithValue("@cod_prod", modeloProduros.cod_prod); mySqlCommand.Parameters.AddWithValue("@quant_estoque", modeloProduros.quant_estoque); mySqlCommand.Parameters.Add("@data_venda", MySqlDbType.DateTime); mySqlCommand.Parameters["@data_venda"].Value = modeloVendas.data_venda; mySqlCommand.Parameters.AddWithValue("@total_venda", modeloVendas.total_venda); mySqlCommand.Parameters.AddWithValue("@estado", modeloVendas.estado_venda); modeloVendas.cod_venda = Convert.ToInt32(mySqlCommand.ExecuteScalar()); //Comando Para Inserir Na tabela de Vendas } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { mySqlConnection.Close(); } }
public decimal MostrarValorVenda(ModeloVendas venda) { return(objVendasDal.mostrarValorVenda(venda)); }
// O método inserir fará operações que afetarão mais de uma tabela, // ou seja, inserção na tabela vendas e atualização na tabela produtos. public void inserir(ModeloVendas venda, ModeloItensVendas itens) { string sqlInserirVenda, sqlAtualizarEstoqueProduto; // Transação é uma operação que afeta duas ou mais tabelas simultâneas // no banco de dados. Neste caso, ocorrerão quatro operações: // A primeira fará inserção de dados na tabela vendas; // A segunda atualizará o estoque da tabela produtos; // A terceira armazenará dados (inserir) na tabela itens_venda; // A quarta calcula e atualiza o valor da venda. // Inicializa-se o objeto t com um valor nulo. MySqlTransaction t = null; try { // inserção de vendas. Modificar os parâmetros com prefixo p para @, porque // o .NET reconhece apenas o @ como configuração de parâmetro. Já as // stored procedures do MySql somente aceitam os parâmetros com prefixo p // ou qualquer letra do alfabeto exceto caracteres especiais como o @. cmdVendas.Connection = conn; sqlInserirVenda = @"insert into vendas(idcliente, data, valor)values (@idcliente, @data, @valor); select idvenda from vendas where idvenda = LAST_INSERT_ID();"; cmdVendas.CommandText = sqlInserirVenda; // Atualização do estoque cmdProdutos.Connection = conn; sqlAtualizarEstoqueProduto = @"update produtos set estoque = estoque - @quantidade where idproduto = @idproduto and estoque >= @quantidade"; cmdProdutos.CommandText = sqlAtualizarEstoqueProduto; conn.Open(); // O objeto Command inicia a primeira transação, configurando o ínicio // da transação com o nivel de isolamento serializable. Este é o tipo // mais restrito, não permite a leitura, a atualização, inclusão ou // exclusão de algum registro da tabela que está sendo lido, até que // se encontre o comando commit ou rollback. t = conn.BeginTransaction(IsolationLevel.Serializable); // O objeto t é vinculado à propriedade transaction do objeto command // cmdVendas. cmdVendas.Transaction = t; cmdProdutos.Transaction = t; // Parâmetros de inserção da tabela vendas cmdVendas.Parameters.Clear(); cmdVendas.Parameters.AddWithValue("@idcliente", venda.Idcliente); cmdVendas.Parameters.AddWithValue("@data", venda.Data); cmdVendas.Parameters.AddWithValue("@valor", venda.Valor); // Parâmetros de atualização do produto cmdProdutos.Parameters.Clear(); cmdProdutos.Parameters.AddWithValue("@idproduto", itens.Idproduto); cmdProdutos.Parameters.AddWithValue("@quantidade", itens.Quantidade); // O metodo ExecuteScalar retorna um único valor, no caso, idvenda // gerado automaticamente pelo banco. venda.Idvenda = Convert.ToInt32(cmdVendas.ExecuteScalar()); // O método ExecuteNomQuery executa o comando update na tabela produtos. // Ele não efetua nenhum retorno do banco de dados. cmdProdutos.ExecuteNonQuery(); // Validação da transação através do método Commit. Executa-se // a transação nas duas tabelas simultaneamente(vendas e produtos) t.Commit(); } catch (MySqlException ex) { t.Rollback(); throw new Exception(ex.StackTrace); } finally { conn.Close(); } }