Business - Automação Comercial

Bematech: Acessando o módulo ADM

Vamos implementar agora, a rotina que fará o acesso ao módulo administrativo das bandeiras - o Módulo ADM.

por Andre Schikovski



Vamos implementar agora, a rotina que fará o acesso ao módulo administrativo das bandeiras - o Módulo ADM.

Este módulo permite acessar as funções de cancelamento, emissão de relatórios, fechamento de lote de transações, re-impressão de TEF e demais configurações específicas da bandeira escolhida.

Como já estamos familiarizados com as referências de dlls e também com as funções da classe TEF, podemos ir direto ao ponto, implementando a chamada ao módulo ADM.

Então, criamos um novo botão dando o nome de "FUNÇÕES ADMINISTRATIVAS", conforme ilustração:


Abrimos o código deste botão e implementamos:

- em C#

private void btnfuncoesadm_Click(object sender, EventArgs e)
{
try
{
// CRIAÇÃO DA CHAMADA DO MÓDULO ADM DAS BANDEIRAS
SolicitacaoAdministrativa solicitacaoadm = BematechFiscal.TEF.CriarSolicitacaoAdministrativa();

Transacao resp = BematechFiscal.TEF.EnviarSolicitacao(solicitacaoadm);

if (Convert.ToInt32(resp.QuantidadeLinhas) > 0)
{
while (true)
{
try
{
BematechFiscal.TEF.TravarTeclado(true);
BematechFiscal.TEF.Vias = 1;
BematechFiscal.TEF.Imprimir(resp, true);
BematechFiscal.TEF.TravarTeclado(false);
break;
}
catch
{
BematechFiscal.TEF.TravarTeclado(false);
if (MessageBox.Show("Impressora não responde. Tentar imprimir novamente ?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) == DialogResult.No)
break;
}
}
}
}
catch (GerenciadorInativoException MensagemErro)
{
MessageBox.Show( "Mensagem Erro: " + MensagemErro.Message );
}
BematechFiscal.TEF.Vias = 2;
}

- em VB.NET

Private Sub btnfuncoesadm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnfuncoesadm.Click
Try
" CRIAÇÃO DA CHAMADA DO MÓDULO ADM DAS BANDEIRAS
Dim solicitacaoadm As SolicitacaoAdministrativa = BematechFiscal.TEF.CriarSolicitacaoAdministrativa()

Dim
resp As Transacao = BematechFiscal.TEF.EnviarSolicitacao(solicitacaoadm)

If (Convert.ToInt32(
resp.QuantidadeLinhas > 0)) Then
While (True)
Try
BematechFiscal.TEF.TravarTeclado(True)
BematechFiscal.TEF.Vias = 1
BematechFiscal.TEF.Imprimir(
resp, True)
BematechFiscal.TEF.TravarTeclado(False)
Exit While
Catch
BematechFiscal.TEF.TravarTeclado(False)
If (MessageBox.Show("Impressora não responde. Tentar imprimir novamente ?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) = DialogResult.No) Then
Exit While
End If
End Try
End While
End If
Catch MensagemErro As GerenciadorInativoException
MessageBox.Show("Mensagem Erro: " + MensagemErro.Message)
End Try
BematechFiscal.TEF.Vias = 2
End Sub

O acesso ao módulo administrativo é bem simples! Em nosso exemplo, criamos um objeto do tipo "SolicitacaoAdministrativa" e enviamos o mesmo ao GP através do método "EnviarSolicitacao".

Obs: Note que estamos tratando um tipo de exceção que é a "GerenciadorInativoException" exclusiva para retornos relacionados ao GP das bandeiras.

Ao executar o código, teremos a janela do GP aberta para a escolha da bandeira que faremos a operação ADM. Dependendo da operação, podemos ou não ter uma resposta para imprimir, por exemplo, se optarmos por fazer uma re-impressão do TEF, um cancelamento de TEF ou um fechamento de lote, teremos resposta para imprimir. Sendo assim, usamos o método "Imprimir" semelhante a rotina de impressão dos comprovantes do TEF já vista nos Flash-Tips anteriores, porém com uma condição: através do método "QuantidadeLinhas" da classe "Transacao", sabemos se a transação realizada possui ou não linhas para imprimir, se houverem linhas para impressão executamos a rotina, caso contrário não.

Fazemos também, o teste de verificação com a impressora. Se houver uma falha na comunicação, exibimos uma mensagem ao operador perguntando se deseja continuar a impressão ou não.

Andre Schikovski

Andre Schikovski