Jump to content
Fivewin Brasil

Consulta SINTEGRA pelo CNPJ


HERGON

Recommended Posts

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 4 weeks later...
#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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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 )
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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:" } }


Link to comment
Share on other sites

// Link:


// 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

Link to comment
Share on other sites

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....

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 7 months later...

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...