Repositório e Continuidade do projeto

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

Avatar do usuário
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

Repositório e Continuidade do projeto

Mensagem por Wanderlei »

Bom dia Pessoal,
Também tenho interesse em ajudar com o hbnfe.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Ricardo C. Freitas
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 14 Jan 2016 17:33
Localização: Vila Velha

Repositório e Continuidade do projeto

Mensagem por Ricardo C. Freitas »

Boa noite,

Sou novato aqui neste fórum, recentemente tive a necessidade de utilizar NF-e e NFC-e.
Gostaria de saber se o projeto do hbNFe será levado a frente e qual fonte será continuado?
Tenho interesse em ajudar no desenvolvimento e teste.
Já é possível utilizar para emissão de NF-e e NFC-e em produção?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Repositório e Continuidade do projeto

Mensagem por JoséQuintas »

Tenho interesse em ajudar no desenvolvimento e teste.
Já é possível utilizar para emissão de NF-e e NFC-e em produção?
Isso tá meio contraditório.
É algo como dizer: vou ajudar a desenvolver, mas desde que esteja pronto, vou ajudar a testar mas desde já esteja testado e funcionando.
recentemente tive a necessidade de utilizar NF-e e NFC-e
Não existe solução mágica.
Não é uma biblioteca que vai facilitar seu trabalho.
Terá que desenvolver no mínimo o TXT ou o XML, seguindo os manuais da Secretaria da Fazenda.
Só depois disso é que vai poder testar alguma coisa, qualquer que seja a biblioteca.

De um modo geral é só testar.
Tem UF que cisma de fazer diferente, então pode estar 100% pronto pra uma UF e pra outra não.
O único jeito de descobrir é testando.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Repositório e Continuidade do projeto

Mensagem por rubens »

Boa noite José Quintas....

Então... nós estamos precisando de uma ajudinha para ajudar alavancar esse negócio...

Tá meio confuso o conceito de usar o hbnfe...

Por exemplo uso o acbrmonitor, gero o txt envio para o acbrmonitor ele gera o xml e envia para sefaz, pego o retorno e verifico se foi autorizado ou não e mando imprimir o danfe.
Ah, não trabalha com o txt do acbrmonitor, beleza vamos usar o xml então, para testes posso pegar o xml que o acbrmonitor gerou para mim e usar esse xml no hbnfe?

Se sim como faço isso? O que preciso estar instalado? Tem um exe um exemplo do hbnfe? Vou ter que compilar o hbnfe?

É isso que tá confuso pelo menos para mim, não sei se para o resto do pessoal também.

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Ricardo C. Freitas
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 14 Jan 2016 17:33
Localização: Vila Velha

Repositório e Continuidade do projeto

Mensagem por Ricardo C. Freitas »

Bom dia,

Realmente não estou entendendo se a hbnfe está funcional para emissão de nf-e e qual código devo utilizar.
Se eu verifico o projeto no Git tem um arquivo compactado "hbNFeSefaz-2014-12-09.zip" postado pelo José Quintas com fontes, além dos fontes que já estão lá.
Estou utilizando o Uninfe e gostaria de integrar uma solução dentro da minha aplicação.
Pensei que pudesse utilizar o hbnfe para o básico de emissão da nf-e e ajudar nos outros pontos que estejam faltando.
Estou no ES e poderia fazer os testes com a SEFAZ daqui.
De qualquer forma obrigado.


At+
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Repositório e Continuidade do projeto

Mensagem por JoséQuintas »

Vamos a um recomeço então.
Vou preparar o github pra isso.

Apesar de estar nesse ZIP, ele contém muito mais fontes do que vão ser utilizados, e por isso confunde.
Vamos por em prática.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Repositório e Continuidade do projeto

Mensagem por rubens »

:-Y
"Eu e minha casa servimos ao Senhor e você ???"
ciacpd
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 24 Set 2007 11:23
Localização: Mairinque - SP

Repositório e Continuidade do projeto

Mensagem por ciacpd »

Boa tarde José,
Eu estou disposto a ajudar, uso o hbnfe que fiz as alterações do meu jeito e um projeto novo deixará todos no mesmo padrão, suas classes que baixei a algum tempo atras me ajudaram muito nas alterações.
Daniel Segura
ciacpd@hotmail.com
clipper/FW - xharbour/hwgui
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Repositório e Continuidade do projeto

Mensagem por JoséQuintas »

Opa. finalmente alguém que diz que usa.

Usa do jeito dela, igual ACBR, ou modificou essa parte também?
Só pra entender se alguém configura tudo aquilo, e se interessa compatibilidade.

Na prática a classe sempre foi o ponto de partida, e estava completamente funcional no ano passado, pra todo processo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Repositório e Continuidade do projeto

Mensagem por fladimir »

Boa noite José Quintas....

Então... nós estamos precisando de uma ajudinha para ajudar alavancar esse negócio...

Tá meio confuso o conceito de usar o hbnfe...

Por exemplo uso o acbrmonitor, gero o txt envio para o acbrmonitor ele gera o xml e envia para sefaz, pego o retorno e verifico se foi autorizado ou não e mando imprimir o danfe.
Ah, não trabalha com o txt do acbrmonitor, beleza vamos usar o xml então, para testes posso pegar o xml que o acbrmonitor gerou para mim e usar esse xml no hbnfe?

Se sim como faço isso? O que preciso estar instalado? Tem um exe um exemplo do hbnfe? Vou ter que compilar o hbnfe?

É isso que tá confuso pelo menos para mim, não sei se para o resto do pessoal também.

Rubens
O ponto inicial é baixar o projeto anexar ao teu sistema e fazer compilar sem erros

depois vc chama a rotina de exemplo (se for o caso renomeia ela pra Main_TesteHBNFe) e cada item da rotina de exemplo testa uma parte da HBNFe, exemplo Consultar Status de Serviço, vai chamar o método para isso, ai vc analisa como esta fazendo no exemplo e verá q é simples.

Em relação ao ACBr, vc monta o TXT q é lido pelo monitor e devolvido o retorno

Na HBNFe vc instancia a Classe e chama o método e trabalha o retorno...

Basicamente, se vc olhar o arquivo testes.prg q acompanha o projeto verá q tem a parte q carrega as informações do INI

Código: Selecionar todos

   hIniData         := HB_ReadIni( "teste.ini" )
   cPastaSchemas    := hIniData['Principais']['cPastaSchemas']
   cSerialCert      := hIniData['Principais']['cSerialCert']
   cUFWS            := hIniData['Principais']['cUFWS']
   tpAmb            := hIniData['Principais']['tpAmb']
   versaoDados      := hIniData['Principais']['versaoDados']
   cUF              := hIniData['Principais']['cUF']
   cMun             := hIniData['Principais']['cMun']
   tpImp            := hIniData['Principais']['tpImp']
   versaoSistema    := hIniData['Principais']['versaoSistema']

   cXMLFileAssinado := hIniData['Envio']['cXMLFileAssinado']
   idLote           := hIniData['Envio']['idLote']
   tpEmis           := hIniData['Envio']['tpEmis']

   nRecibo          := hIniData['Retorno']['nRecibo']

   cChaveNFe        := hIniData['Consulta']['cChaveNFe']

   xUF              := hIniData['Cadastro']['xUF']
   CNPJ             := hIniData['Cadastro']['CNPJ']

   cXMLFileSemAssinatura := hIniData['Assinatura']['cXMLFileSemAssinatura']

   cChaveNfeCanc         := hIniData['Cancelamento']['cChaveNfeCanc']
   xJustificativa        := hIniData['Cancelamento']['xJustificativa']

   cXMLFileDanfe         := hIniData['Danfe']['cXMLFileDanfe']
   cLogoFile             := hIniData['Danfe']['cLogoFile']
   nLogoStyle            := val( hIniData['Danfe']['nLogoStyle'] )
                                 
   cXMLFileCCe           := hIniData['CCe']['cXMLFileCCe']
   
   cIniAcbr              := hIniData['IniToXML']['cIniAcbr']
					 
   ArquivoEmail          := hIniData['Email']['ArquivoEmail']
Depois Instancia a Classe em uma variável, no caso do exemplo chamamos de oNFe e atribui as propriedades da classe o conteúdo do INI:

Código: Selecionar todos

   oNfe                   := hbNfe()
   oNfe:cPastaSchemas     := cPastaSchemas
   oNFe:cSerialCert       := cSerialCert
   oNFe:nSOAP             := HBNFE_MXML
   oNFe:cUFWS             := cUFWS // UF WebService
   oNFe:tpAmb             := tpAmb // Tipo de Ambiente
   oNFe:versaoDados       := versaoDados // Versao
   oNFe:versaoDadosCCe    := '1.00'
   oNFe:tpEmis            := tpEmis //normal/scan/dpec/fs/fsda
   oNFe:empresa_UF        := cUF
   oNFe:empresa_cMun      := cMun
   oNFe:empresa_tpImp     := tpImp
   oNFe:versaoSistema     := versaoSistema
   oNFe:pastaNFe          := "nfe"
   oNFe:pastaCancelamento := "canc"
   oNFe:pastaPDF          := "pdf"
   oNFe:pastaInutilizacao := "inut"
   oNFe:pastaDPEC         := "dpec"
   oNFe:pastaEnvRes       := "envresp"
   oNFe:cEmailEmitente    := "construcao@construcao.com.br"
   oNFe:cSiteEmitente     := "www.construcao.com.br"
   oNFe:cDesenvolvedor    := "Desenvolvido por FJ Sistemas  +55 18 3652 0559  http://www.fjsistemas.com.br"
   oNFe:cCertPFX          := hIniData['Principais']['cCertPFX']
   oNFe:cCertFilePub      := hIniData['Principais']['cCertFilePub']
   oNFe:cCertFileKey      := hIniData['Principais']['cCertFileKey']
   oNFe:cCertPass         := hIniData['Principais']['cCertPass']

   oNFe:cEmail_Subject  := hIniData['Email']['email_assunto']
   oNFe:cEmail_MsgTexto := hIniData['Email']['email_txt']
   oNFe:cEmail_MsgHTML  := hIniData['Email']['email_html']
   oNFe:cEmail_ServerIP := hIniData['Email']['email_smtp']
   oNFe:cEmail_From     := hIniData['Email']['email_from']
   oNFe:cEmail_User     := hIniData['Email']['email_usuario']
   oNFe:cEmail_Pass     := hIniData['Email']['email_senha']
   oNFe:nEmail_PortSMTP := VAL( hIniData['Email']['email_porta'] )
   oNFe:lEmail_Conf     := IF( hIniData['Email']['email_confirmacao'] == '.T.',.T.,.F.)
   oNFe:lEmail_SSL      := IF( hIniData['Email']['email_SSL'] == '.T.',.T.,.F.)
   oNFe:lEmail_Aut      := IF( hIniData['Email']['email_aut'] == '.T.',.T.,.F.)
Ai analisando o exemplo na parte de Consultar Status de Serviço foi criado uma variável oStatus pra conter outra classe do projeto chamada hbNFeStatus, nesta classe tem uma propriedade (tipo variável) q irá conter o oNFe q carregamos acima q contém informações relativas ao certificado, e-mail, tipo parâmetros/configurações.

Ai chama o método q quer, exemplo Consultar Status do Serviço:

obs: as informações abaixo foram extraidas do arquivo testes.prg q acompanha o projeto.

Código: Selecionar todos

...
      ? "4) Status do Serviço (capicom,curl)"

...
      ELSEIF nOption == Asc( "4" )
        oStatus := hbNFeStatus()
        oStatus:ohbNFe := oNfe // Objeto hbNFe
        oStatus:tpAmb := '1' // Normal
        oStatus:cUF := cUF // UF
        aRetorno := oStatus:execute()
        oStatus := Nil
Ai qdo é chamado o método :Execute() da classe hbNFeStatus() vai devolver o retorno da Consulta q será trabalhado (tipo retorno do ACBr)

Código: Selecionar todos

        IF aRetorno['OK'] == .F.
           ? aRetorno['MsgErro']
        ELSE
           ? aRetorno['tpAmb']
           ? aRetorno['verAplic']
           ? aRetorno['cStat']
           ? aRetorno['xMotivo']
           ? aRetorno['cUF']
           ? aRetorno['dhRecbto']
           ? aRetorno['tMed']
        ENDIF
...
A proposta do Quintas q ao meu ver é muito válida.
Tenho o projeto remodelado funcionando (menos a parte do DFe q devido a urgência fiz no projeto antigo, mas no evoluir deste tópico podemos adequar/contribuir com o novo)
Até onde entendi / usei simplificou várias coisas, pq ao se trabalhar com o hbNFe na forma q foi concebida, dá pra perceber q muitas coisas podem ser simplificadas e/ou remodeladas... exemplo o Consulta Status não precisa ser uma outra classe pode ser um método... outro exemplo, ao invés de ter um INI carregar ele nas propriedades da classe hbNFe() e depois usar este objeto em outras classes igual demonstrada acima (hbNFeStatus) poderiamos já setar direto as propriedades e chamar o método NFeStatus...

Enfim da forma q esta o projeto original se baixar e fazer compilar e estudar o testes.prg item a item já dá pra se familiarizar...

No caso do pessoal q trabalha com ACBr pode pegar uma das funções q usa tipo Consultar Status de Serviço e fazer via hbNFe pra ir pegando a manha sem conflitar com o ACBr, eu por exemplo aki tenho o HBNFe e o ACBr juntos... qdo for sobrando tempo vou migrando do ACBr para o hbNFe.

Agora se for partir de algo novo ai convém aguardar o Quintas criar o GIT ai baixa o dele e já começa no exemplo dele q já será a classe remodelada.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Repositório e Continuidade do projeto

Mensagem por JoséQuintas »

Pronto, só verificar o post.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
ciacpd
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 24 Set 2007 11:23
Localização: Mairinque - SP

Repositório e Continuidade do projeto

Mensagem por ciacpd »

José, estou usando configurando tudo
JoséQuintas escreveu:Opa. finalmente alguém que diz que usa.

Usa do jeito dela, igual ACBR, ou modificou essa parte também?
Só pra entender se alguém configura tudo aquilo, e se interessa compatibilidade.

Na prática a classe sempre foi o ponto de partida, e estava completamente funcional no ano passado, pra todo processo.
Um pequeno exemplo, a rotina para consultar a NF-e, preparada para acbr e hbnfe, afinal nunca se sabe...

Código: Selecionar todos

// -------------------------------------------------------------------------- //
function nfe_consulta_op(f_cFileXmlName)
   if lacbrnfe
      nfe_consulta_acbr(f_cFileXmlName)
   else
      nfe_consulta_hbnfe(f_cFileXmlName)
   endif
return .t.
// -------------------------------------------------------------------------- //
function nfe_consulta_acbr(f_cFileXmlName)

   Local oAcbrNfeMonitor, lConsulta := .F.

   oAcbrNfeMonitor := AcbrNFeMonitor():New()
   lConsulta := oAcbrNfeMonitor:AcbrNFe_ConsultarNFe(f_cFileXmlName)
   if lConsulta
      nmsgbox( oAcbrNfeMonitor:cRetornoTxt ,"Atenção.")
   else
      msginfo( oAcbrNfeMonitor:cRetornoTxt ,"Atenção.")
   endif
   oAcbrNfeMonitor:End()

return .t.
// -------------------------------------------------------------------------- //
function nfe_consulta_hbnfe(f_cFileXmlName)
         private oNfe, oDanfe, aRetorno , oFuncoes

         oNfe                := hbNfe()
         Seta_Schemas_Nfe(oNfe) ; Seta_Pastas_Nfe(oNfe) ; Seta_Email_Nfe(oNfe)

         oNFe:pastaPDF       := cdirlocal + "PDF"
         oNFe:cDesenvolvedor := "Desenvolvido por CIACPD - http://www.ciacpd.com.br"
         oFuncoes            := hbNFeFuncoes()

         mensagem("Consultando NF-e: "+f_cFileXmlName)
         
         oConsulta           := hbNFeConsulta()
         oConsulta:ohbNFe    := oNfe // Objeto hbNFe
         oConsulta:cNFeFile  := f_cFileXmlName // Chave ou pode ser um arquivo xml com o parametro cNFeFile
         aRetorno            := oConsulta:execute()
         
         cChNFe              := oConsulta:cChaveNFe
         
         oConsulta           := Nil
         
         mensagem("")

         IF aRetorno['OK'] == .F.
            msginfo( aRetorno['MsgErro'] , "Falha na consulta da NFe.")
            return .f.
         ELSE
            msginfo( "Retorno: "         + HB_OEMTOANSI( aRetorno['xMotivo'] ) + CRLF +;
                     "Chave da Nota: "   + cChNFe                              + CRLF +;
                     "Nota recebida em:" + aRetorno['dhRecbto']                + CRLF +;
                     "Nº do Protocolo:"  + aRetorno['nProt']                   + CRLF +;
                     "Digito da Nota:"   + aRetorno['digVal'], "Resultado da Consulta.")
         ENDIF
        
return .t.
// -------------------------------------------------------------------------- //
Daniel Segura
ciacpd@hotmail.com
clipper/FW - xharbour/hwgui
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Repositório e Continuidade do projeto

Mensagem por JoséQuintas »

Você não vai acreditar... vai ter que alterar muito o aplicativo:
Alterar isto:

Código: Selecionar todos

function nfe_consulta_hbnfe(f_cFileXmlName)
    private oNfe, oDanfe, aRetorno , oFuncoes

    oNfe        := hbNfe()
    Seta_Schemas_Nfe(oNfe) ; Seta_Pastas_Nfe(oNfe) ; Seta_Email_Nfe(oNfe)

    oNFe:pastaPDF   := cdirlocal + "PDF"
    oNFe:cDesenvolvedor := "Desenvolvido por CIACPD - http://www.ciacpd.com.br"
    oFuncoes      := hbNFeFuncoes()

    mensagem("Consultando NF-e: "+f_cFileXmlName)
    
    oConsulta     := hbNFeConsulta()
    oConsulta:ohbNFe  := oNfe // Objeto hbNFe
    oConsulta:cNFeFile := f_cFileXmlName // Chave ou pode ser um arquivo xml com o parametro cNFeFile
    aRetorno      := oConsulta:execute()
    
    cChNFe       := oConsulta:cChaveNFe
    
    oConsulta     := Nil
    
    mensagem("")

    IF aRetorno['OK'] == .F.
      msginfo( aRetorno['MsgErro'] , "Falha na consulta da NFe.")
      return .f.
    ELSE
      msginfo( "Retorno: "    + HB_OEMTOANSI( aRetorno['xMotivo'] ) + CRLF +;
          "Chave da Nota: " + cChNFe               + CRLF +;
          "Nota recebida em:" + aRetorno['dhRecbto']        + CRLF +;
          "Nº do Protocolo:" + aRetorno['nProt']         + CRLF +;
          "Digito da Nota:" + aRetorno['digVal'], "Resultado da Consulta.")
    ENDIF
    
return .t.
Para algo parecido com isto:

Código: Selecionar todos

oSefaz := SefazClass():New()
cRetorno := oSefaz:ConsultaNfe( cChave, ... )
IF "*ERRO*" $ cRetorno
   MsgInfo( "Retorno: " + cRetorno
ENDIF
E eliminar de seu fonte a criação desse arquivo XML de consulta recebido por parâmetro, que não vai precisar mais.
Resumindo: vai ter que apagar muuuito fonte.
Vai ficar menor do que com ACBR.
No caso dessa consulta, é só consultar.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Repositório e Continuidade do projeto

Mensagem por alaminojunior »

Atualmente qual o endereço para baixar este projeto ?

Já adiei várias vezes a migração do ACBrNFeMonitor para HBNFe, e agora quero aproveitar que tenho mais condições para encarar.
Até hoje tem funcionado muito bem o ACBr e me atende perfeitamente. Porém com o aumento de clientes que utilizam NFe, CTe e agora o MDFe, prefiro utilizar uma solução que demande menos ajustes, configurações e etc ...

Com ACBr, utilizo troca de arquivos em formato INI.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder