Clipper On Line • Ver Tópico - Gerar NF-e em HB: qual melhor opção para iniciante?

Gerar NF-e em HB: qual melhor opção para iniciante?

Discussão sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (ECF, TEF, SINTEGRA, NF-e, ECD, EFD, etc.)

Moderador: Moderadores

 

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 23 Dez 2016 10:35

Importante também:

O emissor não vai parar em 2017, ele apenas não vai mais ser atualizado.
A nota atual, 3.10, vai ser aceita até dezembro/2017.
A próxima nota, 4.00, só começa em junho/2017.
Mesmo que o governo invente alguma coisa, ele sempre dá um prazo de adaptação.
Então dá pra contar com o emissor por mais uns 3 meses no mínimo, ou até dezembro/2017 no máximo.

Eu diria que fez a parte mais difícil, que exige mais "mão de obra", que tem mais detalhes.

O que o emissor do governo, ou um componente de NFE vão fazer:

pegar seu xml, acrescentar assinatura e enviar pro governo.
Se o governo autorizar, vão acrescentar no seu XML o protocolo de autorização, e vão imprimir o Danfe a partir do seu XML.

Ou seja, está com o principal pronto.
Não tem drama nisso, ao contrário, está mais adiantado do que muitos do fórum que optaram de outra forma.
Já não vai ter nenhum problema do componente estar convertendo errado, que já deve ter visto mensagens desse tipo por aqui.

O que muita gente confunde:
Os problemas que o pessoal enfrenta, não são problemas de XML ou TXT, são problemas de informar o imposto e tudo mais corretamente.
Não é o componente que rejeita, é o governo.
Ao usar TXT ou INI, você "briga" com as mudanças do governo e com compatibilidade com o componente de NFE.
Ao usar XML.... você "briga" só com o governo, apenas informar o que o governo quer.

Preste atenção nos posts sobre problemas com NFE, que vai ver que se trata apenas sobre como preencher os valores, e não sobre complicações de formato.
por exemplo DIFAL, em operações interestaduais: o governo inventou imposto novo, só acrescentar o(s) bloco(s) do imposto novo.
Mas inventou que depende de ser pessoa física, jurídica, não contribuinte, isento.... etc....
Isso tem a ver com preenchimento, não foi a NFE que complicou, foi o conteúdo e o aplicativo fornecer essa informação.
Ué... se vai mexer no aplicativo pra acrescentar essa informação, é só acrescentar no XML.... pronto.

Muitos acham que um componente facilita a vida, mas na prática, todos estão fazendo o trabalho, e não o componente.
O componente apenas vai entregar suas informações na Fazenda e pegar a resposta.
Se as informações estão corretas ok, se estão erradas vai ter que corrigir.
No que o componente ajuda então? talvez só pra dar a sensação de tranquilidade, e a tranquilidade é que se torna a chave pra resolver tudo.

Você mesmo demonstrou isso: "fiz pra poder usar o emissor do governo".
Está correto. Está apenas buscando uma forma de se sentir tranquilo.
Trabalhando tranquilo, tudo vai tranquilo.

Pra ficar tranquilo pode fazer o que mencionei: acrescente a assinatura "fake" (ou falsa, se preferir).
O emissor avisa que é inválida, importa, e remove a assinatura inválida.
Vai fazer todo processo pelo emissor normalmente.

Depois disso, pode começar a escolher o componente NFE, ou até a classe Sefaz.

Se for a classe Sefaz:
Comece pela assinatura, já vai tirar a prova importando no emissor sem a mensagem de "assinatura inválida".
Depois, só transmitir diretamente pela classe Sefaz e ver a resposta.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor Araújo » 23 Dez 2016 11:14

José Quintas, mais uma vez, obrigado pela atenção e orientações!...
Farei o que você está propondo, vou copiar o trecho da assinatura de um xml válido e colocar em um função que complementa a montagem do xml!... depois posto aqui o resultado!...
JoséQuintas escreveu:Importante também:
Comece pela assinatura, já vai tirar a prova importando no emissor sem a mensagem de "assinatura inválida".
Depois, só transmitir diretamente pela classe Sefaz e ver a resposta.


Não conheço essa classe Sefaz... onde posso ver a sintaxe das funções e como implementá-las no processo!... seria muito bom já poder gerar o xml assinado!...

Grato pela atenção.
Araújo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 48
Data de registro: 02 Abr 2013 22:22
Cidade/Estado: Recife-PE
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 23 Dez 2016 11:43

Eu também acabo tendo que olhar na classe, pra lembrar de como é.... rs

se quiser só assinar:

oSefaz := SefazClass():New()
oSefaz:AssinaXml( @cXml, cCertificado )
? oSefaz:cXmlRetorno


Completo:

oSefaz := SefazClass():New()
oSefaz:NFeLoteEnvia( cXml, cLote, cUF, cCertificado, cAmbiente )
hbNFeDaNFe( oSefaz:cXmlAutorizado )
hb_MemoWrit( "xmlautorizado.xml", oSefaz:cXmlAutorizado )
? oSefaz:cStatus
? oSefaz:cXmlRetorno
? oSefaz:cXmlAutorizado
? oSefaz:cXmlAssinado


cXml - o texto do seu xml, não o nome do arquivo.
cLote - pode ser sempre "1"
cUF - a UF que vai trabalhar, "SP", por exemplo
cCertificado - o nome que está no certificado, como sendo CN
cAmbiente - 1=produção, 2=homologação

oSefaz:cXmlAutorizado - o xml que corresponde à nota autorizada - este é o processo todo finalizado, é a nota em si.
oSefaz:cStatus - o código de status retornado pela fazenda
oSefaz:cXmlRetorno - o xml retornado pela fazenda, ou o texto do erro
oSefaz:cXmlAssinado - o seu xml com assinatura, apenas pra conferência/curiosidade/etc.

vai ver se cStatus é o código de status autorizado, e conforme o que acontecer, vai ver cXmlRetorno pra ver o que deu de errado.
E pode usar as outras variáveis pra ver algum detalhe adicional, essas acima e outras.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor Araújo » 23 Dez 2016 13:15

JoséQuintas escreveu:Eu também acabo tendo que olhar na classe, pra lembrar de como é.... rs

se quiser só assinar:

oSefaz := SefazClass():New()
oSefaz:AssinaXml( @cXml, cCertificado )
? oSefaz:cXmlRetorno



O que deve ter em "cCertificado" exatamente?!..
Tem alguma função que consiga ler o certificado e atribuir o conteúdo a esta variável?!...

JoséQuintas escreveu:Completo:

oSefaz := SefazClass():New()
oSefaz:NFeLoteEnvia( cXml, cLote, cUF, cCertificado, cAmbiente )
hbNFeDaNFe( oSefaz:cXmlAutorizado )
hb_MemoWrit( "xmlautorizado.xml", oSefaz:cXmlAutorizado )
? oSefaz:cStatus
? oSefaz:cXmlRetorno
? oSefaz:cXmlAutorizado
? oSefaz:cXmlAssinado



Esta função hbNFeDaNFe( oSefaz:cXmlAutorizado) imprime a danfe?!... tem algum parâmetro para informar em qual impressora e logomarca da empresa?!..

JoséQuintas escreveu:cXml - o texto do seu xml, não o nome do arquivo.
cLote - pode ser sempre "1"
cUF - a UF que vai trabalhar, "SP", por exemplo
cCertificado - o nome que está no certificado, como sendo CN
cAmbiente - 1=produção, 2=homologação

oSefaz:cXmlAutorizado - o xml que corresponde à nota autorizada - este é o processo todo finalizado, é a nota em si.
oSefaz:cStatus - o código de status retornado pela fazenda
oSefaz:cXmlRetorno - o xml retornado pela fazenda, ou o texto do erro
oSefaz:cXmlAssinado - o seu xml com assinatura, apenas pra conferência/curiosidade/etc.

vai ver se cStatus é o código de status autorizado, e conforme o que acontecer, vai ver cXmlRetorno pra ver o que deu de errado.
E pode usar as outras variáveis pra ver algum detalhe adicional, essas acima e outras.


Esse conjunto de funções são nativos no harbour 3.2 (estou usando este!..) ou preciso adicionar alguma lib ao meu arquivo de compilação?!...
Você tem algum material descrevendo o uso dessas funções/!..

Obrigado pela ajuda!..
Araújo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 48
Data de registro: 02 Abr 2013 22:22
Cidade/Estado: Recife-PE
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 23 Dez 2016 16:06

Coloquei errado da Danfe, é pra gerar um PDF, então precisa também do nome do PDF.

O que precisa:

- Pra Danfe, é harupdf, faz parte do Harbour
- Capicom pra assinatura, é da Microsoft, só baixar
- msxml5, pra assinatura/comunicação, é da Microsoft, mas saiu como parte do Office, precisa baixar em separado

Esses dois da Microsoft são DLLs. Não são necessários pra compilar, mas serão necessários na máquina do cliente e na sua.

o CN do certificado, dá pra ver no Internet Explorer, ferramentas, opções de internet, conteúdo, certificados, e em certificados propriedades e detalhes, assim vê o nome exatamente como está.
Tem rotina na classe também pra pegar o nome do certificado, mas no momento o que interessa é emitir nota.

Isso de pegar o nome do certificado vai ser feito uma única vez, se é manual ou automático não é nenhum problema.
Mas tem o exemplo lá na classe.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor Araújo » 23 Dez 2016 21:03

JoséQuintas escreveu:Pra importar no emissor, em XML, obriga que exista assinatura, mas pode ser qualquer assinatura, não precisa ser válida.
Basta colocar um bloco de outro xml assinado <signature.>...</signature>
Vai acusar assinatura inválida, mas vai importar normalmente, como se fosse o txt.
O próprio emissor vai poder assinar corretamente e fazer todo resto do processo.


Fiz o que você sugeriu, criei uma função para adicionar ao xml a string da assinatura de um xml já autorizado, mas o importador rejeita apesar de apresentar o xml com a indicação de assinado!.. Antes porém submeti o mesmo arquivo ao http://validadornfe.tecnospeed.com.br/ e não apresentou problemas.

Você poderia me ajudar neste ponto?!..

/*************************************************************
* Preenche as tags do grupo ZZ. Informações da Assinatura Digital
*/
Static FUNCTION Fxml_Signature(pXml)
pXml+='<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI="#NFe26160509339936000701550210004831477015570477"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>AlYzfysIa1TAnyPJB3Yv1qlTI+0=</DigestValue></Reference></SignedInfo><SignatureValue>s/LjeFo6EjcYolMBKA5GLjM7br33Z24hP5nFe4rb4y08lZn/20Tff3VBJjPtBnWbb99H2pDpNuRdKQ/0OLvTi4iPOcrssFCUEt6R3YMgiA/cNkCHsESKMeG7NQwc5y9KdqrbVWlYIRT4v8b0L79+o/Blqvz81JW/h9m+OMoyJnn8H9qFwK63cVX4vw5t/qA8Pt5FqBf/7jW8b1yTM00DuFH4weoPbHCJanFOuLXioEu5Dm2Phv46Wyxji07KdcnYYzNRQ/tb/Y5vxAIe+zyOC248itYLdQchLUtOVM3mJ+WwmjdwJfcsoZpfA3N0ZwU9pkpKblQe2hbO93xDD7zFfg==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIIPTCCBiWgAwIBAgIQT+qUugRzb8WqvZipdL6rMDANBgkqhkiG9w0BAQsFADB0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEtMCsGA1UECxMkQ2VydGlzaWduIENlcnRpZmljYWRvcmEgRGlnaXRhbCBTLkEuMSEwHwYDVQQDExhBQyBDZXJ0aXNpZ24gTXVsdGlwbGEgRzUwHhcNMTUwODEzMDAwMDAwWhcNMTYwODExMjM1OTU5WjCB0zELMAkGA1UEBhMCQlIxEzARBgNVBAoUCklDUC1CcmFzaWwxODA2BgNVBAsUL0F1dGVudGljYWRvIHBvciBDZXJ0aXNpZ24gQ2VydGlmaWNhZG9yYSBEaWdpdGFsMRswGQYDVQQLFBJBc3NpbmF0dXJhIFRpcG8gQTExFTATBgNVBAsUDElEIC0gODg5NTA3NzEdMBsGA1UEAxMUTlMyIENPTSBJTlRFUk5FVCBTIEExIjAgBgkqhkiG9w0BCQEWE2Zpc2NhbEBuZXRzaG9lcy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDd08S0RUeNNy/3pmeQVrsYPf4Tnj9OtX3Zn0jaDlk8ia5dNbnivQ/qJyhvUhHwDWea3/sDJg1DR3HAR/YuaG/GY31rnOPbe/QLi/+JblzNCXus8+3n9emOsHRMOnaq9m3lr+SGRQivhM2xN1mLEiA8SfhdqbnS9zdCzz1Djyb2lWdwJ3bOxJO7qTk9fgN1lIKBbphw3Yj6KCs5lVoZemQEVw3ZEBFDiN7wdXNQIbCk0/QeviEk+lPSeH3ERETThM4B4JE0w+iVP29feDUDuJTC9NKrGPkPJWMYf535DJ3FhrQVC9sT/78Bzkv5VMZQFS1sQif319kNjy+kMpVcsS5pAgMBAAGjggNpMIIDZTCBrwYDVR0RBIGnMIGkoD0GBWBMAQMEoDQEMjIwMDExOTc0MTY4NzY0NDE4NzMwMDAwMDAwMDAwMDAwMDAwMDAyNDEyMjIyMVNTUFNQoBoGBWBMAQMCoBEED01BUkNJTyBLVU1SVUlBTqAZBgVgTAEDA6AQBA4wOTMzOTkzNjAwMDExNqAXBgVgTAEDB6AOBAwwMDAwMDAwMDAwMDCBE2Zpc2NhbEBuZXRzaG9lcy5jb20wCQYDVR0TBAIwADAfBgNVHSMEGDAWgBSdUM+9/yTKr7Ez6xfiQnqOaSqOUzAOBgNVHQ8BAf8EBAMCBeAwgYkGA1UdIASBgTB/MH0GBmBMAQIBCzBzMHEGCCsGAQUFBwIBFmVodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2RwYy9BQ19DZXJ0aXNpZ25fTXVsdGlwbGEvRFBDX0FDX0NlcnRpU2lnbk11bHRpcGxhLnBkZjCCASUGA1UdHwSCARwwggEYMFygWqBYhlZodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0NlcnRpc2lnbk11bHRpcGxhRzUvTGF0ZXN0Q1JMLmNybDBboFmgV4ZVaHR0cDovL2ljcC1icmFzaWwub3V0cmFsY3IuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0NlcnRpc2lnbk11bHRpcGxhRzUvTGF0ZXN0Q1JMLmNybDBboFmgV4ZVaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5nb3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnbk11bHRpcGxhRzUvTGF0ZXN0Q1JMLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgaAGCCsGAQUFBwEBBIGTMIGQMGQGCCsGAQUFBzAChlhodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2NlcnRpZmljYWRvcy9BQ19DZXJ0aXNpZ25fTXVsdGlwbGFfRzUucDdjMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5jZXJ0aXNpZ24uY29tLmJyMA0GCSqGSIb3DQEBCwUAA4ICAQDBWYBEDoZuuKxE9cmp48Gj/s2JO23FDCrFkq3DpvomvAk7UwE3ty+c/e5Wpczc/xrENVwlh5TaYYKx31Mfxn/L/EIZql/mmj/NhLc7ltGEDU0eQZetM/r2N29wB/c2iSpIR+vyzRr17zUqK9ttucG1kcUQ2k4J9pl2/xuK+/4o9CWeonhOb4cJiikjGcteCNm9PnbhIkO8pNKRZiYMlbm9SboCTWWopmQk8YsUUQ4X+PuUCxltb0EN8nqSR6QlmeRxKYX8Qvq4tbKBpGMzRJOovgdH+MfyMGtheYnenHVLoUAJqJg1m+wAXrfHpVaxTNbKlVv6XrMq72U+8lU4Q8jSUm/8kxNKQEsxiiKBjzDCEC4SghCunlE4eWM11MGW4wA5KAkGeMpafXCdMDsYJyV7GtcCrl27xXuAY3/OwSB/h6NhrvsgjTxU5jQ3E3iRqmv+vIwCEskX0TJxabDxMxJZkBnoleKqcEUM3tPMQCvVYcJmHFlDkxO++yDKQaoukBgHKqhFuZOBc13WJNVmM7FBphn/Tkn6NbUlHOFhiS4DHyR12wujeoYMaPtspOjnyWj7zbNnOP8v11HrfbXHdDk44lYMbMuQpYK8BWksYGwjYfsXkpQpL2PGhj/6Ji5QRR24rfttAgX6xdMXE2k+kZOrhNK7qbPVhySvac8Ei0iQTA==</X509Certificate></X509Data></KeyInfo></Signature>'
Return Nil
Anexos
Capture.png
Araújo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 48
Data de registro: 02 Abr 2013 22:22
Cidade/Estado: Recife-PE
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 23 Dez 2016 22:32

Faltou só comparar um XML assinado com um XML não assinado.

Apesar de eu dizer que é acrescentar assinatura, não significa que basta somá-la ao final do XML.
Ela tem um lugar apropriado dentro do XML.

Se não me engano é o último bloco dentro de NFE (não olhei um XML).

<NFE... >
   <infNFe...>
   </infNFe>
   <Signature>
   </Signature>
</nFe>


Só olhar um XML assinado, o que vém antes de <Signature> e depois de </Signature>
É só colocar no mesmo lugar.
Se for o </NFE>, de repente:

cXml := StrTran( cXml, "</NFE>", Assinatura() + "</NFE>" )


ou

cXml := Substr( cXml, 1, At(  "</NFE>", cXml ) - 1 ) + Assinatura() + "</NFE>"


É só confirmar olhando um xml assinado.
Isso vai valer pra qualquer tipo de xml, então acaba sendo interessante dar uma olhada, pra ir se acostumando.
Se achar mais fácil pra visualizar, pode abrir o xml pelo explorer, só pra ficar melhor de visualizar.
lembrando que o explorer mostra cada coisa numa linha, mas dentro do xml é tudo numa linha só.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 23 Dez 2016 22:45

Realmente esqueci de um detalhe:

FUNCTION FakeSignature( cUri )

   LOCAL cXml

   cUri := iif( cUri == NIL, [#ProjetoChave], cUri )
   cXml := [<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">]
   cXml += [<SignedInfo>]
   cXml += [<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>]
   cXml += [<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>]
   cXml += [<Reference URI="] + cUri + [">]
   cXml += [<Transforms>]
   cXml += [<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>]
   cXml += [<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>]
   cXml += [</Transforms>]
   cXml += [<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>]


cURI é o que vincula a assinatura ao documento.

É praticamente o que está em id=, precedido de #

URI="#NFE" + chavedeacesso


Confirme no XML, porque o corretor ortográfico do Windows altera o que é digitado aqui.
Tem mais essa pra atrapalhar..... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor Araújo » 25 Dez 2016 14:10

Prezado José Quinas, boa tarde!...
Finalmente consegui importar o xml no emissor gratuito, inclui a estrutura abaixo (sugerida por você) na função para compor as tags de assinatura. Importei o xml e foi apresentada mensagem de alerta que a assinatura não é válida mas que poderia importar deixando a nota em digitação. Na sequencia a nota foi importada com sucesso. Consegui ainda validar internamente no emissor, assinar, pré-visualizar a danfe e transmitir com sucesso.
Tudo isso foi feito com a versão de teste do emissor, sem validade jurídica!... Só não consegui ter o retorno de aprovação da NF-e, pois o sefaz retornou a de rejeição: 203-Emissor não habilitado para NF-e. Não sei se esta mensagem se refere ao Emitente ou a versão de teste do aplicativo emissor. Porém, o importante é que o principal está feito: estou conseguindo gerar o xml dentro do processo operacional do sistema e o cliente terá o emissor gratuito para importar, validar, assinar e transmitir...
Agora terei tempo para concluir o tratamento do retorno dentro do sistema: ler o retorno do xml, capturar as informações de autorização e tentar migrar o processo para o ACBr.
Ainda devo postar muitas outras dúvidas aqui, mas desde já lhe agradeço pelas orientações dadas, sem as quais não teria conseguido chegar até aqui!..
Valeu!..

Static FUNCTION Fxml_Signature(pXml,pKeyNFe)

pXml += '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">'
   pXml += '<SignedInfo>'
      pXml += '<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>'
      pXml += '<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>'
      pXml += '<Reference URI="NFe' + pKeyNFe + '">'
        pXml += '<Transforms>'
          pXml += '<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>'
          pXml += '<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>'
        pXml += '</Transforms>'
         pXml += '<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>'
         pXml += '<DigestValue>AlYzfysIa1TAnyPJB3Yv1qlTI+0=</DigestValue>'
      pXml += '</Reference>'
   pXml += '</SignedInfo>'
   pXml += '<SignatureValue>s/LjeFo6EjcYolMBKA5GLjM7br33Z24hP5nFe4rb4y08lZn/20Tff3VBJjPtBnWbb99H2pDpNuRdKQ/0OLvTi4iPOcrssFCUEt6R3YMgiA/cNkCHsESKMeG7NQwc5y9KdqrbVWlYIRT4v8b0L79+o/Blqvz81JW/h9m+OMoyJnn8H9qFwK63cVX4vw5t/qA8Pt5FqBf/7jW8b1yTM00DuFH4weoPbHCJanFOuLXioEu5Dm2Phv46Wyxji07KdcnYYzNRQ/tb/Y5vxAIe+zyOC248itYLdQchLUtOVM3mJ+WwmjdwJfcsoZpfA3N0ZwU9pkpKblQe2hbO93xDD7zFfg==</SignatureValue>'
   pXml += '<KeyInfo>'
        pXml+= '<X509Data>'
          pXml += '<X509Certificate>MIIIPTCCBiWgAwIBAgIQT+qUugRzb8WqvZipdL6rMDANBgkqhkiG9w0BAQsFADB0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEtMCsGA1UECxMkQ2VydGlzaWduIENlcnRpZmljYWRvcmEgRGlnaXRhbCBTLkEuMSEwHwYDVQQDExhBQyBDZXJ0aXNpZ24gTXVsdGlwbGEgRzUwHhcNMTUwODEzMDAwMDAwWhcNMTYwODExMjM1OTU5WjCB0zELMAkGA1UEBhMCQlIxEzARBgNVBAoUCklDUC1CcmFzaWwxODA2BgNVBAsUL0F1dGVudGljYWRvIHBvciBDZXJ0aXNpZ24gQ2VydGlmaWNhZG9yYSBEaWdpdGFsMRswGQYDVQQLFBJBc3NpbmF0dXJhIFRpcG8gQTExFTATBgNVBAsUDElEIC0gODg5NTA3NzEdMBsGA1UEAxMUTlMyIENPTSBJTlRFUk5FVCBTIEExIjAgBgkqhkiG9w0BCQEWE2Zpc2NhbEBuZXRzaG9lcy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDd08S0RUeNNy/3pmeQVrsYPf4Tnj9OtX3Zn0jaDlk8ia5dNbnivQ/qJyhvUhHwDWea3/sDJg1DR3HAR/YuaG/GY31rnOPbe/QLi/+JblzNCXus8+3n9emOsHRMOnaq9m3lr+SGRQivhM2xN1mLEiA8SfhdqbnS9zdCzz1Djyb2lWdwJ3bOxJO7qTk9fgN1lIKBbphw3Yj6KCs5lVoZemQEVw3ZEBFDiN7wdXNQIbCk0/QeviEk+lPSeH3ERETThM4B4JE0w+iVP29feDUDuJTC9NKrGPkPJWMYf535DJ3FhrQVC9sT/78Bzkv5VMZQFS1sQif319kNjy+kMpVcsS5pAgMBAAGjggNpMIIDZTCBrwYDVR0RBIGnMIGkoD0GBWBMAQMEoDQEMjIwMDExOTc0MTY4NzY0NDE4NzMwMDAwMDAwMDAwMDAwMDAwMDAyNDEyMjIyMVNTUFNQoBoGBWBMAQMCoBEED01BUkNJTyBLVU1SVUlBTqAZBgVgTAEDA6AQBA4wOTMzOTkzNjAwMDExNqAXBgVgTAEDB6AOBAwwMDAwMDAwMDAwMDCBE2Zpc2NhbEBuZXRzaG9lcy5jb20wCQYDVR0TBAIwADAfBgNVHSMEGDAWgBSdUM+9/yTKr7Ez6xfiQnqOaSqOUzAOBgNVHQ8BAf8EBAMCBeAwgYkGA1UdIASBgTB/MH0GBmBMAQIBCzBzMHEGCCsGAQUFBwIBFmVodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2RwYy9BQ19DZXJ0aXNpZ25fTXVsdGlwbGEvRFBDX0FDX0NlcnRpU2lnbk11bHRpcGxhLnBkZjCCASUGA1UdHwSCARwwggEYMFygWqBYhlZodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0NlcnRpc2lnbk11bHRpcGxhRzUvTGF0ZXN0Q1JMLmNybDBboFmgV4ZVaHR0cDovL2ljcC1icmFzaWwub3V0cmFsY3IuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0NlcnRpc2lnbk11bHRpcGxhRzUvTGF0ZXN0Q1JMLmNybDBboFmgV4ZVaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5nb3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnbk11bHRpcGxhRzUvTGF0ZXN0Q1JMLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgaAGCCsGAQUFBwEBBIGTMIGQMGQGCCsGAQUFBzAChlhodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2NlcnRpZmljYWRvcy9BQ19DZXJ0aXNpZ25fTXVsdGlwbGFfRzUucDdjMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5jZXJ0aXNpZ24uY29tLmJyMA0GCSqGSIb3DQEBCwUAA4ICAQDBWYBEDoZuuKxE9cmp48Gj/s2JO23FDCrFkq3DpvomvAk7UwE3ty+c/e5Wpczc/xrENVwlh5TaYYKx31Mfxn/L/EIZql/mmj/NhLc7ltGEDU0eQZetM/r2N29wB/c2iSpIR+vyzRr17zUqK9ttucG1kcUQ2k4J9pl2/xuK+/4o9CWeonhOb4cJiikjGcteCNm9PnbhIkO8pNKRZiYMlbm9SboCTWWopmQk8YsUUQ4X+PuUCxltb0EN8nqSR6QlmeRxKYX8Qvq4tbKBpGMzRJOovgdH+MfyMGtheYnenHVLoUAJqJg1m+wAXrfHpVaxTNbKlVv6XrMq72U+8lU4Q8jSUm/8kxNKQEsxiiKBjzDCEC4SghCunlE4eWM11MGW4wA5KAkGeMpafXCdMDsYJyV7GtcCrl27xXuAY3/OwSB/h6NhrvsgjTxU5jQ3E3iRqmv+vIwCEskX0TJxabDxMxJZkBnoleKqcEUM3tPMQCvVYcJmHFlDkxO++yDKQaoukBgHKqhFuZOBc13WJNVmM7FBphn/Tkn6NbUlHOFhiS4DHyR12wujeoYMaPtspOjnyWj7zbNnOP8v11HrfbXHdDk44lYMbMuQpYK8BWksYGwjYfsXkpQpL2PGhj/6Ji5QRR24rfttAgX6xdMXE2k+kZOrhNK7qbPVhySvac8Ei0iQTA==</X509Certificate>'
        pXml+= '</X509Data>'
   pXml += '</KeyInfo>'      
pXml += '</Signature>'

Return Nil


Mensagem1.PNG
Mensagem de alerta com opção de importar!...
Anexos
Mensagem2.PNG
Mensagem de importado com sucesso!...
Araújo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 48
Data de registro: 02 Abr 2013 22:22
Cidade/Estado: Recife-PE
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 25 Dez 2016 17:57

rejeição: 203-Emissor não habilitado para NF-


Provavelmente é necessário cadastrar a empresa na Fazenda.
Seja homologação ou produção.

No momento você está pronto.
Todo restante que falta sobre NFe geralmente é o componente que faz.
Tem também cancelamento, carta de correção, etc.
Não dá pra testar o resto enquanto não tiver emitido pelo menos uma nota, e puder fazer isso com a Fazenda.
Mas o resto é muito simples, comparado à NFe em si.

Agora é verificar com a Fazenda e providenciar a liberação.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor Araújo » 27 Dez 2016 13:23

Olá, José Quintas!...
Estou precisando ler o xml de retorno da NFe para capturar os dados do protocolo de autorização e adequar os processos dentro do sistemas. Sei que tem funções no harbour para ler o conteúdo das tags. Você teria algum exemplo ou documentação a respeito?!...
Grato,
Araújo
Araújo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 48
Data de registro: 02 Abr 2013 22:22
Cidade/Estado: Recife-PE
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 27 Dez 2016 14:20

No Emissor, o retorno é a nota autorizada.
Pra nota, tem na classe o XmlToDoc()

Em componente de NFe, depende do componente pra saber que retorno ele usa.

Na classe tem rotinas pra tratar retornos, já que ela faz tudo.
São os retornos oficiais, dos webservices do governo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor Araújo » 27 Dez 2016 15:11

JoséQuintas escreveu:No Emissor, o retorno é a nota autorizada.
Pra nota, tem na classe o XmlToDoc()


Não conheço esta função!... Você tem alguma documentação sobre ela?!...

JoséQuintas escreveu:Em componente de NFe, depende do componente pra saber que retorno ele usa.

Na classe tem rotinas pra tratar retornos, já que ela faz tudo.
São os retornos oficiais, dos webservices do governo.


Você tem documentação com exemplos?!..

Grato,

Araújo
Araújo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 48
Data de registro: 02 Abr 2013 22:22
Cidade/Estado: Recife-PE
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor Fernando queiroz » 30 Jan 2017 18:39

Quintas já fiz todo o processo informado acima, estou seguindo vocês nesse post, já tenho o arquivo xml importado corretamente no aplicativo da receita, agora gostaria de partir para a assinatura, mas já tentei via ACBR e não saiu nada, tem como fazer diretamente no meu aplicativo?

Já instalei o meu certificado digital no Windows
USO o harbour 3.2

:% :% :'( :'(
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Gerar NF-e em HB: qual melhor opção para iniciante?

Mensagempor JoséQuintas » 30 Jan 2017 19:13

Tá explicado mais acima.

Precisa ter instalado capicom.dll, mscml5.dll.
O ACBR e a classe Sefaz usam esses componentes, se não estiverem instalados na máquina, não funciona.

Diretamente pelo Harbour, sem nenhuma DLL adicional, que eu saiba ainda não dá.
No mínimo é instalar essas duas DLLs.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18161
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Anterior Próximo



Retornar para Legislação Fiscal e Tributária

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro