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
|
Deixamos para a próxima edição os métodos de retorno de informações da
impressora, pois são muitos e escolheremos os mais utilizados e de maior
importância.
Não perca!
Até lá
e boas implementações!