/// <summary> /// Envia uma ou mais NFe /// </summary> /// <param name="idLote">ID do Lote</param> /// <param name="indSinc">Indicador de Sincronização</param> /// <param name="nFes">Lista de NFes a serem enviadas</param> /// <param name="compactarMensagem">Define se a mensagem será enviada para a SEFAZ compactada</param> /// <returns>Retorna um objeto da classe RetornoNFeAutorizacao com com os dados do resultado da transmissão</returns> public RetornoNFeAutorizacao NFeAutorizacao(int idLote, IndicadorSincronizacao indSinc, List <Classes.NFe> nFes, bool compactarMensagem = false) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NFeAutorizacao, _cFgServico.VersaoNFeAutorizacao); #region Cria o objeto wdsl para consulta var ws = CriarServicoAutorizacao(ServicoNFe.NFeAutorizacao); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto enviNFe var pedEnvio = new enviNFe3(versaoServico, idLote, indSinc, nFes); #endregion #region Valida, Envia os dados e obtém a resposta var xmlEnvio = pedEnvio.ObterXmlString(); if (_cFgServico.cUF == Estado.PR) //Caso o lote seja enviado para o PR, colocar o namespace nos elementos <NFe> do lote, pois o serviço do PR o exige, conforme https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/issues/33 { xmlEnvio = xmlEnvio.Replace("<NFe>", "<NFe xmlns=\"http://www.portalfiscal.inf.br/nfe\">"); } Validador.Valida(ServicoNFe.NFeAutorizacao, _cFgServico.VersaoNFeAutorizacao, xmlEnvio); var dadosEnvio = new XmlDocument(); dadosEnvio.LoadXml(xmlEnvio); SalvarArquivoXml(idLote + "-env-lot.xml", xmlEnvio); XmlNode retorno; if (compactarMensagem) { var xmlCompactado = Convert.ToBase64String(Compressao.Zip(xmlEnvio)); retorno = ws.ExecuteZip(xmlCompactado); } else { retorno = ws.Execute(dadosEnvio); } var retornoXmlString = retorno.OuterXml; var retEnvio = new retEnviNFe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(idLote + "-rec.xml", retornoXmlString); return(new RetornoNFeAutorizacao(pedEnvio.ObterXmlString(), retEnvio.ObterXmlString(), retornoXmlString, retEnvio)); #endregion }
/// <summary> /// Envia uma ou mais NFe /// </summary> /// <param name="idLote"></param> /// <param name="indSinc"></param> /// <param name="nFes"></param> /// <returns>Retorna um objeto da classe RetornoNFeAutorizacao com com os dados do resultado da transmissão</returns> public RetornoNFeAutorizacao NFeAutorizacao(int idLote, IndicadorSincronizacao indSinc, List <Classes.NFe> nFes) { var versaoServico = Auxiliar.VersaoServicoParaString(ServicoNFe.NFeAutorizacao, _cFgServico.VersaoNFeAutorizacao); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NFeAutorizacao, TipoRecepcaoEvento.Nenhum); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto enviNFe var pedEnvio = new enviNFe3(versaoServico, idLote, indSinc, nFes); #endregion #region Valida, Envia os dados e obtém a resposta var xmlEnvio = pedEnvio.ObterXmlString(); Validador.Valida(ServicoNFe.NFeAutorizacao, TipoRecepcaoEvento.Nenhum, _cFgServico.VersaoNFeAutorizacao, xmlEnvio); var dadosEnvio = new XmlDocument(); dadosEnvio.LoadXml(xmlEnvio); SalvarArquivoXml(idLote + "-env-lot.xml", xmlEnvio); var retorno = ws.Execute(dadosEnvio); var retornoXmlString = retorno.OuterXml; var retEnvio = new retEnviNFe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(idLote + "-rec.xml", retornoXmlString); return(new RetornoNFeAutorizacao(pedEnvio.ObterXmlString(), retEnvio.ObterXmlString(), retornoXmlString, retEnvio)); #endregion }