Business - Automação Comercial

Desenvolvendo um Software de Automação Comercial em ASP NET - Parte II

Neste artigo deixaremos de lado a impressora fiscal para nos concentrarmos no código DotNet que é necessário para se comunicar com o banco de dados e desenvolver todo o código que rodará no servidor.

por Fábio de Souza Torres



Neste artigo deixaremos de lado a impressora fiscal para nos concentrarmos no código DotNet que é necessário para se comunicar com o banco de dados e desenvolver todo o código que rodará no servidor.

Criando o banco de dados

Uma das grandes vantagens do desenvolvimento WEB é ter um servidor especificamente configurado para suportar o banco de dados, aumentando substancialmente o desempenho da busca e evitando a duplicação de informações.

Para nosso exemplo, faremos um banco de dados o mais simples possível para um software de Automação Comercial.

No Microsoft Access, crie o banco de dados (conforme acima) com uma tabela chamada “Produto” e salve-o com o nome “produtos.mdb”. O campo código geralmente tem um tamanho de 13 caracteres para suportar o código de barras, já o campo descrição, recomenda ter um tamanho de 29 caracteres, para que não seja necessário fazer nenhuma lógica de tratamento quando enviar o item para impressora.

Existem vários parâmetros que são indispensáveis para uma aplicação de Automação Comercial, como alíquota e quantidade. Apesar de não englobar todos os detalhes, ao final deste artigo vocês não terão dificuldades em adicioná-los ao software.

Código ASP .NET

Todo o código ASP que vamos desenvolver estará no FormVenda.aspx. Este código será basicamente pesquisa de produtos no banco de dados e formatação de strings para exibição.

Conectando o banco de dados

No Visual Estúdio DotNet você pode utilizar o Server Explorer para criar a conexão com o banco de dados, mas vou colocar aqui a string de conexão que utilizaremos:

string conexao = @"Provider=Microsoft.Jet.OLEDB.4.0;Password=""""; User ID=Admin;Data Source=" + "C:\\Produtos.mdb";

Vamos declarar algumas variáveis para nosso software, elas devem ser globais para que seja possível atribuir seus valores a objetos que serão criados no cliente, onde utilizaremos JavaScript.

Variáveis globais utilizadas no software:

public int iQuantidade; // Quantidade de produto vendido

public double fValorItem; // Valor do produto

public double fTotalItem; // Quantidade x Valor do produto

public double fTotalCupom; // Total dos produtos vendidos

public string sProdutoName; // Descrição do produto

No evento Page_Load vamos desenvolver o código necessário para colocar as strings de formatação do nosso TextBox Multiline, que ira fazer o log dos produtos vendidos.

private void Page_Load(object sender, System.EventArgs e)

{

if (!this.IsPostBack)

{

TextBoxCupomFiscal.Text = String.Format("{0,-15}{1,-15}{2,-20}

{3,-15}","Descrição","Quantidade","Valor","Total") + "\n";

TextTotalCupom.Text = String.Format("{0,00:C}",0);

}

TextQuantidade.Text= "1";

}

Observem que o “if (!this.IsPostBack)” faz com que este código seja executado apenas uma vez.

No evento Click do botão “OK”, que talvez o nome mais correto fosse “VENDER”, iremos buscar o produto no banco de dados através de seu código e retornaremos com as informações. Quando alterado o valor do TextBox Código do Produto e pressionado enter (isso poderá ser feito com um leitor de código de barras configurado para enviar um enter após a leitura - esta configuração é default no maioria dos leitores), será disparado nosso evento.

private void Button1_Click(object sender, System.EventArgs e)

{

OleDbConnection conn = new OleDbConnection(conexao);

string SQL = "SELECT * FROM Produto where codigo = "" + TextCodProduto.Text + """;

OleDbDataAdapter adapter;

DataSet dsCodigo;

Try

{

conn.Open();

adapter = new OleDbDataAdapter(SQL,conn);

dsCodigo = new DataSet();

adapter.Fill(dsCodigo,"Produto");

if (dsCodigo.Tables[0].Rows.Count == 0)

{

TextDescProduto.Text = "Produto não cadastrado";

TextCodProduto.Text = "";

}

else

{

sProdutoName = dsCodigo.Tables["Produto"].Rows[0]["Descricao"]. ToString();

iQuantidade = System.Convert.ToInt32(TextQuantidade.Text);

fValorItem = System.Convert.ToDouble(dsCodigo.Tables["Produto"] .Rows[0]["Preco"].ToString());

fTotalItem = iQuantidade * fValorItem;

SQL = TextTotalCupom.Text.Substring(3,TextTotalCupom.Text.Length -3);

fTotalCupom = fTotalItem + Convert.ToDouble(SQL);

TextValorItem.Text = fValorItem.ToString("R$ 0.00");

TextTotalItem.Text = fTotalItem.ToString("R$ 0.00");

TextTotalCupom.Text = fTotalCupom.ToString("R$ 0.00");

TextQuantidade.Text = iQuantidade.ToString();

TextDescProduto.Text = sProdutoName;

TextBoxCupomFiscal.Text = TextBoxCupomFiscal.Text + String.Format("{0,-15}{1,-10} x {2,-15:C} = {3,-15:C}",sProdutoName,iQuantidade,fValorItem,fTotalItem) + "\n";

TextTotalCupom.Text = fTotalCupom.ToString("R$ 0.00");

}

}

finally

{

conn.Close();

}

}

No código acima criamos uma conexão com o banco e executamos uma instrução SQL para trazer o produto que teve o código digitado em TextBoxCodProduto, na seqüência, o código if (dsCodigo.Tables[0].Rows.Count == 0) faz um simples tratamento de erro caso tenha sido digitado um código que não existe no banco de dados. Observem que o TextBoxCodProduto está sendo “zerado” dentro do código de tratamento de erro. Está variável irá controlar quando será feita a venda de um item.

Caso o produto seja encontrado com sucesso devemos atualizar os valores das nossas variáveis globais, o TextTotalCupom sempre será incrementado com o valor do item que está sendo vendido.

Apesar de parecer que sou um péssimo programador ao criar variáveis globais e atualizar seus valores ao invés de jogar diretamente para os componentes, isso tudo tem um motivo, que será explicado no próximo artigo.

Conclusão

Este é “quase” todo o código em ASP .NET que vamos utilizar. Falo “quase” porque existem alguns detalhes que serão mostrados somente no próximo artigo.

No próximo, artigo que acredito que será um dos mais interessantes, demonstrarei como integrar este código ASP .NET ao componente Bematech, para realizar uma impressão através do browser na impressora fiscal.

Fábio de Souza Torres

Fábio de Souza Torres - Bematech: DSP - Desenvolvimento de Software e Parcerias.
Visite o site:
http://www.bematech.com.br.