Usando como base o ACBRMonitor2:
if Application.MessageBox('Confirma?', 'Atenção', mb_applmodal+mb_iconquestion+mb_yesno+mb_defbutton1) = 6 then
begin
dm.ACBrNFe1.NotasFiscais.Clear;
dm.ACBrNFe1.NotasFiscais.LoadFromFile(sCaminhoArquivo);
sJustifNFe := '';
// Solicitar justificativa
while Length(sJustifNFe)<15 do
begin
InputQuery('WebServices Cancelamento', 'Justificativa (mínimo 15 caracteres)', sJustifNFe);
sJustifNFe := TrimLeft(TrimRight(sJustifNFe));
if Length(sJustifNFe)<15 then
ShowMessage('Você deve digitar uma justificativa com no mínimo 15 caracteres!');
end;
//
dm.ACBrNFe1.WebServices.Consulta.NFeChave := dm.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe;
if not dm.ACBrNFe1.WebServices.Consulta.Executar then
raise Exception.Create(dm.ACBrNFe1.WebServices.Consulta.Msg);
//dm.ACBrNFe1.Cancelamento(sJustifNFe);
//
vOK := 0;
NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));
dm.ACBrNFe1.EventoNFe.Evento.Clear;
with dm.ACBrNFe1.EventoNFe.Evento.Add do
begin
infEvento.CNPJ := copy(LimpaNumero(dm.ACBrNFe1.WebServices.Consulta.NFeChave),7,14);
infEvento.cOrgao := StrToIntDef(copy(LimpaNumero(dm.ACBrNFe1.WebServices.Consulta.NFeChave),1,2),0);
infEvento.dhEvento := now;
infEvento.tpEvento := teCancelamento;
infEvento.chNFe := dm.ACBrNFe1.WebServices.Consulta.NFeChave;
infEvento.detEvento.nProt := dm.ACBrNFe1.WebServices.Consulta.Protocolo;
infEvento.detEvento.xJust := sJustifNFe;
end;
try
dm.ACBrNFe1.EnviarEventoNFe(NumeroLote);
vOK := 1;
Resposta := dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo+sLineBreak+
'[CANCELAMENTO]'+sLineBreak+
'Versao='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.verAplic+sLineBreak+
'VerAplic='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.VerAplic+sLineBreak+
'CStat='+IntToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat)+sLineBreak+
'XMotivo='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XMotivo+sLineBreak+
'CUF='+IntToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cOrgao)+sLineBreak+
'ChNFe='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.chNFe+sLineBreak+
'DhRecbto='+DateTimeToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento)+sLineBreak+
'NProt='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt+sLineBreak+
'xEvento='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xEvento+sLineBreak+
'nSeqEvento='+IntToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nSeqEvento)+sLineBreak+
'CNPJDest='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.CNPJDest+sLineBreak+
'XML='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML+sLineBreak;
except
raise Exception.Create(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo);
end;
Fincuinou perfeitamente.
Abraços,
Vanderlei (
[email protected])