/// <summary> /// Responsavel Exibir Danfe /// </summary> /// <param name="xmlNfe"></param> /// <returns></returns> public void VisualizarDanfe(string xmlNfe) { try { #region Carrega um XML com nfeProc para a variável var arquivoXml = xmlNfe; if (string.IsNullOrEmpty(arquivoXml)) { return; } nfeProc proc = null; try { //proc = new nfeProc().CarregarDeArquivoXml(arquivoXml); proc = new nfeProc().CarregarDeXmlString(arquivoXml); } catch //Carregar NFe ainda não transmitida à sefaz, como uma pré-visualização. { //proc = new nfeProc() { NFe = new NFe().CarregarDeArquivoXml(arquivoXml), protNFe = new protNFe() }; proc = new nfeProc() { NFe = new Classes.NFe().CarregarDeXmlString(arquivoXml), protNFe = new protNFe() }; } if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe) { throw new Exception("O XML informado não é um NFe!"); } /* * //Carregar atravez de um stream.... * var stream = new StreamReader(arquivoXml, Encoding.GetEncoding("ISO-8859-1")); * var proc = new nfeProc().CarregardeStream(stream); */ #endregion #region Abre a visualização do relatório para impressão var danfe = new DanfeFrNfe(proc: proc, configuracaoDanfeNfe: new ConfiguracaoDanfeNfe(), desenvolvedor: SoftHouse, arquivoRelatorio: string.Empty); danfe.Visualizar(); //danfe.Imprimir(); //danfe.ExibirDesign(); //danfe.ExportarPdf(@"d:\teste.pdf"); #endregion } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE da NFCe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfce">Objeto do tipo ConfiguracaoDanfeNfce contendo as definições de impressão</param> /// <param name="cIdToken">Identificador do CSC – Código de Segurança do Contribuinte no Banco de Dados da SEFAZ</param> /// <param name="csc">Código de Segurança do Contribuinte(antigo Token)</param> public DanfeFrNfce(nfeProc proc, ConfiguracaoDanfeNfce configuracaoDanfeNfce, string cIdToken, string csc) { #region Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Relatorio = new Report(); Relatorio.RegisterData(new[] { proc }, "NFCe", 20); Relatorio.GetDataSource("NFCe").Enabled = true; Relatorio.Load(new MemoryStream(Properties.Resources.NFCe)); Relatorio.SetParameterValue("NfceDetalheVendaNormal", configuracaoDanfeNfce.DetalheVendaNormal); Relatorio.SetParameterValue("NfceDetalheVendaContigencia", configuracaoDanfeNfce.DetalheVendaContigencia); Relatorio.SetParameterValue("NfceImprimeDescontoItem", configuracaoDanfeNfce.ImprimeDescontoItem); Relatorio.SetParameterValue("NfceModoImpressao", configuracaoDanfeNfce.ModoImpressao); Relatorio.SetParameterValue("NfceCancelado", configuracaoDanfeNfce.DocumentoCancelado); ((ReportPage)Relatorio.FindObject("PgNfce")).LeftMargin = configuracaoDanfeNfce.MargemEsquerda; ((ReportPage)Relatorio.FindObject("PgNfce")).RightMargin = configuracaoDanfeNfce.MargemDireita; ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = configuracaoDanfeNfce.ObterLogo(); ((TextObject)Relatorio.FindObject("txtUrl")).Text = proc.NFe.infNFeSupl.ObterUrl(proc.NFe.infNFe.ide.tpAmb, proc.NFe.infNFe.ide.cUF, TipoUrlConsultaPublica.UrlConsulta); ((BarcodeObject)Relatorio.FindObject("bcoQrCode")).Text = proc.NFe.infNFeSupl == null?proc.NFe.infNFeSupl.ObterUrlQrCode(proc.NFe, cIdToken, csc) : proc.NFe.infNFeSupl.qrCode; //Segundo o Manual de Padrões Técnicos do DANFE - NFC - e e QR Code, versão 3.2, página 9, nos casos de emissão em contingência deve ser impresso uma segunda cópia como via do estabelecimento Relatorio.PrintSettings.Copies = (proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teNormal | (proc.protNFe != null && proc.protNFe.infProt != null && NfeSituacao.Autorizada(proc.protNFe.infProt.cStat)) /*Se a NFe for autorizada, mesmo que seja em contingência, imprime somente uma via*/) ? 1 : 2; #endregion }
private static DanfeFrEvento GeraClasseDanfeFrEvento(string xml, string xmlEvento) { var configuracaoDanfeNfe = _configuracoes.ConfiguracaoDanfeNfe; var proc = new nfeProc().CarregarDeXmlString(xml); if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe) { throw new Exception("O XML informado não é um NFe!"); } var procEvento = FuncoesXml.XmlStringParaClasse <procEventoNFe>(xmlEvento); DanfeFrEvento danfe = new DanfeFrEvento(proc: proc, procEventoNFe: procEvento, configuracaoDanfeNfe: new ConfiguracaoDanfeNfe() { Logomarca = configuracaoDanfeNfe.Logomarca, DuasLinhas = false, DocumentoCancelado = false, QuebrarLinhasObservacao = configuracaoDanfeNfe.QuebrarLinhasObservacao, ExibirResumoCanhoto = configuracaoDanfeNfe.ExibirResumoCanhoto, ResumoCanhoto = configuracaoDanfeNfe.ResumoCanhoto, ChaveContingencia = configuracaoDanfeNfe.ChaveContingencia, ExibeCampoFatura = configuracaoDanfeNfe.ExibeCampoFatura, ImprimirISSQN = configuracaoDanfeNfe.ImprimirISSQN, ImprimirDescPorc = configuracaoDanfeNfe.ImprimirDescPorc, ImprimirTotalLiquido = configuracaoDanfeNfe.ImprimirTotalLiquido, ImprimirUnidQtdeValor = configuracaoDanfeNfe.ImprimirUnidQtdeValor, ExibirTotalTributos = configuracaoDanfeNfe.ExibirTotalTributos }, desenvolvedor: "NOME DA SOFTWARE HOUSE"); return(danfe); }
public static Report GenerateDanfeFrEventoReport(nfeProc proc, procEventoNFe procEventoNFe, ConfiguracaoDanfeNfe configuracaoDanfeNfe, byte[] frx, string desenvolvedor, string arquivoRelatorio) { //Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Report relatorio = new Report(); relatorio.Load(new MemoryStream(frx)); relatorio.RegisterData(new[] { proc }, "NFe", 20); relatorio.RegisterData(new[] { procEventoNFe }, "procEventoNFe", 20); relatorio.GetDataSource("NFe").Enabled = true; relatorio.GetDataSource("procEventoNFe").Enabled = true; if (!string.IsNullOrEmpty(arquivoRelatorio)) { relatorio.Load(arquivoRelatorio); } else if (frx != null && frx.Length > 0) { relatorio.Load(new MemoryStream(frx)); } else { throw new Exception("Erro em DanfeSharedHelper.GenerateDanfeFrNfeReport no Zeus.DFe. Relatório não encontrado, passe os parametros 'frx' com bytes ou 'arquivoRelatorio' com o caminho do arquivo"); } relatorio.SetParameterValue("desenvolvedor", desenvolvedor); return(relatorio); }
/// <summary> /// Responsavel por imprimir NFCe apos autorização direto na impressora padrão ou definida na configuração /// </summary> private void ImprimirNFCe(string xmlNFce, ConfiguracaoDanfeNfce configuracaoDanfe, string cIdToken, string csc, string nomedaimpressora = null) { try { nfeProc proc = null; NFeZeus nfe = null; string arquivo = string.Empty; try { proc = new nfeProc().CarregarDeXmlString(xmlNFce); arquivo = proc.ObterXmlString(); } catch (Exception) { nfe = new NFe.Classes.NFe().CarregarDeArquivoXml(xmlNFce); arquivo = nfe.ObterXmlString(); } DanfeNativoNfce impr = new DanfeNativoNfce(arquivo, configuracaoDanfe, cIdToken, csc, 0 /*troco*//*, "Arial Black"*/); impr.Imprimir(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public DanfeNativoNfce(nfeProc proc, ConfiguracaoDanfeNfce configuracaoDanfeNfce, string cIdToken, string csc) { _proc = proc; _configuracaoDanfeNfce = configuracaoDanfeNfce; _cIdToken = cIdToken; _csc = csc; }
private void btnFindFiles_Click(object sender, EventArgs e) { try { OpenFileDialog f = new OpenFileDialog(); f.Filter = "XML Files|*.xml"; f.Multiselect = true; objPesquisa.lresult = new List <belManifestacaoPesquisa>(); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { belManifestacaoPesquisa obj = null; nfeProc nfe = null; foreach (string path in f.FileNames) { nfe = SerializeClassToXml.DeserializeClasse <nfeProc>(path); obj = new belManifestacaoPesquisa(nfe); objPesquisa.lresult.AddRange(obj.lresult); } bsPesquisa.DataSource = objPesquisa.lresult; ColoriGrid(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE do evento da NFe, em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo <see cref="nfeProc"/></param> /// <param name="procEventoNFe">Objeto do tipo <see cref="Classes.Servicos.Consulta.procEventoNFe"/></param> /// <param name="configuracaoDanfeNfe">Objeto do tipo <see cref="ConfiguracaoDanfeNfe"/> contendo as definições de impressão</param> /// <param name="desenvolvedor">Texto do desenvolvedor a ser informado no DANFE</param> /// <param name="arquivoRelatorio">Caminho e arquivo frx contendo as definições do relatório personalizado</param> public DanfeFrEvento(nfeProc proc, Classes.Servicos.Consulta.procEventoNFe procEventoNFe, ConfiguracaoDanfeNfe configuracaoDanfeNfe, string desenvolvedor = "", string arquivoRelatorio = "") { byte[] frx = null; if (string.IsNullOrWhiteSpace(arquivoRelatorio)) { const string caminho = @"NFe\NFeEvento.frx"; frx = FrxFileHelper.TryGetFrxFile(caminho); } Relatorio = DanfeSharedHelper.GenerateDanfeFrEventoReport(proc, procEventoNFe, configuracaoDanfeNfe, null, desenvolvedor, arquivoRelatorio); }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE da NFCe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfce">Objeto do tipo ConfiguracaoDanfeNfce contendo as definições de impressão</param> /// <param name="cIdToken">Identificador do CSC – Código de Segurança do Contribuinte no Banco de Dados da SEFAZ</param> /// <param name="csc">Código de Segurança do Contribuinte(antigo Token)</param> /// <param name="arquivoRelatorio">Caminho e arquivo frx contendo as definições do relatório personalizado</param> /// <param name="textoRodape">Texto para ser impresso no final do documento</param> public DanfeFrNfce(nfeProc proc, ConfiguracaoDanfeNfce configuracaoDanfeNfce, string cIdToken, string csc, string arquivoRelatorio = "", string textoRodape = "") { byte[] frx = null; if (string.IsNullOrWhiteSpace(arquivoRelatorio)) { const string caminho = @"NFCe\NFCe.frx"; frx = FrxFileHelper.TryGetFrxFile(caminho); } Relatorio = DanfeSharedHelper.GenerateDanfeNfceReport(proc, configuracaoDanfeNfce, cIdToken, csc, frx, arquivoRelatorio, textoRodape); }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE Simplificada da NFe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfe">Objeto do tipo <see cref="ConfiguracaoDanfeNfe"/> contendo as definições de impressão</param> /// <param name="desenvolvedor">Texto do desenvolvedor a ser informado no DANFE</param> /// <param name="arquivoRelatorio">Caminho do arquivo frx</param> public DanfeFrSimplificado(nfeProc proc, ConfiguracaoDanfeNfe configuracaoDanfeNfe, string desenvolvedor = "", string arquivoRelatorio = "") { byte[] frx = null; if (string.IsNullOrWhiteSpace(arquivoRelatorio)) { const string caminho = @"NFe\NFeSimplificado.frx"; frx = FrxFileHelper.TryGetFrxFile(caminho); } Relatorio = DanfeSharedHelper.GenerateDanfeFrNfeReport(proc, configuracaoDanfeNfe, frx, desenvolvedor, arquivoRelatorio); }
public static Report GenerateDanfeNfceReport(nfeProc proc, ConfiguracaoDanfeNfce configuracaoDanfeNfce, string cIdToken, string csc, byte[] frx, string arquivoRelatorio, string textoRodape = "") { //Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Report relatorio = new Report(); relatorio.RegisterData(new[] { proc }, "NFCe", 20); relatorio.GetDataSource("NFCe").Enabled = true; if (string.IsNullOrEmpty(arquivoRelatorio)) { relatorio.Load(new MemoryStream(frx)); } else { relatorio.Load(arquivoRelatorio); } relatorio.SetParameterValue("NfceDetalheVendaNormal", configuracaoDanfeNfce.DetalheVendaNormal); relatorio.SetParameterValue("NfceDetalheVendaContigencia", configuracaoDanfeNfce.DetalheVendaContigencia); relatorio.SetParameterValue("NfceImprimeDescontoItem", configuracaoDanfeNfce.ImprimeDescontoItem); relatorio.SetParameterValue("NfceModoImpressao", configuracaoDanfeNfce.ModoImpressao); relatorio.SetParameterValue("NfceCancelado", configuracaoDanfeNfce.DocumentoCancelado); relatorio.SetParameterValue("NfceLayoutQrCode", configuracaoDanfeNfce.NfceLayoutQrCode); relatorio.SetParameterValue("TextoRodape", textoRodape); ((ReportPage)relatorio.FindObject("PgNfce")).LeftMargin = configuracaoDanfeNfce.MargemEsquerda; ((ReportPage)relatorio.FindObject("PgNfce")).RightMargin = configuracaoDanfeNfce.MargemDireita; //alteracao necessaria para .netstandard, o código abaixo utiliza um método onde não é compativel para .netstandard: //de : //((PictureObject)relatorio.FindObject("poEmitLogo")).Image = configuracaoDanfeNfce.ObterLogo(); //para: #if Standard ((PictureObject)relatorio.FindObject("poEmitLogo")).SetImageData(configuracaoDanfeNfce.Logomarca); #else ((PictureObject)relatorio.FindObject("poEmitLogo")).Image = configuracaoDanfeNfce.ObterLogo(); #endif ((TextObject)relatorio.FindObject("txtUrl")).Text = string.IsNullOrEmpty(proc.NFe.infNFeSupl.urlChave) ? proc.NFe.infNFeSupl.ObterUrlConsulta(proc.NFe, configuracaoDanfeNfce.VersaoQrCode) : proc.NFe.infNFeSupl.urlChave; ((BarcodeObject)relatorio.FindObject("bcoQrCode")).Text = proc.NFe.infNFeSupl == null?proc.NFe.infNFeSupl.ObterUrlQrCode(proc.NFe, configuracaoDanfeNfce.VersaoQrCode, cIdToken, csc) : proc.NFe.infNFeSupl.qrCode; ((BarcodeObject)relatorio.FindObject("bcoQrCodeLateral")).Text = proc.NFe.infNFeSupl == null?proc.NFe.infNFeSupl.ObterUrlQrCode(proc.NFe, configuracaoDanfeNfce.VersaoQrCode, cIdToken, csc) : proc.NFe.infNFeSupl.qrCode; //Segundo o Manual de Padrões Técnicos do DANFE - NFC - e e QR Code, versão 3.2, página 9, nos casos de emissão em contingência deve ser impresso uma segunda cópia como via do estabelecimento if (configuracaoDanfeNfce.SegundaViaContingencia) { #if Standard throw new Exception("configuracaoDanfeNfce.SegundaViaContingencia não suportado em .net standard, apenas em .net framework"); #else relatorio.PrintSettings.Copies = (proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teNormal | (proc.protNFe != null && proc.protNFe.infProt != null && NfeSituacao.Autorizada(proc.protNFe.infProt.cStat)) /*Se a NFe for autorizada, mesmo que seja em contingência, imprime somente uma via*/) ? 1 : 2; #endif } return(relatorio); }
/// <summary> /// Construtor da classe reponsável pela impressão do DANFE da NFe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfe">Objeto do tipo configuracaoDanfeNfe contendo as definições de impressão</param> public DanfeFrNfe(nfeProc proc, ConfiguracaoDanfeNfe configuracaoDanfeNfe) { #region Define as varíaveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Relatorio = new Report(); Relatorio.RegisterData(new[] { proc }, "NFe", 20); Relatorio.GetDataSource("NFe").Enabled = true; Relatorio.Load(new MemoryStream(Properties.Resources.NFe)); ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = configuracaoDanfeNfe.ObterLogo(); #endregion }
private static DanfeFrSimplificado GeraClasseDanfeSimplificadoFrNFe(string xml) { var configuracaoDanfeNfe = _configuracoes.ConfiguracaoDanfeNfe; try { #region Carrega um XML com nfeProc para a variável nfeProc proc = null; try { proc = new nfeProc().CarregarDeXmlString(xml); } catch //Carregar NFe ainda não transmitida à sefaz, como uma pré-visualização. { proc = new nfeProc() { NFe = new Classes.NFe().CarregarDeXmlString(xml), protNFe = new Classes.Protocolo.protNFe() }; } if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe) { throw new Exception("O XML informado não é um NFe!"); } #endregion DanfeFrSimplificado danfe = new DanfeFrSimplificado(proc: proc, configuracaoDanfeNfe: new ConfiguracaoDanfeNfe() { Logomarca = configuracaoDanfeNfe.Logomarca, DuasLinhas = false, DocumentoCancelado = false, QuebrarLinhasObservacao = configuracaoDanfeNfe.QuebrarLinhasObservacao, ExibirResumoCanhoto = configuracaoDanfeNfe.ExibirResumoCanhoto, ResumoCanhoto = configuracaoDanfeNfe.ResumoCanhoto, ChaveContingencia = configuracaoDanfeNfe.ChaveContingencia, ExibeCampoFatura = configuracaoDanfeNfe.ExibeCampoFatura, ImprimirISSQN = configuracaoDanfeNfe.ImprimirISSQN, ImprimirDescPorc = configuracaoDanfeNfe.ImprimirDescPorc, ImprimirTotalLiquido = configuracaoDanfeNfe.ImprimirTotalLiquido, ImprimirUnidQtdeValor = configuracaoDanfeNfe.ImprimirUnidQtdeValor, ExibirTotalTributos = configuracaoDanfeNfe.ExibirTotalTributos, ExibeRetencoes = configuracaoDanfeNfe.ExibeRetencoes }, desenvolvedor: "NOME DA SOFTWARE HOUSE", arquivoRelatorio: string.Empty); return(danfe); } catch (Exception ex) { throw ex; } }
/// <summary> /// Responsavel Exportar Danfe /// </summary> /// <param name="xmlNfe"></param> /// <param name="nomeArquivo"></param> /// <returns></returns> public void ExportarDanfe(string xmlNfe, string nomeArquivo) { try { #region Carrega um XML com nfeProc para a variável var arquivoXml = xmlNfe; if (string.IsNullOrEmpty(arquivoXml)) { return; } nfeProc proc = null; try { //proc = new nfeProc().CarregarDeArquivoXml(arquivoXml); proc = new nfeProc().CarregarDeXmlString(arquivoXml); } catch //Carregar NFe ainda não transmitida à sefaz, como uma pré-visualização. { //proc = new nfeProc() { NFe = new NFe().CarregarDeArquivoXml(arquivoXml), protNFe = new protNFe() }; proc = new nfeProc() { NFe = new Classes.NFe().CarregarDeXmlString(arquivoXml), protNFe = new protNFe() }; } if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe) { throw new Exception("O XML informado não é um NFe!"); } #endregion #region Abre a visualização do relatório para impressão var danfe = new DanfeFrNfe(proc: proc, configuracaoDanfeNfe: new ConfiguracaoDanfeNfe(), desenvolvedor: SoftHouse, arquivoRelatorio: string.Empty); danfe.ExportarPdf(nomeArquivo); #endregion } catch (Exception ex) { throw new Exception(ex.Message); } }
private void ImprimirDanfeNfce(NfceLayoutQrCode layout) { try { #region Carrega um XML para a variável var arquivoXml = Funcoes.BuscarArquivoXml(); if (string.IsNullOrEmpty(arquivoXml)) { return; } nfeProc nfeProc; try // Tenta carregar NFeProc { nfeProc = FuncoesXml.ArquivoXmlParaClasse <nfeProc>(arquivoXml); } catch (Exception) // Carrega NFCe sem protocolo { NFe.Classes.NFe nfeContingenciaSemProc = FuncoesXml.ArquivoXmlParaClasse <NFe.Classes.NFe>(arquivoXml); nfeProc = new nfeProc() { NFe = nfeContingenciaSemProc }; } if (nfeProc.NFe.infNFe.ide.mod != ModeloDocumento.NFCe) { throw new Exception("O XML informado não é um NFCe!"); } #endregion #region Abre a visualização do relatório para impressão var danfe = new DanfeFrNfce(proc: nfeProc, configuracaoDanfeNfce: _configuracoes.ConfiguracaoDanfeNfce, cIdToken: _configuracoes.CIdToken, csc: _configuracoes.Csc, arquivoRelatorio: string.Empty); danfe.Visualizar(); //danfe.Imprimir(); //danfe.ExibirDesign(); //danfe.ExportarPdf(@"d:\teste.pdf"); #endregion } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE do evento da NFe, em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo <see cref="nfeProc"/></param> /// <param name="procEventoNFe">Objeto do tipo <see cref="Classes.Servicos.Consulta.procEventoNFe"/></param> /// <param name="configuracaoDanfeNfe">Objeto do tipo <see cref="ConfiguracaoDanfeNfe"/> contendo as definições de impressão</param> /// <param name="desenvolvedor">Texto do desenvolvedor a ser informado no DANFE</param> public DanfeFrEvento(nfeProc proc, Classes.Servicos.Consulta.procEventoNFe procEventoNFe, ConfiguracaoDanfeNfe configuracaoDanfeNfe, string desenvolvedor = "") { #region Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Relatorio = new Report(); Relatorio.Load(new MemoryStream(Properties.Resources.NFeEvento)); Relatorio.RegisterData(new[] { proc }, "NFe", 20); Relatorio.RegisterData(new[] { procEventoNFe }, "procEventoNFe", 20); Relatorio.GetDataSource("NFe").Enabled = true; Relatorio.GetDataSource("procEventoNFe").Enabled = true; Relatorio.SetParameterValue("desenvolvedor", desenvolvedor); #endregion }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE da NFe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfe">Objeto do tipo <see cref="ConfiguracaoDanfeNfe"/> contendo as definições de impressão</param> /// <param name="desenvolvedor">Texto do desenvolvedor a ser informado no DANFE</param> public DanfeFrNfe(nfeProc proc, ConfiguracaoDanfeNfe configuracaoDanfeNfe, string desenvolvedor = "") { #region Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Relatorio = new Report(); Relatorio.RegisterData(new[] { proc }, "NFe", 20); Relatorio.GetDataSource("NFe").Enabled = true; Relatorio.Load(new MemoryStream(Properties.Resources.NFeRetrato)); Relatorio.SetParameterValue("DuasLinhas", configuracaoDanfeNfe.DuasLinhas); Relatorio.SetParameterValue("Cancelada", configuracaoDanfeNfe.DocumentoCancelado); Relatorio.SetParameterValue("desenvolvedor", desenvolvedor); ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = configuracaoDanfeNfe.ObterLogo(); #endregion }
public static Report GenerateDanfeFrEventoReport(nfeProc proc, procEventoNFe procEventoNFe, ConfiguracaoDanfeNfe configuracaoDanfeNfe, byte[] frx, string desenvolvedor) { //Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Report relatorio = new Report(); relatorio.Load(new MemoryStream(frx)); relatorio.RegisterData(new[] { proc }, "NFe", 20); relatorio.RegisterData(new[] { procEventoNFe }, "procEventoNFe", 20); relatorio.GetDataSource("NFe").Enabled = true; relatorio.GetDataSource("procEventoNFe").Enabled = true; relatorio.SetParameterValue("desenvolvedor", desenvolvedor); return(relatorio); }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE da NFe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfe">Objeto do tipo <see cref="ConfiguracaoDanfeNfe"/> contendo as definições de impressão</param> /// <param name="desenvolvedor">Texto do desenvolvedor a ser informado no DANFE</param> /// <param name="arquivoRelatorio">Caminho do arquivo frx</param> public DanfeFrNfe(nfeProc proc, ConfiguracaoDanfeNfe configuracaoDanfeNfe, string desenvolvedor = "", string arquivoRelatorio = "") { byte[] retrato = null; if (string.IsNullOrWhiteSpace(arquivoRelatorio)) { try { retrato = Properties.Resources.NFeRetrato; } catch (System.Exception ex) { throw new System.Exception("Não foi possivel o carregamento do Resource NFeRetrato, utilize o parametro arquivoRelatorio e passe o caminho manualmente.", ex); } } this.Relatorio = DanfeSharedHelper.GenerateDanfeFrNfeReport(proc, configuracaoDanfeNfe, retrato, desenvolvedor, arquivoRelatorio); }
public belManifestacaoPesquisa(nfeProc nfe) { this.lresult = new List <belManifestacaoPesquisa>(); foreach (var notas in nfe.lNfe.FirstOrDefault().lInfNfe) { this.lresult.Add(new belManifestacaoPesquisa { xChaveNFe = notas.Id.Replace("NFe", ""), xIE = notas.emitField.IE, xRazaoSocial = notas.emitField.xNome, dtEmissao = Convert.ToDateTime(notas.ideField.dEmi), dTotalNFe = Convert.ToDecimal(notas.totalField.ICMSTot.vNF.Replace(".", ",")) }); } }
private void btnEventoNFe_Click(object sender, RoutedEventArgs e) { try { #region Carrega um XML com nfeProc para a variável var arquivoXml = Funcoes.BuscarArquivoXml(); if (string.IsNullOrEmpty(arquivoXml)) { return; } var proc = new nfeProc().CarregarDeArquivoXml(arquivoXml); if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe) { throw new Exception("O XML informado não é um NFe!"); } arquivoXml = Funcoes.BuscarArquivoXml(); if (string.IsNullOrEmpty(arquivoXml)) { return; } var procEvento = FuncoesXml.ArquivoXmlParaClasse <procEventoNFe>(arquivoXml); #endregion #region Abre a visualização do relatório para impressão var danfe = new DanfeFrEvento(proc, procEvento, new ConfiguracaoDanfeNfe(_configuracoes.ConfiguracaoDanfeNfce.Logomarca, RdbDuasLinhas.IsChecked ?? false, ChbCancelado.IsChecked ?? false), "NOME DA SOFTWARE HOUSE"); danfe.Visualizar(); //danfe.Imprimir(); //danfe.ExibirDesign(); //danfe.ExportarPdf(@"d:\teste.pdf"); #endregion } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
/// <summary> /// Construtor da classe reponsável pela impressão do DANFE da NFCe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfce">Objeto do tipo ConfiguracaoDanfeNfce contendo as definições de impressão</param> public DanfeFrNfce(nfeProc proc, ConfiguracaoDanfeNfce configuracaoDanfeNfce) { #region Define as varíaveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) _relatorio = new Report(); _relatorio.RegisterData(new[] { proc }, "NFCe", 20); _relatorio.GetDataSource("NFCe").Enabled = true; _relatorio.Load(new MemoryStream(Properties.Resources.NFCe)); _relatorio.SetParameterValue("NfceDetalheVendaNormal", configuracaoDanfeNfce.DetalheVendaNormal); _relatorio.SetParameterValue("NfceDetalheVendaContigencia", configuracaoDanfeNfce.DetalheVendaContigencia); ((PictureObject)_relatorio.FindObject("poEmitLogo")).Image = configuracaoDanfeNfce.ObterLogo(); ((TextObject)_relatorio.FindObject("txtUrl")).Text = EnderecadorDanfeNfce.ObterUrl(proc.NFe.infNFe.ide.tpAmb, proc.NFe.infNFe.ide.cUF, TipoUrlDanfeNfce.UrlConsulta); ((BarcodeObject)_relatorio.FindObject("bcoQrCode")).Text = proc.NFe.infNFeSupl == null?EnderecadorDanfeNfce.ObterUrlQrCode(proc.NFe, configuracaoDanfeNfce) : proc.NFe.infNFeSupl.qrCode; //Segundo o Manual de Padrões Padrões Técnicos do DANFE - NFC - e e QR Code, versão 3.2, página 9, nos casos de emissão em contigência deve ser impresso uma segunda cópia como via do estabelecimento _relatorio.PrintSettings.Copies = proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teNormal ? 1 : 2; #endregion }
private static DanfeFrNfce GeraClasseDanfeFrNFce(string xml) { var configuracaoDanfeNfe = _configuracoes.ConfiguracaoDanfeNfe; try { #region Carrega um XML com nfeProc para a variável nfeProc proc = null; try { proc = new nfeProc().CarregarDeXmlString(xml); } catch //Carregar NFCe ainda não transmitida à sefaz, como uma pré-visualização. { proc = new nfeProc() { NFe = new Classes.NFe().CarregarDeXmlString(xml), protNFe = new Classes.Protocolo.protNFe() }; } if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFCe) { throw new Exception("O XML informado não é um NFCe!"); } #endregion DanfeFrNfce danfe = new DanfeFrNfce(proc: proc, configuracaoDanfeNfce: new ConfiguracaoDanfeNfce() { Logomarca = configuracaoDanfeNfe.Logomarca, DocumentoCancelado = false, }, cIdToken: _configuracoes.CIdToken, csc: _configuracoes.Csc, arquivoRelatorio: "C:\\PainelInformatica\\Relatorios\\NFCe.frx"); // string.Empty); return(danfe); } catch (Exception ex) { throw ex; } }
private void CarregarXml(string xml) { try { _proc = XmlUtils.XmlStringParaClasse <nfeProc>(xml); _nfe = _proc.NFe; } catch (Exception) { try { _nfe = XmlUtils.XmlStringParaClasse <NFe>(xml); } catch (Exception) { throw new ApplicationException( "[Xml inválido] Ocorreu um erro ao carregar o xml"); } } }
public void Prot(string caminho) { try { var arquivoXml = caminho; var nfe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml); var chave = nfe.infNFe.Id.Substring(3); if (string.IsNullOrEmpty(chave)) { throw new Exception("A Chave da NFe não foi encontrada no arquivo!"); } if (chave.Length != 44) { throw new Exception("Chave deve conter 44 caracteres!"); } var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoConsulta = servicoNFe.NfeConsultaProtocolo(chave); TrataRetorno(retornoConsulta); var nfeproc = new nfeProc { NFe = nfe, protNFe = retornoConsulta.Retorno.protNFe, versao = retornoConsulta.Retorno.versao }; var novoArquivo = _path + "\\Autorizados\\" + @"\" + nfeproc.protNFe.infProt.chNFe + "-procNfe.xml"; FuncoesXml.ClasseParaArquivoXml(nfeproc, novoArquivo); //Funcoes.Mensagem("Arquivo salvo em " + novoArquivo, "Atenção", MessageBoxButton.OK); Impressora.ImprimirDanferE(novoArquivo); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
private void BtnNfeDanfeA4_Click(object sender, RoutedEventArgs e) { try { #region Carrega um XML com nfeProc para a variável var arquivoXml = Funcoes.BuscarArquivoXml(); if (string.IsNullOrEmpty(arquivoXml)) { return; } var proc = new nfeProc().CarregarDeArquivoXml(arquivoXml); if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFe) { throw new Exception("O XML informado não é um NFe!"); } /* * //Carregar atravez de um stream.... * var stream = new StreamReader(arquivoXml, Encoding.GetEncoding("ISO-8859-1")); * var proc = new nfeProc().CarregardeStream(stream); */ #endregion #region Abre a visualização do relatório para impressão var danfe = new DanfeFrNfe(proc, new ConfiguracaoDanfeNfe(_configuracoes.ConfiguracaoDanfeNfce.Logomarca, rdbDuasLinhas.IsChecked ?? false, chbCancelado.IsChecked ?? false), "NOME DA SOFTWARE HOUSE"); danfe.Visualizar(); //danfe.Imprimir(); //danfe.ExibirDesign(); //danfe.ExportarPdf(@"d:\teste.pdf"); #endregion } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
public void SalvarPDFArquivo(string arquivoNome, string conteudoXML, TipoAmbiente tpAmb) { DirectoryInfo di; if (tpAmb == TipoAmbiente.Homologacao) { di = Directory.CreateDirectory(Path.Combine("pdfHom\\")); } else { di = Directory.CreateDirectory(Path.Combine("pdf\\")); } #region Carrega um XML com nfeProc para a variável nfeProc proc = null; try { proc = new nfeProc().CarregarDeXmlString(conteudoXML); } catch //Carregar NFe ainda não transmitida à sefaz, como uma pré-visualização. { proc = new nfeProc() { NFe = new Classes.NFe().CarregarDeXmlString(conteudoXML), protNFe = new protNFe() }; } #endregion #region Abre a visualização do relatório para impressão var danfe = new DanfeFrNfe(proc: proc, configuracaoDanfeNfe: new ConfiguracaoDanfeNfe(), desenvolvedor: SoftHouse, arquivoRelatorio: string.Empty); danfe.ExportarPdf(di.FullName + arquivoNome + ".pdf"); #endregion }
/// <summary> /// Construtor da classe responsável pela impressão do DANFE da NFCe em Fast Reports /// </summary> /// <param name="proc">Objeto do tipo nfeProc</param> /// <param name="configuracaoDanfeNfce">Objeto do tipo ConfiguracaoDanfeNfce contendo as definições de impressão</param> /// <param name="cIdToken">Identificador do CSC – Código de Segurança do Contribuinte no Banco de Dados da SEFAZ</param> /// <param name="csc">Código de Segurança do Contribuinte(antigo Token)</param> /// <param name="arquivoRelatorio">Caminho e arquivo frx contendo as definições do relatório personalizado</param> /// <param name="textoRodape">Texto para ser impresso no final do documento</param> public DanfeFrNfce(nfeProc proc, ConfiguracaoDanfeNfce configuracaoDanfeNfce, string cIdToken, string csc, string arquivoRelatorio = "", string textoRodape = "") { #region Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/) Relatorio = new Report(); Relatorio.RegisterData(new[] { proc }, "NFCe", 20); Relatorio.GetDataSource("NFCe").Enabled = true; if (string.IsNullOrEmpty(arquivoRelatorio)) { Relatorio.Load(new MemoryStream(Properties.Resources.NFCe)); } else { Relatorio.Load(arquivoRelatorio); } Relatorio.SetParameterValue("NfceDetalheVendaNormal", configuracaoDanfeNfce.DetalheVendaNormal); Relatorio.SetParameterValue("NfceDetalheVendaContigencia", configuracaoDanfeNfce.DetalheVendaContigencia); Relatorio.SetParameterValue("NfceImprimeDescontoItem", configuracaoDanfeNfce.ImprimeDescontoItem); Relatorio.SetParameterValue("NfceModoImpressao", configuracaoDanfeNfce.ModoImpressao); Relatorio.SetParameterValue("NfceCancelado", configuracaoDanfeNfce.DocumentoCancelado); Relatorio.SetParameterValue("NfceLayoutQrCode", configuracaoDanfeNfce.NfceLayoutQrCode); ((ReportPage)Relatorio.FindObject("PgNfce")).LeftMargin = configuracaoDanfeNfce.MargemEsquerda; ((ReportPage)Relatorio.FindObject("PgNfce")).RightMargin = configuracaoDanfeNfce.MargemDireita; ((PictureObject)Relatorio.FindObject("poEmitLogo")).Image = configuracaoDanfeNfce.ObterLogo(); ((TextObject)Relatorio.FindObject("txtUrl")).Text = string.IsNullOrEmpty(proc.NFe.infNFeSupl.urlChave) ? proc.NFe.infNFeSupl.ObterUrlConsulta(proc.NFe, configuracaoDanfeNfce.VersaoQrCode) : proc.NFe.infNFeSupl.urlChave; ((BarcodeObject)Relatorio.FindObject("bcoQrCode")).Text = proc.NFe.infNFeSupl == null?proc.NFe.infNFeSupl.ObterUrlQrCode(proc.NFe, configuracaoDanfeNfce.VersaoQrCode, cIdToken, csc) : proc.NFe.infNFeSupl.qrCode; ((BarcodeObject)Relatorio.FindObject("bcoQrCodeLateral")).Text = proc.NFe.infNFeSupl == null?proc.NFe.infNFeSupl.ObterUrlQrCode(proc.NFe, configuracaoDanfeNfce.VersaoQrCode, cIdToken, csc) : proc.NFe.infNFeSupl.qrCode; // A VERSÃO DO FASTREPORT OPEN SOURCE QUE USAMOS NO SINFE NÃO PERMITE IMPRESSÃO LOCAL - TODO O CODIGO ABAIXO SERÁ COMENTADO //Segundo o Manual de Padrões Técnicos do DANFE - NFC - e e QR Code, versão 3.2, página 9, nos casos de emissão em contingência deve ser impresso uma segunda cópia como via do estabelecimento //if (configuracaoDanfeNfce.SegundaViaContingencia) // Relatorio.PrintSettings.Copies = (proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teNormal | (proc.protNFe != null && proc.protNFe.infProt != null && NfeSituacao.Autorizada(proc.protNFe.infProt.cStat)) // /*Se a NFe for autorizada, mesmo que seja em contingência, imprime somente uma via*/ ) ? 1 : 2; #endregion //Relatorio = DanfeSharedHelper.GenerateDanfeNfceReport(proc, configuracaoDanfeNfce, cIdToken, csc, Properties.Resources.NFCe, arquivoRelatorio); }
/// <summary> /// Responsavel por visualizar NFCe apos autorização. E possivel imprimir apos visualização /// </summary> private void VisualizarNFCe(string xmlNFce, ConfiguracaoDanfeNfce configuracaoDanfe, string cIdToken, string csc) { try { #region Carrega um XML com nfeProc para a variável if (string.IsNullOrEmpty(xmlNFce)) { return; } var proc = new nfeProc().CarregarDeXmlString(xmlNFce); if (proc.NFe.infNFe.ide.mod != ModeloDocumento.NFCe) { throw new Exception("O XML informado não é um NFCe!"); } #endregion #region Abre a visualização do relatório para impressão var danfe = new DanfeFrNfce(proc: proc, configuracaoDanfeNfce: configuracaoDanfe, cIdToken: cIdToken, csc: csc, arquivoRelatorio: string.Empty); danfe.Visualizar(false); //danfe.Imprimir(); //danfe.ExibirDesign(); //danfe.ExportarPdf(@"d:\teste.pdf"); #endregion } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.Message)) { MessageBox.Show(ex.Message); } } }
private void CarregarXml(string xml) { try { nfeProc proc = new procNFe().nfeProc.CarregarDeXmlString(xml); _proc = proc; _nfe = _proc.NFe; } catch (Exception) { try { NFeZeus nfe = new NFeZeus().CarregarDeXmlString(xml); _nfe = nfe; } catch (Exception) { throw new ArgumentException( "Ei! Verifique se seu xml está correto, pois identificamos uma falha ao tentar carregar ele."); } } }