Jump to content
Fivewin Brasil

oribeiro

Membros
  • Posts

    1,291
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by oribeiro

  1. 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
  2. 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 )
  3. Olá Jair. Eu estou finalizando. Só falta fazer a Carta de Correção. A biblioteca é muito boa.
  4. 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()
  5. 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.
  6. João, estou testando a biblioteca ACBrNFe32.Dll e quando executo um comando que requer um retorno da DLL dá esse mesmo erro irrecuperável 9015 hb_vmDo() Como você resolveu esse erro?
  7. Não sei o que estou fazendo de errado, um simples comando como esse abaixo trava a minha aplicação. // LÊ UMA TAG DO ARQUIVO ACBRLIB.INI // cBuffer := Space( STR_LEN ) // STR_LEN = 256 oNFe := DllCall( oACBrLib, "DLL_STDCALL", "NFE_ConfigLerValor", "DFe", "ArquivoPFX", cBuffer, STR_LEN) // ESTÁ TRAVANDO NO RETORNO Deu ERRO IRRECUPERÁVEL 9015 - hb_vmDo() Assinatura do erro: Nome do Evento de Problema: APPCRASH Nome do Aplicativo: TESTACBR.exe Versão do Aplicativo: 0.0.0.0 Carimbo de Data/Hora do Aplicativo: 00000000 Nome do Módulo de Falhas: ACBrNFe32.dll Versão do Módulo de Falhas: 0.4.6.92 Carimbo de Data/Hora do Módulo de Falhas: 00000000 Código de Exceção: c0000005 Deslocamento de Exceção: 00045e22 Versão do sistema operacional: 6.1.7601.2.1.0.18.10 Identificação da Localidade: 1046 Informações Adicionais 1: 0a9e Informações Adicionais 2: 0a9e372d3b4ad19135b953a78882e789 Informações Adicionais 3: 0a9e Informações Adicionais 4: 0a9e372d3b4ad19135b953a78882e789
  8. Estou a uma semana estudando essa DLL e gostando muito. Vou substituir todos os comandos que utilizo com o monitor pelos da DLL. Me diz uma coisa, para eu conseguir uma resposta do NFE_StatusServico, o que eu preciso configurar primeiro? Certificado Digital? UF? Etc. Pergunto isso porque o comando só está me retornando (-10).
  9. Estou tentando das duas formas: A sua forma também funcionou. Gostei muito! Estou tentando descobrir como leio o retorno da DLL. Você pode, por favor, me enviar um exemplo da verificação do Status do Serviço para eu ver como você trata o retorno?
  10. Pessoal, Vamos implementar essa DLL na aplicação no lugar do ACBrNFeMonitor? Estou tentando usar a Classe anexa, mas se não conseguir vou tentar usar diretamente a DLL. Estou compilando sem erro e consigo imprimir um XML assim: local nfe nfe := ACBrNFe():New() nfe:ConfigGravarValor("Principal", "LogNivel", "4") nfe:ConfigGravarValor("Principal", "LogPath", "Logs") nfe:ConfigGravar() nfe:CarregarXML("nfe.xml") nfe:Imprimir("", 1, "", "True", "will.jpg", "", "") ?nfe:Nome ?nfe:Versao Daí tentei um comando que gera um retorno, mas a resposta está sempre em branco: nfe:=ACBrNFe():New() ? nfe:StatusServico() Alguma idéia? acbrlib.prg
  11. Mas a DLL está 100% funcionando para emissão de NFE? Tem como alguém postar aqui um exemplo de código?
  12. Pessoal, como está esse assunto? Já dá para usar a DLL com xHarbour no modo produção em substituição ao ACBrNFeMonitor?
  13. Marca, Por favor, quando você tiver um tempinho, coloque aqui um exemplo de como fazer um looping passando por todos os registros de uma tabela no Banco SQL e alterando a informação de um campo usando somente comandos nativos. Vou testar das duas formas. Obrigado.
  14. Meu amigo. Ficou excelente e muito rápido. Muito obrigado. Onde encontro manual e exemplos desses comandos internos do FW para acesso SQL?
  15. Pessoal, Como posso fazer essa rotina usando comandos nativos do MYSQL. Desse jeito está dando erro na linha do REPLACE. Estou usando SQLRDD. oSql:=SQLCon(cTipo,cHost,cBase,cUser,cPass) DbUseArea(.T.,"SQLRDD",cSql, cAlias, (lExclusive=.F.)) // USE (cSql) NEW SHARED ALIAS (cAlias) Select(cAlias) (cAlias)->(DbGoTop()) Do While !(cAlias)->(Eof()) xNome := LimpaNome((cAlias)->Nome) if !" "$xNome // DELETE // MSGWAIT("DELETADO: "+xNome, (cAlias)->Nome, 0.1) (cAlias)->(DbDelete()) elseif xNome<>Alltrim((cAlias)->Nome) // MODIFICA // MSGWAIT(xNome, (cAlias)->Nome, 0.1) Replace (cAlias)->Nome With xNome endif (cAlias)->(DbSkip()) SySRefresh() EndDo
  16. A transferência para download expirou. Não deu para testar.
  17. João, Com SMTPSend.exe eu consegui enviar email de HotMail e OutLook. Assim: ******************************************************************************************** Function EnviaHotMail( cDe, cPara, cMensagem, cCC, cBCC, cSMTP, cAssunto, cAnexo, cSenhMail ) ******************************************************************************************** TRY cFileName := "htm.txt" // Cria arquivo HTML com a Mensagem MemoWrit(cFileName, cMensagem) cFileTxt := "cmd.txt" // Cria arquivo TXT para o Comandos cFileRet := "ret.txt" // Cria arquivo TXT para o Retorno MemoWrit(cFileTxT, "-f" +cDe +CRLF+; "-t" +cPara +CRLF+; "-c" +cCC +CRLF+; "-b" +cBCC +CRLF+; "-h" +cSMTP +CRLF+; "-s" +cAssunto +CRLF+; "-a" +cAnexo +CRLF+; "-mbhi"+cFileName +CRLF+; "-lu" +cDe +CRLF+; "-lp" +cSenhMail +CRLF+; "-mfH" +CRLF+; "-dNFSD" +CRLF ) MyRun(pPath+"SmtpSend.Exe -@" + cFileTxt + " >"+cFileRet, 0) // Executa o smtpsend.exe lRet := iif("Message sent!"$memoread(cFileRet), .T., .F.) // Verifica o Retorno FErase( cFileName ) // Apaga arquivo HTML FErase( cFileTxt ) // Apaga arquivo TXT FErase( cFileRet ) // Apaga arquivo Retorno SysRefresh() CATCH oError lRet := .F. END lRet:=.T. ******************************************************************************************** Function MYRUN( cComando ) // MsgRun(): Executa um comando DOS e espera até terminar. ******************************************************************************************** Local oShell, Ret oShell := CreateObject( "WScript.Shell" ) Ret := oShell:Run( "%comspec% /c " + cComando, 0, .t. ) oShell := Nil Return If( Ret=0, .t., .f. )
  18. Meus amigos, eu ainda não consegui encontrar nada mais prático do que o WorkShop da Borland. Porém, está difícil manter o computador com Windows 32 bits só para rodar esse treco. Como vocês estão fazendo? Encontraram algo melhor para rodar no 64 bits?
  19. Maravilha Rochinha. Agora eu consigo enviar do Hotmail e Outlook com o SMTPSend.exe. Obrigado.
  20. Com o SmtpSend.exe eu consigo enviar do HotMail usando o comando no prompt do DOS, mas no sistema com WaitRun() ou WinExec() ele não vai. Ele não chega nem a executar o SmtpSend.exe.
  21. Estou com Windows 10. Usando a mesma configuração do email hotmail, no mesmo computador, com ACBr ele envia. Não consigo enviar no xHarbor + Fwh. Será que ninguém conseguiu resolver isso ainda? Risos Obrigado.
  22. Bom dia João, Obrigado pelo seu interesse em ajudar. Com Hb_SendMail() não retorna mensagem de erro mas não envia Hotmail. Com CDO retorna a mensagem: Erro: 1001 SubCod: 3 OSCod: 0 SubSistema: CDO.Message Descrição: DISP_E_MEMBERNOTFOUND
  23. Estou tendo problemas para enviar email com conta HotMail através do Fivewin+xHarbour. Não envia nem com HB_SendMail() nem com os Schemas Microsoft CREATEOBJECT( "CDO.Configuration" ). Vocês acham que tem a ver com essa mudança?
  24. Boa notícia. Me passe os fontes, por favor. oscar.oasys@gmail.com
×
×
  • Create New...