Jump to content
Fivewin Brasil

mkyx

Membros
  • Posts

    892
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by mkyx

  1. FALA COM A CENTRAL DE TI DO BANCO.
  2. JÁ FALOU COM O BANCO SOBRE ISSO. GERALMENTE ELES ORIENTAM
  3. extrato banco é um arquivo texto, simples vc vai ler linha por linha, e analisar de acordo com o layout que o banco fornece. ARQ00:="EXTRATO.TXT" OFILE:=TTXTFILE():NEW(ARQ00) //ABRE O ARQUIVO TEXTO N:=0 DO WHILE !OFILE:LEOF() N:=N+1 LIN00:=OFILE:READLINE() // LEITURA DE LINHA POR LINHA ? LIN00 // EXIBE NA TELA A LINHA OFILE:SKIP() // AVANÇA PRA PROXIMA LINHA ENDDO OFILE:END() //FINALIZA O OBJETO
  4. Boa tarde, Alguém sabe como fazer em um só comando, no mysql deletar dos os registro do arquivo PRODUTOS, e a medida que o comando delete vai excluindo, esse mesmo comando pega o campo NUM_PEDIDOS e o localiza no arquivo de PEDIDOS e delete esses pedidos? Tem como fazer isso? Obrigado Pompeo Guaratinguetá - SP
  5. Bom dia, Pelo que entendi, isso aí é pau na execução do comando mysql, pelo dbusearea(). "WHERE table_name = '" + nome_da_tabela + "'" +; me parece que nessa linha de aspas " demais
  6. mkyx

    SqlConnect

    Bom dia, Se o seu sistema já faz as conexões e o comando abaixo está em repetição, pode removê-lo e fazer os teste. SqlConnect( cHost, nPorta, cBD, cUsuario, cSenha, SQL_NO_WARNING, 'MySQL') Consultando aqui no forum, achei outras formas de conectar com sqllib SQL CONN PARAMS TO HOST "localhost" ; USER "postgres" ; PASSWORD "postgres" ; VIA "PGSQL" if !SL_DATABASE( "demosqllib" ) SQL CREATE DATABASE "demosqllib" INTO lRet IF !lRet xmsgstop( "Não foi possível criar a tabela <demosqllib>" ) QUIT End endif SQL CONNECT DATABASE "demosqllib" ; SCHEMA "public" ; INTO nConn IF nConn = 0 xmsgerror( "Falha na conexao:;;" + SQLERR_MSG() ) QUIT End No link abaixo, tem muitos exemplo em downloads https://code.google.com/archive/p/sqllib/source/default/source Espero ter ajudado.
  7. Fiz o que o Sputnik postou e parece que deu certo. Vou observar melhor. Obrigado.
  8. mkyx

    e-Social

    Boa tarde, Alguém já conseguiu desenvolver as rotinas de assinatura, transmissão e recepção para o e-Social? e que poderia comercializá-la Favor passar informações e valores Esse e-Social está me deixando sem dormir. Obrigado a todos, pela compreensão Pompeo Guaratinguetá - SP
  9. BOA TARDE, pessoal Qual comando pode ser usado para contar (count(*)) quanto registro tem dentro de um DB no mysql e exibí-lo na tela? Exemplo: como ficaria os comando no mysql para saber a quantidade de registro e atribuir na variável de memória QT_REG? @ 10,10 say os_qtreg prompt str(qt_reg)+" registros" Uso o SQLRDD. Obrigado a todos, pela compreensão. Att. Pompeo Guaratinguetá - SP Fwh 8.02 SQLRDD xHarbour Compiler
  10. Boa tarde, guerreiros, Estou usando um programinha impnfenovo.exe, de um fera aqui do fórum, esse programinha é show e não tem o get para o captcha e não pede esse captcha. Mas, a partir de hoje, não está baixando mais nfe do portal, e exibe a mensagem que o captcha é obrigatório. Pessoal é verdade? Que já conseguiu resolver esse problema? Att. Pompeo Guaratinguetá - SP FWH 8.02 xharbour compiler
  11. Você acessou o ecac da receita federal, para ver se o certificado está funcionando? Se não estiver, o problema é do certificado. E quando acontece isso comigo, eu peço pro pessoal da empresa que vendeu o certificado, pois eles acessam online e verificam o que está acontecendo.
  12. você só precisa descobrir qual controle do window/dialog, está focado. window/dialog:controls[]:cvarname mas, ao definir o xbrowse, você nomeá-lo, usando a cláusula cVarname
  13. O grande Gilmer, não vai libera uma versão 4.0 da classe?
  14. Uma dica, se não entendi errado, criar classes ou dll, em fivewin, xharbour e vendedor para a comunidade. como é o caso do e-social, eu estou ficando doido, por causa do e-social e não tenho ainda uma classe ou dll, para compilar junto a minha folha de pagamento. Imagina, 500,00 por venda, 10 unidade são 5000,00 só um exemplo. A NFe é um outro caso, parece que o gilmer, parou com a classe dele, se eu estiver errado me corrijam. Eu ainda não atualizei a minha para a versão 4.10 Tem o SPED, serasa, prefeitura, etc. A receita federal, irá lançar muitos desafios contendo só conteúdos técnicos, que serão necessários conhecimentos específicos. Tudo isso é um prato cheio que dá pra ganhar muito dinheiro. Tem ainda a plataforma android, que o fiveweb, deixou a desejar, e nós programadores necessitamos para ontem de uma solução em fivewin, xharbour. Será que teremos que trabalhar em conjunto com uma outra plataforma? Seria muito trabalhoso, se o fivewin, xharbour, são a melhor linguagem de programação. (muito melhor que java). bom, essa é minha idéia.
  15. você poderá dar uma olhada nesse site: http://suporte.quarta.com.br/eSocial/ExemplosEventosXml.htm#S1005
  16. mkyx

    NFe 4.00

    nova data para desativação da versao 3.10 Desativação da NFe 3.1 • DESATIVAÇÃO DA VERSÃO ANTERIOR – 02/07/2018: Data limite para migração de versão. A partir deste dia, só será possível emitir NF-e na versão 4.0, sendo o layout 3.1 desativado.
  17. SAT-CFe ou NF-e, são documentos para venda de produtos Serviços, devem ser lançados em nota fiscal de prestação de servicos eletronicos, NFS-e.
  18. DBF e WINDOWS, não se combinam, é um lixo, trabalhar com dbf no Windows, já perdi três clientes bons, por causa dessa mer....a. Não adianta usar cdx, nem tampouco ntx, este ultimo é o pior. O correto é mysql.
  19. BOM DIA, ALGUÉM QUE JÁ TENHA CONSEGUIDO RESOLVER A ROTINA ABAIXO, POR QUE SERÁ QUE NA LINHA 351, O COMANDO: Try oInternet := TIPClientHttp():New(URL_CONSULTA_COMPLETA) Catch MsgInfo("Erro na Criação do Serviço!", "1-Atenção!") Return .f. End SEMPRE DÁ O ERRO NA CRIAÇÃO DO SERVIÇO! ALGUÉM SABE O POR QUÊ? ABAIXO SEGUE A ROTINA COMPLETA, QUE BAIXA O XML DA RECEITA, DEPOIS DA DIGITAÇÃO DO CAPTCHA ANTIGO: #include "fivewin.ch" #include "image.ch" #include "directry.ch" #include "fileio.ch" #include "tip.ch" #define URL_CONSULTA_COMPLETA "https://www.nfe.fazenda.gov.br/portal/consultaCompleta.aspx?tipoConteudo=XbSeqxE8pl8=" #define URL_CONSULTA "https://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3D" Static s_cVersao := "", s_cTpAmb := "", s_cVerAplic := "", s_cDhRecbto := "", s_cnProt := "", s_cDigVal := "" Static s_cinfCpl := "", s_cInfAdFisco := "", s_cDiscAdicional := "", s_cxMotivo := "", s_ccStat := "" Static s_aIde := {}, s_aEmit := {}, s_aDest := {}, s_aDet := {}, s_aICMS := {}, s_aIPI := {} Static s_aTransp := {}, s_aCobr := {}, s_aMedicamentos := {}, s_aTotais := {}, s_aPIS := {}, s_aCOFINS := {} Static s_cViewState, s_cViewStateGenerator, s_cHiddenToken, s_cEventValidation, s_cStringCookie, s_cHiddenSom /******************************************************************************/ procedure DownloadNFe( cChave, cPasta ) /* */ local oDialog, oIcone, oFonte, hInput := Hash() local cCaptcha := Space( 6 ) local lSemParametros := Empty( PCount() ) if lSemParametros cChave := Space( 44 ) cPasta := '' endif define font oFonte name 'Arial' size 6, 16 bold define icon oIcone resource 'MAINSG' define dialog oDialog title 'Download XML - NFe' from 0, 0 to 164, 565 pixel font oFonte icon oIcone @ 7, 112 say 'Chave:' of oDialog pixel @ 34, 112 say 'Captcha:' of oDialog pixel @ 16, 112 get hInput['Chave'] var cChave of oDialog pixel size 165, 13 picture '@9' //Valid ValidaChaveDownloadXML( cChave ) @ 43, 112 get hInput['Captcha'] var cCaptcha of oDialog pixel size 34, 13 picture '@!' @ 8, 4 image hInput['Imagem'] of oDialog pixel size 104, 48 adjust @ 64, 174 button '&Baixar' of oDialog pixel size 45, 12 action (MsgRun( 'Aguarde! Realizando Download do XML...',, {|| BaixarXML(cChave, cCaptcha, hInput, oDialog, lSemParametros, cPasta)})) @ 64, 4 button '&Atualizar Captcha' of oDialog pixel size 64, 12 action (AtualizaCaptcha( hInput )) @ 64, 226 button '&Sair' of oDialog pixel size 45, 12 action (oDialog:End()) cancel oDialog:lHelpIcon := .f. activate dialog oDialog centered on init ( IIf( lSemParametros,, hInput['Chave']:disable() ), ; AtualizaCaptcha( hInput ) ) oIcone:end() oFonte:end() return /***********************************************************************************/ static procedure AtualizaCaptcha( hInput ) /* */ MsgRun('Aguarde...',,{|| AtualizaImagem( hInput ) } ) return /***********************************************************************************/ static procedure AtualizaImagem( hInput ) /* */ Local oServer, cHtml, nInie, cHtml1, nFime, cMsgErro, nIni, nFim, nIni1, nConta := 0 Local nFim1, nIni2, nFim2, nIni3, nFim3, nIni4, nFim4, cFileString1, cFileString2 do while nConta <= 5 nConta ++ try oServer:= CreateObject( "MSXML2.ServerXMLHTTP.6.0" ) catch try oServer:= CreateObject( "MSXML2.ServerXMLHTTP.5.0" ) catch end end Try oServer:Open( "GET", URL_CONSULTA, .f. ) oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ) oServer:SetRequestHeader( "Connection", "keep-alive" ) oServer:Send() oServer:WaitForResponse( 10000 ) Catch MsgInfo('Erro na conexão com o site!', 'Atenção!') exit End cHtml := oServer:ResponseBody s_cStringCookie := oServer:getResponseHeader("Set-Cookie") nInie := At('id="ctl00_ContentPlaceHolder1_lblMensagemErro">', cHtml) + 47 nArqHandle := FCreate("cHtml.TXT", 0 ) FWrite(nArqHandle,cHtml,LEN(cHtml)) FClose(nArqHandle) If nInie > 47 cHtml1 := SubStr( cHtml, nInie) nFime := At('</span>', cHtml1) - 1 cMsgErro := SubStr(cHtml, nInie, nFime) If !Empty(cMsgErro) MsgInfo(cMsgErro, 'Erro no Site ' + URL_CONSULTA) exit EndIf EndIf nIni := At('id="__VIEWSTATE" value=', cHtml) + 24 cHtml1 := SubStr( cHtml, nIni) nFim := At('" />', cHtml1) - 1 s_cViewState := SubStr(cHtml, nIni, nFim) nIni1 := At('id="__EVENTVALIDATION" value="', cHtml) + 30 cHtml1 := SubStr( cHtml, nIni1) nFim1 := At('" />', cHtml1) - 1 s_cEventValidation := SubStr(cHtml, nIni1, nFim1) nIni2 := At('id="__VIEWSTATEGENERATOR" value="', cHtml) + 33 cHtml1 := SubStr( cHtml, nIni2) nFim2 := At('" />', cHtml1) - 1 s_cViewStateGenerator := SubStr(cHtml, nIni2, nFim2) nIni3 := At('id="ctl00_ContentPlaceHolder1_token" value="', cHtml) + 44 cHtml1 := SubStr( cHtml, nIni3) nFim3 := At('" />', cHtml1) - 1 s_cHiddenToken := SubStr(cHtml, nIni3, nFim3) nIni4 := At('id="ctl00_ContentPlaceHolder1_captchaSom" value="', cHtml) + 49 cHtml1 := SubStr( cHtml, nIni4) nFim4 := At('" />', cHtml1) - 1 s_cHiddenSom := SubStr(cHtml, nIni4, nFim4) nIni := At('data:image/png;base64,', cHtml) + 22 cHtml1 := SubStr(cHtml, nIni) for i=1 to len(cHtml1) if substr(cHtml1,i,1)=chr(34) .and. substr(cHtml1,i+1,3)=" />" nFim:=i+1 i:=len(cHtml1)+10 endif next ** nFim := At('" style="border-width:0px;" />', cHtml1) - 2 cFileString1 := SubStr(cHtml, nIni, nFim) cFileString2 := HB_Base64Decode(cFileString1) If Empty(cFileString1) loop EndIf if Upper(Right(ALLTRIM(cFileString1),5))=='SUQMC' SysWait(0.5) loop endif if HB_IsObject( hInput['Imagem'] ) hInput['Imagem']:LoadFromMemory( cFileString2 ) hInput['Imagem']:Refresh() endif exit enddo if nConta > 5 MsgStop('Erro ao tentar obter CAPTCHA. Tente novamente!', 'Atenção!') endif Return /******************************************************************************************/ static function BaixarXML( cChave, cCaptcha, hInput, oDialog, lSemParametros, cPasta ) /* */ Local p, oInternet, cParm, cRetorno := '', cHtml := '', c_span := '' Local nIni, cPart, cParte, nFim, cFile, nTamTag, nTotPro if Len( Alltrim(cChave) ) < 44 MsgStop( 'Chave tem que ter 44 digitos!', 'Atenção!') hInput['Chave']:setFocus() return endif if Len( Alltrim(cCaptcha) ) < 6 MsgStop( 'Favor informar o captcha corretamente!', 'Atenção!') hInput['Captcha']:setFocus() return endif // Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL} // TAM_LABEL se ZERO pega tudo, se MAIOR que ZERO pega o tamanho no início e se MENOR que ZERO exclui o tamanho no início e pega o restante AADD(s_aIde,{{"","cUF","ide",21,"Chave de Acesso",2},; //1- tratamento especial {"","cNF","",0,"Número",0},; //2- tratamento especial {"","natOp","",0,"Natureza da Operação",0},; //3- {"","indPag","",0,"Forma de Pagamento",1},; //4- {"","mod","",0,"Modelo",0},; //5- {"","serie","",0,"Série",0},; //6- {"","nNF","",0,"Número",0},; //7- {"","dhEmi","",0,"Data de Emissão",0},; //8- tratamento especial {"","dhSaiEnt","",0,"Entrada",0},; //9- tratamento especial {"","tpNF","",0,"Tipo da Operação",1},; //10- {"","idDest","",0,"Destino da operação",1},; //11- {"","cMunFG","",0,"Município da Ocorrência do Fato Gerador do ICMS",0},; //12- {"","tpImp","",0,"Formato de Impressão DANFE",1},; //13- tratamento especial {"","tpEmis","",0,"Tipo de Emissão",1},; //14- {"","cDV","",0,"Chave de Acesso",0},; //15- tratamento especial {"","tpAmb","",0,"Ambiente de autorização:",0},; //16- tratamento especial {"","finNFe","",0,"Finalidade",1},; //17- {"","indFinal","",0,"Consumidor final",1},; //18- {"","indPres","",0,"Presença do Comprador",1},; //19- {"","procEmi","",0,"Processo",1},; //20- {"","verProc","",0,"Versão do Processo",0}}) //21- AADD(s_aEmit,{{"","CNPJ","emit",20,"CNPJ",0},; //1- tratamento especial {"","CPF","",0,"CPF",0},; //2- {"","xNome","",0,"Nome / Razão Social",0},; //3- {"","xFant","",0,"Nome Fantasia",0},; //4- {"","xLgr","enderEmit",15,"Endereço",0},; //5- tratamento especial {"","nro","",0,"Endereço",0},; //6- tratamento especial {"","xCpl","",0,"Endereço",0},; //7- tratamento especial {"","xBairro","",0,"Bairro / Distrito",0},; //8- {"","cMun","",0,"Município",7},; //9- {"","xMun","",0,"Município",-10},; //10- {"","UF","",0,"UF",0},; //11- {"","CEP","",0,"CEP",0},; //12- tratamento especial {"","cPais","",0,"País",4},; //13- {"","xPais","",0,"País",-7},; //14- {"","fone","",0,"Telefone",0},; //15- tratamento especial {"","IE","",0,"Inscrição Estadual",0},; //16- {"","IEST","",0,"Inscrição Estadual do Substituto Tributário",0},; //17- {"","IM","",0,"Inscrição Municipal",0},; //18- {"","CNAE","",0,"CNAE Fiscal",0},; //19- {"","CRT","",0,"Código de Regime Tributário",1}}) //20- AADD(s_aDest,{{"","CNPJ","dest",20,"CNPJ",0},; //1- {"","CPF","",0,"CPF",0},; //2- {"","idEstrangeiro","",0,"",0},; //3- {"","xNome","",0,"Nome / Razão Social",0},; //4- {"","xLgr","enderDest",15,"Endereço",0},; //5- tratamento especial {"","nro","",0,"Endereço",0},; //6- tratamento especial {"","xCpl","",0,"Endereço",0},; //7- tratamento especial {"","xBairro","",0,"Bairro / Distrito",0},; //8- {"","cMun","",0,"Município",7},; //9- {"","xMun","",0,"Município",-10},; //10- {"","UF","",0,"UF",0},; //11- {"","CEP","",0,"CEP",0},; //12- tratamento especial {"","cPais","",0,"País",4},; //13- {"","xPais","",0,"País",-7},; //14- {"","fone","",0,"Telefone",0},; //15- tratamento especial {"","indIEDest","",0,"Indicador IE",2},; //16- tratamento especial {"","IE","",0,"Inscrição Estadual",0},; //17- {"","ISUF","",0,"Inscrição SUFRAMA",0},; //18- {"","IM","",0,"IM",0},; //19- {"","email","",0,"E-mail",0}}) //20- //Conteudo elementos da Matriz = {VALOR_TAG,TAG,LABEL_HTML} AADD(s_aTotais,{{"0.00","vBC","Base de Cálculo ICMS"},; //1- {"0.00","vICMS","Valor do ICMS"},; //2- {"0.00","vICMSDeson","Valor do ICMS Desonerado"},; //3- {"0.00","vFCPUFDest","Valor Total ICMS FCP"},; //4- {"0.00","vBCST","Base de Cálculo ICMS ST"},; //5- {"0.00","vST","Valor ICMS Substituição"},; //6- {"0.00","vProd","Valor Total dos Produtos"},; //7- {"0.00","vFrete","Valor do Frete"},; //8- {"0.00","vSeg","Valor do Seguro"},; //9- {"0.00","vDesc","Valor Total dos Descontos"},; //10- {"0.00","vII","Valor Total do II"},; //11- {"0.00","vIPI","Valor Total do IPI"},; //12- {"0.00","vPIS","Valor do PIS"},; //13- {"0.00","vCOFINS","Valor da COFINS"},; //14- {"0.00","vOutro","Outras Despesas Acessórias"},; //15- {"0.00","vNF","Valor Total da NFe"}}) //16- //Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL} AADD(s_aTransp,{{"","modFrete","transp",17,"Modalidade do Frete",1},; //1- {"","CNPJ","transporta",8,"CNPJ",0},; //2- {"","CPF","",0,"CPF",0},; //3- {"","xNome","",0,"Razão Social / Nome",0},; //4- {"","IE","",0,"Inscrição Estadual",0},; //5- {"","xEnder","",0,"Endereço Completo",0},; //6- {"","xMun","",0,"Município",0},; //7- {"","UF","",0,"UF",0},; //8- {"",'placa','veicTransp',11,'Placa',0},; //9- {"","UF","",0,"UF",0},; //10- {"","RNTC","",0,"RNTC",0},; //11- {"","qVol","vol",17,"Quantidade",0},; //12- {"","esp","",0,"Espécie",0},; //13- {"","marca","",0,"Marca dos Volumes",0},; //14- {"","nVol","",0,"Volume",0},; //15- {"","pesoL","",0,"Peso Líquido",0},; //16- {"","pesoB","",0,"Peso Bruto",0}}) //17- //Conteudo elementos da Matriz = {VALOR_TAG,TAG} AADD(s_aCobr,{{"","nDup"},; //1- {"","dVenc"},; //2- {"","vDup"},; //3- {"","nDup"},; //4- {"","dVenc"},; //5- {"","vDup"},; //6- {"","nDup"},; //7- {"","dVenc"},; //8- {"","vDup"},; //9- {"","nDup"},; //10- {"","dVenc"},; //11- {"","vDup"},; //12- {"","nDup"},; //13- {"","dVenc"},; //14- {"","vDup"},; //15- {"","nDup"},; //16- {"","dVenc"},; //17- {"","vDup"},; //18- {"","nDup"},; //19- {"","dVenc"},; //20- {"","vDup"},; //21- {"","nDup"},; //22- {"","dVenc"},; //23- {"","vDup"},; //24- {"","nDup"},; //25- {"","dVenc"},; //26- {"","vDup"},; //27- {"","nDup"},; //28- {"","dVenc"},; //29- {"","vDup"}}) //30- If !DigitoChave(cChave) Return .f. EndIf cParm := {{ "__EVENTARGUMENT", "" },; { "__EVENTTARGET", "" },; { "__EVENTVALIDATION", s_cEventValidation },; { "__VIEWSTATE", s_cViewState },; { "__VIEWSTATEGENERATOR", s_cViewStateGenerator },; { "ctl00$ContentPlaceHolder1$btnConsultar", "Continuar" },; { "ctl00$ContentPlaceHolder1$captchaSom", s_cHiddenSom},; { "ctl00$ContentPlaceHolder1$token", s_cHiddenToken },; { "ctl00$ContentPlaceHolder1$txtCaptcha", cCaptcha },; { "ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta", cChave },; { "ctl00$txtPalavraChave", "" },; { "hiddenInputToUpdateATBuffer_CommonToolkitScripts", "1"}} Try oInternet := TIPClientHttp():New(URL_CONSULTA_COMPLETA) Catch MsgInfo("Erro na Criação do Serviço!", "1-Atenção!") Return .f. End oInternet:SetCookie(s_cStringCookie) If oInternet:Open() If oInternet:POST(cParm) cRetorno := oInternet:ReadAll() Else MsgInfo("Erro no Post " + URL_CONSULTA, "Atenção!") Return .f. EndIf Else MsgInfo("Erro na Conexão!", "Atenção!") Return .f. EndIf oInternet:Close() If At('id="ctl00_ContentPlaceHolder1_bltMensagensErro" class="listaErro">', cRetorno) > 0 cPart := Substr(cRetorno, (At('id="ctl00_ContentPlaceHolder1_bltMensagensErro" class="listaErro">', cRetorno) + 66)) cPart := Substr(cPart, (At('<li>', cPart) + 4)) MsgInfo(Troca_Acento(SubStr(cPart, 1, (At('</li>', cPart) - 1))), "Atenção!") Return .f. EndIf Try oInternet := TIPClientHTTP():New(URL_CONSULTA_COMPLETA) oInternet:nConnTimeout := 10000 Catch MsgInfo('Erro na Criação do Serviço', '2-Atenção!') Return .f. End oInternet:SetCookie(s_cStringCookie) If oInternet:Open() cHtml := oInternet:ReadAll() s_cStringCookie := oInternet:GetCookies() Else MsgInfo('Erro na Conexão!', 'Atenção!') Return .f. EndIf oInternet:Close() If At('id="ctl00_ContentPlaceHolder1_lblResultadoConsulta">', cHtml) > 0 cPart := Substr(cHtml, (At('id="ctl00_ContentPlaceHolder1_lblResultadoConsulta">', cHtml) + 52)) MsgInfo(SubStr(cPart, 1, (At('</span>', cPart) - 1)), 'Atenção!') Return .f. EndIf If !Empty(cHtml) nIni := At('<html><link ', cHtml) cParte := SubStr(cHtml, nIni) nIni := At('<div id="ctl00_ContentPlaceHolder1_divBotoesConsulta"', cParte) cParte := SubStr(cParte, 1, nIni - 1) nFim := At('</form>', cParte) cFile := SubStr(cParte, nFim) //memowrit('site.txt',cfile) nIni := RAt('fixo-prod-serv-numero',cFile) c_span := SubStr(cFile, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni nTotPro := Val(alltrim(SubStr(c_span,nIni,nTamTag))) //Conteudo elementos da Matriz = {VALOR_TAG,TAG,LABEL_HTML,TAM_LABEL} For p := 1 to nTotPro AADD(s_aDet,{{"","cProd","Código do Produto",0},; //1- {"","cEAN","Código EAN Comercial",0},; //2- {"","xProd","fixo-prod-serv-descricao",0},; //3- {"","NCM","Código NCM",0},; //4- {"","NVE","",0},; //5- {"","CEST","Código CEST",0},; //6- {"","EXTIPI","Código EX da TIPI",0},; //7- {"","CFOP","CFOP",0},; //8- {"","uCom","Unidade Comercial",0},; //9- {"","qCom","Quantidade Comercial",0},; //10- {"","vUnCom","Valor unitário de comercialização",0},; //11- {"","vProd","fixo-prod-serv-vb",0},; //12- {"","cEANTrib","Código EAN Tributável",0},; //13- {"","uTrib","Unidade Tributável",0},; //14- {"","qTrib","Quantidade Tributável",0},; //15- {"","vUnTrib","Valor unitário de tributação",0},; //16- {"","vFrete","Valor Total do Frete",0},; //17- {"","vSeg","Valor do Seguro",0},; //18- {"","vDesc","Valor do Desconto",0},; //19- {"","vOutro","Outras Despesas Acessórias",0},; //20- {"","indTot","Indicador de Composição do Valor Total da NF-e",1},; //21- {"","nItemPed","Item do pedido de compra",0}}) //22- AADD(s_aMedicamentos, {{"","Lote",'Nro. do Lote', 0},; //1- {"","qLote",'Quantidade de produtos no lote', 0},; //2- {"","dFab",'Data de fabricaçã', 0},; //3- {"","dVal",'Data de validade', 0},; //4- {"","vPMC",'Preço Máximo Consumido', 0},; //5- {"","infAdProd",'Descrição', 0}}) //6- AADD(s_aICMS,{{"","orig","Origem da Mercadoria",1},; //1- ICMS Normal e ST {"","CST","Tributação do ICMS",2},; //2- {"","CSOSN","Código de Situação da Operação",3},; //3- {"","modBC","Modalidade Definição da BC do ICMS",1},; //4- {"","pRedBC","Percentual Redução de BC do ICMS",0},; //5- {"","vBC","Base de Cálculo",0},; //6- {"","pICMS","Alíquota",0},; //7- {"","vICMS","Valor",0},; //8- {"","vICMSDeson","",0},; //9- {"","motDesICMS","",0},; //10- {"","modBCST","Modalidade de determinação da BC do ICMS ST",1},; //11- {"","pMVAST","Percentual Margem Valor Adicionado do ICMS ST",0},; //12- {"","pRedBCST","Percentual da Redução de BC do ICMS ST",0},; //13- {"","vBCST","Valor da BC do ICMS ST",0},; //14- {"","pICMSST","Alíquota do imposto do ICMS ST",0},; //15- {"","vICMSST","Valor do ICMS ST",0},; //16- {"","vBCSTRet","Valor da BC do ICMS ST retido",0},; //17- {"","vICMSSTRet","Valor do ICMS ST retido",0},; //18- {"","vICMSOp","",0},; //19- {"","pDif","",0},; //20- {"","vICMSDif","",0},; //21- {"","pCredSN","Alíquota aplicável de cálculo do crédito",0},; //22- {"","vCredICMSSN","Valor crédito do ICMS",0}}) //23- AADD(s_aIPI,{{"","cEnq","Código de Enquadramento", 3},; {"","CST","CST", 2},; //1- {"","vBC","Base de Cálculo", 0},; //2- {"","pIPI","Alíquota", 0},; //3- {"","vIPI","Valor IPI", 0},; //4- {"","qBCProd","", 0},; //5- {"","vAliqProd","", 0}}) //6- AADD(s_aPIS,{{"","CST","CST",2},; //1- {"","vBC","Base de Cálculo",0},; //2- {"","pPIS","Alíquota",0},; //3- {"","vPIS","Valor",0},; //4- {"","qBCProd","",0},; //5- {"","vAliqProd","",0}}) //6- AADD(s_aCOFINS,{{"","CST","CST",2},; //1- {"","vBC","Base de Cálculo",0},; //2-vBC {"","pCOFINS","Alíquota",0},; //3- {"","vCOFINS","Valor",0},; //4- {"","qBCProd","",0},; //5- {"","vAliqProd","",0}}) //6- Next nIni := At('<div class="GeralXslt"',cFile) cParte := SubStr(cFile, nIni) nIni := At('<div id="Emitente"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //ide GeraTag("ide", cParte, cFile, cChave) nIni := At('<div id="Emitente"',cFile) cParte := SubStr(cFile, nIni) nIni := At('</div>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //emit GeraTag("emit", cParte, cFile, cChave) nIni := At('<div id="DestRem"',cFile) cParte := SubStr(cFile, nIni) nIni := At('</div>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //dest GeraTag("dest",cParte, cFile, cChave) nIni := At('<td class="fixo-prod-serv-numero"><span>', cFile) cParte := SubStr(cFile, nIni) nIni := At('</body></html>', cParte) cParte := SubStr(cParte, 1, nIni - 1) //det GeraTag("det", cParte, cFile, cChave) nIni := At('<legend class="titulo-aba">Totais</legend>',cFile) cParte := SubStr(cFile, nIni+42) nIni := At('<div id="aba_nft_5"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //totais GeraTag("totais", cParte, cFile, cChave) nIni := At('Dados do Transporte</legend>',cFile) cParte := SubStr(cFile, nIni+29) nIni := At('<div id="Cobranca"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //transp GeraTag("transp", cParte, cFile, cChave) nIni := At('<legend>Duplicatas</legend><table',cFile) if nIni > 0 cParte := SubStr(cFile, nIni) nIni := At('</table>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //cobr GeraTag("cobr", cParte, cFile, cChave) endif GravaXML(cChave, hInput, oDialog, lSemParametros, cPasta) Else MsgInfo('Erro ao ler retorno da Consulta!', 'Atenção!') Return .f. EndIf Return .t. /***********************************************************/ static Function DigitoChave(cCodigoChave) /* */ Local cIndice := '4329876543298765432987654329876543298765432' Local nDigito, nContador, nSoma := 0 For nContador := 1 to 43 nSoma += (Val(SubStr(cCodigoChave, nContador, 1)) * Val(SubStr(cIndice, nContador, 1))) Next nDigito := (nSoma % 11) If nDigito == 0 .Or. nDigito == 1 nDigito := 0 Else nDigito := (11 - nDigito) EndIf If SubStr(cCodigoChave, 44, 1) != LTrim(Str(nDigito, 1)) MsgStop('A chave informada é inválida!', 'Atenção!') Return .f. EndIf Return .t. /********************************************************************/ static Function Troca_Acento( cTexto ) /* */ cTexto := StrTran( cTexto, "&#243;", "ó" ) cTexto := StrTran( cTexto, "&#225;", "á" ) cTexto := StrTran( cTexto, "&#233;", "é" ) Return cTexto /*******************************************************************/ static Function GeraTag( _tag, cParte, cFile, cChave ) /* */ Local i, cPar_, c_Tag, nTamTag, nIni, c_span, cPar1_, nFim if _tag=="ide" cPar_:= StrTran(cFile,Chr(13)+Chr(10),"") cPar_:= StrTran(cPar_,Chr(160),"") nIni := At('<legend>Informações Complementares de Interesse do Contribuinte</legend>', cPar_) if nIni>0 c_span := SubStr(cPar_, nIni+70) nIni := AT('<div style="word-wrap: break-word">',c_span) c_span := SubStr(c_span, nIni+35) nIni := AT('</div></span>',c_span) s_cinfCpl := alltrim(SubStr(c_span,1,nIni-1)) endif cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT('Situação Atual:',cPar_) c_span := SubStr(cPar_, nIni+15) nIni := AT('(Ambiente de autorização:',c_span) s_cxMotivo := Alltrim(SubStr(c_span,1,nIni-1)) if "AUTORIZADA" $ s_cxMotivo s_ccStat := "100" s_cxMotivo := "Autorizado o uso da NF-e" endif if "CANCELADA" $ s_cxMotivo s_ccStat := "101" s_cxMotivo := "Cancelamento de NF-e homologado" endif nIni := AT('Data Inclusão AN</label></td></tr><tr><td><span>',cPar_) c_span := SubStr(cPar_, nIni+50) nIni := AT('<span>',c_span)+6 nTamTag := AT('<input',c_span)-nIni s_cnProt := alltrim(SubStr(c_span,nIni,nTamTag)) c_span := SubStr(c_span, nIni+nTamTag) nIni := AT('<span>',c_span)+6 c_span := SubStr(c_span,nIni) nTamTag := AT('</span>',c_span)-1 //nIni s_cDhRecbto := alltrim(SubStr(c_span,1,nTamTag)) s_cDhRecbto := SubStr(s_cDhRecbto,7,4)+"-"+SubStr(s_cDhRecbto,4,2)+"-"+left(s_cDhRecbto,2)+"T"+Right(s_cDhRecbto,14) nIni := AT('<i>Digest</i> Value da NF-e',cPar_) c_span := SubStr(cPar_, nIni+20) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni s_cDigVal := alltrim(SubStr(c_span,nIni,nTamTag)) nIni := AT('Versão XML',cParte) c_span := SubStr(cParte, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni s_cVersao := alltrim(SubStr(c_span,nIni,nTamTag)) For i := 1 to Len(s_aIde[1]) cPar_:= cParte if i == 12 cPar_:= cFile endif if i == 13 cPar_:= cFile endif nIni := AT(s_aIde[1,i,5],cPar_) c_span := SubStr(cPar_, nIni) if i != 16 nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := alltrim(SubStr(c_span, nIni, nTamTag)) else nIni := AT('</legend>', c_span) c_tag := alltrim(SubStr(c_span, 1, nIni - 1)) if AT('produção', c_tag) > 0 c_tag := "1" else c_tag := "2" endif s_cTpAmb := c_tag endif if i == 2 c_tag := SubStr(cChave, 36, 8) //c_tag:= StrZero(Val(c_tag), 9) endif if i == 8 .or. i == 9 if !Empt(c_tag) c_tag := SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2)+"T"+SubStr(c_tag,12) endif endif if i == 15 c_tag := right(c_tag,1) endif if s_aIde[1,i,6]!=0 if s_aIde[1,i,6]>0 c_tag := left(c_tag,s_aIde[1,i,6]) else c_tag := SubStr(c_tag,Abs(s_aIde[1,i,6])+1) endif endif s_aIde[1,i,1] := c_tag Next endif if _tag == "emit" For i := 1 to Len(s_aEmit[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aEmit[1,i,5],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := Alltrim(SubStr(c_span,nIni,nTamTag)) if i >= 1 .and. i <= 2 c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,"/","") c_tag := StrTran(c_tag,"-","") endif if i >= 5 .and. i <= 7 nIni := AT(",",c_tag) if i == 5 c_tag := Left(c_tag,nIni-1) elseif i == 6 c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := Left(c_tag, nIni - 1) endif else c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := alltrim(SubStr(c_tag, nIni + 1)) else c_tag := "" endif endif endif if i == 12 c_tag := StrTran(c_tag,"-","") endif if i==15 c_tag := StrTran(c_tag,"(","") c_tag := StrTran(c_tag,")","") c_tag := StrTran(c_tag,"-","") endif if s_aEmit[1, i, 6] != 0 if s_aEmit[1, i, 6] > 0 c_tag := left(c_tag,s_aEmit[1, i, 6]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aEmit[1, i, 6]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif s_aEmit[1, i, 1] := c_tag endif Next endif if _tag == "dest" For i := 1 to Len(s_aDest[1]) cPar_ := StrTran(cParte, Chr(13) + Chr(10), "") cPar_ := StrTran(cPar_, Chr(160), "") nIni := AT(s_aDest[1, i, 5], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if i >= 1 .and. i <= 2 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, "/", "") c_tag := StrTran(c_tag, "-", "") endif If i >= 5 .and. i <= 7 nIni := AT(",", c_tag) if i == 5 c_tag := Left(c_tag,nIni-1) elseif i == 6 c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := Left(c_tag, nIni - 1) endif else c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := alltrim(SubStr(c_tag, nIni + 1)) else c_tag := "" endif endif EndIf if i == 12 c_tag := StrTran(c_tag, "-", "") endif if i == 15 c_tag := StrTran(c_tag, "(", "") c_tag := StrTran(c_tag, ")", "") c_tag := StrTran(c_tag, "-", "") endif if i==16 c_tag := alltrim(Str(Val(c_tag))) endif if s_aDest[1, i, 6] != 0 if s_aDest[1, i, 6] > 0 c_tag := left(c_tag, s_aDest[1, i, 6]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aDest[1,i,6]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif s_aDest[1, i, 1] := c_tag endif Next endif if _tag == "det" cPar_ := StrTran(cParte, Chr(13) + Chr(10), "") cPar_ := StrTran(cPar_, Chr(160), "") For p := 1 to Len(s_aDet) For i := 1 to Len(s_aDet[p]) nIni := At(s_aDet[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>',c_span)+6 nTamTag := At('</span>',c_span)-nIni c_tag := AllTrim(SubStr(c_span,nIni,nTamTag)) if s_aDet[p, i, 4] != 0 if s_aDet[p, i, 4] > 0 c_tag := left(c_tag, s_aDet[p, i, 4]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aDet[p, i, 4]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif If i != 3 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") endIf s_aDet[p, i, 1] := c_tag endif Next For i := 1 To Len(s_aICMS[p]) nIni := At(s_aICMS[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) If s_aICMS[p, i, 4] != 0 if s_aICMS[p, i, 4] > 0 c_tag := Left(c_tag, s_aICMS[p, i, 4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aICMS[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aICMS[p, i, 1] := c_tag endif Next nIni := AT('<legend>Imposto Sobre Produtos Industrializados</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 To Len(s_aIPI[p]) nIni := AT(s_aIPI[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aIPI[p, i, 4] != 0 if s_aIPI[p, i, 4] > 0 c_tag := Left(c_tag, s_aIPI[p, i, 4]) else c_tag := Alltrim(SubStr(c_tag, Abs(s_aIPI[p, i, 4]) + 1)) c_tag := Alltrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aIPI[p, i, 1] := c_tag endif Next endif nIni := At('<legend class="toggle">PIS</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aPIS[p]) nFim := At('<td class="fixo-prod-serv-numero"><span>', cPar_) cPar1_:= SubStr(cPar_, 1, nFim) nIni := AT(s_aPIS[p, i, 3], cPar1_) if nIni > 0 c_span := SubStr(cPar1_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aPIS[p,i,4] != 0 if s_aPIS[p,i,4] > 0 c_tag := Left(c_tag,s_aPIS[p,i,4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aPIS[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aPIS[p, i, 1] := c_tag endif Next endif nIni := AT('<legend class="toggle">COFINS</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aCOFINS[p]) nFim := At('<td class="fixo-prod-serv-numero">', cPar_) cPar1_:= SubStr(cPar_, 1, nFim) nIni := AT(s_aCOFINS[p, i, 3], cPar1_) if nIni > 0 c_span := SubStr(cPar1_, nIni) nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := alltrim(SubStr(c_span, nIni, nTamTag)) if s_aCOFINS[p, i, 4] != 0 if s_aCOFINS[p, i, 4] > 0 c_tag := left(c_tag, s_aCOFINS[p, i, 4]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aCOFINS[p, i, 4]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aCOFINS[p, i, 1] := c_tag endif Next endif nIni := At('<legend>Detalhamento específico dos medicamentos</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aMedicamentos[p]) nIni := AT(s_aMedicamentos[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aMedicamentos[p,i,4] != 0 if s_aMedicamentos[p,i,4] > 0 c_tag := Left(c_tag,s_aMedicamentos[p,i,4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aMedicamentos[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif If i != 6 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") endif if StrZero(i, 2) $ "-03-04" c_tag:=SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2) endif s_aMedicamentos[p, i, 1] := c_tag endif Next endif nIni := At('<td class="fixo-prod-serv-numero"><span>', cPar_) cPar_ := SubStr(cPar_, nIni) Next endif if _tag=="totais" For i := 1 to Len(s_aTotais[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aTotais[1,i,3],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := alltrim(SubStr(c_span,nIni,nTamTag)) c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,",",".") s_aTotais[1,i,1] := c_tag endif Next endif if _tag=="transp" For i := 1 to Len(s_aTransp[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aTransp[1,i,5],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := alltrim(SubStr(c_span,nIni,nTamTag)) if i >= 2 .and. i <= 3 c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,"/","") c_tag := StrTran(c_tag,"-","") endif if s_aTransp[1,i,6] != 0 if s_aTransp[1,i,6]>0 c_tag := left(c_tag,s_aTransp[1,i,6]) else c_tag := alltrim(SubStr(c_tag,Abs(s_aTransp[1,i,6])+1)) c_tag := alltrim(StrTran(c_tag,"-","")) endif endif s_aTransp[1,i,1] := c_tag endif Next endif if _tag == "cobr" cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") For i := 1 to Len(s_aCobr[1]) nIni := AT('<span>',cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni+6) nTamTag := AT('</span>',cPar_)-1 c_tag := alltrim(SubStr(cPar_,1,nTamTag)) c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,",",".") if StrZero(i,2) $ "-02-05-08-11-14-17-20-23-26-29" c_tag := SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2) endif s_aCobr[1,i,1] := c_tag else Exit endif Next endif return Nil /**************************************************************************************************/ static function GravaXML(cChave, hInput, oDialog, lSemParametros, cPasta) /* */ Local i, p, lTemTag, cTagPai, nFimTagPai, nIni, cTag, nArqHandle, cArqXml, cTag_ Local cXML :='<?xml version="1.0" encoding="UTF-8"?><nfeProc versao="'+s_cVersao+'" xmlns="http://www.portalfiscal.inf.br/nfe"><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe versao="'+s_cVersao+'" Id="NFe'+cChave+'">' cTagPai := "" nFimTagPai := 0 For i := 1 to Len(s_aIde[1]) if !Empt(s_aIde[1,i,3]) nFimTagPai := s_aIde[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aIde[1,i,3] cXML += '<'+s_aIde[1,i,3]+'>' endif if !Empty(s_aIde[1,i,1]) cXML += '<'+s_aIde[1,i,2]+'>'+s_aIde[1,i,1]+'</'+s_aIde[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For i := 1 to Len(s_aEmit[1]) if !Empty(s_aEmit[1,i,3]) nFimTagPai := s_aEmit[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aEmit[1,i,3] cXML += '<'+s_aEmit[1,i,3]+'>' endif if !Empty(s_aEmit[1,i,1]) cXML += '<'+s_aEmit[1,i,2]+'>'+s_aEmit[1,i,1]+'</'+s_aEmit[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For i := 1 to Len(s_aDest[1]) if !Empt(s_aDest[1,i,3]) nFimTagPai := s_aDest[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aDest[1,i,3] cXML += '<'+s_aDest[1,i,3]+'>' endif if !Empt(s_aDest[1,i,1]) cXML += '<'+s_aDest[1,i,2]+'>'+s_aDest[1,i,1]+'</'+s_aDest[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For p := 1 to Len(s_aDet) cXML += '<det nItem="'+alltrim(Str(p))+'"><prod>' For i := 1 to Len(s_aDet[p]) if !Empt(s_aDet[p,i,1]) cXML += '<'+s_aDet[p,i,2]+'>'+s_aDet[p,i,1]+'</'+s_aDet[p,i,2]+'>' endif Next lTemTag := .F. For i := 1 to Len(s_aMedicamentos[p]) if i == 1 if !Empty(s_aMedicamentos[p,i,1]) cXML += '<med><nLote>' + s_aMedicamentos[p,i,1] + '</nLote>' lTemTag := .t. endif Else if !Empty(s_aMedicamentos[p,i,1]) If i == 6 s_cDiscAdicional := '<'+s_aMedicamentos[p,i,2]+'>'+ s_aMedicamentos[p,i,1] + '</'+s_aMedicamentos[p,i,2]+'>' Else cXML += '<'+s_aMedicamentos[p,i,2]+'>'+ s_aMedicamentos[p,i,1] + '</'+s_aMedicamentos[p,i,2]+'>' Endif endif EndIf Next if lTemTag cXML += '</med>' endif cXML += '</prod><imposto><ICMS>' cTag_ := 'ICMS' For i := 1 to Len(s_aICMS[p]) if i == 1 if !Empty(s_aICMS[p, 2, 1]) cTag_ += s_aICMS[p, 2, 1] else cTag_ += 'SN' + s_aICMS[p, 3, 1] endif cXML += '<' + cTag_ + '>' endif if !Empty(s_aICMS[p, i, 1]) If s_aICMS[p, 2, 1] == '00' If StrZero(i, 2) $ "-01-02-04-06-07-08" cXML += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '10' If StrZero(i, 2) $ "-01-02-04-06-07-08-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '20' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '30' If StrZero(i, 2) $ "-01-02-11-12-13-14-15-16-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '40' .or. s_aICMS[p, 2, 1] == '41' .Or. s_aICMS[p, 2, 1] == '50' If StrZero(i, 2) $ "-01-02-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '51' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-19-20-21" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '60' If StrZero(i, 2) $ "-01-02-17-18" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '70' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-09-10-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '90' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf Else cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf endif Next cXML += '</'+cTag_+'></ICMS>' lTemTag := .F. For i := 1 to Len(s_aIPI[p]) if i == 1 if !Empty(s_aIPI[p,i,1]) cXML += '<IPI><cEnq>' + s_aIPI[p,i,1] + '</cEnq><IPITrib>' lTemTag := .T. endif Else if !Empty(s_aIPI[p,i,1]) cXML += '<'+s_aIPI[p,i,2]+'>'+ s_aIPI[p,i,1] + '</'+s_aIPI[p,i,2]+'>' endif EndIf Next if lTemTag cXML += '</IPITrib></IPI>' endif lTemTag := .F. For i:= 1 to Len(s_aPIS[p]) if i == 1 if !Empty(s_aPIS[p, i, 1]) If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '<PIS><PISAliq>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '<PIS><PISQte>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '<PIS><PISNT>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML += '<PIS><PISOutr>' EndIf lTemTag := .T. endif endif if !Empty(s_aPIS[p, i, 1]) cXML += '<' + s_aPIS[p,i,2] + '>' + s_aPIS[p,i,1] + '</' + s_aPIS[p,i,2] + '>' endif Next if lTemTag If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '</PISAliq></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '</PISQte></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '</PISNT></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML+= '</PISOutr></PIS>' EndIf endif lTemTag := .F. For i := 1 to Len(s_aCOFINS[p]) if i == 1 if !Empty(s_aCOFINS[p,i,1]) If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '<COFINS><COFINSAliq>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '<COFINS><COFINSQte>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '<COFINS><COFINSNT>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML += '<COFINS><COFINSOutr>' EndIf lTemTag := .T. endif endif if !Empty(s_aCOFINS[p,i,1]) cXML += '<' + s_aCOFINS[p, i, 2] + '>' + s_aCOFINS[p, i, 1] + '</' + s_aCOFINS[p, i, 2] + '>' endif Next if lTemTag If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '</COFINSAliq></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '</COFINSQte></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '</COFINSNT></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML+= '</COFINSOutr></COFINS>' EndIf endif cXML += '</imposto>' If !Empty(s_cDiscAdicional) cXml += s_cDiscAdicional EndIf cXML += '</det>' Next cXML += '<total><ICMSTot>' For i := 1 to Len(s_aTotais[1]) if !Empty(s_aTotais[1,i,1]) cXML+='<'+s_aTotais[1,i,2]+'>'+s_aTotais[1,i,1]+'</'+s_aTotais[1,i,2]+'>' endif Next cXML += '</ICMSTot></total>' For i := 1 to Len(s_aTransp[1]) if !Empty(s_aTransp[1,i,3]) nFimTagPai := s_aTransp[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aTransp[1,i,3] cXML += '<'+s_aTransp[1,i,3]+'>' endif if !Empty(s_aTransp[1,i,1]) cXML += '<'+s_aTransp[1,i,2]+'>'+s_aTransp[1,i,1]+'</'+s_aTransp[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif if SubStr(cTag,3) == "vol" cXML += '</transp>' endif endif Next if !Empty(s_aCobr[1,1,1]) cXML += '<cobr>' For i := 1 to Len(s_aCobr[1]) if !Empty(s_aCobr[1,i,1]) if StrZero(i,2) $ "-01-04-07-10-13-16-19-22-25-28" if i > 2 cXML += '</dup>' endif cXML += '<dup>' endif cXML += '<'+s_aCobr[1,i,2]+'>'+s_aCobr[1,i,1]+'</'+s_aCobr[1,i,2]+'>' endif Next cXML += '</dup></cobr>' endif if !Empty(s_cinfCpl) .or. !Empty(s_cInfAdFisco) cXML += '<infAdic>' if !Empty(s_cInfAdFisco) cXML += '<infAdFisco>'+s_cInfAdFisco+'</infAdFisco>' endif if !Empty(s_cinfCpl) cXML += '<infCpl>'+s_cinfCpl+'</infCpl>' endif cXML += '</infAdic>' endif cXML += '</infNFe>' cXML += '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />' cXML += '<Reference URI="#NFe'+cChave+'">' cXML += '<Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />' cXML += '<DigestValue>'+s_cDigVal+'</DigestValue></Reference></SignedInfo><SignatureValue></SignatureValue><KeyInfo></KeyInfo></Signature></NFe>' cXML += '<protNFe versao="'+s_cVersao+'"><infProt>' cXML += '<tpAmb>'+s_cTpAmb+'</tpAmb><verAplic>'+s_cVerAplic+'</verAplic><chNFe>'+cChave+'</chNFe><dhRecbto>'+s_cDhRecbto+'</dhRecbto>' cXML += '<nProt>'+s_cnProt+'</nProt><digVal>'+s_cDigVal+'</digVal><cStat>'+s_ccStat+'</cStat><xMotivo>'+s_cxMotivo+'</xMotivo>' cXML += '</infProt></protNFe></nfeProc>' cArqXml := cPasta + '\' + cChave + '.xml' nArqHandle := FCreate(cArqXml, 0 ) FWrite(nArqHandle,cXML) FClose(nArqHandle) MsgInfo( 'Download realizado com sucesso! Arquivo gerado:' + CRLF + cArqXml, 'NF-e ') if lSemParametros AtualizaCaptcha( hInput ) hInput['Chave' ]:cText( Space( 44 ) ) hInput['Captcha']:cText( Space( 6 ) ) hInput['Chave' ]:setFocus() else oDialog:end() endif return nil
  20. corrigindo esqueci que no mysql, os dados a serem gravados, devem estar entre aspas ("), por isso você usou aspas demais, coloquei o chr(34) que é ASPAS: cComm := "INSERT INTO atualiza ( bin_atualiza ) VALUES ( "+chr(34) + SR_EscapeString( cText, 3 ) +chr(34) +");"
  21. pelo que eu vi tem uns erro, exemplo, falta o ponto-e-vírgula, no final comigo, se eu não colocar o ponto-e-vírgula, dá esse erro aí além disso, tem aspas demais no meio e tem um aspas simples no final, então eu faria assim: cComm := "INSERT INTO atualiza ( bin_atualiza ) VALUES ( " + SR_EscapeString( cText, 3 ) + ");"
  22. cHtml:=oIE:Document():All(0):OuterHTML olha a variável cHtml, e os comando depois da linha acima, dentro da rotina, Dentro da variável cHtml, ficha a página que contém os dados do xml da nfe capturada. ela baixa automático, falta corrigir o erro que mencionei
  23. Eroni, o seu exemplo deu erro ao executar, fiz algumas mudanças, a questão é: onde sua rotina baixa automaticamente o xml da nfe? como minha rotina acima, e o unico problema da minha rotina, é que não espera a digitação do captcha, e minha duvida como fazer aguardar
  24. Boa tarde, pessoal, Uso a rotina abaixo, para fazer o download do xml da nfe, direta do portal de sefaz, usando um link antigo, usando o captcha antigo: https://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3d Mas, ao clicar no botão para fazer o download, é apresentado a tela da sefaz, que pede a digitação do captcha antigo, mas a tela é fechada automaticamente e não espera digitar, como fazer para a tela aguardar???? // --------- Download XML NFe --------- // #include "fivewin.ch" #include "image.ch" #include "directry.ch" #include "fileio.ch" #include "tip.ch" #define URL_CONSULTA "https://www.nfe.fazenda.gov.br/portal/consultaResumoCompletaAntiga.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8%3d" // ---------------------------------------- // // Download XML // /******************************************************************************/ procedure DownloadNFe( cChave, cPasta ) local oDialog, oIcone, oFonte, hInput := HASH() // HB_Hash() local cCaptcha := Space( 6 ) local lSemParametros := Empty( PCount() ) if lSemParametros cChave := Space( 44 ) cPasta := '' endif MsgRun( 'Aguarde! Realizando Download do XML...',, {|| BaixarXML(cChave, cCaptcha, hInput, nil, lSemParametros, cPasta)}) return /***********************************************************************************/ static function BaixarXML( cChave, cCaptcha, hInput, oDialog, lSemParametros, cPasta ) Local p, oInternet, cParm, cRetorno := '', cHtml := '', c_span := '' Local nIni, cPart, cParte, nFim, cFile, nTamTag, nTotPro * Public s_cVersao := "", s_cTpAmb := "", s_cVerAplic := "", s_cDhRecbto := "", s_cnProt := "", s_cDigVal := "" Public s_cinfCpl := "", s_cInfAdFisco := "", s_cDiscAdicional := "", s_cxMotivo := "", s_ccStat := "" Public s_aIde := {}, s_aEmit := {}, s_aDest := {}, s_aDet := {}, s_aICMS := {}, s_aIPI := {} Public s_aTransp := {}, s_aCobr := {}, s_aMedicamentos := {}, s_aTotais := {}, s_aPIS := {}, s_aCOFINS := {} Public s_cViewState, s_cViewStateGenerator, s_cHiddenToken, s_cEventValidation, s_cStringCookie, s_cHiddenSom * // Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL} // TAM_LABEL se ZERO pega tudo, se MAIOR que ZERO pega o tamanho no início e se MENOR que ZERO exclui o tamanho no início e pega o restante * AADD(s_aIde,{{"","cUF","ide",21,"Chave de Acesso",2},; //1- tratamento especial {"","cNF","",0,"Número",0},; //2- tratamento especial {"","natOp","",0,"Natureza da Operação",0},; //3- {"","indPag","",0,"Forma de Pagamento",1},; //4- {"","mod","",0,"Modelo",0},; //5- {"","serie","",0,"Série",0},; //6- {"","nNF","",0,"Número",0},; //7- {"","dhEmi","",0,"Data de Emissão",0},; //8- tratamento especial {"","dhSaiEnt","",0,"Entrada",0},; //9- tratamento especial {"","tpNF","",0,"Tipo da Operação",1},; //10- {"","idDest","",0,"Destino da operação",1},; //11- {"","cMunFG","",0,"Município da Ocorrência do Fato Gerador do ICMS",0},; //12- {"","tpImp","",0,"Formato de Impressão DANFE",1},; //13- tratamento especial {"","tpEmis","",0,"Tipo de Emissão",1},; //14- {"","cDV","",0,"Chave de Acesso",0},; //15- tratamento especial {"","tpAmb","",0,"Ambiente de autorização:",0},; //16- tratamento especial {"","finNFe","",0,"Finalidade",1},; //17- {"","indFinal","",0,"Consumidor final",1},; //18- {"","indPres","",0,"Presença do Comprador",1},; //19- {"","procEmi","",0,"Processo",1},; //20- {"","verProc","",0,"Versão do Processo",0}}) //21- AADD(s_aEmit,{{"","CNPJ","emit",20,"CNPJ",0},; //1- tratamento especial {"","CPF","",0,"CPF",0},; //2- {"","xNome","",0,"Nome / Razão Social",0},; //3- {"","xFant","",0,"Nome Fantasia",0},; //4- {"","xLgr","enderEmit",15,"Endereço",0},; //5- tratamento especial {"","nro","",0,"Endereço",0},; //6- tratamento especial {"","xCpl","",0,"Endereço",0},; //7- tratamento especial {"","xBairro","",0,"Bairro / Distrito",0},; //8- {"","cMun","",0,"Município",7},; //9- {"","xMun","",0,"Município",-10},; //10- {"","UF","",0,"UF",0},; //11- {"","CEP","",0,"CEP",0},; //12- tratamento especial {"","cPais","",0,"País",4},; //13- {"","xPais","",0,"País",-7},; //14- {"","fone","",0,"Telefone",0},; //15- tratamento especial {"","IE","",0,"Inscrição Estadual",0},; //16- {"","IEST","",0,"Inscrição Estadual do Substituto Tributário",0},; //17- {"","IM","",0,"Inscrição Municipal",0},; //18- {"","CNAE","",0,"CNAE Fiscal",0},; //19- {"","CRT","",0,"Código de Regime Tributário",1}}) //20- AADD(s_aDest,{{"","CNPJ","dest",20,"CNPJ",0},; //1- {"","CPF","",0,"CPF",0},; //2- {"","idEstrangeiro","",0,"",0},; //3- {"","xNome","",0,"Nome / Razão Social",0},; //4- {"","xLgr","enderDest",15,"Endereço",0},; //5- tratamento especial {"","nro","",0,"Endereço",0},; //6- tratamento especial {"","xCpl","",0,"Endereço",0},; //7- tratamento especial {"","xBairro","",0,"Bairro / Distrito",0},; //8- {"","cMun","",0,"Município",7},; //9- {"","xMun","",0,"Município",-10},; //10- {"","UF","",0,"UF",0},; //11- {"","CEP","",0,"CEP",0},; //12- tratamento especial {"","cPais","",0,"País",4},; //13- {"","xPais","",0,"País",-7},; //14- {"","fone","",0,"Telefone",0},; //15- tratamento especial {"","indIEDest","",0,"Indicador IE",2},; //16- tratamento especial {"","IE","",0,"Inscrição Estadual",0},; //17- {"","ISUF","",0,"Inscrição SUFRAMA",0},; //18- {"","IM","",0,"IM",0},; //19- {"","email","",0,"E-mail",0}}) //20- //Conteudo elementos da Matriz = {VALOR_TAG,TAG,LABEL_HTML} AADD(s_aTotais,{{"0.00","vBC","Base de Cálculo ICMS"},; //1- {"0.00","vICMS","Valor do ICMS"},; //2- {"0.00","vICMSDeson","Valor do ICMS Desonerado"},; //3- {"0.00","vFCPUFDest","Valor Total ICMS FCP"},; //4- {"0.00","vBCST","Base de Cálculo ICMS ST"},; //5- {"0.00","vST","Valor ICMS Substituição"},; //6- {"0.00","vProd","Valor Total dos Produtos"},; //7- {"0.00","vFrete","Valor do Frete"},; //8- {"0.00","vSeg","Valor do Seguro"},; //9- {"0.00","vDesc","Valor Total dos Descontos"},; //10- {"0.00","vII","Valor Total do II"},; //11- {"0.00","vIPI","Valor Total do IPI"},; //12- {"0.00","vPIS","Valor do PIS"},; //13- {"0.00","vCOFINS","Valor da COFINS"},; //14- {"0.00","vOutro","Outras Despesas Acessórias"},; //15- {"0.00","vNF","Valor Total da NFe"}}) //16- //Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL} AADD(s_aTransp,{{"","modFrete","transp",17,"Modalidade do Frete",1},; //1- {"","CNPJ","transporta",8,"CNPJ",0},; //2- {"","CPF","",0,"CPF",0},; //3- {"","xNome","",0,"Razão Social / Nome",0},; //4- {"","IE","",0,"Inscrição Estadual",0},; //5- {"","xEnder","",0,"Endereço Completo",0},; //6- {"","xMun","",0,"Município",0},; //7- {"","UF","",0,"UF",0},; //8- {"",'placa','veicTransp',11,'Placa',0},; //9- {"","UF","",0,"UF",0},; //10- {"","RNTC","",0,"RNTC",0},; //11- {"","qVol","vol",17,"Quantidade",0},; //12- {"","esp","",0,"Espécie",0},; //13- {"","marca","",0,"Marca dos Volumes",0},; //14- {"","nVol","",0,"Volume",0},; //15- {"","pesoL","",0,"Peso Líquido",0},; //16- {"","pesoB","",0,"Peso Bruto",0}}) //17- //Conteudo elementos da Matriz = {VALOR_TAG,TAG} AADD(s_aCobr,{{"","nDup"},; //1- {"","dVenc"},; //2- {"","vDup"},; //3- {"","nDup"},; //4- {"","dVenc"},; //5- {"","vDup"},; //6- {"","nDup"},; //7- {"","dVenc"},; //8- {"","vDup"},; //9- {"","nDup"},; //10- {"","dVenc"},; //11- {"","vDup"},; //12- {"","nDup"},; //13- {"","dVenc"},; //14- {"","vDup"},; //15- {"","nDup"},; //16- {"","dVenc"},; //17- {"","vDup"},; //18- {"","nDup"},; //19- {"","dVenc"},; //20- {"","vDup"},; //21- {"","nDup"},; //22- {"","dVenc"},; //23- {"","vDup"},; //24- {"","nDup"},; //25- {"","dVenc"},; //26- {"","vDup"},; //27- {"","nDup"},; //28- {"","dVenc"},; //29- {"","vDup"}}) //30- // fazer o acesso nTentativas := 0 REPEAT && http://msdn.microsoft.com/en-us/library/aa752084(v=vs.85).aspx lErro:=.f. * Try oIE:=TOleAuto():New( "InternetExplorer.Application" ) Catch MsgStop("Procure o suporte: não foi possível inicializer InternetExplorer","Problemas no componente") lErro:=.t. End * if lErro return endif * Try oIE:ToolBar := .T. oIE:StatusBar := .T. oIE:MenuBar := .F. oIE:Visible := .T. * oIE:Navigate2(URL_CONSULTA) while oIE:Busy SysWait() end * oActdo:=oIE:Document() oActdo:All:Item("ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta",0):Value:=cChave SysWait() * GetWndDefault():Minimize() * hWndMain := WndMain():hWnd * StopUntil( { || !testarConteudoHTML(oIE) .or. !IsWindow( hWndMain )} ) * oIE:Visible := .F. * SysWait() while oIE:Busy SysWait() end * cHtml:=oIE:Document():All(0):OuterHTML while oIE:Busy SysWait() end Catch oErro nTentativas ++ if file("c:\desenv.sys") MsgStop(oErro:Description,"Erro") endif end TRY oIE:Quit() catch end Release oIE * cHtml:=strtran(cHtml,'&') cHtml:=strtran(cHtml,'nbsp;') * nTentativas ++ UNTIL At('Realizar consulta com captcha sonoro', cHtml) == 0 .or. nTentativas > 4 if At('Realizar consulta com captcha sonoro', cHtml) > 0 .or. nTentativas > 4 MsgAlert("Atenção tente novamente!","Atenção") return .f. endif * nArqHandle := FCreate("cHtml.TXT", 0 ) FWrite(nArqHandle,cHtml,LEN(cHtml)) FClose(nArqHandle) If !Empty(cHtml) nIni := At('<html', cHtml) cParte:= SubStr(cHtml, nIni) nIni := At('<div class="divLarguraMaxima" id="ctl00_ContentPlaceHolder1_divBotoesConsulta"', cParte) cParte:= SubStr(cParte, 1, nIni - 1) nFim := At('</form>', cParte) cFile := SubStr(cParte, nFim) // memowrit('site.txt',cfile) nIni := RAt('fixo-prod-serv-numero',cFile) c_span := SubStr(cFile, nIni) nIni := AT('<span>',c_span)+6 nTamTag:= AT('</span>',c_span)-nIni nTotPro:= 0 * nPosicaoAtual:=1 while (nPosicaoAtual:=At("fixo-prod-serv-numero",cHTML,nPosicaoAtual)) > 0 nTotPro++ nPosicaoAtual++ end if nTotPro > 0 nTotPro:=nTotPro-1 endif * //Val(AllTrim(SubStr(c_span,nIni,nTamTag))) * //Conteudo elementos da Matriz = {VALOR_TAG,TAG,LABEL_HTML,TAM_LABEL} For p := 1 to nTotPro AADD(s_aDet,{{"","xProd","fixo-prod-serv-descricao",0},; //3- {"","cProd","Código do Produto",0},; //1- {"","cEAN","Código EAN Comercial",0},; //2- {"","NCM","Código NCM",0},; //4- {"","NVE","",0},; //5- {"","CEST","Código CEST",0},; //6- {"","EXTIPI","Código EX da TIPI",0},; //7- {"","CFOP","CFOP",0},; //8- {"","uCom","Unidade Comercial",0},; //9- {"","qCom","Quantidade Comercial",0},; //10- {"","vUnCom","Valor unitário de comercialização",0},; //11- {"","vProd","fixo-prod-serv-vb",0},; //12- {"","cEANTrib","Código EAN Tributável",0},; //13- {"","uTrib","Unidade Tributável",0},; //14- {"","qTrib","Quantidade Tributável",0},; //15- {"","vUnTrib","Valor unitário de tributação",0},; //16- {"","vFrete","Valor Total do Frete",0},; //17- {"","vSeg","Valor do Seguro",0},; //18- {"","vDesc","Valor do Desconto",0},; //19- {"","vOutro","Outras Despesas Acessórias",0},; //20- {"","indTot","Indicador de Composição do Valor Total da NF-e",1},; //21- {"","nItemPed","Item do pedido de compra",0}}) //22- AADD(s_aMedicamentos, {{"","Lote",'Nro. do Lote', 0},; //1- {"","qLote",'Quantidade de produtos no lote', 0},; //2- {"","dFab",'Data de fabricaçã', 0},; //3- {"","dVal",'Data de validade', 0},; //4- {"","vPMC",'Preço Máximo Consumido', 0},; //5- {"","infAdProd",'Descrição', 0}}) //6- AADD(s_aICMS,{{"","orig","Origem da Mercadoria",1},; //1- ICMS Normal e ST {"","CST","Tributação do ICMS",2},; //2- {"","CSOSN","Código de Situação da Operação",3},; //3- {"","modBC","Modalidade Definição da BC do ICMS",1},; //4- {"","pRedBC","Percentual Redução de BC do ICMS",0},; //5- {"","vBC","Base de Cálculo",0},; //6- {"","pICMS","Alíquota",0},; //7- {"","vICMS","Valor",0},; //8- {"","vICMSDeson","",0},; //9- {"","motDesICMS","",0},; //10- {"","modBCST","Modalidade de determinação da BC do ICMS ST",1},; //11- {"","pMVAST","Percentual Margem Valor Adicionado do ICMS ST",0},; //12- {"","pRedBCST","Percentual da Redução de BC do ICMS ST",0},; //13- {"","vBCST","Valor da BC do ICMS ST",0},; //14- {"","pICMSST","Alíquota do imposto do ICMS ST",0},; //15- {"","vICMSST","Valor do ICMS ST",0},; //16- {"","vBCSTRet","Valor da BC do ICMS ST retido",0},; //17- {"","vICMSSTRet","Valor do ICMS ST retido",0},; //18- {"","vICMSOp","",0},; //19- {"","pDif","",0},; //20- {"","vICMSDif","",0},; //21- {"","pCredSN","Alíquota aplicável de cálculo do crédito",0},; //22- {"","vCredICMSSN","Valor crédito do ICMS",0}}) //23- AADD(s_aIPI,{{"","cEnq","Código de Enquadramento", 3},; {"","CST","CST", 2},; //1- {"","vBC","Base de Cálculo", 0},; //2- {"","pIPI","Alíquota", 0},; //3- {"","vIPI","Valor IPI", 0},; //4- {"","qBCProd","", 0},; //5- {"","vAliqProd","", 0}}) //6- AADD(s_aPIS,{{"01","CST","CST",2},; //1- {"0.00","vBC","Base de Cálculo",0},; //2- {"0.00","pPIS","Alíquota",0},; //3- {"0.00","vPIS","Valor",0},; //4- {"","qBCProd","",0},; //5- {"","vAliqProd","",0}}) //6- AADD(s_aCOFINS,{{"01","CST","CST",2},; //1- {"0.00","vBC","Base de Cálculo",0},; //2-vBC {"0.00","pCOFINS","Alíquota",0},; //3- {"0.00","vCOFINS","Valor",0},; //4- {"","qBCProd","",0},; //5- {"","vAliqProd","",0}}) //6- Next nIni := At('<div class="GeralXslt"',cFile) cParte := SubStr(cFile, nIni) nIni := At('<div class="GeralXslt" id="Emitente"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //ide //? "ide", !Empty(cParte) GeraTag("ide", cParte, cFile, cChave) nIni := At('<div class="GeralXslt" id="Emitente"',cFile) cParte := SubStr(cFile, nIni) nIni := At('</div>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //emit //? "emit", !Empty(cParte) GeraTag("emit", cParte, cFile, cChave) *nIni := At('<div id="DestRem"',cFile) nIni := At('<div class="GeralXslt" id="DestRem"',cFile) cParte := SubStr(cFile, nIni) nIni := At('</div>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //dest *? "dest", !Empty(cParte) GeraTag("dest",cParte, cFile, cChave) *nIni := At('<td class="fixo-prod-serv-numero"><span>', cFile) nIni := At('<tr><td class="fixo-prod-serv-numero"><span>', cFile) cParte := SubStr(cFile, nIni) *nIni := At('</body></html>', cParte) nIni := At('<div class="nft" id="aba_nft_10">', cParte) if nIni == 0 nIni := At('<div id="aba_nft_10" class="nft">', cParte) endif if nIni == 0 nIni := At('<a id="ctl00_ContentPlaceHolder1_hplExibirAutorizacao" class="botao">', cParte) endif cParte := SubStr(cParte, 1, nIni - 1) //det //? "det", !Empty(cParte) GeraTag("det", cParte, cFile, cChave) nIni := At('<legend class="titulo-aba">Totais</legend>',cFile) cParte := SubStr(cFile, nIni+42) *nIni := At('<div id="aba_nft_5"',cParte) nIni := At('<div class="nft" id="aba_nft_5"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //totais //? "totais", !Empty(cParte) GeraTag("totais", cParte, cFile, cChave) nIni := At('Dados do Transporte</legend>',cFile) cParte := SubStr(cFile, nIni+29) nIni := At('<div class="GeralXslt" id="Cobranca"',cParte) cParte := SubStr(cParte, 1, nIni - 1) //transp //? "transp", !Empty(cParte) GeraTag("transp", cParte, cFile, cChave) nIni := At('<legend>Duplicatas</legend><table',cFile) if nIni > 0 cParte := SubStr(cFile, nIni) nIni := At('</table>',cParte) cParte := SubStr(cParte, 1, nIni - 1) //cobr *? "cobr", !Empty(cParte) GeraTag("cobr", cParte, cFile, cChave) endif GravaXML(cChave, hInput, oDialog, lSemParametros, cPasta) Else MsgInfo('Erro ao ler retorno da Consulta!', 'Atenção!') Return .f. EndIf Return .t. /********************************************************************/ static function testarConteudoHTML(oIE) Local retorno:=.T. MsgWait("Verificando conteúdo da página") Try cHtml:=oIE:Document():All(0):OuterHTML retorno:=at('Realizar consulta com captcha sonoro',cHtml)>0 catch end return retorno static Function Troca_Acento( cTexto ) /* */ cTexto := StrTran( cTexto, "&#243;", "ó" ) cTexto := StrTran( cTexto, "&#225;", "á" ) cTexto := StrTran( cTexto, "&#233;", "é" ) Return cTexto /*******************************************************************/ static Function GeraTag( _tag, cParte, cFile, cChave ) /* */ Local i, cPar_, c_Tag, nTamTag, nIni, c_span, cPar1_, nFim if _tag=="ide" cPar_:= StrTran(cFile,Chr(13)+Chr(10),"") cPar_:= StrTran(cPar_,Chr(160),"") nIni := At('<legend>Informações Complementares de Interesse do Contribuinte</legend>', cPar_) if nIni>0 c_span := SubStr(cPar_, nIni+70) nIni := AT('<div style="word-wrap: break-word">',c_span) c_span := SubStr(c_span, nIni+35) nIni := AT('</div></span>',c_span) s_cinfCpl := alltrim(SubStr(c_span,1,nIni-1)) endif cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT('Situação Atual:',cPar_) c_span := SubStr(cPar_, nIni+15) nIni := AT('(Ambiente de autorização:',c_span) s_cxMotivo := Alltrim(SubStr(c_span,1,nIni-1)) if "AUTORIZADA" $ s_cxMotivo s_ccStat := "100" s_cxMotivo := "Autorizado o uso da NF-e" endif if "CANCELADA" $ s_cxMotivo s_ccStat := "101" s_cxMotivo := "Cancelamento de NF-e homologado" endif nIni := AT('Data Inclusão AN</label></td></tr><tr><td><span>',cPar_) c_span := SubStr(cPar_, nIni+50) nIni := AT('<span>',c_span)+6 nTamTag := AT('<input',c_span)-nIni s_cnProt := alltrim(SubStr(c_span,nIni,nTamTag)) c_span := SubStr(c_span, nIni+nTamTag) nIni := AT('<span>',c_span)+6 c_span := SubStr(c_span,nIni) nTamTag := AT('</span>',c_span)-1 //nIni s_cDhRecbto := alltrim(SubStr(c_span,1,nTamTag)) s_cDhRecbto := SubStr(s_cDhRecbto,7,4)+"-"+SubStr(s_cDhRecbto,4,2)+"-"+left(s_cDhRecbto,2)+"T"+Right(s_cDhRecbto,14) nIni := AT('<i>Digest</i> Value da NF-e',cPar_) c_span := SubStr(cPar_, nIni+20) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni s_cDigVal := alltrim(SubStr(c_span,nIni,nTamTag)) nIni := AT('Versão XML',cParte) c_span := SubStr(cParte, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni s_cVersao := alltrim(SubStr(c_span,nIni,nTamTag)) For i := 1 to Len(s_aIde[1]) cPar_:= cParte if i == 12 cPar_:= cFile endif if i == 13 cPar_:= cFile endif nIni := AT(s_aIde[1,i,5],cPar_) c_span := SubStr(cPar_, nIni) if i != 16 nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := alltrim(SubStr(c_span, nIni, nTamTag)) else nIni := AT('</legend>', c_span) c_tag := alltrim(SubStr(c_span, 1, nIni - 1)) if AT('produção', c_tag) > 0 c_tag := "1" else c_tag := "2" endif s_cTpAmb := c_tag endif if i == 2 c_tag := SubStr(cChave, 36, 8) //c_tag:= StrZero(Val(c_tag), 9) endif if i == 8 .or. i == 9 if !Empt(c_tag) c_tag := SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2)+"T"+SubStr(c_tag,12) endif endif if i == 15 c_tag := right(c_tag,1) endif if s_aIde[1,i,6]!=0 if s_aIde[1,i,6]>0 c_tag := left(c_tag,s_aIde[1,i,6]) else c_tag := SubStr(c_tag,Abs(s_aIde[1,i,6])+1) endif endif s_aIde[1,i,1] := c_tag Next endif if _tag == "emit" For i := 1 to Len(s_aEmit[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aEmit[1,i,5],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := Alltrim(SubStr(c_span,nIni,nTamTag)) if i >= 1 .and. i <= 2 c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,"/","") c_tag := StrTran(c_tag,"-","") endif if i >= 5 .and. i <= 7 nIni := AT(",",c_tag) if i == 5 c_tag := Left(c_tag,nIni-1) elseif i == 6 c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := Left(c_tag, nIni - 1) endif else c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := alltrim(SubStr(c_tag, nIni + 1)) else c_tag := "" endif endif endif if i == 12 c_tag := StrTran(c_tag,"-","") endif if i==15 c_tag := StrTran(c_tag,"(","") c_tag := StrTran(c_tag,")","") c_tag := StrTran(c_tag,"-","") endif if s_aEmit[1, i, 6] != 0 if s_aEmit[1, i, 6] > 0 c_tag := left(c_tag,s_aEmit[1, i, 6]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aEmit[1, i, 6]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif s_aEmit[1, i, 1] := c_tag endif Next endif if _tag == "dest" For i := 1 to Len(s_aDest[1]) cPar_ := StrTran(cParte, Chr(13) + Chr(10), "") cPar_ := StrTran(cPar_, Chr(160), "") nIni := AT(s_aDest[1, i, 5], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if i >= 1 .and. i <= 2 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, "/", "") c_tag := StrTran(c_tag, "-", "") endif If i >= 5 .and. i <= 7 nIni := AT(",", c_tag) if i == 5 c_tag := Left(c_tag,nIni-1) elseif i == 6 c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := Left(c_tag, nIni - 1) endif else c_tag := AllTrim(SubStr(c_tag, nIni + 1)) nIni := AT(" ", c_tag) if nIni > 0 c_tag := alltrim(SubStr(c_tag, nIni + 1)) else c_tag := "" endif endif EndIf if i == 12 c_tag := StrTran(c_tag, "-", "") endif if i == 15 c_tag := StrTran(c_tag, "(", "") c_tag := StrTran(c_tag, ")", "") c_tag := StrTran(c_tag, "-", "") endif if i==16 c_tag := alltrim(Str(Val(c_tag))) endif if s_aDest[1, i, 6] != 0 if s_aDest[1, i, 6] > 0 c_tag := left(c_tag, s_aDest[1, i, 6]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aDest[1,i,6]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif s_aDest[1, i, 1] := c_tag endif Next endif if _tag == "det" cPar_ := StrTran(cParte, Chr(13) + Chr(10), "") cPar_ := StrTran(cPar_, Chr(160), "") * tPar_ := HB_ATokens(cPar_,'"fixo-prod-serv-numero"><span>') * For p := 1 to Len(s_aDet) // PASSA NOS PRODUTOS* cPar_:=tPar_[p+1] For i := 1 to Len(s_aDet[p]) nIni := At(s_aDet[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>',c_span)+6 nTamTag := At('</span>',c_span)-nIni c_tag := AllTrim(SubStr(c_span,nIni,nTamTag)) if s_aDet[p, i, 4] != 0 if s_aDet[p, i, 4] > 0 c_tag := left(c_tag, s_aDet[p, i, 4]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aDet[p, i, 4]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif If i != 3 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") endIf s_aDet[p, i, 1] := c_tag endif Next For i := 1 To Len(s_aICMS[p]) nIni := At(s_aICMS[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) If s_aICMS[p, i, 4] != 0 if s_aICMS[p, i, 4] > 0 c_tag := Left(c_tag, s_aICMS[p, i, 4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aICMS[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aICMS[p, i, 1] := c_tag endif Next nIni := AT('<legend>Imposto Sobre Produtos Industrializados</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 To Len(s_aIPI[p]) nIni := AT(s_aIPI[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aIPI[p, i, 4] != 0 if s_aIPI[p, i, 4] > 0 c_tag := Left(c_tag, s_aIPI[p, i, 4]) else c_tag := Alltrim(SubStr(c_tag, Abs(s_aIPI[p, i, 4]) + 1)) c_tag := Alltrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aIPI[p, i, 1] := c_tag endif Next endif nIni := At('<legend class="toggle">PIS</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aPIS[p]) IF P == Len(s_aPIS) nFim := LEN(cPar_) ELSE nFim := At('<td class="fixo-prod-serv-numero"><span>', cPar_) ENDIF cPar1_:= SubStr(cPar_, 1, nFim) nIni := AT(s_aPIS[p, i, 3], cPar1_) if nIni > 0 c_span := SubStr(cPar1_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aPIS[p,i,4] != 0 if s_aPIS[p,i,4] > 0 c_tag := Left(c_tag,s_aPIS[p,i,4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aPIS[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aPIS[p, i, 1] := c_tag endif Next endif * nIni := AT('<legend class="toggle">COFINS</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aCOFINS[p]) IF P == Len(s_aCOFINS) nFim := LEN(cPar_) ELSE nFim := At('<td class="fixo-prod-serv-numero"><span>', cPar_) ENDIF cPar1_:= SubStr(cPar_, 1, nFim) nIni := AT(s_aCOFINS[p, i, 3], cPar1_) if nIni > 0 c_span := SubStr(cPar1_, nIni) nIni := AT('<span>', c_span) + 6 nTamTag := AT('</span>', c_span) - nIni c_tag := alltrim(SubStr(c_span, nIni, nTamTag)) if s_aCOFINS[p, i, 4] != 0 if s_aCOFINS[p, i, 4] > 0 c_tag := left(c_tag, s_aCOFINS[p, i, 4]) else c_tag := alltrim(SubStr(c_tag, Abs(s_aCOFINS[p, i, 4]) + 1)) c_tag := alltrim(StrTran(c_tag, "-", "")) endif endif c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") s_aCOFINS[p, i, 1] := c_tag endif Next endif nIni := At('<legend>Detalhamento específico dos medicamentos</legend>', cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni) For i := 1 to Len(s_aMedicamentos[p]) nIni := AT(s_aMedicamentos[p, i, 3], cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := At('<span>', c_span) + 6 nTamTag := At('</span>', c_span) - nIni c_tag := AllTrim(SubStr(c_span, nIni, nTamTag)) if s_aMedicamentos[p,i,4] != 0 if s_aMedicamentos[p,i,4] > 0 c_tag := Left(c_tag,s_aMedicamentos[p,i,4]) else c_tag := AllTrim(SubStr(c_tag, Abs(s_aMedicamentos[p, i, 4]) + 1)) c_tag := AllTrim(StrTran(c_tag, "-", "")) endif endif If i != 6 c_tag := StrTran(c_tag, ".", "") c_tag := StrTran(c_tag, ",", ".") endif if StrZero(i, 2) $ "-03-04" c_tag:=SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2) endif s_aMedicamentos[p, i, 1] := c_tag endif Next endif nIni := At('<td class="fixo-prod-serv-numero"><span>', cPar_) cPar_ := SubStr(cPar_, nIni) Next endif if _tag=="totais" For i := 1 to Len(s_aTotais[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aTotais[1,i,3],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := alltrim(SubStr(c_span,nIni,nTamTag)) c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,",",".") s_aTotais[1,i,1] := c_tag endif Next endif if _tag=="transp" For i := 1 to Len(s_aTransp[1]) cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") nIni := AT(s_aTransp[1,i,5],cPar_) if nIni > 0 c_span := SubStr(cPar_, nIni) nIni := AT('<span>',c_span)+6 nTamTag := AT('</span>',c_span)-nIni c_tag := alltrim(SubStr(c_span,nIni,nTamTag)) if i >= 2 .and. i <= 3 c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,"/","") c_tag := StrTran(c_tag,"-","") endif if s_aTransp[1,i,6] != 0 if s_aTransp[1,i,6]>0 c_tag := left(c_tag,s_aTransp[1,i,6]) else c_tag := alltrim(SubStr(c_tag,Abs(s_aTransp[1,i,6])+1)) c_tag := alltrim(StrTran(c_tag,"-","")) endif endif s_aTransp[1,i,1] := c_tag endif Next endif if _tag == "cobr" cPar_ := StrTran(cParte,Chr(13)+Chr(10),"") cPar_ := StrTran(cPar_,Chr(160),"") For i := 1 to Len(s_aCobr[1]) nIni := AT('<span>',cPar_) if nIni > 0 cPar_ := SubStr(cPar_, nIni+6) nTamTag := AT('</span>',cPar_)-1 c_tag := alltrim(SubStr(cPar_,1,nTamTag)) c_tag := StrTran(c_tag,".","") c_tag := StrTran(c_tag,",",".") if StrZero(i,2) $ "-02-05-08-11-14-17-20-23-26-29" c_tag := SubStr(c_tag,7,4)+"-"+SubStr(c_tag,4,2)+"-"+left(c_tag,2) endif s_aCobr[1,i,1] := c_tag else Exit endif Next endif return Nil /**************************************************************************************************/ static function GravaXML(cChave, hInput, oDialog, lSemParametros, cPasta) /* */ Local i, p, lTemTag, cTagPai, nFimTagPai, nIni, cTag, nArqHandle, cArqXml, cTag_ Local cXML :='<?xml version="1.0" encoding="UTF-8"?><nfeProc versao="'+s_cVersao+'" xmlns="http://www.portalfiscal.inf.br/nfe"><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe versao="'+s_cVersao+'" Id="NFe'+cChave+'">' cTagPai := "" nFimTagPai := 0 For i := 1 to Len(s_aIde[1]) if !Empt(s_aIde[1,i,3]) nFimTagPai := s_aIde[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aIde[1,i,3] cXML += '<'+s_aIde[1,i,3]+'>' endif if !Empty(s_aIde[1,i,1]) cXML += '<'+s_aIde[1,i,2]+'>'+s_aIde[1,i,1]+'</'+s_aIde[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For i := 1 to Len(s_aEmit[1]) if !Empty(s_aEmit[1,i,3]) nFimTagPai := s_aEmit[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aEmit[1,i,3] cXML += '<'+s_aEmit[1,i,3]+'>' endif if !Empty(s_aEmit[1,i,1]) cXML += '<'+s_aEmit[1,i,2]+'>'+s_aEmit[1,i,1]+'</'+s_aEmit[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For i := 1 to Len(s_aDest[1]) if !Empt(s_aDest[1,i,3]) nFimTagPai := s_aDest[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aDest[1,i,3] cXML += '<'+s_aDest[1,i,3]+'>' endif if !Empt(s_aDest[1,i,1]) cXML += '<'+s_aDest[1,i,2]+'>'+s_aDest[1,i,1]+'</'+s_aDest[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif endif Next For p := 1 to Len(s_aDet) cXML += '<det nItem="'+alltrim(Str(p))+'"><prod>' For i := 1 to Len(s_aDet[p]) if !Empt(s_aDet[p,i,1]) cXML += '<'+s_aDet[p,i,2]+'>'+s_aDet[p,i,1]+'</'+s_aDet[p,i,2]+'>' endif Next lTemTag := .F. For i := 1 to Len(s_aMedicamentos[p]) if i == 1 if !Empty(s_aMedicamentos[p,i,1]) cXML += '<med><nLote>' + s_aMedicamentos[p,i,1] + '</nLote>' lTemTag := .t. endif Else if !Empty(s_aMedicamentos[p,i,1]) If i == 6 s_cDiscAdicional := '<'+s_aMedicamentos[p,i,2]+'>'+ s_aMedicamentos[p,i,1] + '</'+s_aMedicamentos[p,i,2]+'>' Else cXML += '<'+s_aMedicamentos[p,i,2]+'>'+ s_aMedicamentos[p,i,1] + '</'+s_aMedicamentos[p,i,2]+'>' Endif endif EndIf Next if lTemTag cXML += '</med>' endif cXML += '</prod><imposto><ICMS>' cTag_ := 'ICMS' For i := 1 to Len(s_aICMS[p]) if i == 1 if !Empty(s_aICMS[p, 2, 1]) cTag_ += s_aICMS[p, 2, 1] else cTag_ += 'SN' + s_aICMS[p, 3, 1] endif cXML += '<' + cTag_ + '>' endif if !Empty(s_aICMS[p, i, 1]) If s_aICMS[p, 2, 1] == '00' If StrZero(i, 2) $ "-01-02-04-06-07-08" cXML += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '10' If StrZero(i, 2) $ "-01-02-04-06-07-08-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '20' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '30' If StrZero(i, 2) $ "-01-02-11-12-13-14-15-16-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '40' .or. s_aICMS[p, 2, 1] == '41' .Or. s_aICMS[p, 2, 1] == '50' If StrZero(i, 2) $ "-01-02-09-10" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '51' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-19-20-21" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '60' If StrZero(i, 2) $ "-01-02-17-18" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '70' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-09-10-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf ElseIf s_aICMS[p, 2, 1] == '90' If StrZero(i, 2) $ "-01-02-04-05-06-07-08-11-12-13-14-15-16" cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf Else cXml += '<' + s_aICMS[p, i, 2] + '>' + s_aICMS[p, i, 1] + '</' + s_aICMS[p, i, 2] + '>' EndIf endif Next cXML += '</'+cTag_+'></ICMS>' lTemTag := .F. For i := 1 to Len(s_aIPI[p]) if i == 1 if !Empty(s_aIPI[p,i,1]) cXML += '<IPI><cEnq>' + s_aIPI[p,i,1] + '</cEnq><IPITrib>' lTemTag := .T. endif Else if !Empty(s_aIPI[p,i,1]) cXML += '<'+s_aIPI[p,i,2]+'>'+ s_aIPI[p,i,1] + '</'+s_aIPI[p,i,2]+'>' endif EndIf Next if lTemTag cXML += '</IPITrib></IPI>' endif lTemTag := .F. For i:= 1 to Len(s_aPIS[p]) if i == 1 if !Empty(s_aPIS[p, i, 1]) If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '<PIS><PISAliq>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '<PIS><PISQte>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '<PIS><PISNT>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML += '<PIS><PISOutr>' EndIf lTemTag := .T. endif endif if !Empty(s_aPIS[p, i, 1]) cXML += '<' + s_aPIS[p,i,2] + '>' + s_aPIS[p,i,1] + '</' + s_aPIS[p,i,2] + '>' endif Next if lTemTag If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '</PISAliq></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '</PISQte></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '</PISNT></PIS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML+= '</PISOutr></PIS>' EndIf endif lTemTag := .F. For i := 1 to Len(s_aCOFINS[p]) if i == 1 if !Empty(s_aCOFINS[p,i,1]) If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '<COFINS><COFINSAliq>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '<COFINS><COFINSQte>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '<COFINS><COFINSNT>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML += '<COFINS><COFINSOutr>' EndIf lTemTag := .T. endif endif if !Empty(s_aCOFINS[p,i,1]) cXML += '<' + s_aCOFINS[p, i, 2] + '>' + s_aCOFINS[p, i, 1] + '</' + s_aCOFINS[p, i, 2] + '>' endif Next if lTemTag If Val(s_aPIS[p, 1, 1]) >= 1 .And. Val(s_aPIS[p, 1, 1]) <= 2 cXML += '</COFINSAliq></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) == 3 cXML += '</COFINSQte></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 4 .And. Val(s_aPIS[p, 1, 1]) <= 9 cXML += '</COFINSNT></COFINS>' ElseIf Val(s_aPIS[p, 1, 1]) >= 49 .And. Val(s_aPIS[p, 1, 1]) <= 99 cXML+= '</COFINSOutr></COFINS>' EndIf endif cXML += '</imposto>' If !Empty(s_cDiscAdicional) cXml += s_cDiscAdicional EndIf cXML += '</det>' Next cXML += '<total><ICMSTot>' For i := 1 to Len(s_aTotais[1]) if !Empty(s_aTotais[1,i,1]) cXML+='<'+s_aTotais[1,i,2]+'>'+s_aTotais[1,i,1]+'</'+s_aTotais[1,i,2]+'>' endif Next cXML += '</ICMSTot></total>' For i := 1 to Len(s_aTransp[1]) if !Empty(s_aTransp[1,i,3]) nFimTagPai := s_aTransp[1,i,4] cTagPai += "|"+StrZero(nFimTagPai,2)+s_aTransp[1,i,3] cXML += '<'+s_aTransp[1,i,3]+'>' endif if !Empty(s_aTransp[1,i,1]) cXML += '<'+s_aTransp[1,i,2]+'>'+s_aTransp[1,i,1]+'</'+s_aTransp[1,i,2]+'>' endif if i == nFimTagPai nIni := RAT("|",cTagPai) cTag := Substr(cTagPai,nIni+1) cXML += '</'+SubStr(cTag,3)+'>' cTagPai := SubStr(cTagPai,1,nIni-1) if nIni > 1 nIni := RAT("|",cTagPai) nFimTagPai := Val(Substr(cTagPai,nIni+1,2)) else nFimTagPai := 0 endif if SubStr(cTag,3) == "vol" cXML += '</transp>' endif endif Next if !Empty(s_aCobr[1,1,1]) cXML += '<cobr>' For i := 1 to Len(s_aCobr[1]) if !Empty(s_aCobr[1,i,1]) if StrZero(i,2) $ "-01-04-07-10-13-16-19-22-25-28" if i > 2 cXML += '</dup>' endif cXML += '<dup>' endif cXML += '<'+s_aCobr[1,i,2]+'>'+s_aCobr[1,i,1]+'</'+s_aCobr[1,i,2]+'>' endif Next cXML += '</dup></cobr>' endif if !Empty(s_cinfCpl) .or. !Empty(s_cInfAdFisco) // cXML += '<infAdic>' // if !Empty(s_cInfAdFisco) // cXML += '<infAdFisco>'+s_cInfAdFisco+'</infAdFisco>' // endif // if !Empty(s_cinfCpl) // cXML += '<infCpl>'+s_cinfCpl+'</infCpl>' // endif // cXML += '</infAdic>' endif cXML += '</infNFe>' cXML += '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />' cXML += '<Reference URI="#NFe'+cChave+'">' cXML += '<Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />' cXML += '<DigestValue>'+s_cDigVal+'</DigestValue></Reference></SignedInfo><SignatureValue></SignatureValue><KeyInfo></KeyInfo></Signature></NFe>' cXML += '<protNFe versao="'+s_cVersao+'"><infProt>' cXML += '<tpAmb>'+s_cTpAmb+'</tpAmb><verAplic>'+s_cVerAplic+'</verAplic><chNFe>'+cChave+'</chNFe><dhRecbto>'+s_cDhRecbto+'</dhRecbto>' cXML += '<nProt>'+s_cnProt+'</nProt><digVal>'+s_cDigVal+'</digVal><cStat>'+s_ccStat+'</cStat><xMotivo>'+s_cxMotivo+'</xMotivo>' cXML += '</infProt></protNFe></nfeProc>' cArqXml := cPasta + '\' + cChave + '.xml' nArqHandle := FCreate(cArqXml, 0 ) FWrite(nArqHandle,cXML) FClose(nArqHandle) *MsgInfo( 'Download realizado com sucesso! Arquivo gerado:' + CRLF + cArqXml, 'NF-e ') return nil function EventInfo( event, aParams ) local cMsg := "Event: " + cValToChar( event ) + CRLF + CRLF local n cMsg += "Params: " for n = 1 to Len( aParams ) cMsg += cValToChar( aParams[ n ] ) + CRLF next MsgInfo( cMsg ) return nil /***********************************************************/
  25. Para pegar os dados de uma pessoa juridica, uso a rotina abaixo: FUNCTION PEGA_CNPJ(CPF_C,OG02_C,FAN_C,OG04_C,NE_C,OG05_C,CE_C,OG06_C,EN_C,OG07_C,NU_C,OG08_C,CPL_C,OG09_C,BA_C,OG10_C,CD_C,OG11_C,UF_C,OG12_C,DTN_C,OG17_C,TEL_C,OG22_C,EM_C,OG15_C) Local oServerWS, cUrl, aArray, oCnpj:= TIRA(CPF_C,"Z") IF LEN(oCnpj)#14 MSGINFO("Este botão só busca dados de pessoal jurídica!") return .t. endif cUrl:= "https://www.receitaws.com.br/v1/cnpj/"+Alltrim(oCnpj) Try oServerWS := CreateObject( 'MSXML2.ServerXMLHTTP.5.0' ) Catch oError try oServerWS := CreateObject( 'MSXML2.ServerXMLHTTP.6.0' ) catch oError try oServerWS := CreateObject("Microsoft.XMLHTTP") catch oError ? e:Description return nil end END end TRY oServerWS:open('GET', cUrl, .f.) oServerWS:setRequestHeader('Content-Type' , 'text/xml; charset=utf-8') // Obtém ou define o valor de cabeçalho de Content-type HTTP. oServerWS:send() CATCH ? "Não conseguiu enviar solicitação para requisição dos dados do CNPJ" return .t. END * Verifica o status do request. Exibe erro se houver IF oServerWS:Status != 200 // OK MsgStop( Alltrim(STR(oServerWS:Status)) +" - "+ oServerWS:StatusText , "Erro") RETURN NIL ENDIF WHILE oServerWS:readyState != 4 oServerWS:waitForResponse(1000) END * decodifica o arquivo json e transforma em um array multidimensional ** x := hb_jsondecode( oServerWS:responseText, @aArray ) txt:= oServerWS:responseText Arq_1:=ALLTRIM(txt) ARR0:=HB_ATokens( Arq_1, CHR(10) ) TAB:={} QT:=0 n_f1:="" n_f2:="" FOR I=1 TO LEN(ARR0) I0:=CHR(34)+"nome"+chr(34) IF I0$ARR0 IF QT=0 QT:=QT+1 I0:=ARR0 I0:=StrTran( I0, "nome" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 OG04_C:refresh() NE_C:=alltrim(I0) n_f2:=alltrim(I0) OG04_C:refresh() endif ENDIF ENDIF I0:=CHR(34)+"uf"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "uf" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 UF_C:=alltrim(I0) OG11_C:refresh() endif ENDIF I0:=CHR(34)+"logradouro"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "logradouro" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 EN_C:=alltrim(I0) OG06_C:REFRESH() endif ENDIF I0:=CHR(34)+"numero"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "numero" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 NU_C:=alltrim(I0) OG07_C:REFRESH() endif ENDIF I0:=CHR(34)+"cep"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "cep" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 CE_C:=transform(alltrim(tira(I0,"Z")),"@R 99999-999") OG05_C:REFRESH() endif ENDIF I0:=CHR(34)+"municipio"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "municipio" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 CD_C:=alltrim(I0) OG10_C:REFRESH() endif ENDIF I0:=CHR(34)+"abertura"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "abertura" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 DTN_C:=CTOD(alltrim(I0)) OG12_C:REFRESH() endif ENDIF I0:=CHR(34)+"bairro"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "bairro" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 BA_C:=alltrim(I0) OG09_C:REFRESH() endif ENDIF I0:=CHR(34)+"complemento"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "complemento" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 CPL_C:=alltrim(I0) OG08_C:REFRESH() endif ENDIF I0:=CHR(34)+"email"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "email" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 EM_C:=alltrim(I0) OG22_C:REFRESH() endif ENDIF I0:=CHR(34)+"telefone"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "telefone" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 TEL_C:=alltrim(I0) IF AT("/",TEL_C)>0 TEL_C:=ALLTRIM(LEFT(TEL_C,AT("/",TEL_C)-1)) ENDIF OG17_C:REFRESH() endif ENDIF I0:=CHR(34)+"fantasia"+chr(34) IF I0$ARR0 I0:=ARR0 I0:=StrTran( I0, "fantasia" ) I0:=StrTran( I0, ":" ) I0:=StrTran( I0, "," ) I0:=StrTran( I0, ";" ) I0:=StrTran( I0, CHR(34) ) if len(alltrim(I0))>0 FAN_C:=alltrim(I0) n_f1:=alltrim(I0) OG02_C:REFRESH() endif ENDIF NEXT if len(n_f1)=0 FAN_C:=n_f2 OG02_C:REFRESH() endif XSETFOCUS(OG15_C) RETURN .T.
×
×
  • Create New...