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 »

Oi Toledo, se vc quiser compartilhar o que já tem, talvez possamos ajudar o finalizar a montagem do xml da NFe.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
ciacpd
Usuário Nível 1
Usuário Nível 1
Mensagens: 37
Registrado em: 24 Set 2007 11:23
Localização: Mairinque - SP

Consulta optante do simples online

Mensagem por ciacpd »

Olá Pessoal,
Realizei pequenas alterações para compatibilizar com xharbour e FiveWin a consulta simples.
Deve ser criada uma dialog com os recursos informados ou então criar com o @Say/Get
Linkar a hbcc.lib

Código: Selecionar todos

// -------------------------------------------------------------------------- //
// Arquivo.....: ConsultaNfe.prg
// Criado em...: 02/05/2016 as 10:41:18
// Projeto.....: Consulta Simples
// Programador.: Daniel Denobie - denobie@hotmail.com
// Alterado por: Daniel Segura Fernandes ciacpd@hotmail.com
// Objetivo....: Compatibilizar com FiveWin xHarbour
// -------------------------------------------------------------------------- //
#include "FiveWin.ch"
#include "directry.ch"
#include "Fileio.ch"
#include "tip.ch"

#define _MSXML2_ServerXMLHTTP        'MSXML2.ServerXMLHTTP.5.0'

// -------------------------------------------------------------------------- //
FUNCTION Busca_NFe_Portal()
   
   Private cUrl := "http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8="
   Private cUrl1:= "http://www.nfe.fazenda.gov.br/portal/consultaCompleta.aspx?tipoConteudo=XbSeqxE8pl8="
   Private cUrl2:= 'http://www.nfe.fazenda.gov.br/portal/consultaCompleta.aspx?tipoConteudo=XbSeqxE8pl8%3d'

   Private oImgCaptcha, oCaptcha, cCaptcha:=space(6), oChave, cChave:=space(44),;
           cStringCookie, cViewState, cViewStateGenerator, cEeventValidation, cHiddenToken, cCodigo, cHtml
   Private cHiddenSom, oDlg, oServer

   Consulta()
   
   Define Dialog oDlg Resource 'GERNFE'

   Redefine Get oCaptcha Var cCaptcha ID 4001 Of oDlg
   Redefine Get oChave   Var cChave   ID 4002 Of oDlg

   Redefine Image oImgCaptcha FILENAME "captcha.png" ID 4004 Of oDlg Adjust

   Redefine BtnBmp ID 4005 Resource 'REFRESH16' Of oDlg Action Captcha(cHtml) //ImageNFE( oDlg, cCaptcha )
   Redefine Button ID 4003                      Of oDlg Action ( oDlg:End() )

   oDlg:lHelpIcon:=.f.
   Activate Dialog oDlg Centered On Init Captcha(cHtml) // ImageNFE( oDlg, cCaptcha )
   
   If ! Consulta1(cChave, cCaptcha)
      nmsgbox('Ocorreu um ERRO na consulta.', xSWH+' Informa.')
      return .f.
   Else
      nmsgbox('Consulta realizada com sucesso.', xSWH+' Informa.')
   EndIf

Return .t.
// -------------------------------------------------------------------------- //
Function Consulta()
   mensagem("Criando a conecção com o partal da NFe. Aguarde!!!")
   Try
      oServer:= CreateObject( _MSXML2_ServerXMLHTTP )
   Catch
      MsgInfo('Erro na Criação do Serviço', xSWH+' Informa.')
      mensagem("")
      Return .f.
   End
   Try
      oServer:Open( "GET", cUrl, .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', xSWH+' Informa.')
      mensagem("")
      Return .f.
   End
   cHtml:= oServer:ResponseBody
   cStringCookie:= oServer:getResponseHeader("Set-Cookie")
   mensagem('')
   MemoWrit("html_nfei.txt", cHtml)
   nInie   := At('id="ctl00_ContentPlaceHolder1_lblMensagemErro">',  cHtml) + 47
   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 ' + cUrl)
         Return .f.
      EndIf
   EndIf
   nIni  := At('id="__VIEWSTATE" value=',  cHtml) + 24
   cHtml1:= SubStr( cHtml, nIni)
   nFim  := At('" />', cHtml1) - 1
   cViewState:= SubStr(cHtml, nIni, nFim)

   nIni1 := At('id="__EVENTVALIDATION" value="',  cHtml) + 30
   cHtml1:= SubStr( cHtml, nIni1)
   nFim1 := At('" />', cHtml1) - 1
   cEeventValidation:= SubStr(cHtml, nIni1, nFim1)

   nIni2 := At('id="__VIEWSTATEGENERATOR" value="',  cHtml) + 33
   cHtml1:= SubStr( cHtml, nIni2)
   nFim2 := At('" />', cHtml1) - 1
   cViewStateGenerator:= SubStr(cHtml, nIni2, nFim2)

   nIni3 := At('id="ctl00_ContentPlaceHolder1_token" value="',  cHtml) + 44
   cHtml1:= SubStr( cHtml, nIni3)
   nFim3 := At('" />', cHtml1) - 1
   cHiddenToken:= SubStr(cHtml, nIni3, nFim3)

   nIni4 := At('id="ctl00_ContentPlaceHolder1_captchaSom" value="',  cHtml) + 49
   cHtml1:= SubStr( cHtml, nIni4)
   nFim4 := At('" />', cHtml1) - 1
   cHiddenSom:= SubStr(cHtml, nIni4, nFim4)

   memowrit( 'html_nfef.txt' , cHtml )
   
   If ! Captcha(cHtml)
      Return .F.
   EndIf

Return .t.
// -------------------------------------------------------------------------- //
Function Captcha(cHtml)
   nIni  := At('data:image/png;base64,',  cHtml) + 22
   cHtml1:= SubStr(cHtml, nIni)
   nFim  := At('" style="border-width:0px;" />', cHtml1) - 2
   cFile:= SubStr(cHtml, nIni, nFim)
   txt_file:=fcreate("captcha.png", 0)
   If (!(ferror() = 0))
      MsgInfo("Erro de criacao do arquivo de imagem " + Str(ferror(), 3, 0))
      Return .f.
   EndIf
   cCodigo:= SubStr(cHtml, nIni, nFim)
   If Empty(cCodigo)
      MsgInfo("Erro de criacao do arquivo de imagem")
      Return .f.
   EndIf
   cDecoded      := HB_B64DECODE( cCodigo )
   FWrite(txt_file , cDecoded)
   FClose(txt_file)
   if valtype('oImgCaptcha') == 'O'
      cImgCaptcha:='captcha.png'
      oImgCaptcha:Hide()
      oImgCaptcha:LoadBmp( cImgCaptcha )
      oImgCaptcha:Show()
      oImgCaptcha:Refresh( .t. )
   endif
   sysrefresh()
   
Return .T.
// -------------------------------------------------------------------------- //
Function Consulta1(cChave, cCaptcha)
   Local oInternet, cParm, cRet:= cHtml:= ''

   If ! DigitoChave(cChave)
      Return Nil
   EndIf

   cParm:= { { "__EVENTARGUMENT", "" },;
             { "__EVENTTARGET", "" },;
             { "__EVENTVALIDATION", cEeventValidation },;
             { "__VIEWSTATE", cviewState },;
             { "__VIEWSTATEGENERATOR", cViewStateGenerator },;
             { "ctl00$ContentPlaceHolder1$btnConsultar", "Continuar" },;
             { "ctl00$ContentPlaceHolder1$captchaSom", cHiddenSom},;
             { "ctl00$ContentPlaceHolder1$token", cHiddenToken },;
             { "ctl00$ContentPlaceHolder1$txtCaptcha", cCaptcha },;
             { "ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta", cChave },;
             { "ctl00$txtPalavraChave", "" },;
             { "hiddenInputToUpdateATBuffer_CommonToolkitScripts", "1"}}
   Try
      oInternet:= TIPClientHTTP():New(cUrl, .f.)
   Catch
      MsgInfo('Erro na Criação do Serviço')
      Return .f.
   End
   oInternet:SetCookie(cStringCookie)
   If oInternet:Open()
      If oInternet:POST(cParm)
         cRet:=oInternet:ReadAll()
      Else
      	 msgInfo('Erro no Post ' + cUrl , xSWH+' Informa.')
      	 Return .F.
      EndIf
   Else
      msgInfo('Erro na Conexão', xSWH+' Informa.')
      Return .f.
   EndIf
   oInternet:Close()
   If At('id="ctl00_ContentPlaceHolder1_bltMensagensErro" class="listaErro">', cRet) > 0
		cPart:= Substr(cRet, (At('id="ctl00_ContentPlaceHolder1_bltMensagensErro" class="listaErro">', cRet) + 66))
		cPart:= Substr(cPart, (At('<li>', cPart) + 4))
      MsgInfo(Troca_Acento(SubStr(cPart, 1, (At('</li>', cPart) - 1))))
      Return .f.
   EndIf
   Try
      oInternet:= TIPClientHTTP():New(cUrl1, .f.)
      oInternet:nConnTimeout:= 10000
   Catch
      MsgInfo('Erro na Criação do Serviço', xSWH+' Informa.')
      Return .f.
   End
   oInternet:SetCookie(cStringCookie)
   If oInternet:Open()
      cHtml:=oInternet:ReadAll()
      cStringCookie:= oInternet:GetCookies()
   Else
      msgInfo('Erro na Conexão')
      Return .f.
   EndIf
   oInternet:Close()
   MemoWrit('result.htm', cHtml, .f.)

   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)))
   	Return .f.
   EndIf
   //eleminas partes não usadas
   If ! Empty(cHtml)
	   nIni1  := At('<html><link ',  cHtml)
   	cParte := SubStr(cHtml, nIni1)
   	nIni1  := At('<div id="ctl00_ContentPlaceHolder1_divBotoesConsulta"',  cParte)
		cParte1:= SubStr(cParte, 1, nIni1 - 1)
		nFim1  := At('</form>', cParte1)
		cFile  := SubStr(cParte1, nFim1)
		MemoWrit('resulta.htm', cFile, .f.)
   Else
      Return .f.
   EndIf
   sysrefresh()
   Shellexecute( , "open" , 'resulta.htm' )
Return .T.
// -------------------------------------------------------------------------- //
Function DigitoChave(CodigoChave)
   Local indice:= '4329876543298765432987654329876543298765432'
   Local digito
   nSoma:= 0
   For contador:= 1 to 43
       nSoma+= (Val(SubStr(CodigoChave, contador, 1)) * Val(SubStr(indice, contador, 1)))
   Next
   digito:= (nSoma % 11)
   If digito == 0 .Or. digito == 1
      digito := 0
   Else
      digito := (11 - digito)
   EndIf
   If SubStr(CodigoChave, 44, 1) != LTrim(Str(digito, 1))
      MsgStop('Código da Chave Errado....', 'Aviso do Sistema')
      Return .f.
   EndIf
Return .t.
// -------------------------------------------------------------------------- //
Function Troca_Acento(cTexto)
   cTexto := StrTran( cTexto, "ó", "ó" )
   cTexto := StrTran( cTexto, "á", "á" )
Return cTexto
// -------------------------------------------------------------------------- //

Daniel Segura
ciacpd@hotmail.com
clipper/FW - xharbour/hwgui
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 »

Oi Toledo, vc conseguiu terminar a montagem do xml da NF-e?
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Consulta optante do simples online

Mensagem por Toledo »

Amigos, faltou tempo mesmo, mas esta semana eu posto o código pronto.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Consulta optante do simples online

Mensagem por Toledo »

Amigos, desculpe a demora, mas segue um demo de como importar o xML da NFe usando como base a página de consulta completa da SEFAZ.

Bom, como existe vários tipos de NFe, este demo importa o básico, então dependendo da NFe pode não funcionar corretamente.

Algumas TAGs também não foram incluídas neste demo (IPI, verAplic, infAdFisco, SignatureValue, KeyInfo, etc), ou por falta de exemplo ou por não ser apresentado na consulta da SEFAZ, então tem que ser implementado caso a caso.

Então façam testes com este demo, e se o xML não for importado corretamente, poste aqui a Chave da NFe para que eu possa fazer um teste.

Uma dica: para verificar se o xML foi importado corretamente, abrir o xML usando o Navegador de Internet (IE, Firefox, Chrome,etc), se o arquivo tiver algum problema, a estrutura do xML não será apresentada corretamente.

Abraços,
Anexos
nfe_importarXML.rar
(768.54 KiB) Baixado 342 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
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 »

:{ :{ :{ :{
:)) :)) :)) :))
:|< :|< :|< :|<

É claro que não poderíamos esperar menos do MESTRE !!!
Muito obrigado Toledo...
Para fim funcionou perfeitamente...
Agora é só implementar...

Os smilies representam exatamente como estou me sentindo... kkkk Estava num problemão...

Valeu... Obrigado...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
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 »

Toledo ficou ótimo a rotina, meus agradecimentos a você e ao Daniel por ter tido a gentileza de iniciar esta função, obrigado.
Wanderlei Cardoso
Analista / Programador
XHarbour + GtWvW + FiveWin + HwGui + Firebird
Skype: cwanderlei
cwanderlei@yahoo.com.br
(62)98171-3059 - whatsapp

Imagem
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Consulta optante do simples online

Mensagem por Kapiaba »

xmlnfe.png
Excelente idéia, thanks.
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Consulta optante do simples online

Mensagem por Poka »

Olá a todos

Toledo, implementei a rotina no meu sistema e ficou muito bom, parabéns e obrigado por disponibilizar.
Uma dúvida, ao baixar uma nota de compra, parece que não está trazendo os valores de icms, icmsst dos itens, tem como implementar?

Obrigado

Poka
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Consulta optante do simples online

Mensagem por Toledo »

Amigo, poste aqui a Chave da NFe ou envie por MP (Mensagem Privada) para mim, para que eu possa fazer um teste.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Consulta optante do simples online

Mensagem por Poka »

Olá Toledo

segue duas chaves

a diferença é só nos itens.
tem com cst 010 e cst 020


35160848709125000111550000000064431106954701

35160916888303000122550010001419571742957058

Obrigado

Poka
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 »

Olá...

Estou com um problema para baixar no Server 2008. Dá a mensagem de
'Erro na Conexão com o Site'
Já baixei a segurança, consigo acessar internet n servidor, mas nao abre a conexão via Classe...
Alguém tem alguma dica...?´

E o problema é no windows server mesmo...
O meu servidor que é igualzinho funciona, em outro cliente com o server 2008 também...

Obg

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 »

utilzo a Dll pra importar mas vou migrar para esta rotina por ficar mais direto e não depender de mais um componente de terceiros..

mas ao importar uma chave utilizando a Dll e com a rotina percebi algumas leves diferenças, 3 na verdade, 2 já corrigi 1 não entendi muito a lógica...

Qdo importo uma chave via Dll na TAG PIS e COFINS vem PISOutr e COFINSOutr sendo q o correto é PISAliq e COFINSAliq... ok só alterar e lá tb pra vir as tags dos percentuais pCOFINS e pPIS tem q trocar onde esta Aliquota (%) para Aliquota...

Fora isto preciso na TAG "transp" colocar a subTAG "veicTransp" q não tem e dentro dela "placa" e "UF"

Tentei adicionar as linhas abaixo

Código: Selecionar todos

*   Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL}

   AADD(aTransp,{{"","modFrete","transp",14,"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",7,"Placa",0},; //9-       ADICIONEI ESSAS 2 LINHAS
                 {"","UF","",0,"UF",0},; //9-                                 MAS NAO RESOLVEU
                 {"","qVol","vol",14,"Quantidade",0},; //9-
                 {"","esp","",0,"Espécie",0},; //10-
                 {"","marca","",0,"Marca dos Volumes",0},; //11-
                 {"","nVol","",0,"Volume",0},; //12-
                 {"","pesoL","",0,"Peso Líquido",0},; //13-
                 {"","pesoB","",0,"Peso Bruto",0}}) //14-
Alguém saberia?
mas não não fecha
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 »

Ola

Código: Selecionar todos

*   Conteudo elementos da Matriz = {VALOR_TAG,TAG,TAG_PAI,Elemento_Final_TAG_PAI,LABEL_HTML,TAM_LABEL}

   AADD(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-
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 »

Vlw Daniel

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