oribeiro Posted February 14, 2018 Report Share Posted February 14, 2018 Pessoal, Na rotina do sintegra, o programa mostra todos os dados relacionado ao CNPJ na tela mas não está mais fazendo o download dos dados na variável ::cRetorno. Alguém sabe como corrigir? Parece que o erro está na instrução ((( ::cRetorno := oAct:Document:Body:InnerHtml ))) Method Consulta() Class Sintegra Local oDlg, oAct Local nTimer If IsInternet() == .F. MsgStop("Sem conexão com a internet !") Return {} Else ::Clear() EndIf ::cRetorno := "" ::cError := "" ::lDownload := .F. ::lError := .F. Define Dialog oDlg From 0,0 To 600,900 Pixel Title "[ ("+::cUF+") SINTEGRA - Consultando ] -> Você pode colar o <CNPJ> no campo com o botão direito do mouse." // Style WS_CAPTION oDlg:lHelpIcon:=.F. Activate Dialog oDlg NoWait Centered oAct:=TActivex():New(oDlg,"Shell.Explorer",00,0,900,600) oAct:bOnEvent := {|cEv|If(cEv=="DownloadComplete",::DownloadComplete( oAct ),Nil)} oAct:Silent := .T. oAct:Navigate( ::cPost ) oAct:SetFocus() nTimer:=Seconds() While !::lDownload If !IsWindowVisible( oDlg:hWnd ) ::lDownload := .T. ::lError := .T. ::cError := "Consulta Cancelada !" ElseIf !IsInternet() ::lDownload := .T. ::lError := .T. ::cError := "Perda de conexao com a internet !" ElseIf( Seconds()-nTimer ) >= ::nTimeOut ::lDownload := .T. ::lError := .T. ::cError := "Tempo limite esgotado !" EndIf SysRefresh() End Try ::cRetorno := oAct:Document:Body:InnerHtml Catch oE ::lError := .T. ::cError := "Falha no recebimento dos dados!" End oDlg:End() SysRefresh() If ::lDownload .and. !::lError Return MontaSintegra(::cRetorno, ::aGru1, ::aGru2, ::cUF) Else MsgStop(::cError,"Atenção") EndIf Return {} Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 14, 2018 Report Share Posted February 14, 2018 Comigo está quebrando aqui: ELSEIF ::cUF == "SP" oActiveXdo:All:Item("cnpj",0):Value := cCnpj // não está aceitando... ??? oActiveXdo:All:Item("Key",0):Focus() Quote Link to comment Share on other sites More sharing options...
oribeiro Posted February 14, 2018 Author Report Share Posted February 14, 2018 Me poste o seu método Consulta(), por favor. Quero ver se há outra forma de fazer o download dos dados que aparecem no navegador para a variável cRetorno, (diferente de ::cRetorno := oAct:Document:Body:InnerHtml), daí eu tratarei essa variável na função MontaSintegra. Obrigado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 14, 2018 Report Share Posted February 14, 2018 METHOD Consulta( cCnpj, CUFFED ) CLASS Sintegra // modificado: 10/04/2015 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. ::nUF := ASCAN( ::aUfs, {|x| x == CUFFED } ) ::cUF := ::aUfs[ ::nUF ] 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 ::nUF := ASCAN( ::aUfs, {|x| x == CUFFED } ) ::cUF := ::aUfs[ ::nUF ] ENDIF // MOSTRA A TELA DO SINTEGRA DO SITE // alt larg DEFINE DIALOG oDlgSint FROM 0,0 TO 650, 850 PIXEL ; // 600 x 800 // era COLORS CLR_BLACK, CLR_WHITE oDlgSint:lHelpIcon := .F. ACTIVATE DIALOG oDlgSint NOWAIT CENTERED // nao espera oActiveX := TActivex():New( oDlgSint, "Shell.Explorer", 0, 0, 850, 650 ) oActivex:Silent := .T. // Mudei em: 13/01/2016 - Erro de Script na pagina. oActivex:SetFocus() oActiveX:bOnEvent := {|cEv| IF( cEv == "DownloadComplete", ::DownloadComplete( oActiveX ), NIL ) } oDlgSint:oClient = oActiveX nTimer := Seconds() // Desligado, usando comando novo do FWHX13.06 // oActiveX:Do( "Navigate2", ::aUrls[ ::nUF ] ) // Versao: Alessandro oActiveX:Navigate( ::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:txtcaptcha",0):Focus() */ oActiveXdo:All:Item("CADf_EmitirFic_CmpHumanoInst",0):Value := cCnpj 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" // MODIFICADO EM: 17/05/2016 - Joao Mudou em Minas. oActiveXdo:All:Item("identificadorCmbOpcao",0):Value := 2 //"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() // oActiveXdo:All:Item("recaptcha_response_field",0):Focus() // Mudei em: 28/09/2015 Joao oActiveXdo:All:Item("CGC",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" // Modificado em: 29/09/2015 Joao oActiveXdo:All:Item("cgcmf",0):Value := cCnpj oActiveX:Silent := .T. 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" // Mudow em: 10/04/2015 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" // Sao Paulo parou... Parou porque??? 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. // Alessandro IF ::lDownload .AND. !::lError RETURN ::MontaSintegra() ELSE // VOLTANDO DO SITE DO SINTEGRA NO BOTAO [X] // MsgStop("Não Foi Possível Encontrar os Dados no Sintegra !" + CRLF + CRLF + ::cError,"Erro de Pesquisa") MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ; OemToAnsi( "CONSULTA DO SINTEGRA FINALIZADA." )+CRLF+ ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "CONSULTA DO SINTEGRA FINALIZADA." ) ) oDlgSint:End() ::Clear() ENDIF RETURN {} Quote Link to comment Share on other sites More sharing options...
aferra Posted February 15, 2018 Report Share Posted February 15, 2018 Boa noite. pelo que entendi. mudaram para o cadesp, então tem que mudar os retornos da pagina da variável ::aUrlRet, amanhã eu dou uma olhada. PS: Kapi comente essa duas linhas mudaram os gets da tela ai tem que descobrir novamente ELSEIF ::cUF == "SP" *oActiveXdo:All:Item("cnpj",0):Value := cCnpjCpf *oActiveXdo:All:Item("Key",0):Focus() Quote Link to comment Share on other sites More sharing options...
oribeiro Posted February 16, 2018 Author Report Share Posted February 16, 2018 Meus amigos, eu usava essa função para trazer os dados cadastrais para dentro do meu sistema através do CNPJ mas infelizmente não consigo mais. Tentei de tudo. A minha versão dessa classe é antiga e não usa essas instruções [ :All:Item( ] mencinada por vocês. Vocês podem postar a versão mais nova dessa classe Sintegra para eu trabalhar em cima dela? Estão conseguindo trazer os dados cadastrais para o sistema? Obrigado. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 14, 2018 Report Share Posted March 14, 2018 Alguém está conseguindo pegar os dados do sintegra de São Paulo? Abs. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 14, 2018 Author Report Share Posted March 14, 2018 Depois que eles mudaram para httpS eu não consegui mais importar os dados do sintegra para o meu cadastro de clientes. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 14, 2018 Report Share Posted March 14, 2018 Onde mudou para https? http://www.sintegra.gov.br/ Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 15, 2018 Author Report Share Posted March 15, 2018 João, O site que acesso é: http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/consultaSintegraServlet Mas não consigo mais pegar os dados de lá porque ele muda para (httpS), assim: https://www.cadesp.fazenda.sp.gov.br/(S(edf0jgrankeeph55lttnft45))/Pages/Cadastro/Consultas/ConsultaPublica/ConsultaPublica.aspx Eu vejo os dados na tela mas não consigo fazer o download automático das informações para dentro do meu cadastro. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 15, 2018 Report Share Posted March 15, 2018 Consigo abrir em https, mas não consigo pegar os dados, pois mudaram alguma coisa no código ASP, e eu não entendo pohha nenhuma de ASP. Veja imagem aqui: http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=19055 Abs Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 15, 2018 Author Report Share Posted March 15, 2018 Não entendi nada como consultar via WebService usando o certificado digital. É muito complicado! kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 15, 2018 Report Share Posted March 15, 2018 Personas, alguém consegue traduzir o que o mister José Quintas, quis dizer nesse tópico, falou, falou e não disse nada, sinceramente tenho dificuldades em entendê-lo. Ele disse que se pode pegar os dados do cliente aqui com o certificado digital. mas os fontes dele estão incompletos ou eu não entendo bulhufas do que ele fala. kkkkkkkkkkkkkkkkkk. http://www.pctoledo.com.br/forum/viewtopic.php?f=54&t=17004 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 15, 2018 Report Share Posted March 15, 2018 Esqueçam, ele achou que eu usava HBNFE, não sei, nunca ouvi falar. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 16, 2018 Author Report Share Posted March 16, 2018 Fiz uma manobra ontem no método Consulta() da classe sintegra e está funcionando para São Paulo. //----------------------------------------------------------------------------------------------------------------------// Method Consulta() Class Sintegra Local oDlg, oAct Local nTimer Local aRetorno, xIE, xCGC, xNome, xEndereco, xNumero, xCompl, xCidade, xCEP, xEstado Private cSintegra := "" If IsInternet() == .F. MsgStop("Sem conexão com a internet !") Return {} Else ::Clear() EndIf ::cRetorno := "" ::cError := "" ::lDownload := .F. ::lError := .F. Define Dialog oDlg From 0,0 To 600,900 Pixel Title "[ ("+::cUF+") SINTEGRA - Consultando ] -> Você pode colar o <CNPJ> no campo com o botão direito do mouse." // Style WS_CAPTION oDlg:lHelpIcon:=.F. Activate Dialog oDlg NoWait Centered oAct:=TActivex():New(oDlg,"Shell.Explorer",00,0,900,600) oAct:bOnEvent := {|cEv|If(cEv=="DownloadComplete",::DownloadComplete( oAct ),Nil)} oAct:Silent := .T. oAct:Navigate( ::cPost ) oAct:SetFocus() nTimer:=Seconds() While !::lDownload If !IsWindowVisible( oDlg:hWnd ) ::lDownload := .T. ::lError := .T. ::cError := "Consulta Cancelada !" ElseIf !IsInternet() ::lDownload := .T. ::lError := .T. ::cError := "Perda de conexao com a internet !" ElseIf( Seconds()-nTimer ) >= ::nTimeOut ::lDownload := .T. ::lError := .T. ::cError := "Tempo limite esgotado !" EndIf SysRefresh() End Try ::cRetorno := oAct:Document:Body:InnerHtml Catch oE ::lError := .T. ::cError := "Falha no recebimento dos dados!" End oDlg:End() SysRefresh() If ::lDownload .and. !::lError Return MontaSintegra(::cRetorno, ::aGru1, ::aGru2, ::cUF) Elseif "CNPJ:"$cSintegra // OASYS 15/03/2018 aRetorno := {} cSintegra := Subst(cSintegra, At("IE:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xIE := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CNPJ:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCGC := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Empresarial:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xAbrev := xNome := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Logradouro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xEndereco := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Nº:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xNumero := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CEP:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCEP := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Bairro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xCompl := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Município:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCidade := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("UF:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xEstado := Subst(cSintegra, 1, At("<",cSintegra)-1) AAdd(aRetorno, StrNum(xCGC,.F.)) // 1 cnpj AAdd(aRetorno, xIE ) // 2 ie AAdd(aRetorno, xNome ) // 3 razao social AAdd(aRetorno, "" ) // 4 tipo logradouro AAdd(aRetorno, xEndereco ) // 5 logradouro AAdd(aRetorno, xNumero ) // 6 numero AAdd(aRetorno, xCompl ) // 7 bairro AAdd(aRetorno, "" ) // 8 tipo bairro AAdd(aRetorno, xCidade ) // 9 cidade AAdd(aRetorno, xEstado ) // 10 estado AAdd(aRetorno, StrNum(xCEP,.F.)) // 11 cep Return( aRetorno ) Else // MsgStop(::cError,"Atenção") EndIf Return {} Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 16, 2018 Report Share Posted March 16, 2018 Oscar, gentileza me enviar a sua classe SINTEGRA.PRG completa, pois não está igual a minha. Pode ser? Obg. abs. email: kapiabafwh@gmail.com ou kapiabafwh@yahoo.com Erros: Error: Unresolved external '_HB_FUN_MONTASINTEGRA' referenced from C:\PLENOCBX\SINTEGRA.OBJ Error: Unresolved external '_HB_FUN_STRNUM' referenced from C:\PLENOCBX\SINTEGRA.OBJ Error: Unable to perform link Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 16, 2018 Author Report Share Posted March 16, 2018 Segue a classe funcionando. Tem apenas uma função que gera um número randômico de arquivo que você deve substituir. Veja aí. Uso-a assim: oSintegra := Sintegra():New( cEstado ) aRetorno := oSintegra:Consulta() If Len(aRetorno) > 0 If cEstado$"CE/ES/MA/PR/RJ/SP" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[3] xNome := aRetorno[3] xEndereco := Alltrim(Alltrim(aRetorno[4])+" "+Alltrim(aRetorno[5])+", "+Alltrim(aRetorno[6])) xCompl := Alltrim(Alltrim(aRetorno[8])+" "+Alltrim(aRetorno[7])) xCidade := aRetorno[9] xEstado := aRetorno[10] xCEP := Subst(aRetorno[11],1,5)+"-"+Subst(aRetorno[11],6,3) ElseIf cEstado$"BA" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[4] xNome := aRetorno[4] xEndereco := Alltrim(aRetorno[5])+" "+Alltrim(aRetorno[6])+", "+Alltrim(aRetorno[7]) xCompl := Alltrim(Alltrim(aRetorno[9])+" "+Alltrim(aRetorno[8])) xCidade := aRetorno[11] xEstado := aRetorno[10] xCEP := Subst(aRetorno[12],1,5)+"-"+Subst(aRetorno[12],6,3) ElseIf cEstado$"MG" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[4] xNome := aRetorno[4] xEndereco := Alltrim(aRetorno[11])+", "+Alltrim(aRetorno[12])+" "+Alltrim(aRetorno[13]) xCompl := Alltrim(aRetorno[9]) xCidade := aRetorno[8] xEstado := aRetorno[3] xCEP := Subst(aRetorno[6],1,5)+"-"+Subst(aRetorno[6],6,3) ElseIf cEstado$"SC" xCGC := Subst(aRetorno[1],1,8)+"/"+Subst(aRetorno[1],9,4)+"-"+Subst(aRetorno[1],13,2) xIE := aRetorno[2] xAbrev := aRetorno[3] xNome := aRetorno[3] xEndereco := Alltrim(aRetorno[4])+" "+Alltrim(aRetorno[5])+", "+Alltrim(aRetorno[6]) xCompl := Alltrim(Alltrim(aRetorno[8])+" "+Alltrim(aRetorno[7])) xCidade := aRetorno[10] xEstado := aRetorno[9] xCEP := Subst(aRetorno[11],1,5)+"-"+Subst(aRetorno[11],6,3) EndIf CLASSE: // // INICIO: Rotina para consultar SINTEGRA // /********************************************************* * Função : Classe para abrir uma página da net e pegar os dados * Data : Por : Alain/Rancharia * Revisado em : 25/07/2011 - 08:50:27 Por : Vagner Wirts * Como Usar : oSintegra := Sintegra():New(cUF) - Onde cUF = estado de consulta ex.: "SP" aRetorno := oSintegra:Consulta() If Len(aRetorno) > 0 MsgInfo("Consulta Executada com sucesso !","AVISO DE ALERTA") MsgArray(aRetorno) EndIf Return Nil * Comentário : //"GO" - não consegui abrir na mesma dialog //"MA" - Pega somente pela inscrição, ver como tratar //"MG" - Pega Exige um terceiro link, ver como tratar //"PA" - Pega somente pela inscrição, ver como tratar //"RN" - Pega somente pela inscrição, ver como tratar Ainda estão faltando alguns estados, pois não possuo informações para poder pegar o código fonte das páginas. Quanto aos estados acima, estarei pesquisando para ver como pegar, mas os estados de MA,PA e RN, parecem fácil de recuperar, apesar de possuir um 3º ítem. */ //----------------------------------------------------------------------------------------------------------------------// Static Function GetSintegra(cUF); Retu( Sintegra():New(cUF)) //----------------------------------------------------------------------------------------------------------------------// Static Function PegaSintegra(cHtml) ; Retu (MontaSintegra(cHtml)) //----------------------------------------------------------------------------------------------------------------------// Class Sintegra Data nTimeOut Init 240 // 4 minutos Data lDownload, lError, cError Data cRetorno Data aGru1,aGru2 Data cUrl,cPost,cView Data cUF Method New(cUF) Constructor Method Consulta( cCGCorIE ) Method DownloadComplete( oAct ) Method Clear() INLINE DelUrlCache({::cPost,::cView}) EndClass //----------------------------------------------------------------------------------------------------------------------// Method New(cUF) Class Sintegra Local aUrls Default cUF := "SP" aUrls := PegaUrls(cUF) If Len(aUrls) == 0 MsgStop("Não pude iniciar o portal do Sintegra.","Estado "+cUF+" Inválido.") Retu(.T.) Endif ::cUrl := aUrls[1] ::cPost := ::cUrl+aUrls[2] ::cView := ::cUrl+aUrls[3] ::aGru1 := AClone(aUrls[4]) ::aGru2 := AClone(aUrls[5]) ::cUF := cUF Return Self //----------------------------------------------------------------------------------------------------------------------// Method Consulta() Class Sintegra Local oDlg, oAct Local nTimer Local aRetorno, xIE, xCGC, xNome, xEndereco, xNumero, xCompl, xCidade, xCEP, xEstado Private cSintegra := "" If IsInternet() == .F. MsgStop("Sem conexão com a internet !") Return {} Else ::Clear() EndIf ::cRetorno := "" ::cError := "" ::lDownload := .F. ::lError := .F. Define Dialog oDlg From 0,0 To 600,900 Pixel Title "[ ("+::cUF+") SINTEGRA - Consultando ] -> Você pode colar o <CNPJ> no campo com o botão direito do mouse." // Style WS_CAPTION oDlg:lHelpIcon:=.F. Activate Dialog oDlg NoWait Centered oAct:=TActivex():New(oDlg,"Shell.Explorer",00,0,900,600) oAct:bOnEvent := {|cEv|If(cEv=="DownloadComplete",::DownloadComplete( oAct ),Nil)} oAct:Silent := .T. oAct:Navigate( ::cPost ) oAct:SetFocus() nTimer:=Seconds() While !::lDownload If !IsWindowVisible( oDlg:hWnd ) ::lDownload := .T. ::lError := .T. ::cError := "Consulta Cancelada !" ElseIf !IsInternet() ::lDownload := .T. ::lError := .T. ::cError := "Perda de conexao com a internet !" ElseIf( Seconds()-nTimer ) >= ::nTimeOut ::lDownload := .T. ::lError := .T. ::cError := "Tempo limite esgotado !" EndIf SysRefresh() End Try ::cRetorno := oAct:Document:Body:InnerHtml Catch oE ::lError := .T. ::cError := "Falha no recebimento dos dados!" End oDlg:End() SysRefresh() If ::lDownload .and. !::lError Return MontaSintegra(::cRetorno, ::aGru1, ::aGru2, ::cUF) Elseif "CNPJ:"$cSintegra // OASYS 15/03/2018 aRetorno := {} cSintegra := Subst(cSintegra, At("IE:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xIE := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CNPJ:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCGC := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Empresarial:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xAbrev := xNome := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Logradouro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xEndereco := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Nº:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xNumero := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("CEP:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCEP := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Bairro:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xCompl := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("Município:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At("left>",cSintegra)+5, Len(cSintegra)) xCidade := Subst(cSintegra, 1, At("<",cSintegra)-1) cSintegra := Subst(cSintegra, At("UF:", cSintegra), Len(cSintegra)) cSintegra := Subst(cSintegra, At(">",cSintegra)+1, Len(cSintegra)) xEstado := Subst(cSintegra, 1, At("<",cSintegra)-1) AAdd(aRetorno, StrNum(xCGC,.F.)) // 1 cnpj AAdd(aRetorno, xIE ) // 2 ie AAdd(aRetorno, xNome ) // 3 razao social AAdd(aRetorno, "" ) // 4 tipo logradouro AAdd(aRetorno, xEndereco ) // 5 logradouro AAdd(aRetorno, xNumero ) // 6 numero AAdd(aRetorno, xCompl ) // 7 bairro AAdd(aRetorno, "" ) // 8 tipo bairro AAdd(aRetorno, xCidade ) // 9 cidade AAdd(aRetorno, xEstado ) // 10 estado AAdd(aRetorno, StrNum(xCEP,.F.)) // 11 cep Return( aRetorno ) Else // MsgStop(::cError,"Atenção") EndIf Return {} //----------------------------------------------------------------------------------------------------------------------// Method DownloadComplete( oAct ) Class Sintegra Local cFile := oaNetName("_","TXT") // 'Sintegra.txt' Local cHTTP := oAct:LocationURL LoGFile(cFile, {cHTTP}) LoGFile(cFile, {::cView}) TRY LoGFile(cFile, { oAct:Document:Body:InnerHtml } ) ::cBody := oAct:Document:Body:InnerHtml Catch End If ( ::cView $ cHTTP ) .OR. ::cView == cHTTP If At( ::aGru1[1], oAct:Document:Body:InnerHtml) != 0 oAct:oWnd:Hide() ::lDownload := .T. Endif ElseIf At( "não+foi+encontrado", cHTTP ) > 0 ::cError := "O CNPJ não foi encontrado na base do Sintegra." ::lError := .T. ::lDownload := .T. ElseIf At( "incorreto", cHTTP ) > 0 ::cError := "O CNPJ não é valido !" ::lError := .T. ::lDownload := .T. EndIf cSintegra := MemoRead( cFile ) FErase( cFile ) Return Nil //----------------------------------------------------------------------------------------------------------------------// Function MontaSintegra(cSintegra ,aGru1, aGru2, cUf) Local cFile := oaNetName("_","TXT") // 'Sintegra.txt' Local cLine, nLine, nTotal Local aReto := {} Local cTexto Local nPos,nPo1 Local nPegou:=0 Default cUF := "" If ValType(cSintegra)=="U" Return Nil Endif While (nPos := At("<!--%",cSintegra)) > 0 nPo1 := At("%-->",cSintegra) cTexto := SubStr(cSintegra,nPos,(nPo1-nPos)+iif( cUF$"BA" , 4, 3)) cSintegra := StrTran(cSintegra,cTexto,"") Enddo cSintegra := StrTran(cSintegra,"INFORMAÇÕES COMPLEMENTARES") cSintegra := StrTran(cSintegra,"ENDEREÇO DA EMPRESA") cSintegra := StripHTML( cSintegra ) cSintegra := GroupBy(aGru1[1],aGru1[2],cSintegra,.F.,.F.) cSintegra := RemoveBlankLineNfe( cSintegra ) nTotal := MLCount( cSintegra) MemoWrit( cFile, cSintegra ) For nLine := 1 To nTotal cLine := Alltrim(MemoLine(cSintegra,,nLine)) If AsCan(aGru2,cLine) != 0 cTexto := Alltrim(MemoLine(cSintegra,,++nLine)) If AsCan(aGru2,cTexto) != 0 //Caso não haja a informação cTexto := " " --nLine Endif If cTexto == "Data da Concessão da Inscrição:" //para o Caso do RJ cTexto := " " --nLine Endif If Left(cLine,10) == "Logradouro" //No Logradouro separa o tipo do endereco nPos := At(" ",cTexto) cNew := AllTrim(Left(cTexto,nPos)) AaDd(aReto,cNew) cTexto := AlLTrim(Right(cTexto,Len(cTexto)-nPos)) Endif AaDd(aReto,RemoveChar(cTexto,{[.],[-],[/],[:]})) Endif Next nLine FErase( cFile ) Retu(aReto) //----------------------------------------------------------------------------------------------------------------------// Static Function StripHTML( cHtml ) Local cString:= RemoveChar( cHTML, {"&","amp;","nbsp;",'<!-- ',' -->','<--','-->','||','\/','<!--%','%-->',[/\]} ) Local aMatch := HB_RegExAll("\<[^\>]*\>", cString) Aeval(aMatch,{|a|cString:=StrTran(cString,a[1])} ) Return cString //----------------------------------------------------------------------------------------------------------------------// Static Function DelUrlCache( aUrl ) Return AEval( aUrl, {|nX,nNum| DeleteUrlCacheEntry( aUrl[nNum] )} ) //----------------------------------------------------------------------------------------------------------------------// Static Function GroupBy( cStart, cEnd, cString, lTags, lBreak ) Local nBegin, nEnd Local cFound, nAT Default lTags:=.F., lBreak:=.F. nBegin := At( cStart, cString ) If(nBegin == 0 ) ; Return "" ; EndIf If(lTags == .F.) ; nBegin += Len(cStart) ; EndIf If( cEnd != Nil ) nEnd := At( cEnd, cString) // nEnd := At( cEnd, cString, nBegin ) -> tirei porque no Harbour não tem esse terceiro parâmetro If nEnd == 0 Return "" Else nEnd := nEnd - nBegin EndIf If( lTags ) nEnd += Len( cEnd ) EndIf Else If lBreak nAt := At(CRLF,Substr(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 := Substr( 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 //----------------------------------------------------------------------------------------------------------------------// Static Function RemoveBlankLineNfe( cTexto ) 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 EndIf if cLine<>"Ativo".and.cLine<>"Baixado".and.cLine<>"Inativo" cTextoNew += cLine + If (nNum<nLines,CRLF,"") endif EndIf Next nNum Return cTextoNew //----------------------------------------------------------------------------------------------------------------------// Static Function RemoveChar(cString,aChar) Aeval(aChar,{|cChar|cString:=StrTran(cString,cChar)}) Return(cString) //----------------------------------------------------------------------------------------------------------------------// Static Func PegaUrls(cUF) // Nem todos os campos do html são iguais então foi colocado em forma de array para que você possa identificá-los Local aRet := {} If cUF == "AC" // http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon aRet := {"http://sefaznet.ac.gov.br/sefazonline/servlet/hpfsincon",; "",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "AL" // http://www.sefaz.al.gov.br/asp/sintegra/sintegra.asp?estado=AL aRet := {"http://www.sefaz.al.gov.br/asp/sintegra/",; "sintegra.asp?estado=AL",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "AM" // http://www.sefaz.am.gov.br/sintegra/sintegra0.asp aRet := {"http://www.sefaz.am.gov.br/sintegra/",; "sintegra0.asp",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "AP" // http://www.sintegra.ap.gov.br/ aRet := {"http://www.sintegra.ap.gov.br/",; "",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "BA" // (OK)http://www.sefaz.ba.gov.br/Sintegra/sintegra.asp?estado=BA aRet := {"http://www.sefaz.ba.gov.br/Sintegra/",; "sintegra.asp?estado=BA/",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {,; "Data da Consulta:",; "Número da Consulta:",; "CNPJ:",; "Inscrição Estadual:",; "UF:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Endereço Eletrônico:",; "Telefone:",; "Atividade Econômica:",; "Data da Inscrição Estadual:",; "Usuário SEPD :",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Condição:",; "Regime de Apuração de ICMS:"; }; } ElseIf cUF == "CE" // (OK) http://www.sefaz.ce.gov.br/Sintegra/Sintegra.Asp?estado=CE aRet := {"http://www.sefaz.ce.gov.br/content/aplicacao/internet/servicos_online/sintegra/",; "sintegra.asp?estado=ce",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "RazãoSocial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "CNAE Fiscal Primário:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Recolhimento:" ; } ; } ElseIf cUF == "DF" // http://www.fazenda.df.gov.br/area.cfm?id_area=110 aRet := {"http://www.fazenda.df.gov.br/",; "area.cfm?id_area=110",; "result.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social :",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "ES" // (OK) http://www.sintegra.es.gov.br/ aRet := {"http://www.sintegra.es.gov.br/",; "",; "resultado.php",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social :",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "FN" ElseIf cUF == "GO" // http://www.sefaz.go.gov.br/sintegra/sintegra.asp aRet := {"http://www.sefaz.go.gov.br/sintegra/",; "sintegra.asp",; "consultar.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados em"},; {"CGC/CNPJ:",; "Inscrição Estadual - CCE :",; "Nome / Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data da Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "MA" // (OK) http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/consultaSintegraFiltro.jsf aRet := {"http://sistemas.sefaz.ma.gov.br/sintegra/jsp/consultaSintegra/",; "consultaSintegraFiltro.jsf",; "",; {"IDENTIFICAÇÃO","Os dados acima estão baseados em"},; {"CGC:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "CNAE Principal:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "MG" // (OK) http://consultasintegra.fazenda.mg.gov.br/ aRet := {"http://consultasintegra.fazenda.mg.gov.br/sintegra/",; "",; "ctrl/SINTEGRA/SINTEGRA/CONSULTA_707",; {"Dados Principais",NIL},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "CNAE-F Principal:",; "Situação Cadastral Atual:",; "Data da Inscrição Estadual:",; "Regime de Apuração de ICMS:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "MS" aRet := {"http://www1.sefaz.ms.gov.br/cadastro/",; "CadastroMsCCI.asp",; "ResultadoCCI.asp?INSCRICAO",; {"SECRETARIA DE ESTADO DE FAZENDA",NIL},; {"CNPJ",; "INSCRIÇÃO ESTADUAL",; "RAZÃO SOCIAL/NOME",; "LOGRADOURO",; "NÚMERO",; "COMPLEMENTO",; "BAIRRO",; "MUNICÍPIO",; "UF",; "CEP",; "Telefone:",; "DESCRIÇÃO DA ATIVIDADE ECONÔMICA",; "MOTIVO DA SITUAÇÃO CADASTRAL",; "DATA DA ÚLTIMA ATUALIZAÇÃO"; } ; } ElseIf cUF == "MT" // http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica aRet := {"http://www.sefaz.mt.gov.br/sid/consulta/infocadastral/consultar/publica",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "RazãoSocial/Nome:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "AtividadeEconômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "PA" // http://app.sefa.pa.gov.br/Sintegra/ aRet := {"https://app.sefa.pa.gov.br/Sintegra/",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PB" // https://saplic.receita.pb.gov.br/sintegra/SINf_ConsultaSintegra.jsp aRet := {"https://saplic.receita.pb.gov.br/sintegra/",; "SINf_ConsultaSintegra.jsp",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PE" // http://www.sintegra.sefaz.pe.gov.br/ aRet := {"http://www.sintegra.sefaz.pe.gov.br/",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PI" // http://web.sintegra.sefaz.pi.gov.br/consulta_empresa_pesquisa.asp // http://www.sintegra.sefaz.pi.gov.br/# aRet := {"http://web.sintegra.sefaz.pi.gov.br/",; "consulta_empresa_pesquisa.asp",; "consulta_empresa_pesquisa.asp",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "PR"// (OK) http://www.sintegra.fazenda.pr.gov.br/sintegra/ aRet := {"http://www.sintegra.fazenda.pr.gov.br/",; "sintegra/",; "sintegra/",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Nome Empresarial:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica Principal:",; "Situação Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "RJ" // (OK) http://www.fazenda.rj.gov.br/projetoCPS/consulta.jsp aRet := {"http://www.fazenda.rj.gov.br/projetoCPS/",; "consulta.jsp;jsessionid=RqRCTtJRZc6Tt0LhXgZnKh1jt8JQLx1Lk2J8HJ7xKqJpGvhQ0W4q!-1007206184",; "cpsServlet",; {"IDENTIFICAÇÃO","Data da Consulta:"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "RN" // http://www.set.rn.gov.br/uvt/consultacontribuinte.aspx aRet := {"http://www.set.rn.gov.br/uvt/",; "consultacontribuinte.aspx",; "",; {"IDENTIFICAÇÃO","Os dados acima são baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "CNAE Fiscal Primário:",; "Situação Cadastral Atual:",; "Data da Situação Cadastral:",; "Regime de Pagamento:" ; } ; } ElseIf cUF == "RO" // http://www.sefin.ro.gov.br/sint_consul.asp aRet := {"http://portal.intranet.sefin.ro.gov.br/PortalContribuinte/",; "parametropublica.jsp",; "consultapublica.jsp",; {"IDENTIFICA",Nil},; {"C.P.F/C.N.P.J:",; "Inscrição Estadual:",; "Razão Social:",; "Endereço:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Regime de Pagamento:",; "Situação Cadastral Vigente:",; "Data:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "RR" aRet := {"https://www.sefaz.rr.gov.br/sintegra/",; "servlet/hwsintco",; "servlet/hwsintpe?",; {".::IDENTIFICAÇÃO",nil},; {"CNPJ:",; "Inscrição Estadual",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Ativ. Enonômica:",; "Sit.Cad. Vigente:",; "Dta.Sit.Cadastral:"; } ; } ElseIf cUF == "RS" // http://sintegra.sefaz.rs.gov.br/sef_root/inf/Sintegra_Entrada.asp aRet := {"http://sintegra.sefaz.rs.gov.br/sef_root/inf/",; "Sintegra_Entrada.asp",; "SEF_sintegra_1.asp",; {"IDENTIFICAÇÃO","Os dados acima estão baseados em informações"},; {"CPF/CNPJ:",; "Inscrição Estadual:",; "Nome/Razão Estadual:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "UF:",; "Município:",; "CEP:",; "Telefone:",; "CNAE-Fiscal Principal:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "SC" // http://sistemas.sef.sc.gov.br/sintegra aRet := {"http://sistemas3.sef.sc.gov.br/sintegra/",; "consulta_empresa_pesquisa.aspx",; "consulta_empresa_pesquisa.aspx",; {"IDENTIFICAÇÃO","Os dados acima estão baseados em informações"},; {"CPF/CNPJ:",; "Inscrição Estadual:",; "Nome/Razão Estadual:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "CNAE-Fiscal Principal:",; "Situação Cadastral Atual:",; "Data desta Situação Cadastral:",; "Regime de Apuração de ICMS:" ; } ; } ElseIf cUF == "SE" // https://security.sefaz.se.gov.br/SIC/sintegra/index.jsp aRet := {"https://security.sefaz.se.gov.br/SIC/sintegra/",; "index.jsp",; "",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "SP" // (OK) http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/consultaSintegraServlet aRet := {"http://pfeserv1.fazenda.sp.gov.br/sintegrapfe/",; "consultaSintegraServlet",; "sintegra",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } ElseIf cUF == "TO" // http://sintegra.sefaz.to.gov.br/ aRet := {"http://sintegra.sefaz.to.gov.br/",; "",; "",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CNPJ:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação Cadastral Vigente:",; "Data desta Situação Cadastral:",; "Regime de Apuração:" ; } ; } Else // SUFRAMA: https://wwws.suframa.gov.br/asp/sintegra_cadastro.asp // https://wwws.suframa.gov.br/asp/sintegra_cadastro_result.asp aRet := {"https://wwws.suframa.gov.br/asp/",; "sintegra_cadastro.asp",; "sintegra_cadastro_result.asp",; {"IDENTIFICAÇÃO","Os dados acima estão baseados"},; {"CGC:",; "Inscrição Estadual:",; "Razão Social:",; "Logradouro:",; "Número:",; "Complemento:",; "Bairro:",; "Município:",; "UF:",; "CEP:",; "Telefone:",; "Atividade Econômica:",; "Situação da Inscrição SUFRAMA:",; "Situação Cadastral:",; "Tipo(s) de Incentivo(s) para a região de domicílio da empresa :" ; } ; } Endif Retu(aRet) //----------------------------------------------------------------------------------------------------------------------// DLL Static Function DeleteUrlCacheEntry(lpszUrlName AS STRING) AS LONG PASCAL FROM "DeleteUrlCacheEntryA" LIB "wininet.dll" //----------------------------------------------------------------------------------------------------------------------// Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 16, 2018 Report Share Posted March 16, 2018 Oscar, c. Error: Unresolved external '_HB_FUN_MSGARRAY' referenced from C:\PLENOCBX\SINTEG RA.OBJ Error: Unresolved external '_HB_FUN_STRNUM' referenced from C:\PLENOCBX\SINTEGRA .OBJ Error: Unresolved external '_HB_FUN_OANETNAME' referenced from C:\PLENOCBX\SINTE GRA.OBJ Error: Unable to perform link Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 16, 2018 Author Report Share Posted March 16, 2018 ********************************************************************************************* FUNCTION StrNum(cVar , lPontos, nTam) // Esta funcao retorna apenas os numeros da String ********************************************************************************************* Local cVar1 := "" Local nInd := 0 DEFAULT lPontos := .T. DEFAULT nTam := 0 For nInd=1 To Len(cVar) if Subst(cVar, nInd, 1)$("0123456789"+iif(lPontos,",.","")) cVar1 = cVar1 + Subst(cVar, nInd, 1) endif Next if nTam>0 cVar1 := PadR(cVar1, nTam) endif RETURN cVar1 ******************************************************************************************* function MsgArray(aArray, cMsg, cFile) ******************************************************************************************* Local cText := "" Default cMsg := "" Default cFile := "" Aeval(aArray, {|v| cText += cValToChar(v)+CRLF}) if !Empty(cFile) // Grava a matriz num arquivo TEXTO MemoWrit(cFile, cText) if Empty(cMsg) cMsg := "Arquivo gravado em "+cFile else cText := "Arquivo gravado em "+cFile + chr(13)+chr(13) + cText endif endif MsgInfo(cText, cMsg) return Nil FUNCTION OANETNAME() // Crie uma função para gerar um nome de arquivo randômico para que essa função possa ser utilizada por mais de um usuário simultaneamente. Return ("SINTEGRA.TXT") Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 16, 2018 Report Share Posted March 16, 2018 Abre a página, mas não leva o CNPJ direto, tem que digitar de novo. Na classe do Alessandro, já levava direto. Mas blz já é um inicio. Obg. abs. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 16, 2018 Author Report Share Posted March 16, 2018 Isso eu não consegui fazer, mas eu COPIEI o CNPJ na memória antes de chamara função e oriento o usuário a COLAR no campo. Super simples. Ninguém reclama. // Copia a CHAVE para o ClipBoard oClp:=TClipboard():New() oClp:Clear() oClp:SetText( cCNPJ ) Se alguém conseguir fazer isso na classe, por favor, poste aqui os ajustes. Acho que alguns poderão tirar proveito dessa rotina. Fiz algo muito interessante com ela. Quando o usuário está na inclusão do cadastro de clientes, fornecedores, tranportadora, etc. Se ele chama essa rotina eu já trago os campos preenchidos no cadastro. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 16, 2018 Report Share Posted March 16, 2018 O usuário que use o CTRL + V para colar e copiar, o importante é que mostra o sintegra para ele. Quote Link to comment Share on other sites More sharing options...
Alain da Silva Posted March 16, 2018 Report Share Posted March 16, 2018 pra quem usa a classe da flexdocs acho que já tem essa opção kapiaba. http://www.flexdocs.com.br/guiaNFe/WS.consultaCad2G.html kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 16, 2018 Report Share Posted March 16, 2018 pra quem usa a classe da flexdocs acho que já tem essa opção kapiaba. http://www.flexdocs.com.br/guiaNFe/WS.consultaCad2G.html Valeu. Semana que vem eu vejo se consigo implementar. Obg. abs. Quote Link to comment Share on other sites More sharing options...
Alain da Silva Posted March 16, 2018 Report Share Posted March 16, 2018 Eu não uso a flexdocs mas achei interessante a postagem sua postagem e implementei no meu sistema. Agora posso verificar se o cliente esta habilitado ou não já no envio. Não sei se tem a mesma validade do cadesp, mas pelo menos já te da um alerta. veja o retorno que ele traz: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><nfeResultMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro4"><retConsCad versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><infCons><verAplic>SP_NFE_PL009_V4</verAplic><cStat>111</cStat><xMotivo>Consulta cadastro com uma ocorrência</xMotivo><UF>SP</UF><CNPJ>48209381000140</CNPJ><dhCons>2018-03-16T16:14:46-03:00</dhCons><cUF>35</cUF><infCad><IE>110563922119</IE><CNPJ>48209381000140</CNPJ><UF>SP</UF><cSit>0</cSit><indCredNFe>0</indCredNFe><indCredCTe>4</indCredCTe><xNome>AMIR CEREAIS LTDA - ME</xNome><xRegApur>NORMAL - REGIME PERIÓDICO DE APURAÇÃO</xRegApur><CNAE>4712100</CNAE><dIniAtiv>1982-01-04</dIniAtiv><dUltSit>2008-02-29</dUltSit><ender><xLgr>RUA CATAO</xLgr><nro>914</nro><xBairro>V ROMANA</xBairro><cMun>3550308</cMun><xMun>SAO PAULO</xMun><CEP>05049000</CEP></ender></infCad></infCons></retConsCad></nfeResultMsg></soap:Body></soap:Envelope> Abs kapiaba 1 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.