Acompanhando as mudanças da hbnfe

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

Moderador: Moderadores

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

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

No momento me perdi.
Já criei projeto junto, depois separado, depois junto de novo, já retornei minha versão local pra última commitada, e por aí vai.
Por enquanto uma pausa pra clarear as idéias.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Tava olhando os webservices pra ver se dava pra agrupar tudo, mas não dá.
A maioria dos endereços continuam os mesmos.
Foram acrescentados webservices com nome de nfeautorizacao e nferetautorizacao
De diferentes os abaixo.
Como exemplo, o consulta atual é nfeconsulta2, o próximo pode ser nfeconsulta, nfeconsulta2 ou nfeconsulta3, dependendo da UF.
Não fosse isso, já dava pra deixar pronta a lista com NFE 2.0 e NFE 3.10

Código: Selecionar todos

https://nfe.sefaz.ba.gov.br/webservices/NfeInutilizacao/NfeInutilizacao.asmx
https://nfe.sefaz.ba.gov.br/webservices/NfeConsulta/NfeConsulta.asmx
https://nfe.sefaz.ba.gov.br/webservices/NfeStatusServico/NfeStatusServico.asmx
https://nfe.sefaz.go.gov.br/nfe/services/v2/RecepcaoEvento?wsdl
https://nfe.fazenda.mg.gov.br/nfe2/services/RecepcaoEvento
https://nfe.fazenda.ms.gov.br/producao/services2/RecepcaoEvento
https://nfe.sefaz.mt.gov.br/nfews/v2/services/RecepcaoEvento?wsdl
https://nfe.sefaz.pe.gov.br/nfe-service/services/RecepcaoEvento
https://nfe.fazenda.pr.gov.br/nfe/NFeInutilizacao3?wsdl
https://nfe.fazenda.pr.gov.br/nfe/NFeConsulta3?wsdl
https://nfe.fazenda.pr.gov.br/nfe/NFeStatusServico3?wsdl
https://nfe.fazenda.sp.gov.br/ws/recepcaoevento.asmx
https://www.sefazvirtual.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
https://nfe.sefazvirtual.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx
https://www.scan.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
https://www.svc.fazenda.gov.br/RecepcaoEvento/RecepcaoEvento.asmx
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
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Acompanhando as mudanças da hbnfe

Mensagem por rochinha »

Amiguinhos,

Eu acompanho tudo relativo a hbNFe de longe(tipo aquela mina show-de-bola que tá do outro lado da rua).

Afinal a nova hbNFe será:

1 - Multiplataforma?
2 - Harbour e/ou xHarbour?
3 - GUI ou Console?
4 - EXE ou Serviço?
5 - DLL ou biblioteca?

Já tem um fork próprio?

Bom trabalho!
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

1 - Multiplataforma?
Há duas opções de uso:
1) Microsoft Capicom + Microsoft Xml5 + Microsoft SOAP
2) LibCurl com OpenSSL

2 - Harbour e/ou xHarbour?
Sim

3 - GUI ou Console?
4 - EXE ou Serviço?
5 - DLL ou biblioteca?

Pretendo mexer na parte de comunicação apenas, trabalhando só com XML - é assim que uso e vou continuar usando.
Apenas vou deixar compatível com o que já está pronto, apesar de achar desnecessário e muito trabalhoso.

Já tem um fork próprio?
Não sei se entendi. Foi criado um acesso pra mim há tempos, mas só agora comecei a mexer.
É o mesmo repositório de sempre.

Repassando:
Comunicação SOAP: No Windows já vém instalado o XML6, mas pode ser usada a LibCurl
Assinatura: Capicom + Xml 5.0, ou OpenSSL (tem versão LibCurl com OpenSSL)
No caso do OpenSSL, também necessário extrair informação do certificado para arquivo físico.

Aqui uso Windows, Harbour, Capicom e Xml 5.0.
Não sei como extrair as informações do certificado, então não tenho como testar LibCurl e OpenSSL.
Essa parte "não Microsoft" sempre existiu, então é de se imaginar que funcione.

Voltando a parte do XML:
Pra gerar o XML é só usar variável
Pra assinar, é só usar variável
Ao transmitir, é uma variável de transmissão e outra variável de retorno.
Arquivos em disco, só se for pra comunicar entre programas diferentes, ou pra debug - debug sempre vai precisar porque pode acontecer de tudo.
Pra debug, cada um pode achar uma solução diferente. Por exemplo aqui uso MySql - do lado do cliente é só salvar o XML e o resto meu servidor que faz.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Compilando o testes em samples, obtenho estes erros:

Código: Selecionar todos

hbNFeFuncoes.obj : error LNK2001: unresolved external symbol _HB_FUN_HTMLTOANSI
hbNFeFuncoes.obj : error LNK2001: unresolved external symbol _HB_FUN_OCTE_GERAIS
compila.bat da pasta:

Código: Selecionar todos

hbmk2 -inc testes .\source\*.prg -otesteNfe.exe -lhbwin -lhbct -lhbhpdf 
-llibhpdf -lhbzebra -lpng -lhbcurl -lhbcurls -llibcurl 
Não sei se no Linux é difente, mas achei esquisito ".\source ", e não "..\source"

equivalente hbp

Código: Selecionar todos

..\source\*.prg
-inc
testes
-otesteNfe
hbwin.hbc
hbhpdf.hbc
hbzebra.hbc
hbct.hbc
hbcurl.hbc
xhb.hbc
Ok, provavelmente dá pra resolver, só achei esquisito.
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
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Acompanhando as mudanças da hbnfe

Mensagem por rochinha »

Amiguinhos,

Quintas
Pelo menos no Windows quando colocamos .\pasta estamos indicando que queremos atuar na pasta abaixo de nossa posição. Na realidade, isto é só frescura e causa confusão, porque se não o colocarmos funciona do mesmo jeito.

O ..\pasta indica que iremos atuar em pastas um nível acima de nossa posição.

Se no Linux ele entende que .\pasta atua acima de certa forma até acho o mais certo pois ..\pasta poderia indicar dois níveis acima, diferente que quando se usa ..\..\pasta.

Quando falei de Fork foi porque lembrei que voce postou algo sobre ter criado um fork para alguma coisa e achei ser este projeto.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Sobre o ".": Então realmente significa que o BAT de compilação não funcionava.

Sobre o fork, foi do Harbour mesmo.
É uma função do github: alterei no meu fork e enviei pro Viktor fazer o commit.
Assim pra ele bastou confirmar se aceitava ou não.

Mas não pense que foi algo sofisticado.
Foi só um acréscimo no doc da função Dow(), faltava mostrar o que significava o retorno de 1 a 7.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Vamos lá, situação atual:

Exemplo compilado testexhb.exe

É em console, e ao que parece foi feito em xHarbour. Nem tudo funciona aqui.
Esse EXE já existia.
Ainda não consegui compilar com Harbour.

Exemplo compilado em hwgui:

Esse EXE também já existia.
Dá erro de array, mas não mostra linha/coluna onde ocorreu o erro
Não tentei compilar com Harbour, porque é possível que passe a mexer em coisas do exemplo ou da hwgui, e não da hbnfe que é o foco principal.

Classes da NFE em geral: Alteradas pra usar a classe SefazClass, exceto CCE e eventos.
Ainda não foram atualizadas: classes CTE (convém ressaltar que é do CTE 1.04 atualmente desativado), classes MDFE, classes CCE:
A parte da NFE da classe SefazClass uso aqui, e sei que funcionam.
As demais precisam revisão/atualização.

A partir daqui:
- Alterar SefazClass pra conter tudo que é evento, incluindo NFE 3.10, CTE, MDFE, etc.
- Alterar classe SefazClass pra já retirar o retorno do envelope, eliminando rotinas auxiliares do restante.
- Atualizar webservices de homologação em SefazClass
- Alterar Assinatura pra documentos que ainda não foram inclusos lá, incluindo NFE 3.10
- Atualizar CTE pra 2.00 (versão atual)
- Liberar LibCurl e OpenSSL - Agora ficou legal também: somente dois fontes mexem com isso hbnfeSefaz e hbnfeAssinatura. Não precisa mais mexer em vários fontes pra mudar isso.

Notas:
Ainda consta a relação de webservices nas classes hbnfe, cte, etc. pra funcionarem os que ainda não foram atualizados ou pra conferir os ainda não utilizados na classe Sefaz.

Apesar de ser compatível com ACBR (foi apresentada assim), não existe rotina automática pra rodar igual ACBR.
Mas temos que levar em conta: se for pra usar igual ACBR, talvez seja interessante usar ACBR de uma vez.

A partir daqui, depende de como cada um vai se interessar em usar.

O fonte hbnfeSefaz:
Só pra curiosidade: Mais da metade do fonte se refere apenas à lista de webservices
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Novamente suspendi as alterações.
É óbvio que ninguém usa a hbnfe.
Retornei a situação original, pra não deixar tudo bagunçado.
Quem baixar, além da hbnfe original, vai encontrar um ZIP com todas as modificações que fiz até hoje.
Nesse ZIP tem também os fontes novos que mencionei: hbnfeassina.prg, hbnfesefaz.prg e hbnfexmlfun.prg

O melhor negócio é criar uma nova independente.
Assim o que for compilado vai estar tudo funcionando, sem surpresas, e sem dependências (hwgui por exemplo).
Nada contra hwgui. É que CTE está na versão que não existe mais, então não é interessante agora mexer em hwgui pra funcionar o que foi desativado.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Acompanhando as mudanças da hbnfe

Mensagem por Itamar M. Lins Jr. »

A parte da Hwgui, não tem muita importância.
No caso a parte da NFe e NFC-e com QR code etc... é que estamos precisando, só que como uma parte dos desenvolvedores usa xHarbour, eu não me envolvi muito, porque percebi muitas mensagens sem respostas ou muito demorado p/ responder.
É uma pena porque é um trabalho de formiguinha mesmo, só com o tempo e com um manual e telas mostrando como se faz que irá angariar mais usuários.
Vc mesmo não teve tempo de entrar antes, usa sua própria classe.
Deveria ter apenas a parte crua mesmo tipo uma LIB, linkar e usar, mais ai vieram os pepinos na época o xHarbour não tinha isso ou aquilo, mas agora acredito que funcione nos dois sem muita mudança no código.
Gostaria de ler a opinião do Athayde, na verdade não precisamos de muitas explicações, apenas exemplos de uso. Igual temos no ACBrNFeMonitor, um manual em CHM ou PDF mostrando como usar apenas isso!
No ACBrNFeMonitor não existe diferença do arquivo NFe ou NFC-e é um só, ele identificar pelo tipo 55/65 e pronto, tudo muito simples, porque entender TUDO isso já é muito complicado.
Então fica ai a dica, vc pode criar um LIB, até com fontes PRIVATE, para Harbour e outra para xHarbour que cria,valida,imprime, etc, NFe, NFC-e não precisa nem de usar a lib curl, que eu tenho interesse no mais é chover no molhado.

O tempo que vc posta aqui muitas explicações, eu não vejo necessidade disso, quem quiser aprender pergunta ou olha o código.
Agora o MANUAL de como usar é que não tem. Tipo, criando a NFe, Validando a NFe, as TAGS etc... não é só a parte de SOAP ou autenticação.
Se tem o manual, basta divulgar melhor, porque nem todos usam HWGUI, nem todos usam xHarbour ou Harbour, mas todos emitimos a NFe e agora a NFC-e então é apenas uma questão de foco.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Acompanhando as mudanças da hbnfe

Mensagem por oxent_jabah »

Jose Quincas,

Eu estou realizando as mudanças em meu sistema de emissão de notas e cupom fiscal, me utilizando exatamente do projeto hbNFe. Estou pretendendo deixar de lado o ACBrNFEmonitor, vendo o comparativo que tinha realizado entre os dois projetos, os beneficios são muito grandes, incluindo a velocidade e os controles das operações são melhores no projeto hbNFe, principalmente nas implementações que você esta realizando, ficou show de bola.

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

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Comecei a montar um teste com a classe, e acabo de descobrir que minha classe estava desatualizada.
É que pra São Paulo não fazia diferença.
Pra outras UFs acusou name space inválido.

Olhem a mudança da consulta status, pra funcionar em qualquer UF:

Mudou disto:

Código: Selecionar todos

   ::cXmlDados    += [<consStatServ versao="] + ::cVersao + [" xmlns="http://www.portalfiscal.inf.br/nfe" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">]
pra isto:

Código: Selecionar todos

   ::cXmlDados    += [<consStatServ versao="] + ::cVersao + [" xmlns="http://www.portalfiscal.inf.br/nfe" >]
A mudança foi que não precisa mais indicar o xmlns:xsi no XML.
Lembro de uma comunicação sobre "limpar" o XML acabaria sendo obrigatório.

Conclusões:
- Detalhes fazem diferença
- Uso há tempos, só agora calhou de testar consulta status de NFE pra SP, RJ e RS.
- Como digo sempre, versão nova é só fazer pequenos ajustes (assim que descobrir quais são).

Quando começou, em 2008, era pior, porque haviam diferenças maiores entre as UFs.
Hoje em dia até que é bem padronizado.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Outra diferença curiosa:

O texto retornado por Pernambuco:

Código: Selecionar todos

Serviço em Operação

o texto retornado por SPaulo:

Código: Selecionar todos

Serviço em Operação

Trabalhar com codepage é phoda.
Esse é o retorno original, sem tratamento, usando no Harbour codepage PTISO.
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acompanhando as mudanças da hbnfe

Mensagem por JoséQuintas »

Ah sim, e acabo de alterar pra limpar o lixo do envelope de todos os retornos.
Nem imaginam o trabalho que deu.

Código: Selecionar todos

METHOD XmlSoapPost() CLASS SefazClass
   ::XmlSoapEnvelope()
   ::MicrosoftXmlSoapPost()
   IF "<soap:Body>" $ ::cXmlRetorno .AND. "</soap:Body>" $ ::cXmlRetorno
      ::cXmlRetorno := XmlNode( ::cXmlRetorno, "soap:Body" )
   ENDIF
   RETURN NIL
Alterei esse único método da classe Sefaz, acrescentando essas três linhas.
É ele pra tudo, foram só as 3 linhas mesmo e nada mais em nenhum lugar.
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
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Acompanhando as mudanças da hbnfe

Mensagem por oxent_jabah »

Quincas,

Você pretende comitar quando estas novas alterações?

Desenvolvendo em:
Harbour 3.2 + HEGUI 2.17 + MSVC2010 (Novo Pojeto em Homologação)
Harbour 3.2 + GTWVT + MSVC2010 (Projeto já em Produção)
Responder