Bematech Flash Builder - Desenvolvendo o primeiro Cupom Fiscal
Na edição anterior, referenciamos os assemblies Bematech.dll e Bematech.Fiscal.dll ao projeto, e instanciamos seus métodos para o objeto BematechFiscal - objeto que estaremos utilizando durante todo o desenvolvimento.
Nesta edição, iremos desenvolver o nosso primeiro Cupom Fiscal, aproveitando todas as facilidades e agilidades que esta ferramenta nos oferece.
Não esqueça que estaremos visualizando todas as rotinas em C# e Visual Basic .NET.
E, "mão na massa"!
No form principal, vamos criar 3 botões de comando, onde iremos abrir, vender e fechar o cupom fiscal.
• em C#
// Botão Abre Cupom
private void cmdAbreCupom_Click(object sender, System.EventArgs e)
{
try
{
// Método para a abertura do Cupom Fiscal sem passagem de parâmetro.
BematechFiscal.Cupom.Abrir();
// Método para o retorno do número do cupom (COO), armazenando
// na variável cNumeroCupom
string cNumeroCupom = BematechFiscal.Cupom.Numero.ToString();
}
catch ( FiscalException MensagemErro )
{
MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
}
}
// Botão Vender Item
private void cmdItem_Click(object sender, System.EventArgs e)
{
// Criado o objeto ItemVendido para representar o item a ser vendido.
Item ItemVendido = new Item();
ItemVendido.Codigo = "1234567890123";
ItemVendido.Descricao = "Item de Teste";
ItemVendido.Aliquota = "FF";
ItemVendido.Quantidade = 1;
ItemVendido.ValorUnitario = 1.00M;
try
{
// Método para a venda do item passando como parâmetro o objeto ItemVendido.
BematechFiscal.Cupom.Vender( ItemVendido );
}
catch ( FiscalException MensagemErro )
{
MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
}
}
// Botão Fecha Cupom
private void cmdFechaCupom_Click(object sender, System.EventArgs e)
{
try
{
// Método para o fechamento do cupom passando como parâmetro a forma de
// pagamento e a mensagem promocional.
BematechFiscal.Cupom.Fechar( "Dinheiro", "Obrigado, volte sempre!" );
}
catch ( FiscalException MensagemErro )
{
MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
}
}
• em VB.NET
' Botão Abre Cupom
Private Sub cmdAbreCupomFiscal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAbreCupomFiscal.Click
Try
' Método para a abertura do Cupom Fiscal sem passagem de parâmetro.
BematechFiscal.Cupom.Abrir()
' Método para o retorno do número do cupom (COO), armazenando
' na variável cNumeroCupom
Dim cNumeroCupom As String = BematechFiscal.Cupom.Numero.ToString()
Catch MensagemErro As FiscalException
MsgBox("Mensagem Erro: " + MensagemErro.Message)
End Try
End Sub
' Botão Vender Item
Private Sub cmdVendaItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdVendaItem.Click
Try
' Criado o objeto ItemVendido para representar o item a ser vendido.
Dim ItemVendido As Item = New Item
ItemVendido.Codigo = "1234567890123"
ItemVendido.Descricao = "Item de Teste"
ItemVendido.Aliquota = "FF"
ItemVendido.Quantidade = 1
ItemVendido.ValorUnitario = 1.0
' Método para a venda do item passando como parâmetro o objeto ItemVendido. BematechFiscal.Cupom.Vender(ItemVendido)
Catch MensagemErro As FiscalException
MsgBox("Mensagem Erro: " + MensagemErro.Message)
End Try
End Sub
' Botão Fecha Cupom
Private Sub cmdFechaCupom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFechaCupom.Click
Try
' Método para o fechamento do cupom passando como parâmetro a forma de
' pagamento e a mensagem promocional.
BematechFiscal.Cupom.Fechar("Dinheiro", "Obrigado, volte sempre!")
Catch MensagemErro As FiscalException
MsgBox("Mensagem Erro: " + MensagemErro.Message)
End Try
End Sub
Repare que as chamadas aos métodos foram feitas dentro de um "Try/Catch". Desta forma, podemos tratar o status da impressora durante a execução. Este tratamento é controlado pela exceção FiscalException instanciada ao objeto MensagemErro, onde através da propriedade Message é exibida a mensagem.
Ao entrar com o objeto BematechFiscal no código e pressionar o "." (ponto), os principais métodos dos namespaces adicionados aparecem, facilitando a pesquisa e agilizando o desenvolvimento.
Overloads
Overloads são sobrecargas de parâmetros, exibidos durante o uso dos métodos da ferramenta.
Quando abrimos o "(" (parênteses) para a passagem de parâmetro, os métodos exibem uma caixa contendo formas diferentes de usá-lo. Na figura abaixo, o método "Abrir" exibe o 4º overload dos 7 que possui, permitindo a entrada dos parâmetros CPF, Nome e Endereço do cliente, que serão impressos na abertura do cupom fiscal.
Para a escolha do overload, basta pressionar a seta para cima ou para baixo. Você pode optar pelo mais simples ao mais completo, a própria ferramenta se encarrega de identificar qual impressora está em uso e enviar os parâmetros correspondentes, e isso ocorre com todos os métodos que possuem overloads. Fantástico!
Sempre será exibido o conjunto de overloads, quando o método permitir.
No form load, vamos criar o seguinte tratamento:
- Quando a aplicação for inciada, iremos verificar se existe algum cupom fiscal aberto e se este possue itens vendidos. Se o cupom fiscal estiver aberto e não houver itens vendidos, iremos cancelá-lo, caso contrário iremos recuperar todos os itens que foram vendidos e exibir em um TextBox (chamado txtProduto) com a propriedade Multiline setada para True.
Imagine uma situação de queda de energia no meio de uma operação de venda, onde vários itens já foram vendidos.
Quando a aplicação é iniciada, todos estes itens são recuperados facilmente, ou seja, o cupom fiscal volta ao seu estado atual, sem a necessidade de realizamos este controle externamente. Veja como é simples!
• em C#
private void frmPrincipal_Load(object sender, System.EventArgs e)
{
try
{
// Método para verificar se o cupom está aberto.
if ( BematechFiscal.Cupom.Status.Aberto )
{
// Método que retorna a quantidade de itens vendidos.
if ( BematechFiscal.Cupom.ItensVendidos.Count != 0 )
{
// A classe Item armazena todos os itens vendidos no cupom fiscal.
foreach ( Item ItensVendidos in BematechFiscal.Cupom.ItensVendidos )
txtProduto.Text += ItensVendidos.Codigo + " " +
ItensVendidos.Descricao + " " +
ItensVendidos.Quantidade.ToString("0") + " " +
ItensVendidos.ValorUnitario.ToString( "C" ) + "\r\n";
}
else
{
// Método que retorna o modelo da impressora fiscal.
string cModeloImpressora = BematechFiscal.Modelo.ToString();
// Métodos que retorna a versão do firmware da impressora fiscal.
string cVersaoFirmware = BematechFiscal.Informacao.VersaoFirmware;
if ( cModeloImpressora == "MP20FI" && cVersaoFirmware != "032600" )
{
// Método para vender um item para o cancelamento do cupom fiscal.
BematechFiscal.Cupom.Vender( "1", "Item para cancelamento", "II", 1,
0.01M );
// Método para cancelar o cupom fiscal.
BematechFiscal.Cupom.Cancelar();
}
else
// Método para cancelar o cupom fiscal.
BematechFiscal.Cupom.Cancelar();
}
}
}
catch ( FiscalException MensagemErro )
{
MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
}
}
• em VB.NET
Private Sub frmPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
' Método para verificar se o cupom está aberto.
If (BematechFiscal.Cupom.Status.Aberto) Then
' Método que retorna a quantidade de itens vendidos.
If (BematechFiscal.Cupom.ItensVendidos.Count <> 0) Then
' A classe Item armazena todos os itens vendidos no cupom fiscal.
For Each ItensVendidos As Item In BematechFiscal.Cupom.ItensVendidos
txtProduto.Text += ItensVendidos.Codigo + " " + _
ItensVendidos.Descricao + " " + _
ItensVendidos.Quantidade.ToString("0") + " " + _
ItensVendidos.ValorUnitario.ToString("C") + vbCrLf
Next
Else
' Método que retorna o modelo da impressora fiscal.
Dim cModeloImpressora As String = BematechFiscal.Modelo.ToString()
' Métodos que retorna a versão do firmware da impressora fiscal.
Dim cVersaoFirmware As String = BematechFiscal.Informacao.VersaoFirmware
If (cModeloImpressora = "MP20FI" And cVersaoFirmware <> "032600") Then
' Método para vender um item para o cancelamento do cupom fiscal.
BematechFiscal.Cupom.Vender("1", "Item para cancelamento", "II", 1, _
0.01D)
' Método para cancelar o cupom fiscal.
BematechFiscal.Cupom.Cancelar()
Else
' Método para cancelar o cupom fiscal.
BematechFiscal.Cupom.Cancelar()
End If
End If
End If
Catch MensagemErro As FiscalException
MessageBox.Show("Mensagem Erro: " + MensagemErro.Message)
End Try
End Sub
Chamamos este processo de Serialização. A ferramenta faz um backup de todos os dados que estão em memória, salvando o estado atual da operação no momento em que ela é realizada, permitindo sua recuperada. As serializações são realizadas nas operações de cupom fiscal, cupom não fiscal, Sintegra e TEF.
