« Bematech Flash Builder - Desenvolvendo o primeiro Cupom Fiscal | Voltar à Página Principal | Bematech Flash Builder - Retornando Informações da Impressora »

Bematech Flash Builder - Operações não fiscais

Vinculando um Cupom Não Fiscal, Efetuando Recebimentos e Imprimindo Relatórios

Caro parceiro,

Na edição passada, criamos o nosso primeiro cupom fiscal. Abrimos, vendemos itens, fechamos e obtivemos o número do cupom, além de testar o seu status e recuperar os itens vendidos através do processo de serialização.

Nesta edição, iremos utilizar alguns métodos não fiscais, como: impressões de cupons vinculados, de recebimento (múltiplos recebimentos), realizar a impressão de relatórios gerenciais e verificar seus status.

Estaremos visualizando todas as rotinas em C# e Visual Basic .NET.

Criando o Cupom Não Fiscal Vinculado

Aproveitando o form principal, vamos criar mais alguns botões para abrir um cupom vinculado, imprimir um texto qualquer e fechar; efetuar recebimentos e emitir um relatório gerencial. Além disso, iremos testar o status de cupom vinculado, recebimento e relatório gerencial abertos.

Não esqueça que o namespace para as operações não fiscais é Bematech.Fiscal.ECF.OperacoesNaoFiscais.

Lembre-se que para a impressão do cupom não fiscal vinculado, temos que primeiro emitir um cupom fiscal. Para isso, vamos manter a criação do cupom fiscal feita na edição anterior, usando no pagamento a forma "A prazo" e, posteriormente, no cupom não fiscal vinculado.

Abaixo, permanece o código do botão cmdFechaCupom com a forma de pagamento "A prazo" e a seqüência de criação do cupom não fiscal vinculado.

Não precisamos nos preocupar se a forma "A prazo" está cadastrada na impressora, o próprio método se encarrega de verificar e cadastrar, caso ela não exista.

em C#

.
.
.

// 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( "A prazo", "Obrigado, volte sempre!" );
  }
  catch ( FiscalException MensagemErro )
  {
    MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
  }
}

// Botão Abre Cupom Não Fiscal Vinculado
private void cmdAbreVinculado_Click(object sender, System.EventArgs e)
{
  try
  {
    // Método que verifica se existe algum cupom não fiscal vinculado aberto.
    if ( BematechFiscal.OperacaoNaoFiscal.Status.VinculadoAberto )
      MessageBox.Show( "Cupom não Fiscal vinculado já aberto!", "Atenção",
        MessageBoxButtons.OK, MessageBoxIcon.Exclamation );
    else
    {
      // Recebe o número do cupom fiscal
      int iNumeroCupom = BematechFiscal.Cupom.Numero;

      // Método para abrir o cupom não fiscal vinculado, passando como parâmetro
      // a forma de pagamento, o valor pago e o número do cupom (COO).
      BematechFiscal.OperacaoNaoFiscal.AbrirVinculado( "A prazo", 1.00M,
        iNumeroCupom );
    }
  }
  catch ( FiscalException MensagemErro )
  {
    MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
  }
}

// Botão Imprime Texto
private void cmdImprimeTexto_Click(object sender, System.EventArgs e)
{
  try
  {
    // Método para imprimir o texto no comprovante não fiscal vinculado.
    BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir(
      "Teste de Impressão...\r\n" );
  }
  catch ( FiscalException MensagemErro )
  {
    MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
  }
}

// Botão Fecha Cupom Não Fiscal Vinculado
private void cmdFecharCupomVinculado_Click(object sender, System.EventArgs e)
{
  try
  {
    // Método para fechar o Cupom Não Fiscal vinculado.
    BematechFiscal.OperacaoNaoFiscal.Relatorio.Fechar();
  }
  catch ( FiscalException MensagemErro )
  {
    MessageBox.Show("Mensagem Erro: " + MensagemErro.Message);
  }
}

em VB.NET

.
.
.

' 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("A prazo", "Obrigado, volte sempre!")
  Catch MensagemErro As FiscalException
    MsgBox("Mensagem Erro: " + MensagemErro.Message)
  End Try
End Sub

' Botão Abre Cupom Não Fiscal Vinculado
Private Sub cmdAbreVinculado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAbreVinculado.Click
  Try
    ' Método que verifica se existe algum cupom não fiscal vinculado aberto.
    If (BematechFiscal.OperacaoNaoFiscal.Status.VinculadoAberto) Then
      MessageBox.Show("Cupom não Fiscal vinculado já aberto!", "Atenção", _
        MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    Else
      ' Recebe o número do cupom fiscal
      Dim iNumeroCupom As Integer = BematechFiscal.Cupom.Numero

      ' Método para abrir o cupom não fiscal vinculado, passando como parâmetro
      ' a forma de pagamento, o valor pago e o número do cupom (COO).
      BematechFiscal.OperacaoNaoFiscal.AbrirVinculado("A prazo", 1.0, _
        iNumeroCupom)
    End If
  Catch MensagemErro As FiscalException
    MsgBox("Mensagem Erro: " + MensagemErro.Message)
  End Try
End Sub

' Botão Imprime Texto
Private Sub cmdImprimeTexto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdImprimeTexto.Click
  Try

    ' Método para imprimir o texto no comprovante não fiscal vinculado.
    BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir("Teste de Impressão..." _
      + vbCrLf)
  Catch MensagemErro As FiscalException
    MsgBox("Mensagem Erro: " + MensagemErro.Message)
  End Try
End Sub

' Botão Fecha Cupom Não Fiscal Vinculado
Private Sub cmdFechaCupomVinculado_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFechaCupomVinculado.Click
  Try
    ' Método para fechar o Cupom Não Fiscal vinculado.
    BematechFiscal.OperacaoNaoFiscal.Relatorio.Fechar()
  Catch MensagemErro As FiscalException
    MessageBox.Show("Mensagem Erro: " + MensagemErro.Message)
  End Try
End Sub

Repare que o método usado para verificar o status do cupom não fiscal vinculado é "BematechFiscal.OperacaoNaoFiscal.Status.VinculadoAberto" que nos devolve true para aberto ou false para fechado, simples de verificar! O mesmo método pode ser aplicado para o cupom de recebimento e para o relatório gerencial. Estaremos usando-o na seqüência.


Realizando Múltiplos Recebimentos (Cupom Não Fiscal Não Vinculado)


Antes de criarmos o código para realizar esta operação, temos que cadastrar alguns totalizadores não fiscais na impressora para podermos efetuar os recebimentos. A idéia é cadastrar 3 totalizadores para recebermos "01-Conta de Agua", "02-Conta de Luz" e "03-Conta de Gas". Estes serão os nomes e os índices de nossos totalizadores.

Importante: Para que possamos cadastrá-los a impressora não poderá ter movimento no dia.

Temos que adicionar o namespace Bematech.Fiscal.ECF.Inicializacao em nosso projeto para poder usar a classe e o método de criação do totalizador não fiscal.

Em seguida, iremos implementar o código para efetuar estes 3 recebimentos, fazendo um deles e depois todos de uma só vez.

Repare que o código do botão cmdMultiRecebimentos cria uma coleção de recebimentos, verifica se existe algum recebimento já aberto, recebe-os e paga com 3 formas de pagamento diferentes, incluindo acréscimo ao subtotal. Completo!

em C#

// Botão Programa Totalizador
private void cmdProgramaTotalizador_Click(object sender, System.EventArgs e)
{
  try
  {
    // Método para programa o totalizador não fiscal.
    BematechFiscal.Inicializacao.ProgramarTotalizadorNaoFiscal(1,
      
"Conta de Agua");
    BematechFiscal.Inicializacao.ProgramarTotalizadorNaoFiscal(2,
      "Conta de Luz");
    BematechFiscal.Inicializacao.ProgramarTotalizadorNaoFiscal(3,
      "Conta de Gas");
  }
  catch ( FiscalException MensagemErro )
  {
    MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
  }
}

// Botão para efetuar o recebimento de uma única conta, pagamento em Cheque.
private void cmdEfetuaRecebimento_Click(object sender, System.EventArgs e)
{
  try
  {
    // Método usado para efetuar o recebimento não fiscal.
    BematechFiscal.OperacaoNaoFiscal.Cupom.Receber( "Conta de Luz", 30.00M );

    // Método para fechar o recebimento não fiscal.
    BematechFiscal.OperacaoNaoFiscal.Cupom.Fechar( "Cheque", 30.00M );
  }
  catch ( FiscalException MensagemErro )
  {
    MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
  }
}

// Botão para efetuar míltiplos recebimentos.
private void cmdMultiRecebimentos_Click(object sender, System.EventArgs e)
{
  // Classe que cria uma coleção de recebimentos.
  Recebimentos MeusRecebimentos = new Recebimentos();

  // Método que adiciona à coleção, o recebimento "Conta de Luz".   
  MeusRecebimentos.Adicionar( new Recebimento( "Conta de Luz", 35.00M ) );

  // Método que adiciona à coleção, o recebimento "Conta de Agua".
  MeusRecebimentos.Adicionar( new Recebimento( "Conta de Agua", 25.00M ) );

  // Método que adiciona à coleção, o recebimento "Conta de Gas".
  MeusRecebimentos.Adicionar( new Recebimento( "Conta de Gas", 75.00M ) );

  try
  {
    if ( BematechFiscal.OperacaoNaoFiscal.Cupom.Status.Aberto )
      MessageBox.Show( "Cupom de recebimento já aberto!", "Atenção",
        MessageBoxButtons.OK, MessageBoxIcon.Exclamation );

    else
    {
      // Método para abrir o cupom de recebimento.
      BematechFiscal.OperacaoNaoFiscal.Cupom.Abrir();

      // Método para efetuar todos os recebimento da coleção "MeusRecebimento".
      BematechFiscal.OperacaoNaoFiscal.Cupom.Receber( MeusRecebimentos );

      // Método para subtotalizar o cupom de recebimento, com o acréscimo dado.
      BematechFiscal.OperacaoNaoFiscal.Cupom.SubTotalizar();

      // Método para iniciar o fechamento do recebimento, dando uma acréscimo
      // de 10%.
      BematechFiscal.OperacaoNaoFiscal.Cupom.AcrescerSubTotal(
        TipoAcrescimoDesconto.Percentual, 10.00M );

      // Método para totalizar.
      BematechFiscal.OperacaoNaoFiscal.Cupom.Totalizar();

      // Método para efetuar o pagamento, com 3 formas diferentes.
      BematechFiscal.OperacaoNaoFiscal.Cupom.EfetuarPagamento("Dinheiro", 49.50M);
      BematechFiscal.OperacaoNaoFiscal.Cupom.EfetuarPagamento("Cheque", 49.50M);
      BematechFiscal.OperacaoNaoFiscal.Cupom.EfetuarPagamento("Cartao", 49.50M);

      // Método para fechar o cupom de recebimento.
      BematechFiscal.OperacaoNaoFiscal.Cupom.Fechar();
    }
  }
  catch ( FiscalException MensagemErro )
  {
    MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
  }
}

• em VB.NET 

// Botão Programa Totalizador
Private Sub cmdProgramaTotalizador_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProgramaTotalizador.Click
  Try
    BematechFiscal.Inicializacao.ProgramarTotalizadorNaoFiscal(1, "Conta de Agua")
    BematechFiscal.Inicializacao.ProgramarTotalizadorNaoFiscal(2, "Conta de Luz")
    BematechFiscal.Inicializacao.ProgramarTotalizadorNaoFiscal(3, "Conta de Gas")
  Catch MensagemErro As FiscalException
    MsgBox("Mensagem Erro: " + MensagemErro.Message)
  End Try
End Sub


// Botão para efetuar o recebimento de uma única conta, pagamento em Cheque.

Private Sub cmdEfetuaRecebimento_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEfetuaRecebimento.Click
  
Try
    
' Método usado para efetuar o recebimento não fiscal.
    
BematechFiscal.OperacaoNaoFiscal.Cupom.Receber("Conta de Luz", 30D)

    
' Método para fechar o recebimento não fiscal.
    
BematechFiscal.OperacaoNaoFiscal.Cupom.Fechar("Cheque", 30D)
  
Catch MensagemErro As FiscalException
    
MessageBox.Show("Mensagem Erro: " + MensagemErro.Message)
  
End Try
End Sub

// Botão para efetuar míltiplos recebimentos.

Private Sub cmdMultiRecebimentos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMultiRecebimentos.Click

  
' Classe que cria uma coleção de recebimentos.
  
Dim MeusRecebimentos As Recebimentos = New Recebimentos

  ' Método que adiciona à coleção, o recebimento "Conta de Luz".   
  
MeusRecebimentos.Adicionar(New Recebimento("Conta de Luz", 35D))

  ' Método que adiciona à coleção, o recebimento "Conta de Agua".   
  
MeusRecebimentos.Adicionar(New Recebimento("Conta de Agua", 25D))

  ' Método que adiciona à coleção, o recebimento "Conta de Gas".   
  
MeusRecebimentos.Adicionar(New Recebimento("Conta de Gas", 75D))

  
Try
  
  
If (BematechFiscal.OperacaoNaoFiscal.Cupom.Status.Aberto) Then
      
MessageBox.Show("Cupom de recebimento já aberto!", "Atenção", _
        
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    
Else
      
' Método para abrir o cupom de recebimento.
      
BematechFiscal.OperacaoNaoFiscal.Cupom.Abrir()

      ' Método para efetuar todos os recebimento da coleção "MeusRecebimento".
     
BematechFiscal.OperacaoNaoFiscal.Cupom.Receber(MeusRecebimentos)

      
' Método para subtotalizar o cupom de recebimento, com o acréscimo dado.
      
BematechFiscal.OperacaoNaoFiscal.Cupom.SubTotalizar()

      
' Método para iniciar o fechamento do recebimento, dando uma acréscimo
      '
de 10%.
      
BematechFiscal.OperacaoNaoFiscal.Cupom.AcrescerSubTotal( _
        
TipoAcrescimoDesconto.Percentual, 10D)

      
' Método para totalizar.
      
BematechFiscal.OperacaoNaoFiscal.Cupom.Totalizar()

      
' Método para efetuar o pagamento, com 3 formas diferentes.
      BematechFiscal.OperacaoNaoFiscal.Cupom.EfetuarPagamento("Dinheiro", 49.5D)
      BematechFiscal.OperacaoNaoFiscal.Cupom.EfetuarPagamento("Cheque", 49.5D)
      BematechFiscal.OperacaoNaoFiscal.Cupom.EfetuarPagamento("Cartao", 49.5D)

      
' Método para fechar o cupom de recebimento.
      
BematechFiscal.OperacaoNaoFiscal.Cupom.Fechar()
    
endif
  
Catch MensagemErro As FiscalException
    
MessageBox.Show("Mensagem Erro: " + MensagemErro.Message)
  
End Try
End Sub

Uma informação importante que não podemos deixar passar é a compatibilidade desta ferramenta em relação aos modelos de impressoras fiscais (MP-20 FI II, MP-40 FI II, MP-25 FI, MP-2000 TH FI e etc). Você deve ter reparado que a seqüência de métodos executados está voltada para os novos modelos de impressoras, como por exemplo, os métodos de recebimento que realizamos acima, onde recebemos mais de uma conta. Esta implementação é uma seqüência nativa dos novos modelos, mas se a impressora em uso for a MP-20 FI II ou a MP-40 FI II, o Bematech Flash Builder compatibiliza, sem a necessidade de você reprogramar esta seqüência.


Impressão de Relatório Gerencial


Para finalizamos esta rotina de implementações, vamos criar um botão para a impressão do relatório gerencial.

Também iremos testar o seu status.

em C#

// Botão Relatório Gerencial
private void cmdRelatorioGerencial_Click(object sender, System.EventArgs e)
{
  
try
  
{
    
// Método para verificar o status de gerencial aberto.
    
if ( BematechFiscal.OperacaoNaoFiscal.Status.GerencialAberto )
      
MessageBox.Show( "Relatório Gerencial já aberto!", "Atenção",
        
MessageBoxButtons.OK, MessageBoxIcon.Exclamation );
    
else
      
// Método para abrir o relatório gerencial.
      
BematechFiscal.OperacaoNaoFiscal.AbrirGerencial();

      // Método para imprimir o texto no relório gerencial.
      BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir(
"TESTE DE IMPRESSAO.\n" );
      BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir(
"TESTE DE IMPRESSAO.\n" );
      BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir(
"TESTE DE IMPRESSAO.\n" );
      BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir(
"TESTE DE IMPRESSAO.\n" );
      BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir(
"TESTE DE IMPRESSAO.\n" );

    
// Método para fechar o relatório gerencial.
    
BematechFiscal.OperacaoNaoFiscal.Relatorio.Fechar();
  
}
  
catch ( FiscalException MensagemErro )
  
{
    
MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
  
}
}

• em VB.NET

// Botão Relatório Gerencial
Private Sub cmdRelatorioGerencial_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRelatorioGerencial.Click
  
Try
    
' Método para verificar o status de gerencial aberto.
    
If (BematechFiscal.OperacaoNaoFiscal.Status.GerencialAberto) Then
      
MessageBox.Show("Relatório Gerencial já aberto!", "Atenção", _
        
MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    
Else
      
' Método para abrir o relatório gerencial.
      
BematechFiscal.OperacaoNaoFiscal.AbrirGerencial()
      

      
' Método para imprimir o texto no relório gerencial.
    
  
BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir("TESTE DE IMPRESSAO.\n")
    
  
BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir("TESTE DE IMPRESSAO.\n")
    
  
BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir("TESTE DE IMPRESSAO.\n")
    
  
BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir("TESTE DE IMPRESSAO.\n")
    
  
BematechFiscal.OperacaoNaoFiscal.Relatorio.Imprimir("TESTE DE IMPRESSAO.\n")

    
  ' Método para fechar o relatório gerencial.
      BematechFiscal.OperacaoNaoFiscal.Relatorio.Fechar()
    End If
  Catch MensagemErro As FiscalException
    MessageBox.Show("Mensagem Erro: " + MensagemErro.Message)
  End Try
End Sub

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.)