Jump to content

dev botao

NFS-e Envio de PDF no Email


Go to solution Solved by Italo Giurizzato Junior,
  • Este tópico foi criado há 1979 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

A função de enviar email, está com uma divergencia ao gerar o nome do pdf, com isso, quando pede o envio, acusa que nao existe o pdf.

Para tanto, existe como ser corrigido:

 

procedure NotaFiscal.EnviarEmail(sPara, sAssunto: String; sMensagem: TStrings;
  EnviaPDF: Boolean; sCC: TStrings; Anexos: TStrings; sReplyTo: TStrings;
  ManterPDFSalvo: Boolean);
var
  NomeArq: String;
  AnexosEmail:TStrings;
  StreamNFSe: TMemoryStream;
begin
  if not Assigned(TACBrNFSe(TNotasFiscais(Collection).ACBrNFSe).MAIL) then
    raise EACBrNFSeException.Create('Componente ACBrMail não associado');

  AnexosEmail := TStringList.Create;
  StreamNFSe  := TMemoryStream.Create;
  try
    AnexosEmail.Clear;
    if Assigned(Anexos) then
      AnexosEmail.Assign(Anexos);

    with TACBrNFSe(TNotasFiscais(Collection).ACBrNFSe) do
    begin
      GravarStream(StreamNFSe);

      if (EnviaPDF) then
      begin
        if Assigned(DANFSE) then
        begin
          DANFSE.ImprimirDANFSEPDF(FNFSe);

// remover isso

          //DANFSE.ArquivoPDF // desnecessário
          //NomeArq := PathWithDelim(DANFSE.PathPDF) + NumID[FNFSe] + '-nfse.pdf'; // desnecessario


          AnexosEmail.Add(DANFSE.ArquivoPDF);  <<<<<<<<<<<< acrescentar desse formato
        end;
      end;

      EnviarEmail( sPara, sAssunto, sMensagem, sCC, AnexosEmail, StreamNFSe,
                   NumID[FNFSe] +'-nfse.xml', sReplyTo);ACBrNFSeDANFSeFR.pas
    end;
  finally
    if not ManterPDFSalvo then
      DeleteFile(NomeArq);

    AnexosEmail.Free;
    StreamNFSe.Free;
  end;
end;

 

E na funcao de gerar o pdf, para fast report:

 

procedure TACBrNFSeDANFSeFR.ImprimirDANFSePDF(NFSe: TNFSe);
const
  TITULO_PDF = 'Nota Fiscal de Serviço Eletrônica';
var
  I         : Integer;
  NomeArqXML: string;
  OldShowDialog: Boolean;
begin
  if PrepareReport(NFSe) then
  begin
    frxPDFExport.Author        := Sistema;
    frxPDFExport.Creator       := Sistema;
    frxPDFExport.Subject       := TITULO_PDF;
    frxPDFExport.EmbeddedFonts := False;
    frxPDFExport.Background    := False;

    OldShowDialog := frxPDFExport.ShowDialog;
    try
      frxPDFExport.ShowDialog := False;
      for I := 0 to TACBrNFSe(ACBrNFSe).NotasFiscais.Count - 1 do
      begin
        with TACBrNFSe(ACBrNFSe).NotasFiscais.Items do
        begin
         NomeArqXML := TACBrNFSe(ACBrNFSe).NumID[TACBrNFSe(ACBrNFSe).NotasFiscais.Items.NFSe]; <<<<<<<<<<<<<<<< acrescentar isso

// remover isso

{          if TACBrNFSe(ACBrNFSe).Configuracoes.Arquivos.NomeLongoNFSe then
            NomeArqXML := GerarNomeNFSe(UFparaCodigo(NFSe.PrestadorServico.Endereco.UF),
             NFSe.DataEmissao,
             NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj,
             StrToInt64Def(NFSe.Numero,0))
          else
            NomeArqXML := NFSe.Numero + NFSe.IdentificacaoRps.Serie;}
        end;

        frxPDFExport.FileName := PathPDF + NomeArqXML + '-nfse.pdf'; // Correção aplicada do nome do arquivo para o envio de e-mail

        if not DirectoryExists(ExtractFileDir(frxPDFExport.FileName)) then
          ForceDirectories(ExtractFileDir(frxPDFExport.FileName));

        frxReport.Export(frxPDFExport);

        FPArquivoPDF := frxPDFExport.FileName;
      end;
    finally
      frxPDFExport.ShowDialog := OldShowDialog;
    end;
  end;
end;
 

Em anexo arquivos modificados.

A unit que gera para fortesreport já gera correto, inclusive...

 

ACBrNFSeNotasFiscais.pas

  • Administradores
Posted

Boa tarde.

Obrigada pela contribuição, adicionada para análise.

Att.

  • Like 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.