oribeiro Posted September 2, 2020 Report Share Posted September 2, 2020 Bom dia João. Eu peguei uma nova DLL e o erro parou. O problema estava na DLL mesmo. Obrigado pela sua atenção e disposição em me ajudar. Vai Corinthians. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 2, 2020 Report Share Posted September 2, 2020 E outra, porquê a chamada é com CALLDLL, em vez de LoadLibrary() do FiveWin? Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 2, 2020 Report Share Posted September 2, 2020 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() Quote Link to comment Share on other sites More sharing options...
infosys2 Posted September 5, 2020 Report Share Posted September 5, 2020 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 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 5, 2020 Report Share Posted September 5, 2020 Olá Jair. Eu estou finalizando. Só falta fazer a Carta de Correção. A biblioteca é muito boa. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 5, 2020 Report Share Posted September 5, 2020 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 ) Quote Link to comment Share on other sites More sharing options...
AcessoSoft Posted September 6, 2020 Report Share Posted September 6, 2020 Interessante demais este recurso. Parabéns ao(s) idealizadore(s). Quote Link to comment Share on other sites More sharing options...
william Posted September 9, 2020 Report Share Posted September 9, 2020 bom dia fui compilar e está faltando a funcao ISUTF8 , qual lib devo adicionar ? Obrigado Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 9, 2020 Report Share Posted September 9, 2020 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 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 9, 2020 Report Share Posted September 9, 2020 HB_SETCODEPAGE( "UTF8" ) // HARBOUR não sei a LIB // xHarbour C:\XHBBCC74\lib\codepage.Lib Quote Link to comment Share on other sites More sharing options...
william Posted September 9, 2020 Report Share Posted September 9, 2020 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 ! Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted September 9, 2020 Report Share Posted September 9, 2020 No harbour a função é: Hb_StrIsUTF8(<cString>) Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted September 9, 2020 Report Share Posted September 9, 2020 No Harbour = hbrtl.lib e XHarbour=rtl.lib Quote Link to comment Share on other sites More sharing options...
william Posted September 10, 2020 Report Share Posted September 10, 2020 bom dia , uso xharbour , acrescentei a rtl.lib porem nao resolveu a falta da funcao ISUTF8. Deve estar em alguma outra lib. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 10, 2020 Report Share Posted September 10, 2020 Pasta de C:\XHBBCC74\lib 23/04/2019 13:40 96.768 codepage.lib Quote Link to comment Share on other sites More sharing options...
william Posted September 10, 2020 Report Share Posted September 10, 2020 inclui a codepage.lib e continua dando o erro. A funçao nao está nesta lib Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 10, 2020 Report Share Posted September 10, 2020 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 + Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 10, 2020 Report Share Posted September 10, 2020 // \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 Quote Link to comment Share on other sites More sharing options...
william Posted September 10, 2020 Report Share Posted September 10, 2020 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 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 10, 2020 Report Share Posted September 10, 2020 http://forums.fivetechsupport.com/viewtopic.php?f=3&t=31627&p=184493&hilit=ISUTF8#p184493 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 11, 2020 Report Share Posted September 11, 2020 Pessoal, Estou com as rotinas do ACBrNFe32.Dll e ACBrSAT32.Dll funcionando, vou trabalhar agora com o ACBrCTe32.Dll. Daí eu deixarei o ACBrMonitorPLUS no banco de reservas. Se precisarem de ajuda. Avisem. Jmsilva 1 Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted September 11, 2020 Report Share Posted September 11, 2020 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 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 13, 2020 Report Share Posted September 13, 2020 Depois de imprimir o SAT uma vez, a biblioteca dá erro quando tento imprimir o próximo SAT. Se eu saio do sistema e entro novamente ele volta a imprimir. Alguém já passou por isso? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 13, 2020 Report Share Posted September 13, 2020 Mostre. Tem como inserir um SYSREFRESH() no local? Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 13, 2020 Report Share Posted September 13, 2020 Coloquei e o erro persiste. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.