segunda-feira, 5 de agosto de 2024

VIDEO 4083 - Webservice - uninfe -dll - Melhorando Codigo busca Cnpj - top - Windev29 webdev mobile -

VIDEO 4083 - Webservice - uninfe -dll - Melhorando Codigo busca Cnpj - top - Windev29 webdev mobile -  









00:00:00 Introdução
00:01:12 Mostrando webservice consulta cadastro
00:01:25 Variaveis iniciais e parametros do webservice 
00:02:56 Primeiras configuracoes sefaz uninfe dll e pesquisa estado
00:05:11 caso nao encontre , pesquisar na receita 
00:06:08 Buscando dados da receita 
00:07:03 vou unificar o retorno do xml fazendo um somente 
00:07:11 Criando xml padrao 
00:07:40 Colocando dados do json no xml 
00:08:18 Colocando dados do xml do sefaz no xml 
00:08:49 Fazendo codigo do consumo 
00:10:04 Vamos testar 
00:10:35 Onde eu encontro o código 
00:10:53 Propaganda Windev Webde Mobile com Adriano boller
00:11:01 Erpmatos 
00:11:10 Representantes ErpMatos
00:11:21 Video Encerramento



Objetivo Aula:
Temos a consulta do cnpj pela busca do sefaz.. Normalmente sempre consulto
o cnpj, com o estado do emitente. mas caso nao seja do mesmo estado, ai teriamos
de pedir para o cliente digitar a Uf. Mas podemos simplificar isso automaticamente.
o que farei. caso o cnpj nao for do estado do emitente, entao , vou fazer uma
pesquisa pelo site receitaws.com para saber o estado, e ai, sim. na segunta busca,
já leva o estado. 
Outra coisa que faremos é caso , nao tiver inscrição estadual, ai ele vai
trazer as informações do site da receitaws.com.
Top demais. vamos a aula, e aproveite.



Resultado Json


{ "status": "OK", "ultima_atualizacao": "2019-08-24T14:15:22Z", "cnpj": "string", "tipo": "MATRIZ", "porte": "string", "nome": "string", "fantasia": "string", "abertura": "string", "atividade_principal": [ { "code": "string", "text": "string" } ], "atividades_secundarias": [ { "code": "string", "text": "string" } ], "natureza_juridica": "string", "logradouro": "string", "numero": "string", "complemento": "string", "cep": "string", "bairro": "string", "municipio": "string", "uf": "string", "email": "string", "telefone": "string", "efr": "string", "situacao": "string", "data_situacao": "string", "motivo_situacao": "string", "situacao_especial": "string", "data_situacao_especial": "string", "capital_social": "string", "qsa": [ { "nome": "string", "qual": "string", "pais_origem": "string", "nome_rep_legal": "string", "qual_rep_legal": "string" } ], "billing": { "free": true, "database": true } }

============================

//=========== CONSUMO // criar as variaveis s_cnpj_emitente is string = "" s_certificado_senha is string = "" s_cnpj_consultar is string = "" s_uf is string = "" sEDT_Url_string is string = "http://www.amarildomatos.com.br/uninfe_consulta_cadastro" oRequest is httpRequest oResponse is httpResponse oRequest.URL = sEDT_Url_string oRequest.Method = httpPost oRequest..Header["s_recebe_cnpj_emitente"] = s_cnpj_emitente oRequest..Header["s_recebe_senha"] = s_certificado_senha oRequest..Header["s_recebe_UF"] = s_uf oRequest..Header["s_recebe_cnpj_cadastro"] = s_cnpj_consultar oRequest..Header["local_salvar"] = "E:" oRequest.Content = "" oRequest.ContentType = typeMimeJSON oResponse = RESTSend(oRequest) sRetorno_webservice is string = oResponse.Content edt_Resposta = sRetorno_webservice //======== WEBSERVICE PROCEDURE uninfe_consulta_cadastro() retorno_json is JSON cstat is string="" xmotivo is string="" s_auditoria is string = "" retorno_xml is string = "" razao_social is string="" s_recebe_cnpj_emitente is string = WebserviceReadHTTPHeader("s_recebe_cnpj_emitente") // cnpj do emitente-> certificado s_recebe_senha is string = WebserviceReadHTTPHeader("s_recebe_senha") // senha certificado s_recebe_UF is string = WebserviceReadHTTPHeader("s_recebe_UF") s_recebe_cnpj_cadastro is string = WebserviceReadHTTPHeader("s_recebe_cnpj_cadastro") s_local_salvar is string = WebserviceReadHTTPHeader("local_salvar") diretorio_salvar is string=fCurrentDir() // escolhendo onde salvar as informacoes IF s_local_salvar="" THEN ELSE diretorio_salvar=s_local_salvar // "e:" END s_arquivo_certificado is string = fCurrentDir()+"\erpmatos\"+s_recebe_cnpj_emitente+".pfx" s_diretorio is string = s_local_salvar+"\erpmatos\xml_"+s_recebe_cnpj_emitente+"\retorno" IF fMakeDir(s_diretorio)=False THEN END s_diretorio_log is string=s_local_salvar+"\erpmatos\xml_"+s_recebe_cnpj_emitente+"\retorno" IF fMakeDir(s_diretorio_log)=False THEN END s_busca_cnpj is string="" busca_cnpj_sefaz: o_configuracao is Unimake.Business.DFe.Servicos.Configuracao // configurações minimas o_configuracao.TipoDFe = TipoDFe.NFe //1 // nfe o_configuracao.CertificadoArquivo = s_arquivo_certificado o_configuracao.CertificadoSenha = s_recebe_senha oConsCad is Unimake.Business.DFe.XML.NFe.ConsCad() // criar xml oConsCad.VERSAO = "2.00" oInfCons is Unimake.Business.DFe.XML.NFe.InfCons() oInfCons.CNPJ = s_recebe_cnpj_cadastro oInfCons.uf = UFBrasil.RS IF s_recebe_UF<>"" THEN pesquisa_estado() END IF s_busca_cnpj="receita_busca" THEN busca_receita_cnpj() END oConsCad.InfCons = oInfCons WHEN EXCEPTION IN oConsultaCadastro is Unimake.Business.DFe.Servicos.NFe.ConsultaCadastro() oConsultaCadastro.Executar(oConsCad,o_configuracao) oRetConsCad is Unimake.Business.DFe.XML.NFe.RetConsCad <- oConsultaCadastro.Result cstat = oRetConsCad.InfCons.CStat xmotivo = oRetConsCad.InfCons.XMotivo IF cstat="259" THEN // cnpj da consulta não cadastrado como contribuinte na UF // na primeira vez, vai pesquizar o estado do emitente, ou da informacao fornecida pelo usuario // na segunda vez, vai pegar o resultado pela receita ws, pois nao tem inscrição ELSE razao_social = oRetConsCad.InfCons.InfCad.XNome retorno_xml = oConsultaCadastro.RetornoWSString s_busca_cnpj="sefaz_achou" END DO retorno_xml = "ERRO:"+ExceptionInfo(errFullDetails) s_busca_cnpj="sefaz_erro" END IF s_busca_cnpj="sefaz_achou" OR s_busca_cnpj="sefaz_erro" THEN ELSE IF s_busca_cnpj="" THEN s_busca_cnpj="receita_busca" GOTO busca_cnpj_sefaz END END INTERNAL PROCEDURE busca_receita_cnpj() // pegar pela receita o estado s_busca_cnpj="buscou" s_url is string = "https://www.receitaws.com.br/v1/cnpj/"+s_recebe_cnpj_cadastro IF HTTPRequest(s_url) THEN retorno_json=HTTPGetResult() recebi_o_estado is string = retorno_json.uf SWITCH recebi_o_estado CASE "AC" oInfCons.uf=UFBrasil.AC CASE "AL" oInfCons.uf=UFBrasil.AL CASE "AM" oInfCons.uf=UFBrasil.AM CASE "AP" oInfCons.uf=UFBrasil.AP CASE "BA" oInfCons.uf=UFBrasil.BA CASE "CE" oInfCons.uf=UFBrasil.CE CASE "DF" oInfCons.uf=UFBrasil.DF CASE "ES" oInfCons.uf=UFBrasil.ES CASE "EX" oInfCons.uf=UFBrasil.EX CASE "GO" oInfCons.uf=UFBrasil.GO CASE "MA" oInfCons.uf=UFBrasil.MA CASE "MG" oInfCons.uf=UFBrasil.MG CASE "MS" oInfCons.uf=UFBrasil.MS CASE "MT" oInfCons.uf=UFBrasil.MT CASE "PA" oInfCons.uf=UFBrasil.PA CASE "PB" oInfCons.uf=UFBrasil.PB CASE "PE" oInfCons.uf=UFBrasil.PE CASE "PI" oInfCons.uf=UFBrasil.PI CASE "PR" oInfCons.uf=UFBrasil.PR CASE "RJ" oInfCons.uf=UFBrasil.RJ CASE "RN" oInfCons.uf=UFBrasil.RN CASE "RO" oInfCons.uf=UFBrasil.RO CASE "RR" oInfCons.uf=UFBrasil.RR CASE "RS" oInfCons.uf=UFBrasil.RS CASE "SC" oInfCons.uf=UFBrasil.SC CASE "SE" oInfCons.uf=UFBrasil.SE CASE "SP" oInfCons.uf=UFBrasil.SP CASE "TO" oInfCons.uf=UFBrasil.TO OTHER CASE s_busca_cnpj="receita_nao_achou["+retorno_json END ELSE s_busca_cnpj="erro busca receita="+ErrorInfo(errFullDetails) END END INTERNAL PROCEDURE pesquisa_estado() SWITCH s_recebe_UF CASE "AC" oInfCons.uf=UFBrasil.AC CASE "AL" oInfCons.uf=UFBrasil.AL CASE "AM" oInfCons.uf=UFBrasil.AM CASE "AP" oInfCons.uf=UFBrasil.AP CASE "BA" oInfCons.uf=UFBrasil.BA CASE "CE" oInfCons.uf=UFBrasil.CE CASE "DF" oInfCons.uf=UFBrasil.DF CASE "ES" oInfCons.uf=UFBrasil.ES CASE "EX" oInfCons.uf=UFBrasil.EX CASE "GO" oInfCons.uf=UFBrasil.GO CASE "MA" oInfCons.uf=UFBrasil.MA CASE "MG" oInfCons.uf=UFBrasil.MG CASE "MS" oInfCons.uf=UFBrasil.MS CASE "MT" oInfCons.uf=UFBrasil.MT CASE "PA" oInfCons.uf=UFBrasil.PA CASE "PB" oInfCons.uf=UFBrasil.PB CASE "PE" oInfCons.uf=UFBrasil.PE CASE "PI" oInfCons.uf=UFBrasil.PI CASE "PR" oInfCons.uf=UFBrasil.PR CASE "RJ" oInfCons.uf=UFBrasil.RJ CASE "RN" oInfCons.uf=UFBrasil.RN CASE "RO" oInfCons.uf=UFBrasil.RO CASE "RR" oInfCons.uf=UFBrasil.RR CASE "RS" oInfCons.uf=UFBrasil.RS CASE "SC" oInfCons.uf=UFBrasil.SC CASE "SE" oInfCons.uf=UFBrasil.SE CASE "SP" oInfCons.uf=UFBrasil.SP CASE "TO" oInfCons.uf=UFBrasil.TO OTHER CASE s_busca_cnpj="nao_acho_estado" END END retorno_xml_erpmatos is string="" retorno_xml_erpmatos=[ <infCad> <IE>#IE#</IE> <CNPJ>#CNPJ#</CNPJ> <UF>#UF#</UF> <cSit>#cSit#</cSit> <indCredNFe>#indCredNFe#</indCredNFe> <indCredCTe>#indCredCTe#</indCredCTe> <xNome>#xNome#</xNome> <xFant>#xFant#</xFant> <xRegApur>#xRegApur#</xRegApur> <CNAE>#CNAE#</CNAE> <dIniAtiv>#dIniAtiv#</dIniAtiv> <dUltSit>#dUltSit#</dUltSit> <ender> <xLgr>#xLgr#</xLgr> <nro>#nro#</nro> <xCpl>#xCpl#</xCpl> <xBairro>#xBairro#</xBairro> <cMun>#cMun#</cMun> <xMun>#xMun#</xMun> <CEP>#CEP#</CEP> </ender> <alteracao>#alteracao#</alteracao> </infCad> ] IF cstat="259" THEN //caso nao tiver no sefaz, vai pegar o json da receita retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#alteracao#","pegou pelo json da receita") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#IE#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#CNPJ#",s_recebe_cnpj_cadastro) retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#UF#",retorno_json.uf) retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#cSit#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#indCredNFe#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#indCredCTe#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xNome#",retorno_json.nome) IF retorno_json.fantasia="" THEN retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xFant#",retorno_json.nome) ELSE retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xFant#",retorno_json.fantasia) END retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xRegApur#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#CNAE#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#dIniAtiv#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#dUltSit#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xLgr#",retorno_json.logradouro) retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#nro#",retorno_json.numero) retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xCpl#",retorno_json.complemento) retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xBairro#",retorno_json.bairro) retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#cMun#","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#xMun#",retorno_json.municipio) cep_string is string=retorno_json.cep cep_string=Replace(cep_string,".","") cep_string=Replace(cep_string,"-","") retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#CEP#",cep_string) ELSE retorno_xml_erpmatos=Replace(retorno_xml_erpmatos,"#alteracao#","pegou pelo xml da sefaz") retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#IE#",XMLExtractString(retorno_xml,"IE")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#CNPJ#",s_recebe_cnpj_cadastro) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#UF#",XMLExtractString(retorno_xml,"UF")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#cSit#",XMLExtractString(retorno_xml,"cSit")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#indCredNFe#",XMLExtractString(retorno_xml,"indCredNFe")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#indCredCTe#",XMLExtractString(retorno_xml,"indCredCTe")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xNome#",XMLExtractString(retorno_xml,"xNome")) IF XMLExtractString(retorno_xml,"xFant")="" THEN retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xFant#",XMLExtractString(retorno_xml,"xNome")) ELSE retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xFant#",XMLExtractString(retorno_xml,"xFant")) END retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xRegApur#",XMLExtractString(retorno_xml,"xRegApur")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#CNAE#",XMLExtractString(retorno_xml,"CNAE")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#dIniAtiv#",XMLExtractString(retorno_xml,"dIniAtiv")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#dUltSit#",XMLExtractString(retorno_xml,"dUltSit")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xLgr#",XMLExtractString(retorno_xml,"xLgr")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#nro#",XMLExtractString(retorno_xml,"nro")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xCpl#",XMLExtractString(retorno_xml,"xCpl")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xBairro#",XMLExtractString(retorno_xml,"xBairro")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#cMun#",XMLExtractString(retorno_xml,"cMun")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#xMun#",XMLExtractString(retorno_xml,"xMun")) retorno_xml_erpmatos = Replace(retorno_xml_erpmatos,"#CEP#",XMLExtractString(retorno_xml,"CEP")) //xFant END RESULT retorno_xml_erpmatos

Nenhum comentário:

Postar um comentário

Teste

Teste
teste