Ir para conteúdo
  • Cadastre-se

dev botao

Impressão direta do DANFE


Rozelo
  • Este tópico foi criado há 2738 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Prezados Amigos,

Estou usando o exemplo do ACBr para importar todos os arquivos texto padrão SEFAZ de um determinado diretório, gerando, validando, assinando e enviando o lote dos mesmos. No processo de envio, aparece o preview do Danfe de cada nota para ser impresso. O que devo fazer para imprimir direto sem a necessidade do preview?

Atenciosamente

Rogerio Barbosa

 

Link para o comentário
Compartilhar em outros sites

  • Membros
40 minutos atrás, Rozelo disse:

Prezados Amigos,

Estou usando o exemplo do ACBr para importar todos os arquivos texto padrão SEFAZ de um determinado diretório, gerando, validando, assinando e enviando o lote dos mesmos. No processo de envio, aparece o preview do Danfe de cada nota para ser impresso. O que devo fazer para imprimir direto sem a necessidade do preview?

Atenciosamente

Rogerio Barbosa

 

if cbxPreview.Checked then
   ACBrNFeDANFCeFortes.MostrarPreview := True
else ACBrNFeDANFCeFortes.MostrarPreview := False;
ACBrNFe1.NotasFiscais.Imprimir;

 

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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;
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2738 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.