Sim estou procurando pelo ultimo nsu.
while ultNSU <= sMaxNSU do begin
Tem_Doctos := 'N' ;
ACBrNFe1.NotasFiscais.Clear ;
ACBrNFe1.EventoNFe.Evento.Clear ;
try
ConfigurarNFE;
ACBrNFe1.DistribuicaoDFe(cAutorizador,CNPJ,ultNSU,'' );
// Retorno de NFe Destinadas
if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137 then begin
Application.MessageBox('Não existem mais notas, por favor realize uma nova consulta em uma hora.','Atenção',MB_OK+MB_ICONEXCLAMATION);
Label3.Visible := false;
Label3.Caption := '';
Exit;
end;
sMaxNSU := ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.maxNSU;
iMaxNSU := StrToInt(sMaxNSU);
sMaxNSU := IntToStr(iMaxNSU);
if ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 138 then begin
for i := 0 to ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count -1 do begin
if (ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.tpEvento = teCancelamento) and (ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.chNFe <> '') then
sNFE := 'CANC';
if sNFE <> 'CANC' then begin
ShowMessage('resEvento: ' + ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.chNFe);
ShowMessage('resNFe: ' + ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.chNFe);
if Trim(ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.chNFe ) <> '' then begin
sChave := AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.chNFe;
sSerie := Copy(sChave, 23, 3);
sNumero := Copy(sChave, 26, 9);
sCNPJ := AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resEvento.CNPJCPF;
sNome := AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.xNome;
sIEst := AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.IE;
sXML := AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.XML;
case AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.tpNF of
tnEntrada: sTipoNFe := 'E';
tnSaida: sTipoNFe := 'S';
end;
sNSU := AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.NSU;
sEmissao := DateToStr(AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.dhEmi);
Valor := AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.vNF;
case AcbrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.cSitNFe of
snAutorizado: Impresso := 'A';
snDenegado : Impresso := 'D';
snCancelado : Impresso := 'C';
end;
ShowMessage('Valor: ' + FloatToStr(Valor));
CDSManifestacao.Edit;
CDSManifestacao.FieldByName('CHAVENFE').AsString := sChave;
CDSManifestacao.FieldByName('CNPJ').AsString := sCNPJ;
CDSManifestacao.FieldByName('NOME').AsString := sNome;
CDSManifestacao.FieldByName('NSU').AsString := sNSU;
CDSManifestacao.FieldByName('DATA_EMISSAO').AsString := sEmissao;
CDSManifestacao.FieldByName('NUMNOTA').AsString := sNumero;
CDSManifestacao.FieldByName('VALOR').AsFloat := Valor;//FormatFloat('#,###,##0.00',Valor);
CDSManifestacao.Append;
if LocalizaChaveNFe(sChave) then begin
QryUPDATE := TZQuery.Create( Nil );
QryUPDATE.Connection := Conexao;
QryUPDATE.RequestLive := true;
QryUPDATE.SQL.Clear;
QryUPDATE.SQL.Add('UPDATE MANIFESTACAO SET NSU=:nsu WHERE CHAVENFE=:chavenfe');
QryUPDATE.ParamByName('chavenfe').AsString := sChave;
QryUPDATE.ParamByName('nsu').AsString := sNSU;
QryUPDATE.ExecSQL;
end else begin
// AQUI GRAVAR NO BANCO DE DADOS
Qry := TZQuery.Create( Nil );
Qry.Connection := Conexao;
Qry.RequestLive := true;
Qry.SQL.Clear;
Qry.SQL.Add('INSERT INTO MANIFESTACAO (NUMNOTA, CHAVENFE, CNPJ, NOME, DATA_EMISSAO, VALOR, NSU) Values (:numnota, :chavenfe, :cnpj, :Nome, :data_emissao, :Valor, :NSU)');
Qry.ParamByName('numnota').AsInteger := StrToInt(sNumero);
Qry.ParamByName('chavenfe').AsString := sChave;
Qry.ParamByName('cnpj').AsString := sCNPJ;
Qry.ParamByName('Nome').AsString := sNome;
Qry.ParamByName('data_emissao').AsDateTime := StrToDateTime(sEmissao);
Qry.ParamByName('Valor').AsFloat := Valor;
Qry.ParamByName('NSU').AsString := sNSU;
Qry.ExecSQL;
end;
end;
end;
ultNSU := sNSU;
end ;
ultNSU := PegarUltimoNSU;
end;
ACBrNFe1.NotasFiscais.Clear ;
ACBrNFe1.EventoNFe.Evento.Clear ;
Qry.Free;
QryUPDATE.Free;
Application.MessageBox('Notas Consultados com sucesso ','UniComercial',MB_OK+MB_ICONINFORMATION);
Label3.Visible := false;
Label3.Caption := '';
Application.ProcessMessages;
except
on e :exception do begin
ShowMessage(e.ClassName + 'Erro Gerado, Com Mensagem : ' + e.Message);
Exit;
end;
end ;
end ;
O erro em questao é em uma cliente que usa certificado de cartão A3.