예제 #1
0
 /// <summary>
 /// Consulta a NFSe/RPS que atende os filtros informados.
 ///
 /// Obs.: Nem todos provedores suportam este metodo.
 /// </summary>
 /// <param name="numero">The numero.</param>
 /// <param name="serie">The serie.</param>
 /// <param name="tipo">The tipo.</param>
 /// <returns>RetornoWebservice.</returns>
 /// <exception cref="NotImplementedException"></exception>
 public RetornoWebservice ConsultaNFSeRps(string numero, string serie, TipoRps tipo)
 {
     using (var provider = ProviderManager.GetProvider(Configuracoes))
     {
         return(provider.ConsultaNFSeRps(numero, serie, tipo, NotasFiscais));
     }
 }
예제 #2
0
        /// <summary>
        /// Consulta a NFSe/RPS que atende os filtros informados.
        ///
        /// Obs.: Nem todos provedores suportam este metodo.
        /// </summary>
        /// <param name="numero">The numero.</param>
        /// <param name="serie">The serie.</param>
        /// <param name="tipo">The tipo.</param>
        /// <returns>RetornoWebservice.</returns>
        /// <exception cref="NotImplementedException"></exception>
        public RetornoWebservice ConsultaNFSeRps(string numero, string serie, TipoRps tipo)
        {
            var oldProtocol = ServicePointManager.SecurityProtocol;

            try
            {
                ServicePointManager.SecurityProtocol = protocolType;
                using (var provider = ProviderManager.GetProvider(Configuracoes))
                {
                    return(provider.ConsultaNFSeRps(numero, serie, tipo, NotasFiscais));
                }
            }
            catch (Exception exception)
            {
                this.Log().Error("[ConsultaNFSeRps]", exception);
                throw;
            }
            finally
            {
                ServicePointManager.SecurityProtocol = oldProtocol;
            }
        }
예제 #3
0
 public override RetornoWebservice ConsultaNFSeRps(string numeroRPS, string serieRPS, TipoRps tipo, NotaFiscalCollection notas)
 {
     return(ConsultarRpsNfseSP(numeroRPS, serieRPS, "", notas));
 }
        public override RetornoWebservice ConsultaNFSeRps(string numero, string serie, TipoRps tipo, NotaFiscalCollection notas)
        {
            var retornoWebservice = new RetornoWebservice();

            if (numero.IsEmpty())
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = "Número da NFSe não informado para a consulta."
                });
                return(retornoWebservice);
            }

            var loteBuilder = new StringBuilder();

            loteBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
            loteBuilder.Append("<WS_ConsultaNfsePorRps.Execute xmlns:fiss=\"FISS-LEX\">");
            loteBuilder.Append("<fiss:Consultarnfserpsenvio>");
            loteBuilder.Append("<IdentificacaoRps>");
            loteBuilder.Append($"<Numero>{numero}</Numero>");
            loteBuilder.Append($"<Serie>{serie}</Serie>");
            loteBuilder.Append($"<Tipo>{(int)tipo + 1}</Tipo>");
            loteBuilder.Append("</IdentificacaoRps>");
            loteBuilder.Append("<Prestador>");
            loteBuilder.Append($"<Cnpj>{Configuracoes.PrestadorPadrao.CpfCnpj.ZeroFill(14)}</Cnpj>");
            loteBuilder.Append($"<InscricaoMunicipal>{Configuracoes.PrestadorPadrao.InscricaoMunicipal}</InscricaoMunicipal>");
            loteBuilder.Append("</Prestador>");
            loteBuilder.Append("</fiss:Consultarnfserpsenvio>");
            loteBuilder.Append("</WS_ConsultaNfsePorRps.Execute>");
            retornoWebservice.XmlEnvio = loteBuilder.ToString();

            if (Configuracoes.Geral.RetirarAcentos)
            {
                retornoWebservice.XmlEnvio = retornoWebservice.XmlEnvio.RemoveAccent();
            }

            GravarArquivoEmDisco(retornoWebservice.XmlEnvio, $"ConNotaRps-{numero}-env.xml");

            // Verifica Schema
            ValidarSchema(retornoWebservice, GetSchema(TipoUrl.ConsultaNFSeRps));
            if (retornoWebservice.Erros.Any())
            {
                return(retornoWebservice);
            }

            // Recebe mensagem de retorno
            try
            {
                using (var cliente = GetClient(TipoUrl.ConsultaNFSeRps))
                {
                    retornoWebservice.XmlRetorno = cliente.ConsultarNFSePorRps(GerarCabecalho(), retornoWebservice.XmlEnvio);
                }
            }
            catch (Exception ex)
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = ex.Message
                });
                return(retornoWebservice);
            }

            GravarArquivoEmDisco(retornoWebservice.XmlRetorno, $"ConNotaRps-{numero}-ret.xml");

            // Analisa mensagem de retorno
            var xmlRet = XDocument.Parse(AjustarRetorno(retornoWebservice.XmlRetorno));

            MensagemErro(retornoWebservice, xmlRet, "WS_ConsultaNfsePorRps.ExecuteResponse", "Listamensagemretorno", "tcMensagemRetorno");
            if (retornoWebservice.Erros.Any())
            {
                return(retornoWebservice);
            }

            var elementRoot = xmlRet.ElementAnyNs("WS_ConsultaNfsePorRps.ExecuteResponse");
            var compNfse    = elementRoot.ElementAnyNs("Consultarnfserpsresposta")?.ElementAnyNs("CompNfse");

            if (compNfse == null)
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = "Nota Fiscal não encontrada! (CompNfse)"
                });
                return(retornoWebservice);
            }

            // Carrega a nota fiscal na coleção de Notas Fiscais
            var nota = LoadXml(compNfse.AsString());

            notas.Add(nota);

            retornoWebservice.Sucesso = true;
            return(retornoWebservice);
        }
 public virtual RetornoWebservice ConsultaNFSeRps(string numero, string serie, TipoRps tipo, NotaFiscalCollection notas)
 {
     throw new NotImplementedException("Função não implementada/suportada neste Provedor !");
 }
예제 #6
0
        public override RetornoWebservice ConsultaNFSeRps(string numero, string serie, TipoRps tipo, NotaFiscalCollection notas)
        {
            var retornoWebservice = new RetornoWebservice();

            if (numero.IsEmpty())
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = "Número do RPS/NFSe não informado para a consulta."
                });
                return(retornoWebservice);
            }

            retornoWebservice.XmlEnvio = new StringBuilder()
                                         .Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
                                         .Append("<es:esConsultarNfsePorRpsEnvio xmlns:es=\"http://www.equiplano.com.br/esnfs\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.equiplano.com.br/enfs esConsultarNfsePorRpsEnvio_v01.xsd\">")
                                         .Append("<rps>")
                                         .Append($"<nrRps>{numero}</nrRps>")
                                         .Append($"<nrEmissorRps>{Configuracoes.PrestadorPadrao.NumeroEmissorRps}</nrEmissorRps>")
                                         .Append("</rps>")
                                         .Append("<prestador>")
                                         .Append($"<cnpj>{Configuracoes.PrestadorPadrao.CpfCnpj}</cnpj>")
                                         .Append($"<idEntidade>{Municipio.IdEntidade}</idEntidade>")
                                         .Append("</prestador>")
                                         .Append("</es:esConsultarNfsePorRpsEnvio>")
                                         .ToString();

            if (Configuracoes.Geral.RetirarAcentos)
            {
                retornoWebservice.XmlEnvio = retornoWebservice.XmlEnvio.RemoveAccent();
            }

            retornoWebservice.XmlEnvio = XmlSigning.AssinarXml(retornoWebservice.XmlEnvio, "es:esConsultarNfsePorRpsEnvio", "", Certificado);

            retornoWebservice.XmlEnvio = new StringBuilder()
                                         .Append("<esConsultarNfsePorRps xmlns=\"http://services.enfsws.es\">")
                                         .Append("<nrVersaoXml>1</nrVersaoXml>")
                                         .Append("<xml>")
                                         .AppendEnvio(retornoWebservice.XmlEnvio)
                                         .Append("</xml>")
                                         .Append("</esConsultarNfsePorRps>")
                                         .ToString();

            GravarArquivoEmDisco(retornoWebservice.XmlEnvio, $"ConNotaRps-{ numero }-env.xml");

            // Verifica Schema
            ValidarSchema(retornoWebservice, "esConsultarNfsePorRpsEnvio_v01.xsd");
            if (retornoWebservice.Erros.Any())
            {
                return(retornoWebservice);
            }

            // Recebe mensagem de retorno
            try
            {
                using (var cliente = GetClient(TipoUrl.ConsultaNFSeRps))
                {
                    retornoWebservice.XmlRetorno = cliente.ConsultarNFSePorRps(null, retornoWebservice.XmlEnvio);
                    retornoWebservice.XmlRetorno = retornoWebservice.XmlRetorno.AjustarString();
                }
            }
            catch (Exception ex)
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = ex.Message
                });
                return(retornoWebservice);
            }

            GravarArquivoEmDisco(retornoWebservice.XmlRetorno, $"ConNotaRps-{ numero }-ret.xml");

            retornoWebservice.XmlRetorno = retornoWebservice.XmlRetorno
                                           .Replace("<ns:esConsultarNfsePorRpsResponse xmlns:ns=\"http://services.enfsws.es\">", "")
                                           .Replace("<ns:return>", "")
                                           .Replace("</ns:return>", "")
                                           .Replace("</ns:esConsultarNfsePorRpsResponse>", "");

            // Analisa mensagem de retorno
            var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno);

            MensagemErro(retornoWebservice, xmlRet.ElementAnyNs("esConsultarNfsePorRpsResposta"), "mensagemRetorno");
            if (retornoWebservice.Erros.Count > 0)
            {
                return(retornoWebservice);
            }

            var elementRoot = xmlRet.ElementAnyNs("esConsultarNfsePorRpsResposta");

            var nfse = elementRoot.ElementAnyNs("nfse");

            if (nfse == null)
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = "Nota Fiscal não encontrada! (nfse)"
                });
                return(retornoWebservice);
            }

            var nota = new NotaFiscal();

            nota.IdentificacaoNFSe.Chave       = nfse?.ElementAnyNs("cdAutenticacao")?.GetValue <string>() ?? string.Empty;
            nota.IdentificacaoNFSe.Numero      = nfse?.ElementAnyNs("nrNfse")?.GetValue <string>() ?? string.Empty;
            nota.IdentificacaoRps.Numero       = nfse?.ElementAnyNs("nrRps")?.GetValue <string>() ?? string.Empty;
            nota.IdentificacaoNFSe.DataEmissao = nfse.ElementAnyNs("dtEmissaoNfs")?.GetValue <DateTime>() ?? DateTime.MinValue;
            nota.Situacao = SituacaoNFSeRps.Normal;

            var infoCancelamento = nfse.ElementAnyNs("cancelamento");

            if (infoCancelamento != null)
            {
                nota.Cancelamento.DataHora           = infoCancelamento.ElementAnyNs("dtCancelamento")?.GetValue <DateTime>() ?? DateTime.MinValue;
                nota.Cancelamento.MotivoCancelamento = infoCancelamento?.ElementAnyNs("dsCancelamento")?.GetValue <string>() ?? string.Empty;
                nota.Situacao = SituacaoNFSeRps.Cancelado;
            }

            notas.Add(nota);

            retornoWebservice.Sucesso = true;

            return(retornoWebservice);
        }
예제 #7
0
        public override RetornoWebservice ConsultaNFSeRps(string numero, string serie, TipoRps tipo, NotaFiscalCollection notas)
        {
            var retornoWebservice = new RetornoWebservice();

            if (numero.IsEmpty())
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = "Número da NFSe não informado para a consulta."
                });
                return(retornoWebservice);
            }

            var loteBuilder = new StringBuilder();

            loteBuilder.Append($"<ConsultarNfseRpsEnvio xmlns=\"http://www.issnetonline.com.br/webserviceabrasf/vsd/servico_consultar_nfse_rps_envio.xsd\">");
            loteBuilder.Append("<IdentificacaoRps>");
            loteBuilder.Append($"<Numero>{numero}</Numero>");
            loteBuilder.Append($"<Serie>{serie}</Serie>");
            loteBuilder.Append($"<Tipo>{(int)tipo + 1}</Tipo>");
            loteBuilder.Append("</IdentificacaoRps>");
            loteBuilder.Append("<Prestador>");
            loteBuilder.Append($"<CpfCnpj><Cnpj>{Configuracoes.PrestadorPadrao.CpfCnpj.ZeroFill(14)}</Cnpj></CpfCnpj>");
            loteBuilder.Append($"<InscricaoMunicipal>{Configuracoes.PrestadorPadrao.InscricaoMunicipal}</InscricaoMunicipal>");
            loteBuilder.Append("</Prestador>");
            loteBuilder.Append("</ConsultarNfseRpsEnvio>");
            retornoWebservice.XmlEnvio = loteBuilder.ToString();

            XNamespace tc      = "http://www.issnetonline.com.br/webserviceabrasf/vsd/tipos_complexos.xsd";
            var        element = XElement.Parse(retornoWebservice.XmlEnvio);

            element.AddAttribute(new XAttribute(XNamespace.Xmlns + "tc", "http://www.issnetonline.com.br/webserviceabrasf/vsd/tipos_complexos.xsd"));
            ApplyNamespace(element, tc, "ConsultarNfseRpsEnvio", "IdentificacaoRps", "Prestador");

            retornoWebservice.XmlEnvio = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + element.ToString();

            if (Configuracoes.Geral.RetirarAcentos)
            {
                retornoWebservice.XmlEnvio = retornoWebservice.XmlEnvio.RemoveAccent();
            }

            GravarArquivoEmDisco(retornoWebservice.XmlEnvio, $"ConNotaRps-{numero}-env.xml");

            // Verifica Schema
            ValidarSchema(retornoWebservice, GetSchema(TipoUrl.ConsultaNFSeRps));
            if (retornoWebservice.Erros.Any())
            {
                return(retornoWebservice);
            }

            // Recebe mensagem de retorno
            try
            {
                using (var cliente = GetClient(TipoUrl.ConsultaNFSeRps))
                {
                    retornoWebservice.XmlRetorno      = cliente.ConsultarNFSePorRps(GerarCabecalho(), retornoWebservice.XmlEnvio);
                    retornoWebservice.EnvelopeEnvio   = cliente.EnvelopeEnvio;
                    retornoWebservice.EnvelopeRetorno = cliente.EnvelopeRetorno;
                }
            }
            catch (Exception ex)
            {
                retornoWebservice.Erros.Add(new Evento {
                    Codigo = "0", Descricao = ex.Message
                });
                return(retornoWebservice);
            }
            GravarArquivoEmDisco(retornoWebservice.XmlRetorno, $"ConNotaRps-{numero}-ret.xml");
            TratarRetornoConsultaNFSeRps(retornoWebservice, notas);
            return(retornoWebservice);
        }