Пример #1
0
        public void NotaContingenciaEnviadaXmlValidoTest()
        {
            var notaFiscalService = new NotaFiscalService();

            notaFiscalService.AtivarModoOffline("Teste unitário envio contingência", DateTime.Now);
            NotaFiscal         notaFiscal;
            ConfiguracaoEntity config;

            EnviarNotaTesteUnitarioUtils.EnviarNotaFiscal(out notaFiscal, out config);

            Task task = new Task(() => notaFiscalService.AtivarModoOnline());

            task.RunSynchronously();
            task.Wait();

            //verificar se arquivo existe
            var    notaTest = new NotaFiscalService().GetNotaFiscalByChave(notaFiscal.Identificacao.Chave, Ambiente.Homologacao);
            string xml      = notaTest.LoadXml();

            Assert.IsFalse(string.IsNullOrWhiteSpace(xml));
            Assert.IsTrue(File.Exists(notaTest.XmlPath));

            Assert.IsTrue(notaTest.Status == (int)NFe.Repository.Status.ENVIADA);
            ValidadorXml.ValidarXml(xml, "procNFe_v4.00.xsd");
        }
Пример #2
0
        public void NotaNormalEnviadaXmlValidoTest()
        {
            NotaFiscal         notaFiscal;
            ConfiguracaoEntity config;

            EnviarNotaTesteUnitarioUtils.EnviarNotaFiscal(out notaFiscal, out config);

            //verificar se arquivo existe
            var    notaTest = new NotaFiscalService().GetNotaFiscalByChave(notaFiscal.Identificacao.Chave, Ambiente.Homologacao);
            string xml      = notaTest.LoadXml();

            Assert.IsFalse(string.IsNullOrWhiteSpace(xml));
            Assert.IsTrue(File.Exists(notaTest.XmlPath));
            Assert.IsTrue(notaTest.Status == (int)NFe.Repository.Status.ENVIADA && ConsultaStatusServicoService.ExecutarConsultaStatus(config, Modelo.Modelo65));
            ValidadorXml.ValidarXml(xml, "procNFe_v4.00.xsd");
        }
        public bool IsNotaFiscalValida(NotaFiscal notaFiscal, string cscId, string csc, X509Certificate2 certificado)
        {
            var refUri           = "#NFe" + notaFiscal.Identificacao.Chave;
            var digVal           = "";
            var nFeNamespaceName = "http://www.portalfiscal.inf.br/nfe";

            var xml = Regex.Replace(XmlUtil.GerarXmlLoteNFe(notaFiscal, nFeNamespaceName), "<motDesICMS>1</motDesICMS>",
                                    string.Empty);

            XmlNode node = AssinaturaDigital.AssinarLoteComUmaNota(xml, refUri, certificado, ref digVal);

            try
            {
                string newNodeXml;
                if (notaFiscal.Identificacao.Modelo == Modelo.Modelo65)
                {
                    var qrCode = QrCodeUtil.GerarQrCodeNFe(notaFiscal.Identificacao.Chave, notaFiscal.Destinatario, digVal,
                                                           notaFiscal.Identificacao.Ambiente,
                                                           notaFiscal.Identificacao.DataHoraEmissao,
                                                           notaFiscal.TotalNFe.IcmsTotal.ValorTotalNFe.ToString("F", CultureInfo.InvariantCulture),
                                                           notaFiscal.TotalNFe.IcmsTotal.ValorTotalIcms.ToString("F", CultureInfo.InvariantCulture), cscId,
                                                           csc, notaFiscal.Identificacao.TipoEmissao);

                    newNodeXml = node.InnerXml.Replace("<qrCode />", "<qrCode>" + qrCode + "</qrCode>");
                }
                else
                {
                    newNodeXml = node.InnerXml;
                }

                var document = new XmlDocument();
                document.LoadXml(newNodeXml);
                node = document.DocumentElement;

                ValidadorXml.ValidarXml(node.OuterXml, "enviNFe_v4.00.xsd");

                return(true);
            }
            catch (Exception e)
            {
                log.Error(e);
                return(false);
            }
        }
Пример #4
0
        public void NotaInutilizadaXmlExisteTest()
        {
            var config          = ConfiguracaoService.GetConfiguracao();
            var emitente        = EmissorService.GetEmissor();
            var codigoUFEnum    = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), emitente.Endereco.UF);
            var numInutilizar   = config.ProximoNumNFCeHom;
            var serieInutilizar = Convert.ToInt32(config.SerieNFCeHom);

            var mensagemRetorno = new NotaInutilizadaService().InutilizarNotaFiscal(emitente.Endereco.UF, codigoUFEnum, Ambiente.Homologacao, emitente.CNPJ, Modelo.Modelo65, serieInutilizar.ToString(),
                                                                                    numInutilizar, numInutilizar);

            if (mensagemRetorno.Status == NFe.Core.Servicos.Status.SUCESSO)
            {
                config.ProximoNumNFCeHom = (Convert.ToInt32(config.ProximoNumNFCeHom) + 1).ToString();
                ConfiguracaoService.Salvar(config);
            }

            var notaInutilizadaTest = new NotaInutilizadaService().GetNotaInutilizada(mensagemRetorno.IdInutilizacao, true, false);

            ValidadorXml.ValidarXml(notaInutilizadaTest.LoadXml(), "procInutNFe_v4.00.xsd");

            Assert.IsTrue(File.Exists(notaInutilizadaTest.XmlPath));
        }
Пример #5
0
        public async Task NotaCanceladaXmlExisteTest()
        {
            NotaFiscal         notaFiscal;
            ConfiguracaoEntity config;
            int notaFiscalId = EnviarNotaTesteUnitarioUtils.EnviarNotaFiscal(out notaFiscal, out config);

            var notaFiscalDb = new NotaFiscalService().GetNotaFiscalByIdAsync(notaFiscalId, false).Result;

            var emitente     = notaFiscal.Emitente;
            var codigoUFEnum = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), emitente.Endereco.UF);

            await new NotaFiscalService().CancelarNotaFiscalAsync(emitente.Endereco.UF, codigoUFEnum, Ambiente.Homologacao, emitente.CNPJ, notaFiscal.Identificacao.Chave,
                                                                  notaFiscalDb.Protocolo, notaFiscal.Identificacao.Modelo, "Teste unitário cancelamento");

            var notaTest = new NotaFiscalService().GetNotaFiscalByChave(notaFiscal.Identificacao.Chave, Ambiente.Homologacao);
            var evento   = new EventoService().GetEventoPorNota(notaTest.Id, true);

            ValidadorXml.ValidarXml(evento.LoadXml(), "procEventoCancNFe_v1.00.xsd");
            ValidadorXml.ValidarXml(notaTest.LoadXml(), "procNFe_v4.00.xsd");

            Assert.IsTrue(notaTest.Status == (int)NFe.Repository.Status.CANCELADA);
            Assert.IsTrue(File.Exists(evento.XmlPath));
            Assert.IsTrue(File.Exists(notaTest.XmlPath));
        }
Пример #6
0
        public bool IsNotaFiscalValida(NotaFiscal notaFiscal, string cscId, string csc)
        {
            string qrCode = "";

            string refUri           = "#NFe" + notaFiscal.Identificacao.Chave;
            string digVal           = "";
            string nFeNamespaceName = "http://www.portalfiscal.inf.br/nfe";

            X509Certificate2 certificado;

            var certificadoEntity = new CertificadoRepository(new NFeContext()).GetCertificado();

            if (!string.IsNullOrWhiteSpace(certificadoEntity.Caminho))
            {
                certificado = CertificateManager.GetCertificateByPath(certificadoEntity.Caminho,
                                                                      RijndaelManagedEncryption.DecryptRijndael(certificadoEntity.Senha));
            }
            else
            {
                certificado = CertificateManager.GetCertificateBySerialNumber(certificadoEntity.NumeroSerial, false);
            }

            var     xml  = Regex.Replace(XmlUtil.GerarXmlLoteNFe(notaFiscal, nFeNamespaceName), "<motDesICMS>1</motDesICMS>", string.Empty);;
            XmlNode node = AssinaturaDigital.AssinarLoteComUmaNota(xml, refUri, certificado, ref digVal);

            TNFe   nfe        = null;
            string newNodeXml = string.Empty;

            try
            {
                var codigoUF = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), notaFiscal.Emitente.Endereco.UF);

                if (notaFiscal.Identificacao.Modelo == Modelo.Modelo65)
                {
                    qrCode = QrCodeUtil.GerarQrCodeNFe(notaFiscal.Identificacao.Chave, notaFiscal.Destinatario, digVal, notaFiscal.Identificacao.Ambiente,
                                                       notaFiscal.Identificacao.DataHoraEmissao, notaFiscal.TotalNFe.IcmsTotal.ValorTotalNFe.ToString("F", CultureInfo.InvariantCulture),
                                                       notaFiscal.TotalNFe.IcmsTotal.ValorTotalIcms.ToString("F", CultureInfo.InvariantCulture), cscId, csc, notaFiscal.Identificacao.TipoEmissao);

                    newNodeXml = node.InnerXml.Replace("<qrCode />", "<qrCode>" + qrCode + "</qrCode>");
                }
                else
                {
                    newNodeXml = node.InnerXml;
                }

                var document = new XmlDocument();
                document.LoadXml(newNodeXml);
                node = document.DocumentElement;

                TEnviNFe lote = (TEnviNFe)XmlUtil.Deserialize <TEnviNFe>(node.OuterXml);
                nfe = lote.NFe[0];

                ValidadorXml.ValidarXml(node.OuterXml, "enviNFe_v4.00.xsd");

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }