Пример #1
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);
        }
Пример #2
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);
 }
Пример #3
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);
        }
Пример #4
0
        public static Report GenerateDanfeFrNfeReport(nfeProc proc, 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.RegisterData(new[] { proc }, "NFe", 20);
            relatorio.GetDataSource("NFe").Enabled = true;

            if (string.IsNullOrEmpty(arquivoRelatorio))
            {
                relatorio.Load(new MemoryStream(frx));
            }
            else
            {
                relatorio.Load(arquivoRelatorio);
            }

            string mensagem              = string.Empty;
            string resumoCanhoto         = string.Empty;
            string contingenciaDescricao = string.Empty;
            string contingenciaValor     = string.Empty;
            string consultaAutenticidade = "Consulta de autenticidade no portal nacional da NF-e" + Environment.NewLine +
                                           "www.nfe.fazenda.gov.br/portal ou no site da Sefaz autorizadora";

            if (configuracaoDanfeNfe.ExibirResumoCanhoto)
            {
                resumoCanhoto = string.IsNullOrEmpty(configuracaoDanfeNfe.ResumoCanhoto) ?
                                string.Format("Emissão: {0: dd/MM/yyyy} Dest/Reme: {1} Valor Total: {2:C}", proc.NFe.infNFe.ide.dhEmi,
                                              proc.NFe.infNFe.dest.xNome, proc.NFe.infNFe.total.ICMSTot.vNF) :
                                configuracaoDanfeNfe.ResumoCanhoto;
            }

            if (proc.NFe.infNFe.ide.tpAmb == TipoAmbiente.Homologacao)
            {
                if (proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teSCAN ||
                    proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teEPEC ||
                    proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teFSDA ||
                    proc.NFe.infNFe.ide.tpEmis == TipoEmissao.teFSIA)
                {
                    if (proc.protNFe != null && proc.protNFe.infProt != null &&
                        (proc.protNFe.infProt.cStat == 101 ||
                         proc.protNFe.infProt.cStat == 135 ||
                         proc.protNFe.infProt.cStat == 151 ||
                         proc.protNFe.infProt.cStat == 155))
                    {
                        mensagem = "NFe sem Valor Fiscal - HOMOLOGAÇÃO" + Environment.NewLine +
                                   "NFe em Contingência - CANCELADA";
                    }
                    else
                    {
                        mensagem = "NFe sem Valor Fiscal - HOMOLOGAÇÃO" + Environment.NewLine +
                                   "NFe em Contingência";
                    }
                }
                else
                {
                    mensagem = "NFe sem Valor Fiscal - HOMOLOGAÇÃO";
                }
            }
            else
            {
                if (configuracaoDanfeNfe.DocumentoCancelado ||
                    (proc.protNFe != null && proc.protNFe.infProt != null &&
                     !string.IsNullOrEmpty(proc.protNFe.infProt.nProt) &&
                     (proc.protNFe.infProt.cStat == 101 ||
                      proc.protNFe.infProt.cStat == 135 ||
                      proc.protNFe.infProt.cStat == 151 ||
                      proc.protNFe.infProt.cStat == 155)))
                {
                    mensagem = "NFe Cancelada";
                }
                else if (proc.protNFe != null && proc.protNFe.infProt != null &&
                         (proc.protNFe.infProt.cStat == 110 ||
                          proc.protNFe.infProt.cStat == 301 ||
                          proc.protNFe.infProt.cStat == 302 ||
                          proc.protNFe.infProt.cStat == 303))
                {
                    mensagem = "NFe denegada pelo Fisco";
                }
                else if (proc.protNFe != null && proc.protNFe.infProt != null &&
                         string.IsNullOrEmpty(proc.protNFe.infProt.nProt))
                {
                    mensagem = "NFe sem Autorização de Uso da SEFAZ";
                }
            }

            switch (proc.NFe.infNFe.ide.tpEmis)
            {
            case TipoEmissao.teNormal:
            case TipoEmissao.teSCAN:
            case TipoEmissao.teSVCAN:
            case TipoEmissao.teSVCRS:
                contingenciaDescricao = "PROTOCOLO DE AUTORIZAÇÃO DE USO";
                contingenciaValor     = ((proc.protNFe == null || proc.protNFe.infProt == null || string.IsNullOrEmpty(proc.protNFe.infProt.nProt)) ? "NFe sem Autorização de Uso da SEFAZ" : string.Format("{0} - {1:dd/MM/yyyy HH:mm:ss}", proc.protNFe.infProt.nProt, proc.protNFe.infProt.dhRecbto));
                if (configuracaoDanfeNfe.DocumentoCancelado || (proc.protNFe != null && proc.protNFe.infProt != null && (proc.protNFe.infProt.cStat == 101 || proc.protNFe.infProt.cStat == 151 || proc.protNFe.infProt.cStat == 155)))
                {
                    contingenciaDescricao = "PROTOCOLO DE HOMOLOGAÇÃO DO CANCELAMENTO";
                }
                else if (proc.protNFe != null && proc.protNFe.infProt != null && (proc.protNFe.infProt.cStat == 110 || proc.protNFe.infProt.cStat == 301 || proc.protNFe.infProt.cStat == 302 || proc.protNFe.infProt.cStat == 303))
                {
                    contingenciaDescricao = "PROTOCOLO DE DENEGAÇÃO DE USO";
                }
                break;

            case TipoEmissao.teFSIA:
            case TipoEmissao.teEPEC:
            case TipoEmissao.teFSDA:
                contingenciaDescricao = "DADOS DA NF-E";
                contingenciaValor     = Regex.Replace(configuracaoDanfeNfe.ChaveContingencia, ".{4}", "$0 ");
                consultaAutenticidade = string.Empty;
                break;

            default:
                contingenciaValor = string.Format("{0} - {1:dd/MM/yyyy HH:mm:ss}", proc.protNFe.infProt.nProt, proc.protNFe.infProt.dhRecbto);
                break;
            }

            relatorio.SetParameterValue("ResumoCanhoto", resumoCanhoto);
            relatorio.SetParameterValue("Mensagem", mensagem);
            relatorio.SetParameterValue("ConsultaAutenticidade", consultaAutenticidade);
            relatorio.SetParameterValue("ContingenciaDescricao", contingenciaDescricao);
            relatorio.SetParameterValue("ContingenciaValor", contingenciaValor);
            relatorio.SetParameterValue("ContingenciaID", configuracaoDanfeNfe.ChaveContingencia);
            relatorio.SetParameterValue("DuasLinhas", configuracaoDanfeNfe.DuasLinhas);
            relatorio.SetParameterValue("Desenvolvedor", desenvolvedor);
            relatorio.SetParameterValue("QuebrarLinhasObservacao", configuracaoDanfeNfe.QuebrarLinhasObservacao);
            relatorio.SetParameterValue("ImprimirISSQN", configuracaoDanfeNfe.ImprimirISSQN);
            relatorio.SetParameterValue("ImprimirDescPorc", configuracaoDanfeNfe.ImprimirDescPorc);
            relatorio.SetParameterValue("ImprimirTotalLiquido", configuracaoDanfeNfe.ImprimirTotalLiquido);
            relatorio.SetParameterValue("ImprimirUnidQtdeValor", configuracaoDanfeNfe.ImprimirUnidQtdeValor);
            relatorio.SetParameterValue("ExibeCampoFatura", configuracaoDanfeNfe.ExibeCampoFatura);
            relatorio.SetParameterValue("Logo", configuracaoDanfeNfe.Logomarca);
            relatorio.SetParameterValue("ExibirTotalTributos", configuracaoDanfeNfe.ExibirTotalTributos);
            relatorio.SetParameterValue("ExibeRetencoes", configuracaoDanfeNfe.ExibeRetencoes);
            relatorio.SetParameterValue("DecimaisValorUnitario", configuracaoDanfeNfe.DecimaisValorUnitario);
            relatorio.SetParameterValue("DecimaisQuantidadeItem", configuracaoDanfeNfe.DecimaisQuantidadeItem);
            relatorio.SetParameterValue("DataHoraImpressao", configuracaoDanfeNfe.DataHoraImpressao ?? DateTime.Now);

            return(relatorio);
        }
Пример #5
0
        public ConfiguracaoApp()
        {
            ConfiguracaoDanfeNfce = new ConfiguracaoDanfeNfce(NfceDetalheVendaNormal.UmaLinha, NfceDetalheVendaContigencia.UmaLinha);

            ConfiguracaoDanfeNfe = new ConfiguracaoDanfeNfe();
        }
Пример #6
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);
        }
Пример #7
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 = "")
 {
     Relatorio = DanfeSharedHelper.GenerateDanfeFrEventoReport(proc, procEventoNFe, configuracaoDanfeNfe, Properties.Resources.NFeEvento, desenvolvedor);
 }
Пример #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);
        }
Пример #9
0
 /// <summary>
 /// Construtor da classe responsável pela impressão do DANFE da NFe em Fast Reports.
 /// Use esse construtor apenas para impressão em contingência, já que neste modo ainda não é possível obter o grupo protNFe
 /// </summary>
 /// <param name="nfe">Objeto do tipo <see cref="Classes.NFe"/></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(Classes.NFe nfe, ConfiguracaoDanfeNfe configuracaoDanfeNfe, string desenvolvedor) : this(new nfeProc() { NFe = nfe }, configuracaoDanfeNfe, desenvolvedor)
 {
 }
Пример #10
0
 public ConfiguracaoConsole()
 {
     ConfiguracaoDanfeNfe = new ConfiguracaoDanfeNfe();
 }