Theotokos Posted December 5, 2013 Report Share Posted December 5, 2013 Vlw! Herberson! sei que esta atrasado com o serviço, mas se não for pedir muito vc poderia posta novamente, é porque este que vc postou esta sem endentação... vlw muito obgdo pela colaboração... Quote Link to comment Share on other sites More sharing options...
HERGON Posted December 6, 2013 Author Report Share Posted December 6, 2013 Bom dia Editei o post e colei novamente a rotina, agora já dá para copiar e colar sem perder a edentação. Abraços Herberson Gontijo Ponteware Software Ltda. Theotokos 1 Quote Link to comment Share on other sites More sharing options...
aferra Posted December 9, 2013 Report Share Posted December 9, 2013 Está dicas tudo testado e os estados que não consegui estão marcados no fonte, espero que gostem. para usar oSintegra := Sintegra():New() oSintegra:Consulta( cCgc ) kapiaba 1 Quote Link to comment Share on other sites More sharing options...
emotta Posted December 9, 2013 Report Share Posted December 9, 2013 Galera, nesse link: http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao.asp Se consegue os dados da empresa independente de CNPJ. Para os estados que não está funcionando pode buscar por ai. O melhor é que mesmo que a empresa não esteja cadastrada no Sintegra por aqui vai funcionar, porque esses dados são da receita. Alguem que manja bem da classe de habilita a implementar? Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted December 9, 2013 Report Share Posted December 9, 2013 Galera, nesse link: http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao.asp Se consegue os dados da empresa independente de CNPJ. Para os estados que não está funcionando pode buscar por ai. O melhor é que mesmo que a empresa não esteja cadastrada no Sintegra por aqui vai funcionar, porque esses dados são da receita. Alguem que manja bem da classe de habilita a implementar? Uma vez comprei uma classe do Lailton para acessar o site da Receita Federal, a única coisa ruim que não trás o numero da Inscrição Estadual, informação essencial para quem emite NFE, Abraços Luiz Fernando Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted December 10, 2013 Report Share Posted December 10, 2013 Este link, não traz informação estadual alguma, portanto não terá utilidade no caso do uso "DENEGADO de NF-e" Quote Link to comment Share on other sites More sharing options...
leo@lhsistemas.com Posted January 6, 2014 Report Share Posted January 6, 2014 Aferra, boa tarde. baixei lá em dicas. Faço os procedimento que falou: oSintegra := Sintegra():New() oSintegra:Consulta(xcgc) Compilo com o meu projeto, mas, não faz nada. Onde estou errando ? Quote Link to comment Share on other sites More sharing options...
aferra Posted January 7, 2014 Report Share Posted January 7, 2014 Ola Leo, bem tinha um erro e foi corrigido, tente baixar novamente e veja se dá certo. Qualquer coisa grita ae..... Quote Link to comment Share on other sites More sharing options...
leo@lhsistemas.com Posted January 7, 2014 Report Share Posted January 7, 2014 Aferra, bom dia. Ainda não deu certo. Como faço para informar em qual estado(UF) vai ser a consulta, não vi isto, pois "::cUF" não é preenchido nunca. Creio que este seja o problema. Abraços. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 7, 2014 Report Share Posted January 7, 2014 Alessandro, NÃO CONSEGUI FUNCIONAR NADA, nem São Paulo. MS, RJ, AC, dá erro de VALUE. Tá cheio de BUGs, tens outra versão funcionando? A idéia é boa, mas não está operacional. Obg, abs. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 7, 2014 Report Share Posted January 7, 2014 #include "FiveWin.Ch" #Include "xBrowse.Ch" Function TesteSintegra() LOCAL oSintegra := Sintegra():New() aDados := oSintegra:Consulta(.t.) xBrowse( aDados, "Mostrando os Dados do Retorno" ) Return /* AC 07358761021670 AL 24487886000108 AM 00280273000137 AP 00361512000183 BA 01718478000114 CE 01591524000167 DF 32440901003025 ES 28053619001740 GO 04823792000155 MA 03062748000107 MG 16716417000195 MS 07835806000220 MT 03790841000138 PA 63878250000149 PB 41137225000171 PE 23637697006738 PI 03751615000148 PR 01275430000189 RJ 33252156000119 RN 33000167000969 RO 09502005000197 RR 02315090000135 RS 87821278000108 SC 80659238000162 SE 01491090000123 SP 02790893000222 TO 17262213011200 */ CLASS Sintegra DATA aUfs INIT {"AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO"} DATA aUrls INIT {"http://sefaznet.ac.gov.br/sefazonline/servlet/sintegraconsulta", ; "http://sintegra.sefaz.al.gov.br/consulta_empresa_pesquisa.asp", ; "http://online.sefaz.am.gov.br/sintegra/index.asp", ; "http://www.sintegra.ap.gov.br/Sintegra/", ; "http://www.sefaz.ba.gov.br/sintegra/sintegra.asp?estado=BA", ; "http://www.sefaz.ce.gov.br/content/aplicacao/internet/servicos_online/sintegra/sintegra.asp?estado=ce", ; "http://www.fazenda.df.gov.br/area.cfm?id_area=110", ; "http://www.sintegra.es.gov.br/", ; "http://www.sefaz.go.gov.br/ccs/default.asp", ; "http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/consultaSintegraFiltro.jsf", ; "http://consultasintegra.fazenda.mg.gov.br/sintegra/", ; "http://www1.sefaz.ms.gov.br/cadastro/CadastroMsCCI.asp", ; "http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica", ; "https://app.sefa.pa.gov.br/Sintegra/", ; "https://saplic.receita.pb.gov.br/sintegra/SINf_ConsultaSintegra.jsp", ; "http://www.sintegra.sefaz.pe.gov.br/", ; "http://web.sintegra.sefaz.pi.gov.br/consulta_empresa_pesquisa.asp", ; "http://www.sintegra.fazenda.pr.gov.br/sintegra/", ; "http://www.fazenda.rj.gov.br/projetoCPS/consulta.jsp", ; "http://www.set.rn.gov.br/sintegra/default.asp", ; "http://portal.intranet.sefin.ro.gov.br/PortalContribuinte/Publico/parametropublica.jsp", ; "https://www.sefaz.rr.gov.br/sintegra/servlet/hwsintco", ; "http://sintegra.sefaz.rs.gov.br/sef_root/inf/Sintegra_Entrada.asp", ; "http://sistemas3.sef.sc.gov.br/sintegra/consulta_empresa_pesquisa.aspx", ; "https://security.sefaz.se.gov.br/SIC/sintegra/index.jsp", ; "http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/consultaSintegraServlet", ; "http://sintegra.sefaz.to.gov.br/" } DATA aUrlRet INIT {"http://sefaznet.ac.gov.br/sefazonline/servlet/sintegradados?", ; "http://sintegra.sefaz.al.gov.br/consulta_empresa_principal.asp", ; "http://online.sefaz.am.gov.br/sintegra/sintegra.asp?captcha_code=", ; "http://www.sintegra.ap.gov.br/Sintegra/pesquisa.jsf;jsessionid=", ; "http://www.sefaz.ba.gov.br/sintegra/Result.asp", ; "http://www.sefaz.ce.gov.br/content/aplicacao/internet/servicos_online/sintegra/result.asp", ; "http://www.fazenda.df.gov.br//aplicacoes/sintegra/sintegra_acao_cfi.cfm?id_menu=4", ; "http://www.sintegra.es.gov.br/", ; "http://www.sefaz.go.gov.br/ccs/consultar.asp", ; "http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/consultaSintegraResultadoConsulta.jsf", ; "http://consultasintegra.fazenda.mg.gov.br/sintegra/ctrl/SINTEGRA/SINTEGRA/CONSULTA_707", ; "http://www1.sefaz.ms.gov.br/cadastro/ResultadoCCI.asp?", ; "http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica", ; "https://app.sefa.pa.gov.br/Sintegra/detalharEstabelecimento.do?", ; "https://saplic.receita.pb.gov.br/sintegra/SINf_ConsultaSintegra", ; "http://www.sefaz.pe.gov.br/sintegra/consulta/resultado.asp", ; "http://web.sintegra.sefaz.pi.gov.br/consulta_empresa_principal.asp", ; "http://www.sintegra.fazenda.pr.gov.br/sintegra/", ; "http://www.fazenda.rj.gov.br/projetoCPS/cpsServlet", ; "http://www.set.rn.gov.br/sintegra/result.asp?", ; "http://portal.intranet.sefin.ro.gov.br/PortalContribuinte/Publico/consultapublica.jsp", ; "https://www.sefaz.rr.gov.br/sintegra/servlet/hwsintpe?", ; "http://sintegra.sefaz.rs.gov.br/sef_root/inf/SEF_SINTEGRA_4.asp", ; "http://sistemas3.sef.sc.gov.br/sintegra/consulta_empresa_pesquisa.aspx", ; "https://security.sefaz.se.gov.br/SIC/sintegra/resultadoConsultaDetalhe.jsp?", ; "http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/sintegra", ; "http://sintegra.sefaz.to.gov.br/sintegra/ConsultaSintegra.dll?" } DATA aSeekUrl INIT {{"IDENTIFICAÇÃO", "Data da consulta:"}, ; {"IDENTIFICAÇÃO", "Observações:"}, ; {"IDENTIFICAÇÃO", "Atividade Economica :"}, ; {"AVISO:", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"Identificação", "Telefone"},; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"Identificação Contribuinte", "Telefone:"}, ; {"IDENTIFICAÇÃO", "DDD:"}, ; {"Dados Principais", "Telefone:"},; {"SECRETARIA", "SITUAÇÃO"}, ; {"Identificação", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÂO", "CORRESPONDÊNCIA"}, ; {".::IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:"} } DATA aDados INIT {{"Cgc:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Muncípio:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"C.N.P.J:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Municipio:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ/CPF", "CF/DF", "Razão Social", "Logradouro", "Número", "Complemento", "Bairro", "Município", "UF", "CEP" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social :", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual - CCE :", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CGC:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município::", "UF:", "CEP:" }, ; {"CNPJ", "INSCRIÇÃO ESTADUAL", "RAZÃO SOCIAL/NOME", "LOGRADOURO", "NÚMERO", "COMPLEMENTO", "BAIRRO", "MUNICÍPIO", "UF", "CEP" }, ; {"CPF/CNPJ:", "Inscrição estadual:", "Razão social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município/UF:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"C.P.F/C.N.P.J:", "Inscrição Estadual:", "Razão Social:", "Endereço:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ", "CAD ICMS", "Razão Social", "Logradouro", "Número", "Complemento", "Bairro", "Município", "UF", "CEP" }, ; {"CPF/CNPJ:", "Inscrição Estadual:", "Nome/Razão Estadual:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CGC:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "Telefone:" }, ; {"CNPJ/CPF:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "Telefone:" } } DATA cRetorno INIT "" DATA lDownload INIT .F. DATA lError INIT .F. DATA cError INIT "" DATA cUF INIT "" DATA nUF INIT 26 DATA nTimeOut INIT 240 // 4 minutos METHOD New() CONSTRUCTOR METHOD Consulta( lConsulta ) METHOD DownloadComplete( oActived ) METHOD MontaSintegra() METHOD StripHTML( cHtml ) METHOD GroupBy( cStart, cEnd, cString, lTags, lBreak ) METHOD RemoveBlankLine( cTexto ) METHOD RemoveChar( cString, aChar ) METHOD Clear() INLINE DeleteUrlCacheEntry( ::aUrls[ ::nUF ] ) ENDCLASS METHOD New() CLASS Sintegra RETURN Self METHOD Consulta( cCnpj ) CLASS Sintegra LOCAL oDlgSint, oActiveX LOCAL nTimer IF IsInternet() *::Clear() *RETURN {} ELSE MsgStop("Não é Possível Encontrar os Dados no Sintegra !" + CRLF + CRLF + "Aguarde a Conexão com a Internet.","Erro de Conexão") RETURN {} ENDIF IF EMPTY(::cUF) ::nUF := 0 DEFINE DIALOG oDlgUfs FROM 0,0 TO 225,500 PIXEL @ 005,010 RADIO oUfs VAR ::nUF PROMPT ::aUfs[1] + "- ACre", ::aUfs[2] + "- Alagoas", ::aUfs[3] + "- Amazonas", ::aUfs[4] + "- Amapá", ::aUfs[5] + "- Bahia", ::aUfs[6] + "- Ceará", ::aUfs[7] + "- Distrito Federeal", ::aUfs[8] + "- Espírito Santo", ::aUfs[9] + "- Goiás" SIZE 70,8.9 PIXEL OF oDlgUfs @ 015,085 RADIOITEM ::aUfs[10] + "- Maranhão" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 024,085 RADIOITEM ::aUfs[11] + "- Minas Gerais" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 033,085 RADIOITEM ::aUfs[12] + "- Mato Grosso do Sul" RADIOMENU oUfs SIZE 72,08 PIXEL OF oDlgUfs @ 042,085 RADIOITEM ::aUfs[13] + "- Mato Grosso" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 051,085 RADIOITEM ::aUfs[14] + "- Pará" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 060,085 RADIOITEM ::aUfs[15] + "- Paraíba" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 069,085 RADIOITEM ::aUfs[16] + "- Pernambuco" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 078,085 RADIOITEM ::aUfs[17] + "- Piauí" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 087,085 RADIOITEM ::aUfs[18] + "- Paraná" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 005,160 RADIOITEM ::aUfs[19] + "- Rio de Janeiro" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 024,160 RADIOITEM ::aUfs[20] + "- Rio Grande do Norte" RADIOMENU oUfs SIZE 75,08 PIXEL OF oDlgUfs @ 033,160 RADIOITEM ::aUfs[21] + "- Rôndonia" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 042,160 RADIOITEM ::aUfs[22] + "- Roraima" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 051,160 RADIOITEM ::aUfs[23] + "- Rio Grande do Sul" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 060,160 RADIOITEM ::aUfs[24] + "- Santa Catarina" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 069,160 RADIOITEM ::aUfs[25] + "- Sergipe" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 078,160 RADIOITEM ::aUfs[26] + "- São Paulo" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs @ 087,160 RADIOITEM ::aUfs[27] + "- Tocantis" RADIOMENU oUfs SIZE 70,08 PIXEL OF oDlgUfs ACTIVATE DIALOG oDlgUfs CENTERED IF ::nUF == 0 RETURN {} ENDIF ::cUF := ::aUfs[ ::nUF ] ENDIF DEFINE DIALOG oDlgSint FROM 0,0 TO 600,800 PIXEL oDlgSint:lHelpIcon := .F. ACTIVATE DIALOG oDlgSint NOWAIT CENTERED oActiveX := TActivex():New( oDlgSint, "Shell.Explorer", 0, 0, 800, 600 ) oActiveX:bOnEvent := {|cEv| IF( cEv == "DownloadComplete", ::DownloadComplete( oActiveX ), NIL ) } oDlgSint:oClient = oActiveX nTimer := Seconds() oActiveX:Do( "Navigate2", ::aUrls[ ::nUF ] ) while oActiveX:Busy SysWait(0.2) ENDDO oActiveXdo := oActiveX:Document() IF ::cUF == "AC" oActiveXdo:All:Item("vNUMDOC",0):Value := cCnpj oActiveXdo:All:Item("cfield",0):Focus() ELSEIF ::cUF == "AL" oActiveXdo:All:Item("txt_CNPJ",0):Value := cCnpj oActiveXdo:All:Item("Submit",0):Focus() oActiveXdo:All:Item("Submit",0):Click() ELSEIF ::cUF == "AM" oActiveXdo:All:Item("cgc",0):Value := cCnpJ oActiveXdo:All:Item("captcha_code",0):Focus() ELSEIF ::cUF == "AP" oActiveXdo:All:Item("j_id4:tipo",0):Value := "CNPJ" oActiveXdo:All:Item("j_id4:doc",0):Value := cCnpj oActiveXdo:All:Item("j_id4:txtcaptcha",0):Focus() ELSEIF ::cUF == "BA" oActiveXdo:All:Item("txt_CNPJ",0):Value := cCnpj oActiveXdo:All:Item("Submit",0):Focus() oActiveXdo:All:Item("Submit",0):Click() ELSEIF ::cUF == "CE" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("B1",0):Focus() oActiveXdo:All:Item("B1",0):Click() ELSEIF ::cUF == "DF" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("B1",0):Focus() oActiveXdo:All:Item("B1",0):Click() ELSEIF ::cUF == "ES" oActiveXdo:All:Item("num_cnpj",0):Value := cCnpj oActiveXdo:All:Item("botao",0):Focus() oActiveXdo:All:Item("botao",0):Click() ELSEIF ::cUF == "GO" oActiveXdo:All:Item("tCNPJ",0):Value := cCnpj oActiveXdo:All:Item("btCGC",0):Focus() ELSEIF ::cUF == "MA" // não sei como pegar os campos e o botão ELSEIF ::cUF == "MG" oActiveXdo:All:Item("identificadorCmbOpcao",0):Value := "Número do CNPJ" oActiveXdo:All:Item("filtro",0):Value := cCnpj oActiveXdo:All:Item("recaptcha_response_field",0):Focus() ELSEIF ::cUF == "MS" oActiveXdo:All:Item("CGC_CPF",0):Value := cCnpj oActiveXdo:All:Item("captchacode",0):Focus() ELSEIF ::cUF == "MT" oActiveXdo:All:Item("numero",0):Value := cCnpj oActiveXdo:All:Item("captchaDigitado",0):Focus() ELSEIF ::cUF == "PA" oActiveXdo:All:Item("CNPJ",0):Value := cCnpj oActiveXdo:All:Item("OP",0):Focus() oActiveXdo:All:Item("OP",0):Click() ELSEIF ::cUF == "PR" oActiveXdo:All:Item("data[Sintegra1][Cnpj]",0):Value := cCnpj oActiveXdo:All:Item("data[Sintegra1][CodImage]",0):Focus() ELSEIF ::cUF == "PB" // PB certificado de segurança mas é ir dando sim que funciona // não sei como pegar os campos e o botão ELSEIF ::cUF == "PE" // não sei como pegar os campos e o botão ELSEIF ::cUF == "PI" oActiveXdo:All:Item("txt_CNPJ",0):Value := cCnpj oActiveXdo:All:Item("Submit",0):Focus() oActiveXdo:All:Item("Submit",0):Click() ELSEIF ::cUF == "RJ" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("cod_img",0):Focus() ELSEIF ::cUF == "RN" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("B1",0):Focus() oActiveXdo:All:Item("B1",0):Click() ELSEIF ::cUF == "RS" oActiveXdo:All:Item("cgcmf",0):Value := cCnpj ELSEIF ::cUF == "RO" oActiveXdo:All:Item("NuDevedor",0):Value := cCnpj oActiveXdo:All:Item("recaptcha_response_field",0):Focus() ELSEIF ::cUF == "RR" oActiveXdo:All:Item("_CONINSESTG",0):Value := cCnpj oActiveXdo:All:Item("cfield",0):Focus() ELSEIF ::cUF == "SC" oActiveXdo:All:Item("txt_CPFCNPJ",0):Value := cCnpj oActiveXdo:All:Item("txtCodigoCaptcha",0):Focus() ELSEIF ::cUF == "SE" oActiveXdo:All:Item("cdCnpj",0):Value := cCnpj oActiveXdo:All:Item("dsImagem",0):Focus() ELSEIF ::cUF == "SP" oActiveXdo:All:Item("cnpj",0):Value := cCnpj oActiveXdo:All:Item("Key",0):Focus() ELSEIF ::cUF == "TO" // não sei como pegar os campos e o botão ENDIF while !::lDownload IF !IsWindowVisible( oDlgSint:hWnd ) ::lDownload := .T. ::lError := .T. ::cError := "Consulta Cancelada !" ELSEIF !IsInternet() ::lDownload := .T. ::lError := .T. ::cError := "Perda de Conexão com a Internet !" ELSEIF ( Seconds() - nTimer ) >= ::nTimeOut ::lDownload := .T. ::lError := .T. ::cError := "Tempo Limite Esgotado !" ENDIF SysRefresh() ENDDO oDlgSint:End() SysRefresh() IF ::lDownload .AND. !::lError RETURN ::MontaSintegra() ELSE MsgStop("Não Foi Possível Encontrar os Dados no Sintegra !" + CRLF + CRLF + ::cError,"Erro de Pesquisa") ::Clear() ENDIF RETURN {} METHOD DownloadComplete( oActived ) CLASS Sintegra LOCAL lRetVal := .F. IF ::aUrlRet[ ::nUF ] $ ALLTRIM(oActived:LocationURL) while oActived:Busy SysWait(0.5) ENDDO IF ::aSeekUrl[ ::nUF,1 ] $ oActived:Document:Body:InnerHtml TRY ::cRetorno := oActived:Document:Body:InnerHtml CATCH oE ::lError := .T. ::cError := "Falha no Recebimento dos Dados !" END oActived:oWnd:Hide() ::lDownload := .T. ENDIF ELSEIF AT( "não+foi+encontrado", oActived:LocationURL ) > 0 ::cError := "O CNPJ não foi Encontrado na Base de Dados do Sintegra." ::lError := .T. ::lDownload := .T. ELSEIF AT( "incorreto", oActived:LocationURL ) > 0 ::cError := "O C.N.P.J. Não é Válido !" ::lError := .T. ::lDownload := .T. ENDIF RETURN NIL METHOD MontaSintegra() CLASS Sintegra LOCAL cLine, nLine, nTotal LOCAL aRetorno := {}, aRetDbf := {} LOCAL cTexto LOCAL nPos, nPo1 cSintegra := ::cRetorno IF AT( "<!--", cSintegra ) > 0 //Retira Comentários do html while ( nPos := AT( "<!--", cSintegra ) ) > 0 nPo1 := AT( "-->", cSintegra ) cTexto := SUBS( cSintegra, nPos, (nPo1-nPos) + 3 ) cSintegra := STRTRAN( cSintegra, cTexto, "" ) IF EMPTY(cTexto) EXIT ENDIF ENDDO ENDIF cSintegra := STRTRAN( cSintegra, "INFORMAÇÕES COMPLEMENTARES" ) cSintegra := STRTRAN( cSintegra, "ENDEREÇO DA EMPRESA" ) cSintegra := ::StripHTML( cSintegra ) IF ::cUF == "MS" MemoWrit("Sintegra.TXT",cSintegra) oText := TTxtFile():New( oClassVar:cPasta + "Sintegra.TXT" ) FOR nLine := 1 TO LEN(::aDados[ ::nUF ]) FOR nCtr:=1 TO oText:RecCount() IF ::aDados[ ::nUF,nLine ] $ oText:cLine cLine := SUBS( oText:cLine, AT( ::aDados[ ::nUF,nLine ], oText:cLine ) + LEN(::aDados[ ::nUF,nLine ]) ) AADD( aRetorno, { nLine, ALLTRIM( ::RemoveChar( cLine, {[.],[-],[/],[:]} ) ) } ) ENDIF oText:Skip() NEXT oText:GoTop() NEXT oText:Close() FErase( oClassVar:cPasta + "Sintegra.TXT" ) ELSE cSintegra := ::GroupBy( ::aSeekUrl[::nUF,1], ::aSeekUrl[::nUF,2], cSintegra, .F., .F. ) cSintegra := ::RemoveBlankLine( cSintegra ) nTotal := MLCount( cSintegra ) IF ::cUF == "TO" AADD( aRetorno, { 6, " " } ) ENDIF FOR nLine := 1 TO nTotal cLine := ALLTRIM(MEMOLINE(cSintegra,,nLine)) IF ::cUF == "GO" IF ( nFound := ASCAN( ::aDados[ ::nUF ], HB_ATokens( cLine, ":" )[1] ) ) # 0 AADD( aRetorno, { nFound, ALLTRIM( ::RemoveChar( HB_ATokens( cLine, ":" )[2], {[.],[-],[/],[:]} ) ) } ) ENDIF ELSE IF ( nFound := ASCAN(::aDados[ ::nUF ],cLine) ) # 0 IF ::cUF == "MT" IF ::aDados[ ::nUF,nFound ] == "Município/UF:" cTexto := ALLTRIM(MEMOLINE(cSintegra,,++nLine)) cTxtUF := ALLTRIM(HB_ATokens( cTexto, "-" )[2]) AADD( aRetorno, { 9, cTxtUF } ) cTexto := HB_ATokens( cTexto, "-" )[1] ELSE cTexto := ALLTRIM(MEMOLINE(cSintegra,,++nLine)) ENDIF ELSE cTexto := ALLTRIM(MEMOLINE(cSintegra,,++nLine)) ENDIF //Caso não haja a informação IF ASCAN( ::aDados[ ::nUF ],cTexto) # 0 cTexto := " " --nLine ENDIF //para o Caso do RJ IF cTexto == "Data da Concessão da Inscrição:" cTexto := " " --nLine ENDIF IF ASCAN(aRetorno, {|x| x[2] == cTexto} ) == 0 .OR. ASCAN(aRetorno, {|x| x[1] == nFound} ) == 0 AADD( aRetorno, { nFound, ::RemoveChar(cTexto,{[.],[-],[/],[:]}) } ) ENDIF ENDIF ENDIF NEXT nLine ENDIF aRetorno := ASort( aRetorno,,,{|x,y| x[1] < y[1]} ) FOR nCtr:=1 TO LEN(aRetorno) AADD( aRetDbf, aRetorno[nCtr,2] ) NEXT RETURN aRetDbf METHOD StripHTML( cHtml ) CLASS Sintegra LOCAL cString := ::RemoveChar( cHTML, {"&","amp;","nbsp;",'<!-- ',' -->','<--','-->','||','\/','<!--%','%-->',[/\],'end if %'} ) LOCAL aMatch := HB_RegExAll( "\<[^\>]*\>", cString ) AEVAL( aMatch, {|a| cString := STRTRAN( cString, a[1] ) } ) RETURN cString METHOD GroupBy( cStart, cEnd, cString, lTags, lBreak ) CLASS Sintegra LOCAL nBegin, nEnd LOCAL cFound := "", nAT #ifndef __XHARBOUR__ // Para Harbour cString := OemToAnsi(cString) #endif DEFAULT lTags:=.F., lBreak:=.F. nBegin := AT( cStart, cString ) IF nBegin == 0 ; RETURN cFound ; ENDIF IF !lTags ; nBegin += LEN(cStart) ; ENDIF IF cEnd # NIL nEnd := AT( cEnd, cString ) IF nEnd == 0 RETURN cFound ELSE nEnd := nEnd - nBegin ENDIF IF lTags ; nEnd += LEN(cEnd) ; ENDIF ELSE IF lBreak nAt := AT( CRLF, SUBS( cString, nBegin, LEN(cString) ) ) IF nAt > 0 nEnd := nAt - 1 If nEnd < LEN(cString) ; nEnd := LEN(cString)+1 ; ENDIF ELSE nEnd := LEN(cString) ENDIF ELSE nEnd := LEN(cString) ENDIF ENDIF cFound := SUBS( cString, nBegin, nEnd ) IF lBreak IF lTags cFound:=StrTran(cFound,CRLF) ELSE IF cEnd # NIL nAt := At(CRLF,cFound) IF nAt > 0 cFound := LEFT(cFound,nAT) ENDIF ENDIF ENDIF ENDIF RETURN cFound METHOD RemoveBlankLine( cTexto ) CLASS Sintegra LOCAL cTextoNew := "" LOCAL nLines, cLine, nNum nLines := MLCount( cTexto, 400 ) FOR nNum := 0 TO nLines cLine := ALLTRIM(MEMOLINE( cTexto, 400, nNum )) IF !EMPTY(cLine) IF cLine == "function ocultarExibir(idDaTabela)" nNum += 14 ; LOOP ELSEIF cLine == 'if isnull (rsCadastro("des_bairro_distrito")) then' nNum += 3 ; LOOP ENDIF IF cLine # "Ativo" .AND. cLine # "Baixado" .AND. cLine # "Inativo" cTextoNew += cLine + IF( nNum < nLines, CRLF, "" ) ENDIF ENDIF NEXT nNum RETURN cTextoNew METHOD RemoveChar( cString, aChar ) CLASS Sintegra AEVAL( aChar, {|cChar| cString := STRTRAN( cString, cChar ) } ) RETURN cString DLL STATIC FUNCTION DeleteUrlCacheEntry(lpszUrlName AS STRING) AS LONG PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll" Este esta funcionando, ou melhor... testei em SP e MG Quote Link to comment Share on other sites More sharing options...
aferra Posted January 7, 2014 Report Share Posted January 7, 2014 olha ela ai, tem uma atualização de versão em dica e foi assim que coloquei a nova versão...agora o que houve não sei dizer...enfim, copiem aqui está ai em cima que vai funcionar Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2014 Report Share Posted January 8, 2014 Alessandro, como faço para pegar as informações completas? Por exemplo, preciso saber estes dados: INFORMAÇÕES COMPLEMENTARES Atividade Econômica: Comércio varejista de mercadorias em geral, com predominância de produtos alimentícios - minimercados, mercearias e armazéns Situação Cadastral Vigente: NÃO HABILITADO Inapto Data desta Situação Cadastral: 29/02/2008 Regime de Apuração: NORMAL - REGIME PERIÓDICO DE APURAÇÃO Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2014 Report Share Posted January 8, 2014 Alessandro, No MS - Mato Grosso do Sul, retornando este erro Application =========== Path and name: c:\FWH1306\samples\SINTEGRA.exe (32 bits) Size: 2,465,280 bytes Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20130422) FiveWin Version: FWHX 13.05 Windows version: 6.1, Build 7601 Service Pack 1 Time from start: 0 hours 0 mins 28 secs Error occurred at: 01/08/14, 09:54:01 Error description: Error BASE/1003 Variable does not exist: OCLASSVAR Stack Calls =========== Called from: SINTEGRA.prg => SINTEGRA:MONTASINTEGRA( 458 ) Called from: SINTEGRA.prg => SINTEGRA:CONSULTA( 373 ) Called from: SINTEGRA.prg => TESTESINTEGRA( 8 ) Quote Link to comment Share on other sites More sharing options...
aferra Posted January 8, 2014 Report Share Posted January 8, 2014 bem respondendo a primeira pergunta basta vc acrescentar na variável aDados "atividade econômica:" e aumentar o array de retorno e quanto ao erro é o caminho de uma pasta que salvo o txt tire o a variável oClassVar:cpasta + que vai parar o erro. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 8, 2014 Report Share Posted January 8, 2014 Alessandro, seria assim? E onde aumenta o ARRAY(), não faço idéia. Mas burro que uma porta. kkkkkkkkkkkk Qual é o teu Skype Alessandro? DATA aSeekUrl INIT {{"IDENTIFICAÇÃO", "Data da consulta:", "Atividade Economica:"}, ; {"IDENTIFICAÇÃO", "Observações:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Atividade Economica:"}, ; {"AVISO:", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"Identificação", "Telefone", "Atividade Econômica:"},; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"Identificação Contribuinte", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "DDD:", "Atividade Econômica:"}, ; {"Dados Principais", "Telefone:", "Atividade Econômica:"},; {"SECRETARIA", "SITUAÇÃO", "Atividade Econômica:"}, ; {"Identificação", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÂO", "CORRESPONDÊNCIA", "Atividade Econômica:"}, ; {".::IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Atividade Econômica:", "Atividade Econômica:"}, ; {"IDENTIFICAÇÃO", "Telefone:", "Atividade Econômica:"} } DATA aDados INIT {{"Cgc:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Muncípio:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"C.N.P.J:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Municipio:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ/CPF", "CF/DF", "Razão Social", "Logradouro", "Número", "Complemento", "Bairro", "Município", "UF", "CEP", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social :", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual - CCE :", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CGC:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município::", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ", "INSCRIÇÃO ESTADUAL", "RAZÃO SOCIAL/NOME", "LOGRADOURO", "NÚMERO", "COMPLEMENTO", "BAIRRO", "MUNICÍPIO", "UF", "CEP", "atividade econômica:" }, ; {"CPF/CNPJ:", "Inscrição estadual:", "Razão social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município/UF:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"C.P.F/C.N.P.J:", "Inscrição Estadual:", "Razão Social:", "Endereço:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ", "CAD ICMS", "Razão Social", "Logradouro", "Número", "Complemento", "Bairro", "Município", "UF", "CEP", "atividade econômica:" }, ; {"CPF/CNPJ:", "Inscrição Estadual:", "Nome/Razão Estadual:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CGC:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "atividade econômica:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "Telefone:", "atividade econômica:" }, ; {"CNPJ/CPF:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "Telefone:", "atividade econômica:" } } Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 9, 2014 Report Share Posted January 9, 2014 // Link: http://fivewin.com.br/index.php?/topic/21479-consulta-sintegra-pelo-cnpj/ // Programa para consultar o SINTEGRA do Cliente By Alessandro. // Modificado por: Joao Santos em: 09/01/2014 // Quem melhorar, porfa, vá postando as melhorias. Thanks. #Include "FiveWin.Ch" FUNCTION Main() oSintegra := Sintegra():New() // Aqui, Vir carregado com o CNPJ do Cliente oSintegra:Consulta( "02790893000222" ) // SP RETURN .T. /* AC 07358761021670 AL 24487886000108 AM 00280273000137 AP 00361512000183 BA 01718478000114 CE 01591524000167 DF 32440901003025 ES 28053619001740 GO 04823792000155 MA 03062748000107 MG 16716417000195 MS 07835806000220 MT 03790841000138 PA 63878250000149 PB 41137225000171 PE 23637697006738 PI 03751615000148 PR 01275430000189 RJ 33252156000119 RN 33000167000969 RO 09502005000197 RR 02315090000135 RS 87821278000108 SC 80659238000162 SE 01491090000123 SP 02790893000222 TO 17262213011200 */ CLASS Sintegra DATA aUfs INIT {"AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO"} DATA aUrls INIT {"http://sefaznet.ac.gov.br/sefazonline/servlet/sintegraconsulta", ; "http://sintegra.sefaz.al.gov.br/consulta_empresa_pesquisa.asp", ; "http://online.sefaz.am.gov.br/sintegra/index.asp", ; "http://www.sintegra.ap.gov.br/Sintegra/", ; "http://www.sefaz.ba.gov.br/sintegra/sintegra.asp?estado=BA", ; "http://www.sefaz.ce.gov.br/content/aplicacao/internet/servicos_online/sintegra/sintegra.asp?estado=ce", ; "http://www.fazenda.df.gov.br/area.cfm?id_area=110", ; "http://www.sintegra.es.gov.br/", ; "http://www.sefaz.go.gov.br/ccs/default.asp", ; "http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/consultaSintegraFiltro.jsf", ; "http://consultasintegra.fazenda.mg.gov.br/sintegra/", ; "http://www1.sefaz.ms.gov.br/cadastro/CadastroMsCCI.asp", ; "http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica", ; "https://app.sefa.pa.gov.br/Sintegra/", ; "https://saplic.receita.pb.gov.br/sintegra/SINf_ConsultaSintegra.jsp", ; "http://www.sintegra.sefaz.pe.gov.br/", ; "http://web.sintegra.sefaz.pi.gov.br/consulta_empresa_pesquisa.asp", ; "http://www.sintegra.fazenda.pr.gov.br/sintegra/", ; "http://www.fazenda.rj.gov.br/projetoCPS/consulta.jsp", ; "http://www.set.rn.gov.br/sintegra/default.asp", ; "http://portal.intranet.sefin.ro.gov.br/PortalContribuinte/Publico/parametropublica.jsp", ; "https://www.sefaz.rr.gov.br/sintegra/servlet/hwsintco", ; "http://sintegra.sefaz.rs.gov.br/sef_root/inf/Sintegra_Entrada.asp", ; "http://sistemas3.sef.sc.gov.br/sintegra/consulta_empresa_pesquisa.aspx", ; "https://security.sefaz.se.gov.br/SIC/sintegra/index.jsp", ; "http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/consultaSintegraServlet", ; // SAO PAULO "http://sintegra.sefaz.to.gov.br/" } // URL de Retorno DATA aUrlRet INIT {"http://sefaznet.ac.gov.br/sefazonline/servlet/sintegradados?", ; "http://sintegra.sefaz.al.gov.br/consulta_empresa_principal.asp", ; "http://online.sefaz.am.gov.br/sintegra/sintegra.asp?captcha_code=", ; "http://www.sintegra.ap.gov.br/Sintegra/pesquisa.jsf;jsessionid=", ; "http://www.sefaz.ba.gov.br/sintegra/Result.asp", ; "http://www.sefaz.ce.gov.br/content/aplicacao/internet/servicos_online/sintegra/result.asp", ; "http://www.fazenda.df.gov.br//aplicacoes/sintegra/sintegra_acao_cfi.cfm?id_menu=4", ; "http://www.sintegra.es.gov.br/", ; "http://www.sefaz.go.gov.br/ccs/consultar.asp", ; "http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/consultaSintegraResultadoConsulta.jsf", ; "http://consultasintegra.fazenda.mg.gov.br/sintegra/ctrl/SINTEGRA/SINTEGRA/CONSULTA_707", ; "http://www1.sefaz.ms.gov.br/cadastro/ResultadoCCI.asp?", ; "http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica", ; "https://app.sefa.pa.gov.br/Sintegra/detalharEstabelecimento.do?", ; "https://saplic.receita.pb.gov.br/sintegra/SINf_ConsultaSintegra", ; "http://www.sefaz.pe.gov.br/sintegra/consulta/resultado.asp", ; "http://web.sintegra.sefaz.pi.gov.br/consulta_empresa_principal.asp", ; "http://www.sintegra.fazenda.pr.gov.br/sintegra/", ; "http://www.fazenda.rj.gov.br/projetoCPS/cpsServlet", ; "http://www.set.rn.gov.br/sintegra/result.asp?", ; "http://portal.intranet.sefin.ro.gov.br/PortalContribuinte/Publico/consultapublica.jsp", ; "https://www.sefaz.rr.gov.br/sintegra/servlet/hwsintpe?", ; "http://sintegra.sefaz.rs.gov.br/sef_root/inf/SEF_SINTEGRA_4.asp", ; "http://sistemas3.sef.sc.gov.br/sintegra/consulta_empresa_pesquisa.aspx", ; "https://security.sefaz.se.gov.br/SIC/sintegra/resultadoConsultaDetalhe.jsp?", ; "http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/sintegra", ; // SAO PAULO "http://sintegra.sefaz.to.gov.br/sintegra/ConsultaSintegra.dll?" } /* eu fiz para sampa, no caso vc precisa pegar o site de RJ e ver qual é o ultimo dado para parar a leitura do xml o array aSeekUrl serve para onde começa a ler e onde termina de ler o xml Alessandro */ DATA aSeekUrl INIT {{"IDENTIFICAÇÃO", "Data da consulta:"}, ; {"IDENTIFICAÇÃO", "Observações:"}, ; {"IDENTIFICAÇÃO", "Atividade Economica :"}, ; {"AVISO:", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"Identificação", "Telefone"},; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"Identificação Contribuinte", "Telefone:"}, ; {"IDENTIFICAÇÃO", "DDD:"}, ; {"Dados Principais", "Telefone:"},; {"SECRETARIA", "SITUAÇÃO"}, ; {"Identificação", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÂO", "CORRESPONDÊNCIA"}, ; {".::IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Telefone"}, ; {"IDENTIFICAÇÃO", "Telefone:"}, ; {"IDENTIFICAÇÃO", "Data da Consulta:"}, ; {"IDENTIFICAÇÃO", "Telefone:"} } /* o array aDados server para a leitura pegar o que está na frente exemplo CNPJ: 13212313212132131 vai pegar o que está na frente se forma Atividade Economica: não sei qual é, vai pegar não sei qual é e assim por diante Alessandro */ DATA aDados INIT {{"Cgc:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Muncípio:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"C.N.P.J:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Municipio:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ/CPF", "CF/DF", "Razão Social", "Logradouro", "Número", "Complemento", "Bairro", "Município", "UF", "CEP" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social :", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual - CCE :", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CGC:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município::", "UF:", "CEP:" }, ; {"CNPJ", "INSCRIÇÃO ESTADUAL", "RAZÃO SOCIAL/NOME", "LOGRADOURO", "NÚMERO", "COMPLEMENTO", "BAIRRO", "MUNICÍPIO", "UF", "CEP" }, ; {"CPF/CNPJ:", "Inscrição estadual:", "Razão social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município/UF:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Nome Empresarial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"C.P.F/C.N.P.J:", "Inscrição Estadual:", "Razão Social:", "Endereço:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ", "CAD ICMS", "Razão Social", "Logradouro", "Número", "Complemento", "Bairro", "Município", "UF", "CEP" }, ; {"CPF/CNPJ:", "Inscrição Estadual:", "Nome/Razão Estadual:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CGC:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:" }, ; {"CNPJ:", "Inscrição Estadual:", "Razão Social:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "Telefone:", "Atividade Econômica:", "Situação Cadastral Vigente:" }, ; // SAO PAULO {"CNPJ/CPF:", "Inscrição Estadual:", "RazãoSocial:", "Logradouro:", "Número:", "Complemento:", "Bairro:", "Município:", "UF:", "CEP:", "Telefone:" } } DATA cRetorno INIT "" DATA lDownload INIT .F. DATA lError INIT .F. DATA cError INIT "" DATA cUF INIT "" DATA nUF INIT 26 DATA nTimeOut INIT 240 // 4 minutos METHOD New() CONSTRUCTOR METHOD Consulta( lConsulta ) METHOD DownloadComplete( oActived ) METHOD MontaSintegra() METHOD StripHTML( cHtml ) METHOD GroupBy( cStart, cEnd, cString, lTags, lBreak ) METHOD RemoveBlankLine( cTexto ) METHOD RemoveChar( cString, aChar ) METHOD Clear() INLINE DeleteUrlCacheEntry( ::aUrls[ ::nUF ] ) ENDCLASS METHOD New() CLASS Sintegra RETURN Self METHOD Consulta( cCnpj ) CLASS Sintegra LOCAL oDlgSint, oActiveX LOCAL nTimer IF IsInternet() ::Clear() ELSE MsgStop("Não é Possível Encontrar os Dados no Sintegra !" +CRLF+CRLF+ ; "Aguarde a Conexão com a Internet.","Erro de Conexão") RETURN {} ENDIF // Aqui, vir carregado com a UF do cliente para nao entrar nos botoes. // ::cUF := CADCLIEN->UF IF EMPTY(::cUF) ::nUF := 0 DEFINE DIALOG oDlgUfs FROM 0,0 TO 255,500 PIXEL oDlgUfs:lHelpIcon := .F. @ 005,010 RADIO oUfs VAR ::nUF PROMPT ::aUfs[1] + "- ACre", ::aUfs[2] + "- Alagoas", ::aUfs[3] + "- Amazonas", ::aUfs[4] + "- Amapá", ::aUfs[5] + "- Bahia", ::aUfs[6] + "- Ceará", ::aUfs[7] + "- Distrito Federeal", ::aUfs[8] + "- Espírito Santo", ::aUfs[9] + "- Goiás" SIZE 70,10 PIXEL OF oDlgUfs @ 005,085 RADIOITEM ::aUfs[10] + "- Maranhão" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 015,085 RADIOITEM ::aUfs[11] + "- Minas Gerais" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 025,085 RADIOITEM ::aUfs[12] + "- Mato Grosso do Sul" RADIOMENU oUfs SIZE 72,10 PIXEL OF oDlgUfs @ 035,085 RADIOITEM ::aUfs[13] + "- Mato Grosso" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 045,085 RADIOITEM ::aUfs[14] + "- Pará" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 055,085 RADIOITEM ::aUfs[15] + "- Paraíba" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 065,085 RADIOITEM ::aUfs[16] + "- Pernambuco" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 075,085 RADIOITEM ::aUfs[17] + "- Piauí" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 085,085 RADIOITEM ::aUfs[18] + "- Paraná" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 005,160 RADIOITEM ::aUfs[19] + "- Rio de Janeiro" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 015,160 RADIOITEM ::aUfs[20] + "- Rio Grande do Norte" RADIOMENU oUfs SIZE 75,10 PIXEL OF oDlgUfs @ 025,160 RADIOITEM ::aUfs[21] + "- Rôndonia" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 035,160 RADIOITEM ::aUfs[22] + "- Roraima" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 045,160 RADIOITEM ::aUfs[23] + "- Rio Grande do Sul" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 055,160 RADIOITEM ::aUfs[24] + "- Santa Catarina" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 065,160 RADIOITEM ::aUfs[25] + "- Sergipe" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 075,160 RADIOITEM ::aUfs[26] + "- São Paulo" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 085,160 RADIOITEM ::aUfs[27] + "- Tocantins" RADIOMENU oUfs SIZE 70,10 PIXEL OF oDlgUfs @ 100,160 BUTTON oBtnUfs PROMPT "Selecionar" SIZE 50,20 ACTION oDlgUfs:End() DEFAULT PIXEL OF oDlgUfs ACTIVATE DIALOG oDlgUfs CENTERED IF ::nUF == 0 RETURN {} ENDIF ::cUF := ::aUfs[ ::nUF ] ENDIF DEFINE DIALOG oDlgSint FROM 0,0 TO 600,800 PIXEL oDlgSint:lHelpIcon := .F. ACTIVATE DIALOG oDlgSint NOWAIT CENTERED // nao espera oActiveX := TActivex():New( oDlgSint, "Shell.Explorer", 0, 0, 800, 600 ) oActiveX:bOnEvent := {|cEv| IF( cEv == "DownloadComplete", ::DownloadComplete( oActiveX ), NIL ) } oDlgSint:oClient = oActiveX nTimer := Seconds() oActiveX:Do( "Navigate2", ::aUrls[ ::nUF ] ) while oActiveX:Busy SysWait(0.2) ENDDO oActiveXdo := oActiveX:Document() IF ::cUF == "AC" oActiveXdo:All:Item("vNUMDOC",0):Value := cCnpj oActiveXdo:All:Item("cfield",0):Focus() ELSEIF ::cUF == "AL" oActiveXdo:All:Item("txt_CNPJ",0):Value := cCnpj oActiveXdo:All:Item("Submit",0):Focus() oActiveXdo:All:Item("Submit",0):Click() ELSEIF ::cUF == "AM" oActiveXdo:All:Item("cgc",0):Value := cCnpJ oActiveXdo:All:Item("captcha_code",0):Focus() ELSEIF ::cUF == "AP" oActiveXdo:All:Item("j_id4:tipo",0):Value := "CNPJ" oActiveXdo:All:Item("j_id4:doc",0):Value := cCnpj oActiveXdo:All:Item("j_id4:txtcaptcha",0):Focus() ELSEIF ::cUF == "BA" oActiveXdo:All:Item("txt_CNPJ",0):Value := cCnpj oActiveXdo:All:Item("Submit",0):Focus() oActiveXdo:All:Item("Submit",0):Click() ELSEIF ::cUF == "CE" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("B1",0):Focus() oActiveXdo:All:Item("B1",0):Click() ELSEIF ::cUF == "DF" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("B1",0):Focus() oActiveXdo:All:Item("B1",0):Click() ELSEIF ::cUF == "ES" oActiveXdo:All:Item("num_cnpj",0):Value := cCnpj oActiveXdo:All:Item("botao",0):Focus() oActiveXdo:All:Item("botao",0):Click() ELSEIF ::cUF == "GO" oActiveXdo:All:Item("tCNPJ",0):Value := cCnpj oActiveXdo:All:Item("btCGC",0):Focus() ELSEIF ::cUF == "MA" // não sei como pegar os campos e o botão ELSEIF ::cUF == "MG" oActiveXdo:All:Item("identificadorCmbOpcao",0):Value := "Número do CNPJ" oActiveXdo:All:Item("filtro",0):Value := cCnpj oActiveXdo:All:Item("recaptcha_response_field",0):Focus() ELSEIF ::cUF == "MS" oActiveXdo:All:Item("CGC_CPF",0):Value := cCnpj oActiveXdo:All:Item("captchacode",0):Focus() ELSEIF ::cUF == "MT" oActiveXdo:All:Item("numero",0):Value := cCnpj oActiveXdo:All:Item("captchaDigitado",0):Focus() ELSEIF ::cUF == "PA" oActiveXdo:All:Item("CNPJ",0):Value := cCnpj oActiveXdo:All:Item("OP",0):Focus() oActiveXdo:All:Item("OP",0):Click() ELSEIF ::cUF == "PR" oActiveXdo:All:Item("data[Sintegra1][Cnpj]",0):Value := cCnpj oActiveXdo:All:Item("data[Sintegra1][CodImage]",0):Focus() ELSEIF ::cUF == "PB" // PB certificado de segurança mas é ir dando sim que funciona // não sei como pegar os campos e o botão ELSEIF ::cUF == "PE" // não sei como pegar os campos e o botão ELSEIF ::cUF == "PI" oActiveXdo:All:Item("txt_CNPJ",0):Value := cCnpj oActiveXdo:All:Item("Submit",0):Focus() oActiveXdo:All:Item("Submit",0):Click() ELSEIF ::cUF == "RJ" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("cod_img",0):Focus() ELSEIF ::cUF == "RN" oActiveXdo:All:Item("CGC",0):Value := cCnpj oActiveXdo:All:Item("B1",0):Focus() oActiveXdo:All:Item("B1",0):Click() ELSEIF ::cUF == "RS" oActiveXdo:All:Item("cgcmf",0):Value := cCnpj ELSEIF ::cUF == "RO" oActiveXdo:All:Item("NuDevedor",0):Value := cCnpj oActiveXdo:All:Item("recaptcha_response_field",0):Focus() ELSEIF ::cUF == "RR" oActiveXdo:All:Item("_CONINSESTG",0):Value := cCnpj oActiveXdo:All:Item("cfield",0):Focus() ELSEIF ::cUF == "SC" oActiveXdo:All:Item("txt_CPFCNPJ",0):Value := cCnpj oActiveXdo:All:Item("txtCodigoCaptcha",0):Focus() ELSEIF ::cUF == "SE" oActiveXdo:All:Item("cdCnpj",0):Value := cCnpj oActiveXdo:All:Item("dsImagem",0):Focus() ELSEIF ::cUF == "SP" oActiveXdo:All:Item("cnpj",0):Value := cCnpj oActiveXdo:All:Item("Key",0):Focus() ELSEIF ::cUF == "TO" // não sei como pegar os campos e o botão ENDIF while !::lDownload IF !IsWindowVisible( oDlgSint:hWnd ) ::lDownload := .T. ::lError := .T. ::cError := "Consulta Cancelada!" ELSEIF !IsInternet() ::lDownload := .T. ::lError := .T. ::cError := "Perda de Conexão com a Internet !" ELSEIF ( Seconds() - nTimer ) >= ::nTimeOut ::lDownload := .T. ::lError := .T. ::cError := "Tempo Limite Esgotado !" ENDIF SysRefresh() ENDDO // Se eu nao quero ver na Browse e sim na tela do Sintegra(2a. Tela). // Basta comentar abaixo -> //oDlgSint:End() // oDlgSint:End() SysRefresh() // para ver a segunda tela do sintegra - Alessandro. //então comente essas linhas: //oDlgSint:End() em consulta() //oActived:oWnd:Hide() //em DownloadComplete() //::lDownload := .T. em DownloadComplete() e passe para .F. IF ::lDownload .AND. !::lError RETURN ::MontaSintegra() ELSE // aqui comentar se vou ver na tela, nao preciso de mensagem // se tambem quero ver na listbox... senao, retirar. RETURN ::MontaSintegra() // MsgStop("Não Foi Possível Encontrar os Dados no Sintegra !" + CRLF + CRLF + ::cError,"Erro de Pesquisa") // ::Clear() ENDIF RETURN {} // Download do XML em .TXT METHOD DownloadComplete( oActived ) CLASS Sintegra LOCAL lRetVal := .F. // Localizacao da URL do site IF ::aUrlRet[ ::nUF ] $ ALLTRIM(oActived:LocationURL) while oActived:Busy SysWait(0.5) ENDDO IF ::aSeekUrl[ ::nUF,1 ] $ oActived:Document:Body:InnerHtml // criacao do .TXT Fez a Leitura do .XML // oActived:Document:Body:InnerHtml o que código fonte, isso se vc // der um botão direito do mouse no site aparece a mesma coisa. MemoWrit("DadosSite.TXT",oActived:Document:Body:InnerHtml) TRY ::cRetorno := oActived:Document:Body:InnerHtml CATCH oE ::lError := .T. ::cError := "Falha no Recebimento dos Dados !" END // se eu quero ver a 2a tela do sintegra em vez de browse... // oActived:oWnd:Hide() // basta comentar ::lDownload := .F. // era .T. // aqui passa a .F. // para ver a segunda tela do sintegra // então comente essas linhas // oDlgSint:End() em consulta() // oActived:oWnd:Hide() //em DownloadComplete() // ::lDownload := .T. em DownloadComplete() e passe para .F. // Alessandro ENDIF ELSEIF AT( "não+foi+encontrado", oActived:LocationURL ) > 0 ::cError := "O CNPJ não foi Encontrado na Base de Dados do Sintegra." ::lError := .T. ::lDownload := .T. ELSEIF AT( "incorreto", oActived:LocationURL ) > 0 ::cError := "O C.N.P.J. Não é Válido !" ::lError := .T. ::lDownload := .T. ENDIF RETURN NIL METHOD MontaSintegra() CLASS Sintegra LOCAL cLine, nLine, nTotal LOCAL aRetorno := {}, aRetDbf := {} LOCAL cTexto LOCAL nPos, nPo1 cSintegra := ::cRetorno IF AT( "<!--", cSintegra ) > 0 //Retira Comentários do html while ( nPos := AT( "<!--", cSintegra ) ) > 0 nPo1 := AT( "-->", cSintegra ) cTexto := SUBS( cSintegra, nPos, (nPo1-nPos) + 3 ) cSintegra := STRTRAN( cSintegra, cTexto, "" ) IF EMPTY(cTexto) EXIT ENDIF ENDDO ENDIF cSintegra := STRTRAN( cSintegra, "INFORMAÇÕES COMPLEMENTARES" ) cSintegra := STRTRAN( cSintegra, "ENDEREÇO DA EMPRESA" ) cSintegra := ::StripHTML( cSintegra ) IF ::cUF == "MS" MemoWrit("Sintegra.TXT",cSintegra) oText := TTxtFile():New( "Sintegra.TXT" ) FOR nLine := 1 TO LEN(::aDados[ ::nUF ]) FOR nCtr:=1 TO oText:RecCount() IF ::aDados[ ::nUF,nLine ] $ oText:cLine cLine := SUBS( oText:cLine, AT( ::aDados[ ::nUF,nLine ], oText:cLine ) + LEN(::aDados[ ::nUF,nLine ]) ) AADD( aRetorno, { nLine, ALLTRIM( ::RemoveChar( cLine, {[.],[-],[/],[:]} ) ) } ) ENDIF oText:Skip() NEXT oText:GoTop() NEXT oText:Close() FErase( "Sintegra.TXT" ) ELSE cSintegra := ::GroupBy( ::aSeekUrl[::nUF,1], ::aSeekUrl[::nUF,2], cSintegra, .F., .F. ) cSintegra := ::RemoveBlankLine( cSintegra ) nTotal := MLCount( cSintegra ) IF ::cUF == "TO" AADD( aRetorno, { 6, " " } ) ENDIF FOR nLine := 1 TO nTotal cLine := ALLTRIM(MEMOLINE(cSintegra,,nLine)) IF ::cUF == "GO" IF ( nFound := ASCAN( ::aDados[ ::nUF ], HB_ATokens( cLine, ":" )[1] ) ) # 0 AADD( aRetorno, { nFound, ALLTRIM( ::RemoveChar( HB_ATokens( cLine, ":" )[2], {[.],[-],[/],[:]} ) ) } ) ENDIF ELSE IF ( nFound := ASCAN(::aDados[ ::nUF ],cLine) ) # 0 IF ::cUF == "MT" IF ::aDados[ ::nUF,nFound ] == "Município/UF:" cTexto := ALLTRIM(MEMOLINE(cSintegra,,++nLine)) cTxtUF := ALLTRIM(HB_ATokens( cTexto, "-" )[2]) AADD( aRetorno, { 9, cTxtUF } ) cTexto := HB_ATokens( cTexto, "-" )[1] ELSE cTexto := ALLTRIM(MEMOLINE(cSintegra,,++nLine)) ENDIF ELSE cTexto := ALLTRIM(MEMOLINE(cSintegra,,++nLine)) ENDIF //Caso não haja a informação IF ASCAN( ::aDados[ ::nUF ],cTexto) # 0 cTexto := " " --nLine ENDIF //para o Caso do RJ IF cTexto == "Data da Concessão da Inscrição:" cTexto := " " --nLine ENDIF IF ASCAN(aRetorno, {|x| x[2] == cTexto} ) == 0 .OR. ASCAN(aRetorno, {|x| x[1] == nFound} ) == 0 AADD( aRetorno, { nFound, ::RemoveChar(cTexto,{[.],[-],[/],[:]}) } ) ENDIF ENDIF ENDIF NEXT nLine ENDIF aRetorno := ASort( aRetorno,,,{|x,y| x[1] < y[1]} ) FOR nCtr:=1 TO LEN(aRetorno) AADD( aRetDbf, aRetorno[nCtr,2] ) NEXT xBrowse( aRetDbf, "Dados da Consutla do Sinterga") RETURN aRetDbf METHOD StripHTML( cHtml ) CLASS Sintegra LOCAL cString := ::RemoveChar( cHTML, {"&","amp;","nbsp;",'<!-- ',' -->','<--','-->','||','\/','<!--%','%-->',[/\],'end if %'} ) LOCAL aMatch := HB_RegExAll( "\<[^\>]*\>", cString ) AEVAL( aMatch, {|a| cString := STRTRAN( cString, a[1] ) } ) RETURN cString METHOD GroupBy( cStart, cEnd, cString, lTags, lBreak ) CLASS Sintegra LOCAL nBegin, nEnd LOCAL cFound := "", nAT #ifndef __XHARBOUR__ // Para Harbour cString := OemToAnsi(cString) #endif DEFAULT lTags:=.F., lBreak:=.F. nBegin := AT( cStart, cString ) IF nBegin == 0 ; RETURN cFound ; ENDIF IF !lTags ; nBegin += LEN(cStart) ; ENDIF IF cEnd # NIL nEnd := AT( cEnd, cString ) IF nEnd == 0 RETURN cFound ELSE nEnd := nEnd - nBegin ENDIF IF lTags ; nEnd += LEN(cEnd) ; ENDIF ELSE IF lBreak nAt := AT( CRLF, SUBS( cString, nBegin, LEN(cString) ) ) IF nAt > 0 nEnd := nAt - 1 If nEnd < LEN(cString) ; nEnd := LEN(cString)+1 ; ENDIF ELSE nEnd := LEN(cString) ENDIF ELSE nEnd := LEN(cString) ENDIF ENDIF cFound := SUBS( cString, nBegin, nEnd ) IF lBreak IF lTags cFound:=StrTran(cFound,CRLF) ELSE IF cEnd # NIL nAt := At(CRLF,cFound) IF nAt > 0 cFound := LEFT(cFound,nAT) ENDIF ENDIF ENDIF ENDIF RETURN cFound METHOD RemoveBlankLine( cTexto ) CLASS Sintegra LOCAL cTextoNew := "" LOCAL nLines, cLine, nNum nLines := MLCount( cTexto, 400 ) FOR nNum := 0 TO nLines cLine := ALLTRIM(MEMOLINE( cTexto, 400, nNum )) IF !EMPTY(cLine) IF cLine == "function ocultarExibir(idDaTabela)" nNum += 14 ; LOOP ELSEIF cLine == 'if isnull (rsCadastro("des_bairro_distrito")) then' nNum += 3 ; LOOP ENDIF IF cLine # "Ativo" .AND. cLine # "Baixado" .AND. cLine # "Inativo" cTextoNew += cLine + IF( nNum < nLines, CRLF, "" ) ENDIF ENDIF NEXT nNum RETURN cTextoNew METHOD RemoveChar( cString, aChar ) CLASS Sintegra AEVAL( aChar, {|cChar| cString := STRTRAN( cString, cChar ) } ) RETURN cString DLL STATIC FUNCTION DeleteUrlCacheEntry(lpszUrlName AS STRING) AS LONG PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll" // FIM DO PROGRAMA Quote Link to comment Share on other sites More sharing options...
sygecom Posted January 9, 2014 Report Share Posted January 9, 2014 Alessandro, NÃO CONSEGUI FUNCIONAR NADA, nem São Paulo. MS, RJ, AC, dá erro de VALUE. Tá cheio de BUGs, tens outra versão funcionando? A idéia é boa, mas não está operacional. Obg, abs. http://pctoledo.com.br/forum/viewtopic.php?f=2&t=14722&sid=3d02ccfd50105d898bfc282412f462d8 Kapi, decide é bom ou não é ? rsrsrsrsrsrs Bricadeiras a parte, a ideia é muito boa, e pessoal está de parabéns por compartilhar com os colegas, BO em sistema todo mundo tem, vamos se ajudando e resolvendo.... Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 9, 2014 Report Share Posted January 9, 2014 http://pctoledo.com.br/forum/viewtopic.php?f=2&t=14722&sid=3d02ccfd50105d898bfc282412f462d8 Kapi, decide é bom ou não é ? rsrsrsrsrsrs Bricadeiras a parte, a ideia é muito boa, e pessoal está de parabéns por compartilhar com os colegas, BO em sistema todo mundo tem, vamos se ajudando e resolvendo.... Respondendo sua pergunta, enchi o S... do Alessandro via skype, fui dizendo o que eu queria fazer, e ele foi me dando as dicas com muita paciência(quem tem amigos, tem tudo.), Tenho imenso prazer de poder dizer que o Alessandro é uma pessoa Very Good, e esta última versão que eu postei, tá funcionando perfeita aqui. Estou terminando de implantá-la. Fiz alguma correções, e está rodando de boa, se alguém tiver dúvidas, pergunte ao Alessandro... kkkkkkkkkkkkk Brincadeira, #tamojunto Obg. Abs. Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted September 1, 2014 Report Share Posted September 1, 2014 Colegas ao tentar usar a classe acima meu sistema aborta sem nenhuma mensagem de erro na linha abaixo oActiveX := TActivex():New( oDlgSint, "Shell.Explorer", 0, 0, 800, 600 ) será que alguém já passou por isto, estou usando fwh1104 e xharbor 6717 Obrigado Luiz Fernando Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 1, 2014 Report Share Posted September 1, 2014 Acho que sua versão não suporta. em FWH13.06 funciona perfectamente. Na versão atual, muita coisa foi atualizada, inclusive o xHarbour. abs. Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted September 1, 2014 Report Share Posted September 1, 2014 Acho que sua versão não suporta. em FWH13.06 funciona perfectamente. Na versão atual, muita coisa foi atualizada, inclusive o xHarbour. abs. Kapiaba eu usava esta classe com a versao 912 xhb 6406, sempre usei TActivex() para varias outras finalidades, mais não entendo pq com o 1104 e xhb 6717 não da certo... Luiz Fernando Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 1, 2014 Report Share Posted September 1, 2014 Fique on line no skype. Quote Link to comment Share on other sites More sharing options...
aferra Posted September 1, 2014 Report Share Posted September 1, 2014 Olá, não tem alguma classe modificada que vc usa? Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted September 1, 2014 Report Share Posted September 1, 2014 Olá, não tem alguma classe modificada que vc usa? Ola Alessandro eu até tinha uma que usava alterada pelo Vailton e o Kleyber, mais tirei ela do sistema , inclusive mudei todo meu projeto pois não usava o xharbour original da versão do fivewin estava usando 0 6406 ao invés do 6717, para ver se resolvia o problema citado acima, mais mesmo assim não deu certo... Obrigado Luiz Fernando Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.