Esta é minha rotina de buscar uma nota autorizada e perdida(como chamo).
procedure TF_GeracaoNotaFiscalServico.BuscarNotafiscalEmitida;
var
Reg: TIniFile;
xXml, xprotocolo: string;
seq: integer;
begin
Reg:=TIniFile.Create(Sistema.IniConfiguracao);
if Sistema.MultiEmpresa=1 then
Reg:=TIniFile.Create(ExtractFilePath(Application.ExeName)+Sistema.ApelidoAtual+'.ini');
Nota.NotasFiscais.Clear;
if TBXML.Locate('NumeroRPS', StrZero(TBSEminFiscalNumeroRPS.AsInteger, 10), []) then
begin
Nota.NotasFiscais.LoadFromString(TBXML.FieldByName('NotaFiscalXML').AsString);
if Nota.NotasFiscais.Count=0 then
begin
PreencherNF; //esta procedure só preenche os dados todos do rps na Nota(ACBrNFSe1), prestador/Tomador/Serviço, etc...
Nota.NotasFiscais.GerarNFSe;
end;
end
else
begin
if Nota.NotasFiscais.Count=0 then
begin
PreencherNF;
Nota.NotasFiscais.GerarNFSe;
end;
end;
if Nota.NotasFiscais.Count>0 then
begin
//esta é a chamada para consulta do RPS no provedor.
Nota.ConsultarNFSeporRps(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,
Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie, TipoRPSToStr(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo));
Mensagem('!!! Nota Fiscal Eletrônica Serviço recuperada com sucesso !!!'+#13+#13+'Número da Nota Fiscal: '+
Nota.NotasFiscais.Items[0].NFSe.Numero+#13+'Código Verificação..: '+
Nota.NotasFiscais.Items[0].NFSe.CodigoVerificacao, tmAviso, '');
xXml:=Nota.WebServices.ConsNFSeRps.RetornoWS;
if TBXML.Locate('NumeroRPS', StrZero(StrToIntDef(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero, 0), 10), []) then
begin
TBXML.Edit;
end
else
begin
seq:=UltimoRegistro(TBXML.TableName, 'Sequencia', '');
IncluirRegistro(TBXML);
TBXML.FieldbyName('Sequencia').AsString:=StrZero(seq+1, 10);
TBXML.FieldbyName('NumeroRPS').AsString:=StrZero(StrToIntDef(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero, 0), 10);
TBXML.FieldByName('NumeroNfs').AsString:=Nota.NotasFiscais.Items[0].NFSe.Numero;
end;
TBXML.FieldbyName('CodigoVerificador').AsString:=Nota.NotasFiscais.Items[0].NFSe.CodigoVerificacao;
TBXML.FieldbyName('Data').AsDateTime:=date;
TBXML.FieldbyName('DataNFe').AsDateTime:=Nota.NotasFiscais.Items[0].NFSe.DataEmissao;
TBXML.FieldbyName('CNPJCIC').AsString:=TBSEminFiscalCGC.Value;
TBXML.FieldbyName('Nome').AsString:=TBSEminFiscalNOME.Value;
TBXML.FieldByName('NumeroNFS').AsString:=TBSEminFiscalNumeroOficialNF.Value;
TBXML.FieldbyName('ProtocoloNFe').AsString:=Nota.WebServices.EnvioWebService.Protocolo;
TBXML.FieldbyName('NotaFiscalXML').AsString:=xXml;
TBXML.FieldbyName('ReciboXML').AsString:=Nota.WebServices.ConsNFSeRps.RetWS;
TBXML.FieldbyName('Usuario').AsString:=Sistema.UsuarioAtual;
Gravartabela(TBXML);
TBSEminFiscal.Edit;
TBSEminFiscalNumeroOficialNF.Value:=Nota.NotasFiscais.Items[0].NFSe.Numero;
TBSEminFiscal.Post;
RadioGroup1.ItemIndex:=5;
BExecutar.Click;
end;
FreeAndNil(Reg);
end;
espero ter ajudado.