Clipper On Line • Ver Tópico - Manifestação NFe e Download XML via ACBrMonitorPlus

Manifestação NFe e Download XML via ACBrMonitorPlus

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

Moderador: Moderadores

 

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor fladimir » 29 Mai 2018 10:19

Olá pessoal, tudo bem...

A pedido do meu amigo Rubens aki do fórum em outro tópico estou compartilhando a maneira q estou fazendo, primeiramente tb quero dedicar agradecimentos ao Daniel q tão solidariamente cedeu a comunidade a rotina de montagem do XML a partir da consulta da chave, q tanto nos foi útil, mas de um tempo pra cá parou de funcionar, pode ser q com ajustes volte a funcionar, mas uma coisa é fato, o governo pode alterar isso a qualquer momento tendo q ter muita manutenção a rotina.

Agora existe uma forma de baixar o XML via webservices do governo através do certificado digital, isto é feito manifestando a NFe e posteriormente efetuando-se o download.

Resolvi adotar essa metodologia devido a maioria dos clientes já trabalhar com NFe ou NFCe ou seja, tem o certificado então basta configurar para manifestar e fazer o download.

A lógica q montei foi a seguinte, na entrada de notas, informou a chave da NFe sinal q quero dar entrada na mesma e estou de posse dela, então logicamente a operação foi confirmada.

O q eu faço é tentar baixar o XML, caso não de certo e o retorno dessa tentativa seja q existe NFe pra chave informada e a situação dessa nota é AUTORIZADA e o tipo é SAIDA (ou seja, saiu do emitente e será efetuada entrada no destinatario), eu manifesto ela como Confirmação da Operação e após isso já é possível o Download após algum tempo.

A rotina então ficou desta forma:

********************************************************************************
STATIC FUNCTION Entrada_Aux_DFe( cChave )
   LOCAL cChave_CNPJ, cChave_AnoMes, cArqXML, cPathDown

   cArqXML       := cChave + '-nfe.xml'
   cChave_CNPJ   := SUBSTR(cChave,07,14)
   cChave_AnoMes := '20'+SUBSTR(cChave,03,04)
   cPathDown     := oACBrNFe:cDirDoMonitor + 'RESPOSTA\' +cChave_CNPJ+ '\NFe\' +cChave_AnoMes+ '\Down\'
   IF DFe_BaixaXML( cChave )
      IF File( cPathDown+cArqXML )  // BAIXOU
         FileMove( cPathDown+cArqXML, CurDirSys()+'XML\'+cArqXML)
      ELSE    // NAO BAIXOU // MANIFESTA COMO CONFIRMACAO DA OPERACAO
         IF DFe_Manifestar(cChave, 2) // 1 Ciencia 2 Confirmação 3 Desconhecimento 4 Operacao nao realizada
            Alert('NFe nao havia sido manifestada!;Aguardar pelo menos 5 min para baixar XML;Em caso de duvida entrar em contato com o suporte', aOk, vcamarelo)
         ELSE
            Alert('NFe nao havia sido manifestada!;Falha ao manifestar NFe;Solicite XML ao fornecedor ou em caso de duvida contactar o suporte', aOk, vcamarelo)
         ENDIF         
      ENDIF
   ENDIF
RETURN NIL
********************************************************************************
STATIC FUNCTION DFe_BaixaXML( cChave )
   LOCAl aParametros, lRet := .F.
   aParametros := {}
   aadd( aParametros, xUFTocUF( cUserUF ) )
   aadd( aParametros, cCNPJUser           )
   aadd( aParametros, cChave              )
   oACBrNFe:CriaReq( 'NFe.DistribuicaoDFePorChaveNFe', aParametros ) // NFe.DistribuicaoDFePorChaveNFe("50", "03891241000166", "41100300903403000170550100000780201030797370")
   lRet := (oACBrNFe:cStatus == '138') // tem NFe pra chave em questao
   IF lRet ; lRet := (ASCAN(oACBrNFe:aRetorno, 'TPAMB=1')>0)  ; ENDIF // Emitida em Ambiente de Autorizacao
   IF lRet ; lRet := (ASCAN(oACBrNFe:aRetorno, 'TPNF=1')>0)   ; ENDIF // Tipo da Nota de Saida do Emitente
   IF lRet ; lRet := (ASCAN(oACBrNFe:aRetorno, 'CSITNFE=1')>0); ENDIF // Situação AUTORIZADA
RETURN lRet   
********************************************************************************
STATIC FUNCTION DFe_Manifestar(cChave, nTipo) // 1 Ciencia 2 Confirmação 3 Desconhecimento 4 Operacao nao realizada
   LOCAL cLin := '', lOk := .F.
   IF nTipo >0 .and. nTipo <=4
      cLin += '[EVENTO]'    + CRLF
      cLin += 'idLote=1'    + CRLF
      cLin += '[EVENTO001]' + CRLF
      cLin += 'chNFe='      + cChave    + CRLF
      cLin += 'cOrgao=91'   + CRLF
      cLin += 'CNPJ='       + cCNPJUser + CRLF
      cLin += 'dhEvento=' + DTOC(date())+' '+Time()+ CRLF
      cLin += 'tpEvento=' + IIF( nTipo == 1, '210210', IIF( nTipo == 2, '210200', IIF( nTipo == 3, '210220', '210240')))+CRLF
      cLin += 'nSeqEvento=1'                       + CRLF
      cLin += 'versaoEvento=' + pub_NFeVersao      + CRLF
      cLin += 'descEvento=' + IIF( nTipo == 1, 'Ciencia da Operacao', ;
                                                     IIF( nTipo == 2, 'Confirmacao da Operacao', ;     
                                                       IIF( nTipo == 3, 'Desconhecimento da Operacao', 'Operacao nao realizada')))+CRLF
   ENDIF
   IF !EMPTY(cLin)
      oACBrNFe:CriaReq( 'NFe.EnviarEvento', cLin)
      lOk := (ASCAN(oACBrNFe:aRetorno, 'CSTAT=135')>0) // ok
   ENDIF
RETURN lOk


Observações: O comando NFe.DistribuicaoDFePorChaveNFe, verifica a situação da NFe e caso ela tenha sido manifestada faz automaticamente o download do XML, caso não traz o resumo da NFe apenas, sendo necessário manifestar para posterior download.
Qdo é feito o download o ACBr cria o XML dentro da pasta de resposta das solicitações criando uma SUBPASTa com o nome igual ao CNPJ do emitente da NFe, dentro dessa pasta tem outra chamada NFe e depois outra com o Ano e Mes da emissao dessa NFe, depois outra chamada Down e ai sim vem o XML
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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2432
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 148 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor rubens » 29 Mai 2018 10:25

Obrigado Fladimir...

Muito bem explicado...

Valeu...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1530
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 76 vezes
Mens.Curtidas: 101 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor janio » 29 Mai 2018 11:33

Fladimir,

Após a manifestação o DOWNLOAD não esta automaticamente LIBERADO?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1847
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 64 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor fladimir » 29 Mai 2018 11:41

Sim e não.

Na rotina falei pra aguardar uns 5 min, mas pode tentar em seguida, esse tempo para liberar o download é do servidor da SEFAZ.
Conforme pesquisei há relatos q pode ser instantaneo ou demorar uns minutos.
Então eu coloquei a mensagem, mas se o usuário já quiser ir na sequencia pode tentar.
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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2432
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 148 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor hudson » 24 Abr 2019 15:36

Boa tarde. Eu sei que o post é antigo, mas gostaria de saber sobre as varíaveis que deram erro prá mim, no caso, oACBrNFE e a função CriaReq(), que aparecem no fonte mas não tem as funções. Essas e mais algumas que estariam faltando para poder fazer a Manifestação.
Desde já obrigado.
hudson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 23
Data de registro: 01 Ago 2004 13:00
Cidade/Estado: Cachoeiro de Itapemirim - ES
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor fladimir » 25 Abr 2019 00:50

oACBr é uma variável q carrega uma classe q criei pra uso meu aki
CriaReq é um método dessa classe q recebe os parâmetros e cria o arquivo q o ACBr lê no path etc com o comando recebido, posso postar o método aki, mas como ele é dependente da minha classe e lógica não sei se resolveria muito pra vc, em todo caso segue abaixo.

//------------------------------------------------------------------------------

method CriaReq(cComando, xPar, lFechaASPAS, nTimeOut, lEsperaPraVerRet) CLASS TACBr
   local lOk := .F.
   // nTimeOut uso no processaretorno q ‚ chamado pelo MandaReq
   DEFAULT lEsperaPraVerRet TO .F. // Uso isso aki no CTe
   
   *-- Apaga o arquivo de comando
   ferase( ::cArqCMD )
   ferase( ::cArqTXT )

   *-- Requisicao
   printON()
   SET PRINTER TO ( ::cArqCMD )

   if valtype(xPar) == 'A'
      cComando += '('
      for nI:=1 To len(xPar)
         default xPar[nI] To '' && se for NIL faz empty
         if !empty(xPar[nI])
            cComando += ASPAS + xPar[nI] + ASPAS + if(len(xPar)>nI , ',', ')')
         else
            cComando += xPar[nI] + if(len(xPar)>nI , ',', ')')
         endif            
      next
      @ 0,0 say cComando
   else
      default xPar        to ''
      default lFechaASPAS to .T.
      @ 0,0 say cComando + '(' + chr(34) + xPar + if( lFechaASPAS, chr(34), '') + ')'
   endif
   SET PRINTER TO
   printOFF()
   if File( ::cArqCMD )
      ::MandaReq( ::cArqCMD, NIL, nTimeOut, lEsperaPraVerRet)
      lOk := .T.
   Endif
return lOk

//------------------------------------------------------------------------------

method MandaReq(cArqReq, cTexto, nTimeOut, lEsperaPraVerRet) CLASS TACBr
//--> Envia Arq Gerado para ACBrNFeMonitor

   default cTexto           to ''
   default lEsperaPraVerRet to .F.
   
   *-- Apaga retorno do ACBr
   FERASE( ::cDirDoMonitor +  'SAINFE' + cTerminal + '.TXT' )
   if ::lMostraProcess .and. !empty(cTexto)
      Mensag(cTexto)
   endif
   *-- Cria Arq para ACBr Ler
   FILECOPY( cArqReq,  ::cDirdoMonitor+cArqReq )
   FILEDELETE( cArqReq )                                                                                                         
   *-- Renomeia arq de comando para TXT ACBr ler
   while !file( ::cDirDoMonitor + ::cArqCMD )
   end
   FRENAME( ::cDirDoMonitor+cArqReq,   ::cDirDoMonitor + ::cArqTXT )
   IF lEsperaPraVerRet // Transportadora Olivette
      INKEY(1) // vou esperar 0,5s depois de Enviar comando/XML
   ENDIF
   ::cStatus  := ::cRetorno := ''
   ::ProcessaRetorno(nTimeOut) // Le retorno e processa pegando status
   *-- Apaga Arquivos
   FILEDELETE( cArqReq ) // Arquivo Comando local                                                                                                         
   FERASE(   ::cArqTXT ) // Arquivo ACBr
   FERASE(   ::cArqCMD ) // Arquivo Comando pasta ACBr
return nil

********************************************************************************
method ProcessaRetorno(nTimeOut) CLASS TACBr
   local REQ, RESP, nTent, nHoraInicio := Seconds(), lTentaAbrir := .T.
   local cTela := savescreen(23,1,23,78)
   DEFAULT nTimeOut To 120 // era 300 mas 300 ‚ igual 5 min muito tempo

   ::cRetorno := ''
   REQ  := ::cDirDoMonitor + ::cArqTXT // ENT.TXT
   RESP := ::cDirDoMonitor + 'SAINFe' + cTerminal + '.TXT'

   *-- Fa‡a enquanto o ACBr nÆo ler o arquivo // Qdo ele le ele apaga
   while file(REQ)
      IF Seconds() - nHoraInicio > nTimeOut // se arquivo nÆo apaga entÆo nÆo ta lendo
         ::cRetorno := 'ERRO: Protocolo nao esta ativo'
         ::cStatus  := ::cRetorno
         return nil
      endif
      inkey(0.1)
   end
   restscreen(23,1,23,78, cTela)

   ///------------  Lendo a resposta  ------------------//
   nTent    := 1
   while empty(::cRetorno)
      inkey(0.1)
      if ::lMostraProcess
         Mensag( 'Lendo retorno do Protocolo ACBr...' + {'/', '\'}[nTent%2+1], {'N+/W', 'N/W*'}[nTent%2+1] )
         Mensag( 'Lendo retorno do Protocolo ACBr...' + {'-', '|'}[nTent%2+1], {'N+/W', 'N/W*'}[nTent%2+1] )
      endif
   
      *-- Se tem RETORNO... avalia se esta crescendo
      if file(RESP) 
         nSize := len(hb_memoread(RESP))
         while nSize <> len(hb_memoread(RESP)) // sinal q arquivo esta crescendo
            NextKey() // coloquei devido uma dica pra liberar o processador
            inkey(0.1)
            nSize := len(hb_memoread(RESP))
         end
         ::cRetorno := alltrim(hb_memoread( RESP ))
      endif
      if empty(::cRetorno) // SE VAZIO ESPERA PRA PEGAR O RETORNO DURANTE 5 SEGUNDOS
         if nTent == 100
            RESP := ::cDirDoMonitor + 'SAINFe.TXT'
         elseif nTent > 600
            ::cRetorno := 'ERRO: Sem resposta do Protocolo em ' + alltrim(str(INT(nTent/2)))+ ' segundos (TimeOut)'
         endif
         NextKey() // coloquei devido uma dica pra liberar o processador
         millisec(60)
         nTent++
      endif
   end
   while right(::cRetorno,1) $ CRLF   // Remove sinalizadores do final
      ::cRetorno := left(::cRetorno, len(::cRetorno)-1)
   end
   ::cRetorno := UPPER(ACENT2(::cRetorno))
   ::aRetorno := Split(::cRetorno, CRLF) // criei pra usar na analise de todas as linhas do retorno via Array

   *-- Analisa cStat caso haja
   ::cStatus :=  alltrim(str( ::PegaCSTAT( ::cRetorno ) ))   //SUBSTR( cRetorno, AT("CSTAT=", cRetorno)+6, 3 )
   if val(::cStatus) > 0 .and. val(::cStatus) == 100 // Ok
      ::cStatus := '100'
   elseif val(::cStatus) >0
      ::cStatus := alltrim(::cStatus)
   else // se cStatus = 0 ou diferente de n£meros pega o RetACBr
      ::cStatus := ::cRetorno
   endif
   if ::lMostraProcess
      limpa()
   endif
  return nil
********************************************************************************
method MostraRetorno() CLASS TACBr
   LOCAL cRetcStat, aCSTAT := {}, aRetorno, cLinha, nI
   LOCAL cCorOLD := SETCOLOR()
   local cTelaMsg := SaveScreen(s_geral)
   *-- Mostra o Retorno baseado no cStat   
   if !empty( ::cStatus )
      cRetcStat := ::VerifyCSTAT()
      if empty( cRetcStat )
         cRetcStat := 'RETORNO INDEFINIDO'
      else
         cRetcStat := WIN_OemToAnsi( HB_UTF8ToStr(cRetcStat) )     
         IF 'XMOTIVO' $ upper(cRetcStat)
            aRetorno := HB_aTokens( STRTRAN(cRetcStat, CHR(13)), CHR(10))
            cRetcStat := '' + CRLF
            FOR nI:=1 TO LEN(aRetorno)
               cLinha := UPPER(aRetorno[nI] )
               if 'CSTAT'   $ left(cLinha, 10)
                  nCSTAT := VAL( SUBSTR(cLinha, AT('CSTAT=', upper(cLinha) )+6, 4))
                  IF ASCAN(aCSTAT, { |x| x=nCSTAT} ) == 0
                     aadd( aCSTAT, nCSTAT)
                  ELSE
                     nI++
                     LOOP
                  ENDIF
               endif
               if 'CSTAT'   $ left( cLinha, 10) .or. 'XMOTIVO' $ left( cLinha, 10)
                  cRetcStat += cLinha + CRLF
               endif
            NEXT
         endif
         cRetcStat := upper(WIN_ANSITOOEM(Upper(cRetcStat)))
      endif
      SETCOLOR('N*/N,W*/RB,W+/GB,W+/R,W+/R') //'N/W,N/W,,,W+/R')
      Caixa(01,12,20,67,,,'Retorno SEFAZ','W+/GB',,.F.)
      Quebra(3, '54', substr(cRetcStat, AT('[RETORNO]', upper(cRetcStat))), .T., .T., 3, 13,,,,,'W+/R') ;   inkey(0)
      SETCOLOR(cCorOld)
   endif
   RestScreen(s_geral, cTelaMsg)
return nil


Uma dica q te dou é onde esta o CriaReq vc pensa assim criar um TXT pro monitor ler contendo o parametro q eu passo para o CriaReq, depois vc lê o retorno q o ACBr vai criar.
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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2432
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 148 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor JoséQuintas » 25 Abr 2019 07:51

Tem usuário fazendo isso pela Sefazclass.
Talvez até simplifique.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14936
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 884 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor hudson » 26 Abr 2019 06:50

Obrigado a todos.
Vou tentar ajustar suas funções para meu uso e vou estudar a SefazClass.
hudson
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 23
Data de registro: 01 Ago 2004 13:00
Cidade/Estado: Cachoeiro de Itapemirim - ES
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor Fernando queiroz » 30 Abr 2019 16:20

na SEFAZCLASS tem

METHOD NFeEventoManifestacao( cChave, cCnpj, cCodigoEvento, xJust, cCertificado, cAmbiente )

agora so falta a opção de download :)) :)) :))
HARBOUR 3.2, HWGUI 2.22 B4, SEFAZCLASS, DBFCDX, PDFClass, LETODBF
Fernando queiroz
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 463
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 6 vezes
Mens.Curtidas: 21 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor JoséQuintas » 30 Abr 2019 18:40

Pra mim já tinha isso.... me enganei.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14936
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 884 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor JoséQuintas » 30 Abr 2019 18:58

Não encontro em qual manual tem a última versão de download.
Aquele NFEDistribuição é pra download, ou pra consultar apenas?
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14936
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 884 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor JoséQuintas » 30 Abr 2019 19:04

É que não se chama mais NfeDownloadNfe....
Faz tanto tempo que já tinha esquecido...
É que não uso isso, e é de 2014...

nfe.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14936
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 884 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor Fernando queiroz » 01 Mai 2019 15:36

METHOD NFeDistribuicaoDFe( cCnpj, cUltNSU, cNSU, cUF, cCertificado, cAmbiente ) CLASS SefazClass

   hb_Default( @::cProjeto, WS_PROJETO_NFE )
   hb_Default( @::cVersao, WS_NFE_DEFAULT )
   hb_Default( @cUltNSU, "0" )
   hb_Default( @cNSU, "" )

   ::aSoapUrlList := WS_NFE_DISTRIBUICAO
   ::Setup( cUF, cCertificado, cAmbiente )
   ::cSoapAction  := "nfeDistDFeInteresse"
   ::cSoapService := "http://www.portalfiscal.inf.br/nfe/wsdl/NFeDistribuicaoDFe"

   ::cXmlEnvio    := [<distDFeInt versao="] + ::cVersao + [" ] + WS_XMLNS_NFE + [>]
   ::cXmlEnvio    +=    XmlTag( "tpAmb", ::cAmbiente )
   ::cXmlEnvio    +=    XmlTag( "cUFAutor", ::UFCodigo( ::cUF ) )
   ::cXmlEnvio    +=    XmlTag( "CNPJ", cCnpj ) // ou CPF
   IF Empty( cNSU )
      ::cXmlEnvio +=   [<distNSU>]
      ::cXmlEnvio +=      XmlTag( "ultNSU", cUltNSU )
      ::cXmlEnvio +=   [</distNSU>]
   ELSE
      ::cXmlEnvio +=   [<consNSU>]
      ::cXmlEnvio +=      XmlTag( "NSU", cNSU )
      ::cXmlEnvio +=   [</consNSU>]
   ENDIF
   ::cXmlEnvio   += [</distDFeInt>]
   ::XmlSoapPost()

   RETURN ::cXmlRetorno


Aguem já usou ou usa esta rotina , ela faz ou não a baixa do xml da NF-e

ela consta na sefazclass mas não sei o objetivo dela

quintas da uma dica ai
HARBOUR 3.2, HWGUI 2.22 B4, SEFAZCLASS, DBFCDX, PDFClass, LETODBF
Fernando queiroz
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 463
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 6 vezes
Mens.Curtidas: 21 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor JoséQuintas » 01 Mai 2019 17:32

Vou ter que olhar melhor o manual, dá a impressão de que só fiz a parte de consultar documentos.

Mas o que faz também é interessante:
Saber quais notas fora emitidas, antes mesmo do fornecedor avisar.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14936
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 884 vezes

Manifestação NFe e Download XML via ACBrMonitorPlus

Mensagempor JoséQuintas » 01 Mai 2019 23:26

METHOD NFeDistribuicaoDFe( cCnpj, cUltNSU, cNSU, cChave, cUF, cCertificado, cAmbiente ) CLASS SefazClass


pegou versão anterior.
O parâmetro chave é justamente pra download.
Agora é dar uma olhada na NT 2014.002 pra tirar dúvidas.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 14936
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 884 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro