コード例 #1
0
        public async Task <Core.NotasFiscais.NotaFiscal> EnviarNota(NotaFiscalModel notaFiscalModel, Modelo modelo)
        {
            notaFiscalModel.ValidateModel();

            if (notaFiscalModel.HasErrors)
            {
                throw new ArgumentException("Nota fiscal contém erros de validação não resolvidos.");
            }

            if (notaFiscalModel.Pagamentos[0].FormaPagamento != "Sem Pagamento" &&
                notaFiscalModel.Produtos.Sum(c => c.QtdeProduto * c.ValorUnitario) !=
                notaFiscalModel.Pagamentos.Sum(p => p.QtdeParcelas * p.ValorParcela))
            {
                await _dialogService.ShowError("Valor total da nota não corresponde ao valor de pagamento.",
                                               "Erro!", "Ok", null);

                throw new ArgumentException("Valor total da nota não corresponde ao valor de pagamento.");
            }

            Core.NotasFiscais.NotaFiscal notaFiscal = null;
            var config   = _configuracaoService.GetConfiguracao();
            var ambiente = config.IsProducao ? Ambiente.Producao : Ambiente.Homologacao;

            await Task.Run(() =>
            {
                var modeloNota = modelo;
                const TipoEmissao tipoEmissao = TipoEmissao.Normal; //verificar status do serviço e etc
                var destinatario   = GetDestinatario(notaFiscalModel, ambiente, modelo);
                var documentoDanfe =
                    destinatario != null ? destinatario.DocumentoDanfe : "CPF"; //Encapsular isso aqui
                var emitente = _emissorService.GetEmissor();
                var codigoUF = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), emitente.Endereco.UF);

                var identificacao = GetIdentificacao(notaFiscalModel, codigoUF, DateTime.Now, emitente, modeloNota,
                                                     Convert.ToInt32(notaFiscalModel.Serie), notaFiscalModel.Numero, tipoEmissao, ambiente, documentoDanfe);
                var produtos      = GetProdutos(notaFiscalModel, config);
                var pagamentos    = GetPagamentos(notaFiscalModel);
                var totalNFe      = GetTotalNFe(notaFiscalModel);
                var infoAdicional = new InfoAdicional(produtos);
                var transporte    = GetTransporte(notaFiscalModel, modelo);

                notaFiscal = new Core.NotasFiscais.NotaFiscal(emitente, destinatario, identificacao, transporte,
                                                              totalNFe, infoAdicional, produtos, pagamentos);

                var cscId = ambiente == Ambiente.Homologacao ? config.CscIdHom : config.CscId;
                var csc   = ambiente == Ambiente.Homologacao ? config.CscHom : config.Csc;
                _enviaNotaFiscalService.EnviarNotaFiscal(notaFiscal, cscId, csc);
            });

            NotaEnviadaEvent(notaFiscal);
            return(notaFiscal);
        }
コード例 #2
0
ファイル: GeradorPDF.cs プロジェクト: phsilvasantos/nfe-wpf
        public static Task GerarPdfNotaFiscal(Core.NotasFiscais.NotaFiscal notaFiscal)
        {
            return(Task.Run(() =>
            {
                if (notaFiscal == null)
                {
                    throw new ArgumentNullException();
                }

                if (notaFiscal.Identificacao.Modelo == Modelo.Modelo55)
                {
                    GerarPDFNfe(notaFiscal);
                }
                else
                {
                    GerarPDFNfce(notaFiscal);
                }
            }));
        }
コード例 #3
0
        internal async void VisualizarNotaFiscal(NFCeModel notaFiscal)
        {
            NotaFiscal            = notaFiscal; //falta preencher pagamentos
            NotaFiscal.Pagamentos = new ObservableCollection <PagamentoVO>();
            NotaFiscal.DestinatarioSelecionado = new DestinatarioModel();
            string xml = await GetNotaXmlAsync();

            var notaFiscalBO = _notaFiscalRepository.GetNotaFiscalFromNfeProcXml(xml);

            _notaFiscalBO = notaFiscalBO;

            //Preenche pagamentos
            if (notaFiscalBO.Pagamentos != null)
            {
                foreach (var pagamento in notaFiscalBO.Pagamentos)
                {
                    var pagamentoVO = new PagamentoVO();
                    pagamentoVO.FormaPagamento = pagamento.FormaPagamentoTexto;
                    pagamentoVO.ValorTotal     = pagamento.Valor.ToString("N2", new CultureInfo("pt-BR"));

                    NotaFiscal.Pagamentos.Add(pagamentoVO);
                }
            }
            else
            {
                NotaFiscal.Pagamentos.Add(new PagamentoVO()
                {
                    FormaPagamento = "N/A"
                });
            }

            //Preenche documento destinatário
            if (notaFiscalBO.Destinatario != null)
            {
                DocumentoDestinatario     = notaFiscalBO.Destinatario.Documento;
                IsDestinatarioEstrangeiro = notaFiscalBO.Destinatario.TipoDestinatario == TipoDestinatario.Estrangeiro;
            }

            NotaFiscal.Finalidade       = notaFiscalBO.Identificacao.FinalidadeConsumidor == FinalidadeConsumidor.ConsumidorFinal ? "Consumidor Final" : "Normal";
            NotaFiscal.NaturezaOperacao = notaFiscalBO.Identificacao.NaturezaOperacao;
            NotaFiscal.Serie            = notaFiscalBO.Identificacao.Serie.ToString("D3");

            //Preenche produtos
            NotaFiscal.Produtos = new ObservableCollection <ProdutoVO>();

            foreach (var produto in notaFiscalBO.Produtos)
            {
                var produtoVO = new ProdutoVO();
                produtoVO.QtdeProduto   = produto.QtdeUnidadeComercial;
                produtoVO.Descricao     = produto.Descricao;
                produtoVO.ValorUnitario = produto.ValorUnidadeComercial;
                produtoVO.Descontos     = produto.ValorDesconto;
                produtoVO.TotalLiquido  = produto.ValorTotal;

                NotaFiscal.Produtos.Add(produtoVO);
            }

            var app        = Application.Current;
            var mainWindow = app.MainWindow;
            var window     = new VisualizarNotaEnviadaWindow()
            {
                Owner = mainWindow
            };

            window.ShowDialog();
        }
コード例 #4
0
 public async Task ImprimirNotaFiscal(Core.NotasFiscais.NotaFiscal notaFiscal)
 {
     await GeradorPDF.GerarPdfNotaFiscal(notaFiscal);
 }
コード例 #5
0
 private async void EnviarNotaController_NotaEnviadaEventHandler(Core.NotasFiscais.NotaFiscal notaEnviada)
 {
     await PopularListaNotasFiscais();
     await AtualizarNotasPendentes();
 }
コード例 #6
0
ファイル: GeradorPDF.cs プロジェクト: phsilvasantos/nfe-wpf
        private static void GerarPDFNfce(Core.NotasFiscais.NotaFiscal notaFiscal)
        {
            Warning[] warnings;
            string[]  streamIds;
            string    mimeType  = string.Empty;
            string    encoding  = string.Empty;
            string    extension = string.Empty;

            Byte[] data;
            Bitmap qrCodeAsBitmap;
            string qrCodeUrl = GetQrCodeUrl(notaFiscal.QrCodeUrl);

            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            {
                Url        generator  = new Url(qrCodeUrl);
                string     payload    = generator.ToString();
                QRCodeData qrCodeData = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.Q);
                QRCode     qrCode     = new QRCode(qrCodeData);
                qrCodeAsBitmap = qrCode.GetGraphic(10);
            }

            using (var memoryStream = new MemoryStream())
            {
                qrCodeAsBitmap.Save(memoryStream, ImageFormat.Bmp);
                data = memoryStream.ToArray();
            }

            notaFiscal.Identificacao.QrCodeImage = data;

            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

            using (ReportViewer reportViewer = new ReportViewer())
            {
                reportViewer.LocalReport.ReleaseSandboxAppDomain();

                var emitente     = notaFiscal.Emitente;
                var destinatario = notaFiscal.Destinatario ?? new Destinatario("CONSUMIDOR NÃO IDENTIFICADO");

                var produtos = notaFiscal.Produtos.Select(produto =>
                {
                    return(new Produto()
                    {
                        Codigo = produto.Codigo,
                        Descricao = produto.Descricao,
                        Quantidade = produto.QtdeUnidadeComercial,
                        ValorUnitario = produto.ValorUnidadeComercial,
                        ValorTotal = produto.ValorTotal
                    });
                }).ToList();

                var pagamentos = notaFiscal.Pagamentos.Select(pagamento =>
                {
                    return(new Pagamento()
                    {
                        Nome = pagamento.FormaPagamentoTexto,
                        Valor = pagamento.Valor
                    });
                }).ToList();

                var reportNFCeReadModel = new ReportNFCeReadModel
                {
                    Chave                   = notaFiscal.Identificacao.ChaveMasked,
                    Numero                  = notaFiscal.Identificacao.Numero,
                    Serie                   = notaFiscal.Identificacao.Serie.ToString(),
                    DataHoraEmissao         = notaFiscal.Identificacao.DataHoraEmissao,
                    Protocolo               = notaFiscal.ProtocoloAutorizacao,
                    DataHoraAutorizacao     = notaFiscal.DhAutorizacao.Replace("-", "/"),
                    InformacaoAdicional     = notaFiscal.InfoAdicional.InfoAdicionalComplementar,
                    LinkConsultaChave       = notaFiscal.Identificacao.LinkConsultaChave,
                    InformacaoInteresse     = notaFiscal.Identificacao.MensagemInteresseContribuinte,
                    QuantidadeTotalProdutos = notaFiscal.QtdTotalProdutos,
                    ValorTotalProdutos      = notaFiscal.ValorTotalProdutos,
                    QrCodeImage             = data,
                    Emissor                 = new Model.Emissor()
                    {
                        CNPJ       = emitente.CNPJ,
                        Nome       = emitente.Nome,
                        Logradouro = emitente.Endereco.Logradouro,
                        Numero     = emitente.Endereco.Numero,
                        Bairro     = emitente.Endereco.Bairro,
                        Municipio  = emitente.Endereco.Municipio,
                        UF         = emitente.Endereco.UF,
                        CEP        = emitente.Endereco.Cep
                    },
                    Destinatario = new Model.Destinatario()
                    {
                        Nome       = destinatario.NomeRazao,
                        Documento  = destinatario.DocumentoDanfe,
                        Logradouro = destinatario.Endereco != null ? destinatario.Endereco.Logradouro : null,
                        Numero     = destinatario.Endereco != null ? destinatario.Endereco.Numero : null,
                        Bairro     = destinatario.Endereco != null ? destinatario.Endereco.Bairro : null,
                        Municipio  = destinatario.Endereco != null ? destinatario.Endereco.Municipio : null,
                        UF         = destinatario.Endereco != null ? destinatario.Endereco.UF : null,
                        CEP        = destinatario.Endereco != null ? destinatario.Endereco.Cep : null
                    },
                    Produtos   = produtos,
                    Pagamentos = pagamentos
                };

                ReportDataSource dadosDataSource = new ReportDataSource()
                {
                    Name  = "Dados",
                    Value = new List <ReportNFCeReadModel>()
                    {
                        reportNFCeReadModel
                    }
                };

                ReportDataSource produtosDataSource = new ReportDataSource()
                {
                    Name  = "Produtos",
                    Value = reportNFCeReadModel.Produtos
                };

                ReportDataSource pagamentosDataSource = new ReportDataSource()
                {
                    Name  = "Pagamentos",
                    Value = reportNFCeReadModel.Pagamentos
                };

                reportViewer.LocalReport.DataSources.Add(dadosDataSource);
                reportViewer.LocalReport.DataSources.Add(produtosDataSource);
                reportViewer.LocalReport.DataSources.Add(pagamentosDataSource);

                reportViewer.ProcessingMode         = ProcessingMode.Local;
                reportViewer.LocalReport.ReportPath = Path.Combine(Directory.GetCurrentDirectory(), @"Reports\ReportNfce.rdlc");
#if DEBUG
                byte[] bytes = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);

                string pathToPdf = Path.Combine(Path.GetTempPath(), "temppdf_" + notaFiscal.Identificacao.Chave + ".pdf");
                File.WriteAllBytes(pathToPdf, bytes);
                Process.Start(pathToPdf);
#else
                PrintDocument printDoc = new PrintDocument();
                printDoc.PrinterSettings.PrinterName = @"EPSON TM-T20 Receipt";
                printDoc.PrintPage += PrintPage;
                printDoc.EndPrint  += EndPrint;

                _PrintingDPI.X = printDoc.DefaultPageSettings.PrinterResolution.X;
                _PrintingDPI.Y = printDoc.DefaultPageSettings.PrinterResolution.Y;

                var sb = new StringBuilder();
                var xr = XmlWriter.Create(sb);
                xr.WriteStartElement("DeviceInfo");
                xr.WriteElementString("OutputFormat", "EMF");
                xr.WriteElementString("PrintDpiX", _PrintingDPI.X.ToString());
                xr.WriteElementString("PrintDpiY", _PrintingDPI.Y.ToString());
                xr.WriteElementString("PageWidth", "3.14961in");
                xr.WriteElementString("MarginLeft", "0.118in");
                xr.Close();

                _PrintingStreams = new List <Stream>();

                reportViewer.LocalReport.Render("Image", sb.ToString(), CreateStream, out warnings);

                foreach (var s in _PrintingStreams)
                {
                    s.Position = 0;
                }

                printDoc.Print();
#endif
            }
        }
コード例 #7
0
ファイル: GeradorPDF.cs プロジェクト: phsilvasantos/nfe-wpf
        private static void GerarPDFNfe(Core.NotasFiscais.NotaFiscal notaFiscal)
        {
            Warning[] warnings;
            string[]  streamIds;
            string    mimeType  = string.Empty;
            string    encoding  = string.Empty;
            string    extension = string.Empty;

            if (notaFiscal.Identificacao.Ambiente == Ambiente.Homologacao)
            {
                notaFiscal.InfoAdicional.InfoAdicionalComplementar = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL";
            }

            var destinatario = notaFiscal.Destinatario;

            #region QrCode
            var barcode    = BarcodeDrawFactory.Code128WithChecksum;
            var barcodeImg = barcode.Draw(notaFiscal.Identificacao.Chave, 36);

            Byte[] data;

            using (var memoryStream = new MemoryStream())
            {
                barcodeImg.Save(memoryStream, ImageFormat.Png);
                data = memoryStream.ToArray();
            }

            #endregion QrCode

            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

            var produtos = notaFiscal.Produtos.Select(produto => new Model.ReportNFe.Produto()
            {
                Codigo           = produto.Codigo,
                Descricao        = produto.Descricao,
                Ncm              = produto.Ncm,
                Cst              = produto.CstTexto,
                Cfop             = produto.CfopTexto,
                UnidadeComercial = produto.UnidadeComercial,
                Quantidade       = produto.QtdeUnidadeComercial,
                ValorUnitario    = produto.ValorUnidadeComercial,
                ValorDesconto    = produto.ValorDesconto,
                ValorLiquido     = produto.ValorTotal
            }).ToList();

            using (var reportViewer = new ReportViewer())
            {
                reportViewer.LocalReport.ReleaseSandboxAppDomain();
                var emitente       = notaFiscal.Emitente;
                var calculoImposto = notaFiscal.TotalNFe.IcmsTotal;
                var transportadora = notaFiscal.Transporte.Transportadora;
                var veiculo        = notaFiscal.Transporte.Veiculo;

                var reportNfeReadModel = new ReportNFeReadModel()
                {
                    Chave                   = notaFiscal.Identificacao.ChaveMasked,
                    Numero                  = notaFiscal.Identificacao.Numero,
                    Serie                   = notaFiscal.Identificacao.Serie.ToString(),
                    DataHoraEmissao         = notaFiscal.Identificacao.DataHoraEmissao,
                    ProtocoloAutorizacao    = notaFiscal.ProtocoloAutorizacao,
                    DataHoraAutorizacao     = notaFiscal.DhAutorizacao.Replace("-", "/"),
                    DataSaida               = notaFiscal.Identificacao.DataSaida,
                    HoraSaida               = notaFiscal.Identificacao.HoraSaida,
                    InformacaoAdicional     = notaFiscal.InfoAdicional.InfoAdicionalComplementar,
                    LinkConsultaChave       = notaFiscal.Identificacao.LinkConsultaChave,
                    InformacaoInteresse     = notaFiscal.Identificacao.MensagemInteresseContribuinte,
                    QuantidadeTotalProdutos = notaFiscal.QtdTotalProdutos,
                    ValorTotalProdutos      = notaFiscal.ValorTotalProdutos,
                    NaturezaOperacao        = notaFiscal.Identificacao.NaturezaOperacao,
                    TipoOperacao            = notaFiscal.Identificacao.TipoOperacaooTexto,
                    BarcodeImage            = data,
                    Emissor                 = new Model.ReportNFe.Emissor()
                    {
                        CNPJ = emitente.CNPJ,
                        InscricaoEstadual = emitente.InscricaoEstadual,
                        NomeRazao         = emitente.Nome,
                        NomeFantasia      = emitente.NomeFantasia,
                        Logradouro        = emitente.Endereco.Logradouro,
                        Numero            = emitente.Endereco.Numero,
                        Bairro            = emitente.Endereco.Bairro,
                        Municipio         = emitente.Endereco.Municipio,
                        UF       = emitente.Endereco.UF,
                        CEP      = emitente.Endereco.Cep,
                        Telefone = emitente.Telefone
                    },
                    Destinatario = new Model.ReportNFe.Destinatario()
                    {
                        Nome              = destinatario.NomeRazao,
                        Documento         = destinatario.Documento,
                        InscricaoEstadual = destinatario.InscricaoEstadual,
                        Logradouro        = destinatario.Endereco?.Logradouro,
                        Numero            = destinatario.Endereco?.Numero,
                        Bairro            = destinatario.Endereco?.Bairro,
                        Municipio         = destinatario.Endereco?.Municipio,
                        UF       = destinatario.Endereco?.UF,
                        CEP      = destinatario.Endereco?.Cep,
                        Telefone = destinatario.Telefone
                    },
                    Produtos       = produtos,
                    CalculoImposto = new CalculoImposto()
                    {
                        BaseCalculo             = calculoImposto.BaseCalculo,
                        BaseCalculoST           = calculoImposto.BaseCalculoST,
                        ValorDespesasAcessorias = calculoImposto.ValorDespesasAcessorias,
                        ValorTotalAproximado    = calculoImposto.ValorTotalAproximadoTributos,
                        ValorTotalCofins        = calculoImposto.ValorTotalCofins,
                        ValorTotalDesconto      = calculoImposto.ValorTotalDesconto,
                        ValorTotalDesonerado    = calculoImposto.ValorTotalDesonerado,
                        ValorTotalFrete         = calculoImposto.ValorTotalFrete,
                        ValorTotalII            = calculoImposto.ValorTotalII,
                        ValorTotalIcms          = calculoImposto.ValorTotalIcms,
                        ValorTotalIpi           = calculoImposto.ValorTotalIpi,
                        ValorTotalNFe           = calculoImposto.ValorTotalNFe,
                        ValorTotalPis           = calculoImposto.ValorTotalPis,
                        ValorTotalProdutos      = calculoImposto.ValorTotalProdutos,
                        ValorTotalST            = calculoImposto.ValorTotalST,
                        ValorTotalSeguro        = calculoImposto.ValorTotalSeguro
                    },
                    Transportadora = new Transportadora()
                    {
                        InscricaoEstadual = transportadora.InscricaoEstadual,
                        CodigoANT         = veiculo.RegistroAntt,
                        CpfCnpj           = transportadora.CpfCnpj,
                        EnderecoCompleto  = transportadora.EnderecoCompleto,
                        Municipio         = transportadora.Municipio,
                        Nome            = transportadora.Nome,
                        UF              = transportadora.SiglaUF,
                        VeiculoPlaca    = veiculo.Placa,
                        VeiculoUF       = veiculo.SiglaUF,
                        ModalidadeFrete = "9 - Sem Frete"
                    }
                };

                var dadosDataSource = new ReportDataSource()
                {
                    Name  = "Dados",
                    Value = new List <ReportNFeReadModel>()
                    {
                        reportNfeReadModel
                    }
                };

                var produtosDataSource = new ReportDataSource()
                {
                    Name  = "Produtos",
                    Value = reportNfeReadModel.Produtos
                };

                reportViewer.LocalReport.DataSources.Add(dadosDataSource);
                reportViewer.LocalReport.DataSources.Add(produtosDataSource);

                reportViewer.ProcessingMode         = ProcessingMode.Local;
                reportViewer.LocalReport.ReportPath = Path.Combine(Directory.GetCurrentDirectory(), @"Reports\ReportNfe.rdlc");

                byte[] bytes = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);

                string pathToPdf = Path.Combine(Path.GetTempPath(), "temppdf_" + notaFiscal.Identificacao.Chave + ".pdf");
                File.WriteAllBytes(pathToPdf, bytes);
                Process.Start(pathToPdf);
            }
        }
コード例 #8
0
ファイル: GeradorPDF.cs プロジェクト: phsilvasantos/nfe-wpf
        public static string ObterPdfEnvioNotaFiscalEmail(Core.NotasFiscais.NotaFiscal notaFiscal)
        {
            Warning[] warnings;
            string[]  streamIds;
            string    mimeType  = string.Empty;
            string    encoding  = string.Empty;
            string    extension = string.Empty;

            Byte[] data;
            Bitmap qrCodeAsBitmap;

            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            {
                Url        generator  = new Url(notaFiscal.QrCodeUrl);
                string     payload    = generator.ToString();
                QRCodeData qrCodeData = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.Q);
                QRCode     qrCode     = new QRCode(qrCodeData);
                qrCodeAsBitmap = qrCode.GetGraphic(10);
            }

            using (var memoryStream = new MemoryStream())
            {
                qrCodeAsBitmap.Save(memoryStream, ImageFormat.Bmp);
                data = memoryStream.ToArray();
            }

            notaFiscal.Identificacao.QrCodeImage = data;

            SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

            using (ReportViewer reportViewer = new ReportViewer())
            {
                reportViewer.LocalReport.ReleaseSandboxAppDomain();

                var emitente     = notaFiscal.Emitente;
                var destinatario = notaFiscal.Destinatario ?? new Destinatario("CONSUMIDOR NÃO IDENTIFICADO");

                var produtos = notaFiscal.Produtos.Select(produto =>
                {
                    return(new Produto()
                    {
                        Codigo = produto.Codigo,
                        Descricao = produto.Descricao,
                        Quantidade = produto.QtdeUnidadeComercial,
                        ValorUnitario = produto.ValorUnidadeComercial,
                        ValorTotal = produto.ValorTotal
                    });
                }).ToList();

                var pagamentos = notaFiscal.Pagamentos.Select(pagamento =>
                {
                    return(new Pagamento()
                    {
                        Nome = pagamento.FormaPagamentoTexto,
                        Valor = pagamento.Valor
                    });
                }).ToList();

                var reportNFCeReadModel = new ReportNFCeReadModel
                {
                    Chave                   = notaFiscal.Identificacao.ChaveMasked,
                    Numero                  = notaFiscal.Identificacao.Numero,
                    Serie                   = notaFiscal.Identificacao.Serie.ToString(),
                    DataHoraEmissao         = notaFiscal.Identificacao.DataHoraEmissao,
                    Protocolo               = notaFiscal.ProtocoloAutorizacao,
                    DataHoraAutorizacao     = notaFiscal.DataHoraAutorização.ToString("dd/MM/yyyy HH:mm:ss").Replace("-", "/"),
                    InformacaoAdicional     = notaFiscal.InfoAdicional.InfoAdicionalComplementar,
                    LinkConsultaChave       = notaFiscal.Identificacao.LinkConsultaChave,
                    InformacaoInteresse     = notaFiscal.Identificacao.MensagemInteresseContribuinte,
                    QuantidadeTotalProdutos = notaFiscal.QtdTotalProdutos,
                    ValorTotalProdutos      = notaFiscal.ValorTotalProdutos,
                    QrCodeImage             = data,
                    Emissor                 = new Model.Emissor()
                    {
                        CNPJ       = emitente.CNPJ,
                        Nome       = emitente.Nome,
                        Logradouro = emitente.Endereco.Logradouro,
                        Numero     = emitente.Endereco.Numero,
                        Bairro     = emitente.Endereco.Bairro,
                        Municipio  = emitente.Endereco.Municipio,
                        UF         = emitente.Endereco.UF,
                        CEP        = emitente.Endereco.Cep
                    },
                    Destinatario = new Model.Destinatario()
                    {
                        Nome       = destinatario.NomeRazao,
                        Documento  = destinatario.DocumentoDanfe,
                        Logradouro = destinatario.Endereco != null ? destinatario.Endereco.Logradouro : null,
                        Numero     = destinatario.Endereco != null ? destinatario.Endereco.Numero : null,
                        Bairro     = destinatario.Endereco != null ? destinatario.Endereco.Bairro : null,
                        Municipio  = destinatario.Endereco != null ? destinatario.Endereco.Municipio : null,
                        UF         = destinatario.Endereco != null ? destinatario.Endereco.UF : null,
                        CEP        = destinatario.Endereco != null ? destinatario.Endereco.Cep : null
                    },
                    Produtos   = produtos,
                    Pagamentos = pagamentos
                };

                ReportDataSource dadosDataSource = new ReportDataSource()
                {
                    Name  = "Dados",
                    Value = new List <ReportNFCeReadModel>()
                    {
                        reportNFCeReadModel
                    }
                };

                ReportDataSource produtosDataSource = new ReportDataSource()
                {
                    Name  = "Produtos",
                    Value = reportNFCeReadModel.Produtos
                };

                ReportDataSource pagamentosDataSource = new ReportDataSource()
                {
                    Name  = "Pagamentos",
                    Value = reportNFCeReadModel.Pagamentos
                };

                reportViewer.LocalReport.DataSources.Add(dadosDataSource);
                reportViewer.LocalReport.DataSources.Add(produtosDataSource);
                reportViewer.LocalReport.DataSources.Add(pagamentosDataSource);

                reportViewer.ProcessingMode         = ProcessingMode.Local;
                reportViewer.LocalReport.ReportPath = Path.Combine(Directory.GetCurrentDirectory(), @"Reports\ReportNfceEmail.rdlc");

                byte[] bytes = reportViewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);

                string pathToPdf = Path.Combine(Path.GetTempPath(), notaFiscal.Identificacao.Chave + ".pdf");
                File.WriteAllBytes(pathToPdf, bytes);

                return(pathToPdf);
            }
        }