Novo projeto

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

Novo projeto

Mensagem por JoséQuintas »

Pra não depender de autorização, e pra ficar bem clara a proposta, endereço separado.
Depois veremos o que fazer.

Não tem conversão de TXT: Xml chegou pra ficar. Aprender é fácil, e aqui no fórum podemos ajudar.

Não lê do disco: Sabe usar MemoRead(), então pode ler do jeito que quiser.

Não salva no disco: Sabe usar MemoWrit(), então sabe salvar do jeito que quiser.

Só trabalha com XML: pensou em rotina pra gerar INI, melhor gerar no padrão nacional que é XML.
Mudou o projeto? Ok. Só alterar os XMLs/strings.

Ainda não tá pronta pra 3.10: Vamos descobrir que letras alterar.

Precisa tempo e paciência: Uma única letra faz não funcionar, então tempo e paciência pra descobrir essa letra são necessários.

O ponto de partida está aí.
Daqui pra frente é descobrir que "letras" precisa alterar.

Sugestão: começar pela consulta protocolo, assim dá uma visão exata do que esperar, e no momento é uma das que uso 24 horas, então sei que funciona.

https://github.com/JoseQuintas/SpedSefazClass

Como usar o github:
Precisa do software GIT.
Pra baixar, aqui digitei no prompt pra usar a pasta SpedSefazClass\:

Código: Selecionar todos

git clone https://github.com/JoseQuintas/SpedSefazClass.git SpedSefazClass
a partir daí, pra atualizar, é entrar na pasta SpedSefazClass e digitar:

Código: Selecionar todos

git pull
Nota: Exatamente igual no Harbour, só muda endereço, afinal é no mesmo GITHUB.
Também serve o link direto pra quem não quer o git: [url]https://github.com/JoseQuintas/SpedSefa ... er.zip[url]
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

Novo projeto

Mensagem por JoséQuintas »

Assinatura:

Código: Selecionar todos

   aDelimitadores := { ;
      { "<enviMDFe",   "</MDFe></enviMDFe>" }, ;
      { "<eventoMDFe", "</eventoMDFe>" }, ;
      { "<eventoCTe",  "</eventoCTe>" }, ;
      { "<infMDFe",    "</MDFe>" }, ;
      { "<infCte",     "</CTe>" }, ;
      { "<infNFe",     "</NFe>" }, ;
      { "<infDPEC",    "</envDPEC>" }, ;
      { "<infInut",    "<inutNFe>" }, ;
      { "<infCanc",    "</cancNFe>" }, ;
      { "<infInut",    "</inutNFe>" }, ;
      { "<infEvento",  "</evento>" }, ;
      { "<infPedidoCancelamento", "</Pedido>" }, ; // NFSE ABRASF Cancelamento
      { "<infRps",     "</Rps>" } }                // NFSE ABRASF
Aqui está bem claro o bloco necessário pra assinatura, aonde começa e aonde termina.
Se tem algum documento novo, só precisa alterar aí.
O detalhe importante é a ordem: por exemplo, MDFE tem tag NFE por isso vém primeiro, senão vai ser considerado NFE.
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

Novo projeto

Mensagem por JoséQuintas »

Tudo passa por estes métodos pra comunicação:

Código: Selecionar todos

METHOD XmlSoapPost( cUF, cCertificado, cProjeto ) CLASS SefazClass
METHOD XmlSoapEnvelope( cUF, cProjeto ) CLASS SefazClass
METHOD MicrosoftXmlSoapPost() CLASS SefazClass
Enquanto aqui é uma única rotina, na hbnfe tem isso em cada comunicação.
E isso pra NFE, CTE, MDFE, CCE, etc.

Por incrível que pareça, complicou pra usar isso na hbnfe.
É que tem XML que ela cria pela metade, completando em outro lugar com a outra metade.
E mesmo assim, de uma metade pra outra, lendo e gravando do disco, nas pastas conforme configuração.
Aparentemente uma complicação desnecessária.
E acaba complicando entender qual é exatamente cada XML.

Por essas e outras, melhor trabalhar em separado, até decidir como integrar ao projeto, e até mesmo se vai precisar integrar.
Aqui não precisa de nenhuma. (quem vai precisar é quem usa, e pode decidir do jeito que quiser).
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

Novo projeto

Mensagem por fladimir »

Ok José, vou baixar e testar e te falo.

Obrigado.
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

Novo projeto

Mensagem por JoséQuintas »

O primeiro teste básico seria este, precisa da chave e do nome do certificado

Código: Selecionar todos

PROCEDURE Main
   LOCAL oSefaz := SefazClass():New()
   oSefaz:NfeConsulta( "chave", "nomeDoCertificado" )
   ? oSefaz:cXmlRetorno
   RETURN
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

Novo projeto

Mensagem por JoséQuintas »

Atualizado consulta status pra 3.10.
Testei em SP e ok.
Só mudei a linha com a versão.

Código: Selecionar todos

METHOD NFeStatus( cUF, cCertificado, cAmbiente ) CLASS SefazClass
...
   ::cVersaoXml   := "3.10"
Pra usar:

Código: Selecionar todos

PROCEDURE Main
   LOCAL oSefaz := SefazClass():New()
   oSefaz:NfeStatus( "SP", "NomeCertificado", "1" )
   ? oSefaz:cXmlRetorno
   RETURN
Como eu disse antes, é uma classe curta e grossa, para a parte que interessa.
É enviar XML e receber XML, sem nem precisar arquivo em disco.
E pra atualizar, é alterar algumas letras.
Para o status foi fácil descobrir as letras a alterar.
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

Novo projeto

Mensagem por fladimir »

Testei aki antes do teu ultimo post e o Seleciona Certificado esta Ok, o Consulta Status NFe da erro.

Código: Selecionar todos

na Linha 696: oServer:Open( "POST", ::cWebService, .F.)

o ::cWebService ficou  "https://nfe.fazenda.ms.gov.br/producao/services2/NfeStatusServico2" devido ter escolhido "MS"
o XML Enviado é:

Código: Selecionar todos

<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><cUF>50</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap12:Header><soap12:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><consStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>1</tpAmb><cUF>50</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></soap12:Body></soap12:Envelope>
o Retorno é:

Código: Selecionar todos

Retorno: Erro: No componente SOAP
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

Novo projeto

Mensagem por JoséQuintas »

Apesar da mensagem de erro, dá pra ver 2.00 nessa quarta linha.
Altere primeiro no método NfeStatus() pra 3.10, que foi o que postei acima.
Enquanto isso vou fazer um teste aqui.
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

Novo projeto

Mensagem por JoséQuintas »

Aqui ok para MS.
É só mesmo a alteração que mencionei.
Usei o próprio teste.prg que acompanha a classe.

Notas:
O certificado de SP serviu pra isso, pra consultar status em MS.
No seu teste, o webservice simplesmente rejeitou e a mensagem de erro não ajudaria em nada.
Se obrigasse um certificado de MS, eu nem teria como testar.
Desta vez foi rápido resolver, aliás, tava resolvido antes.... 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
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Novo projeto

Mensagem por fladimir »

mesmo com a alteração o erro mencionado persiste, será q não é algo q preciso registar (DLL etc?) apesar do ACBr estar funcionando aki.
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

Novo projeto

Mensagem por JoséQuintas »

É ACBR com capicom?
Pra comunicação e assinatura, é Capicom e Xml5.
E o nome correto do certificado, qualquer coisa use o teste.prg, que ele deixa selecionar certificado.
E pra isso, já usa a capicom.

Xml5
Anexos
msxml5.zip
(726.06 KiB) Baixado 142 vezes
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

Novo projeto

Mensagem por fladimir »

É ACBR com capicom?
Sim
Pra comunicação e assinatura, é Capicom e Xml5.
Não mexi em nada, como o ACBr funciona com Capicom penso q o projeto tb deva funcionar...
E o nome correto do certificado, qualquer coisa use o teste.prg, que ele deixa selecionar certificado.
E pra isso, já usa a capicom.
Estou compilando o teste executando escolhendo via Teste o certificado e depois vou no Consulta Status NFe e da o Erro no componente SOAP

Não estou entendendo, como ai funciona aki tinha q funcionar.
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

Novo projeto

Mensagem por JoséQuintas »

Também o XML 5.0. Acabou entrando a alteração antes do seu post, tá anexo.
O W7 64 bits tem registro diferente pra programas 32 bits e 64 bits.
Dá uma olhada no readme.txt se precisar.
Em todo caso:

Código: Selecionar todos

Windows 32 bits: copiar as DLLs para c:\windows\system32
Windows 64 bits: copiar as DLLs pra c:\windows\syswow64

Dentro da pasta pra onde foram copiados os arquivos:
(porque cada uma tem um regsvr32.exe diferente)

regsvr32 capicom.dll
regsvr32 msxml5.dll
regsvr32 msxml5r.dll
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

Novo projeto

Mensagem por fladimir »

ja tinha instalado, mas em todo caso baixei as q vc mandou e substitui e desregistrei e registrei novamente conforme readme.txt

o Erro permaneceu.

Não sei o q pode ser, amanhã vou fazer o seguinte vou testar em uma maquina XP q tenho aki (virtual) zerada e retorno com os resultados.

Obrigado
[]´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

Novo projeto

Mensagem por JoséQuintas »

Apesar da classe não estar preparada para o formato do retorno, pra retirar esse envelope, aqui mostrou este retorno.

Código: Selecionar todos

Erro SOAP: XML retorno não está no padrão <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><cUF>50</cUF><versaoDados>3.10</versaoDados></nfeCabecMsg></soapenv:Header><soapenv:Body><nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"><tpAmb>1</tpAmb><verAplic>MS201503300900</verAplic><cStat>107</cStat><xMotivo>Servico em Operacao</xMotivo><cUF>50</cUF><dhRecbto>2015-07-28T23:14:41-04:00</dhRecbto><tMed>1</tMed></retConsStatServ></nfeStatusServicoNF2Result></soapenv:Body></soapenv:Envelope>
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/
Responder