Jump to content
Fivewin Brasil

Busca dados do Cliente


edutraini

Recommended Posts

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

Link to comment
Share on other sites

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


Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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


 

Link to comment
Share on other sites


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


 

Link to comment
Share on other sites

 

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.

Link to comment
Share on other sites

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


 

Link to comment
Share on other sites

 

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.

 

Link to comment
Share on other sites

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


Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

 

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.

 

Link to comment
Share on other sites

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 social
PADARIA E DISTRIBUIDORA BOM PALADAR LTDA

 

 

 

 

Link to comment
Share on other sites

Link to comment
Share on other sites

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.

 

 

 

 

 

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