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