Jump to content
Fivewin Brasil

ACBRLIB ou melhor ACBRDLL


Jorge Andrade

Recommended Posts

Consegui avançar até o nfe:enviar()

         nfe:=ACBrNFe():New(pDado+"ACBrLib.ini")
         lRet:=nfe:CarregarIni(cAux)
         lRet:=nfe:Assinar()
         lRet:=nfe:Validar()
         lRet:=nfe:Enviar() // NFE_Enviar( (ALote, AImprimir, ASincrono, AZipado, sResposta, esTamanho );

Onde eu consigo o número do lote que foi validado para o comando Enviar()

Link to comment
Share on other sites

Em 02/09/2020 at 20:07, oribeiro disse:

Consegui avançar até o nfe:enviar()

         nfe:=ACBrNFe():New(pDado+"ACBrLib.ini")
         lRet:=nfe:CarregarIni(cAux)
         lRet:=nfe:Assinar()
         lRet:=nfe:Validar()
         lRet:=nfe:Enviar() // NFE_Enviar( (ALote, AImprimir, ASincrono, AZipado, sResposta, esTamanho );

Onde eu consigo o número do lote que foi validado para o comando Enviar()

Eu comecei a fazer teste hoje e conseguir gerar um xml, gostaria de trocar, se alguem tiver interesse poderemos trocar informacoes  skype  jairfab   

Link to comment
Share on other sites

Pronto! A NFe está 100% funcional com a DLL. Ficou muito rápido!

Revisei essa classe e incluí algumas funções:

* ACBrLib.Prg
* CLASSE para emissão de NFe com a Biblioteca ACBrNFe32.Dll
* Revisão: Oscar Ribeiro

#include "FiveWin.ch"

#define DLL_CDECL   0x08
#define DLL_STDCALL 0x20
#define DLL_SYSTEM  0x04
#define STR_LEN     256
#define ACBrLIB     pPath+'ACBrNFe32.dll'

CREATE CLASS ACBrNFe

HIDDEN:
    VAR hHandle
    METHOD CheckResult(hResult)

VISIBLE:
    METHOD New(eArqConfig, eChaveCrypt) CONSTRUCTOR
    DESTRUCTOR Destroy

    METHOD Nome
    METHOD Versao

    METHOD ConfigLer(eArqConfig)
    METHOD ConfigGravar(eArqConfig)
    METHOD ConfigLerValor(eSessao, eChave)
    METHOD ConfigGravarValor(eSessao, eChave, eValor)

    METHOD CarregarXML(eArquivoOuXml)
    METHOD CarregarINI(eArquivoOuIni)
    METHOD ObterXml(AIndex)
    METHOD GravarXml(AIndex, eNomeArquivo, ePathArquivo)
    METHOD ObterIni(AIndex)
    METHOD GravarIni(AIndex, eNomeArquivo, ePathArquivo)
    METHOD CarregarEventoXML(eArquivoOuXml)
    METHOD CarregarEventoINI(eArquivoOuIni)
    METHOD LimparLista()
    METHOD LimparListaEventos()

    METHOD Assinar()
    METHOD Validar()
    METHOD ValidarRegrasdeNegocios()
    METHOD VerificarAssinatura()
    METHOD GerarChave(ACodigoUF, ACodigoNumerico, AModelo, ASerie, ANumero, ATpEmi, AEmissao, ACNPJCPF)
    METHOD ObterCertificados()
    METHOD GetPath(tipo)
    METHOD GetPathEvento(aCodEvento)

    METHOD StatusServico()
    METHOD Consultar(eChaveOuNFe, AExtrairEventos)
    METHOD ConsultarCadastro(cUF, nDocumento, nIE, sResposta, esTamanho)
    METHOD Inutilizar(ACNPJ, AJustificativa, Ano, Modelo, Serie, NumeroInicial, NumeroFinal)
    METHOD Enviar(ALote, Imprimir, Sincrono, Zipado)
    METHOD ConsultarRecibo(ARecibo)
    METHOD Cancelar(eChave, eJustificativa, eCNPJ, ALote)
    METHOD EnviarEvento(ALote)

    METHOD DistribuicaoDFePorUltNSU(acUFAutor, eCNPJCPF, eultNSU)
    METHOD DistribuicaoDFePorNSU(acUFAutor, eCNPJCPF, eNSU)
    METHOD DistribuicaoDFePorChave(acUFAutor, eCNPJCPF, echNFe)

    METHOD EnviarEmail(ePara, eChaveNFe, aEnviaPDF, eAssunto, eMensagem, eCc, eAnexos)
    METHOD EnviarEmailEvento(ePara, eChaveEvento, eChaveNFe, aEnviaPDF, eAssunto, eMensagem, eCc, eAnexos)

    METHOD Imprimir(cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado)
    METHOD ImprimirPDF()
    METHOD ImprimirEvento(eArquivoXmlNFe, eArquivoXmlEvento)
    METHOD ImprimirEventoPDF(eArquivoXmlNFe, eArquivoXmlEvento)
    METHOD ImprimirInutilizacao(eArquivoXml)
    METHOD ImprimirInutilizacaoPDF(eArquivoXml)

END CLASS

METHOD New(eArqConfig, eChaveCrypt) CLASS ACBrNFe
    local hResult, buffer, bufferLen, oErr
    eArqConfig :=if(eArqConfig = nil, pDado+'ACBrLib.ini', eArqConfig)
    eChaveCrypt:=if(eChaveCrypt = nil, '', eChaveCrypt)
    ::hHandle := DllLoad( ACBrLIB )
    if EMPTY(::hHandle) // Eric.Developer: xHarbour retorna 0x00000000
        MsgAlert("Não consegui carregar a biblioteca.","ACBrNFe32")
        RETURN nil
    endif
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Inicializar", hb_StrToUTF8(eArqConfig), hb_StrToUTF8(eChaveCrypt))
    ::CheckResult(hResult)
    RETURN Self

PROCEDURE Destroy CLASS ACBrNFe
    DllCall(::hHandle, DLL_STDCALL, "NFE_Finalizar")
    DllUnload(::hHandle)
    RETURN

METHOD CheckResult(hResult) CLASS ACBrNFe
    local buffer, bufferLen, oErr
    bufferLen := STR_LEN
    buffer    := Space(bufferLen)
    oErr := DllCall(::hHandle, DLL_STDCALL, "NFE_UltimoRetorno", @buffer, @bufferLen)
    if !Empty(oErr)
       if IsUtf8( buffer )
          buffer := HB_OemToAnsi(HB_UTF8ToStr( buffer ))
       endif
       MsgAlert("Não consegui obter o retorno da biblioteca:"+chr(13)+chr(13)+buffer, "ACBrNFe32: "+Alltrim(Str(oErr)))
    else
       if bufferLen > STR_LEN
          buffer := Space(bufferLen)
          DllCall(::hHandle, DLL_STDCALL, "NFE_UltimoRetorno", @buffer, @bufferLen)
       endif
    endif
    if IsUtf8( buffer )
       buffer := HB_OemToAnsi(HB_UTF8ToStr( buffer ))
    endif
    RETURN buffer

METHOD Nome CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Nome", @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD Versao CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Versao", @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD ConfigLer(eArqConfig) CLASS ACBrNFe
    local hResult
    eArqConfig :=if(eArqConfig = nil, pDado+'ACBrLib.ini', eArqConfig)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ConfigLer", hb_StrToUTF8(eArqConfig))
    ::CheckResult(hResult)
    RETURN nil

METHOD ConfigGravar(eArqConfig) CLASS ACBrNFe
    local hResult
    eArqConfig :=if(eArqConfig = nil, pDado+'ACBrLib.ini', eArqConfig)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ConfigGravar", hb_StrToUTF8(eArqConfig))
    ::CheckResult(hResult)
    RETURN nil

METHOD ConfigLerValor(eSessao, eChave) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ConfigLerValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD ConfigGravarValor(eSessao, eChave, eValor) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ConfigGravarValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), hb_StrToUTF8(eValor))
    ::CheckResult(hResult)
    RETURN nil

METHOD CarregarXML(eArquivoOuXml) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_CarregarXML", hb_StrToUTF8(eArquivoOuXml))
    ::CheckResult(hResult)
    RETURN nil

METHOD CarregarINI(eArquivoOuIni) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_CarregarINI", hb_StrToUTF8(eArquivoOuIni))
    ::CheckResult(hResult)
    RETURN nil

METHOD ObterXml(AIndex) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ObterXml", AIndex, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD GravarXml(AIndex, eNomeArquivo, ePathArquivo) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_GravarXml", AIndex, hb_StrToUTF8(eNomeArquivo), hb_StrToUTF8(ePathArquivo))
    ::CheckResult(hResult)
    RETURN nil

METHOD ObterIni(AIndex) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ObterIni", AIndex, @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN nil

METHOD GravarIni(AIndex, eNomeArquivo, ePathArquivo) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_GravarIni", AIndex, hb_StrToUTF8(eNomeArquivo), hb_StrToUTF8(ePathArquivo))
    ::CheckResult(hResult)
    RETURN nil

METHOD CarregarEventoXML(eArquivoOuXml) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_CarregarEventoXML", hb_StrToUTF8(eArquivoOuXml))
    ::CheckResult(hResult)
    RETURN nil

METHOD CarregarEventoINI(eArquivoOuIni) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_CarregarEventoINI", hb_StrToUTF8(eArquivoOuIni))
    ::CheckResult(hResult)
    RETURN nil

METHOD LimparLista() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_LimparLista")
    ::CheckResult(hResult)
    RETURN nil

METHOD LimparListaEventos() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_LimparListaEventos")
    ::CheckResult(hResult)
    RETURN nil

METHOD Assinar() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Assinar")
    ::CheckResult(hResult)
    RETURN nil

METHOD Validar() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Validar")
    ::CheckResult(hResult)
    RETURN nil

METHOD ValidarRegrasdeNegocios() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ValidarRegrasdeNegocios")
    ::CheckResult(hResult)
    RETURN nil

METHOD VerificarAssinatura() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_VerificarAssinatura")
    ::CheckResult(hResult)
    RETURN nil

METHOD GerarChave(ACodigoUF, ACodigoNumerico, AModelo, ASerie, ANumero, ATpEmi, AEmissao, ACNPJCPF) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_GerarChave", ACodigoUF, ACodigoNumerico, AModelo, ASerie, ANumero, ATpEmi, AEmissao, ACNPJCPF, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD ObterCertificados() CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ObterCertificados", @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD GetPath(tipo)
    local hResult, buffer, bufferLen
    tipo:=if(tipo=nil,0,tipo)
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_GetPath", tipo, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD GetPathEvento(aCodEvento)
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_GetPathEvento", hb_StrToUTF8(aCodEvento), @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD StatusServico() CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_StatusServico", @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD Consultar(eChaveOuNFe, AExtrairEventos) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    AExtrairEventos := if(AExtrairEventos=nil, .F., AExtrairEventos)
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Consultar", hb_StrToUTF8(eChaveOuNFe), AExtrairEventos, @buffer, @bufferLen)
    if !Empty(buffer)
       if IsUtf8( buffer )
          buffer := HB_OemToAnsi(HB_UTF8ToStr( buffer ))
       endif
       RETURN buffer
    endif
    RETURN ::CheckResult(hResult)

METHOD ConsultarCadastro(cUF, nDocumento) CLASS ACBrNFe // 02-09-2020 Oscar Ribeiro: NFE_ConsultaCadastro(  cUF, nDocumento, nIE, sResposta, esTamanho )
    local hResult, buffer, bufferLen
    cUF       := if(cUF=nil, pEstado, cUF)
    nDocumento:= if(nDocumento=nil, "00000000000000", nDocumento)
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ConsultaCadastro", hb_StrToUTF8(cUF), hb_StrToUTF8(nDocumento), .F., @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD Inutilizar(ACNPJ, AJustificativa, Ano, Modelo, Serie, NumeroInicial, NumeroFinal) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Inutilizar", hb_StrToUTF8(ACNPJ), hb_StrToUTF8(AJustificativa), Ano, Modelo, Serie, NumeroInicial, NumeroFinal, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD Enviar(ALote, Imprimir, Sincrono, Zipado) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    Imprimir := if(Imprimir=nil, .F., Imprimir)
    Sincrono := if(Sincrono=nil, .T., Sincrono)
    Zipado   := if(Zipado=nil, .F., Zipado)
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Enviar", ALote, Imprimir, Sincrono, Zipado, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD ConsultarRecibo(ARecibo) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ConsultarRecibo", hb_StrToUTF8(ARecibo), @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD Cancelar(eChave, eJustificativa, eCNPJ, ALote) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Cancelar", hb_StrToUTF8(eChave), hb_StrToUTF8(eJustificativa), hb_StrToUTF8(eCNPJ), ALote, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD EnviarEvento(ALote) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_EnviarEvento", ALote, @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD DistribuicaoDFePorUltNSU(acUFAutor, eCNPJCPF, eultNSU) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_DistribuicaoDFePorUltNSU", acUFAutor, hb_StrToUTF8(eCNPJCPF), hb_StrToUTF8(eultNSU), @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD DistribuicaoDFePorNSU(acUFAutor, eCNPJCPF, eNSU) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_DistribuicaoDFePorNSU", acUFAutor, hb_StrToUTF8(eCNPJCPF), hb_StrToUTF8(eNSU), @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD DistribuicaoDFePorChave(acUFAutor, eCNPJCPF, echNFe) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_DistribuicaoDFePorChave", acUFAutor, hb_StrToUTF8(eCNPJCPF), hb_StrToUTF8(echNFe), @buffer, @bufferLen)
    RETURN ::CheckResult(hResult)

METHOD EnviarEmail(ePara, eChaveNFe, aEnviaPDF, eAssunto, eMensagem, eCc, eAnexos) CLASS ACBrNFe
    local hResult
    ePara     := if(ePara=nil, "", ePara)
    eChaveNFe := if(eChaveNFe=nil, "", eChaveNFe)
    aEnviaPDF := if(aEnviaPDF=nil, .T., aEnviaPDF)
    eAssunto  := if(eAssunto=nil, "Anexo encontram-se o DANFe e o XML da sua NF-e.", eAssunto)
    eMensagem := if(eMensagem=nil, "Anexo encontram-se o DANFe e o XML da sua NF-e.", eMensagem)
    if !Empty(eMensagem) .and. Left(Upper(eMensagem),6)<>"<HTML>"
       eMensagem := "<html><body>"+ eMensagem +"</body></html>" // Transforma a mensagem em HTML simples
    endif
    eCC       := if(eCC=nil, "", eCC)
    eAnexos   := if(eAnexos=nil, "", eAnexos)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_EnviarEmail", hb_StrToUTF8(ePara), hb_StrToUTF8(eChaveNFe), aEnviaPDF, hb_StrToUTF8(eAssunto), hb_StrToUTF8(eCc), hb_StrToUTF8(eAnexos), hb_StrToUTF8(eMensagem))
    if !Empty(hResult)
       RETURN "Não consegui enviar o email."
    endif
    ::CheckResult(hResult)
    RETURN nil

METHOD EnviarEmailEvento(ePara, eChaveEvento, eChaveNFe, aEnviaPDF, eAssunto, eMensagem, eCc, eAnexos) CLASS ACBrNFe
    local hResult
    ePara     := if(ePara=nil, "", ePara)
    eChaveEvento := if(eChaveEvento=nil, "", eChaveEvento)
    eChaveNFe := if(eChaveNFe=nil, "", eChaveNFe)
    aEnviaPDF := if(aEnviaPDF=nil, .T., aEnviaPDF)
    eAssunto  := if(eAssunto=nil, "Anexo encontram-se o DANFe e o XML da sua NF-e.", eAssunto)
    eMensagem := if(eMensagem=nil, "Anexo encontram-se o DANFe e o XML da sua NF-e.", eMensagem)
    if !Empty(eMensagem) .and. Left(Upper(eMensagem),6)<>"<HTML>"
       eMensagem := "<html><body>"+ eMensagem +"</body></html>" // Transforma a mensagem em HTML simples
    endif
    eCC       := if(eCC=nil, "", eCC)
    eAnexos   := if(eAnexos=nil, "", eAnexos)
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_EnviarEmailEvento", hb_StrToUTF8(ePara), hb_StrToUTF8(eChaveEvento), hb_StrToUTF8(eChaveNFe), aEnviaPDF, hb_StrToUTF8(eAssunto), hb_StrToUTF8(eCc), hb_StrToUTF8(eAnexos), hb_StrToUTF8(eMensagem))
    if !Empty(hResult)
       RETURN "Não consegui enviar o email."
    endif
    ::CheckResult(hResult)
    RETURN nil

METHOD Imprimir(cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_Imprimir", hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(cProtocolo), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cMarcaDagua), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado))
    ::CheckResult(hResult)
    RETURN nil

METHOD ImprimirPDF() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ImprimirPDF")
    ::CheckResult(hResult)
    RETURN nil

METHOD ImprimirEvento(eArquivoXmlNFe, eArquivoXmlEvento) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ImprimirEvento", hb_StrToUTF8(eArquivoXmlNFe), hb_StrToUTF8(eArquivoXmlEvento))
    ::CheckResult(hResult)
    RETURN nil

METHOD ImprimirEventoPDF(eArquivoXmlNFe, eArquivoXmlEvento) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ImprimirEventoPDF", hb_StrToUTF8(eArquivoXmlNFe), hb_StrToUTF8(eArquivoXmlEvento))
    ::CheckResult(hResult)
    RETURN nil

METHOD ImprimirInutilizacao(eArquivoXml) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ImprimirInutilizacao", hb_StrToUTF8(eArquivoXml))
    ::CheckResult(hResult)
    RETURN nil

METHOD ImprimirInutilizacaoPDF(eArquivoXml) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_STDCALL, "NFE_ImprimirInutilizacaoPDF", hb_StrToUTF8(eArquivoXml))
    ::CheckResult(hResult)
    RETURN nil

*Eof( ACBrLib.Prg )

 

Link to comment
Share on other sites

Xi, meu amigo. Não sei.

No meu xHarbour funciona redondinho e estou trabalhando agora no ACBrSAT32.Dll e depois vou para o CTe. Daí eu substituirei por completo o uso do ACBrMonitorPLUS.

Meu xHarbour é o 1.2.3 Build( 20180311)

As Libs que eu inclui no projeto são essas:

LIBFILES = $(FWH)\lib\fivehx.lib $(FWH)\lib\fivehc.lib lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtgui.lib codepage.lib ct.lib libeay32.lib ssleay32.lib tipssl.lib tip.lib pcrepos.lib hsx.lib hbsix.lib zlib.lib hbzip.lib png.lib hbzebra.lib $(CC_DIR)\lib\import32.lib $(CC_DIR)\lib\cw32.lib $(CC_DIR)\lib\psdk\msimg32.lib $(CC_DIR)\lib\psdk\psapi.lib $(CC_DIR)\lib\psdk\shell32.lib $(SQL)\sql.lib $(SQL)\libmysql.lib $(SQL)\libpq.lib
 

Link to comment
Share on other sites

nao achei a lib que contem a ISUTF8 mas achei a funcao:

 

FuncTion IsUtf8( cString )
	Local i, cIdUtf := Chr( 195 )
	Local aUtf  := { 129, 130, 131, 132, 135, 137, 138, 141, 147, 148, ;
	                 149, 150, 154, 156, 160, 161, 163, 162, 164, 167, ;
	                 169, 170, 173, 179, 180, 181, 182, 186, 188 }
	 
	For i = 1 To Len( aUtf )
	    If At( cIdUtf + Chr( aUtf[ i ] ), cString ) > 0
	       Return .T.
	    Endif
	Next
	Return .F.
	


   

agora foi. Obrigado !

 

Link to comment
Share on other sites

Veja se tens todas...

C:\XHBBCC74\lib\hbzip.Lib            +
C:\XHBBCC74\lib\hbmzip.Lib           +
C:\XHBBCC74\lib\zlib.Lib             +
C:\XHBBCC74\lib\rtl.Lib              +
C:\XHBBCC74\lib\vm.Lib               +
C:\XHBBCC74\lib\gtgui.Lib            +
C:\XHBBCC74\lib\lang.Lib             +
C:\XHBBCC74\lib\macro.Lib            +
C:\XHBBCC74\lib\rdd.Lib              +
C:\XHBBCC74\lib\dbfntx.Lib           +
C:\XHBBCC74\lib\dbfcdx.Lib           +
C:\XHBBCC74\lib\common.Lib           +
C:\XHBBCC74\lib\tip.Lib              +
C:\XHBBCC74\lib\pp.Lib               +
C:\XHBBCC74\lib\dbffpt.Lib           +
C:\XHBBCC74\lib\codepage.Lib         +
C:\XHBBCC74\lib\HbSix.Lib            +
C:\XHBBCC74\lib\PcRepos.Lib          +
C:\XHBBCC74\Lib\ct.Lib               +
C:\XHBBCC74\Lib\png.Lib              +

Link to comment
Share on other sites

// \samples\TESTUTF8.PRG

#Include "FiveWin.ch"
	REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
	FUNCTION Main()
	   LOCAL cStr := "José João Abestado Gonçalves"
	   HB_CDPSELECT( "UTF8" )
   HB_SETCODEPAGE( "UTF8" )
	   // ? "-", cStr
   ? cStr
	   HB_LANGSELECT( 'PT' )     // Default language is now Portuguese
   HB_SETCODEPAGE( "PT850" )
	   ? cdow(date())
RETURN NIL

Link to comment
Share on other sites

Em 10/09/2020 at 13:49, william disse:

Salve Kapiaba , acho que vc está confundindo as coisas. A função em questão é a ISUTF8() que está faltando.  No seu exemplo é para setar para UTF8.

A funcao ISUTF8 serve para testar se uma cadeia de caracteres está ou não no padrão UTF8

Pelo teste que fiz por aqui esta lib pertence a Fivewin. Lib  FiveH.lib

Minha versão 17.05

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...