Amigos, eu criei uma função para fazer a atualização do xML, caso ele não tenha sido atualizado pelo ACBr na consulta.
Function COMPL_NFE(c_VerAplic,c_cStat,c_xMotivo,c_DataHs,c_nProt,c_digVal,vChave,c_Lote)
Local vArq_Cp:=cDirNFe+SUBS(vChave,3,4)+"\nfe\"+vChave+"-NFe.xml"
Local vArq_Cp2:="C:\TEMP\"+vChave+"-NFx.xml"
Local vArq_Cp3:="C:\TEMP\"+vChave+"-NFe.xml"
if file(vArq_Cp2)
FErase(vArq_Cp2)
endif
if file(vArq_Cp3)
FErase(vArq_Cp3)
endif
if file(vArq_Cp)
FErase(vArq_Cp)
endif
if !file(vArq_Cp)
cFile:=cDrvAcbr+"ACBrMonitorPLUS\Lotes\Lote"+ALLTRIM(STR(val(c_Lote),10,0))+"\"+vChave+"-NFe.xml"
if file(cFile)
COPY FILE (cFile) TO (vArq_Cp)
endif
endif
COPY FILE (vArq_Cp) TO (vArq_Cp2)
vcp_arq:=FOPEN(vArq_Cp2)
nFileSize = FSEEK( vcp_arq, 0, 2 )
FSEEK( vcp_arq, 0, 0 )
if FREADSTR( vcp_arq, 4 ) == "<NFe"
FSEEK( vcp_arq, 0, 0 )
vxcp_2:=FREADSTR( vcp_arq, nFileSize-2 )
FCLOSE(vcp_arq)
vcp_arq:=FCREATE(vArq_Cp3,0)
vcp_txt:='<?xml version="1.0" encoding="UTF-8"?><nfeProc versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">'
FWRITE(vcp_arq,vcp_txt)
FWRITE(vcp_arq,vxcp_2)
vcp_dt:=SUBS(c_DataHs,7,4)+'-'+SUBS(c_DataHs,4,2)+'-'+LEFT(c_DataHs,2)
vcp_hr:=RIGHT(c_DataHs,8)
vcp_txt:='<protNFe versao="3.10"><infProt><tpAmb>1</tpAmb><verAplic>'+c_VerAplic+'</verAplic>'+;
'<chNFe>'+vChave+'</chNFe>'+;
'<dhRecbto>'+vcp_dt+'T'+vcp_hr+'</dhRecbto>'+;
'<nProt>'+c_nProt+'</nProt>'+;
'<digVal>'+c_digVal+'</digVal>'+;
'<cStat>'+c_cStat+'</cStat>'+;
'<xMotivo>'+c_xMotivo+'</xMotivo></infProt></protNFe></nfeProc>'+hb_eol()
FWRITE(vcp_arq,vcp_txt)
FCLOSE(vcp_arq)
FErase(vArq_Cp2)
FErase(vArq_Cp)
COPY FILE (vArq_Cp3) TO (vArq_Cp)
FErase(vArq_Cp3)
else
FErase(vArq_Cp2)
endif
Return Nil
Os parâmetros que estou passando nesta função, pego todos eles no TXT de retorno da consulta no ACBr (SAINFE.TXT).
[NFExxx]
...
VerAplic=SP_NFE_PL_005d
CStat=100
XMotivo=Autorizado o uso da NF-e
...
ChNFe=35061700000000000130550000000000020000000027
DhRecbto=06/09/2009 11:29:00
NProt=135090013038101
DigVal=w7Ff+0camK1goMtr41AwiXx5xTE=
Na linha 26 da função acima, eu verifico se o xML foi atualizado, caso não tenha sido, então atualizo o xML.
Abraços