diff --git a/NFe.Servicos/ServicosNFe.cs b/NFe.Servicos/ServicosNFe.cs
index e7094b240..286a2bf86 100644
--- a/NFe.Servicos/ServicosNFe.cs
+++ b/NFe.Servicos/ServicosNFe.cs
@@ -289,21 +289,6 @@ public RetornoNfeInutilizacao NfeInutilizacao(string cnpj, int ano, ModeloDocume
{
var versaoServico = ServicoNFe.NfeInutilizacao.VersaoServicoParaString(_cFgServico.VersaoNfeInutilizacao);
- #region Cria o objeto wdsl para consulta
-
- var ws = CriarServico(ServicoNFe.NfeInutilizacao);
-
- if (_cFgServico.VersaoNfeStatusServico != VersaoServico.Versao400)
- {
- ws.nfeCabecMsg = new nfeCabecMsg
- {
- cUF = _cFgServico.cUF,
- versaoDados = versaoServico
- };
- }
-
- #endregion
-
#region Cria o objeto inutNFe
var pedInutilizacao = new inutNFe
@@ -328,18 +313,47 @@ public RetornoNfeInutilizacao NfeInutilizacao(string cnpj, int ano, ModeloDocume
pedInutilizacao.infInut.serie.ToString().PadLeft(3, '0'),
pedInutilizacao.infInut.nNFIni.ToString().PadLeft(9, '0'),
pedInutilizacao.infInut.nNFFin.ToString().PadLeft(9, '0'));
+
pedInutilizacao.infInut.Id = "ID" + numId;
pedInutilizacao.Assina(_certificado, _cFgServico.Certificado.SignatureMethodSignedXml, _cFgServico.Certificado.DigestMethodReference, _cFgServico.RemoverAcentos);
#endregion
+ return NfeInutilizacao(pedInutilizacao);
+ }
+
+ ///
+ /// Inutilizar uma faíxa de números já assinado.
+ ///
+ ///
+ ///
+ public RetornoNfeInutilizacao NfeInutilizacao(inutNFe pedInutilizacao)
+ {
+ var versaoServico = ServicoNFe.NfeInutilizacao.VersaoServicoParaString(_cFgServico.VersaoNfeInutilizacao);
+
+ #region Cria o objeto wdsl para consulta
+
+ var ws = CriarServico(ServicoNFe.NfeInutilizacao);
+
+ if (_cFgServico.VersaoNfeStatusServico != VersaoServico.Versao400)
+ {
+ ws.nfeCabecMsg = new nfeCabecMsg
+ {
+ cUF = _cFgServico.cUF,
+ versaoDados = versaoServico
+ };
+ }
+
+ #endregion
+
#region Valida, Envia os dados e obtém a resposta
var xmlInutilizacao = _cFgServico.RemoverAcentos
? pedInutilizacao.ObterXmlString().RemoverAcentos()
: pedInutilizacao.ObterXmlString();
+ var numId = pedInutilizacao.infInut.Id.Replace("ID", "");
SalvarArquivoXml(numId + "-ped-inu.xml", xmlInutilizacao);
if (_cFgServico.ValidarSchemas)
@@ -378,7 +392,7 @@ public RetornoNfeInutilizacao NfeInutilizacao(string cnpj, int ano, ModeloDocume
/// Tipo de serviço do evento: valores válidos: RecepcaoEventoCancelmento, RecepcaoEventoCartaCorrecao, RecepcaoEventoEpec e RecepcaoEventoManifestacaoDestinatario
/// Versão do serviço para o evento
/// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
- private RetornoRecepcaoEvento RecepcaoEvento(int idlote, List eventos, ServicoNFe servicoEvento, VersaoServico versaoEvento)
+ private RetornoRecepcaoEvento RecepcaoEvento(int idlote, List eventos, ServicoNFe servicoEvento, VersaoServico versaoEvento, bool assinar)
{
var listaEventos = new List
{
@@ -419,11 +433,14 @@ private RetornoRecepcaoEvento RecepcaoEvento(int idlote, List eventos, S
evento = eventos
};
- foreach (var evento in eventos)
+ if (assinar)
{
- evento.infEvento.Id = "ID" + ((int)evento.infEvento.tpEvento) + evento.infEvento.chNFe +
- evento.infEvento.nSeqEvento.ToString().PadLeft(2, '0');
- evento.Assina(_certificado, _cFgServico.Certificado.SignatureMethodSignedXml, _cFgServico.Certificado.DigestMethodReference, _cFgServico.RemoverAcentos);
+ foreach (var evento in eventos)
+ {
+ evento.infEvento.Id = "ID" + ((int)evento.infEvento.tpEvento) + evento.infEvento.chNFe +
+ evento.infEvento.nSeqEvento.ToString().PadLeft(2, '0');
+ evento.Assina(_certificado, _cFgServico.Certificado.SignatureMethodSignedXml, _cFgServico.Certificado.DigestMethodReference, _cFgServico.RemoverAcentos);
+ }
}
#endregion
@@ -496,6 +513,18 @@ public RetornoRecepcaoEvento RecepcaoEventoCancelamento(int idlote, int sequenci
protocoloAutorizacao, chaveNFe, justificativa, cpfcnpj, dhEvento: dhEvento);
}
+ ///
+ /// Envia eventos do tipo "Cancelamento" já assinado.
+ ///
+ ///
+ ///
+ ///
+ public RetornoRecepcaoEvento RecepcaoEventoCancelamento(int idlote, List eventos)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoCancelmento, _cFgServico.VersaoRecepcaoEventoCceCancelamento, false);
+ return retorno;
+ }
+
///
/// Envia um evento do tipo "Cancelamento por substituição"
///
@@ -549,7 +578,7 @@ private RetornoRecepcaoEvento RecepcaoEventoCancelamento(NFeTipoEvento tipoEvent
var evento = new evento { versao = versaoServico, infEvento = infEvento };
- var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoCancelmento, _cFgServico.VersaoRecepcaoEventoCceCancelamento);
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoCancelmento, _cFgServico.VersaoRecepcaoEventoCceCancelamento, true);
return retorno;
}
@@ -597,7 +626,19 @@ public RetornoRecepcaoEvento RecepcaoEventoCartaCorrecao(int idlote, int sequenc
var evento = new evento { versao = versaoServico, infEvento = infEvento };
- var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoCartaCorrecao, _cFgServico.VersaoRecepcaoEventoCceCancelamento);
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoCartaCorrecao, _cFgServico.VersaoRecepcaoEventoCceCancelamento, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Carta de correção" já assinado.
+ ///
+ ///
+ ///
+ ///
+ public RetornoRecepcaoEvento RecepcaoEventoCartaCorrecao(int idlote, List eventos)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoCartaCorrecao, _cFgServico.VersaoRecepcaoEventoCceCancelamento, false);
return retorno;
}
@@ -633,7 +674,7 @@ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoDestinatario(int idlote,
{
var infEvento = new infEventoEnv
{
- cOrgao = Estado.AN,
+ cOrgao = Estado.AN,
tpAmb = _cFgServico.tpAmb,
chNFe = chaveNFe,
dhEvento = dhEvento ?? DateTime.Now,
@@ -652,7 +693,7 @@ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoDestinatario(int idlote,
var retorno = RecepcaoEvento(idlote, eventos,
- ServicoNFe.RecepcaoEventoManifestacaoDestinatario, _cFgServico.VersaoRecepcaoEventoManifestacaoDestinatario);
+ ServicoNFe.RecepcaoEventoManifestacaoDestinatario, _cFgServico.VersaoRecepcaoEventoManifestacaoDestinatario, true);
return retorno;
}
@@ -711,7 +752,21 @@ public RetornoRecepcaoEvento RecepcaoEventoEpec(int idlote, int sequenciaEvento,
var evento = new evento { versao = versaoServico, infEvento = infEvento };
- var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoEpec, _cFgServico.VersaoRecepcaoEventoEpec);
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoEpec, _cFgServico.VersaoRecepcaoEventoEpec, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "EPEC" já assinado
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoEpec(int idlote, List eventos)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoCartaCorrecao, _cFgServico.VersaoRecepcaoEventoCceCancelamento, false);
return retorno;
}
@@ -1028,9 +1083,9 @@ public RetornoNfeRecepcao NfeRecepcao(int idLote, List nFes)
SalvarArquivoXml(idLote + "-env-lot.xml", xmlEnvio);
- if (_cFgServico.ValidarSchemas)
+ if (_cFgServico.ValidarSchemas)
Validador.Valida(ServicoNFe.NfeRecepcao, _cFgServico.VersaoNfeRecepcao, xmlEnvio, cfgServico: _cFgServico);
-
+
var dadosEnvio = new XmlDocument();
dadosEnvio.LoadXml(xmlEnvio);
@@ -1507,6 +1562,6 @@ public void Dispose()
Dispose(false);
}
- #endregion
- }
+ #endregion
+ }
}