Exemplo n.º 1
0
        public bool Registrar(Venda venda, List <Produto> itensVenda)
        {
            AcessoDadosSqlServer acessoDados = new AcessoDadosSqlServer();

            try
            {
                string     instrucao = "INSERT INTO Venda (data, hora, valortotal, desconto, ativo) VALUES (@data, @hora, @valortotal, @desconto, @ativo); SELECT @@IDENTITY;";
                SqlCommand command   = new SqlCommand(instrucao, acessoDados.Conectar());
                command.Parameters.AddWithValue("@data", DateTime.Today.ToShortDateString());
                command.Parameters.AddWithValue("@hora", DateTime.Now.ToShortTimeString());
                command.Parameters.AddWithValue("@valortotal", venda.ValorTotal);
                command.Parameters.AddWithValue("@desconto", venda.Desconto);
                command.Parameters.AddWithValue("@ativo", "Venda Registrada");


                // Recupera o id atribuido à venda.
                string codigoVenda = command.ExecuteScalar().ToString();


                // Esta etapa é REGISTRAR OS ITENS DA VENDA + ATUALIZAR A QUANTIDADE DISPONÍVEL NO ESTOQUE + Registrar A MOVIMENTAÇÃO NO ESTOQUE.
                foreach (Produto item in itensVenda)
                {
                    string instrucaoItemVenda = "INSERT INTO VendaItem (codigoproduto, codigovenda, quantidade, valor) VALUES (@codigoproduto, @codigovenda, @quantidade, @valor); UPDATE Produto SET qtdatual = qtdatual - @quantidade WHERE codigo = @codigoproduto; INSERT INTO Estoque (quantidade, codigoproduto, data, hora, motivo, acao) VALUES (@quantidade, @codigoproduto, @data, @hora, @motivo, @acao)";

                    SqlCommand command2 = new SqlCommand(instrucaoItemVenda, acessoDados.Conectar());
                    command2.Parameters.AddWithValue("@codigoproduto", item.Codigo);
                    command2.Parameters.AddWithValue("@codigovenda", codigoVenda);
                    command2.Parameters.AddWithValue("@quantidade", item.QtdAtual);
                    command2.Parameters.AddWithValue("@valor", item.PrecoVenda);
                    command2.Parameters.AddWithValue("@data", DateTime.Today.ToShortDateString());
                    command2.Parameters.AddWithValue("@hora", DateTime.Now.ToShortTimeString());
                    command2.Parameters.AddWithValue("@motivo", "Produto Vendido");
                    command2.Parameters.AddWithValue("@acao", "Saída");
                    command2.ExecuteNonQuery();
                }
                return(true);
            }
            catch (Exception erro)
            {
                throw erro;
            }
            finally
            {
                acessoDados.FecharConexao();
            }
        }
Exemplo n.º 2
0
        public bool Cancelar(int codigoVenda)
        {
            AcessoDadosSqlServer acessoDados = new AcessoDadosSqlServer();

            try
            {
                //MUDA OS STATUS DA VENDA.
                string     instrucaoVenda = "UPDATE Venda SET ativo = 'Venda Cancelada' WHERE codigo = " + codigoVenda;
                SqlCommand command        = new SqlCommand(instrucaoVenda, acessoDados.Conectar());
                command.ExecuteNonQuery();

                // Recupera os itens da venda cancelada.
                string         instrucaoItemsVenda = "SELECT * FROM VendaItem WHERE codigovenda = " + codigoVenda;
                SqlCommand     commandItemsVenda   = new SqlCommand(instrucaoItemsVenda, acessoDados.Conectar());
                SqlDataAdapter da         = new SqlDataAdapter(commandItemsVenda);
                DataTable      itemsVenda = new DataTable();
                da.Fill(itemsVenda);

                // Devolver os itens no estoque e registrar a movimentação.
                foreach (DataRow item in itemsVenda.Rows)
                {
                    string instrucaoItemVenda = "INSERT INTO Estoque (quantidade, codigoproduto, data, hora, motivo, acao) VALUES (@quantidade, @codigoproduto, @data, @hora, @motivo, @acao); UPDATE Produto SET qtdatual = qtdatual + " + item["quantidade"].ToString();

                    SqlCommand command2 = new SqlCommand(instrucaoItemVenda, acessoDados.Conectar());
                    command2.Parameters.AddWithValue("@codigoproduto", item["codigoproduto"].ToString());
                    command2.Parameters.AddWithValue("@quantidade", item["quantidade"].ToString());
                    command2.Parameters.AddWithValue("@data", DateTime.Today.ToShortDateString());
                    command2.Parameters.AddWithValue("@hora", DateTime.Now.ToShortTimeString());
                    command2.Parameters.AddWithValue("@motivo", "Venda Cancelada");
                    command2.Parameters.AddWithValue("@acao", "Entrada");
                    command2.ExecuteNonQuery();
                }

                return(true);
            }
            catch (Exception erro)
            {
                throw erro;
            }
            finally
            {
                acessoDados.FecharConexao();
            }
        }