protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { if (retornoWebservice.NumeroRps < 1) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Número da NFSe não informado para a consulta." }); return; } var loteBuilder = new StringBuilder(); loteBuilder.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); loteBuilder.Append("<ConsultarNfseRpsEnvio xmlns=\"http://www.issnetonline.com.br/webserviceabrasf/vsd/servico_consultar_nfse_rps_envio.xsd\">" + "xmlns:tc=\"http://www.issnetonline.com.br/webserviceabrasf/vsd/tipos_complexos.xsd\">"); loteBuilder.Append("<IdentificacaoRps>"); loteBuilder.Append($"<tc:Numero>{retornoWebservice.NumeroRps}</tc:Numero>"); loteBuilder.Append($"<tc:Serie>{retornoWebservice.Serie}</tc:Serie>"); loteBuilder.Append($"<tc:Tipo>{(int)retornoWebservice.Tipo + 1}</tc:Tipo>"); loteBuilder.Append("</IdentificacaoRps>"); loteBuilder.Append("<Prestador>"); loteBuilder.Append($"<tc:CpfCnpj><tc:Cnpj>{Configuracoes.PrestadorPadrao.CpfCnpj.ZeroFill(14)}</tc:Cnpj></tc:CpfCnpj>"); loteBuilder.Append($"<tc:InscricaoMunicipal>{Configuracoes.PrestadorPadrao.InscricaoMunicipal}</tc:InscricaoMunicipal>"); loteBuilder.Append("</Prestador>"); loteBuilder.Append("</ConsultarNfseRpsEnvio>"); retornoWebservice.XmlEnvio = loteBuilder.ToString(); }
protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { if (retornoWebservice.NumeroRps < 1) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Número da NFSe não informado para a consulta." }); return; } var loteBuilder = new StringBuilder(); loteBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); loteBuilder.Append($"<ConsultarNfsePorRpsEnvio {GetNamespace()}>"); loteBuilder.Append("<IdentificacaoRps xmlns=\"\">"); loteBuilder.Append($"<Numero>{retornoWebservice.NumeroRps}</Numero>"); loteBuilder.Append($"<Serie>{retornoWebservice.Serie}</Serie>"); loteBuilder.Append($"<Tipo>{(int)retornoWebservice.Tipo + 1}</Tipo>"); loteBuilder.Append("</IdentificacaoRps>"); loteBuilder.Append("<Prestador xmlns=\"\">"); loteBuilder.Append($"<Cnpj>{Configuracoes.PrestadorPadrao.CpfCnpj.ZeroFill(14)}</Cnpj>"); loteBuilder.Append($"<InscricaoMunicipal>{Configuracoes.PrestadorPadrao.InscricaoMunicipal}</InscricaoMunicipal>"); loteBuilder.Append("</Prestador>"); loteBuilder.Append("</ConsultarNfsePorRpsEnvio>"); retornoWebservice.XmlEnvio = loteBuilder.ToString(); }
protected override void TratarRetornoConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { // Analisa mensagem de retorno var xmlRet = XDocument.Parse(AjustarRetorno(retornoWebservice.XmlRetorno)); MensagemErro(retornoWebservice, xmlRet.Root, "Listamensagemretorno", "tcMensagemRetorno"); if (retornoWebservice.Erros.Any()) { return; } 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; } // Carrega a nota fiscal na coleção de Notas Fiscais var nota = LoadXml(compNfse.AsString()); notas.Add(nota); retornoWebservice.Nota = nota; retornoWebservice.Sucesso = true; }
protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { if (retornoWebservice.NumeroRps < 1) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Número da RPS não informado para a consulta." }); return; } var loteBuilder = new StringBuilder(); loteBuilder.Append($"<nfse:ConsultarNfseRpsEnvio xmlns:nfse=\"http://nfse.abrasf.org.br\">"); loteBuilder.Append("<IdentificacaoRps>"); loteBuilder.Append($"<Numero>{retornoWebservice.NumeroRps}</Numero>"); loteBuilder.Append($"<Serie>{retornoWebservice.Serie}</Serie>"); loteBuilder.Append($"<Tipo>{(int)retornoWebservice.Tipo + 1}</Tipo>"); loteBuilder.Append("</IdentificacaoRps>"); loteBuilder.Append("<Prestador>"); loteBuilder.Append("<CpfCnpj>"); loteBuilder.Append(Configuracoes.PrestadorPadrao.CpfCnpj.IsCNPJ() ? $"<Cnpj>{Configuracoes.PrestadorPadrao.CpfCnpj.ZeroFill(14)}</Cnpj>" : $"<Cpf>{Configuracoes.PrestadorPadrao.CpfCnpj.ZeroFill(11)}</Cpf>"); loteBuilder.Append("</CpfCnpj>"); loteBuilder.Append("</Prestador>"); loteBuilder.Append("</nfse:ConsultarNfseRpsEnvio>"); retornoWebservice.XmlEnvio = loteBuilder.ToString(); }
protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { if (retornoWebservice.NumeroRps < 1) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Número do RPS/NFSe não informado para a consulta." }); return; } retornoWebservice.XmlEnvio = ConsultarRPSNFSe(retornoWebservice.NumeroRps, retornoWebservice.Serie, 0); }
protected override void TratarRetornoConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { // Analisa mensagem de retorno var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno); MensagemErro(retornoWebservice, xmlRet, ConsultarNfseRpsResposta); if (retornoWebservice.Erros.Any()) { return; } var compNfse = xmlRet.ElementAnyNs(ConsultarNfseRpsResposta)?.ElementAnyNs("CompNfse"); if (compNfse == null) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Nota Fiscal não encontrada! (CompNfse)" }); return; } var nfse = compNfse.ElementAnyNs("Nfse").ElementAnyNs("InfNfse"); var numeroNFSe = nfse.ElementAnyNs("Numero")?.GetValue <string>() ?? string.Empty; var chaveNFSe = nfse.ElementAnyNs("CodigoVerificacao")?.GetValue <string>() ?? string.Empty; var dataNFSe = nfse.ElementAnyNs("DataEmissao")?.GetValue <DateTime>() ?? DateTime.Now; var numeroRps = nfse.ElementAnyNs("DeclaracaoPrestacaoServico")? .ElementAnyNs("IdentificacaoRps")? .ElementAnyNs("Numero").GetValue <string>() ?? string.Empty; GravarNFSeEmDisco(compNfse.AsString(true), $"NFSe-{numeroNFSe}-{chaveNFSe}-.xml", dataNFSe); // Carrega a nota fiscal na coleção de Notas Fiscais var nota = notas.FirstOrDefault(x => x.IdentificacaoRps.Numero == numeroRps); if (nota == null) { nota = notas.Load(compNfse.ToString()); } else { nota.IdentificacaoNFSe.Numero = numeroNFSe; nota.IdentificacaoNFSe.Chave = chaveNFSe; nota.IdentificacaoNFSe.DataEmissao = dataNFSe; } retornoWebservice.Nota = nota; }
protected override void TratarRetornoConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { // Analisa mensagem de retorno var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno); MensagemErro(retornoWebservice, xmlRet.ElementAnyNs("esConsultarNfsePorRpsResposta"), "mensagemRetorno"); if (retornoWebservice.Erros.Count > 0) { return; } 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; } var nota = new NotaServico(Configuracoes); 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.Nota = nota; retornoWebservice.Sucesso = true; }
protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { 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>{retornoWebservice.NumeroRps}</Numero>"); loteBuilder.Append($"<Serie>{retornoWebservice.Serie}</Serie>"); loteBuilder.Append($"<Tipo>{(int)retornoWebservice.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(); }
protected override void TratarRetornoConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { // Analisa mensagem de retorno var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno); var xmlString = xmlRet.Root.ElementAnyNs("Xml_saida").GetValue <string>(); xmlRet = XDocument.Parse(xmlString); MensagemErro2(retornoWebservice, xmlRet); if (retornoWebservice.Erros.Any()) { return; } var xmlElement = xmlRet.ElementAnyNs("Info"); var listaNfse = xmlElement.ElementAnyNs("Lista_Notas"); if (listaNfse == null) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Nota Fiscal não encontrada! (Nota)" }); return; } var notasServico = new List <NotaServico>(); foreach (var compNfse in listaNfse.ElementsAnyNs("Nota")) { // Carrega a nota fiscal na coleção de Notas Fiscais var nota = LoadXml(compNfse.AsString()); notas.Add(nota); notasServico.Add(nota); } retornoWebservice.Nota = notasServico.FirstOrDefault(); retornoWebservice.Sucesso = true; }
protected override void TratarRetornoConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno); MensagemErro(retornoWebservice, xmlRet, "RetornoConsulta"); if (retornoWebservice.Erros.Any()) { return; } retornoWebservice.Sucesso = xmlRet.Root?.ElementAnyNs("Cabecalho")?.ElementAnyNs("Sucesso")?.GetValue <bool>() ?? false; if (!retornoWebservice.Sucesso) { return; } var notasServico = xmlRet.Root.ElementsAnyNs("NFe").Select(nfse => LoadXml(nfse.ToString())).ToList(); retornoWebservice.Nota = notasServico[0]; notasServico.AddRange(notasServico); }
protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { if (retornoWebservice.NumeroRps < 1) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Número do RPS não informado para a consulta." }); return; } if (retornoWebservice.MesCompetencia <= 0 || retornoWebservice.MesCompetencia >= 13) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Você deve informar o mês de competência." }); return; } if (retornoWebservice.AnoCompetencia <= 2000 || retornoWebservice.AnoCompetencia > DateTime.Now.Year) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Você deve informar o ano de competência." }); return; } // Monta mensagem de envio var loteBuilder = new StringBuilder(); loteBuilder.Append($"<Competencia_Mes>{retornoWebservice.MesCompetencia.ZeroFill(2)}</Competencia_Mes>"); loteBuilder.Append($"<Competencia_Ano>{retornoWebservice.AnoCompetencia}</Competencia_Ano>"); loteBuilder.Append($"<RPS_Serie>{retornoWebservice.Serie}</RPS_Serie>"); loteBuilder.Append($"<RPS_Numero>{retornoWebservice.NumeroRps}</RPS_Numero>"); loteBuilder.Append($"<Nota_Serie></Nota_Serie>"); loteBuilder.Append($"<Nota_Numero></Nota_Numero>"); retornoWebservice.XmlEnvio = loteBuilder.ToString(); }
protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas) { if (retornoWebservice.NumeroRps < 1) { retornoWebservice.Erros.Add(new Evento { Codigo = "0", Descricao = "Número do RPS/NFSe não informado para a consulta." }); return; } 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>{retornoWebservice.NumeroRps}</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(); }
protected override void AssinarConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice) { }
protected override void AssinarConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice) { //Não precisa assinar. }
protected override void AssinarConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice) { retornoWebservice.XmlEnvio = XmlSigning.AssinarXml(retornoWebservice.XmlEnvio, "p1:PedidoConsultaNFe", "", Certificado); }