edutraini Posted July 23, 2019 Report Share Posted July 23, 2019 Boa tarde, Pessoal Um cliente me pediu se tem como digitar o cnpj e buscar os dados em algum lugar para atualizar o cadastro de clientes do sistema Exemplo : Endereco, cep , ie, etc Quote Link to comment Share on other sites More sharing options...
cendon Posted July 24, 2019 Report Share Posted July 24, 2019 https://www.receitaws.com.br/v1/cnpj/99999999999 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 24, 2019 Report Share Posted July 24, 2019 Angelo, tem como pegar isso via código? { "data_situacao": "09/02/2015", "motivo_situacao": "OMISSAO CONTUMAZ", "nome": "AMIR CEREAIS LTDA", "situacao": "BAIXADA", "porte": "MICRO EMPRESA", "abertura": "17/12/1981", "natureza_juridica": "206-2 - Sociedade Empresária Limitada", "cnpj": "48.209.381/0001-40", "ultima_atualizacao": "2019-06-19T08:21:08.209Z", "status": "OK", "tipo": "MATRIZ", "fantasia": "", "logradouro": "", "numero": "", "complemento": "", "cep": "", "bairro": "", "municipio": "", "uf": "", "email": "", "telefone": "", "efr": "", "situacao_especial": "", "data_situacao_especial": "", "atividade_principal": [ { "code": "00.00-0-00", "text": "********" } ], "atividades_secundarias": [ { "code": "00.00-0-00", "text": "Não informada" } ], "capital_social": "0.00", "qsa": [], "extra": {}, "billing": { "free": true, "database": true }} Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 24, 2019 Report Share Posted July 24, 2019 Assim, mostra os dados e para pegar e gravar, Angelo? #include "FiveWin.ch" STATIC oWnd FUNCTION Main() LOCAL cSiteCnpj LOCAL cCnpj := "48209381000140" cSiteCnpj := ( "https://www.receitaws.com.br/v1/cnpj/" + cCnpj ) //-> Invisibilizo a Janela DEFINE WINDOW oWnd FROM -10, -10 TO -5, -5 ACTIVATE WINDOW oWnd ; ON INIT( ShellExecute(GetActiveWindow(),"OPEN",'"'+cSiteCnpj+'"'), oWnd:End() ) Return Nil Quote Link to comment Share on other sites More sharing options...
emotta Posted July 25, 2019 Report Share Posted July 25, 2019 Muito legal o link que faz a consulta, fiz um exemplo de código para facilitar o uso, divirtam-se... Function u_Teste() Local cCnpj := "53.113.791/0001-22" Local cLink := "https://www.receitaws.com.br/v1/cnpj/" Local cResult Local hDados Local cNome cCnpj := StrTran(cCnpj,".","") cCnpj := StrTran(cCnpj,"/","") cCnpj := StrTran(cCnpj,"-","") cCnpj := AllTrim(cCnpj) cLink+=cCnpj cResult := Emt_GetHtml(cLink) cResult := StrTran(cResult,"true",'"true"') hDados := My_JsonToHash(cResult) cNome := hDados["nome"] MsgStop(cNome) Return Static Function My_JsonToHash(cStringJson) Local hJson := {=>} cStringJson := Alltrim(cStringJson) cStringJson := StrTran( cStringJson,':[','=>{') cStringJson := StrTran( cStringJson,'":"','" => "') cStringJson := StrTran( cStringJson,'[','{') cStringJson := StrTran( cStringJson,']','}') cStringJson := StrTran( cStringJson,'":null','"=>nil') cStringJson := StrTran( cStringJson,'":true' ,'"=>.t.' ) cStringJson := StrTran( cStringJson,'":false','"=>.f.') cStringJson := StrTran( cStringJson,'": true' ,'"=>.t.' ) cStringJson := StrTran( cStringJson,'": false','"=>.f.') cStringJson := StrTran( cStringJson,'":','"=>') cStringJson := StrTran( cStringJson,"\/","/" ) cStringJson := StrTran( cStringJson,Chr(13),"" ) cStringJson := StrTran( cStringJson,Chr(10),"" ) Try hJSon := &( cStringJson ) Catch msgstop("Erro") msgstop(cStringJson) End Return hJson Static Function Emt_GetHtml(cLink) Local oOle Local cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .f. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End Return cHtml Luiz Fernando 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 25, 2019 Report Share Posted July 25, 2019 Muito bom Eduardo. many thanks. Abs. #Include "FiveWin.ch" FUNCTION Main() LOCAL cNome, cSituacao, cMotivoSit, cLogradouro, cNumero, cbairro, cUf, ; cCep, cMunicipio, cAbertura, cNatJurid, cFantasia, cFinalXB LOCAL cResult, hDados LOCAL cLink := "https://www.receitaws.com.br/v1/cnpj/" LOCAL cCnpj := "53.113.791/0001-22" cCnpj := StrTran( cCnpj, ".", "" ) cCnpj := StrTran( cCnpj, "/", "" ) cCnpj := StrTran( cCnpj, "-", "" ) cCnpj := AllTrim( cCnpj ) cLink += cCnpj cResult := Emt_GetHtml( cLink ) cResult := StrTran( cResult, "true", '"true"' ) hDados := My_JsonToHash( cResult ) cNome := hDados["nome"] // : "TOTVS S.A." cSituacao := hDados["situacao"] // : "ATIVA" cMotivoSit := hDados["motivo_situacao"] // : "OMISSAO CONTUMAZ" cLogradouro := hDados["logradouro"] // : "AV BRAZ LEME" cNumero := hDados["numero"] // : "1000" cbairro := hDados["bairro"] // : "CASA VERDE" cUf := hDados["uf"] // : "SP" cCep := hDados["cep"] // : "02.511-000" cMunicipio := hDados["municipio"] // : "SAO PAULO" cAbertura := hDados["abertura"] // : "13/12/1983" cNatJurid := hDados["natureza_juridica"] // : "204-6 - Sociedade Anônima Aberta" cFantasia := hDados["fantasia"] // : "TOTVS S/A" cFinalXB := cNome + " - " + cSituacao + " - " + cMotivoSit + " - " + ; cLogradouro + " - " + cNumero + " - " + cbairro + " - " + ; cUf + " - " + cCep + " - " + cMunicipio + " - " + ; cAbertura // + " - " + cNatJurid + " - " + cFantasia XBROWSE( cFinalXB ) RETURN NIL STATIC FUNCTION My_JsonToHash( cStringJson ) LOCAL hJson := { => } cStringJson := Alltrim( cStringJson ) cStringJson := StrTran( cStringJson, ':[', '=>{' ) cStringJson := StrTran( cStringJson, '":"', '" => "' ) cStringJson := StrTran( cStringJson, '[', '{' ) cStringJson := StrTran( cStringJson, ']', '}' ) cStringJson := StrTran( cStringJson, '":null', '"=>nil' ) cStringJson := StrTran( cStringJson, '":true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '":false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '": true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '": false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '":', '"=>' ) cStringJson := StrTran( cStringJson, "\/", "/" ) cStringJson := StrTran( cStringJson, Chr( 13 ), "" ) cStringJson := StrTran( cStringJson, Chr( 10 ), "" ) Try hJSon := &( cStringJson ) Catch MsgStop( "Erro de Conexao" ) MsgStop( cStringJson ) End RETURN hJson STATIC FUNCTION Emt_GetHtml( cLink ) LOCAL oOle LOCAL cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .F. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End RETURN cHtml Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 26, 2019 Report Share Posted July 26, 2019 Agora com dialogo, quem melhorar, poste aqui. Abs. REDEFINE BUTTONBMP oDadosRFB ID 303 OF oDlgRFB ; ACTION( ( MsgRun( ( "CONECTANDO AO SITE DA RECEITA." ), ; "CONECTANDO AO SITE DA RECEITA.", ; { || BUSCA_DADOS_CLIENTE( cCnpj ) } ) ) ) oDadosRFB:cToolTip := "Busca Dados do Cliente na Receita Federal do Brasil" FUNCTION BUSCA_DADOS_CLIENTE( cCnpj ) LOCAL oDlg, oFnt, oFont, oSaida, oGroup, IDCor, aGet := ARRAY(15) LOCAL cNome, cSituacao, cMotivoSit, cLogradouro, cNumero, cbairro, cUf, ; cCep, cMunicipio, cAbertura, cNatJurid, cFantasia, cFinalXB LOCAL cResult, hDados LOCAL cLink := "https://www.receitaws.com.br/v1/cnpj/" cCnpj := StrTran( cCnpj, ".", "" ) cCnpj := StrTran( cCnpj, "/", "" ) cCnpj := StrTran( cCnpj, "-", "" ) cCnpj := AllTrim( cCnpj ) cLink += cCnpj cResult := Emt_GetHtml( cLink ) cResult := StrTran( cResult, "true", '"true"' ) hDados := My_JsonToHash( cResult ) cNome := hDados["nome"] // : "TOTVS S.A." cSituacao := hDados["situacao"] // : "ATIVA" cMotivoSit := hDados["motivo_situacao"] // : "OMISSAO CONTUMAZ" cLogradouro := hDados["logradouro"] // : "AV BRAZ LEME" cNumero := hDados["numero"] // : "1000" cbairro := hDados["bairro"] // : "CASA VERDE" cUf := hDados["uf"] // : "SP" cCep := hDados["cep"] // : "02.511-000" cMunicipio := hDados["municipio"] // : "SAO PAULO" cAbertura := hDados["abertura"] // : "13/12/1983" cNatJurid := hDados["natureza_juridica"] // : "204-6 - Sociedade Anônima Aberta" cFantasia := hDados["fantasia"] // : "TOTVS S/A" IF EMPTY( cMotivoSit ) cMotivoSit := "NADA CONSTA " ENDIF TRAB := OemToAnsi( "DADOS DO CLIENTE NA RECEITA FEDERAL" ) // GRADIENTE NO DIALOGO aGrad := { { 0.30, CLR_CYAN, CLR_HCYAN }, { 0.70, CLR_HCYAN, CLR_CYAN } } DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 00, 14 BOLD DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, - 14 BOLD DEFINE DIALOG oDlg RESOURCE "DLG_BUSCA_DADOS_CLIENTE" GRADIENT aGrad oDlg:lHelpIcon := .F. FOR IDCor = 401 TO 410 // Os ID's dos TEXTOS na DIALOG. REDEFINE SAY ID IDCor COLOR CLR_HBLUE, CLR_WHITE OF oDlg ; UPDATE FONT oFont TRANSPARENT NEXT IDCor REDEFINE SAY ID 420 COLOR CLR_BLACK, CLR_WHITE OF oDlg UPDATE FONT oFnt TRANSPARENT REDEFINE GROUP oGroup ID 501 OF oDlg COLOR CLR_BLACK, CLR_WHITE FONT oFnt TRANSPARENT REDEFINE GET aGet[1] VAR TRAB ID 20 PICTURE "@!" OF oDlg ; UPDATE WHEN( .F. ) FONT oFont COLOR CLR_HRED, CLR_WHITE REDEFINE GET aGet[2] VAR cCNPJ ID 21 PICTURE "@R 99.999.999/9999-99" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) //cNome, REDEFINE GET aGet[3] VAR cNome ID 22 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) // cLogradouro, REDEFINE GET aGet[4] VAR cLogradouro ID 23 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) // cNumero, REDEFINE GET aGet[5] VAR cNumero ID 24 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) // cbairro, REDEFINE GET aGet[6] VAR cbairro ID 25 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) // cUf, ; REDEFINE GET aGet[7] VAR cUf ID 26 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) // cMunicipio REDEFINE GET aGet[8] VAR cMunicipio ID 27 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) // cCep, REDEFINE GET aGet[9] VAR cCep ID 28 PICTURE "@K" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) //cSituacao, REDEFINE GET aGet[10] VAR cSituacao ID 29 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) //cMotivoSit, REDEFINE GET aGet[11] VAR cMotivoSit ID 30 PICTURE "@K!" ; OF oDlg UPDATE FONT oFont COLOR CLR_HRED, CLR_WHITE WHEN( .F. ) REDEFINE BUTTONBMP oSaida ID 301 OF oDlg ; ACTION( ( oDlg:End() ) ) CANCEL oSaida:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" ) SET FONT OF oSaida TO oFont ACTIVATE DIALOG oDlg CENTERED oFnt:End() oFont:End() RETURN NIL STATIC FUNCTION My_JsonToHash( cStringJson ) LOCAL hJson := { => } cStringJson := Alltrim( cStringJson ) cStringJson := StrTran( cStringJson, ':[', '=>{' ) cStringJson := StrTran( cStringJson, '":"', '" => "' ) cStringJson := StrTran( cStringJson, '[', '{' ) cStringJson := StrTran( cStringJson, ']', '}' ) cStringJson := StrTran( cStringJson, '":null', '"=>nil' ) cStringJson := StrTran( cStringJson, '":true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '":false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '": true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '": false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '":', '"=>' ) cStringJson := StrTran( cStringJson, "\/", "/" ) cStringJson := StrTran( cStringJson, Chr( 13 ), "" ) cStringJson := StrTran( cStringJson, Chr( 10 ), "" ) Try hJSon := &( cStringJson ) Catch MsgStop( "FALHA DE CONEXÃO COM A RECEITA FEDERAL-RFB.", ; "ERRO DE CONEXÃO" ) End RETURN hJson STATIC FUNCTION Emt_GetHtml( cLink ) LOCAL oOle LOCAL cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .F. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End RETURN cHtml // RC FILE - DIALOGO. /* DLG_BUSCA_DADOS_CLIENTE DIALOG 167, 68, 398, 226 STYLE DS_ABSALIGN | DS_MODALFRAME | 0x4L | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION ":: BUSCA DADOS DO CLIENTE PELO CNPJ NA RECEITA FEDERAL. ::" FONT 8, "MS Sans Serif" { CONTROL "Get - Text", 21, "EDIT", ES_CENTER | ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 42, 130, 12 CONTROL "Get - Text", 22, "EDIT", ES_MULTILINE | NOT WS_TABSTOP | WS_BORDER, 80, 56, 300, 12 CONTROL "Get - Text", 23, "EDIT", ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 71, 300, 12 CONTROL "Get - Text", 24, "EDIT", ES_CENTER | ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 85, 70, 12 CONTROL "Get - Text", 25, "EDIT", ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 100, 200, 12 CONTROL "Get - Text", 26, "EDIT", ES_CENTER | ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 114, 40, 12 CONTROL "Get - Text", 27, "EDIT", ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 127, 200, 12 CONTROL "Get - Text", 28, "EDIT", ES_CENTER | ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 139, 60, 12 CONTROL "Get - Text", 29, "EDIT", ES_CENTER | ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 155, 80, 12 PUSHBUTTON "&Saida", 301, 174, 203, 50, 16 RTEXT "Cnpj.:", 401, 17, 41, 60, 12, SS_RIGHT | NOT WS_GROUP RTEXT "Nome:", 402, 17, 58, 60, 12, SS_RIGHT | NOT WS_GROUP RTEXT "Logradouro:", 403, 17, 71, 60, 12, SS_RIGHT | NOT WS_GROUP RTEXT "Número:", 404, 17, 85, 60, 12, SS_RIGHT | NOT WS_GROUP RTEXT "Bairro:", 405, 17, 100, 60, 12, SS_RIGHT | NOT WS_GROUP LTEXT "<ESC> Sair", 420, 9, 203, 50, 14, NOT WS_GROUP CONTROL "Get - Text", 20, "EDIT", ES_CENTER | ES_MULTILINE | WS_CHILD | WS_VISIBLE, 9, 3, 380, 12 GROUPBOX "<< Busca Dados do Cliente Pelo CNPJ >>", 501, 9, 19, 380, 180, BS_GROUPBOX RTEXT "Uf.:", 406, 17, 114, 60, 12, SS_RIGHT | NOT WS_GROUP RTEXT "Municipio:", 407, 17, 127, 60, 12, SS_RIGHT | NOT WS_GROUP RTEXT "C.e.p.:", 408, 17, 139, 60, 12, SS_RIGHT | NOT WS_GROUP RTEXT "Situação:", 409, 17, 155, 60, 12, SS_RIGHT | NOT WS_GROUP CONTROL "Get - Text", 30, "EDIT", ES_MULTILINE | WS_BORDER | WS_TABSTOP, 80, 171, 130, 12 RTEXT "Morivo Sit:", 410, 17, 171, 60, 12, SS_RIGHT | NOT WS_GROUP } */ Quote Link to comment Share on other sites More sharing options...
emotta Posted July 26, 2019 Report Share Posted July 26, 2019 esse é o espirito da comunidade.... um da inicio, outro melhora e outro melhora ainda mais !!! excelente kapiaba and frkiko 2 Quote Link to comment Share on other sites More sharing options...
augustogomes Posted July 26, 2019 Report Share Posted July 26, 2019 Boa tarde, gostei da dica, mas tem como consultar cpf? Qual o link para cpf? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 26, 2019 Report Share Posted July 26, 2019 Boa tarde, gostei da dica, mas tem como consultar cpf? Qual o link para cpf? Leia aqui: https://www.receitaws.com.br/ Quote Link to comment Share on other sites More sharing options...
Valdir Posted July 27, 2019 Report Share Posted July 27, 2019 Carissimos Eduardo Motta e Kapiaba. Obrigado por compartilhar. Ficou show. Porém poderiam testar com outro CNPJ sem ser o da Totvs ? Aqui, sempre que testo com outro CNPJ ocorre Erro e o exemplo Trava. Obrigado. Quote Link to comment Share on other sites More sharing options...
marcioe Posted July 27, 2019 Report Share Posted July 27, 2019 Amigo, que eu uso essa rotina, percebi que quando o CNPJ é recente, ele não retorna ou dá erro Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 29, 2019 Report Share Posted July 29, 2019 Carissimos Eduardo Motta e Kapiaba. Obrigado por compartilhar. Ficou show. Porém poderiam testar com outro CNPJ sem ser o da Totvs ? Aqui, sempre que testo com outro CNPJ ocorre Erro e o exemplo Trava. Obrigado. Veificou se ele está no SINTEGRA moço? Poste o CNPJ para testes. Márcio, se o CNPJ é novo, precisa ver se o CONTADOR habilitou na SEFAZ estadual. Quote Link to comment Share on other sites More sharing options...
Valdir Posted July 30, 2019 Report Share Posted July 30, 2019 Veificou se ele está no SINTEGRA moço? Poste o CNPJ para testes. Fala tranka... Por favor, teste com esse CNPJ. 50.306.471/0001-09. Obrigado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 30, 2019 Report Share Posted July 30, 2019 Sintegra está ok, talkey()? https://dfe-portal.svrs.rs.gov.br/BPE/CCC Uma imagem fala por si. Por aqui, a gente come a cobra e mostra o PAL. kkkkkkkkkkkkkkkkk Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 30, 2019 Report Share Posted July 30, 2019 Validr, veja esta versão: #include "FiveWin.ch" STATIC lExito := .F. // Para checar se o CNPJ e valido. FUNCTION Main() LOCAL cNome, cSituacao, cMotivoSit, cLogradouro, cNumero, cbairro, cUf, ; cCep, cMunicipio, cAbertura, cNatJurid, cFantasia, cFinalXB LOCAL cResult, hDados LOCAL cLink := "https://www.receitaws.com.br/v1/cnpj/" // LOCAL cCnpj := "53.113.791/0001-22" LOCAL cCnpj := "50.306.471/0001-09" // ETILUX - Valdir. cCnpj := StrTran( cCnpj, ".", "" ) cCnpj := StrTran( cCnpj, "/", "" ) cCnpj := StrTran( cCnpj, "-", "" ) cCnpj := AllTrim( cCnpj ) cLink += cCnpj cResult := Emt_GetHtml( cLink ) cResult := StrTran( cResult, "true", '"true"' ) hDados := My_JsonToHash( cResult ) // Checar se o CNPJ e valido ou nao. IF hDados["status"] == "OK" lExito := .T. ELSE lExito := .F. ENDIF IF lExito // CNPJ E VALIDO cNome := hDados["nome"] cSituacao := hDados["situacao"] cMotivoSit := hDados["motivo_situacao"] cLogradouro := hDados["logradouro"] cNumero := hDados["numero"] cbairro := hDados["bairro"] cUf := hDados["uf"] cCep := hDados["cep"] cMunicipio := hDados["municipio"] cAbertura := hDados["abertura"] cNatJurid := hDados["natureza_juridica"] cFantasia := hDados["fantasia"] cFinalXB := cNome + " - " + cSituacao + " - " + cMotivoSit + " - " + ; cLogradouro + " - " + cNumero + " - " + cbairro + " - " + ; cUf + " - " + cCep + " - " + cMunicipio + " - " + ; cAbertura // + " - " + cNatJurid + " - " + cFantasia XBROWSE( cFinalXB ) ELSE ? [VERIFIQUE O CNPJ COM O CONTADOR VALDIR] lExito := .F. ENDIF RETURN NIL STATIC FUNCTION My_JsonToHash( cStringJson ) LOCAL hJson := { => } cStringJson := Alltrim( cStringJson ) cStringJson := StrTran( cStringJson, ':[', '=>{' ) cStringJson := StrTran( cStringJson, '":"', '" => "' ) cStringJson := StrTran( cStringJson, '[', '{' ) cStringJson := StrTran( cStringJson, ']', '}' ) cStringJson := StrTran( cStringJson, '":null', '"=>nil' ) cStringJson := StrTran( cStringJson, '":true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '":false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '": true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '": false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '":', '"=>' ) cStringJson := StrTran( cStringJson, "\/", "/" ) cStringJson := StrTran( cStringJson, Chr( 13 ), "" ) cStringJson := StrTran( cStringJson, Chr( 10 ), "" ) Try hJSon := &( cStringJson ) Catch MsgStop( "Erro de Conexao" ) // MsgStop( cStringJson ) End RETURN hJson STATIC FUNCTION Emt_GetHtml( cLink ) LOCAL oOle LOCAL cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .F. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch ? "Algo deu errado com o site" End RETURN cHtml Valdir 1 Quote Link to comment Share on other sites More sharing options...
Valdir Posted July 30, 2019 Report Share Posted July 30, 2019 Validr, veja esta versão: #include "FiveWin.ch" STATIC lExito := .F. // Para checar se o CNPJ e valido. FUNCTION Main() LOCAL cNome, cSituacao, cMotivoSit, cLogradouro, cNumero, cbairro, cUf, ; cCep, cMunicipio, cAbertura, cNatJurid, cFantasia, cFinalXB LOCAL cResult, hDados LOCAL cLink := "https://www.receitaws.com.br/v1/cnpj/" // LOCAL cCnpj := "53.113.791/0001-22" LOCAL cCnpj := "50.306.471/0001-09" // ETILUX - Valdir. cCnpj := StrTran( cCnpj, ".", "" ) cCnpj := StrTran( cCnpj, "/", "" ) cCnpj := StrTran( cCnpj, "-", "" ) cCnpj := AllTrim( cCnpj ) cLink += cCnpj cResult := Emt_GetHtml( cLink ) cResult := StrTran( cResult, "true", '"true"' ) hDados := My_JsonToHash( cResult ) // Checar se o CNPJ e valido ou nao. IF hDados["status"] == "OK" lExito := .T. ELSE lExito := .F. ENDIF IF lExito // CNPJ E VALIDO cNome := hDados["nome"] cSituacao := hDados["situacao"] cMotivoSit := hDados["motivo_situacao"] cLogradouro := hDados["logradouro"] cNumero := hDados["numero"] cbairro := hDados["bairro"] cUf := hDados["uf"] cCep := hDados["cep"] cMunicipio := hDados["municipio"] cAbertura := hDados["abertura"] cNatJurid := hDados["natureza_juridica"] cFantasia := hDados["fantasia"] cFinalXB := cNome + " - " + cSituacao + " - " + cMotivoSit + " - " + ; cLogradouro + " - " + cNumero + " - " + cbairro + " - " + ; cUf + " - " + cCep + " - " + cMunicipio + " - " + ; cAbertura // + " - " + cNatJurid + " - " + cFantasia XBROWSE( cFinalXB ) ELSE ? [VERIFIQUE O CNPJ COM O CONTADOR VALDIR] lExito := .F. ENDIF RETURN NIL STATIC FUNCTION My_JsonToHash( cStringJson ) LOCAL hJson := { => } cStringJson := Alltrim( cStringJson ) cStringJson := StrTran( cStringJson, ':[', '=>{' ) cStringJson := StrTran( cStringJson, '":"', '" => "' ) cStringJson := StrTran( cStringJson, '[', '{' ) cStringJson := StrTran( cStringJson, ']', '}' ) cStringJson := StrTran( cStringJson, '":null', '"=>nil' ) cStringJson := StrTran( cStringJson, '":true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '":false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '": true' , '"=>.t.' ) cStringJson := StrTran( cStringJson, '": false', '"=>.f.' ) cStringJson := StrTran( cStringJson, '":', '"=>' ) cStringJson := StrTran( cStringJson, "\/", "/" ) cStringJson := StrTran( cStringJson, Chr( 13 ), "" ) cStringJson := StrTran( cStringJson, Chr( 10 ), "" ) Try hJSon := &( cStringJson ) Catch MsgStop( "Erro de Conexao" ) // MsgStop( cStringJson ) End RETURN hJson STATIC FUNCTION Emt_GetHtml( cLink ) LOCAL oOle LOCAL cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .F. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch ? "Algo deu errado com o site" End RETURN cHtml Agora funfou certinho... Obrigado. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted July 30, 2019 Report Share Posted July 30, 2019 Ficou bem pratica com o código postado pelo emotta, uma pena não trazer a I.E., sem essa informação não conseguimos fazer a NFE, dai o usuario precisa de qq forma pesquisa o sintegra. Quote Link to comment Share on other sites More sharing options...
Valdir Posted July 31, 2019 Report Share Posted July 31, 2019 Não querendo abusar... Como eu pego as informações da "atividade_principal" onde consta a atividade principal e o CNAE. Obrigado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted July 31, 2019 Report Share Posted July 31, 2019 #include "FiveWin.ch" STATIC oWnd FUNCTION Main() LOCAL cSiteCnpj LOCAL cCnpj := "50306471000109" cSiteCnpj := ( "https://www.receitaws.com.br/v1/cnpj/" + cCnpj ) //-> Invisibilizo a Janela DEFINE WINDOW oWnd FROM -10, -10 TO -5, -5 ACTIVATE WINDOW oWnd ; ON INIT( ShellExecute(GetActiveWindow(),"OPEN",'"'+cSiteCnpj+'"'), oWnd:End() ) Return Nil // Tranka, todos os dados que precisas, abra com este programa. Veja: /* { "atividade_principal": [ { "text": "Comércio atacadista de resinas e elastômeros", "code": "46.84-2-01" } ], "data_situacao": "03/11/2005", "nome": "ETILUX IMPORTACAO E DISTRIBUICAO DE ARTIGOS DE CUTELARIA S.A.", "uf": "SP", "telefone": "(11) xxxx-xxxx", // retirei "email": "xxxx@terra.com.br", // retirei "atividades_secundarias": [ { "text": "Comércio atacadista de artigos de armarinho", "code": "46.41-9-03" }, { "text": "Comércio atacadista de roupas e acessórios para uso profissional e de segurança do trabalho", "code": "46.42-7-02" }, { "text": "Comércio atacadista de bolsas, malas e artigos de viagem", "code": "46.43-5-02" }, { "text": "Comércio atacadista de cosméticos e produtos de perfumaria", "code": "46.46-0-01" }, { "text": "Comércio atacadista de produtos de higiene pessoal", "code": "46.46-0-02" }, { "text": "Comércio atacadista de artigos de escritório e de papelaria", "code": "46.47-8-01" }, { "text": "Comércio atacadista de lustres, luminárias e abajures", "code": "46.49-4-06" }, { "text": "Comércio atacadista de outros equipamentos e artigos de uso pessoal e doméstico não especificados anteriormente", "code": "46.49-4-99" }, { "text": "Comércio atacadista de madeira e produtos derivados", "code": "46.71-1-00" }, { "text": "Comércio atacadista de ferragens e ferramentas", "code": "46.72-9-00" }, { "text": "Comércio atacadista de material elétrico", "code": "46.73-7-00" }, { "text": "Comércio atacadista especializado de materiais de construção não especificados anteriormente", "code": "46.79-6-04" }, { "text": "Comércio atacadista de materiais de construção em geral", "code": "46.79-6-99" }, { "text": "Comércio atacadista especializado em outros produtos intermediários não especificados anteriormente", "code": "46.89-3-99" }, { "text": "Comércio atacadista de mercadorias em geral, sem predominância de alimentos ou de insumos agropecuários", "code": "46.93-1-00" } ], "qsa": [ { "qual": "10-Diretor", "nome": "SIAHOU HAIM DAYAN" }, { "qual": "10-Diretor", "nome": "DAVID DAYAN" }, { "qual": "10-Diretor", "nome": "PRADEEP EMPREENDIMENTOS E PARTICIPACOES S.A." } ], "situacao": "ATIVA", "bairro": "PARQUE NOVO MUNDO", "logradouro": "AV AMADEU POLI", "numero": "940", "cep": "02.188-020", "municipio": "SAO PAULO", "porte": "DEMAIS", "abertura": "08/06/1982", "natureza_juridica": "205-4 - Sociedade Anônima Fechada", "cnpj": "50.306.471/0001-09", "ultima_atualizacao": "2019-07-24T22:05:41.955Z", "status": "OK", "tipo": "MATRIZ", "fantasia": "", "complemento": "", "efr": "", "motivo_situacao": "", "situacao_especial": "", "data_situacao_especial": "", "capital_social": "xxxxxxxxxxxx", // retirei. "extra": {}, "billing": { "free": true, "database": true } } */ Abs. Valdir 1 Quote Link to comment Share on other sites More sharing options...
emotta Posted July 31, 2019 Report Share Posted July 31, 2019 Esta ai como pegar a atividade principal (codigo e texto) Function u_Teste() Local cCnpj := "53.113.791/0001-22" Local cLink := "https://www.receitaws.com.br/v1/cnpj/" Local cResult Local hDados Local cNome cCnpj := StrTran(cCnpj,".","") cCnpj := StrTran(cCnpj,"/","") cCnpj := StrTran(cCnpj,"-","") cCnpj := AllTrim(cCnpj) cLink+=cCnpj cResult := Emt_GetHtml(cLink) cResult := StrTran(cResult,"true",'"true"') hDados := My_JsonToHash(cResult) cNome := hDados["nome"] cNameAtPrin := hDados["atividade_principal"][1]["text"] cCodeAtPrin := hDados["atividade_principal"][1]["code"] MsgStop(cNome) MsgStop(cCodeAtPrin+" "+cNameAtPrin) Return Static Function My_JsonToHash(cStringJson) Local hJson := {=>} cStringJson := Alltrim(cStringJson) cStringJson := StrTran( cStringJson,':[','=>{') cStringJson := StrTran( cStringJson,'":"','" => "') cStringJson := StrTran( cStringJson,'[','{') cStringJson := StrTran( cStringJson,']','}') cStringJson := StrTran( cStringJson,'":null','"=>nil') cStringJson := StrTran( cStringJson,'":true' ,'"=>.t.' ) cStringJson := StrTran( cStringJson,'":false','"=>.f.') cStringJson := StrTran( cStringJson,'": true' ,'"=>.t.' ) cStringJson := StrTran( cStringJson,'": false','"=>.f.') cStringJson := StrTran( cStringJson,'":','"=>') cStringJson := StrTran( cStringJson,"\/","/" ) cStringJson := StrTran( cStringJson,Chr(13),"" ) cStringJson := StrTran( cStringJson,Chr(10),"" ) Try hJSon := &( cStringJson ) Catch msgstop("Erro") msgstop(cStringJson) End Return hJson Static Function Emt_GetHtml(cLink) Local oOle Local cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .f. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End Return cHtml kapiaba and Valdir 2 Quote Link to comment Share on other sites More sharing options...
Valdir Posted July 31, 2019 Report Share Posted July 31, 2019 Esta ai como pegar a atividade principal (codigo e texto) Function u_Teste() Local cCnpj := "53.113.791/0001-22" Local cLink := "https://www.receitaws.com.br/v1/cnpj/" Local cResult Local hDados Local cNome cCnpj := StrTran(cCnpj,".","") cCnpj := StrTran(cCnpj,"/","") cCnpj := StrTran(cCnpj,"-","") cCnpj := AllTrim(cCnpj) cLink+=cCnpj cResult := Emt_GetHtml(cLink) cResult := StrTran(cResult,"true",'"true"') hDados := My_JsonToHash(cResult) cNome := hDados["nome"] cNameAtPrin := hDados["atividade_principal"][1]["text"] cCodeAtPrin := hDados["atividade_principal"][1]["code"] MsgStop(cNome) MsgStop(cCodeAtPrin+" "+cNameAtPrin) Return Static Function My_JsonToHash(cStringJson) Local hJson := {=>} cStringJson := Alltrim(cStringJson) cStringJson := StrTran( cStringJson,':[','=>{') cStringJson := StrTran( cStringJson,'":"','" => "') cStringJson := StrTran( cStringJson,'[','{') cStringJson := StrTran( cStringJson,']','}') cStringJson := StrTran( cStringJson,'":null','"=>nil') cStringJson := StrTran( cStringJson,'":true' ,'"=>.t.' ) cStringJson := StrTran( cStringJson,'":false','"=>.f.') cStringJson := StrTran( cStringJson,'": true' ,'"=>.t.' ) cStringJson := StrTran( cStringJson,'": false','"=>.f.') cStringJson := StrTran( cStringJson,'":','"=>') cStringJson := StrTran( cStringJson,"\/","/" ) cStringJson := StrTran( cStringJson,Chr(13),"" ) cStringJson := StrTran( cStringJson,Chr(10),"" ) Try hJSon := &( cStringJson ) Catch msgstop("Erro") msgstop(cStringJson) End Return hJson Static Function Emt_GetHtml(cLink) Local oOle Local cHtml := "" Try oOle := CreateObject( "Microsoft.XMLHTTP" ) oOle:Open( "GET", cLink, .f. ) oOle:Send() cHtml := oOle:ResponseBody oOle := nil Catch End Return cHtml Grande Eduardo... Obrigado. Quote Link to comment Share on other sites More sharing options...
marcioe Posted August 1, 2019 Report Share Posted August 1, 2019 Olá, boa tarde, olha só essa consulta as vezes traz erros Olhem esse cnpj https://www.receitaws.com.br/v1/cnpj/22424951000120 dá esse nome para a razão social JUAREZ MARTINS DO NASCIMENTO 03693372632 Agora consulte no Sintegra MG por exemplo ou na receita federal... http://www.sintegra.gov.br/ dá essa razao socialPADARIA E DISTRIBUIDORA BOM PALADAR LTDA Quote Link to comment Share on other sites More sharing options...
kapiaba Posted August 2, 2019 Report Share Posted August 2, 2019 Todos os links levam ao "dono" do CNPJ. Só perguntando a ele ou a Policia, que PADARIA é essa? Tá esquisito. Sei não heim??? https://consultacnpj.com/cnpj/juarez-martins-do-nascimento-03693372632-transportes-martins-22424951000120 https://www.cnpj.world/empresa/juarez-martins-do-nascimento-03693372632/cw1I4saHr https://www.cnpjreceita.com/empresa/juarez-martins-do-nascimento-03693372632/22424951000120 Xeirinho de: ai tem truta. Quote Link to comment Share on other sites More sharing options...
marcioe Posted August 2, 2019 Report Share Posted August 2, 2019 Olá a todos Nem é essa a questão de ter algo Errado no cadastro da empresa, isso para nós (do lado de quem desenvolve o software) é o menos importante. Só relatei pois achei estranho se consulto no sintegra, e na receita que são orgãos do governo tem outra informação. aferra 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.