/// <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);
            }
        }
Example #2
0
        /// <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
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #6
0
 public DanfeNativoNfce(nfeProc proc, ConfiguracaoDanfeNfce configuracaoDanfeNfce, string cIdToken, string csc)
 {
     _proc = proc;
     _configuracaoDanfeNfce = configuracaoDanfeNfce;
     _cIdToken = cIdToken;
     _csc      = csc;
 }
Example #7
0
        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);
            }
        }
Example #8
0
        /// <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);
        }
Example #9
0
        /// <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);
        }
Example #10
0
        /// <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);
        }
Example #11
0
        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);
        }
Example #12
0
        /// <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
        }
Example #13
0
        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);
            }
        }
Example #15
0
        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);
                }
            }
        }
Example #16
0
        /// <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
        }
Example #17
0
        /// <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
        }
Example #18
0
        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);
        }
Example #19
0
 /// <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);
 }
Example #20
0
        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(".", ","))
                });
            }
        }
Example #21
0
        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);
                }
            }
        }
Example #22
0
        /// <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
        }
Example #23
0
        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;
            }
        }
Example #24
0
 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");
         }
     }
 }
Example #25
0
        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);
                }
            }
        }
Example #26
0
        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
        }
Example #28
0
        /// <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);
                }
            }
        }
Example #30
0
 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.");
         }
     }
 }