Carlos Pais 8 Posted February 15, 2017 Report Share Posted February 15, 2017 Boas Alguém já tem algum código , ou alguma ideia de como fazer a importação automática dos documentos existentes no portal do E-Fatura. Sem ser pelo ficheiro que eles lá tem da importação (e-fatura.csv), pois essa importação não separa os documentos por taxas de IVA .. Já tenho um código para fazer o login automático no site .. que é o seguinte: Try Dim IE IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.FullScreen = False IE.AddressBar = True IE.StatusBar = True IE.Toolbar = False ' IE.Width = Ambiente.Width - 200 ' IE.Height = Ambiente.Height - 200 IE.top = 100 IE.left = 100 IE.Navigate("https://faturas.portaldasfinancas.gov.pt/consultarDocumentosAdquirente.action") Do While IE.Busy System.Threading.Thread.Sleep(100) Loop IE.Navigate("https://faturas.portaldasfinancas.gov.pt/consultarDocumentosAdquirente.action") Do While IE.Busy System.Threading.Thread.Sleep(100) Loop IE.Document.All("username").InnerText = "???????????" ' Nº Contribuinte IE.Document.all("password").focus() IE.Document.All("password").InnerText = "?????????????" ' Senha do Portal IE.Document.All("sbmtLogin").Click() Catch ex As Exception MsgBox("Erro: Volte a Tentar", MsgBoxStyle.Critical) End Try 😵😴🥵🥴 No Desenvolvimento as Possibilidades são Infinitas 😵😴🥵🥴 , podemos é ficar doidos ... Link to post Share on other sites
Carvalho2017 0 Posted May 24, 2017 Report Share Posted May 24, 2017 Em 15-02-2017 às 13:13, Carlos Pais disse: Boas Alguém já tem algum código , ou alguma ideia de como fazer a importação automática dos documentos existentes no portal do E-Fatura. Sem ser pelo ficheiro que eles lá tem da importação (e-fatura.csv), pois essa importação não separa os documentos por taxas de IVA .. Já tenho um código para fazer o login automático no site .. que é o seguinte: Try Dim IE IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.FullScreen = False IE.AddressBar = True IE.StatusBar = True IE.Toolbar = False ' IE.Width = Ambiente.Width - 200 ' IE.Height = Ambiente.Height - 200 IE.top = 100 IE.left = 100 IE.Navigate("https://faturas.portaldasfinancas.gov.pt/consultarDocumentosAdquirente.action") Do While IE.Busy System.Threading.Thread.Sleep(100) Loop IE.Navigate("https://faturas.portaldasfinancas.gov.pt/consultarDocumentosAdquirente.action") Do While IE.Busy System.Threading.Thread.Sleep(100) Loop IE.Document.All("username").InnerText = "???????????" ' Nº Contribuinte IE.Document.all("password").focus() IE.Document.All("password").InnerText = "?????????????" ' Senha do Portal IE.Document.All("sbmtLogin").Click() Catch ex As Exception MsgBox("Erro: Volte a Tentar", MsgBoxStyle.Critical) End Try Boas, Também tenho este problema. Alguém me pode ajudar? Obrigado. Link to post Share on other sites
General 3 Posted May 25, 2017 Report Share Posted May 25, 2017 22 hours ago, Carvalho2017 said: Boas, Também tenho este problema. Alguém me pode ajudar? Obrigado. Já chegaste alguma conclusão? Link to post Share on other sites
Carvalho2017 0 Posted May 25, 2017 Report Share Posted May 25, 2017 Creio que por esta via não conseguimos obter as faturas dos fornecedores. Por aqui, apenas obtê-los por via da exportação para excel. Eu pretendia o acesso direto a essa informação. Link to post Share on other sites
General 3 Posted May 25, 2017 Report Share Posted May 25, 2017 2 hours ago, Carvalho2017 said: Creio que por esta via não conseguimos obter as faturas dos fornecedores. Por aqui, apenas obtê-los por via da exportação para excel. Eu pretendia o acesso direto a essa informação. string param = "username=MyUserName&password=123456"; string url = "https://lms.nust.edu.pk/portal/login/index.php"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentLength = param.Length; request.ContentType = "application/x-www-form-urlencoded"; request.CookieContainer = new CookieContainer(); using (Stream stream = request.GetRequestStream()) { byte[] paramAsBytes = Encoding.Default.GetBytes(param); stream.Write(paramAsBytes, 0, paramAsBytes.Count()); } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { foreach (var cookie in response.Cookies) { var properties = cookie.GetType() .GetProperties() .Select(p => new { Name = p.Name, Value = p.GetValue(cookie) }); foreach (var property in properties) { Console.WriteLine ("{0}: {1}", property.Name, property.Value); } } } Isso é uma das coisas que tenho para fazer.. Se quiseres podemos partilhar informação. O que tenho aqui é um código que penso que poderás aproveitar para fazer login automatico ao site. Depois dentro podes fazer um post json para obteres a informação. Que achas trocarmos emails? Link to post Share on other sites
General 3 Posted May 25, 2017 Report Share Posted May 25, 2017 Just now, General said: string param = "username=MyUserName&password=123456"; string url = "https://lms.nust.edu.pk/portal/login/index.php"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentLength = param.Length; request.ContentType = "application/x-www-form-urlencoded"; request.CookieContainer = new CookieContainer(); using (Stream stream = request.GetRequestStream()) { byte[] paramAsBytes = Encoding.Default.GetBytes(param); stream.Write(paramAsBytes, 0, paramAsBytes.Count()); } using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { foreach (var cookie in response.Cookies) { var properties = cookie.GetType() .GetProperties() .Select(p => new { Name = p.Name, Value = p.GetValue(cookie) }); foreach (var property in properties) { Console.WriteLine ("{0}: {1}", property.Name, property.Value); } } } Isso é uma das coisas que tenho para fazer.. Se quiseres podemos partilhar informação. O que tenho aqui é um código que penso que poderás aproveitar para fazer login automatico ao site. Depois dentro podes fazer um post json para obteres a informação. Que achas trocarmos emails? No caso do site das finanças o url é : https://www.acesso.gov.pt/jsp/loginRedirectForm.jsp?&partID=EFPF Link to post Share on other sites
Guest Posted May 25, 2017 Report Share Posted May 25, 2017 (edited) Bem, uma vez que não há webservice para consumir, e não há, parece fácil fazer uns ciclos para sacar todos os documentos. Uma iteração para o intervalo total, no fim do json está o número de documentos para esse intervalo. Controlar cada ciclo, para verificar se ultrapassou os 300 documentos. (se sim reduzir o intervalo) No fim, controlar o número total de documentos As linhas é o mesmo principio. Por cada documentId (dos totais), iterar para obter as linhas.(aqui a resposta não é apenas um json, mas uma página inteira onde teremos que localizar e ler o json array) bla bla bla ... Edited May 25, 2017 by Guest Link to post Share on other sites
CarlosA 1 Posted July 17, 2018 Report Share Posted July 17, 2018 Desculpem a intromissão, mas já alguém conseguiu programar algo que consiga importar as faturas registadas no efatura? Em caso afirmativo, é possível partilhar? Link to post Share on other sites
General 3 Posted July 17, 2018 Report Share Posted July 17, 2018 4 hours ago, CarlosA said: Desculpem a intromissão, mas já alguém conseguiu programar algo que consiga importar as faturas registadas no efatura? Em caso afirmativo, é possível partilhar? É que linguagem de programação pretendes? 1 Report Link to post Share on other sites
General 3 Posted July 17, 2018 Report Share Posted July 17, 2018 Ainda não estou a trabalhar nisso mas a ideia que eu tenho é usar um robô tipo https://www.nuget.org/packages/Selenium.WebDriver para fazeres o login e guardares os cookies e depois fazer um post via AJAX com o pedido enviando essas mesmas credenciais. De certeza que irá funcionar. Já agora, alguém sabe como enviar a DMR (Declaração Mensal de Renumerações) programaticamente sem webservice? Link to post Share on other sites
CarlosA 1 Posted July 17, 2018 Report Share Posted July 17, 2018 2 minutes ago, General said: É que linguagem de programação pretendes? Olá General, Idealmente, algo que não necessitasse de software suplementar/auxiliar. Se fosse em Excel VBA, então era espetacular! 1 Report Link to post Share on other sites
General 3 Posted July 17, 2018 Report Share Posted July 17, 2018 Just now, CarlosA said: Olá General, Idealmente, algo que não necessitasse de software suplementar/auxiliar. Se fosse em Excel VBA, então era espetacular! Em VBA não tenho... tenho a ideia em C# mas é programador? Link to post Share on other sites
CarlosA 1 Posted July 17, 2018 Report Share Posted July 17, 2018 Just now, General said: Em VBA não tenho... tenho a ideia em C# mas é programador? Não sou um programador. Faço algumas coisitas em VBA, apenas (autodidata). Link to post Share on other sites
General 3 Posted July 17, 2018 Report Share Posted July 17, 2018 9 minutes ago, CarlosA said: Não sou um programador. Faço algumas coisitas em VBA, apenas (autodidata). Olá em VBA também podes fazer seguindo a minha ideia. http://www.tomasvasquez.com.br/forum/viewtopic.php?t=4250 Public Sub Untitled() Dim selenium As New SeleniumWrapper.WebDriver selenium.start "firefox", "http://agenciaweb.celesc.com.br:8080/" selenium.setImplicitWait 5000 selenium.open "/AgenciaWeb/autenticar/autenticar.do" selenium.type "name=sqUnidadeConsumidora", 26911222 selenium.click "id=CPJ" selenium.type "name=numeroDocumentoCNPJ", 03774688002107 selenium.clickAndWait "css=input.botao" selenium.type "name=senha", "SENHA" selenium.clickAndWait "css=input.botao" selenium.clickAndWait "link=» Histórico de Pagamento" selenium.clickAndWait "link=01/2016" selenium.click "id=download" selenium.stop Fazes Login Via selenium: Guardas os cookies do cookiecontainer Post com o pedido usandos os cookies. 1 Report Link to post Share on other sites
CarlosA 1 Posted July 18, 2018 Report Share Posted July 18, 2018 20 hours ago, General said: Olá em VBA também podes fazer seguindo a minha ideia. http://www.tomasvasquez.com.br/forum/viewtopic.php?t=4250 Public Sub Untitled() Dim selenium As New SeleniumWrapper.WebDriver selenium.start "firefox", "http://agenciaweb.celesc.com.br:8080/" selenium.setImplicitWait 5000 selenium.open "/AgenciaWeb/autenticar/autenticar.do" selenium.type "name=sqUnidadeConsumidora", 26911222 selenium.click "id=CPJ" selenium.type "name=numeroDocumentoCNPJ", 03774688002107 selenium.clickAndWait "css=input.botao" selenium.type "name=senha", "SENHA" selenium.clickAndWait "css=input.botao" selenium.clickAndWait "link=» Histórico de Pagamento" selenium.clickAndWait "link=01/2016" selenium.click "id=download" selenium.stop Fazes Login Via selenium: Guardas os cookies do cookiecontainer Post com o pedido usandos os cookies. General, Agradeço o feedback. Estive a analisar a informação, mas como referi não ser um verdadeiro programador, naturalmente que também tenho dificuldades em implementar o que indicaste. Estava à procura de algo em Excel VBA, mas já mais elaborado. Obrigado, de qualquer modo. Link to post Share on other sites
Kurt Kobin 0 Posted February 10, 2019 Report Share Posted February 10, 2019 Em 17 de Julho de 2018 às 15:33, General disse: Olá em VBA também podes fazer seguindo a minha ideia. http://www.tomasvasquez.com.br/forum/viewtopic.php?t=4250 Public Sub Untitled() Dim selenium As New SeleniumWrapper.WebDriver selenium.start "firefox", "http://agenciaweb.celesc.com.br:8080/" selenium.setImplicitWait 5000 selenium.open "/AgenciaWeb/autenticar/autenticar.do" selenium.type "name=sqUnidadeConsumidora", 26911222 selenium.click "id=CPJ" selenium.type "name=numeroDocumentoCNPJ", 03774688002107 selenium.clickAndWait "css=input.botao" selenium.type "name=senha", "SENHA" selenium.clickAndWait "css=input.botao" selenium.clickAndWait "link=» Histórico de Pagamento" selenium.clickAndWait "link=01/2016" selenium.click "id=download" selenium.stop Fazes Login Via selenium: Guardas os cookies do cookiecontainer Post com o pedido usandos os cookies. Olá General, Estou a tentar importar dados do site do e-fatura via VBA(excel) e não estou a conseguir. Sou contabilista e era uma ferramenta essencial para poder brincar com os dados que estão no portal e os dados da empresa. Pode fornecer parte do código de autenticação ou dar pistas para o poder fazer? obrigado e é bom ver gente boa a partilhar conhecimentos. Kurt Link to post Share on other sites
ad1967 0 Posted July 2, 2019 Report Share Posted July 2, 2019 Boa tarde, Acerca deste tema, alguém me pode ajudar na importação do ficheiro ? Tenho que fazer uma rotina para ir buscar as faturas registadas e nem sei por onde começar. Obrigado Link to post Share on other sites
Carlos Pais 8 Posted July 3, 2019 Author Report Share Posted July 3, 2019 'Fazer Login no SITE das é-factura Dim Navigate = "https://www.acesso.gov.pt/jsp/loginRedirectForm.jsp?&partID=EFPF&authVersion=1&_csrf=45a2d3fb-e4b4-4ae2-ab5a-b98412a3113c&selectedAuthMethod=N&username=" & UtilizadorFiscalTextBox & "&password=" & PasswordFiscalTextBox & "" WebBrowser1.Navigate(Navigate) 'Importar Ficheiro (*.json) Try Dim dataInicioFilter = Format(DateTimePicker1.Value, "yyyy-MM-dd") Dim dataFimFilter = Format(DateTimePicker2.Value, "yyyy-MM-dd") Dim Navigate = "https://faturas.portaldasfinancas.gov.pt/json/obterDocumentosAdquirente.action?dataInicioFilter=" & dataInicioFilter & "&dataFimFilter=" & dataFimFilter & "&ambitoAquisicaoFilter=TODOS" ToolStripStatusLabel1.Text = Navigate WebBrowser1.Navigate(Navigate) Catch ex As Exception MsgBox("Não está a Ser possivel Carregar os Dados ... Tente Mais Tarde", vbCritical) End Try 😵😴🥵🥴 No Desenvolvimento as Possibilidades são Infinitas 😵😴🥵🥴 , podemos é ficar doidos ... Link to post Share on other sites
ad1967 0 Posted July 10, 2019 Report Share Posted July 10, 2019 (edited) Boas, Tenho este código que estou a tentar fazer login e não estou a conseguir. Além me pode dar uma ajuda? Falhando o login, todo o resto é para esquecer e não dá para continuar. Já utilizei o "get" e agora experimentei com o "post"! <script> function eFaturas() { var jEFTUSER = document.CORPO.xEFTUSER.value ; var jEFTPASS = document.CORPO.xEFTPASS.value ; var jDATA1 = document.CORPO.xDATA1.value ; var jDATA2 = document.CORPO.xDATA2.value ; var jDATA1 = jDATA1.substring(6,10)+"-"+jDATA1.substring(3,5)+"-"+jDATA1.substring(0,2) ; var jDATA2 = jDATA2.substring(6,10)+"-"+jDATA2.substring(3,5)+"-"+jDATA2.substring(0,2) ; var url = "https://www.acesso.gov.pt/jsp/loginRedirectForm.jsp?&partID=EFPF&authVersion=1&_csrf=45a2d3fb-e4b4-4ae2-ab5a-b98412a3113c&selectedAuthMethod=N&username="+jEFTUSER+"&password="+jEFTPASS ; var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", url, true); xmlhttp.send(); alert(typeof(xmlhttp)); // só para testes alert(xmlhttp.length); // só para testes var url = "https://faturas.portaldasfinancas.gov.pt/json/obterDocumentosAdquirente.action?dataInicioFilter="+jDATA1+"&dataFimFilter="+jDATA2+"&ambitoAquisicaoFilter=TODOS"; var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST", url, true); xmlhttp.send(); document.CORPO.xDADOS.value = JSON.parse(xmlhttp.responseText); } </script> Edited July 21, 2019 by thoga31 GeSHi Link to post Share on other sites
pc.cesar 15 Posted June 28, 2020 Report Share Posted June 28, 2020 Conseguiste resolver a questão da importação da efactura ? podes disponibilizar ? Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now