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"); }
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); } }
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)); }
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)); }
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); } }