Página 5 de 6

Acompanhando as mudanças da hbnfe

Enviado: 11 Dez 2014 19:01
por JoséQuintas
Só uma explicação daquela parte que não precisa mais na consulta de status:

uma coisa do XML é que ao definir alguma coisa pro bloco de fora, vale para os blocos internos.
Aquela parte que não precisa mais já faz parte do envelope, então teoricamente colocar dentro seria algo inútil.
Acho que eles só ajustaram o schemma deles pra não obrigar o interno.

Código: Selecionar todos

<bloco de fora xmlns:xsi="alguma coisa">
   <subbloco xmlns:xsi="alguma coisa">
      <subsubbloco xmlns:xsi="alguma coisa">
      </subsubbloco>
   </subbloco>
</bloco>
Esse tipo de coisa.
Se o de fora já tem xmlns:xsi="alguma coisa" , significa que isso vale pra todos de dentro.
Repetir isso dentro é só gastar espaço.

Nota: Não pensem que sou nenhum expert de XML. Só percebi algumas coisas conforme foram acontecendo.

Quanto ao commit, tô quase lá.
Agora estou achando melhor mover tudo que existe hoje pra hbnfeold, e começar a nova etapa.

Talvez seja interessante quem fez a impressão dos documentos torná-los independentes.
Algo como: GeraDanfe( "arquivo.xml" ) ou GeraDanfe( MemoRead( cXml ) )
A segunda opção deixaria mais independente ainda.

Acompanhando as mudanças da hbnfe

Enviado: 11 Dez 2014 19:46
por JoséQuintas
Convido a todos a dar uma olhada.
É apenas uma prévia.
No teste só montei pra consulta status e consulta cadastro.

Quem tiver capicom e msxml5 instalado, é só rodar.

Quem não tiver, tudo bem, tá tudo aí, incluindo o readme.txt explicando como fazer.

Comparem com a mesma coisa da hbnfe anterior.

Nota:
Eu já havia commitado antes na hbnfe, depois deixei tudo num zip da hbnfe.
A diferença é aquele xmlns:xsi da consulta status, e as tres linhas de retirar do envelope.
Só estou tentando criar o caminho certo, pra não ficar altera/volta/altera/volta nas pastas do projeto.
Basicamente são os 3 fontes: assina (pra assinatura), spedsefaz (pra comunicação da sefaz), e xmlfun (funções pra xml).

Aceito sugestão dos criadores da hbnfe sobre a melhor forma de prosseguir.
Esse teste dá uma boa idéia do que pode ser feito.
Lembrando:
o teste tem consulta status e consulta cadastro, mas a classe sefaz tem também toda parte de autorização da nfe.
só não tem o programa de teste, mas as classes são auto-explicativas dá pra testar as outras coisas.

Querem testar por partes?

Usem a rotina de assinatura. Com isso qualquer XML assinado poderá ser importado no emissor do governo.
Usem o envio de nfe. Qualquer coisa é só importar o XML assinado no emissor e completar por ele, ou já baixar direto do site da Sefaz.
Usem o consulta recibo, e o pegar protocolo.
Testem fazer a montagem do XML autorizado manual...
Qualquer coisa de errado que aconteça, tem o emissor do governo, ou qualquer outra alternativa pra completar.

Não tem porque não testar.

Só não vão fazer algo do tipo:

Código: Selecionar todos

DO WHILE .T.
   ConsultaRecibo()
   ConsultaCadastro()
ENDDO
Isso sobrecarrega a Sefaz, e ela tem o critério de mandar aviso e até bloquear o certificado.

Eu testo direto no ambiente de produção.'
Envia uma nota, dá uma olhada no que aconteceu.
Depois consulta...
Vai sossegado, não tenha pressa.

O consulta cadastro eu uso pra facilitar o envio de informações pra ANP. A ANP exige o CNAE das empresas, então uso a consulta cadastro da NFE pra isso, senão teria que olhar um por um.
Lembrando que o cadastro é de contribuintes do ICMS. Não tem pessoa física e nem empresa de serviço sem inscrição estadual.
Também poderia ser usado pra cadastrar automaticamente pessoas jurídicas, acho que não pensaram nessa opção.

É isso.
É ver funcionando, e encontrar mil e uma possibilidades.
O que fazer depois depende só de imaginação.

Lembrando também:
- Aqui uso pra São Paulo
- Uma empresa de São Paulo pode não poder usar o consulta cadastro da Bahia e vice-versa, cada UF decide se deixa ou não disponível pra empresas de fora.
- A capicom pode ser distribuída com aplicativo, mas não sei do XML 5.0 que a Microsoft só deixou no Office.
Na dúvida, caso os moderadores achem adequado excluir, vou deixar em um ZIP separado. Ao ser baixada a hbnfe, eles estão lá (já faziam parte)

Depois desta prévia... vai ser direto no commit.

Acompanhando as mudanças da hbnfe

Enviado: 11 Dez 2014 20:10
por JoséQuintas
Sobre o teste, é bem simples:

primeira opção - escolhe o certificado - é obrigatória
segunda opção - consulta status é só digitar a UF
terceira opção - consulta cadastro é só digitar a UF e o CNPJ

Vai ser mostrado o XML original de retorno, seguido de algumas informações extraídas desse retorno.

Apesar de simples pega 52 opções, só lembrar que são 26 UFs com endereços diferentes X 2 opções.

Curiosidade, retorno do Ceará:

Código: Selecionar todos

Versão Aplicativo:CE_NFe_V3.10.0.18
Acho que isso indica que no Ceará não precisará mudança desta consulta pra NFE 3.10.

Acompanhando as mudanças da hbnfe

Enviado: 12 Dez 2014 14:46
por oxent_jabah
Ze Quincas,

Fiz os testes conforme sequencia indicada, as duas primeiras opções funcionaram blz, agora a terceira o retorno de tela foi este:
- UF: CE
- CNPJ: 41544552000148



Seleciona certificado
Consulta Status NFE
* Consulta Cadastro




*ERRO*
versao:
Aplicativo:
Status:
Motivo:
UF:
IE:
CNPJ:
CPF:
Data/Hora:
UF:
Nome(1):
CNAE(1):
Lograd(1):
nro(1):
Compl(1):
Bairro(1):
Cod.Mun(1):
Municip(1):
CEP(1):
Etc pode ter vários endereços...


OBS: não deveria ter apresentados os dados de cada campo ? este CNPJ é da empresa que trabalho.

Acompanhando as mudanças da hbnfe

Enviado: 12 Dez 2014 15:35
por JoséQuintas
Como apareceu "*ERRO*" significa que não conseguiu consultar.
Testei aqui mas não dá acesso pra SP.
Mesmo assim, há a comunicação com CE.
Na tela aparece isto, mostrando que foi com CE mesmo, mas só dá acesso pra quem está cadastrado como emitente.

Código: Selecionar todos

dConsultaCadastro2"><retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" vers
rsao="2.00"><infCons><verAplic>CE_NFe_V3.10.0.18</verAplic><cStat>257</cStat><x
<xMotivo>Rejeicao: Solicitante nao habilitado para emissao da NF-e</xMotivo><UF
UF>CE</UF><CNPJ>41544552000148</CNPJ><dhCons>2014-12-12T14:10:59</dhCons><cUF>2
>23</cUF></infCons></retConsCad></cadConsultaCadastro2Result>
O que percebi, é uma possibilidade, esqueci do PICTURE "@!" no get da UF, não sei se pode ter usado minúscula.

Indo por partes:
- primeira opção ok, então certificado ok
- segunda opção ok, então o que é necessário ok, e rotina de comunicação ok
- endereço do webservice ok, aqui comunicando com CE apesar de não liberado.

Tem instalado msxml5.dll e msxml5r.dll??
Dois testes adicionais: outro CNPJ no CE, outra UF com qualquer CNPJ

Comecei a melhorar essas mensagens, indicando em qual ponto ocorre o problema, ao invés de apenas "*ERRO*"

Acompanhando as mudanças da hbnfe

Enviado: 12 Dez 2014 15:40
por oxent_jabah
Zé Quincas,

Sim, fiz os testes tanto com a UF em minusculo, quanto em maisculo, o resultado foi o mesmo.

as três dlls estão instaladas no sistema.

Acompanhando as mudanças da hbnfe

Enviado: 12 Dez 2014 17:13
por JoséQuintas
Qual Windows?
O readme.txt tem o detalhe diferente pra W64 bits ref regsvr32.exe da pasta SysWow64.
E se fizer com o da pasta System32, terá que "desregistrar" por ele, antes de registrar com o correto.
Só tentando eliminar as possíveis causas de falha.

Acompanhando as mudanças da hbnfe

Enviado: 12 Dez 2014 17:54
por JoséQuintas
Achei um problema na rotina de pegar a CN do certificado.
O certificado que mais uso mostra na configuração como CN=xxxxxxxx, OU=xxxx
Este outro que fui usar, não mostra nem CN=, e nem OU=.
Olhei a da hbnfe original, a minha, e criei uma terceira.

O curioso é que isso só afetou uma das consultas, e não as duas.
Vai entender...

Na lista do Windows, criada pelo próprio Windows, ao invés de mostrar a razão social do cliente, mostra SERPRO f09d

Só pra facilitar esta primeira fase de testes, sem complicar com repositório, e sem encher de arquivos no fórum.

http://www.jpatecnologia.com.br/arquivos/teste.exe

Agora o PROMPT aceita mouse, e pra "clarear" as mensagens passei a usar a wapi_Messagebox()
Criei a de compatibilidade com xharbour, pra não esquecer, usando ALert().

Acompanhando as mudanças da hbnfe

Enviado: 12 Dez 2014 19:34
por JoséQuintas
Só pra justificar porque não vi isso antes:
Aqui eu costumo olhar manual e colocar no programa o CN dos certificados.
No programa eu uso

Código: Selecionar todos

DO CASE
CASE cnpj == "00.000.000/0000-00"
   cCertificado := "ddfsdfdsdsfds"
...
ENDCASE
No programa teste, a rotina de escolha de certificado foi pra facilitar.
Coincidiu que eu testei com outro certificado e encontrei isso.
Pode ser que seja este o problema com o Oxent_Jaba,

Acompanhando as mudanças da hbnfe

Enviado: 15 Dez 2014 16:08
por oxent_jabah
Zé Quincas,

Neste caso Eu devo fazer o que para contornar o problema, tens ideia ?

Acompanhando as mudanças da hbnfe

Enviado: 15 Dez 2014 16:46
por JoséQuintas
Melhorei as mensagens pra saber em que posição está ocorrendo o erro.
http://www.jpatecnologia.com.br/arquivos/teste.exe

Acompanhando as mudanças da hbnfe

Enviado: 15 Dez 2014 20:46
por JoséQuintas
Se por acaso tiver outra alternativa de consulta, verifique se o resultado é o mesmo.
Não dá pra saber se o problema poderia ser lá na Sefaz.
Tem dessas também.

Acompanhando as mudanças da hbnfe

Enviado: 30 Dez 2014 17:41
por JoséQuintas
Hoje um amigo estava com problemas no php pra NFE 3.10 e pediu ajuda.
Como acabei dando uma olhada nisso, e estava com a mão na massa, em alguns minutos, durante a convesa pelo skype, acabei ajustando a rotina atual pra funcionar na NFE 3.10.
Já testado e funcionando pra UF SPaulo.
Tá fácil de enxergar o que foi acrescentado.
Agora funciona pra consulta recibo 2.00 e 3.10.

Código: Selecionar todos

METHOD NFeConsultaRecibo( cRecibo, cUF, cCertificado, cAmbiente, cVersao ) CLASS SefazClass
   cCertificado := iif( cCertificado == NIL, ::cCertificado, cCertificado )
   cAmbiente    := iif( cAmbiente == NIL, ::cAmbiente, cAmbiente )
   cUF          := iif( cUF == NIL, ::cUF, cUF )
   cVersao      := iif( cVersao == NIL, "2.00", ::cVersao )
   IF ::cVersao == "2.00"
      ::cServico     := "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"
      ::cSoapAction  := "nfeRetRecepcao2"
      ::cWebService  := ::GetWebService( cUF, WSNFERETRECEPCAO, cAmbiente, WSPROJETONFE )
   ELSE // 3.10
      ::cServico := "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetAutorizacao"
      ::cSoapAction := "NfeRetAutorizacao"
      ::cWebService := ::GetWebService( cUf, WSNFERETAUTORIZACAO, cAmbiente, WSPROJETONFE )
   ENDIF
   ::cXmlDados    := ""
   ::cXmlDados    += [<consReciNFe versao="] + ::cVersao + [" xmlns="http://www.portalfiscal.inf.br/nfe">]
   ::cXmlDados    +=    [<tpAmb>] + cAmbiente + [</tpAmb>]
   ::cXmlDados    +=    [<nRec>] + cRecibo + [</nRec>]
   ::cXmlDados    += [</consReciNFe>]
   ::XmlSoapPost( cUF, cCertificado, WSPROJETONFE )
   ::cXmlProtocolo := ::cXmlRetorno
   RETURN ::cXmlRetorno

Acompanhando as mudanças da hbnfe

Enviado: 07 Jan 2015 17:01
por oxent_jabah
Zé Quincas,

Desculpe-me não ter retornado antes, sai de férias e estou retornando agora as atividades normais, antes de algo mais, UM EXCELENTE ANO NOVO!

Vamos lá, você poderia disponibilizar aqui as ultimas alterações feitas por você, na lib e no teste.prg ?

Acompanhando as mudanças da hbnfe

Enviado: 08 Jan 2015 16:54
por athayde
Olá pessoal estive com foco em projetos fora do Brasil, mas não abandonei o projeto, o Leonardo (sygecom) e o Anderson Camilo mexem na hbnfe
sobre xhb ou hb, sempre usei ela em harbour, fiz em xhb também pois muita gente usa xhb, então a hbnfe desde sua concepção foi pensada primeiro para harbour, em projetos aqui do brasil não estou com o harbour atualizado esta na 2.1, por isso acho que estão sofrendo com alguma incompatibilidade, já que mudou muito para versão 3, que estou usando num projeto que não tem nfe
Sempre deixei o pessoal aqui responder dúvidas, mas de vez em quando entro para dar uma olhada
Eu vou usar a NFE 3.1 também, já que tenho vários clientes de NFe, então agora em fevereiro estarei bem ativo nesse projeto da HBNFe, só nos organizarmos, como vocês estão fazendo na questão de commits e quem esta mexendo com o que?
Gostaria de saber como está caminhando isso, pois gosto de uma certa organização no código e se possível usar OO, pois fica bem fácil de implementar no acesso aos sistemas

[]s
Fernando
fernandoathayde@gmail.com