Ir para conteúdo
  • Cadastre-se

dev botao

ACBrLIb NFe - Harbour / Xharbour


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

Recommended Posts

Pessoal  boa tarde

Diante  da dificuldades de alguns, inclusive a minha e com a  ajuda do Rafael Dias, estou disponibilizando algumas informações(Corrijam o que for necessário), que podem ajudar aos colegas e por sua vez, devem criar uma avalanche de informações para outros e que possamos fortalecer  o projeto e possamos divulgar ainda mais o projeto e a adesão aos usuários SAC.

Ao contrário de alguns, que apenas participam daqui com suas dúvidas e depois somem com as suas soluções, eu não faço isso, aliás, sinto-me feliz e privilegiado em poder ajudar com o meu ínfimo conhecimento, porém,  feliz e satisfeito com os poucos passos no entendimento do projeto.

Espero que estas informações sirvam para alguns e que estas elucidem dúvidas iniciais em relação as DLL's, sendo cada delas em suas particularidades. Ciente de que a classe e o demo (Vide link) estão a disposição no SVN http://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Harbour/NFe/ , anda assim, informo aqui, para facilitar aos colegas.

Mais uma vez me dirijo aos que solicitei que postassem as suas soluções e os que fazem uso do fórum para expor suas soluções de forma comercial sem nenhum retorno ao mesmo. Me desculpem, mas é uma realidade de alguns aqui.

[]s,

 

//------------------------------ACBRDEMO---------------------------------.
Function Main ()
   local nfe
   local vendaRetorno, strIniVenda
   local hIni, hIniVenda
   LOCAL cSection
   LOCAL hIniData
   
   nfe := ACBrNFe():New("", "")
   //                      Sessão       Chave    Valor

   nfe := ACBrNFe():New("", "")
   nfe:ConfigGravarValor("Principal", "LogNivel", "4") // logParanoico     
   nfe:ConfigGravarValor("Principal", "LogPath", "C:\WINDOWS\TEMP" )
   nfe:ConfigGravarValor("NFE", "FormaEmissao", "0")
   nfe:ConfigGravarValor("NFE", "SalvarGer", "1")
   nfe:ConfigGravarValor("NFE", "ExibirErroSchema", "1")
   nfe:ConfigGravarValor("NFE", "RetirarAcentos", "1")
   nfe:ConfigGravarValor("NFE", "RetirarEspacos", "1")
   nfe:ConfigGravarValor("NFE", "IdentarXML", "1")

   nfe:ConfigGravarValor("NFE", "ValidarDigest", "0")
   nfe:ConfigGravarValor("NFE", "IdCSC", "000001")
   nfe:ConfigGravarValor("NFE", "CSC", "92052b84-e609-436c-8c27-a3922e509922")
   nfe:ConfigGravarValor("NFE", "ModeloDF", "0") //nfe
   //nfe:ConfigGravarValor("NFE", "ModeloDF", "1") //nfce
   nfe:ConfigGravarValor("NFE", "VersaoDF", "3") //versao 4.00
   nfe:ConfigGravarValor("NFE", "AtualizarXMLCancelado", "1")
   nfe:ConfigGravarValor("NFE", "VersaoQRCode", "2")
   nfe:ConfigGravarValor("NFE", "CamposFatObrigatorios", "1") //adiiconar tag
   nfe:ConfigGravarValor("NFE", "TagNT2018005", "1") //0 nunca 1 producao 2 somente homologacao 3 sempre
   
   nfe:ConfigGravarValor("NFE", "Ambiente", "0") //0 producao 1 homologação
   nfe:ConfigGravarValor("NFE", "SalvarWS", "1")
   nfe:ConfigGravarValor("NFE", "Timeout", "5000")
   nfe:ConfigGravarValor("NFE", "TimeoutPorThread", "0")
   nfe:ConfigGravarValor("NFE", "Visualizar", "1") //sim
   
   nfe:ConfigGravarValor("NFE", "AjustaAguardaConsultaRet", "1") //sim
   nfe:ConfigGravarValor("NFE", "AguardarConsultaRet", "0")
   nfe:ConfigGravarValor("NFE", "IntervaloTentativas", "1000")
   nfe:ConfigGravarValor("NFE", "Tentativas", "5")
   nfe:ConfigGravarValor("NFE", "SSLType", "0") //LT_all

   nfe:ConfigGravarValor("NFE", "PathSalvar", "C:\WINDOWS\TEMP")

   nfe:ConfigGravarValor("NFE", "PathSchemas", "C:\ACBrMonitorPLUS\Schemas")
   nfe:ConfigGravarValor("NFE", "IniServicos", "C:\ACBrMonitorPLUS\INIS")
   nfe:ConfigGravarValor("NFE", "SalvarArq", "1") //ARQUIVOS DE EVENTOS
   nfe:ConfigGravarValor("NFE", "AdicionarLiteral", "0")
   nfe:ConfigGravarValor("NFE", "SepararPorCNPJ", "0")
   nfe:ConfigGravarValor("NFE", "SepararPorModelo", "0")


   nfe:ConfigGravarValor("NFE", "SepararPorAno", "0")
   nfe:ConfigGravarValor("NFE", "SepararPorMes", "0")
   nfe:ConfigGravarValor("NFE", "SepararPorDia", "0")
   nfe:ConfigGravarValor("NFE", "SalvarEvento", "1")
   nfe:ConfigGravarValor("NFE", "SalvarApenasNFeProcessadas", "1")


   nfe:ConfigGravarValor("NFE", "EmissaoPathNFe", "0") //por data de emissão
   nfe:ConfigGravarValor("NFE", "NormatizarMunicipios", "1")
   nfe:ConfigGravarValor("NFE", "PathNFe", "c:\windows\temp")
   nfe:ConfigGravarValor("NFE", "PathInu", "c:\windows\temp")

   nfe:ConfigGravarValor("NFE", "PathEvento", "c:\windows\temp")
   nfe:ConfigGravarValor("NFE", "PathArquivoMunicipios", "C:\ACBrMonitorPLUS\MunIBGE")
   nfe:ConfigGravarValor("NFE", "Download.PathDownload", "c:\windows\temp")
   nfe:ConfigGravarValor("NFE", "Download.SepararPorNome", "0")
   nfe:ConfigGravarValor("NFE", "IdCSRT", "")
   nfe:ConfigGravarValor("NFE", "CSRT", "")

   nfe:ConfigGravarValor("DANFE", "PathPDF", "c:\windows\temp")
   nfe:ConfigGravarValor("DANFE", "UsaSeparadorPathPDF", "0")
   nfe:ConfigGravarValor("DANFE", "Impressora", "")
   nfe:ConfigGravarValor("DANFE", "NomeDocumento", "")
   nfe:ConfigGravarValor("DANFE", "MostraSetup", "1")
   nfe:ConfigGravarValor("DANFE", "MostraPreview", "1")

   nfe:ConfigGravarValor("DANFE", "MostraStatus", "1")
   nfe:ConfigGravarValor("DANFE", "Copias", "")
   nfe:ConfigGravarValor("DANFE", "PathLogo", "c:\windows\temp")


   nfe:ConfigGravarValor("DANFE", "MargemInferior", "0,10")
   nfe:ConfigGravarValor("DANFE", "MargemSuperior", "0,00")
   nfe:ConfigGravarValor("DANFE", "MargemEsquerda", "0,00")
   nfe:ConfigGravarValor("DANFE", "MargemDireita", "0,00")

   nfe:ConfigGravarValor("DANFE", "ExpandeLogoMarca", "0") //0 e expande ou nao


   //nfe:ConfigGravarValor("DANFE", "CasasDecimais.Formato", "0,00")
   //nfe:ConfigGravarValor("DANFE", "CasasDecimais.MaskqCom", "0,00")
   //nfe:ConfigGravarValor("DANFE", "CasasDecimais.MaskvUnCom", "0,00")

   //nfe:ConfigGravarValor("DANFE", "CasasDecimais.qCom", "0,00")
   //nfe:ConfigGravarValor("DANFE", "CasasDecimais.vUnCom", "0,00")
   //nfe:ConfigGravarValor("DANFE", "TipoDANFE", "1")
   //nfe:ConfigGravarValor("DANFE", "ImprimeTotalLiquido", "")


   nfe:ConfigGravarValor("DFe", "ArquivoPFX", "W:\SERV\CERTIFICADO\CLIENTES\ANDERSON\RUBINO\ArquivoPFX.pfx")
   ///nfe:ConfigGravarValor("DFe", "DadosPFX", "")
   ///nfe:ConfigGravarValor("DFe", "NumeroSerie", "")
   nfe:ConfigGravarValor("DFe", "Senha", "XXXPASSWORD DO CERTIFICADOXXX")
   ///nfe:ConfigGravarValor("DFe", "FK", "")
   nfe:ConfigGravarValor("DFe", "VerificarValidade", "1")
   nfe:ConfigGravarValor("DFe", "SSLCryptLib", "1")
   nfe:ConfigGravarValor("DFe", "SSLHttpLib", "3")
   nfe:ConfigGravarValor("DFe", "SSLXmlSignLib", "4")
   nfe:ConfigGravarValor("DFe", "UF", "SP")
   nfe:ConfigGravarValor("DFe", "TimeZone.Modo", "0")
   nfe:ConfigGravarValor("DFe", "TimeZone.Str", "")


   // Salvando configurações
   CLEAR SCREEN
   ?nfe:ConfigGravar("")
   ?nfe:Nome
   ?nfe:Versao


   ?x1 := nfe:StatusServico //()
   INKEY(0)

   nfe := nil
   INKEY(0)
    
return NIL
//------------------------------CLASSE ACBRNFE---------------------------------.
#include "hbclass.ch"
#include "error.ch"

#define DC_CALL_CDECL          0x0010      // __cdecl
#define DC_CALL_STD            0x0020      // __stdcall

#ifdef __XHARBOUR__
#define ACBrLIB "ACBrNFe32.dll"
#define DLL_OSAPI DC_CALL_STD
#else
#if defined( __PLATFORM__WINDOWS )
#define ACBrLIB "ACBrNFe32.dll"
#define DLL_OSAPI DC_CALL_STD
#else
#define ACBrLIB "libacbrnfe64.so"
#define DLL_OSAPI DC_CALL_CDECL
#endif
#endif

#define STR_LEN 256

CREATE CLASS ACBrNFe
HIDDEN:
    VAR hHandle

    METHOD CheckResult(hResult)
    METHOD ProcessResult(buffer, bufferLen)

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 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 StatusServico()
    METHOD Consultar(eChaveOuNFe)
    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, '', eArqConfig)
    eChaveCrypt:=if(eChaveCrypt = nil, '', eChaveCrypt)

    ::hHandle := DllLoad(ACBrLIB)
    if ::hHandle = nil
        oErr := ErrorNew()
        oErr:Severity := ES_ERROR        
        oErr:Description := "Erro a carregar a dll [" + ACBrLIB + "]"
        Throw(oErr)
    endif
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Inicializar", hb_StrToUTF8(eArqConfig), hb_StrToUTF8(eChaveCrypt))
    ::CheckResult(hResult)
    RETURN Self

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

METHOD CheckResult(hResult) CLASS ACBrNFe
    local buffer, bufferLen, oErr
    if hResult >= 0
       RETURN nil
    endif    

    bufferLen := STR_LEN
    buffer := Space(bufferLen)

    DllCall(::hHandle, DLL_OSAPI, "NFE_UltimoRetorno", @buffer, @bufferLen)
    if bufferLen > STR_LEN
        buffer := Space(bufferLen)
        DllCall(::hHandle, DLL_OSAPI, "NFE_UltimoRetorno", @buffer, @bufferLen)        
    endif    

    oErr := ErrorNew()
    oErr:Severity := ES_ERROR
    oErr:Description := hb_UTF8ToStr(buffer)
    Throw(oErr)
    RETURN nil

METHOD ProcessResult(buffer, bufferLen) CLASS ACBrNFe
    if bufferLen > STR_LEN
        buffer := Space(bufferLen)
        DllCall(::hHandle, DLL_OSAPI, "NFE_UltimoRetorno", @buffer, @bufferLen)        
    endif
    RETURN buffer

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

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

METHOD ConfigLer(eArqConfig) CLASS ACBrNFe
    local hResult    
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_ConfigLer", hb_StrToUTF8(eArqConfig))
    ::CheckResult(hResult)
    RETURN nil

METHOD ConfigGravar(eArqConfig) CLASS ACBrNFe
        local hResult    
        hResult := DllCall(::hHandle, DLL_OSAPI, "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_OSAPI, "NFE_ConfigLerValor", hb_StrToUTF8(eSessao), hb_StrToUTF8(eChave), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD ConfigGravarValor(eSessao, eChave, eValor) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "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_OSAPI, "NFE_CarregarXML", hb_StrToUTF8(eArquivoOuXml))
    ::CheckResult(hResult)
    RETURN nil
    
METHOD CarregarINI(eArquivoOuIni) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "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_OSAPI, "NFE_ObterXml", AIndex, @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

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

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

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

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

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

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

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

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

METHOD VerificarAssinatura() CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "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_OSAPI, "NFE_GerarChave", ACodigoUF, ACodigoNumerico, AModelo, ASerie, ANumero, ATpEmi, AEmissao, ACNPJCPF, @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

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

METHOD Consultar(eChaveOuNFe) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Consultar", hb_StrToUTF8(eChaveOuNFe), @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

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_OSAPI, "NFE_Inutilizar", hb_StrToUTF8(ACNPJ), hb_StrToUTF8(AJustificativa), Ano, Modelo, Serie, NumeroInicial, NumeroFinal, @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

METHOD Enviar(ALote, Imprimir, Sincrono, Zipado) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Enviar", ALote, Imprimir, Sincrono, Zipado, @buffer, @bufferLen)
    ::CheckResult(hResult)
    RETURN ::ProcessResult(buffer, bufferLen)

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

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

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

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

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

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

METHOD EnviarEmail(ePara, eChaveNFe, aEnviaPDF, eAssunto, eMensagem, eCc, eAnexos) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_EnviarEmail", hb_StrToUTF8(ePara), hb_StrToUTF8(eChaveNFe), aEnviaPDF, hb_StrToUTF8(eAssunto), hb_StrToUTF8(eMensagem), hb_StrToUTF8(eCc), hb_StrToUTF8(eAnexos))
    ::CheckResult(hResult)
    RETURN nil

METHOD EnviarEmailEvento(ePara, eChaveEvento, eChaveNFe, aEnviaPDF, eAssunto, eMensagem, eCc, eAnexos) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_EnviarEmailEvento", hb_StrToUTF8(ePara), hb_StrToUTF8(eChaveEvento), hb_StrToUTF8(eChaveNFe), aEnviaPDF, hb_StrToUTF8(eAssunto), hb_StrToUTF8(eMensagem), hb_StrToUTF8(eCc), hb_StrToUTF8(eAnexos))
    ::CheckResult(hResult)
    RETURN nil

METHOD Imprimir(cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) CLASS ACBrNFe
    local hResult
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Imprimir", hb_StrToUTF8(cImpressora), nNumCopias, 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_OSAPI, "NFE_ImprimirPDF")
    ::CheckResult(hResult)
    RETURN nil

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

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

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

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

 

 

  • Curtir 2

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia Jorge,

Obrigada por seu espirito participativo e boa vontade, quanto mais pessoas assim na comunidade, mais podemos crescer.

Gostaria somente de pedir que para que o tópico não fique muito extenso, procure anexar os arquivos ao mesmo.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Juliana Tamizou disse:

Bom dia Jorge,

Obrigada por seu espirito participativo e boa vontade, quanto mais pessoas assim na comunidade, mais podemos crescer.

Gostaria somente de pedir que para que o tópico não fique muito extenso, procure anexar os arquivos ao mesmo.

Att.

Obrigado pela informação Juliana. Postei de forma aberta, pq em alguns fóruns não permitem UP-LOAD.

  • Curtir 1

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Sem problemas, mas se puder anexar o arquivo aqui.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Boa tarde...

Valeu Jorge... 

Eu já consegui compilar e executar o demo. Tava Faltando as dll da pasta dep. 

Consegui de imediato imprimir o PDF da nota que era o meu foco inicial. Beleza muito bom. 

Quando mando gerar o pdf preciso executar um comando para abrir o pdf gerado.. que não encontrei no escopo do method ImprimirPDF(). 

Daí vi que no método Imprimir(cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado) tem a opção bMostrarPreview. 

O que eu coloco na opção bMostrarPreview ?

já tentei :

nfe:Imprimir(,,,'S')

nfe:Imprimir(,,,.T.)

nfe:Imprimir(,,,'0')

Sempre dá erro na chamada do método da lib. 
No manual da lib, tá informando que é opcional os outros parâmetros. Pela descrição do escopo deveria ser booleano, mas na chamado do metodo da lib tem um uma função hb_StrToUTF8(bMostrarPreview) convertendo de string para UTF8. 

Segue o log de erros.

 

 

hb_out.log

Link para o comentário
Compartilhar em outros sites

então não é boleano pois nem todos as linguagens de programação aceitam nullables, e como temos os valores padrão da configuração foi usado o string para isso.
Então se passar "" ele usa o valor das configurações, "True" para exibir e "False" para não exibir, estas informações constam no manual.

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

  • Curtir 1

 

Link para o comentário
Compartilhar em outros sites

Bom dia... 

Então Rafael.. tentei de várias formas mas dá o mesmo erro... não sei onde estou errando

    nfe:Imprimir("Brother DCP-1610NW series","0","","True","","","")
    nfe:Imprimir("Brother DCP-1610NW series","1","","True","","","")
    nfe:Imprimir("","1","","True","","","")

Att..

Rubens

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Rubens disse:

Bom dia... 

Então Rafael.. tentei de várias formas mas dá o mesmo erro... não sei onde estou errando

    nfe:Imprimir("Brother DCP-1610NW series","0","","True","","","")
    nfe:Imprimir("Brother DCP-1610NW series","1","","True","","","")
    nfe:Imprimir("","1","","True","","","")

Att..

Rubens

Como O Rafael afirmou  e eu te falei e off, vc deve usar 0 ou 1. Tente simular conforme o monitor que te serve como procedimento, onde vc pode definir antecipadamente tudo o que vc define nele.

A facilidade das DLL's é que vc pode dinamicamente orientar os seus processos, independente do que supostamente vc tenha configurado no monitor e lembre que é gerado o INI (ACBrLib.ini) da LIB com as configurações, o qual vc pode carregar.

Se vc enviar assim nfe:Imprimir(,,,1,,,), vc terá o preview para escolher a impressora, ou defina-a corretamente com o nome capturado do windows pela sua aplicação .

[]s,

  • Curtir 1

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Link para o comentário
Compartilhar em outros sites

O amigo Brizolla, me enviou por email o seu projeto não vou disponibilizar, pq é algo particular dele, porém, se ele achar conveniente anexar aqui como contribuição, acredito que, muitos irão agradecer, pois irá contribuir e quem sabe, até desafogar um pouco as perguntas ao Sac, além da contribuição de outros com ideias  e ajustes.

[]s,

  • Curtir 1

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Link para o comentário
Compartilhar em outros sites

Boa tarde...
Fiz do jeito que informou Jorge, mas continua dando o mesmo erro:

Function Main ()
local nfe
local vendaRetorno, strIniVenda
local hIni, hIniVenda
LOCAL cSection

nfe := ACBrNFe():New("", "")
nfe:CarregarXML( hb_dirbase()+'nfe.xml')
nfe:Imprimir(,,,1,,,)

nfe:LimparLista()
nfe := nil 


return NIL

dá pra ver no log da lib que está carregando o xml. Inclusive consigo gera o pdf com o método nfe:imprimirpdf()

Só da erro na dllcall do nfe:imprimir() 
Se eu não estiver passando os parâmetros errado talvez seja um problema com o meu harbour... Mas se fosse no meu harbour o nfe:imprimirpdf() tb daria errado, ou não... 

hb_out.log ACBrLibNFE-20191210.log

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa noite, estou com dificuldade de carregar dll ====> 

   xLib := LibLoad( "ACBrNFe32.dll" )
   xRetorno := DllCall( xLib , DLL_OSAPI , "NFE_Inicializar" , xACBrLib , xSenha )

tanto ACBrNFe32.dll e o aplicativo execultavio estão na mesma pasta

Editado por AutomoSistema
Link para o comentário
Compartilhar em outros sites

Citar

Boa noite, estou com dificuldade de carregar dll ====> 

   xLib := LibLoad( "ACBrNFe32.dll" )
   xRetorno := DllCall( xLib , DLL_OSAPI , "NFE_Inicializar" , xACBrLib , xSenha )

tanto ACBrNFe32.dll e o aplicativo execultavio estão na mesma pasta

copiou as dependencias junto da dll, usou a dll no padrão StdCall ?

 

Link para o comentário
Compartilhar em outros sites

14 horas atrás, Rubens disse:

Bom dia... 

Então Rafael.. tentei de várias formas mas dá o mesmo erro... não sei onde estou errando

    nfe:Imprimir("Brother DCP-1610NW series","0","","True","","","")
    nfe:Imprimir("Brother DCP-1610NW series","1","","True","","","")
    nfe:Imprimir("","1","","True","","","")

Att..

Rubens

você esta fazendo errado, o segundo parâmetro é um inteiro, faça assim que funciona acabei de testar.

nfe:CarregarXML(hb_dirbase()+'nfe.xml')
nfe:Imprimir("", 1, "", "True", "", "", "")


 

 

Link para o comentário
Compartilhar em outros sites

  • Administradores

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Bom dia.. 
AutomoSistema você tem todas estas dll na pasta com acbrlib? Enquanto não copiei todas estas dlls não funcionou... 

1912165966_Dllsdoacbrlib.JPG.1cccd41dea31dd418b8ee219cae3d124.JPG

 

Rafael não deu certo...  Continua com o erro quando chama a dllcall.. 
Vou testar em outra máquina, outro Windows... pra ver... pode ser isso.. 

Obrigado. 

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Rubens disse:

Bom dia.. 
AutomoSistema você tem todas estas dll na pasta com acbrlib? Enquanto não copiei todas estas dlls não funcionou... 

1912165966_Dllsdoacbrlib.JPG.1cccd41dea31dd418b8ee219cae3d124.JPG

 

Rafael não deu certo...  Continua com o erro quando chama a dllcall.. 
Vou testar em outra máquina, outro Windows... pra ver... pode ser isso.. 

Obrigado. 

Infelizmente eu não consegui reproduzir este erro aqui, como disse no post anterior fiz daquela maneira e funcionou da forma esperada.

 

Link para o comentário
Compartilhar em outros sites

Rafael, 
Consegui fazer funcionar em outra máquina, outro windows 10. 
O erro do harbour permanece mas acho que já algo com a linguagem.. dá um preview na nota e quando fecha o preview dá o erro... vou isolar e tentar descobrir. mas a lib tá fazendo a execução do method. 
Vou verificar que poder ser algo com o harbour, tendo em vista que os outros usuários estão com xHarbour.

Valeu,

Obrigado... 

Rubens

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

  • Membros Pro

Bom dia Rafael, estou trabalhando de forma:

#define DLL_STDCALL NIL

METHOD Button1_OnClick( Sender ) CLASS Form1
   LOCAL xLib , xRetorno := 0 , xACBrLib := "ACBrLib.ini"
   LOCAL xSenha := ""
   xLib := DllLoad( "ACBRMDFE32.dll" )
   xRetorno := DllCall( xLib ,DLL_STDCALL , "MDFe_Inicializar" , "" , "" )
RETURN Self

Todos na pasta conforme imagem. Retorno que recebo é de vazio

Mostra.jpg

Editado por AutomoSistema
Link para o comentário
Compartilhar em outros sites

8 horas atrás, AutomoSistema disse:

Bom dia Rafael, estou trabalhando de forma:

#define DLL_STDCALL NIL

METHOD Button1_OnClick( Sender ) CLASS Form1
   LOCAL xLib , xRetorno := 0 , xACBrLib := "ACBrLib.ini"
   LOCAL xSenha := ""
   xLib := DllLoad( "ACBRMDFE32.dll" )
   xRetorno := DllCall( xLib ,DLL_STDCALL , "MDFe_Inicializar" , "" , "" )
RETURN Self

Todos na pasta conforme imagem. Retorno que recebo é de vazio

Mostra.jpg

Fiz os teste que vc postou acima com sucesso:  

xLib := LibLoad( "ACBrNFe32.dll" )
   xRetorno := DllCall( xLib , DLL_OSAPI , "NFE_Inicializar" , xACBrLib , xSenha )

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

Link para o comentário
Compartilhar em outros sites

15 horas atrás, AutomoSistema disse:

Bom dia Rafael, estou trabalhando de forma:

#define DLL_STDCALL NIL

METHOD Button1_OnClick( Sender ) CLASS Form1
   LOCAL xLib , xRetorno := 0 , xACBrLib := "ACBrLib.ini"
   LOCAL xSenha := ""
   xLib := DllLoad( "ACBRMDFE32.dll" )
   xRetorno := DllCall( xLib ,DLL_STDCALL , "MDFe_Inicializar" , "" , "" )
RETURN Self

Todos na pasta conforme imagem. Retorno que recebo é de vazio

Mostra.jpg

claro que vai ser vazio, você esta passando a Calling Convention como nil, então claro que não vai conseguir carregar ao método da dll.

Mas vou fechar o tópico pois já viro uma salada de duvidas misturadas, então novas duvidas novo tópico.

  • Curtir 1

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1568 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.