示例#1
0
        /// <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
        }
示例#2
0
 public RetAutorz(retEnviNFe retorno, string xmlRecebido, int processadas, int rejeitadas, string xmlEnviado, bool contigencia)
 {
     Retorno     = retorno;
     XmlRecebido = xmlRecebido;
     Processadas = processadas;
     Rejeitadas  = rejeitadas;
     XmlEnviado  = xmlEnviado;
     Contigencia = contigencia;
 }
示例#3
0
        /// <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
        }
示例#4
0
 public RetornoNfeRecepcao(string envioStr, string retornoStr, string retornoCompletaStr, retEnviNFe retorno)
     : base(envioStr, retornoStr, retornoCompletaStr, retorno)
 {
     Retorno = retorno;
 }
示例#5
0
 /// <summary>
 ///     Converte o objeto retEnviNFe para uma string no formato XML
 /// </summary>
 /// <param name="retEnviNFe"></param>
 /// <returns>Retorna uma string no formato XML com os dados do objeto retEnviNFe</returns>
 public static string ObterXmlString(this retEnviNFe retEnviNFe)
 {
     return(FuncoesXml.ClasseParaXmlString(retEnviNFe));
 }
示例#6
0
 /// <summary>
 ///     Coverte uma string XML no formato NFe para um objeto retEnviNFe
 /// </summary>
 /// <param name="retEnviNFe"></param>
 /// <param name="xmlString"></param>
 /// <returns>Retorna um objeto do tipo retEnviNFe</returns>
 public static retEnviNFe CarregarDeXmlString(this retEnviNFe retEnviNFe, string xmlString)
 {
     return(FuncoesXml.XmlStringParaClasse <retEnviNFe>(xmlString));
 }
 public RetornoNFeAutorizacao(string envioStr, string retornoStr, string retornoCompletaStr, retEnviNFe retorno)
     : base(envioStr, retornoStr, retornoCompletaStr, retorno)
 {
     Retorno = retorno;
 }