Business - Automação Comercial
Realizando a primeira transação TEF
Agora que já conhecemos um pouco sobre a classe TEF e seus respectivos métodos/propriedades e já implementamos uma rotina simples de verificação do Gerenciador Padrão, vamos implementar nesta edição, um cupom fiscal completo e executar transações TEF com um ou múltiplos cartões.
por Andre SchikovskiAgora que já conhecemos um pouco sobre a classe TEF e seus respectivos métodos/propriedades (Flash-Tip edição 28) e já implementamos uma rotina simples de verificação do Gerenciador Padrão (Flash-Tip edição 30), vamos implementar nesta edição, um cupom fiscal completo e executar transações TEF com um ou múltiplos cartões.
Nosso primeiro passo será adicionar as referências
necessárias do Flash Builder ao projeto para
impressão do comprovante fiscal e também
para as transações TEF.
- em C#
using
Bematech; |
- em VB.NET
Imports
Bematech Imports Bematech.Fiscal Imports Bematech.Fiscal.ECF Imports Bematech.Fiscal.ECF.CupomFiscal Imports Bematech.Fiscal.TEF |
Agora que temos as referências adicionadas, vamos inserir em um formulário os seguintes objetos:
Object
|
Name
|
Text
|
GroupBox | - | Comandos Cupom Fiscal |
GroupBox | - | Comandos TEF |
Button | btnabrecupom | ABRE CUPOM FISCAL |
Button | btnvendeitem | VENDE ITEM |
Button | btniniciafechamento | INICIA FECHAMENTO |
Button | btnefetuapagamento | EFETUAR FORMA PAGAMENTO |
Button | btnfecharcupom | FECHAR CUPOM FISCAL |
Button | btnimprimetef | IMPRIME COMPROVANTE TEF |
Label | - | Forma Pagamento |
Label | - | Valor Pago |
Abaixo, um exemplo de como ficará nosso formulário:
Detalhe: Como já temos nosso objeto fiscal criado no projeto, com o nome "BematechFiscal", não precisamos construí-lo novamente, basta usarmos durante todo o desenvolvimento.
Abertura do cupom fiscal
Agora, vamos implementar o código do botão "btnabrecupom" para a abertura do cupom fiscal.
- em C#
private void btnabrecupom_Click(object
sender, EventArgs e) |
- em VB.NET
Private
Sub btnabrecupom_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnabrecupom.Click
"
ABERTURA DO CUPOM FISCAL COM A IDENTIFICAÇÃO
DO CLIENTE (CPF,NOME,ENDEREÇO),
|
Note que no exemplo optamos por utilizar um dos overloads do Cupom que possui 3 parâmetros, sendo eles CPF/CNPJ do cliente, nome e endereço. Se usássemos uma impressora fiscal que não permitisse a entrada destes parâmetros, o próprio Flash Bulder se encarregaria de compatibilizar, usando apenas o parâmetro aceitável.
Venda de itens
Abrimos o botão "btnvendeitem" e implementamos o código da venda do item. Vamos criar um objeto do tipo "ItemExtendido" e popular este objeto com os parâmetros correspondentes. Lembrando que este tipo de objeto permite várias entradas de parâmetros, igual a função Bematech_FI_VendeItemDepartamento que temos em nossa BemaFI32.dll, como por exemplo, o código e descrição do item com até 49 e até 200 caracteres respectivamente, além da entrada de unidade de medida.
- em C#
private void btnvendeitem_Click(object
sender, EventArgs e) |
- em VB.NET
Private Sub btnvendeitem_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles btnvendeitem.Click |
Inicia fechamento do cupom fiscal
Agora que temos as rotinas de abertura do cupom fiscal e a venda de item prontas, é hora de começar a finalizar o cupom fiscal, através do botão "btniniciafechamento".
- em C#
private void btniniciafechamento_Click(object
sender, EventArgs e) |
- em VB.NET
Private Sub btninciafechamento_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles btninciafechamento.Click |
Note que neste código, os parâmetros
de acréscimo e desconto foram passados com
valores zerados.
Efetuar Forma de pagamento
Com o fechamento do cupom fiscal iniciado, vamos lançar as formas de pagamento no botão "btnefetuapagamento".
- em C#
private void btnefetuapagamento_Click(object
sender, EventArgs e) |
- em VB.NET
Private Sub btnefetuapagamento_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles btnefetuapagamento.Click |
Note que a rotina foi desenvolvimenta para suportar
um processo de venda com múltiplas formas
de pagamento e também múltiplas transações
TEF.
Detalhe: No exemplo, vamos fazer a impressão da forma de pagamento usando somente a descrição "Cartao", então o primeiro trecho da nossa rotina vai efetuar o pagamento usando qualquer forma de pagamento que não seja vinculada ao TEF. No segundo trecho da rotina, vamos executar uma solicitação de chamada ao módulo da bandeira, através do objeto "minhasolicitacaocartao", e também o envio da solicitação usando o objeto "minhatransacao". As imagens abaixo mostram a execução da forma de pagamento e também a tela do GP ativo.
Vale lembrar que toda a estrutura de execução das formas de pagamento e transações com o GP, estão dentro de um tratamento "Try/Catch", onde qualquer erro será tratado pelas exceptions: FiscalException e GerenciadorInativoException.
Depois de concluirmos nossa transação TEF, o Flash Builder irá tratar o retorno da bandeira (arquivo INTPOS.001). Note em nosso código que no momento do envio da transação analisamos seu status, e caso ocorra algum problema, exibimos para o operador a mensagem relacionada ao campo 30 do INTPOS.001, tudo isso automaticamente pelo Flash Builder.
Ainda dentro da rotina de execução
das formas de pagamento, estamos confirmando as
transações TEF efetuadas. Para isso,
dentro de um laço de repetição
(While (true)) criamos um objeto do tipo minhasolicitacaoconfirmacao,
que tem a função de verificar e confirmar
todas as transações TEF executadas.
Vamos finalizar o cupom fiscal através do
botão "btnfecharcupom", antes da
impressão do TEF.
- em C#
private void btnfecharcupom_Click(object
sender, EventArgs e) |
- em VB.NET
Private Sub btnfecharcupom_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles btnfecharcupom.Click |
Definimos no método "TerminarFechamento" a impressão de uma mensagem promocional como parâmetro único. Esta mensagem pode conter até 08 linhas de 40 colunas.
Com o nosso cupom fiscal já finalizado e nossas transações efetuadas e confirmadas, chegou a hora de imprimir os comprovantes vinculados do TEF.
Vale salientar que aqui estamos populando uma variável chamada "minhacolecao" do tipo "Transacoes" com as transações efetuadas anteriormente, pois iremos usar essa variável mais adiante no processo de cancelamento do TEF para o próximo Flash Tip, explicando melhor a necessidade de armazenar nossa coleção de transações em uma variável pública, lembrando que essa variável é declarada na sessão "Public Class" do projeto, na mesma área onde criamos o objeto "BematechFiscal".
Chegou a hora de imprimir o comprovante vinculado (Comprovante de Crédito e Débito), dentro do botão "btnimprimetef".
- em C#
private void btnimprimetef_Click(object
sender, EventArgs e) |
- em VB.NET
Private Sub btnimprimetef_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles btnimprimetef.Click |
Nesta rotina, implementamos inicialmente uma exigência das homologadoras que é o travamento do teclado e do mouse durante a impressão do comprovante TEF.
Criamos um contador (conta) que incrementa todas as transações TEF pendentes de impressão (comprovantes vinculados ou gerenciais no caso de reimpressão). Após o término da impressão dos comprovantes vinculados, podemos ver que o teclado e o mouse são destravados (BematechFiscal.Tef.TravarTeclado(false)), se a impressão ocorrer com sucesso a rotina é finalizada, porém se houve algum problema de queda de energia, ou qualquer outro que trave a impressão dos comprovantes vinculados, é possível reimprimi-los mudamos o valor de um parâmetro do método Imprimir, conforme detalhado abaixo:
(...)
BematechFiscal.TEF.Imprimir(impfiscal.TEF.Transacoes[conta],
false);
(...)
Onde "false" indica que a impressão do TEF será em um comprovante não fiscal vinculado (Comprovante de Crédito e Débito) e "true" será em um relatório gerencial.
Nos nossos exemplos, criamos uma condição para esta situação onde qualquer erro de impressão que ocorrer no comprovante não fiscal vinculado, irá emitir uma mensagem na tela do usuário solicitando a reimpressão dos comprovantes que será executada dentro dos relatórios gerenciais.
Como a confirmação das transações já foi efetuada no botão "btnefetuapagamento" nenhum comprovante TEF fica pendente de impressão. Então, podemos executar o método "ClearTransacoes" para limpar todas as transações e evitar que ocorram falhas de impressão, finalizando a operação do TEF.
Importante: Lembre que em nosso exemplo, estamos apenas conhecendo a classe TEF e seus métodos separadamente, portanto não estamos aplicando a regra do roteiro de implementação do TEF fornecido pelas empresas homologadoras.
- DarumaFramework.SO no LinuxAutomação Comercial
- Palavra de status da impressora na DarumaFrameworkAutomação Comercial
- TEF – Comprovante de Crédito ou DébitoAutomação Comercial
- Comunicar com equipamentos Daruma em linguagens 16bits e DOSAutomação Comercial
- Verificando Redução Z nas Impressoras DarumaAutomação Comercial