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