Acesso ao Portal da NFE. Algo novo ?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Acesso ao Portal da NFE. Algo novo ?

Mensagem por billy1943 »

Pela rotina sugerida pelo nosso colega Fladimir, há mais de 2 anos atrás, seria possível acessar o Portal da NFE informando como
parâmetro a chave da NFE, com 44 caracteres, faltando apenas digitar o captcha já no Site da Receita.

Ocorre que o parâmetro não está aparecendo mais, tendo que ser digitado.

Não existe uma forma atual de fazermos esse acesso ?

Coloco aqui novamente o fonte do Fladimir:

Código: Selecionar todos

//////////////////////////////////////////////////////////////////////////////   
/// NFe_ChecaPortal - Função para checar o numero do Danfe nos portais Nacional ou Estado de São Paulo
/// Esta função faz com que abra as paginas dos portais de consulta das NFes e preencha os campos das chaves automaticamente.
/// Assim será necessario digitar somente o Capcha
///
/// Parametros: f_cChave > Numero da chave (Danfe) no formato caracter
/// f_nPortal > Portal a abril - Formato Numerico
/// 1- Portal Nacional
/// 2- Portal do estado de São Paulo
FUNCTION NFe_ChecaPortal(f_cChave,f_nPortal)
local oOle, oOleDoc := Array(2)
Default f_nPortal to 1

If f_cChave = NIL
   f_cChave := ""
Endif

oOle:= CreateObject("InternetExplorer.Application")
oOle:Visible := .t. // Apresenta o Browser
oOle:ToolBar := .f. // Desativa a barra de ferramentas
oOle:StatusBar := .f. // Desativa a barra de status
oOle:MenuBar := .f. // desativa a barra de menu

If f_nPortal == 1
   oOle:Navigate2("http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=" + f_cCHAVE)
Else
   oOle:Navigate("http://nfe.fazenda.sp.gov.br/ConsultaNFe/consulta/publica/ConsultarNFe.aspx") // Abre o site
EndIf

WHILE oOle:Busy
   inkey(.5)
END

If f_nPortal == 1
   oOle := oOle:Document()
   oOle:All:Item("ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta",0):Value := f_cChave
Else
   oOle := oOle:Document()
   oOle:All:Item("ctl00$ContentMain$tbxIdNFe"):Value := f_cChave
EndIf

//SysRefresh()
return .t.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Acesso ao Portal da NFE. Algo novo ?

Mensagem por billy1943 »

Para facilitar a geração da rotina por quem tenha mais experiência no Harbour/XHarbour, que não é o meu caso, sugiro
após ver em funcionamento vários softwares pela Internet, que inclusive fazem consulta por atacado:

a) colocar a chave da NFE (44 caracteres) obtida pelo ERP, na área de transferência do Windows
b) poderia ser escolhida por meio de um Grid ou semelhante
c) uma vez já dentro do Internet Explorer no site da Receita Federal (Portal), bastava dar um <CONTROL> <V> e digitar o "capcha"

Como não reuni ainda condições dentro do Harbour/Xharbour, para elaborar a rotina, peço a ajuda aos colegas mais tarimbados
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Acesso ao Portal da NFE. Algo novo ?

Mensagem por fladimir »

Bily eu testei aki no meu software e ele abriu o Internet Explorer colou (CTRL+V) a chave no site do governo e eu apenas informei o captcha e deu certo...

Ai contigo não dá certo?
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.
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Acesso ao Portal da NFE. Algo novo ?

Mensagem por marcos.gurupi »

Ao inves de abrir o internet explorer nao seria possivel executar isso em um Dialog ? Claro digitando o capcha.
Marcos Roberto
NetService Software
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Acesso ao Portal da NFE. Algo novo ?

Mensagem por billy1943 »

Oi, Fladimir e Marcos,

Obrigado pelas sugestões, que vou testar amanhã (23/07) pois de onde estou respondendo (notebook) não tenho a instalação do Harbour.

Só uma perguntinha ao Fladimir:

- você está compilando em qual versão do Harbour ?

Pergunto isto porque às vezes faz diferença o meio que usamos para obter o executável.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Acesso ao Portal da NFE. Algo novo ?

Mensagem por fladimir »

Respondendo o Marcos dá pra abrir sim em um form mas isso já iria depender de qual lib vc usa, mas seria vc definir o form, dentro dele um objeto pra conter o browser e lá vc trabalha... depois vou ver isso na lib gráfica q uso e ver se disponibilizo no Downloads.

Bily, pra testar tua questão usei meu software console q esta compilado em Harbour 3.0.0 (Rev. 16951)

[]´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
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Acesso ao Portal da NFE. Algo novo ?

Mensagem por billy1943 »

Oi, Fladimir,

Tentei novamente compilar ( e sem erros) o fonte em questão e notei o seguinte:

1. apesar de colocar o link que inclusive o Google aponta e que consta em seu fonte interno (vide abaixo)

Código: Selecionar todos

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
	Portal da Nota Fiscal Eletrônica
</title>
    
    <!-- CSS -->
    <link href="css/geral.css" rel="stylesheet" type="text/css" /><link href="css/classes.css" rel="stylesheet" type="text/css" /><link href="css/paginasInternas.css" rel="stylesheet" type="text/css" /><link href="css/estilo_visualizacao.css" rel="stylesheet" type="text/css" />
    
    <!-- Javascript -->
    <script src="scripts/jquery-latest.min.js" type="text/javascript"></script>
    <script src="scripts/menu.js" type="text/javascript"></script>
    <script src="scripts/mascaras.js" type="text/javascript"></script>
    <script src="//www.receita.fazenda.gov.br/estatistica/estatistica.js" type="text/javascript"></script>

    <meta http-equiv="cache-control" content="no-store, no-cache, must-revalidate, Post-Check=0, Pre-Check=0" /><meta http-equiv="pragma" content="no-cache" /><meta http-equiv="expires" content="0" />
    </head>
<body onselectstart="return true;" >

    <script type="text/javascript" src="//www.receita.fazenda.gov.br/barra-governo/barra-governo.js"></script>


    <div id="divCentral">
        <form method="post" action="consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3d" onsubmit="javascript:return  
o IE está abrindo a página anterior, como se o link informado tivesse sido o abaixo, onde estão as opções de consulta completa ou
resumida:

http://www.nfe.fazenda.gov.br/portal/principal.aspx

Outra coisa: o meu XHarbour está acusando erro na seguinte linha de seu fonte, tanto que a exclui:

Default f_nPortal := 1, f_cChave := ""

Por último, teria diferença se compilar pelo HMG ?
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Acesso ao Portal da NFE. Algo novo ?

Mensagem por fladimir »

Bily comparei o código q vc postou com o q eu estou usando e a única diferença é em

Código: Selecionar todos

oOle:Navigate("http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=") //+ f_cCHAVE) 
Com relação a onde esta dando erro no teu código em xHarbour pra eu usar o DEFAULT eu acrescento no inicio do PRG #include 'common.ch' e tb a sintaxe é DEFAULT variavel TO valor

[]´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
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Acesso ao Portal da NFE. Algo novo ?

Mensagem por billy1943 »

Oi, Fladimir

Depois de um largo lapso de tempo, voltei a mexer nesta rotina de acesso aos portais da NFE, que você desenvolveu, mas notei que eles não mais permitem passar a chave da NFE, restando-nos digitá-la ou passar por <Control> + "C", e depois <Control> + "V" já dentro do site das Receitas Federal ou Estaduais.

Assim, alterei um pouco a rotina que iniciamos neste tópico e que exponho novamente abaixo, para quem quiser aproveitá-la também, pois está funcionando bem até quando fechamos o navegador IE e que deveria voltar a rotina Main() que a chamou, quando apresenta a seguinte mensagem de erro fatal:

Código: Selecionar todos

"Error Base/1005 Classe NIL has no property VALUE
 Arguments:  < [1] = Type U  [2] = Type C Val:
 314161671810101010101010010101010101001 >"
Obs: A chave informada acima é fictícia.
Como podem ver no fonte, a pretensão seria voltar com outra chave e outro portal estadual, por exemplo.
Quando a rotina funcionar sem erro, minha ideia é pegar a chave das NFE e o Estado Emissor, no caso "SP", do arquivos de NFE emitidas e passá-los ao sistema.

Código: Selecionar todos

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////   
/// NFe_ChecaPortal - Função para checar o numero do Danfe nos portais Nacional ou Estado de São Paulo/Minas Gerais
/// Esta função faz com que abra as paginas dos portais de consulta das NFes e preencha os campos das chaves automaticamente.
/// Como os Portais não estão preenchendo com a chave da NFE passamos a mesma com "Control C" e digitamos somente o Capcha
///
/// Parâmetros: f_cChave > Numero da chave (Danfe) no formato caracter
/// f_nPortal > Portal a abrir - Formato Numerico
///    1- Portal Nacional
///    2- Portal do estado de São Paulo
///    3- Portal do Estado de Minas Gerais
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

FUNCTION main()                                               // os parâmetros serão informados aqui
local chave1 := "                                            "   // futuramente entrará como parâmetro da rotina
local portal := 1                                                 // idem idem

do while .t.

   set cursor on
   nfe_checaportal(chave1,portal)
   inkey(0)

   if lastkey() == 27
      exit
   endif

enddo

setmode(25,80)
set cursor off
return
  
FUNCTION NFe_ChecaPortal(f_cChave, f_nPortal)
/// Se quiser testar chaves válidas, digitá-las nos portais, esta rotina está testando apenas o acesso aos mesmos
Local oOle, oOleDoc := Array(2)
local chave1 := f_cchave   // para o portal Nacional
local chave2 := "35130600255889000158550040000376731016519440" // chave inválida - colocar uma chave válida para o Portal NFE de SP se quiser testar NFE daquela UF
local chave3 := "31140914314050000581550030000933581950935886" // chave inválida - colocar uma chave válida para o Portal NFE de MG se quiser testar NFE daquela UF

if f_nPortal = NIL
   f_nPortal := 1
endif
   
If f_cChave = NIL  
   f_cChave := ""
else
   @ 24,0
   @ 24, 0 say "Nacional= 1, SP = 2 MG = 3"
   @ 05,10 say "Chave1: " get chave1 
   @ 06,10 say "Chave2: " get chave2  
   @ 07,10 say "Chave3: " get chave3
   clear gets
   @ 10,10 say "Portal: " get f_nportal pict "9" valid str(f_nportal,1) $ "123"
   read
   
   if f_nportal == 1
      f_cchave := chave1
    elseif f_nportal == 2
      f_cchave := chave2
    else
      f_cchave := chave3
   endif 
 
   @ 15,10 say "Chave.: " get f_cchave
   read
   @ 24,0

Endif

oOle           := CreateObject("InternetExplorer.Application")
oOle:Visible   := .t. // Apresenta o Browser
oOle:ToolBar   := .f. // Desativa a barra de ferramentas
oOle:StatusBar := .f. // Desativa a barra de status
oOle:MenuBar   := .f. // desativa a barra de menu

If f_nPortal == 1   // Nacional
   oOle:Navigate2("http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=")
Elseif f_nPortal == 2  // SP
   oOle:Navigate("https://nfe.fazenda.sp.gov.br/ConsultaNFe/consulta/publica/ConsultarNFe.aspx")
else // MG
   oOle:Navigate("http://nfe.fazenda.mg.gov.br/consulta/Welcome.do;jsessionid=357F8A586FA7EFA4849563070E68289A.nfenode211")
EndIf

WHILE oOle:Busy
   inkey(.5)
END

If f_nPortal == 1
   oOle := oOle:Document()
   oOle:All:Item("ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta",0):Value := f_cChave
Else
   oOle := oOle:Document()
   oOle:All:Item("ctl00$ContentMain$tbxIdNFe"):Value := f_cChave
EndIf

setmode(25,80)
set cursor on
return .t.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder