Ir para conteúdo
  • Cadastre-se

dev botao

ACBrLib com VB6 - Captura de Retorno


João Paulo Pires
Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1832 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores

Não sei se compreendi a questão...

A DLL retorna a resposta em uma variável...

Repare que a resposta é uma estrutura do tipo INI... ou seja, com uma Classe que interprete Arquivos INI você conseguiria capturar os valores dos Campos retornados 

https://pt.m.wikipedia.org/wiki/INI_(formato_de_arquivo)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution

Notei que o manual da ACBrLIb ainda não exemplifica o formato dos Retornos em INI... Procuraremos atualizar... 

Mas em quanto isso, use o manual do ACBrMonitorPLUS, para ver exemplos dos retornos ( Lib e Monitor usam a mesma rotina de retornos )

https://acbr.sourceforge.io/ACBrMonitor/NFEStatusServico.html

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Agora, Daniel Simoes disse:

Não sei se compreendi a questão...

A DLL retorna a resposta em uma variável...

Repare que a resposta é uma estrutura do tipo INI... ou seja, com uma Classe que interprete Arquivos INI você conseguiria capturar os valores dos Campos retornados 

https://pt.m.wikipedia.org/wiki/INI_(formato_de_arquivo)

ok Daniel, vou verificar isso. obrigdo.

Link para o comentário
Compartilhar em outros sites

@Daniel Simoes boa tarde, consegui fazer a leitula dos logs de retorno usando esse exemplo do nosso amigo http://www.macoratti.net/vb_ini.htm

porém o retorno esta vindo com os caracteres todos bagunçados, parece nao estar como UTF-8. 
Mas quando eu vejo direto no arquivo ACBrLib-20191105.log, esta na formatação correta. 
Como resolvo isso?

 197413933_Semttulo.thumb.png.64d7d2aeda3d1e0de9206198cc572b0c.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

consegui resolver agora... usei essa função...

 

Private Const CP_UTF8 As Long = 65001 ' UTF-8 Code Page

'Sys call to convert multiple byte chars to a char
Private Declare Function MultiByteToWideChar Lib "KERNEL32" ( _
    ByVal CodePage As Long, _
    ByVal dwFlags As Long, _
    ByVal lpMultiByteStr As Long, _
    ByVal cchMultiByte As Long, _
    ByVal lpWideCharStr As Long, _
    ByVal cchWideChar As Long) As Long

Private Function DecodeURI(ByVal EncodedURI As String) As String
    Dim bANSI() As Byte
    Dim bUTF8() As Byte
    Dim lIndex As Long
    Dim lUTFIndex As Long

    If Len(EncodedURI) = 0 Then
        Exit Function
    End If

EncodedURI = Replace$(EncodedURI, "+", " ")         ' In case encoding isn't used.
    bANSI = StrConv(EncodedURI, vbFromUnicode)          ' Convert from unicode text to ANSI values
    ReDim bUTF8(UBound(bANSI))                          ' Declare dynamic array, get length
    For lIndex = 0 To UBound(bANSI)                     ' from 0 to length of ANSI
        If bANSI(lIndex) = &H25 Then                    ' If we have ASCII 37, %, then
            bUTF8(lUTFIndex) = Val("&H" & Mid$(EncodedURI, lIndex + 2, 2)) ' convert hex to ANSI
            lIndex = lIndex + 2                         ' this character was encoded into two bytes
        Else
            bUTF8(lUTFIndex) = bANSI(lIndex)            ' otherwise don't need to do anything special
        End If
        lUTFIndex = lUTFIndex + 1                       ' advance utf index
    Next
    DecodeURI = FromUTF8(bUTF8, lUTFIndex)              ' convert to string
End Function

Private Function FromUTF8(ByRef UTF8() As Byte, ByVal Length As Long) As String
    Dim lDataLength As Long

    lDataLength = MultiByteToWideChar(CP_UTF8, 0, VarPtr(UTF8(0)), Length, 0, 0)  ' Get the length of the data.
    FromUTF8 = String$(lDataLength, 0)                                         ' Create array big enough
    MultiByteToWideChar CP_UTF8, 0, VarPtr(UTF8(0)), _
                        Length, StrPtr(FromUTF8), lDataLength                  '
End Function

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Parabéns... logo estará dando consultoria na ACBrLib... :)

Por padrão ela responde em UTF8... você pode mudar para ela responder em ANSI, usando a configuração:

CodificacaoResposta = 1

https://acbr.sourceforge.io/ACBrLib/Geral.html

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

47 minutos atrás, Daniel Simoes disse:

Parabéns... logo estará dando consultoria na ACBrLib... :)

Por padrão ela responde em UTF8... você pode mudar para ela responder em ANSI, usando a configuração:

CodificacaoResposta = 1

https://acbr.sourceforge.io/ACBrLib/Geral.html

obrigado, no futuro quem sabe... qual a configuração que envia direto pra impressora, sem ter a visualização do danfe nfc?
 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Acho que isso é controlada pelos parâmetros pasados no Método de Criação e Envio do XML

Qual método você está chamando?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Chame: NFe.Imprimir, que ele irá considerar os XMLs que estão em memória (ou seja, o último XML gerado e recebido)

https://acbr.sourceforge.io/ACBrLib/NFE_Imprimir.html

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1832 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.