Consulta optante do simples online

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Wanderlei
Usuário Nível 3
Usuário Nível 3
Mensagens: 196
Registrado em: 25 Jan 2008 13:19
Localização: Goiânia - GO

Consulta optante do simples online

Mensagem por Wanderlei »

Valeu Daniel, coloquei aqui e baixou os lotes... :-Y
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Consulta optante do simples online

Mensagem por fladimir »

Refiz o processo e deu certo, devo ter deixado passar algo desapercebido, obrigado pela força.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Consulta optante do simples online

Mensagem por fladimir »

Bom dia...

Esta ocorrendo algo estranho, vejam se entendem...

Ao lançar a entrada o sistema busca via código aki definido o xml ara importar, o primeiro item esta correto xml com DANFE, a partir do segundo item a ordem esta diferente do XML em relação ao DANFE e a partir do Nono item fica completamente estranho.
Item 02 diferente no xml em relação ao DANFE
Item 02 diferente no xml em relação ao DANFE
A partir do Item 9 fica estranho.
A partir do Item 9 fica estranho.
Segue chave da Nota: 35161157407397000158550010003616391617727938
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Consulta optante do simples online

Mensagem por Daniel »

Arrumei mais um pouco
pela a ultima chave esta bom agora
Anexos
impnfe.prg
consulta xml
(50.27 KiB) Baixado 208 vezes
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Consulta optante do simples online

Mensagem por fladimir »

:{ :)Pos

Vlw Daniel
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Consulta optante do simples online

Mensagem por rubens »

Bom dia...

Vocês resolvem essa parada aí, uai... !!! E você para de achar erros Fladimir !!!! tá até parecendo JAVA... todo dia que entro aqui tem uma versão nova....
:)Pos
É lógico que é brincadeira... continua achando os erros e o Daniel corrigindo e nós usufruindo....
Corrigindo aqui...

Valeu, obrigado...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Consulta optante do simples online

Mensagem por fladimir »

kkkk

Só o Daniel e o Toledo pra entender a rotina... eu até q tento mas me perco... ai posto aki se o Daniel tiver misericórdia de nós ou alguma outra alma q entenda mais da rotina dele nos ajuda se não tamo "frito"... kkk

Mas tamo ai... eu tenho a Dll em paralelo para comparar, mas agora com esta ultima modificação praticamente não vejo diferença da Dll, nas chaves q temos testado.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Consulta optante do simples online

Mensagem por JoséQuintas »

Pessoal, usem compilação -w3 -es2.

Baixei essa última rotina.
É uma rotina extraordinária.
Mas ao compilar usando -w3 -es2....

declarei as variáveis do jeito que dava, no início do fonte:

Código: Selecionar todos

MEMVAR ACOBR, I, cInfCpl, cInfAdFisco, cDigVal, cChave, cVerAplic, cTpAmb, c_Span
MEMVAR cVersao, cArqXml, cIniFolder, nArqHandle, cxMotivo, ccStat, cnProt, cPart_
MEMVAR cDhRecbto, cTag, cTagPai, nIni, nFimTagPai, aTotais, cDiscAdicional, nContador
MEMVAR P_, aDet, aPis, aTransp, aCofins, aIpi, lpOemTag, cTag_, aIcms, aTrib, nSoma
MEMVAR aMedicamentos, aEmit, aDest, aIde, c_Tag, cPar_, nTamTag, cPar1_, nFim, cFile
MEMVAR cParte, Contador, nTotPro, cHtml, cPart, cStringCookie, cViewState, cViewStateGenerator
MEMVAR nFim3, cHiddenToken, nIni4, cHtml1, nFim4, Txt_File, cCodigo, ceEventValidation
MEMVAR nIni1, nFim1, nIni2, nFim2, nIni3, cHiddenSom, cUrl, cUrl1, oServer, nInie, nFime, cUrl2
MEMVAR cMsgErro
Omiti as partes ref. minigui.

Restou este erro:

Código: Selecionar todos

Compiling 'baixaimpnfe.prg'...
baixaimpnfe.prg(486) Warning W0032  Variable 'CRET' is assigned but not used in function 'CONTINUAR(125)'
1300
No code generated.
Isso se refere a esta linha:

Código: Selecionar todos

         cRet := oInternet:ReadAll()
É o retorno de um dos acessos à internet, não usa pra nada, pelo menos aparentemente não.

É provável que o uso de PRIVATE e PUBLIC possa estar escondendo alguma coisa, mas deixou tudo esquisito.


Apenas como sugestão, Isolem as rotinas

- acesso à internet
- tratamento do retorno
assim não prende a lib especifica e da pra todo mundo testar/ajudar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Consulta optante do simples online

Mensagem por JoséQuintas »

Segue uma pequena mudança também como sugestão, que divide melhor as coisas.
Isso era uma única rotina enorme com IFs.
Sem ajuste de -w3 -es2.
Neste caso, acaba sendo interessante deixar isso pro final.

Código: Selecionar todos

FUNCTION GeraBlocoIde( cParte )

   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 )
      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 )
   cxMotivo := AllTrim( SubStr( c_span, 1, nIni - 1 ) )
   IF "AUTORIZADA" $ cxMotivo
      ccStat  := "100"
      cxMotivo := "Autorizado o uso da NF-e"
   ENDIF
   IF "CANCELADA" $ cxMotivo
      ccStat  := "101"
      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
   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
   cdhRecbto := AllTrim( SubStr( c_span, 1, nTamTag ) )
   cdhRecbto := SubStr( cdhRecbto, 7, 4 ) + "-" + SubStr( cdhRecbto, 4, 2 ) + "-" + Left( cdhRecbto, 2 ) + "T" + Right( 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
   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
   cVersao  := AllTrim( SubStr( c_span, nIni, nTamTag ) )
   FOR i := 1 TO Len( aIde[ 1 ] )
      cPar_ := cParte
      IF i == 12
         cPar_ := cFile
      ENDIF
      IF i == 13
         cPar_ := cFile
      ENDIF
      nIni  := At( 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
         ctpAmb := c_tag
      ENDIF
      IF i == 2
         c_tag := SubStr( cChave, 36, 8 )
      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 aIde[ 1, i, 6 ] != 0
         IF aIde[ 1, i, 6 ] > 0
            c_tag := Left( c_tag, aIde[ 1, i, 6 ] )
         ELSE
            c_tag := SubStr( c_tag, Abs( aIde[ 1, i, 6 ] ) + 1 )
         ENDIF
      ENDIF
      aIde[ 1, i, 1 ] := c_tag
      IF i == 21
         cverAplic := c_tag
      ENDIF
   NEXT

   RETURN NIL

FUNCTION GeraBlocoEmit( cParte )

   FOR i := 1 TO Len( aEmit[ 1 ] )
      cPar_ := StrTran( cParte, Chr( 13 ) + Chr( 10 ), "" )
      cPar_ := StrTran( cPar_, Chr( 160 ), "" )
      nIni := At( 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 nIni == 0
               nIni := At( ",", c_tag )
            ENDIF
            IF i == 5
               c_tag := Left( c_tag, nIni - 1 )  // xlg
            ELSEIF i == 6
               c_tag := AllTrim( SubStr( c_tag, nIni + 2 ) )
               nIni := At( " ", c_tag )
               IF nIni > 0
                  c_tag := Left( c_tag, nIni - 1 ) // nro
               ENDIF
            ELSE
               c_tag := AllTrim( SubStr( c_tag, nIni + 2 ) )
               nIni := At( " ", c_tag )
               IF nIni > 0
                  c_tag := AllTrim( SubStr( c_tag, nIni + 1 ) ) // xcpl
               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 aEmit[ 1, i, 6 ] != 0
            IF aEmit[ 1, i, 6 ] > 0
               c_tag := Left( c_tag, aEmit[ 1, i, 6 ] )
            ELSE
               c_tag := AllTrim( SubStr( c_tag, Abs( aEmit[ 1, i, 6 ] ) + 1 ) )
               c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
            ENDIF
         ENDIF
         aEmit[ 1, i, 1 ] := c_tag
      ENDIF
   NEXT

   RETURN NIL

FUNCTION GeraBlocoDest( cParte )

   FOR i = 1 TO Len( aDest[ 1 ] )
      cPar_ := StrTran( cParte, Chr( 13 ) + Chr( 10 ), "" )
      cPar_ := StrTran( cPar_, Chr( 160 ), "" )
      nIni := At( 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 nIni == 0
               nIni := At( ",", c_tag )
            ENDIF
            IF i == 5
               c_tag := Left( c_tag, nIni - 1 )
            ELSEIF i == 6
               c_tag := AllTrim( SubStr( c_tag, nIni + 2 ) )
               nIni := At( " ", c_tag )
               IF nIni > 0
                  c_tag := Left( c_tag, nIni - 1 )
               ENDIF
            ELSE
               c_tag := AllTrim( SubStr( c_tag, nIni + 2 ) )
               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 aDest[ 1, i, 6 ] != 0
            IF aDest[ 1, i, 6 ] > 0
               c_tag := Left( c_tag, aDest[ 1, i, 6 ] )
            ELSE
               c_tag := AllTrim( SubStr( c_tag, Abs( aDest[ 1, i, 6 ] ) + 1 ) )
               c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
            ENDIF
         ENDIF
         aDest[ 1, i, 1 ] := c_tag
      ENDIF
   NEXT

   RETURN NIL

FUNCTION GeraBlocoDet( cParte )

   cPar_ := StrTran( cParte, Chr( 13 ) + Chr( 10 ), "" )
   cParT_ := StrTran( cPar_, Chr( 160 ), "" )
   nIni := At( '<td class="fixo-prod-serv-numero"><span>1', cParT_ )
   nfim := At( '<td class="fixo-prod-serv-numero"><span>2', cParT_ ) - nIni
   IF nFim == 0
      cPar_ := SubStr( cParT_, nIni )
   ELSE
      cPar_ := SubStr( cParT_, nIni, nFim )
   ENDIF
   FOR p_ := 1 TO Len( aDet )
      FOR i := 1 TO Len( aDet[ p_ ] )
         nIni := At( 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 aDet[ p_, i, 4 ] != 0
               IF aDet[ p_, i, 4 ] > 0
                  c_tag := Left( c_tag, aDet[ p_, i, 4 ] )
               ELSE
                  c_tag := AllTrim( SubStr( c_tag, Abs( aDet[ p_, i, 4 ] ) + 1 ) )
                  c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
               ENDIF
            ENDIF
            IF i != 3 .AND. i != 1
               c_tag := StrTran( c_tag, ".",  "" )
               c_tag := StrTran( c_tag, ",", "." )
            ENDIF
            aDet[ p_, i, 1 ] := c_tag
         ENDIF
      NEXT

      FOR i := 1 TO Len( aTrib[ p_ ] )
         nIni := At( aTrib[ 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 aTrib[ p_, i, 4 ] != 0
               IF aTrib[ p_, i, 4 ] > 0
                  c_tag := Left( c_tag, aTrib[ p_, i, 4 ] )
               ELSE
                  c_tag := AllTrim( SubStr( c_tag, Abs( aTrib[ p_, i, 4 ] ) + 1 ) )
                  c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
               ENDIF
            ENDIF
            c_tag := StrTran( c_tag, ".", "" )
            c_tag := StrTran( c_tag, ",", "." )
            aTrib[ p_, i, 1 ] := c_tag
         ENDIF
      NEXT

      nIni := At( '<fieldset><legend>ICMS Normal e ST</legend>', cPar_ )
      IF nIni > 0
         cPar1_ := SubStr( cPar_, nIni, At( '<legend class="toggle">PIS</legend>', cPar_ ) -nIni )
         FOR i := 1 TO Len( aICMS[ p_ ] )
            nIni := At( aICMS[ 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 aICMS[ p_, i, 4 ] != 0
                  IF aICMS[ p_, i, 4 ] > 0
                     c_tag := Left( c_tag, aICMS[ p_, i, 4 ] )
                  ELSE
                     c_tag := AllTrim( SubStr( c_tag, Abs( aICMS[ p_, i, 4 ] ) + 1 ) )
                     c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
                  ENDIF
               ENDIF
               c_tag := StrTran( c_tag, ".",  "" )
               c_tag := StrTran( c_tag, ",", "." )
               aICMS[ p_, i, 1 ] := c_tag
            ENDIF
         NEXT
      ENDIF

      nIni := At( '<legend>Imposto Sobre Produtos Industrializados</legend>', cPar_ )
      IF nIni > 0
         cPar1_ := SubStr( cPar_, nIni, At( '<legend class="toggle">PIS</legend>', cPar_ ) -nIni )
         FOR i := 1 TO Len( aIPI[ p_ ] )
            nIni := At( aIPI[ 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 aIPI[ p_, i, 4 ] != 0
                  IF aIPI[ p_, i, 4 ] > 0
                     c_tag := Left( c_tag, aIPI[ p_, i, 4 ] )
                  ELSE
                     c_tag := AllTrim( SubStr( c_tag, Abs( aIPI[ p_, i, 4 ] ) + 1 ) )
                     c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
                  ENDIF
               ENDIF
               c_tag := StrTran( c_tag, ".", "" )
               c_tag := StrTran( c_tag, ",", "." )
               aIPI[ p_, i, 1 ] := c_tag
            ENDIF
         NEXT
      ENDIF

      nIni := At( '<legend class="toggle">PIS</legend>', cPar_ )
      IF nIni > 0
         cPar1_ := SubStr( cPar_, nIni, At( '<legend class="toggle">COFINS</legend>', cPar_ ) -nIni )
         FOR i := 1 TO Len( aPIS[ p_ ] )
            nIni := At( 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 aPIS[ p_, i, 4 ] != 0
                  IF aPIS[ p_, i, 4 ] > 0
                     c_tag := Left( c_tag, aPIS[ p_, i, 4 ] )
                  ELSE
                     c_tag := AllTrim( SubStr( c_tag, Abs( aPIS[ p_, i, 4 ] ) + 1 ) )
                     c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
                  ENDIF
               ENDIF
               c_tag := StrTran( c_tag, ".",  "" )
               c_tag := StrTran( c_tag, ",", "." )
               aPIS[ p_, i, 1 ] := c_tag
            ENDIF
         NEXT
      ENDIF

      nIni := At( '<legend class="toggle">COFINS</legend>', cPar_ )
      IF nIni > 0
         cPar1_ := SubStr( cPar_, nIni )
         FOR i := 1 TO Len( aCOFINS[ p_ ] )
            nIni  := At( 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 aCOFINS[ p_, i, 4 ] != 0
                  IF aCOFINS[ p_, i, 4 ] > 0
                     c_tag := Left( c_tag, aCOFINS[ p_, i, 4 ] )
                  ELSE
                     c_tag := AllTrim( SubStr( c_tag, Abs( aCOFINS[ p_, i, 4 ] ) + 1 ) )
                     c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
                  ENDIF
               ENDIF
               c_tag := StrTran( c_tag, ".",  "" )
               c_tag := StrTran( c_tag, ",", "." )
               aCOFINS[ p_, i, 1 ] := c_tag
            ENDIF
         NEXT
      ENDIF

      nIni := At( '<legend>Detalhamento específico dos medicamentos</legend>', cPar_ )
      IF nIni > 0
         cPar1_ := SubStr( cPar_, nIni )
         FOR i := 1 TO Len( aMedicamentos[ p_ ] )
            nIni := At( aMedicamentos[ 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 aMedicamentos[ p_, i, 4 ] != 0
                  IF aMedicamentos[ p_, i, 4 ] > 0
                     c_tag := Left( c_tag, aMedicamentos[ p_, i, 4 ] )
                  ELSE
                     c_tag := AllTrim( SubStr( c_tag, Abs( 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
               aMedicamentos[ p_, i, 1 ] := c_tag
            ENDIF
         NEXT
      ENDIF
      IF p_ == ( Len( aDet ) -1 )
         nIni := At( '<td class="fixo-prod-serv-numero"><span>' + AllTrim( Str( p_ + 1 ) ), cParT_ )
         cPar_ := SubStr( cParT_, nIni )
      ELSE
         nIni := At( '<td class="fixo-prod-serv-numero"><span>' + AllTrim( Str( p_ + 1 ) ), cParT_ )
         nFim := At( '<td class="fixo-prod-serv-numero"><span>' + AllTrim( Str( p_ + 2 ) ), cParT_ ) - nIni
         IF nFim == 0
            cPar_ := SubStr( cParT_, nIni )
         ELSE
            cPar_ := SubStr( cParT_, nIni, nFim )
         ENDIF
      ENDIF
   NEXT

   RETURN NIL


FUNCTION GeraBlocoTotais( cParte )

   FOR i := 1 TO Len( aTotais[ 1 ] )
      cPar_ := StrTran( cParte, Chr( 13 ) + Chr( 10 ), "" )
      cPar_ := StrTran( cPar_, Chr( 160 ), "" )
      nIni := At( 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, ",", "." )
         aTotais[ 1, i, 1 ] := c_tag
      ENDIF
   NEXT

   RETURN NIL

FUNCTION GeraBlocoTransp( cParte )

   FOR i := 1 TO Len( aTransp[ 1 ] )
      cPar_ := StrTran( cParte, Chr( 13 ) + Chr( 10 ), "" )
      cPar_ := StrTran( cPar_, Chr( 160 ), "" )
      nIni := At( 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 aTransp[ 1, i, 6 ] != 0
            IF aTransp[ 1, i, 6 ] > 0
               c_tag := Left( c_tag, aTransp[ 1, i, 6 ] )
            ELSE
               c_tag := AllTrim( SubStr( c_tag, Abs( aTransp[ 1, i, 6 ] ) + 1 ) )
               c_tag := AllTrim( StrTran( c_tag, "-", "" ) )
            ENDIF
         ENDIF
         aTransp[ 1, i, 1 ] := c_tag
      ENDIF
   NEXT

   RETURN NIL

FUNCTION GeraBlocoCobr( cParte )

   cPar_ := StrTran( cParte, Chr( 13 ) + Chr( 10 ), "" )
   cPar_ := StrTran( cPar_, Chr( 160 ), "" )
   FOR i := 1 TO Len( 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
         aCobr[ 1, i, 1 ] := c_tag
      ELSE
         EXIT
      ENDIF
   NEXT

   RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Consulta optante do simples online

Mensagem por Daniel »

Ola José Quintas
Ficou melhor de entender.

cRet := oInternet:ReadAll()
esta linha esqueci de apagar, ela era usada para gravar em arquivo
Grato pelo colaboração
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Consulta optante do simples online

Mensagem por Daniel »

Ola
Segue ele mudado conforme o José falou e pronto para -w3 -es2
Usando as parte que ele passou
Anexos
impnfe.prg
baixa xlm da nfe
(54.18 KiB) Baixado 124 vezes
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Consulta optante do simples online

Mensagem por fladimir »

Show de bola...

:{ :-Y

Vlw
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Consulta optante do simples online

Mensagem por rubens »

E lá vamos nós de novo...
E a culpa dessa vez não foi sua Fladimir... !!!

O negócio vai só ficando high-tech...

Parabéns... pessoal...

Obg

:D
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Consulta optante do simples online

Mensagem por fladimir »

Verdade... kkk

Da até pra virar parte do projeto hbNFe/SefazClass talvez... o q acham ou se não montar um para Consultas CPF/CNPJ/NFE/Download NFe e depois daria pra dar continuidade Download CTe
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
ctoas
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 09 Mai 2005 16:22
Localização: São Paulo
Contato:

Consulta optante do simples online

Mensagem por ctoas »

Bom dia e um ótimo ano novo a todos.

Estou tentando converter a função que busca os dados do CNPJ para Fivewin, mas nunca fui fundo no que diz respeito a WEB com o Fivewin e estou tomando uma surra. O que acontece é que sempre o retorno vem vazio.

Alguém poderia dar uma força?

Agradeço desde já.

Código: Selecionar todos

#INCLUDE "MAXXTECH.CH"  
#INCLUDE "IMAGE.CH"
#INCLUDE "FILEIO.CH"
 
********************************************************************************
FUNCTION DADOSCNPJ( cCNPJ )
********************************************************************************

	PRIVATE cCAPTCHA    := SPACE(06)
	PRIVATE cTIPO       := SPACE(10)
	PRIVATE cABERTURA   := SPACE(10)
	PRIVATE cFANTASIA   := SPACE(44)
	PRIVATE cRSOCIAL    := SPACE(78)
	PRIVATE cENDERECO   := SPACE(70)
	PRIVATE nNUMERO     := 0
	PRIVATE cCOMPLEMENT := SPACE(30)
	PRIVATE cBAIRRO     := SPACE(30)
	PRIVATE cCIDADE     := SPACE(30)
	PRIVATE cUF         := SPACE(02)
	PRIVATE cCEP        := SPACE(09)
	PRIVATE cSITUACAO   := SPACE(20)
	
	PRIVATE oBtnCANCELAR, oBtnCONFIRMAR, oSayCNPJ, oSayCNPJ2
	PRIVATE oSayNASCIMENTO2, oSayCAPTCHA, oGetCAPTCHA, oBtnPESQUISACPF
	PRIVATE oGrpDADOSCNPJ, oImgCAPTCHA, oGrpCLIENTE, oGrpCAPTCHA, oGrpDADOS
	PRIVATE oSayNOME, oGetNOME, oSayABERTURA, oGetABERTURA, oSayFANTASIA
	PRIVATE oGetFANTASIA, oSayENDERECO, oGetENDERECO, oSayCOMPLEMENT, oGetCOMPLEMENT
	PRIVATE oSayRSOCIAL, oGetRSOCIAL, oSayNUMERO, oGetNUMERO
	
   PRIVATE cURL  := "http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/valida.asp"
   PRIVATE cURLC := "http://www.receita.fazenda.gov.br/Pessoajuridica/cnpj/cnpjreva/captcha/gerarCaptcha.asp?"
   PRIVATE cURL2 := "http://www.receita.fazenda.gov.br/Pessoajuridica/cnpj/cnpjreva/Cnpjreva_solicitacao2.asp?"
   PRIVATE cStringCookie, cViewState, cEeventValidation, cHiddenField, cCookie, cCookie1	
	
	DEFINE CURSOR oCurHAND RESOURCE "MAO"
	
	DEFINE DIALOG oDlgCNPJ FROM 0,0 TO 670,860 FONT TTF_COURIER_NEW PIXEL STYLE nOr( WS_POPUP|DS_MODALFRAME|WS_VISIBLE ) 
	
	@ 000,000 TITLE oTitle2 OF oDlgCNPJ SIZE 349,28 NOBORDER PIXEL
	oTitle2:aGrdBack := { { 1, 8388608, 8388608 }, { 0.5, 16312263, 16770250 } }
	oTitle2:nShadow  := 0
	
	@ 013,020 TITLEIMG OF oTitle2 BITMAP "TIT_CLIENTES" SIZE 052,052 
			
	@ 020,090 TITLETEXT OF oTitle2 TEXT "Consulta Cadastro de CNPJ" COLOR 16777215 FONT ARIAL14B 
	@ 040,090 TITLETEXT OF oTitle2 TEXT "CNPJ" COLOR 14591785 FONT ARIAL16B

	@ 002,360 BITMAP oBtnCANCELAR RESOURCE "BTN_CANCELAR" SIZE 026,026 OF oDlgCNPJ PIXEL NOBORDER
	TOOLTIPNEW(oBtnCANCELAR,"Cancelar consulta do CNPJ","Cancelar")
	oBtnCANCELAR:oCursor := oCurHAND	
	oBtnCANCELAR:bLClicked := {||lSair2:=.T.,oDlgCNPJ:END()}
   
	@ 002,395 BITMAP oBtnCONFIRMAR RESOURCE "BTN_CONFIRMAR" SIZE 026,026 OF oDlgCNPJ PIXEL NOBORDER
  	TOOLTIPNEW(oBtnCONFIRMAR,"Confirmar inclusão dos dados","Confirmar")
  	oBtnCONFIRMAR:bLClicked := {||lSair2:=.T.,oDlgCNPJ:END()}
   oBtnCONFIRMAR:oCursor = oCurHAND
   
	@ 045,008 SAY oSayCNPJ PROMPT "NÚMERO CNPJ" OF oDlgCNPJ SIZE 120,017 PIXEL TRANSPARENT FONT TTF_COURIER_RECEITA ; oSayCNPJ:nStyle := nOR( oSayCNPJ:nStyle, SS_CENTERIMAGE )
	@ 045,095 SAY oSayCNPJ2 VAR TRANSFORM(cCNPJ,"@R 99.999.999/9999-99") OF oDlgCNPJ SIZE 135,017 PIXEL TRANSPARENT FONT TTF_COURIER_RECEITA COLORS nRGB(000,000,255) ; oSayCNPJ2:nStyle := nOR( oSayCNPJ2:nStyle, SS_CENTERIMAGE )

	@ 068,008 SAY oSayCAPTCHA PROMPT "CARACTERES CAPTCHA" OF oDlgCNPJ SIZE 140,017 PIXEL TRANSPARENT FONT TTF_COURIER_RECEITA ; oSayCAPTCHA:nStyle := nOR( oSayCAPTCHA:nStyle, SS_CENTERIMAGE )
	@ 068,158 GET oGetCAPTCHA VAR cCAPTCHA PICTURE "!!!!!!" OF oDlgCNPJ SIZE 050,017 PIXEL COLORS nRGB(000,000,255) FONT TTF_COURIER_RECEITA
	
	@ 068,212 BTNBMP oBtnPESQUISACPF RESOURCE "BTN_PESQUISA_RECEITA" OF oDlgCNPJ SIZE 20,20 PIXEL ACTION CONSULTA(cCNPJ, cCaptcha, cCookie1) NOBORDER TRANSPARENT
	TOOLTIPNEW(oBtnPESQUISACPF,"Pesquisar dados no site da Receita Federal","Pesquisar")	
	oBtnPESQUISACPF:oCursor = oCurHAND
	oBtnPESQUISACPF:nStyle := nAnd( oBtnPESQUISACPF:nStyle, nNot( WS_TABSTOP ) )	 	
	
   @ 033,003 GROUP oGrpDADOSCNPJ OF oDlgCNPJ COLOR nRGB(000,000,255) SIZE 230,060 PIXEL TRANSPARENT
   
   @ 040,241 IMAGE oImgCAPTCHA SIZE 185,052 FILENAME "CAPTCHA\CAPTCHA.PNG" OF oDlgCNPJ PIXEL ADJUST NOBORDER
	TOOLTIPNEW(oImgCAPTCHA,"Clique para trocar a imagem","Captcha")
	oImgCAPTCHA:oCursor := oCurHAND	
	oImgCAPTCHA:bLClicked := {||MAXXINFO()}     

	@ 033,238 GROUP oGrpCAPTCHA OF oDlgCNPJ COLOR nRGB(000,000,255) SIZE 190,060 PIXEL TRANSPARENT	

	@ 095,003 GROUP oGrpDADOS PROMPT "Dados Recebidos da Receita" OF oDlgCNPJ COLOR nRGB(000,000,255) SIZE 424,086 PIXEL TRANSPARENT   
	
	@ 105,008 SAY oSayTIPO PROMPT "Tipo" OF oDlgCNPJ SIZE 080,012 PIXEL TRANSPARENT ; oSayTIPO:nStyle := nOR( oSayTIPO:nStyle, SS_CENTERIMAGE )
	@ 105,030 GET oGetTIPO VAR cTIPO PICTURE "@!" OF oDlgCNPJ SIZE 050,012 PIXEL COLORS nRGB(000,000,255)

	@ 105,085 SAY oSayABERTURA PROMPT "Abertura" OF oDlgCNPJ SIZE 080,012 PIXEL TRANSPARENT ; oSayABERTURA:nStyle := nOR( oSayABERTURA:nStyle, SS_CENTERIMAGE )
	@ 105,125 GET oGetABERTURA VAR cABERTURA PICTURE "@!" OF oDlgCNPJ SIZE 050,012 PIXEL COLORS nRGB(000,000,255)

	@ 105,180 SAY oSayFANTASIA PROMPT "Fantasia" OF oDlgCNPJ SIZE 080,012 PIXEL TRANSPARENT ; oSayFANTASIA:nStyle := nOR( oSayFANTASIA:nStyle, SS_CENTERIMAGE )
	@ 105,220 GET oGetFANTASIA VAR cFANTASIA PICTURE "@!" OF oDlgCNPJ SIZE 203,012 PIXEL COLORS nRGB(000,000,255)

	@ 120,008 SAY oSayRSOCIAL PROMPT "Razão Social" OF oDlgCNPJ SIZE 080,012 PIXEL TRANSPARENT ; oSayRSOCIAL:nStyle := nOR( oSayRSOCIAL:nStyle, SS_CENTERIMAGE )
	@ 120,065 GET oGetRSOCIAL VAR cRSOCIAL PICTURE "@!" OF oDlgCNPJ SIZE 358,012 PIXEL COLORS nRGB(000,000,255)

	@ 135,008 SAY oSayENDERECO PROMPT "Endereço" OF oDlgCNPJ SIZE 070,012 PIXEL TRANSPARENT ; oSayENDERECO:nStyle := nOR( oSayENDERECO:nStyle, SS_CENTERIMAGE )
	@ 135,047 GET oGetENDERECO VAR cENDERECO PICTURE "@!" OF oDlgCNPJ SIZE 320,012 PIXEL COLORS nRGB(000,000,255)

	@ 135,370 SAY oSayNUMERO PROMPT "N°" OF oDlgCNPJ SIZE 020,012 PIXEL TRANSPARENT ; oSayNUMERO:nStyle := nOR( oSayNUMERO:nStyle, SS_CENTERIMAGE )
	@ 135,382 GET oGetNUMERO VAR nNUMERO PICTURE "99999999" OF oDlgCNPJ SIZE 041,012 PIXEL COLORS nRGB(000,000,255)

	@ 150,008 SAY oSayCOMPLEMENT PROMPT "Complemento" OF oDlgCNPJ SIZE 150,012 PIXEL TRANSPARENT ; oSayCOMPLEMENT:nStyle := nOR( oSayCOMPLEMENT:nStyle, SS_CENTERIMAGE )
	@ 150,060 GET oGetCOMPLEMENT VAR cCOMPLEMENT PICTURE "@!" OF oDlgCNPJ SIZE 140,012 PIXEL COLORS nRGB(000,000,255)

	@ 150,252 SAY oSayBAIRRO PROMPT "Bairro" OF oDlgCNPJ SIZE 150,012 PIXEL TRANSPARENT ; oSayBAIRRO:nStyle := nOR( oSayBAIRRO:nStyle, SS_CENTERIMAGE )
	@ 150,283 GET oGetBAIRRO VAR cBAIRRO PICTURE "@!" OF oDlgCNPJ SIZE 140,012 PIXEL COLORS nRGB(000,000,255)

	@ 165,008 SAY oSayCIDADE PROMPT "Cidade" OF oDlgCNPJ SIZE 150,012 PIXEL TRANSPARENT ; oSayCIDADE:nStyle := nOR( oSayCIDADE:nStyle, SS_CENTERIMAGE )
	@ 165,039 GET oGetCIDADE VAR cCIDADE PICTURE "@!" OF oDlgCNPJ SIZE 140,012 PIXEL COLORS nRGB(000,000,255)

	@ 165,184 SAY oSayUF PROMPT "UF" OF oDlgCNPJ SIZE 150,012 PIXEL TRANSPARENT ; oSayUF:nStyle := nOR( oSayUF:nStyle, SS_CENTERIMAGE )
	@ 165,198 GET oGetUF VAR cUF PICTURE "!!" OF oDlgCNPJ SIZE 014,012 PIXEL COLORS nRGB(000,000,255)

	@ 165,218 SAY oSayCEP PROMPT "CEP" OF oDlgCNPJ SIZE 150,012 PIXEL TRANSPARENT ; oSayCEP:nStyle := nOR( oSayCEP:nStyle, SS_CENTERIMAGE )
	@ 165,236 GET oGetCEP VAR cCEP PICTURE "@R 99999-999" OF oDlgCNPJ SIZE 046,012 PIXEL COLORS nRGB(000,000,255)

	@ 165,288 SAY oSaySITUACAO PROMPT "Situação" OF oDlgCNPJ SIZE 050,012 PIXEL TRANSPARENT ; oSaySITUACAO:nStyle := nOR( oSaySITUACAO:nStyle, SS_CENTERIMAGE )
	@ 165,327 GET oGetSITUACAO VAR cSITUACAO PICTURE "@!" OF oDlgCNPJ SIZE 096,012 PIXEL COLORS nRGB(000,000,255)

   @ 190,008 ACTIVEX oACTIVEX OF oDlgCNPJ PROGID "Shell.Explorer.2" SIZE 413,138
	
   ACTIVATE DIALOG oDlgCNPJ CENTERED ON PAINT PINTAFUNDO(oDlgCNPJ, hDC) ON INIT PEGACAPTCHA()
   
RETURN NIL    

***************************************************************************************************
STATIC FUNCTION PEGACAPTCHA()
***************************************************************************************************

	LOCAL oSERVER, cRETORNO := "*ERRO*", cMSGERRO:= ''

	Try
		oSERVER:= CreateObject( "MSXML2.ServerXMLHTTP.5.0")
	Catch
		MAXXINFO('Erro na Criação do Serviço')
		RETURN .F.
	End
	
	Try
		oSERVER:Open( "GET", cUrlc, .f. )
		oSERVER:SetRequestHeader("Content-Type", "application/x-www-form-urlencoded" )
		oSERVER:SetRequestHeader("Connection", "keep-alive" )
		oSERVER:Send()
		oSERVER:WaitForResponse( 5000 )
	Catch
		MAXXINFO('Erro na Conexão com Site')
		RETURN .F.
	End

	c := oSERVER:getResponseHeader("Set-Cookie")
	cCOOKIE1:= SUBSTR(c, 1, At(';', c) -1)
	cHTML:= oSERVER:ResponseBody
	TXT_FILE := FCREATE("CAPTCHA\CAPTCHA.PNG", 0)
	
	IF !FERROR() = 0
		MAXXINFO("Erro de criacao do arquivo imagem " + STR(FERROR(), 3, 0))
		RETURN NIL
	ENDIF
	
	FWRITE(TXT_FILE, cHTML)
	FCLOSE(TXT_FILE)
	oSERVER:SetProperty('F_Cnpj', 'image_1', 'Picture', 'Captcha.png')
	
RETURN (cCOOKIE1)

***************************************************************************************************
STATIC FUNCTION CONSULTA(cCNPJ, cCAPTCHA, cCOOK1)
***************************************************************************************************

	LOCAL oSERVER, c, cQUERY
	
	Try
		oSERVER:= CreateObject("MSXML2.ServerXMLHTTP.5.0")
	Catch
		MAXXINFO('Erro na Criação do Serviço')
		RETURN .F.
	End
	
	Try
		oSERVER:Open( "GET", cUrl2, .f. )
		oSERVER:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
		oSERVER:SetRequestHeader( "Connection", "keep-alive" )
		oSERVER:SetRequestHeader("Cookie", cCook1)
		oSERVER:Send()
		oSERVER:WaitForResponse( 5000 )
	Catch
		MAXXINFO('Erro na Conexão com o Site')
		RETURN .F.
	End
	
	c := oSERVER:getResponseHeader("Set-Cookie")
	
	cCookie:= SUBSTR(c, 1, AT(';', c) -1)

	cQuery:= "origem=comprovante&" +;
	         "cnpj=" +  cCnpj +;
	         "&txtTexto_captcha_serpro_gov_br=" + cCaptcha +;
	         "&submit1=Consultar" +;
	         "&search_type=cnpj"	         

	Try
		oSERVER:= CreateObject("MSXML2.ServerXMLHTTP.5.0")
	Catch
		MAXXINFO('Erro na Criação do Serviço')
		RETURN .F.
	End

	Try
		oSERVER:Open( "POST", cUrl, .f. )
		oSERVER:SetRequestHeader("Content-Type", "application/x-www-form-urlencoded" )
		oSERVER:SetRequestHeader("Connection", "keep-alive" )
		oSERVER:SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
		oSERVER:SetRequestHeader("Referer", "http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/cnpjreva/Cnpjreva_Solicitacao2.asp")
		oSERVER:SetRequestHeader("Accept-Encoding", "gzip, deflate")
		oSERVER:SetRequestHeader("Accept-Language", "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3")
		oSERVER:SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; rv:44.0) Gecko/20100101 Firefox/44.0")
		oSERVER:SetRequestHeader("Cookie", cCook1)
		oSERVER:SetRequestHeader("Cookie", 'flag=1')
		oSERVER:Send(cQuery)
		oSERVER:WaitForResponse( 5000 )	
	Catch
		MAXXINFO('Erro na Conexão com o Site')
		RETURN .F.
	End
	
	cRETORNO:= oSERVER:ResponseBody
	
	* Elemina a parte de baixa da consulta
	nINI1:= AT('<!-- Fim da tabela principal -->',  cRETORNO) - 1
	nFIM1:= AT('</body>', cRETORNO)
	cPARTE:= SUBSTR(cRETORNO, 1, nINI1)
	cRETORNO:= cPARTE + SUBSTR(cRETORNO, nFim1)

	TXT_FILE:=FCREATE("Resultado.html", 0)
	IF !FError() = 0
		MAXXINFO("Erro de criação do arquivo de Imagem " + STR(FERROR(), 3, 0))
		RETURN .F.
	ENDIF
	
	FWRITE(TXT_FILE, cRETORNO)
	FCLOSE(TXT_FILE)
	oACTIVEX := F_Cnpj.Test.Object
	oACTIVEX:Navigate(DiskName() +':' + DirName(DiskName()) + "\Resultado.html")
	
RETURN NIL

***************************************************************************************************
STATIC FUNCTION PINTAFUNDO(oDlg, hDC, aRect)
***************************************************************************************************

	***** POSIÇÕES FILLRECT 
	***** aRect = {nTop, nLeft, nBottom, nRight}
	LOCAL oBrush

  	DEFAULT aRect := {0,700,059,902}

	DEFINE BRUSH oBrush COLOR RGB(000,000,128)
	FILLRECT( hDC, aRect, oBrush:hBrush )
	                                                   
RETURN NIL
Responder