public override RetornoWebservice ConsultaNFSe(DateTime?inicio, DateTime?fim, string numeroNfse, int pagina, string cnpjTomador, string imTomador, string nomeInter, string cnpjInter, string imInter, string serie, NotaFiscalCollection notas) { var retornoWebservice = new RetornoWebservice(); var loteBuilder = new StringBuilder(); loteBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); loteBuilder.Append("<WS_ConsultaNfse.Execute xmlns:fiss=\"FISS-LEX\">"); loteBuilder.Append("<fiss:Consultarnfseenvio>"); loteBuilder.Append("<Prestador>"); loteBuilder.Append($"<Cnpj>{Configuracoes.PrestadorPadrao.CpfCnpj.ZeroFill(14)}</Cnpj>"); loteBuilder.Append($"<InscricaoMunicipal>{Configuracoes.PrestadorPadrao.InscricaoMunicipal}</InscricaoMunicipal>"); loteBuilder.Append("</Prestador>"); if (!numeroNfse.IsEmpty()) { loteBuilder.Append($"<NumeroNfse>{numeroNfse}</NumeroNfse>"); } if (inicio.HasValue && fim.HasValue) { loteBuilder.Append("<PeriodoEmissao>"); loteBuilder.Append($"<DataInicial>{inicio:yyyy-MM-dd}</DataInicial>"); loteBuilder.Append($"<DataFinal>{fim:yyyy-MM-dd}</DataFinal>"); loteBuilder.Append("</PeriodoEmissao>"); } if (!cnpjTomador.IsEmpty() || !imTomador.IsEmpty()) { loteBuilder.Append("<Tomador>"); loteBuilder.Append("<CpfCnpj>"); loteBuilder.Append(cnpjTomador.IsCNPJ() ? $"<Cnpj>{cnpjTomador.ZeroFill(14)}</Cnpj>" : $"<Cpf>{cnpjTomador.ZeroFill(11)}</Cpf>"); loteBuilder.Append("</CpfCnpj>"); if (!imTomador.IsEmpty()) { loteBuilder.Append($"<InscricaoMunicipal>{imTomador}</InscricaoMunicipal>"); } loteBuilder.Append("</Tomador>"); } if (!nomeInter.IsEmpty() && !cnpjInter.IsEmpty()) { loteBuilder.Append("<IntermediarioServico>"); loteBuilder.Append($"<RazaoSocial>{nomeInter}</RazaoSocial>"); loteBuilder.Append(cnpjInter.IsCNPJ() ? $"<Cnpj>{cnpjInter.ZeroFill(14)}</Cnpj>" : $"<Cpf>{cnpjInter.ZeroFill(11)}</Cpf>"); loteBuilder.Append("</CpfCnpj>"); if (!imInter.IsEmpty()) { loteBuilder.Append($"<InscricaoMunicipal>{imInter}</InscricaoMunicipal>"); } loteBuilder.Append("</IntermediarioServico>"); } loteBuilder.Append("</fiss:Consultarnfseenvio>"); loteBuilder.Append("</WS_ConsultaNfse.Execute>"); retornoWebservice.XmlEnvio = loteBuilder.ToString(); if (Configuracoes.Geral.RetirarAcentos) { retornoWebservice.XmlEnvio = retornoWebservice.XmlEnvio.RemoveAccent(); } GravarArquivoEmDisco(retornoWebservice.XmlEnvio, $"ConNota-{DateTime.Now:yyyyMMddssfff}-{numeroNfse}-env.xml"); // Verifica Schema ValidarSchema(retornoWebservice, GetSchema(TipoUrl.ConsultaNFSe)); if (retornoWebservice.Erros.Any()) { return(retornoWebservice); } // Recebe mensagem de retorno try { using (var cliente = GetClient(TipoUrl.ConsultaNFSe)) { retornoWebservice.XmlRetorno = cliente.ConsultarNFSe(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, $"ConNota-{DateTime.Now:yyyyMMddssfff}-{numeroNfse}-ret.xml"); // Analisa mensagem de retorno var xmlRet = XDocument.Parse(AjustarRetorno(retornoWebservice.XmlRetorno)); MensagemErro(retornoWebservice, xmlRet, "WS_ConsultaNfse.ExecuteResponse", "Listamensagemretorno", "tcMensagemRetorno"); if (retornoWebservice.Erros.Count > 0) { return(retornoWebservice); } var retornoLote = xmlRet.ElementAnyNs("WS_ConsultaNfse.ExecuteResponse").ElementAnyNs("Consultarnfseresposta"); var listaNfse = retornoLote?.ElementAnyNs("ListaNfse"); if (listaNfse == null) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Lista de NFSe não encontrada! (ListaNfse)" }); return(retornoWebservice); } foreach (var compNfse in listaNfse.ElementsAnyNs("CompNfse")) { // Carrega a nota fiscal na coleção de Notas Fiscais var nota = LoadXml(compNfse.AsString()); notas.Add(nota); } retornoWebservice.Sucesso = true; return(retornoWebservice); }
public override RetornoWebservice ConsultarLoteRps(int lote, string protocolo, NotaFiscalCollection notas) { var retornoWebservice = new RetornoWebservice(); retornoWebservice.XmlEnvio = new StringBuilder() .Append($"<es:esConsultarLoteRpsEnvio 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 esConsultarLoteRpsEnvio_v01.xsd\">") .Append("<prestador>") .Append($"<cnpj>{ Configuracoes.PrestadorPadrao.CpfCnpj }</cnpj>") .Append($"<idEntidade>{ Municipio.IdEntidade }</idEntidade>") .Append("</prestador>") .Append($"<nrLoteRps>{ lote }</nrLoteRps>") .Append("</es:esConsultarLoteRpsEnvio>") .ToString(); if (Configuracoes.Geral.RetirarAcentos) { retornoWebservice.XmlEnvio = retornoWebservice.XmlEnvio.RemoveAccent(); } retornoWebservice.XmlEnvio = XmlSigning.AssinarXml(retornoWebservice.XmlEnvio, "es:esConsultarLoteRpsEnvio", "", Certificado); retornoWebservice.XmlEnvio = new StringBuilder() .Append("<esConsultarLoteNfse xmlns=\"http://services.enfsws.es\">") .Append("<nrVersaoXml>1</nrVersaoXml>") .Append("<xml>") .AppendEnvio(retornoWebservice.XmlEnvio) .Append("</xml>") .Append("</esConsultarLoteNfse>") .ToString(); GravarArquivoEmDisco(retornoWebservice.XmlEnvio, $"ConsultarLote-{DateTime.Now:yyyyMMddssfff}-{""}-env.xml"); // Verifica Schema ValidarSchema(retornoWebservice, "esConsultarLoteRpsEnvio_v01.xsd"); if (retornoWebservice.Erros.Any()) { return(retornoWebservice); } // Recebe mensagem de retorno try { using (var cliente = GetClient(TipoUrl.ConsultarSituacao)) { retornoWebservice.XmlRetorno = cliente.ConsultarLoteRps(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, $"ConsultarLoteRps-{DateTime.Now:yyyyMMddssfff}-{lote}-ret.xml"); retornoWebservice.XmlRetorno = retornoWebservice.XmlRetorno .Replace("<ns:esConsultarLoteRpsResponse xmlns:ns=\"http://services.enfsws.es\">", "") .Replace("<ns:return>", "") .Replace("</ns:return>", "") .Replace("</ns:esConsultarLoteRpsResponse>", ""); // Analisa mensagem de retorno var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno); var rootElement = xmlRet.ElementAnyNs("esConsultarLoteRpsResposta"); MensagemErro(retornoWebservice, rootElement, "mensagemRetorno"); if (retornoWebservice.Erros.Count > 0) { return(retornoWebservice); } var elementRoot = xmlRet.ElementAnyNs("esConsultarLoteRpsResposta"); var listaNfse = elementRoot.ElementAnyNs("listaNfse"); if (listaNfse == null) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Lista de NFSe não encontrada! (listaNfse)" }); return(retornoWebservice); } foreach (var nfse in listaNfse.ElementsAnyNs("nfse")) { 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; 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("<?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); 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"); // 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 override RetornoWebservice ConsultaNFSe(DateTime?inicio, DateTime?fim, string numeroNfse, int pagina, string cnpjPrestador, string imPrestador, string nomeInter, string cnpjInter, string imInter, string serie, NotaFiscalCollection notas) { var retornoWebservice = new RetornoWebservice(); var xml = new StringBuilder() .Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") .Append("<es:esConsultarNfseEnvio 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("<prestador>") .Append($"<cnpj>{ Configuracoes.PrestadorPadrao.CpfCnpj }</cnpj>") .Append($"<idEntidade>{ Municipio.IdEntidade }</idEntidade>") .Append("</prestador>"); if (!numeroNfse.IsEmpty()) { xml = xml.Append($"<nrNfse>{ numeroNfse }</nrNfse>"); } else { if (inicio == null || fim == null) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Data de início ou fim não informada para a consulta." }); return(retornoWebservice); } xml = xml .Append("<periodoEmissao>") .Append($"<dtInicial>{inicio.Value:yyyy'-'MM'-'dd'T'HH':'mm':'ss}</dtInicial>") .Append($"<dtFinal>{fim.Value:yyyy'-'MM'-'dd'T'HH':'mm':'ss}</dtFinal>") .Append("</periodoEmissao>"); } xml = xml.Append("</es:esConsultarNfseEnvio>"); retornoWebservice.XmlEnvio = xml.ToString();; if (Configuracoes.Geral.RetirarAcentos) { retornoWebservice.XmlEnvio = retornoWebservice.XmlEnvio.RemoveAccent(); } var xmlAssinado = XmlSigning.AssinarXml(retornoWebservice.XmlEnvio, "es:esConsultarNfseEnvio", "", Certificado); retornoWebservice.XmlEnvio = new StringBuilder() .Append("<esConsultarNfse xmlns=\"http://services.enfsws.es\">") .Append("<nrVersaoXml>1</nrVersaoXml>") .Append("<xml>") .AppendEnvio(xmlAssinado) .Append("</xml>") .Append("</esConsultarNfse>") .ToString(); GravarArquivoEmDisco(retornoWebservice.XmlEnvio, $"ConNota-env.xml"); // Verifica Schema ValidarSchema(retornoWebservice, "esConsultarNfseEnvio_v01.xsd"); if (retornoWebservice.Erros.Any()) { return(retornoWebservice); } // Recebe mensagem de retorno try { using (var cliente = GetClient(TipoUrl.ConsultaNFSe)) { retornoWebservice.XmlRetorno = cliente.ConsultarNFSe(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-ret.xml"); retornoWebservice.XmlRetorno = retornoWebservice.XmlRetorno .Replace("<ns:esConsultarNfseResponse xmlns:ns=\"http://services.enfsws.es\">", "") .Replace("<ns:return>", "") .Replace("</ns:return>", "") .Replace("</ns:esConsultarNfseResponse>", ""); // Analisa mensagem de retorno var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno); MensagemErro(retornoWebservice, xmlRet.ElementAnyNs("esConsultarNfseResposta"), "mensagemRetorno"); if (retornoWebservice.Erros.Count > 0) { return(retornoWebservice); } var elementRoot = xmlRet.ElementAnyNs("esConsultarNfseResposta"); var listaNfse = elementRoot.ElementAnyNs("listaNfse"); if (listaNfse == null) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Lista de NFSe não encontrada! (listaNfse)" }); return(retornoWebservice); } foreach (var nfse in listaNfse.ElementsAnyNs("nfse")) { 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); }