diff --git a/src/OpenAC.Net.NFSe/Providers/IPM/ProviderIPM.cs b/src/OpenAC.Net.NFSe/Providers/IPM/ProviderIPM.cs
index 9e135e65..589c51bd 100644
--- a/src/OpenAC.Net.NFSe/Providers/IPM/ProviderIPM.cs
+++ b/src/OpenAC.Net.NFSe/Providers/IPM/ProviderIPM.cs
@@ -62,8 +62,19 @@ protected override IServiceClient GetClient(TipoUrl tipo)
return new IPMServiceClient(this, tipo);
}
- private string GetTipoTomadorIPM(int tipoTomador)
+ private string GetTipoTomadorIPM(int tipoTomador, string cpfCnpj)
{
+ if (tipoTomador == 0)
+ {
+ if (string.IsNullOrEmpty(cpfCnpj))
+ return "F";
+
+ if (cpfCnpj.Length == 14)
+ {
+ return "J";
+ }
+ return "F";
+ }
if (tipoTomador == TipoTomador.Sigiss.PessoaFisica)
{
//F para Pessoa Física
@@ -109,7 +120,7 @@ public override string WriteXmlRps(NotaServico nota, bool identado = true, bool
//TOMADOR
var tomadorTag = new XElement("tomador");
- tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "tipo", 1, 14, Ocorrencia.Obrigatoria, GetTipoTomadorIPM(nota.Tomador.Tipo)));
+ tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "tipo", 1, 14, Ocorrencia.Obrigatoria, GetTipoTomadorIPM(nota.Tomador.Tipo, nota.Tomador.CpfCnpj.OnlyNumbers())));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "cpfcnpj", 1, 14, Ocorrencia.Obrigatoria, nota.Tomador.CpfCnpj.OnlyNumbers()));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "ie", 1, 20, Ocorrencia.Obrigatoria, nota.Tomador.InscricaoEstadual.OnlyNumbers()));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "nome_razao_social", 1, 115, Ocorrencia.Obrigatoria, nota.Tomador.RazaoSocial));
@@ -120,7 +131,7 @@ public override string WriteXmlRps(NotaServico nota, bool identado = true, bool
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "complemento", 1, 120, Ocorrencia.Obrigatoria, nota.Tomador.Endereco.Complemento));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "ponto_referencia", 1, 120, Ocorrencia.Obrigatoria, ""));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "bairro", 1, 120, Ocorrencia.Obrigatoria, nota.Tomador.Endereco.Bairro));
- tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "cidade", 1, 120, Ocorrencia.Obrigatoria, nota.Tomador.Endereco.Municipio));
+ tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "cidade", 1, 120, Ocorrencia.Obrigatoria, nota.Tomador.Endereco.CodigoMunicipio));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "cep", 1, 120, Ocorrencia.Obrigatoria, nota.Tomador.Endereco.Cep));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "ddd_fone_comercial", 1, 120, Ocorrencia.Obrigatoria, nota.Tomador.DadosContato.DDD));
tomadorTag.AddChild(AdicionarTag(TipoCampo.Str, "", "fone_comercial", 1, 120, Ocorrencia.Obrigatoria, nota.Tomador.DadosContato.Telefone));
@@ -167,16 +178,22 @@ protected override void PrepararEnviarSincrono(RetornoEnviar retornoWebservice,
retornoWebservice.XmlEnvio = xmlRps;
}
- protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas)
+ protected override void PrepararConsultarLoteRps(RetornoConsultarLoteRps retornoWebservice)
{
var message = new StringBuilder();
- message.Append("");
- message.Append($"{retornoWebservice.NumeroRps}");
- message.Append($"{retornoWebservice.Serie}");
- message.Append("");
+ message.Append("");
+ message.Append("");
+ message.Append($"{retornoWebservice.Protocolo}");
+ message.Append("");
+ message.Append("");
retornoWebservice.XmlEnvio = message.ToString();
}
+ protected override void PrepararConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas)
+ {
+ throw new NotImplementedException();
+ }
+
protected override void PrepararCancelarNFSe(RetornoCancelar retornoWebservice)
{
var message = new StringBuilder();
@@ -195,33 +212,37 @@ protected override bool PrecisaValidarSchema(TipoUrl tipo)
protected override void TratarRetornoEnviarSincrono(RetornoEnviar retornoWebservice, NotaServicoCollection notas)
{
- var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno);
-
- retornoWebservice.Data = xmlRet.Root?.ElementAnyNs("data_emissao")?.GetValue(new CultureInfo("pt-BR")) ?? DateTime.MinValue;
- retornoWebservice.Protocolo = xmlRet.Root?.ElementAnyNs("codigo")?.GetValue() ?? string.Empty;
- retornoWebservice.Sucesso = !retornoWebservice.Protocolo.IsEmpty();
-
- if (!retornoWebservice.Sucesso) return;
-
- var numeroNFSe = xmlRet.Root.ElementAnyNs("numero_nf")?.GetValue() ?? string.Empty;
- var chaveNFSe = xmlRet.Root.ElementAnyNs("codigo")?.GetValue() ?? string.Empty;
- var dataNFSe = xmlRet.Root.ElementAnyNs("data_emissao")?.GetValue(new CultureInfo("pt-BR")) ?? DateTime.Now;
- var numeroRps = xmlRet.Root.ElementAnyNs("rps")?.GetValue() ?? string.Empty;
-
- GravarNFSeEmDisco(xmlRet.AsString(true), $"NFSe-{numeroNFSe}-{chaveNFSe}-.xml", dataNFSe);
-
- var nota = notas.FirstOrDefault(x => x.IdentificacaoRps.Numero == numeroRps);
- if (nota == null)
+ try
{
- notas.Load(retornoWebservice.XmlRetorno);
- }
- else
- {
- nota.IdentificacaoNFSe.DataEmissao = dataNFSe;
- nota.IdentificacaoNFSe.Numero = numeroNFSe;
- nota.IdentificacaoNFSe.Chave = chaveNFSe;
- nota.XmlOriginal = retornoWebservice.XmlRetorno;
+ var xmlRet = XDocument.Parse(retornoWebservice.XmlRetorno);
+
+ retornoWebservice.Data = xmlRet.Root?.ElementAnyNs("data_emissao")?.GetValue(new CultureInfo("pt-BR")) ?? DateTime.MinValue;
+ retornoWebservice.Protocolo = xmlRet.Root?.ElementAnyNs("codigo")?.GetValue() ?? string.Empty;
+ retornoWebservice.Sucesso = !retornoWebservice.Protocolo.IsEmpty();
+
+ if (!retornoWebservice.Sucesso) return;
+
+ var numeroNFSe = xmlRet.Root.ElementAnyNs("numero_nf")?.GetValue() ?? string.Empty;
+ var chaveNFSe = xmlRet.Root.ElementAnyNs("codigo")?.GetValue() ?? string.Empty;
+ var dataNFSe = xmlRet.Root.ElementAnyNs("data_emissao")?.GetValue(new CultureInfo("pt-BR")) ?? DateTime.Now;
+ var numeroRps = xmlRet.Root.ElementAnyNs("rps")?.GetValue() ?? string.Empty;
+
+ GravarNFSeEmDisco(xmlRet.AsString(true), $"NFSe-{numeroNFSe}-{chaveNFSe}-.xml", dataNFSe);
+
+ var nota = notas.FirstOrDefault(x => x.IdentificacaoRps.Numero == numeroRps);
+ if (nota == null)
+ {
+ notas.Load(retornoWebservice.XmlRetorno);
+ }
+ else
+ {
+ nota.IdentificacaoNFSe.DataEmissao = dataNFSe;
+ nota.IdentificacaoNFSe.Numero = numeroNFSe;
+ nota.IdentificacaoNFSe.Chave = chaveNFSe;
+ nota.XmlOriginal = retornoWebservice.XmlRetorno;
+ }
}
+ catch { }
}
protected override void TratarRetornoConsultarNFSeRps(RetornoConsultarNFSeRps retornoWebservice, NotaServicoCollection notas)
@@ -354,120 +375,53 @@ protected override void AssinarEnviarSincrono(RetornoEnviar retornoWebservice)
#region Não implementados
- public override string WriteXmlNFSe(NotaServico nota, bool identado = true, bool showDeclaration = true)
- {
- throw new NotImplementedException();
- }
+ public override string WriteXmlNFSe(NotaServico nota, bool identado = true, bool showDeclaration = true) => throw new NotImplementedException();
- protected override void PrepararEnviar(RetornoEnviar retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void PrepararEnviar(RetornoEnviar retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override void PrepararConsultarSituacao(RetornoConsultarSituacao retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void PrepararConsultarSituacao(RetornoConsultarSituacao retornoWebservice) => throw new NotImplementedException();
- protected override void PrepararConsultarLoteRps(RetornoConsultarLoteRps retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void PrepararConsultarSequencialRps(RetornoConsultarSequencialRps retornoWebservice) => throw new NotImplementedException();
- protected override void PrepararConsultarSequencialRps(RetornoConsultarSequencialRps retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void PrepararConsultarNFSe(RetornoConsultarNFSe retornoWebservice) => throw new NotImplementedException();
- protected override void PrepararConsultarNFSe(RetornoConsultarNFSe retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void PrepararCancelarNFSeLote(RetornoCancelarNFSeLote retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override void PrepararCancelarNFSeLote(RetornoCancelarNFSeLote retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void PrepararSubstituirNFSe(RetornoSubstituirNFSe retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override void PrepararSubstituirNFSe(RetornoSubstituirNFSe retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void AssinarEnviar(RetornoEnviar retornoWebservice) => throw new NotImplementedException();
- protected override void AssinarEnviar(RetornoEnviar retornoWebservice)
- {
- throw new NotImplementedException();
- }
-
- protected override void AssinarConsultarSituacao(RetornoConsultarSituacao retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void AssinarConsultarSituacao(RetornoConsultarSituacao retornoWebservice) => throw new NotImplementedException();
protected override void AssinarConsultarLoteRps(RetornoConsultarLoteRps retornoWebservice)
{
- throw new NotImplementedException();
+ //NAO PRECISA ASSINAR A CONSULTA
+ return;
}
- protected override void AssinarConsultarSequencialRps(RetornoConsultarSequencialRps retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void AssinarConsultarSequencialRps(RetornoConsultarSequencialRps retornoWebservice) => throw new NotImplementedException();
- protected override void AssinarConsultarNFSe(RetornoConsultarNFSe retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void AssinarConsultarNFSe(RetornoConsultarNFSe retornoWebservice) => throw new NotImplementedException();
- protected override void AssinarCancelarNFSeLote(RetornoCancelarNFSeLote retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void AssinarCancelarNFSeLote(RetornoCancelarNFSeLote retornoWebservice) => throw new NotImplementedException();
- protected override void AssinarSubstituirNFSe(RetornoSubstituirNFSe retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void AssinarSubstituirNFSe(RetornoSubstituirNFSe retornoWebservice) => throw new NotImplementedException();
- protected override void TratarRetornoEnviar(RetornoEnviar retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void TratarRetornoEnviar(RetornoEnviar retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override void TratarRetornoConsultarSituacao(RetornoConsultarSituacao retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void TratarRetornoConsultarSituacao(RetornoConsultarSituacao retornoWebservice) => throw new NotImplementedException();
- protected override void TratarRetornoConsultarLoteRps(RetornoConsultarLoteRps retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void TratarRetornoConsultarLoteRps(RetornoConsultarLoteRps retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override void TratarRetornoConsultarSequencialRps(RetornoConsultarSequencialRps retornoWebservice)
- {
- throw new NotImplementedException();
- }
+ protected override void TratarRetornoConsultarSequencialRps(RetornoConsultarSequencialRps retornoWebservice) => throw new NotImplementedException();
- protected override void TratarRetornoConsultarNFSe(RetornoConsultarNFSe retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void TratarRetornoConsultarNFSe(RetornoConsultarNFSe retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override void TratarRetornoCancelarNFSeLote(RetornoCancelarNFSeLote retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void TratarRetornoCancelarNFSeLote(RetornoCancelarNFSeLote retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override void TratarRetornoSubstituirNFSe(RetornoSubstituirNFSe retornoWebservice, NotaServicoCollection notas)
- {
- throw new NotImplementedException();
- }
+ protected override void TratarRetornoSubstituirNFSe(RetornoSubstituirNFSe retornoWebservice, NotaServicoCollection notas) => throw new NotImplementedException();
- protected override string GetSchema(TipoUrl tipo)
- {
- throw new NotImplementedException();
- }
+ protected override string GetSchema(TipoUrl tipo) => throw new NotImplementedException();
#endregion Não implementados
}