Prezado Sérgio,
Como informei estou usando o exemplo que tem na pasta exemplos do ACBr e no exemplo tem o seguinte:
procedure TfrmNFe.CriarEnviar;
var
vAux, vNumLote : String;
n: integer;
begin
if not(InputQuery('WebServices Enviar', 'Numero do Lote', vNumLote)) then
exit;
vNumLote := OnlyNumber(vNumLote);
if Trim(vNumLote) = '' then
begin
MessageDlg('Número do Lote inválido.',mtError,[mbok],0);
exit;
end;
ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFe;
ACBrNFe1.Configuracoes.Geral.VersaoDF := TpcnVersaoDF(cbVersaoDF.ItemIndex);
for n:=0 to ACBrNFe1.NotasFiscais.Count-1 do
begin
with ACBrNFe1.NotasFiscais.Items[n].NFe do
begin
vAux := IntToStr(n);
ACBrNFe1.NotasFiscais.Items[n].GravarXML();
ACBrNFe1.NotasFiscais.GerarNFe;
MemoDados.Lines.Add('Arquivo gerado em: '+ACBrNFe1.NotasFiscais.Items[n].NomeArq);
MemoResp.Lines.LoadFromFile(ACBrNFe1.NotasFiscais.Items[n].NomeArq);
end
end;
ACBrNFe1.Enviar(vNumLote,True);
LoadXML(MemoResp.Text, WBResposta);
MemoResp.Lines.Text := ACBrNFe1.WebServices.Retorno.RetWS;
memoRespWS.Lines.Text := ACBrNFe1.WebServices.Retorno.RetornoWS;
LoadXML(ACBrNFe1.WebServices.Retorno.RetornoWS, WBResposta);
pgRespostas.ActivePageIndex := 1;
MemoDados.Lines.Add('');
MemoDados.Lines.Add('Envio NFe');
MemoDados.Lines.Add('tpAmb: '+ TpAmbToStr(ACBrNFe1.WebServices.Retorno.TpAmb));
MemoDados.Lines.Add('verAplic: '+ ACBrNFe1.WebServices.Retorno.verAplic);
MemoDados.Lines.Add('cStat: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cStat));
MemoDados.Lines.Add('cUF: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cUF));
MemoDados.Lines.Add('xMotivo: '+ ACBrNFe1.WebServices.Retorno.xMotivo);
MemoDados.Lines.Add('cMsg: '+ IntToStr(ACBrNFe1.WebServices.Retorno.cMsg));
MemoDados.Lines.Add('xMsg: '+ ACBrNFe1.WebServices.Retorno.xMsg);
MemoDados.Lines.Add('Recibo: '+ ACBrNFe1.WebServices.Retorno.Recibo);
MemoDados.Lines.Add('Protocolo: '+ ACBrNFe1.WebServices.Retorno.Protocolo);
// MemoDados.Lines.Add('cStat: '+ ACBrNFe1.WebServices.Retorno.NFeRetorno;
{ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[n].tpAmb
ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].verAplic
ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].chNFe
ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].dhRecbto
ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].nProt
ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].digVal
ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].cStat
ACBrNFe1.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].xMotivo}
ACBrNFe1.NotasFiscais.Clear;
end;
unit ACBrNFe
function TACBrNFe.Enviar(ALote: integer; Imprimir: Boolean = True;
Sincrono: Boolean = False): Boolean;
begin
Result := Enviar(IntToStr(ALote), Imprimir, Sincrono);
end;
function TACBrNFe.Enviar(ALote: String; Imprimir: Boolean; Sincrono: Boolean): Boolean;
var
i: integer;
begin
if NotasFiscais.Count <= 0 then
GerarException(ACBrStr('ERRO: Nenhuma NF-e adicionada ao Lote'));
if NotasFiscais.Count > 50 then
GerarException(ACBrStr('ERRO: Conjunto de NF-e transmitidas (máximo de 50 NF-e)' +
' excedido. Quantidade atual: ' + IntToStr(NotasFiscais.Count)));
NotasFiscais.Assinar;
NotasFiscais.Validar;
Result := WebServices.Envia(ALote, Sincrono);
if DANFE <> nil then
begin
for i := 0 to NotasFiscais.Count - 1 do
begin
if NotasFiscais.Items.Confirmada and Imprimir then
begin
NotasFiscais.Items.Imprimir; Aqui é que imprime os Danfes
if (DANFE.ClassName = 'TACBrNFeDANFERaveCB') then
Break;
end;
end;
end;
end;
unit ACBrNFeNotasFiscais
procedure NotaFiscal.Imprimir;
begin
with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do
begin
if not Assigned(DANFE) then
raise EACBrNFeException.Create('Componente DANFE não associado.')
else
DANFE.ImprimirDANFE(NFe);
end;
end;