Caro Parceiro,
Ao longo desse mini-curso sobre nossa ferramenta Bematech Flash Builder – em especial a “Classe TEF” – aprendemos algumas particularidades da ferramenta, criamos uma rotina completa de cupom fiscal e transações de venda a cartão, e também acesso ao módulo administrativo das bandeiras.
Agora, nesse último Flash-Tip da série sobre a “Classe TEF”, vamos voltar nosso foco a uma particularidade importante dessa classe que é a possibilidade de modificação no arquivo Intpos.001.
Essa modificação pode ser necessária em alguns testes durante a homologação nas bandeiras, onde pode ser solicitada a alteração do conteúdo do arquivo ou de verificação de divergências do mesmo, por parte da aplicação.
Como já vimos nos Flash-Tips anteriores, o envio da transação é feito antes da execução da forma de pagamento “Cartão” através do método “CriarSolicitacaoCartao”, portanto em nosso exemplo vamos implementar os métodos de modificação do arquivo Intpos.001 logo após popularmos o objeto com os dados da transação.
O processo de modificação do arquivo é simples! Como a ferramenta Flash Builder só cria o arquivo Intpos.001, efetivamente no momento da transação, os dados do arquivo ficam armazenados em um “.xml” dentro da pasta da aplicação (TransacoesTEF.xml), permitindo a alteração do conteúdo antes da criação efetiva do arquivo.
Todo este processo é executado com base no objeto criado pelo método “CriarSolicitacaoCartao” (em nosso exemplo, pelo objeto “minhasolicitacaocartao”), através da propriedade Buffer.
Abaixo, podemos ver alguns métodos da propriedade Buffer:
Nessa imagem, temos o método que usaremos para inserir linhas no arquivo Intpos.001.
Vale lembrar que as linhas do arquivo Intpos.001 são contadas a partir da posição 0 (zero), sendo então 0 (zero) a primeira linha do arquivo, 1 (um) a segunda, 2 (dois) a terceira e, assim, sucessivamente.
Modificando o conteúdo do Intpos.001 (inserir e apagar linhas inteiras)
Para modificar uma linha completa no arquivo, podemos usar os dois métodos descritos abaixo:
| Insert | Método usado para inserir uma linha no arquivo. |
|
minhasolicitacaocartao.Buffer.Insert( 4, “777-777 = ABCDEFG\r\n” )
|
|
| RemoveAt | Método usado para remover uma linha do arquivo. |
|
minhasolicitacaocartao.Buffer.RemoveAt( 1 )
|
|
Modificando linhas específicas do arquivo Intpos.001
Além de podermos adicionar ou remover linhas do arquivo Intpos.001, também temos a possibilidade de modificar linhas específicas no arquivo. Abaixo temos as principais modificações que podem ser feitas no arquivo:
| Header | Linha de cabeçalho do arquivo aonde contém o tipo de transação a ser realizada. Em nosso exemplo, modificamos o tipo de transação de “CRT” (Cartão) para “CHQ” (Cheque). |
|
minhasolicitacaocartao.Header = “CHQ”
|
|
| Identificacao | Linha que armazena o número da transação (NSU). Em nosso exemplo registramos um NSU fictício com 6 posições. |
|
minhasolicitacaocartao.Identificacao = “123456″
|
|
| CupomVinculado | Modificamos o número do cupom dentro do Intpos.001. |
|
minhasolicitacaocartao.CupomVinculado = “999999″;
|
|
Vamos visualizar na prática, um exemplo de mudança do header do arquivo:
- em C#
private void btnefetuapagamento_Click(object sender, EventArgs e)
{
try
{
// MÉTODO PARA EXECUÇÃO DA FORMA DE PAGAMENTO QUANDO NÃO UTILIZARMOS
// A OPÇÃO DE “Cartao”.
if (txtdescforma.Text != “Cartao”)
{
BematechFiscal.Cupom.EfetuarPagamento( txtdescforma.Text, Convert.ToDecimal( txtvalorforma.Text ) );
}
else
{
// MÉTODO PARA CRIAÇÃO DA CHAMADA AO MÓDULO DA BANDEIRA,
// PARA EXECUÇÃO DA TRANSAÇÃO TEF
SolicitacaoCartao minhasolicitacaocartao;
minhasolicitacaocartao = BematechFiscal.TEF.CriarSolicitacaoCartao( txtdescforma.Text, Convert.ToDecimal( txtvalorforma.Text ) );
// ALTERAÇÃO DO HEADER DO ARQUIVO
minhasolicitacaocartao.Header = “CHQ”;
// MÉTODO PARA ENVIO DA SOLICITAÇÃO (CRIAÇÃO DO OBJETO ENVIAR SOLICITAÇÃO)
// E ENVIO AO GP.
Transacao minhatransacao = BematechFiscal.TEF.EnviarSolicitacao( minhasolicitacaocartao );
if (minhatransacao.Status != “0″)
{
MessageBox.Show(minhatransacao.TextoOperador);
return;
}
else
{
MessageBox.Show(minhatransacao.TextoOperador);
}
// EXECUÇÃO DA FORMA DE PAGAMENTO NA IMPRESSORA FISCAL.
BematechFiscal.Cupom.EfetuarPagamento(txtdescforma.Text, Convert.ToDecimal( txtvalorforma.Text ) );
while (true)
{
try
{
// CRIAÇÃO DO OBJETO MINHASOLICITACAOCONFIRMACAO PARA INICIAR A CONFIRMAÇÃO
// DAS TRANSAÇÕES TEF
SolicitacaoConfirmacao minhasolicitacaoconfirmacao = BematechFiscal.TEF.CriarSolicitacaoConfirmacao();
BematechFiscal.TEF.ConfirmarTransacao(minhasolicitacaoconfirmacao);
break;
}
catch (TEFException ErroTEF)
{
MessageBox.Show(ErroTEF.Message);
}
}
}
}
catch (FiscalException MensagemErro)
{
MessageBox.Show(“MensagemErro: ” + MensagemErro.Message);
}
catch (GerenciadorInativoException MensagemErro)
{
MessageBox.Show(“MensagemErro: ” + MensagemErro.Message);
}
}
- em VB.NET
Private Sub btnefetuapagamento_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnefetuapagamento.Click
Try
‘ MÉTODO PARA EXECUÇÃO DA FORMA DE PAGAMENTO QUANDO NÃO UTILIZARMOS
‘ A OPÇÃO DE “Cartao”.
If (txtdescforma.Text <> “Cartao”) Then
BematechFiscal.Cupom.EfetuarPagamento( txtdescforma.Text, Convert.ToDecimal( txtvalorforma.Text ) )
Else
‘ MÉTODO PARA CRIAÇÃO DA CHAMADA AO MÓDULO DA BANDEIRA, PARA EXECUÇÃO
‘ DA TRANSAÇÃO TEF
Dim minhasolicitacaocartao As SolicitacaoCartao = BematechFiscal.TEF.CriarSolicitacaoCartao(txtdescforma.Text, Convert.ToDecimal( txtvalorforma.Text))
‘ ALTERAÇÃO DO HEADER DO ARQUIVO
minhasolicitacaocartao.Header = “CHQ”
‘ MÉTODO PARA ENVIO DA SOLICITAÇÃO (CRIAÇÃO DO OBJETO ENVIAR SOLICITAÇÃO) E ENVIO
‘ AO GP
Dim minhatransacao As Transacao = BematechFiscal.TEF.EnviarSolicitacao( minhasolicitacaocartao)
If (minhatransacao.Status <> “0″) Then
MessageBox.Show(minhatransacao.TextoOperador)
Return
Else
MessageBox.Show(minhatransacao.TextoOperador)
End If
‘ EXECUÇÃO DA FORMA DE PAGAMENTO NA IMPRESSORA FISCAL
BematechFiscal.Cupom.EfetuarPagamento(txtdescforma.Text, Convert.ToDecimal( txtvalorforma.Text))
While (True)
Try
‘ CRIAÇÃO DO OBJETO MINHASOLICITACAOCONFIRMACAO PARA INICIAR A CONFIRMACÃO DAS
‘ TRANSAÇÕES TEF EFETAUDAS
Dim minhasolicitacaoconfirmacao As SolicitacaoConfirmacao = BematechFiscal.TEF.CriarSolicitacaoConfirmacao()
BematechFiscal.TEF.ConfirmarTransacao(minhasolicitacaoconfirmacao)
Exit While
Catch MensagemErro As TEFException
MsgBox(“MensagemErro: ” + MensagemErro.Message)
End Try
End While
End If
Catch MensagemErro As FiscalException
MsgBox(“MensagemErro: ” + MensagemErro.Message)
Catch MensagemErro As GerenciadorInativoException
MsgBox(“MensagemErro: ” + MensagemErro.Message)
End Try
End Sub
Neste exemplo, como estamos fazendo uma venda TEF, o header do arquivo é identificado como “CRT” que indica que a transação executa é do tipo “Cartão”:

Nesta imagem, percebemos a modificação do header do arquivo para “CHQ” (Cheque), e na execução do código teremos um alerta de erro, devido à diferença de conteúdo deste arquivo:

Assim, concluindo nosso aprendizado sobre a “Classe TEF” da ferramenta Bematech Flash Builder.
Esperamos que esta edição e todas as demais apresentadas, tenham sido de grande ajuda à você nosso parceiro de software que desenvolve para a plataforma .NET, e que procurava uma ferramenta de altíssimo nível em facilidade de integração, compreensão e rapidez.
Agradecemos muito por sua atenção e nos vemos nos próximos Flash-Tips!
Caso deseja receber os exemplos em C# ou VB.NET apresentados nestas edições, nos envie um email para partners@bematech.com.br.
Boas implementações!
Related posts:
- 29ª Edição – Conhecendo o Microterminal FIT Integra Bematech Caro parceiro, Esta edição de nosso Flash-Tip destina-se ao conhecimento...
- Agilizando a busca no retorno de status da impressora fiscal Bematech Prezado parceiro, Sabemos que as impressoras fiscais Bematech, interagem com...
- Bematech FlashTip – 20a. Edição – Conhecendo a BIOS, BOOT, Segmentos de Memória, SDK e o VisualSDK Builder Caro parceiro, Como este é o primeiro Flash-Tip do ano,...
- Edição 63 – Gerando o SPED Caro parceiro, Dando continuidade a nossa seqüência de Flash Tips...
- Edição 76 – Acionando o Buzzer na Impressora Não Fiscal Caro Partner e Desenvolvedor, Um dos recursos disponíveis nas impressoras...