« Conhecendo o assembly Bematech.Fiscal.dll | Voltar à Página Principal | Bematech Flash Builder - Operações não fiscais »

Bematech Flash Builder - Desenvolvendo o primeiro Cupom Fiscal

Caro parceiro,

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"!
Criando o Cupom Fiscal

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.

Comente este artigo

(Se você nunca fez um comentário aqui, você precisará obter a aprovação do gestor do Bemacast, até lá seu comentário não vai aparecer na lista. Obrigado por aguardar.)