Bematech Software Partners

 
  • jun 15 2009

    Edição 42 – Explorando a Classe TEF

    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:

    insert_method

    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”:

    intpos_inicial

    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:

    alerta_aplicativo

    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:

    1. 29ª Edição – Conhecendo o Microterminal FIT Integra Bematech Caro parceiro, Esta edição de nosso Flash-Tip destina-se ao conhecimento...
    2. Agilizando a busca no retorno de status da impressora fiscal Bematech Prezado parceiro,  Sabemos que as impressoras fiscais Bematech, interagem com...
    3. 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,...
    4. Edição 63 – Gerando o SPED Caro parceiro,  Dando continuidade a nossa seqüência de Flash Tips...
    5. Edição 76 – Acionando o Buzzer na Impressora Não Fiscal Caro Partner e Desenvolvedor, Um dos recursos disponíveis nas impressoras...

     

Nenhum Comentário

Deixe um comentário