From d8fc3a7bfc3934c1a315db14c2f0d992701196b2 Mon Sep 17 00:00:00 2001 From: JohnVanderson Date: Fri, 24 Apr 2026 15:05:20 -0300 Subject: [PATCH 1/3] feat(rtc): adicionar 7 schemas XSD da NT 2025.002-RTC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Schemas copiados byte-a-byte de ZeusAutomacao/DFe.NET@cfe8d802 (tag 2026.04.20.1711) em NFe.AppTeste/Schemas/: - e110001_v1.00.xsd (Cancelamento de Evento RTC) - e112110_v1.00.xsd (Pagamento integral) - e112120_v1.00.xsd (ALC/ZFM não convertida) - e112130_v1.00.xsd (Perecimento transporte fornecedor) - e112140_v1.00.xsd (Fornecimento não realizado) - e112150_v1.00.xsd (Data previsão entrega) - e211120_v1.00.xsd (Consumo pessoal NF-e Importação) Necessários para validação em runtime pelo Validador ao emitir eventos RTC da NF-e (autoria Emitente, modelo 55). Ref: nfe/dfetech-product-invoice-api#8 Co-Authored-By: Claude Opus 4.7 (1M context) --- NFe.AppTeste/NFe.AppTeste.csproj | 28 ++++++ NFe.AppTeste/Schemas/e110001_v1.00.xsd | 75 +++++++++++++++ NFe.AppTeste/Schemas/e112110_v1.00.xsd | 69 ++++++++++++++ NFe.AppTeste/Schemas/e112120_v1.00.xsd | 107 +++++++++++++++++++++ NFe.AppTeste/Schemas/e112130_v1.00.xsd | 119 ++++++++++++++++++++++++ NFe.AppTeste/Schemas/e112140_v1.00.xsd | 107 +++++++++++++++++++++ NFe.AppTeste/Schemas/e112150_v1.00.xsd | 63 +++++++++++++ NFe.AppTeste/Schemas/e211120_v1.00.xsd | 124 +++++++++++++++++++++++++ 8 files changed, 692 insertions(+) create mode 100644 NFe.AppTeste/Schemas/e110001_v1.00.xsd create mode 100644 NFe.AppTeste/Schemas/e112110_v1.00.xsd create mode 100644 NFe.AppTeste/Schemas/e112120_v1.00.xsd create mode 100644 NFe.AppTeste/Schemas/e112130_v1.00.xsd create mode 100644 NFe.AppTeste/Schemas/e112140_v1.00.xsd create mode 100644 NFe.AppTeste/Schemas/e112150_v1.00.xsd create mode 100644 NFe.AppTeste/Schemas/e211120_v1.00.xsd diff --git a/NFe.AppTeste/NFe.AppTeste.csproj b/NFe.AppTeste/NFe.AppTeste.csproj index d2ab7762c..807a42747 100644 --- a/NFe.AppTeste/NFe.AppTeste.csproj +++ b/NFe.AppTeste/NFe.AppTeste.csproj @@ -216,6 +216,10 @@ Designer Always + + Designer + Always + Designer Always @@ -244,6 +248,26 @@ Designer Always + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + + + Designer + Always + Designer Always @@ -260,6 +284,10 @@ Designer Always + + Designer + Always + Designer Always diff --git a/NFe.AppTeste/Schemas/e110001_v1.00.xsd b/NFe.AppTeste/Schemas/e110001_v1.00.xsd new file mode 100644 index 000000000..caa326693 --- /dev/null +++ b/NFe.AppTeste/Schemas/e110001_v1.00.xsd @@ -0,0 +1,75 @@ + + + + + + + Informações do Cancelamento de evento + + + + + + Informar “Cancelamento de Evento" + + + + + + + + + + Código do Órgão Autor do Evento. Informar o Código da UF para este Evento. + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Código do evento autorizado a ser cancelado + + + + + + + + + + + + + + + + + + + + + + + + + Informar o número do Protocolo de Autorização do Evento a ser cancelado + + + + + + Versão do leiaute do evento + + + + + + + + + + + diff --git a/NFe.AppTeste/Schemas/e112110_v1.00.xsd b/NFe.AppTeste/Schemas/e112110_v1.00.xsd new file mode 100644 index 000000000..01ea2c5de --- /dev/null +++ b/NFe.AppTeste/Schemas/e112110_v1.00.xsd @@ -0,0 +1,69 @@ + + + + + + + Informações do Evento de Informação de efetivo pagamento integral para liberar crédito presumido do adquirente + + + + + + Descrição do Evento de Informação de efetivo pagamento integral para liberar crédito presumido do adquirente + + + + + + + + + + Código do Órgão Autor do Evento. Informar o Código da UF para este Evento. + + + + + Informar 1=Empresa emitente + Valores: 1=Empresa Emitente, 2=Empresa destinatária; 3=Empresa; 5=Fisco;6=RFB; 9=Outros Órgãos; + + + + + + + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Indicador de efetiva quitação do pagamento integral referente a NFe referenciada. + Valor deve ser igual a "1" + + + + + + + + + + + + Versão do leiaute do evento + + + + + + + + + + + diff --git a/NFe.AppTeste/Schemas/e112120_v1.00.xsd b/NFe.AppTeste/Schemas/e112120_v1.00.xsd new file mode 100644 index 000000000..763f76d70 --- /dev/null +++ b/NFe.AppTeste/Schemas/e112120_v1.00.xsd @@ -0,0 +1,107 @@ + + + + + + + Informações do Evento de Importação em ALC/ZFM não convertida em isenção + + + + + + Descrição do evento: "Importação em ALC/ZFM não convertida em isenção" + + + + + + + + + + Código do Órgão Autor do Evento. Informar o Código da UF para este Evento. + + + + + Informar 1=Empresa emitente + Valores: 1=Empresa Emitente, 2=Empresa destinatária; 3=Empresa; 5=Fisco;6=RFB; 9=Outros Órgãos; + + + + + + + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Informações de itens integrados ao ativo imobilizado + + + + + + Valor do IBS correspondente à quantidade que não atendeu aos requisitos para a conversão em isenção + + + + + Valor do CBS correspondente à quantidade que não atendeu aos requisitos para a conversão em isenção + + + + + + + + Informar a quantidade que não atendeu os requisitos para a conversão em isenção + + + + + Informar a unidade relativa ao campo gConsumo + + + + + + + + + + + + + + + Corresponde ao atributo “nItem” do elemento “det” da NF-e de importação + + + + + + + + Versão do leiaute do evento + + + + + + + + + + + + + + + diff --git a/NFe.AppTeste/Schemas/e112130_v1.00.xsd b/NFe.AppTeste/Schemas/e112130_v1.00.xsd new file mode 100644 index 000000000..9c489f0ed --- /dev/null +++ b/NFe.AppTeste/Schemas/e112130_v1.00.xsd @@ -0,0 +1,119 @@ + + + + + + + Informações do Evento de Perecimento, perda, roubo ou furto durante o transporte contratado pelo fornecedor + + + + + + Descrição do evento: "Perecimento, perda, roubo ou furto durante o transporte contratado pelo fornecedor"" + + + + + + + + + + Código do Órgão Autor do Evento. Informar o Código da UF para este Evento. + + + + + Informar 1=Empresa emitente + Valores: 1=Empresa Emitente, 2=Empresa destinatária; 3=Empresa; 5=Fisco;6=RFB; 9=Outros Órgãos; + + + + + + + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Informações por item da Nota de Fornecimento + + + + + + Valor do IBS na Nota de Fornecimento correspondente à quantidade que foi objeto de roubo, perda, furto ou perecimento. + + + + + Valor da CBS na Nota de Fornecimento correspondente à quantidade que foi objeto de roubo, perda, furto ou perecimento. + + + + + + + + Informar a quantidade que foi objeto de roubo, perda, furto ou perecimento + + + + + Informar a unidade relativa ao campo qPerecimento + + + + + + + + + + + + Valor do crédito IBS referente às aquisições a ser estornado correspondente à quantidade que foi objeto de roubo, perda, furto ou perecimento + + + + + Valor do crédito CBS referente às aquisições a ser estornado correspondente à quantidade que foi objeto de roubo, perda, furto ou perecimento + + + + + + + + + + Corresponde ao atributo “nItem” do elemento “det” da NF-e de importação + + + + + + + + Versão do leiaute do evento + + + + + + + + + + + + + + + diff --git a/NFe.AppTeste/Schemas/e112140_v1.00.xsd b/NFe.AppTeste/Schemas/e112140_v1.00.xsd new file mode 100644 index 000000000..4a7dbf149 --- /dev/null +++ b/NFe.AppTeste/Schemas/e112140_v1.00.xsd @@ -0,0 +1,107 @@ + + + + + + + Informações do Evento de Fornecimento não realizado com pagamento antecipado + + + + + + "Descrição do evento: "Fornecimento não realizado com pagamento antecipado" + + + + + + + + + + Código do Órgão Autor do Evento. Informar o Código da UF para este Evento. + + + + + Informar 1=Empresa emitente + Valores: 1=Empresa Emitente, 2=Empresa destinatária; 3=Empresa; 5=Fisco;6=RFB; 9=Outros Órgãos; + + + + + + + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Informações por item da Nota de Fornecimento + + + + + + Valor do IBS na nota de débito de pagamento antecipado correspondente à quantidade que não foi fornecida + + + + + Valor da CBS na nota de débito de pagamento antecipado correspondente à quantidade que não foi fornecida. + + + + + + + + Informar a quantidade que não foi fornecida e teve o imposto antecipado + + + + + Informar a unidade relativa ao campo qNaoFornecida + + + + + + + + + + + + + + + Corresponde ao atributo “nItem” do elemento “det” da NF-e de importação + + + + + + + + Versão do leiaute do evento + + + + + + + + + + + + + + + diff --git a/NFe.AppTeste/Schemas/e112150_v1.00.xsd b/NFe.AppTeste/Schemas/e112150_v1.00.xsd new file mode 100644 index 000000000..1738ea88a --- /dev/null +++ b/NFe.AppTeste/Schemas/e112150_v1.00.xsd @@ -0,0 +1,63 @@ + + + + + + + Informações do Evento de Atualização da Data de Previsão de Entrega + + + + + + Descrição do evento: "Atualização da Data de Previsão de Entrega" + + + + + + + + + + Código do Órgão Autor do Evento. Informar o Código da UF para este Evento. + + + + + Informar 1=Empresa emitente + Valores: 1=Empresa Emitente, 2=Empresa destinatária; 3=Empresa; 5=Fisco;6=RFB; 9=Outros Órgãos; + + + + + + + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Data da previsão de entrega ou disponibilização do bem. + + + + + + + Versão do leiaute do evento + + + + + + + + + + + diff --git a/NFe.AppTeste/Schemas/e211120_v1.00.xsd b/NFe.AppTeste/Schemas/e211120_v1.00.xsd new file mode 100644 index 000000000..f72fdb085 --- /dev/null +++ b/NFe.AppTeste/Schemas/e211120_v1.00.xsd @@ -0,0 +1,124 @@ + + + + + + + Informações do Evento de Destinação de item para consumo pessoal + + + + + + Descrição do Evento de Destinação de item para consumo pessoal + + + + + + + + + + Código do Órgão Autor do Evento. Informar o Código da UF para este Evento. + + + + + Caso NF-e de Importação, informar 1=Empresa Emitente. + Demais casos, informar 2=Empresa destinatária + + + + + + + + + + + + Versão do Aplicativo que recebeu o Evento + + + + + Informações por item da NF-e de Aquisição + + + + + + Valor do IBS na nota de aquisição correspondente à quantidade destinada a uso e consumo pessoal + + + + + Valor da CBS na nota de aquisição correspondente à quantidade destinada a uso e consumo pessoal + + + + + + + + Informar a quantidade para consumo de pessoa física + + + + + Informar a unidade relativa ao campo gConsumo + + + + + + + + + + + + + + + + + Informar a chave da nota (NFe ou NFCe) emitida para o fornecimento nos casos em que a legislação obriga a emissão de documento fiscal. + + + + + Corresponde ao atributo “nItem” do elemento “det” do documento referenciado + + + + + + + + + Corresponde ao atributo “nItem” do elemento “det” da NF-e de importação + + + + + + + + Versão do leiaute do evento + + + + + + + + + + + + + + + From 2857e5ddc9b42d1e266f7cb1d48eff4b932992c9 Mon Sep 17 00:00:00 2001 From: JohnVanderson Date: Fri, 24 Apr 2026 16:06:24 -0300 Subject: [PATCH 2/3] feat(rtc): adicionar campo dPrevEntrega em detEvento MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adiciona propriedade nullable `dPrevEntrega` + proxy string `ProxydPrevEntrega` na classe detEvento, usada pelo evento RTC 112150 (Atualização da Data de Previsão de Entrega) para transportar a data no formato "AAAA-MM-DD" conforme NT 2025.002-RTC. Estrutura idêntica ao upstream ZeusAutomacao/DFe.NET@cfe8d802: - `[XmlIgnore] DateTime? dPrevEntrega` - `[XmlElement("dPrevEntrega")] string ProxydPrevEntrega` com serialização via `ParaDataString()` (já existente em DFe.Utils, suprime tag quando null). Ref: nfe/dfetech-product-invoice-api#8 Co-Authored-By: Claude Opus 4.7 (1M context) --- NFe.Classes/Servicos/Evento/detEvento.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/NFe.Classes/Servicos/Evento/detEvento.cs b/NFe.Classes/Servicos/Evento/detEvento.cs index d4ea1f8d6..cac724a97 100644 --- a/NFe.Classes/Servicos/Evento/detEvento.cs +++ b/NFe.Classes/Servicos/Evento/detEvento.cs @@ -421,6 +421,26 @@ public bool ShouldSerializecMotivo() #endregion + #region Atualização da Data de Previsão de Entrega + + /// + /// P23 - Data da previsão de entrega ou disponibilização do bem. Formato: "AAAA-MM-DD". + /// + [XmlIgnore] + public DateTime? dPrevEntrega { get; set; } + + /// + /// Proxy para dPrevEntrega no formato "AAAA-MM-DD" (somente data). + /// + [XmlElement("dPrevEntrega")] + public string ProxydPrevEntrega + { + get => dPrevEntrega.ParaDataString(); + set => dPrevEntrega = DateTime.Parse(value); + } + + #endregion + #endregion } } \ No newline at end of file From b525441975a2b9bdc6fc2978dc1c9e641b961e0b Mon Sep 17 00:00:00 2001 From: JohnVanderson Date: Fri, 24 Apr 2026 16:07:05 -0300 Subject: [PATCH 3/3] =?UTF-8?q?feat(rtc):=20adicionar=20m=C3=A9todo=20do?= =?UTF-8?q?=20evento=20112150=20em=20ServicosNFe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adiciona `RecepcaoEventoAtualizacaoDaDataDePrevisaoDeEntrega` em `ServicosNFe`, completando o suporte aos 7 eventos RTC em escopo da NT 2025.002-RTC (autoria Emitente, NF-e mod.55). Os outros 6 métodos (110001, 112110, 112120, 112130, 112140, 211120) já estavam no fork via cherry-pick anterior (a04a2ee3). Forma portada de ZeusAutomacao/DFe.NET@cfe8d802 adaptada ao padrão assíncrono do fork (`async Task` + `await EnviarEObterRetornoRecepcaoEvento`), seguindo o mesmo template dos 6 métodos RTC irmãos. Também inclui o serviço no array `listaEventos` de `RecepcaoEventoAsync` (entrada assim como os irmãos RTC), para consistência. Zero breaking changes: adição pura de método e entrada em array; nenhuma assinatura pré-existente alterada. Ref: nfe/dfetech-product-invoice-api#8 Co-Authored-By: Claude Opus 4.7 (1M context) --- NFe.Servicos/ServicosNFe.cs | 41 ++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/NFe.Servicos/ServicosNFe.cs b/NFe.Servicos/ServicosNFe.cs index 1cb3848ff..9cdfd7948 100644 --- a/NFe.Servicos/ServicosNFe.cs +++ b/NFe.Servicos/ServicosNFe.cs @@ -678,7 +678,8 @@ public async Task RecepcaoEventoAsync(long idlote, List RecepcaoEventoFornecimentoNaoRealizadoC return retornoRecepcaoEvento; } + /// + /// Serviço destinado à recepção do evento RTC 112150 — Atualização da Data de Previsão de Entrega. + /// Previsto na NT 2025.002-RTC, autoria do Emitente, NF-e modelo 55. + /// + /// Nº do lote + /// sequencia do evento + /// + /// + /// Data da previsão de entrega ou disponibilização do bem (formato "AAAA-MM-DD") + /// + /// + /// + /// + public async Task RecepcaoEventoAtualizacaoDaDataDePrevisaoDeEntrega(int idLote, + int sequenciaEvento, + string cpfCnpj, + string chaveNFe, + DateTime dataPrevistaEntrega, + Estado? ufAutor = null, + string versaoAplicativo = null, + DateTimeOffset? dataHoraEvento = null) + { + const ServicoNFe servicoNfe = ServicoNFe.RecepcaoEventoAtualizacaoDataPrevisaoDeEntrega; + const NFeTipoEvento nfeTipoEvento = NFeTipoEvento.TeNfeAtualizacaoDaDataDePrevisaoDeEntrega; + var versaoServicoRecepcao = _cFgServico.VersaoRecepcaoEventosDeApuracaoDoIbsECbs; + var versaoServicoRecepcaoString = servicoNfe.VersaoServicoParaString(versaoServicoRecepcao); + + var detalhesEvento = ObterDetalhesEvento(versaoServicoRecepcaoString, versaoAplicativo, nfeTipoEvento, ufAutor, TipoAutor.taEmpresaEmitente); + detalhesEvento.dPrevEntrega = dataPrevistaEntrega; + + var informacoesEventoEnv = ObterInformacoesEventoEnv(sequenciaEvento, chaveNFe, cpfCnpj, versaoServicoRecepcaoString, cOrgao: Estado.SVRS, dataHoraEvento, nfeTipoEvento, detalhesEvento); + var evento = ObterEvento(versaoServicoRecepcaoString, informacoesEventoEnv); + + var retornoRecepcaoEvento = await EnviarEObterRetornoRecepcaoEvento(idLote, servicoNfe, deveAssinar: true, evento); + + return retornoRecepcaoEvento; + } + private detEvento ObterDetalhesEvento(string versaoServico, string versaoAplicativo, NFeTipoEvento nfeTipoEvento, Estado? cOrgaoAutor, TipoAutor tipoAutor) { var detEvento = new detEvento