
*  case lastkey() ==  304          && Alt + B Baixar xml pelo site www.fsist.com.br
*  case lastkey() ==  289          && Alt + F Baixar xml pelo site SEFAZ
*  case lastkey() ==  286          && Alt + A Baixar xml pelo ACBR
*  case lastkey() ==  287          && Alt + S Baixar xml pelo fSist


   case lastkey() ==  304  .or. ;  && Alt + B Baixar xml pelo site www.fsist.com.br
        lastkey() ==  289  .or. ;  && Alt + F Baixar xml pelo site SEFAZ
        lastkey() ==  286          && Alt + A Baixar xml pelo ACBR

        _baixar_xml()
static function _baixar_xml()

do case
   case  lastkey() ==  304          && Alt + B Baixar xml pelo site www.fsist.com.br

         xtit =  CRLF+  [ATENCAO:   Baixar o XML do Fornecedor ...]                      +CRLF+CRLF+CRLF
         xtit =  xtit+  [           Selecione qual o caminho para baixar.]               +CRLF+CRLF+CRLF
         xresposta = _pergunta("Selecione ...", xtit    + CRLF   + ;
                            " ", {"Fsist","SEFAZ","Acbr","Esc - Finalizar"} )
         do case
            case  xresposta = 1
                  MyRun("www.fsist.com.br")
            case  xresposta = 2
                  MyRun("http://www.nfe.fazenda.gov.br/portal")
            case  xresposta = 3
                  _baixar_xml_acbr()
         endcase

   case  lastkey() ==  289          && Alt + F Baixar xml pelo site SEFAZ
         MyRun("http://www.nfe.fazenda.gov.br/portal")

   case  lastkey() ==  286          && Alt + A Baixar xml pelo ACBR
         _baixar_xml_acbr()

   case  lastkey() ==  287          && Alt + S Baixar xml pelo Fsist
         MyRun("www.fsist.com.br")

endcase

static function _baixar_xml_acbr()

        procxcab()
        procxdad()
        procxesc()

        tacbr_chave = space(60)
        @ 06,02 say [Chave ......:]
        @ 06,16 get tacbr_chave   pict '@K 99999999999999999999999999999999999999999999'  valid crcpeda_co(@tacbr_chave ,06,16,"tacbr_chave")


        @ 10,16 say [Cole a Chave ou Control + V para Agilizar(NAo precisar Digitar)]

        Wread(Njanela)
        if  lastkey() = 27  .or. ;
            empty(tacbr_chave)
            return
        endif

pcgc_n=STRTRAN(pcgc,".","")
pcgc_n=STRTRAN(pcgc_n,"/","")
pcgc_n=STRTRAN(pcgc_n,"-","")
cBuffer:= alltrim(tacbr_chave)
uf_forne = [GO]

_processa_manifesto()

if  pnf_erro = [F]    && para identificar que foi ate o fim
    return
endif

cBuffer:= alltrim(tacbr_chave)
envcom = 'NFe.DistribuicaoDFePorChaveNFe("' +uf_forne+'","'+pcgc_N+'","'+cBuffer + '")'

    if  alltrim(psenha) = [7199]
        msgstop([ANTES de NFe.DistribuicaoDFePorChaveNFe:]+envcom)
    endif

do while .t.

   acbr_comandar_nfe(envcom)
   if  alltrim(psenha) = [9971]
       msgstop([APOS     NFe.DistribuicaoDFePorChaveNFe:]+pquefile)
       edicao(xemai_31+"sainfe.txt")
   endif

   do case
      case  at("CSTAT=138",upper(pquefile)) > 0

            puser_xml:= GetEnv( "USERPROFILE" )
            pmsg =        [ATENO:   a NFE Foi Localizada e BAIXADO o XML em: ,]       +CRLF+CRLF
            pmsg = pmsg + [           \AcbrNfeMonitor\20]+substr(tacbr_chave,3,4)+[\Down\]       +CRLF+CRLF
            pmsg = pmsg + [          ]+puser_xml+[\Downloads\]                                  +CRLF+CRLF
            pmsg = pmsg + [Tecle F para Importar...]                                             +CRLF+CRLF


            pcaminho_xml_de  := xemai_31+"20"+substr(tacbr_chave,3,4)+[\Down\]+tacbr_chave+[-nfe.xml]
            if !file(pcaminho_xml_de)
               pcaminho_xml_de = temai_22+":\acbrnfemonitor\arqs\Down\"+"20"+substr(tacbr_chave,3,4)+"\"+tacbr_chave+[-nfe.xml]
               if !file(pcaminho_xml_de)
                  pcaminho_xml_de = temai_22+":\acbrnfemonitor\"+"20"+substr(tacbr_chave,3,4)+"\arqs\Down\"+tacbr_chave+[-nfe.xml]
                  if !file(pcaminho_xml_de)
                     pmsg =        [ATENO: NAO foi Localizado automaticamente o XML...]+CRLF+CRLF
                     pmsg = pmsg + [         Deseja Procurar ?]+CRLF+CRLF+CRLF
                     IF MSGYESNO(hb_oemtoansi(pmsg))
                        DIRE = temai_22+":\acbrnfemonitor\"
                        ttela = [ ]
                        PutBitmapC( ttela )
                        if  empty(ttela)
                            return
                        endif
                        pcaminho_xml_de = alltrim(ttela)
                     else
                        return
                     endif
                  else
                     pcaminho_xml_de = temai_22+":\acbrnfemonitor\"+"20"+substr(tacbr_chave,3,4)+"\arqs\Down\"+tacbr_chave+[-nfe.xml]
                  endif
               else
                  pcaminho_xml_de = temai_22+":\acbrnfemonitor\"+"20"+substr(tacbr_chave,3,4)+"\arqs\Down\"+tacbr_chave+[-nfe.xml]
               endif
            else
               pcaminho_xml_de = temai_22+":\acbrnfemonitor\"+"20"+substr(tacbr_chave,3,4)+"\arqs\Down\"+tacbr_chave+[-nfe.xml]
            endif

            caminho_download =  alltrim(memoread('\dbdc\download.txt'))
            if !empty(caminho_download)
               pcaminho_xml_para = caminho_download+tacbr_chave+[-nfe.xml]
            else
               pcaminho_xml:= GetEnv( "USERPROFILE" )
               pcaminho_xml_para = pcaminho_xml + [\Downloads\]+tacbr_chave+[-nfe.xml]
            endif
            if   psenha = [7199]
                 msgstop([de: ]+pcaminho_xml_de+[  Para: ]+pcaminho_xml_para)
            endif
            Copy File &pcaminho_xml_de to   &pcaminho_xml_para

            ftempo()

           *msgstop("003")
            exit

      case  at("CSTAT=137",upper(pquefile)) > 0

            xtit =  CRLF+  [ATENCAO:   o SEFAZ ainda NAO disponibilizou o XML para ser BAIXADO...]     +CRLF+CRLF+CRLF
            xtit =  xtit+  [           Pode demorar uns segundos... Minutos... ou mais tempo.]         +CRLF+CRLF+CRLF
            xtit =  xtit+  [           Tenta Denovo ou Aguarda] +CRLF+CRLF+CRLF
            xresposta = _pergunta("Selecione ...", xtit    + CRLF   + ;
                               " ", {"Tentar Denovo","Esc - Finalizar"} )
            do case
               case  xresposta = 1
               case  xresposta = 2
                     exit
               otherwise
                     exit
            endcase

      otherwise

            pmsg =        [ATENO: Problema Ao BAIXAR o XML no SEFAZ.]        +CRLF+CRLF
            pmsg = pmsg + [         Verifique... ou Consulte o SUPORTE]+CRLF+CRLF
            pmsg = pmsg + [   Sera EXIBIDO a seguir o TEXTO com o MOtivo]+CRLF+CRLF
            ftempo(5)

            pmsg = alltrim(pquefile) + CRLF+CRLF
            ftempo(5)
            exit

   endcase

enddo

return

static function  _processa_manifesto()

vdet = "[EVENTO]"
cBuffer:= alltrim(vdet)

vdet = "idLote=2"
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "[EVENTO001]"
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "cOrgao=91"
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "CNPJ="+pcgc_n
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "chNFe="+tacbr_chave
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "dhEvento="+dtoc(pdata)+[ ]+time()
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "tpEvento=210200"
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "nSeqEvento=1"
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "VersaoEvento=1.00"
cBuffer:= cBuffer + CRLF+alltrim(vdet)

vdet = "descEvento=Ciencia da Operacao"
cBuffer:= cBuffer + CRLF+alltrim(vdet)

pnf_erro = [N]

envcom = 'NFE.ENVIAREVENTO("' + cBuffer + '")'
    MemoWrit( "\dbdc\evento.txt", envcom )
    if  n_acbr  = .t.
    else
        erase temai_31+":\ACBrNFeMonitor\log.txt"
    endif

acbr_comandar_nfe(envcom)
processou_correto = .f.

do case
      case  at("CSTAT=573",upper(pquefile))            > 0
        *pmsg =        [ATENO: Duplicidade de EVENTO.                                          ]+CRLF+CRLF
        *pmsg = pmsg + [           Isto quer dizer QUE: Ja processou esta sequencia de Manifesto.]+CRLF
        *ftempo(5)
   case  "CSTAT=128" $ upper(pquefile)  && resposta do ACBR_nfe
         processou_correto = .T.
   case  "XMotivo=LOTE EM PROCESSAMENTO" $ UPPER(pquefile)  && resposta do ACBR_nfe
         pmsg =        [ATENO: o SEFAZ esta SOBRECARREGADO, retornou que est em Processamento.]+CRLF+CRLF
         pmsg = pmsg + [           Isto quer dizer QUE: esta NF AINDA Poder ser PROCESSADA CORRETAMENTE,]+CRLF
         pmsg = pmsg + [                                ou Poder ser REJEITADA por CONTER algum tipo de ERRO.]+CRLF+CRLF
         pmsg = pmsg + [           AGUARDE um Momento ...    AGUARDE um Momento ...    AGUARDE um Momento ...]+CRLF+CRLF
         ftempo(5)
   otherwise

         pnf_erro = [F]    && para identificar que foi ate o fim

         if  n_acbr  = .t.
             xx_path_mais_arq = xemai_31+"sainfe_"+alltrim(pusuario)+".txt"
             edicao(xx_path_mais_arq)
         else
             if  temai_24  =  [S]    && Usa acbr PLUS no Lugar do AcbrNfeMonitor ?     "
                 edicao(xemai_31+"sainfe.txt")
             else
                 edicao(temai_31+":\ACBrNFeMonitor\log.txt")
             endif
         endif
endcase


set device to screen


return

function PutBitmap()

   local oBmp
   local cBmpFile

   DIREd = upper(curdrive()+':\xml')
   Wretdir := dirchange(dired)

   if   t_tem_xml = [F]

        pcaminho_xml:= GetEnv( "USERPROFILE" )
        pcaminho_xml:= pcaminho_xml + [\Downloads\*.xml]

        cBmpFile := cGetFile32( pcaminho_xml, "Seleo de Arquivo XML Recebido para Importar NF Entrada" )
   else
        if  pcgc  = [26.865.196/0001-70]              && EletroGoias
           cBmpFile := cGetFile32( curdrive()+":\xml\*.xml", "Seleo de Arquivo XML Recebido para Importar NF Entrada" )
       else
           cBmpFile := cGetFile32( curdrive()+":\dbdc\bnpx\*.xml", "Seleo de Arquivo XML Recebido para Importar NF Entrada" )
       endif
   endif

   if File( cBmpFile )
      ttela = cBmpFile
   endif

return nil

