Jump to content
Fivewin Brasil

baixar NF-e do site da receita


marcioe

Recommended Posts

Usando ACBrMonitor, consigo após fazer manifestação de ciência.

FUNCTION Entrada_Aux_DFe( cChave ) // --> Retorna o arquivo XML
   LOCAL cChave_CNPJ, cChave_AnoMes, cArqXML, cPathDown, cSta
   DEFAULT cChave := SPACE(44)
   IF EMPTY(cChave)
      IF ! MsgGet("Chave de acesso", "Chave de Acesso", @cChave)
         RETURN NIL
      ENDIF
   ENDIF
   IF EMPTY(cChave)
      RETURN NIL
   ENDIF
   cArqXML       := cChave + '-nfe.xml'
   cChave_CNPJ   := SUBSTR(cChave,07,14)
   cChave_AnoMes := '20'+SUBSTR(cChave,03,04)
   nPMensal      := VAL(GetPvProfString( "Arquivos", "PastaMensal", 0, cACBrFld+"\"+cACBrIni))
   cPathDown     := ALLTRIM(GetPvProfString( "Geral", "PathSalvar", "", cACBrFld+"\"+cACBrIni))+"\"+IIF(nPMensal = 1, LEFT(DTOS(DATE()),6)+"\", "\")

   IF File( cPathDown+cArqXML )
      IF ! MsgNoYes("O download desta NF-e já foi feito. Gostaria te fazer o download novamente?","XML já baixado")
         RETURN ""
      ENDIF
      FERASE(cPathDown+cArqXML)
   ENDIF

   cSta := DFe_BaixaXML( cChave )
   IF cSta == "Inoperante" ; RETURN "" ; ENDIF
   IF File( cPathDown+cArqXML )  // BAIXOU
      RETURN cPathDown+cArqXML
   ELSE    // NAO BAIXOU // MANIFESTA COMO CONFIRMACAO DA OPERACAO
      IF (cSta <> "Indisponível" .AND. cSta <> "Manifestado") // Só manifestar se ainda não manifestado.
         IF ! DFe_Manifestar(cChave, 2) // 1 Ciencia 2 Confirmação 3 Desconhecimento 4 Operacao nao realizada
            RETURN ""
         ELSE
            SysRefresh() ; MsgInfo("Manifestação de 'Confirmação' efetuada. O download do XML pode demorar até 5 minutos para ser liberado. Enquanto isso você pode tomar um cafezinho, ou ficar tentando novo download a cada 30 segundos.", "Manifestação pendente efetuada")
            RETURN ""
         ENDIF
      ENDIF
   ENDIF
   IF ! File( cPathDown+cArqXML )
      SysRefresh() ; MsgAlert("Download não efetuado. Aguarde 30 segundos ou mais e tente novamente. Se o erro persistir por mais de 5 minutos, solicite que seu fornecedor lhe envie o XML."+CRLF+CRLF+"Status do XML: "+cSta, "Download não efetuado")
   ENDIF
RETURN ""

STATIC FUNCTION DFe_BaixaXML( cChave )
   LOCAl cRet, lRet, cSta
   cRtr := ACBR_NFE_Modelo( "55" )
   cRet := ACBR_NFE_DoanloadNFe(c_EUF, R_CnpjLienar(STRTRAN(nCgc,"CNPJ: ","")), cChave)
   cSta := "Desconhecido"
   IF ("Erro Interno" $ cRet) .OR. ("Erro HTTP" $ cRet) ; cSta := "Inoperante" ; ENDIF // Falha de comunicação com o WebService
   IF ("CStat=137" $ cRet) ; cSta := "Indisponível" ; ENDIF // Documento manifestado mais ainda não disponível para download
   IF ("CStat=573" $ cRet) ; cSta := "Manifestado" ; ENDIF // Já manifestado. Duplicidade de evento
   lRet := ("CStat=138" $ cRet) // tem NFe pra chave em questao
   IF lRet ; lRet := ("tpAmb=1" $ cRet)  ; ENDIF // Emitida em Ambiente de Autorizacao
   IF lRet ; lRet := ("tpNF=1" $ cRet)  ; ENDIF // Tipo da Nota de Saida do Emitente
   IF lRet ; lRet := ("cSitNFe=1" $ cRet)  ; ENDIF // Situação AUTORIZADA
   IF lRet ; cSta := "Autorizado" ; ENDIF
RETURN cSta

STATIC FUNCTION DFe_Manifestar(cChave, nTpMan) // 1 Ciencia 2 Confirmação 3 Desconhecimento 4 Operacao nao realizada
   LOCAL cEvt := '', lOk := .F.
   IF nTpMan >= 1 .AND. nTpMan <= 4
      cEvt += '[EVENTO]'    + CRLF
      cEvt += 'idLote=1'    + CRLF
      cEvt += '[EVENTO001]' + CRLF
      cEvt += 'chNFe='      + cChave    + CRLF
      cEvt += 'cOrgao=91'   + CRLF
      cEvt += 'CNPJ='       + R_CnpjLienar(STRTRAN(nCgc,"CNPJ: ","")) + CRLF
      cEvt += 'dhEvento=' + DTOC(date())+' '+Time()+ CRLF
      cEvt += 'tpEvento=' + IIF( nTpMan == 1, '210210', IIF( nTpMan == 2, '210200', IIF( nTpMan == 3, '210220', '210240')))+CRLF
      cEvt += 'nSeqEvento=1' + CRLF
      cEvt += 'versaoEvento=1.00' + CRLF
      cEvt += 'descEvento=' + IIF( nTpMan == 1, 'Ciencia da Operacao', ;
                                                     IIF( nTpMan == 2, 'Confirmacao da Operacao', ;
                                                       IIF( nTpMan == 3, 'Desconhecimento da Operacao', 'Operacao nao realizada')))+CRLF
   ENDIF
   IF !EMPTY(cEvt)
      cRet := ACBR_NFE_EnviaEvento(cEvt)
      lOk := ("CStat=135" $ cRet)
   ENDIF
RETURN lOk

 

Link to comment
Share on other sites

  • 4 weeks later...
  • 4 weeks later...
 

Muito tempo depois... :D

Desculpa pela demora.
Me mande um e-mail que eu re respondo com os prgs anexos, contendo as funções necessárias.

ariston.ap@hotmail.com

Bom dia  Ariston   tudo bem ? 

também estou  precisando dessa rotina para Manifestar e fazer o Donwload do XML dos fornecedores

poderia me enviar os prgs ...   desde já Obriagdo !!!  

 meu e-mail . mario.vida@hotmail.com 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...