/// <summary>
        /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica.
        /// </summary>
        /// <param name="ufAutor">Código da UF do Autor</param>
        /// <param name="documento">CNPJ/CPF do interessado no DF-e</param>
        /// <param name="ultNSU">Último NSU recebido pelo Interessado</param>
        /// <param name="nSU">Número Sequencial Único</param>
        /// <param name="configuracaoServico"></param>
        /// <returns>Retorna um objeto da classe CTeDistDFeInteresse com os documentos de interesse do CNPJ/CPF pesquisado</returns>
        public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null)
        {
            var         configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
            distDFeInt  pedDistDFeInt;
            XmlDocument dadosConsulta;
            var         ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico);

            XmlNode retorno = ws.Execute(dadosConsulta);

            var retornoXmlString = retorno.OuterXml;

            var retConsulta = new retDistDFeInt().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(DateTime.Now.ParaDataHoraString() + "-distDFeInt.xml", retornoXmlString, configServico);

            #region Obtém um retDistDFeInt de cada evento e salva em arquivo

            if (retConsulta.loteDistDFeInt != null && configServico.UnZip)
            {
                for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
                {
                    string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
                    string chCTe    = string.Empty;

                    if (conteudo.StartsWith("<cteProc"))
                    {
                        var retConteudo = FuncoesXml.XmlStringParaClasse <CTe.Classes.cteProc>(conteudo);
                        chCTe = retConteudo.protCTe.infProt.chCTe;
                    }
                    else if (conteudo.StartsWith("<procEventoCTe"))
                    {
                        var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.procEventoCTe>(conteudo);
                        chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe;
                    }

                    string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
                    if (chCTe == string.Empty)
                    {
                        chCTe = DateTime.Now.ParaDataHoraString() + "_SEMCHAVE";
                    }

                    SalvarArquivoXml(chCTe + "-" + schema[0] + ".xml", conteudo, configServico);
                }
            }

            #endregion

            return(new RetornoCteDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica.
        /// </summary>
        /// <param name="ufAutor">Código da UF do Autor</param>
        /// <param name="documento">CNPJ/CPF do interessado no DF-e</param>
        /// <param name="ultNSU">Último NSU recebido pelo Interessado</param>
        /// <param name="nSU">Número Sequencial Único</param>
        /// <returns>Retorna um objeto da classe RetornoNfeDistDFeInt com os documentos de interesse do CNPJ/CPF pesquisado</returns>
        public RetornoNfeDistDFeInt NfeDistDFeInteresse(string ufAutor, string documento, string ultNSU, string nSU = "0")
        {
            var versaoServico = ServicoNFe.NFeDistribuicaoDFe.VersaoServicoParaString(_cFgServico.VersaoNFeDistribuicaoDFe);

            #region Cria o objeto wdsl para consulta

            var ws = CriarServico(ServicoNFe.NFeDistribuicaoDFe);

            ws.nfeCabecMsg = new nfeCabecMsg
            {
                cUF         = _cFgServico.cUF,
                versaoDados = versaoServico
            };

            #endregion

            #region Cria o objeto distDFeInt

            var pedDistDFeInt = new distDFeInt
            {
                versao   = versaoServico,
                tpAmb    = _cFgServico.tpAmb,
                cUFAutor = _cFgServico.cUF,
                distNSU  = new distNSU {
                    ultNSU = ultNSU.PadLeft(15, '0')
                }
            };

            if (documento.Length == 11)
            {
                pedDistDFeInt.CPF = documento;
            }
            if (documento.Length > 11)
            {
                pedDistDFeInt.CNPJ = documento;
            }
            if (!nSU.Equals("0"))
            {
                pedDistDFeInt.consNSU = new consNSU {
                    NSU = nSU.PadLeft(15, '0')
                }
            }
            ;

            #endregion

            #region Valida, Envia os dados e obtém a resposta

            var xmlConsulta = pedDistDFeInt.ObterXmlString();
            Validador.Valida(ServicoNFe.NFeDistribuicaoDFe, _cFgServico.VersaoNFeDistribuicaoDFe, xmlConsulta);
            var dadosConsulta = new XmlDocument();
            dadosConsulta.LoadXml(xmlConsulta);

            SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-ped-DistDFeInt.xml", xmlConsulta);

            var retorno          = ws.Execute(dadosConsulta);
            var retornoXmlString = retorno.OuterXml;
            var retConsulta      = new retDistDFeInt().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-distDFeInt.xml", retornoXmlString);

            #region Obtém um retDistDFeInt de cada evento e salva em arquivo
            if (retConsulta.loteDistDFeInt != null)
            {
                for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
                {
                    string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
                    string chNFe    = string.Empty;

                    if (conteudo.StartsWith("<retNFe"))
                    {
                        var retConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.resNFe>(conteudo);
                        chNFe = retConteudo.chNFe;
                    }
                    else if (conteudo.StartsWith("<procEventoNFe"))
                    {
                        var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.procEventoNFe>(conteudo);
                        chNFe = procEventoNFeConteudo.retEvento.infEvento.chNFe;
                    }

                    string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
                    SalvarArquivoXml(chNFe + "_" + schema[0] + ".xml", conteudo);
                }
            }
            #endregion

            return(new RetornoNfeDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta));

            #endregion
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica.
        /// </summary>
        /// <param name="ufAutor">Código da UF do Autor</param>
        /// <param name="documento">CNPJ/CPF do interessado no DF-e</param>
        /// <param name="ultNSU">Último NSU recebido pelo Interessado</param>
        /// <param name="nSU">Número Sequencial Único</param>
        /// <returns>Retorna um objeto da classe CTeDistDFeInteresse com os documentos de interesse do CNPJ/CPF pesquisado</returns>
        public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0")
        {
            var versaoServico = ConfiguracaoServico.Instancia.VersaoLayout;

            #region Cria o objeto wdsl para consulta

            var ws = WsdlFactory.CriaWsdlCTeDistDFeInteresse();

            #endregion

            #region Cria o objeto distCTeInt

            var pedDistDFeInt = new distDFeInt
            {
                versao   = "1.00",
                tpAmb    = ConfiguracaoServico.Instancia.tpAmb,
                cUFAutor = ConfiguracaoServico.Instancia.cUF
            };

            if (documento.Length == 11)
            {
                pedDistDFeInt.CPF = documento;
            }
            if (documento.Length > 11)
            {
                pedDistDFeInt.CNPJ = documento;
            }


            pedDistDFeInt.distNSU = new distNSU {
                ultNSU = ultNSU.PadLeft(15, '0')
            };

            if (!nSU.Equals("0"))
            {
                pedDistDFeInt.consNSU = new consNSU {
                    NSU = nSU.PadLeft(15, '0')
                };
                pedDistDFeInt.distNSU = null;
            }

            #endregion

            #region Valida, Envia os dados e obtém a resposta


            pedDistDFeInt.ValidaSchema();

            var xmlConsulta = pedDistDFeInt.ObterXmlString();

            var dadosConsulta = new XmlDocument();
            dadosConsulta.LoadXml(xmlConsulta);

            string path = DateTime.Now.ParaDataHoraString() + "-ped-DistDFeInt.xml";

            SalvarArquivoXml(path, xmlConsulta);

            XmlNode retorno = ws.Execute(dadosConsulta);

            var retornoXmlString = retorno.OuterXml;

            var retConsulta = new retDistDFeInt().CarregarDeXmlString(retornoXmlString);

            SalvarArquivoXml(DateTime.Now.ParaDataHoraString() + "-distDFeInt.xml", retornoXmlString);

            #region Obtém um retDistDFeInt de cada evento e salva em arquivo

            if (retConsulta.loteDistDFeInt != null)
            {
                for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
                {
                    string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
                    string chCTe    = string.Empty;

                    if (conteudo.StartsWith("<cteProc"))
                    {
                        var retConteudo = FuncoesXml.XmlStringParaClasse <CTe.Classes.cteProc>(conteudo);
                        chCTe = retConteudo.protCTe.infProt.chCTe;
                    }
                    else if (conteudo.StartsWith("<procEventoCTe"))
                    {
                        var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.procEventoCTe>(conteudo);
                        chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe;
                    }

                    string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
                    if (chCTe == string.Empty)
                    {
                        chCTe = DateTime.Now.ParaDataHoraString() + "_SEMCHAVE";
                    }

                    SalvarArquivoXml(chCTe + "-" + schema[0] + ".xml", conteudo);
                }
            }

            #endregion

            return(new RetornoCteDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta));

            #endregion
        }