diff --git a/NFe.AppTeste/MainWindow.xaml b/NFe.AppTeste/MainWindow.xaml
index 2f93f66ee..07bbf8b23 100644
--- a/NFe.AppTeste/MainWindow.xaml
+++ b/NFe.AppTeste/MainWindow.xaml
@@ -998,6 +998,38 @@
Margin="375,260,0,0" VerticalAlignment="Top" Width="177" Click="BtnPerecimentoTransporte_Click" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NFe.AppTeste/MainWindow.xaml.cs b/NFe.AppTeste/MainWindow.xaml.cs
index 9d3142926..bdae3e6d3 100644
--- a/NFe.AppTeste/MainWindow.xaml.cs
+++ b/NFe.AppTeste/MainWindow.xaml.cs
@@ -746,6 +746,689 @@ private void BtnPerecimentoTransporte_Click(object sender, RoutedEventArgs e)
}
}
+
+ #region Eventos da Reforma Tributária
+
+ ///
+ /// Solicita os dados comuns a todos os eventos da Reforma Tributária: lote, sequência, chave e autor
+ ///
+ private void LerDadosEventoRtc(string titulo, out int idlote, out int sequenciaEvento, out string chave,
+ out string cpfcnpj)
+ {
+ var idloteStr = Funcoes.InpuBox(this, titulo, "Identificador de controle do Lote de envio:", "1");
+ if (string.IsNullOrEmpty(idloteStr)) throw new Exception("A Id do Lote deve ser informada!");
+
+ var sequenciaEventoStr = Funcoes.InpuBox(this, titulo, "Número sequencial do evento:", "1");
+ if (string.IsNullOrEmpty(sequenciaEventoStr))
+ throw new Exception("O número sequencial deve ser informado!");
+
+ var chaveStr = Funcoes.InpuBox(this, titulo, "Chave da NFe:",
+ "35240311656919000154550750000008281647961399");
+ if (string.IsNullOrEmpty(chaveStr)) throw new Exception("A Chave deve ser informada!");
+ if (chaveStr.Length != 44) throw new Exception("Chave deve conter 44 caracteres!");
+
+ idlote = Convert.ToInt32(idloteStr);
+ sequenciaEvento = Convert.ToInt32(sequenciaEventoStr);
+ chave = chaveStr;
+ cpfcnpj = string.IsNullOrEmpty(_configuracoes.Emitente.CNPJ)
+ ? _configuracoes.Emitente.CPF
+ : _configuracoes.Emitente.CNPJ;
+ }
+
+ private string LerTextoEventoRtc(string titulo, string descricao, string valorPadrao)
+ {
+ var valor = Funcoes.InpuBox(this, titulo, descricao, valorPadrao);
+ if (string.IsNullOrEmpty(valor)) throw new Exception("O campo \"" + descricao + "\" deve ser informado!");
+ return valor;
+ }
+
+ private int LerInteiroEventoRtc(string titulo, string descricao, string valorPadrao)
+ {
+ return Convert.ToInt32(LerTextoEventoRtc(titulo, descricao, valorPadrao));
+ }
+
+ private decimal LerDecimalEventoRtc(string titulo, string descricao, string valorPadrao)
+ {
+ return Convert.ToDecimal(LerTextoEventoRtc(titulo, descricao, valorPadrao));
+ }
+
+ private int LerIndicadorEventoRtc(string titulo, string descricao, string valorPadrao)
+ {
+ var indicador = LerInteiroEventoRtc(titulo, descricao, valorPadrao);
+ if (indicador != 0 && indicador != 1)
+ throw new Exception("O indicador deve ser 0 (Não Aceite) ou 1 (Aceite)!");
+ return indicador;
+ }
+
+ private void BtnEventoCancelamentoEvento_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Cancelamento de Evento";
+
+ try
+ {
+ #region Cancelamento de Evento (110001)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var codigoEvento = LerTextoEventoRtc(titulo, "Código do evento a ser cancelado:", "211130");
+ if (codigoEvento.Length != 6)
+ throw new Exception("O Código do Evento a ser cancelado deve conter 6 caracteres!");
+
+ var tpEventoAut = (NFeTipoEvento)int.Parse(codigoEvento);
+ if (!Enum.IsDefined(typeof(NFeTipoEvento), tpEventoAut))
+ throw new Exception("O Código do Evento a ser cancelado é inválido!");
+
+ var nProtEvento = LerTextoEventoRtc(titulo, "Protocolo de Autorização do Evento a ser cancelado:", "");
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoCancelamentoEvento(idlote, sequenciaEvento, cpfcnpj, chave,
+ tpEventoAut, nProtEvento);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoPagamentoIntegral_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Pagamento Integral Créd. Presumido";
+
+ try
+ {
+ #region Informação de efetivo pagamento integral para liberar crédito presumido do adquirente (112110)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoPagamentoIntegral(idlote, sequenciaEvento, cpfcnpj, chave);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoImportacaoAlcZfm_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Importação ALC/ZFM sem Isenção";
+
+ try
+ {
+ #region Importação em ALC/ZFM não convertida em isenção (112120)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var consumo = new Classes.Servicos.Evento.gConsumo
+ {
+ nItem = LerInteiroEventoRtc(titulo, "Número do item da NFe (nItem):", "1"),
+ vIBS = LerDecimalEventoRtc(titulo, "Valor do IBS do item:", "1"),
+ vCBS = LerDecimalEventoRtc(titulo, "Valor da CBS do item:", "1"),
+ gControleEstoque = new Classes.Servicos.Evento.gControleEstoqueConsumo
+ {
+ qtde = LerDecimalEventoRtc(titulo,
+ "Quantidade que não atendeu aos requisitos para a conversão em isenção:", "1"),
+ unidade = LerTextoEventoRtc(titulo, "Unidade relativa à quantidade:", "UN")
+ }
+ };
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoImportacaoAlcZfm(idlote, sequenciaEvento, cpfcnpj, chave,
+ new List { consumo });
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoFornecimentoNaoRealizado_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Fornecimento Não Realizado";
+
+ try
+ {
+ #region Fornecimento não realizado com pagamento antecipado (112140)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var itemNaoFornecido = new Classes.Servicos.Evento.gItemNaoFornecido
+ {
+ nItem = LerInteiroEventoRtc(titulo, "Número do item da NFe (nItem):", "1"),
+ vIBS = LerDecimalEventoRtc(titulo, "Valor do IBS do item:", "1"),
+ vCBS = LerDecimalEventoRtc(titulo, "Valor da CBS do item:", "1"),
+ gControleEstoque = new Classes.Servicos.Evento.gControleEstoqueItemNaoFornecido
+ {
+ qNaoFornecida = LerDecimalEventoRtc(titulo, "Quantidade que não foi fornecida:", "1"),
+ uNaoFornecida = LerTextoEventoRtc(titulo, "Unidade relativa à quantidade:", "UN")
+ }
+ };
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoFornecimentoNaoRealizado(idlote, sequenciaEvento, cpfcnpj, chave,
+ new List { itemNaoFornecido });
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoApropriacaoCredPresumido_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Apropriação Créd. Presumido";
+
+ try
+ {
+ #region Solicitação de Apropriação de crédito presumido (211110)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var codigoAutor = LerInteiroEventoRtc(titulo,
+ "Autor do evento (1=Empresa Emitente; 2=Empresa Destinatária):", "2");
+ if (codigoAutor != 1 && codigoAutor != 2)
+ throw new Exception("O autor do evento deve ser 1 ou 2!");
+
+ var credPres = new Classes.Servicos.Evento.gCredPresOper
+ {
+ nItem = LerInteiroEventoRtc(titulo, "Número do item da NFe (nItem):", "1"),
+ vBCCredPres = LerDecimalEventoRtc(titulo, "Valor da base de cálculo do item:", "1000"),
+ cCredPres = LerTextoEventoRtc(titulo, "Código de Classificação do Crédito presumido:", "01"),
+ };
+
+ var informaIbs = LerIndicadorEventoRtc(titulo, "Informar crédito presumido do IBS? (0=Não; 1=Sim):", "1");
+ if (informaIbs == 1)
+ credPres.gIBSCredPres = new Classes.Servicos.Evento.gCredPresTributo
+ {
+ pCredPres = LerDecimalEventoRtc(titulo, "Percentual do Crédito Presumido do IBS:", "10"),
+ vCredPres = LerDecimalEventoRtc(titulo, "Valor do Crédito Presumido do IBS:", "100")
+ };
+
+ var informaCbs = LerIndicadorEventoRtc(titulo, "Informar crédito presumido da CBS? (0=Não; 1=Sim):", "1");
+ if (informaCbs == 1)
+ credPres.gCBSCredPres = new Classes.Servicos.Evento.gCredPresTributo
+ {
+ pCredPres = LerDecimalEventoRtc(titulo, "Percentual do Crédito Presumido da CBS:", "10"),
+ vCredPres = LerDecimalEventoRtc(titulo, "Valor do Crédito Presumido da CBS:", "100")
+ };
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoApropriacaoCredPresumido(idlote, sequenciaEvento, cpfcnpj, chave,
+ new List { credPres },
+ (Classes.Servicos.Evento.TipoAutor)codigoAutor);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoPerecimentoTransporteAdquirente_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Perecimento Transp. Adquirente";
+
+ try
+ {
+ #region Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente (211124)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ /* Neste evento o grupo gControleEstoque não possui vIBS/vCBS, por isso não são informados */
+ var perecimento = new Classes.Servicos.Evento.gPerecimento
+ {
+ nItem = LerInteiroEventoRtc(titulo, "Número do item da NFe (nItem):", "1"),
+ vIBS = LerDecimalEventoRtc(titulo, "Valor do IBS do item:", "1"),
+ vCBS = LerDecimalEventoRtc(titulo, "Valor da CBS do item:", "1"),
+ gControleEstoque = new Classes.Servicos.Evento.gControleEstoque
+ {
+ qPerecimento = LerDecimalEventoRtc(titulo,
+ "Quantidade objeto de roubo, perda, furto ou perecimento:", "1"),
+ uPerecimento = LerTextoEventoRtc(titulo, "Unidade relativa à quantidade:", "UN")
+ }
+ };
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoPerecimentoTransporteAdquirente(idlote, sequenciaEvento, cpfcnpj,
+ chave, new List { perecimento });
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoAceiteDebitoNotaCredito_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Aceite Débito Nota de Crédito";
+
+ try
+ {
+ #region Aceite de débito na apuração por emissão de nota de crédito (211128)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var indAceitacao = (Classes.Servicos.Evento.IndicadorAceitacao)LerIndicadorEventoRtc(titulo,
+ "Indicador de aceitação (0=Não Aceite; 1=Aceite):", "1");
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoAceiteDebitoNotaCredito(idlote, sequenciaEvento, cpfcnpj, chave,
+ indAceitacao);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoImobilizacaoItem_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Imobilização de Item";
+
+ try
+ {
+ #region Imobilização de Item (211130)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var imobilizacao = new Classes.Servicos.Evento.gImobilizacao
+ {
+ nItem = LerInteiroEventoRtc(titulo, "Número do item da NFe (nItem):", "1"),
+ vIBS = LerDecimalEventoRtc(titulo, "Valor do IBS relativo à imobilização:", "1"),
+ vCBS = LerDecimalEventoRtc(titulo, "Valor da CBS relativo à imobilização:", "1"),
+ gControleEstoque = new Classes.Servicos.Evento.gControleEstoqueImobilizacao
+ {
+ qImobilizado = LerDecimalEventoRtc(titulo, "Quantidade do item a ser imobilizado:", "1"),
+ uImobilizado = LerTextoEventoRtc(titulo, "Unidade relativa à quantidade:", "UN")
+ }
+ };
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoImobilizacaoItem(idlote, sequenciaEvento, cpfcnpj, chave,
+ new List { imobilizacao });
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoApropriacaoCreditoCombustivel_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Apropriação Créd. Combustível";
+
+ try
+ {
+ #region Solicitação de Apropriação de Crédito de Combustível (211140)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var consumoComb = new Classes.Servicos.Evento.gConsumoComb
+ {
+ nItem = LerInteiroEventoRtc(titulo, "Número do item da NFe (nItem):", "1"),
+ vIBS = LerDecimalEventoRtc(titulo, "Valor do IBS relativo ao consumo de combustível:", "1"),
+ vCBS = LerDecimalEventoRtc(titulo, "Valor da CBS relativo ao consumo de combustível:", "1"),
+ gControleEstoque = new Classes.Servicos.Evento.gControleEstoqueConsumoComb
+ {
+ qComb = LerDecimalEventoRtc(titulo, "Quantidade de consumo do item:", "1"),
+ uComb = LerTextoEventoRtc(titulo, "Unidade relativa à quantidade:", "LT")
+ }
+ };
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoApropriacaoCreditoCombustivel(idlote, sequenciaEvento, cpfcnpj,
+ chave, new List { consumoComb });
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoApropriacaoCreditoBensServicos_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Apropriação Créd. Bens/Serviços";
+
+ try
+ {
+ #region Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente (211150)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var credito = new Classes.Servicos.Evento.gCredito
+ {
+ nItem = LerInteiroEventoRtc(titulo, "Número do item da NFe (nItem):", "1"),
+ vCredIBS = LerDecimalEventoRtc(titulo, "Valor do crédito de IBS a ser apropriado:", "1"),
+ vCredCBS = LerDecimalEventoRtc(titulo, "Valor do crédito de CBS a ser apropriado:", "1")
+ };
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoApropriacaoCreditoBensServicos(idlote, sequenciaEvento, cpfcnpj,
+ chave, new List { credito });
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoManifestacaoTransfCredIBS_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Manif. Transf. Créd. IBS";
+
+ try
+ {
+ #region Manifestação sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão (212110)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var indAceitacao = (Classes.Servicos.Evento.IndicadorAceitacao)LerIndicadorEventoRtc(titulo,
+ "Indicador de aceitação (0=Não Aceite; 1=Aceite):", "1");
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoManifestacaoTransfCredIBS(idlote, sequenciaEvento, cpfcnpj, chave,
+ indAceitacao);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoManifestacaoTransfCredCBS_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Manif. Transf. Créd. CBS";
+
+ try
+ {
+ #region Manifestação sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão (212120)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var indAceitacao = (Classes.Servicos.Evento.IndicadorAceitacao)LerIndicadorEventoRtc(titulo,
+ "Indicador de aceitação (0=Não Aceite; 1=Aceite):", "1");
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoManifestacaoTransfCredCBS(idlote, sequenciaEvento, cpfcnpj, chave,
+ indAceitacao);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoManifestacaoFiscoTransfCredIBS_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Manif. Fisco Transf. Créd. IBS";
+
+ try
+ {
+ #region Manifestação do Fisco sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão (412120)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var indDeferimento = (Classes.Servicos.Evento.IndicadorDeferimento)LerIndicadorEventoRtc(titulo,
+ "Indicador de deferimento (0=Não Aceite; 1=Aceite):", "1");
+
+ var codigoMotivo = LerInteiroEventoRtc(titulo,
+ "Motivo (1=Falta de manifestação de todas as sucessoras; 2=Outros):", "2");
+ if (codigoMotivo != 1 && codigoMotivo != 2)
+ throw new Exception("O motivo deve ser 1 ou 2!");
+
+ var xMotivo = LerTextoEventoRtc(titulo, "Descrição do motivo:", "Motivo da manifestação do fisco");
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBS(idlote, sequenciaEvento, cpfcnpj,
+ chave, indDeferimento, (Classes.Servicos.Evento.MotivoDeferimento)codigoMotivo, xMotivo);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ private void BtnEventoManifestacaoFiscoTransfCredCBS_Click(object sender, RoutedEventArgs e)
+ {
+ const string titulo = "Manif. Fisco Transf. Créd. CBS";
+
+ try
+ {
+ #region Manifestação do Fisco sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão (412130)
+
+ int idlote, sequenciaEvento;
+ string chave, cpfcnpj;
+ LerDadosEventoRtc(titulo, out idlote, out sequenciaEvento, out chave, out cpfcnpj);
+
+ var indDeferimento = (Classes.Servicos.Evento.IndicadorDeferimento)LerIndicadorEventoRtc(titulo,
+ "Indicador de deferimento (0=Não Aceite; 1=Aceite):", "1");
+
+ var codigoMotivo = LerInteiroEventoRtc(titulo,
+ "Motivo (1=Falta de manifestação de todas as sucessoras; 2=Outros):", "2");
+ if (codigoMotivo != 1 && codigoMotivo != 2)
+ throw new Exception("O motivo deve ser 1 ou 2!");
+
+ var xMotivo = LerTextoEventoRtc(titulo, "Descrição do motivo:", "Motivo da manifestação do fisco");
+
+ var servicoNFe = new ServicosNFe(_configuracoes.CfgServico);
+ var retorno = servicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBS(idlote, sequenciaEvento, cpfcnpj,
+ chave, indDeferimento, (Classes.Servicos.Evento.MotivoDeferimento)codigoMotivo, xMotivo);
+
+ TrataRetorno(retorno);
+
+ #endregion
+ }
+ catch (ComunicacaoException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (ValidacaoSchemaException ex)
+ {
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ catch (Exception ex)
+ {
+ if (!string.IsNullOrEmpty(ex.Message))
+ Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
+ }
+ }
+
+ #endregion
+
private void BtnConsultaXml_Click(object sender, RoutedEventArgs e)
{
try
diff --git a/NFe.AppTeste/Schemas/distDFeInt_v1.01.xsd b/NFe.AppTeste/Schemas/distDFeInt_v1.01.xsd
index d66807e9c..89a68ae75 100644
--- a/NFe.AppTeste/Schemas/distDFeInt_v1.01.xsd
+++ b/NFe.AppTeste/Schemas/distDFeInt_v1.01.xsd
@@ -1,84 +1,83 @@
-
-
-
-
-
- Schema de pedido de distribuição de DF-e de interesse
-
-
-
-
-
-
+
+
+
+
+ Schema de pedido de distribuição de DF-e de interesse
+
+
+
+
+
+
Identificação do Ambiente:
1 - Produção
2 - Homologação
-
-
-
-
-
- Código da UF do Autor
-
-
-
-
-
- CNPJ do interessado no DF-e
-
-
-
-
- CPF do interessado no DF-e
-
-
-
-
-
-
- Grupo para distribuir DF-e de interesse
-
-
-
-
-
- Último NSU recebido pelo ator. Caso seja informado com zero, ou com um NSU muito antigo, a consulta retornará unicamente as informações resumidas e documentos fiscais eletrônicos que tenham sido recepcionados pelo Ambiente Nacional nos últimos 3 meses.
-
-
-
-
-
-
-
- Grupo para consultar um DF-e a partir de um NSU específico
-
-
-
-
-
- Número Sequencial Único. Geralmente esta consulta será utilizada quando identificado pelo interessado um NSU faltante. O Web Service retornará o documento ou informará que o NSU não existe no Ambiente Nacional. Assim, esta consulta fechará a lacuna do NSU identificado como faltante.
-
-
-
-
-
-
-
- Grupo para consultar uma NF-e a partir da chave de acesso
-
-
-
-
-
- Chave de acesso da NF-e a ser consultada
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+ Código da UF do Autor
+
+
+
+
+
+ CNPJ do interessado no DF-e
+
+
+
+
+ CPF do interessado no DF-e
+
+
+
+
+
+
+ Grupo para distribuir DF-e de interesse
+
+
+
+
+
+ Último NSU recebido pelo ator. Caso seja informado com zero, ou com um NSU muito antigo, a consulta retornará unicamente as informações resumidas e documentos fiscais eletrônicos que tenham sido recepcionados pelo Ambiente Nacional nos últimos 3 meses.
+
+
+
+
+
+
+
+ Grupo para consultar um DF-e a partir de um NSU específico
+
+
+
+
+
+ Número Sequencial Único. Geralmente esta consulta será utilizada quando identificado pelo interessado um NSU faltante. O Web Service retornará o documento ou informará que o NSU não existe no Ambiente Nacional. Assim, esta consulta fechará a lacuna do NSU identificado como faltante.
+
+
+
+
+
+
+
+ Grupo para consultar uma NF-e a partir da chave de acesso
+
+
+
+
+
+ Chave de acesso da NF-e a ser consultada
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NFe.AppTeste/Schemas/e211110_v1.00.xsd b/NFe.AppTeste/Schemas/e211110_v1.00.xsd
index b89f1cf0e..f486b108c 100644
--- a/NFe.AppTeste/Schemas/e211110_v1.00.xsd
+++ b/NFe.AppTeste/Schemas/e211110_v1.00.xsd
@@ -31,6 +31,7 @@
+
@@ -40,31 +41,31 @@
Versão do Aplicativo que recebeu o Evento
-
+ Informações de crédito presumido por item
-
+ Valor do base de cálculo do item
-
+
+
+ Código de Classificação do Crédito presumido, conforme tabela cCredPres (Anexo IV)
+
+
+
+
+
+
+
+
+
-
-
- Usar tabela Cred Presumido, para o emitente da nota.
-
-
-
-
-
-
-
- Percentual do Crédito Presumido
@@ -78,20 +79,9 @@
-
+
-
-
- Usar tabela Cred Presumido, para o emitente da nota.
-
-
-
-
-
-
-
- Percentual do Crédito Presumido
diff --git a/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd b/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd
index a56621542..a43c7e033 100644
--- a/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd
+++ b/NFe.AppTeste/Schemas/leiauteConsSitNFe_v4.00.xsd
@@ -4,7 +4,6 @@
-
@@ -316,7 +315,7 @@
-
+
diff --git a/NFe.AppTeste/Schemas/leiauteEvento_v1.00.xsd b/NFe.AppTeste/Schemas/leiauteEvento_v1.00.xsd
index bb5ec2b02..1f23ffac0 100644
--- a/NFe.AppTeste/Schemas/leiauteEvento_v1.00.xsd
+++ b/NFe.AppTeste/Schemas/leiauteEvento_v1.00.xsd
@@ -1,4 +1,4 @@
-
+
@@ -91,6 +91,40 @@
+
+
+ Grupo de Informação do Provedor de Assinatura e Autorização
+
+
+
+
+
+ CNPJ do Provedor de Assinatura e Autorização
+
+
+
+
+ Assinatura RSA do Emitente para DFe gerados por PAA
+
+
+
+
+
+ Assinatura digital padrão RSA
+ Converter o atributo Id do DFe para array de bytes e assinar com a chave privada do RSA com algoritmo SHA1 gerando um valor no formato base64.
+
+
+
+
+ Chave Publica no padrão XML RSA Key
+
+
+
+
+
+
+
+
@@ -99,7 +133,7 @@
-
+
@@ -332,48 +366,4 @@
-
-
-
diff --git a/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd b/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd
index 819597c1a..886e05d0f 100644
--- a/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd
+++ b/NFe.AppTeste/Schemas/leiauteInutNFe_v4.00.xsd
@@ -76,7 +76,7 @@
-
+
diff --git a/NFe.AppTeste/Schemas/resEvento_v1.01.xsd b/NFe.AppTeste/Schemas/resEvento_v1.01.xsd
index 3ac45a4d8..40113c758 100644
--- a/NFe.AppTeste/Schemas/resEvento_v1.01.xsd
+++ b/NFe.AppTeste/Schemas/resEvento_v1.01.xsd
@@ -1,94 +1,94 @@
-
-
-
-
-
-
- Schema da estrutura XML gerada pelo Ambiente Nacional com o conjunto de informações resumidas de um evento de NF-e
-
-
-
-
-
- Código do órgão de recepção do Evento. Utilizar a Tabela do IBGE extendida, utilizar 91 para identificar o Ambiente Nacional
-
-
-
-
-
- CNPJ do Emitente
-
-
-
-
- CPF do Emitente
-
-
-
-
-
- Chave de acesso da NF-e
-
-
-
-
- Data e Hora do Evento, formato UTC (AAAA-MM-DDThh:mm:ssTZD, onde TZD = +hh:mm ou -hh:mm)
-
-
-
-
- Tipo do Evento
-
-
-
-
-
-
-
-
-
-
- Seqüencial do evento para o mesmo tipo de evento. Para maioria dos eventos será 1, nos casos em que possa existir mais de um evento, como é o caso da carta de correção, o autor do evento deve numerar de forma seqüencial
-
-
-
-
-
-
-
-
-
-
- Descrição do Evento
-
-
-
-
-
-
-
-
-
-
- Data e hora de autorização do evento no formato AAAA-MM-DDTHH:MM:SSTZD
-
-
-
-
- Número do Protocolo do evento. 1 posição (1 – Secretaria de Fazenda Estadual 2 – Receita Federal); 2 - códiga da UF - 2 posições ano; 10 seqüencial no ano
-
-
-
-
-
-
-
-
- Tipo Versão do leiate resNFe
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+ Schema da estrutura XML gerada pelo Ambiente Nacional com o conjunto de informações resumidas de um evento de NF-e
+
+
+
+
+
+ Código do órgão de recepção do Evento. Utilizar a Tabela do IBGE extendida, utilizar 91 para identificar o Ambiente Nacional
+
+
+
+
+
+
+CNPJ do Emitente
+
+
+
+
+ CPF do Emitente
+
+
+
+
+
+ Chave de acesso da NF-e
+
+
+
+
+ Data e Hora do Evento, formato UTC (AAAA-MM-DDThh:mm:ssTZD, onde TZD = +hh:mm ou -hh:mm)
+
+
+
+
+ Tipo do Evento
+
+
+
+
+
+
+
+
+
+
+ Seqüencial do evento para o mesmo tipo de evento. Para maioria dos eventos será 1, nos casos em que possa existir mais de um evento, como é o caso da carta de correção, o autor do evento deve numerar de forma seqüencial
+
+
+
+
+
+
+
+
+
+
+ Descrição do Evento
+
+
+
+
+
+
+
+
+
+
+ Data e hora de autorização do evento no formato AAAA-MM-DDTHH:MM:SSTZD
+
+
+
+
+ Número do Protocolo do evento. 1 posição (1 – Secretaria de Fazenda Estadual 2 – Receita Federal); 2 - códiga da UF - 2 posições ano; 10 seqüencial no ano
+
+
+
+
+
+
+
+
+ Tipo Versão do leiate resNFe
+
+
+
+
+
+
+
diff --git a/NFe.AppTeste/Schemas/resNFe_v1.01.xsd b/NFe.AppTeste/Schemas/resNFe_v1.01.xsd
index 91d83b0dd..91a9e9e46 100644
--- a/NFe.AppTeste/Schemas/resNFe_v1.01.xsd
+++ b/NFe.AppTeste/Schemas/resNFe_v1.01.xsd
@@ -1,111 +1,110 @@
-
-
-
-
-
-
- Schema da estrutura XML gerada pelo Ambiente Nacional com o conjunto de informações resumidas de uma NF-e
-
-
-
-
-
- Chave de acesso da NF-e
-
-
-
-
-
- CNPJ do Emitente
-
-
-
-
- CPF do Emitente
-
-
-
-
-
- Razão Social ou Nome do emitente
-
-
-
-
-
-
-
-
-
-
- Inscrição Estadual do Emitente
-
-
-
-
- Data e Hora de emissão do Documento Fiscal (AAAA-MM-DDThh:mm:ssTZD) ex.: 2012-09-01T13:00:00-03:00
-
-
-
-
- Tipo do Documento Fiscal (0 - entrada; 1 - saída)
-
-
-
-
-
-
-
-
-
-
-
- Valor Total da NF-e
-
-
-
-
- Digest Value da NF-e processada. Utilizado para conferir a integridade da NF-e original
-
-
-
-
- Data e hora de autorização da NF-e, no formato AAAA-MM-DDTHH:MM:SSTZD
-
-
-
-
- Número do Protocolo de Status da NF-e. 1 posição (1 – Secretaria de Fazenda Estadual 2 – Receita Federal); 2 - códiga da UF - 2 posições ano; 10 seqüencial no ano
-
-
-
-
-
+
+
+
+
+
+ Schema da estrutura XML gerada pelo Ambiente Nacional com o conjunto de informações resumidas de uma NF-e
+
+
+
+
+
+ Chave de acesso da NF-e
+
+
+
+
+
+ CNPJ do Emitente
+
+
+
+
+ CPF do Emitente
+
+
+
+
+
+ Razão Social ou Nome do emitente
+
+
+
+
+
+
+
+
+
+
+ Inscrição Estadual do Emitente
+
+
+
+
+ Data e Hora de emissão do Documento Fiscal (AAAA-MM-DDThh:mm:ssTZD) ex.: 2012-09-01T13:00:00-03:00
+
+
+
+
+ Tipo do Documento Fiscal (0 - entrada; 1 - saída)
+
+
+
+
+
+
+
+
+
+
+
+ Valor Total da NF-e
+
+
+
+
+ Digest Value da NF-e processada. Utilizado para conferir a integridade da NF-e original
+
+
+
+
+ Data e hora de autorização da NF-e, no formato AAAA-MM-DDTHH:MM:SSTZD
+
+
+
+
+ Número do Protocolo de Status da NF-e. 1 posição (1 – Secretaria de Fazenda Estadual 2 – Receita Federal); 2 - códiga da UF - 2 posições ano; 10 seqüencial no ano
+
+
+
+
+
Situação da NF-e
1-Uso autorizado no momento da consulta;
2-Uso denegado;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tipo Versão do leiate resNFe
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tipo Versão do leiate resNFe
+
+
+
+
+
+
+
diff --git a/NFe.AppTeste/Schemas/retDistDFeInt_v1.01.xsd b/NFe.AppTeste/Schemas/retDistDFeInt_v1.01.xsd
index 3c4b8fce6..638e08c18 100644
--- a/NFe.AppTeste/Schemas/retDistDFeInt_v1.01.xsd
+++ b/NFe.AppTeste/Schemas/retDistDFeInt_v1.01.xsd
@@ -1,83 +1,82 @@
-
-
-
-
-
- Schema do resultado do pedido de distribuição de DF-e de interesse
-
-
-
-
-
-
+
+
+
+
+ Schema do resultado do pedido de distribuição de DF-e de interesse
+
+
+
+
+
+
Identificação do Ambiente:
1 - Produção
2 - Homologação
-
-
-
-
-
- Versão do Web Service NFeDistribuicaoDFe
-
-
-
-
- Código do status de processamento da requisição
-
-
-
-
- Descrição literal do status do processamento da requisição
-
-
-
-
- Data e Hora de processamento da requisição no formato AAAA-MM-DDTHH:MM:SSTZD
-
-
-
-
- Último NSU pesquisado no Ambiente Nacional. Se for o caso, o solicitante pode continuar a consulta a partir deste NSU para obter novos resultados.
-
-
-
-
- Maior NSU existente no Ambiente Nacional para o CNPJ/CPF informado
-
-
-
-
- Conjunto de informações resumidas e documentos fiscais eletrônicos de interesse da pessoa ou empresa.
-
-
-
-
-
- Informação resumida ou documento fiscal eletrônico de interesse da pessoa ou empresa. O conteúdo desta tag estará compactado no padrão gZip. O tipo do campo é base64Binary.
-
-
-
-
-
-
- NSU do documento fiscal
-
-
-
-
- Identificação do Schema XML que será utilizado para validar o XML existente no conteúdo da tag docZip. Vai identificar o tipo do documento e sua versão. Exemplos: resNFe_v1.00.xsd, procNFe_v3.10.xsd, resEvento_1.00.xsd, procEventoNFe_v1.00.xsd
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+ Versão do Web Service NFeDistribuicaoDFe
+
+
+
+
+ Código do status de processamento da requisição
+
+
+
+
+ Descrição literal do status do processamento da requisição
+
+
+
+
+ Data e Hora de processamento da requisição no formato AAAA-MM-DDTHH:MM:SSTZD
+
+
+
+
+ Último NSU pesquisado no Ambiente Nacional. Se for o caso, o solicitante pode continuar a consulta a partir deste NSU para obter novos resultados.
+
+
+
+
+ Maior NSU existente no Ambiente Nacional para o CNPJ/CPF informado
+
+
+
+
+ Conjunto de informações resumidas e documentos fiscais eletrônicos de interesse da pessoa ou empresa.
+
+
+
+
+
+ Informação resumida ou documento fiscal eletrônico de interesse da pessoa ou empresa. O conteúdo desta tag estará compactado no padrão gZip. O tipo do campo é base64Binary.
+
+
+
+
+
+
+ NSU do documento fiscal
+
+
+
+
+ Identificação do Schema XML que será utilizado para validar o XML existente no conteúdo da tag docZip. Vai identificar o tipo do documento e sua versão. Exemplos: resNFe_v1.00.xsd, procNFe_v3.10.xsd, resEvento_1.00.xsd, procEventoNFe_v1.00.xsd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NFe.AppTeste/Schemas/tiposBasico_v1.03.xsd b/NFe.AppTeste/Schemas/tiposBasico_v1.03.xsd
index 251f9465d..8b6e23a42 100644
--- a/NFe.AppTeste/Schemas/tiposBasico_v1.03.xsd
+++ b/NFe.AppTeste/Schemas/tiposBasico_v1.03.xsd
@@ -895,4 +895,13 @@ acrescentado:
+
+
+ Tipo que representa uma chave publica padrão RSA
+
+
+
+
+
+
diff --git a/NFe.AppTeste/Schemas/tiposDistDFe_v1.01.xsd b/NFe.AppTeste/Schemas/tiposDistDFe_v1.01.xsd
index 8b0d8a135..12c0015f1 100644
--- a/NFe.AppTeste/Schemas/tiposDistDFe_v1.01.xsd
+++ b/NFe.AppTeste/Schemas/tiposDistDFe_v1.01.xsd
@@ -1,217 +1,216 @@
-
-
-
-
- Tipo número sequencial único
-
-
-
-
-
-
-
- Tipo quantidade de NSU
-
-
-
-
-
-
-
-
- Tipo Versão dos leiautes do Web Service NFeDistribuicaoDFe
-
-
-
-
-
-
-
-
- Tipo Ambiente
-
-
-
-
-
-
-
-
-
- Tipo Código da UF da tabela do IBGE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tipo Código de orgão (UF da tabela do IBGE + 90 RFB)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tipo Número do CNPJ
-
-
-
-
-
-
-
-
-
- Tipo Número do CPF
-
-
-
-
-
-
-
-
-
- Tipo Versão do Aplicativo
-
-
-
-
-
-
-
-
- Tipo Código da Mensagem enviada
-
-
-
-
-
-
-
-
-
- Tipo Motivo
-
-
-
-
-
-
-
-
- Tipo string genérico
-
-
-
-
-
-
-
-
- Tipo Chave da Nota Fiscal Eletrônica
-
-
-
-
-
-
-
-
-
- Tipo Número do Protocolo de Status
-
-
-
-
-
-
-
-
-
- Data e Hora, formato UTC (AAAA-MM-DDThh:mm:ssTZD, onde TZD = +hh:mm ou -hh:mm)
-
-
-
-
-
-
-
-
- Tipo Inscrição Estadual do Emitente // alterado EM 24/10/08 para aceitar ISENTO
-
-
-
-
-
-
-
-
-
- Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+ Tipo número sequencial único
+
+
+
+
+
+
+
+ Tipo quantidade de NSU
+
+
+
+
+
+
+
+
+ Tipo Versão dos leiautes do Web Service NFeDistribuicaoDFe
+
+
+
+
+
+
+
+
+ Tipo Ambiente
+
+
+
+
+
+
+
+
+
+ Tipo Código da UF da tabela do IBGE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tipo Código de orgão (UF da tabela do IBGE + 90 RFB)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tipo Número do CNPJ
+
+
+
+
+
+
+
+
+
+ Tipo Número do CPF
+
+
+
+
+
+
+
+
+
+ Tipo Versão do Aplicativo
+
+
+
+
+
+
+
+
+ Tipo Código da Mensagem enviada
+
+
+
+
+
+
+
+
+
+ Tipo Motivo
+
+
+
+
+
+
+
+
+ Tipo string genérico
+
+
+
+
+
+
+
+
+ Tipo Chave da Nota Fiscal Eletrônica
+
+
+
+
+
+
+
+
+
+ Tipo Número do Protocolo de Status
+
+
+
+
+
+
+
+
+
+ Data e Hora, formato UTC (AAAA-MM-DDThh:mm:ssTZD, onde TZD = +hh:mm ou -hh:mm)
+
+
+
+
+
+
+
+
+ Tipo Inscrição Estadual do Emitente // alterado EM 24/10/08 para aceitar ISENTO
+
+
+
+
+
+
+
+
+
+ Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais
+
+
+
+
+
+
+
diff --git a/NFe.Classes/Servicos/DistribuicaoDFe/Schemas/resEvento.cs b/NFe.Classes/Servicos/DistribuicaoDFe/Schemas/resEvento.cs
index 02503adad..711680958 100644
--- a/NFe.Classes/Servicos/DistribuicaoDFe/Schemas/resEvento.cs
+++ b/NFe.Classes/Servicos/DistribuicaoDFe/Schemas/resEvento.cs
@@ -24,9 +24,9 @@ public class resEvento
public string cOrgao { get; set; }
///
- /// D04 - CNPJ do Emitente
+ /// D04 - CNPJ do Emitente (Alfanumérico apartir da NT2014.002_v1.40 - WsNFeDistribuicaoDFe - julho de 2026)
///
- public ulong CNPJ { get; set; }
+ public string CNPJ { get; set; }
///
/// D05 - CPF do Emitente
diff --git a/NFe.Classes/Servicos/Evento/detEvento.cs b/NFe.Classes/Servicos/Evento/detEvento.cs
index e5902f390..badf84269 100644
--- a/NFe.Classes/Servicos/Evento/detEvento.cs
+++ b/NFe.Classes/Servicos/Evento/detEvento.cs
@@ -4,6 +4,7 @@
using DFe.Classes.Entidades;
using DFe.Utils;
using NFe.Classes.Informacoes.Identificacao.Tipos;
+using NFe.Classes.Servicos.Tipos;
using Shared.NFe.Classes.Servicos.Evento;
namespace NFe.Classes.Servicos.Evento
@@ -137,6 +138,21 @@ public bool ShouldSerializeItensAverbados()
}
#endregion
+ #region Cancelamento de Evento
+
+ ///
+ /// P23 - Código do evento autorizado a ser cancelado. Por este evento poderão ser cancelados todos os
+ /// Eventos previstos na NT 2025.002, exceto o próprio Evento de Cancelamento (110001).
+ ///
+ public NFeTipoEvento? tpEventoAut { get; set; }
+
+ public bool ShouldSerializetpEventoAut()
+ {
+ return tpEventoAut.HasValue;
+ }
+
+ #endregion
+
#region Cancelamento Insucesso/Comprovante de Entrega NFe
///
@@ -297,10 +313,10 @@ public bool ShouldSerializedetPag()
#endregion
- #region Perecimento, perda, roubo ou furto durante o transporte
+ #region Perecimento, perda, roubo ou furto durante o transporte (112130 e 211124)
///
- /// Informações por item da Nota de Fornecimento para o evento 112130.
+ /// Informações por item da Nota de Fornecimento (evento 112130) ou da Nota de Aquisição (evento 211124).
///
[XmlElement("gPerecimento")]
public List gPerecimento { get; set; }
@@ -312,5 +328,158 @@ public bool ShouldSerializegPerecimento()
}
#endregion
+
+ #region Informação de efetivo pagamento integral para liberar crédito presumido do adquirente (112110)
+
+ ///
+ /// P23 - Indicador de efetiva quitação do pagamento integral da operação referente à NF-e referenciada.
+ ///
+ public IndicadorQuitacao? indQuitacao { get; set; }
+
+ public bool ShouldSerializeindQuitacao()
+ {
+ return indQuitacao.HasValue;
+ }
+
+ #endregion
+
+ #region Importação em ALC/ZFM não convertida em isenção (112120)
+
+ ///
+ /// P23 - Informações por item da NF-e de importação.
+ ///
+ [XmlElement("gConsumo")]
+ public List gConsumo { get; set; }
+
+ public bool ShouldSerializegConsumo()
+ {
+ return gConsumo != null &&
+ gConsumo.Count > 0;
+ }
+
+ #endregion
+
+ #region Fornecimento não realizado com pagamento antecipado (112140)
+
+ ///
+ /// P23 - Informações por item da Nota de Pagamento antecipado.
+ ///
+ [XmlElement("gItemNaoFornecido")]
+ public List gItemNaoFornecido { get; set; }
+
+ public bool ShouldSerializegItemNaoFornecido()
+ {
+ return gItemNaoFornecido != null &&
+ gItemNaoFornecido.Count > 0;
+ }
+
+ #endregion
+
+ #region Solicitação de Apropriação de crédito presumido (211110)
+
+ ///
+ /// P23 - Informações de crédito presumido por item.
+ ///
+ [XmlElement("gCredPresOper")]
+ public List gCredPresOper { get; set; }
+
+ public bool ShouldSerializegCredPresOper()
+ {
+ return gCredPresOper != null &&
+ gCredPresOper.Count > 0;
+ }
+
+ #endregion
+
+ #region Aceite de débito na apuração / Manifestação sobre transferência de crédito (211128, 212110 e 212120)
+
+ ///
+ /// P23 - Indicador de concordância/aceitação.
+ ///
+ public IndicadorAceitacao? indAceitacao { get; set; }
+
+ public bool ShouldSerializeindAceitacao()
+ {
+ return indAceitacao.HasValue;
+ }
+
+ #endregion
+
+ #region Imobilização de Item (211130)
+
+ ///
+ /// P23 - Informações de itens integrados ao ativo imobilizado.
+ ///
+ [XmlElement("gImobilizacao")]
+ public List gImobilizacao { get; set; }
+
+ public bool ShouldSerializegImobilizacao()
+ {
+ return gImobilizacao != null &&
+ gImobilizacao.Count > 0;
+ }
+
+ #endregion
+
+ #region Solicitação de Apropriação de Crédito de Combustível (211140)
+
+ ///
+ /// P23 - Informações de consumo de combustíveis.
+ ///
+ [XmlElement("gConsumoComb")]
+ public List gConsumoComb { get; set; }
+
+ public bool ShouldSerializegConsumoComb()
+ {
+ return gConsumoComb != null &&
+ gConsumoComb.Count > 0;
+ }
+
+ #endregion
+
+ #region Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente (211150)
+
+ ///
+ /// P23 - Informações de crédito.
+ ///
+ [XmlElement("gCredito")]
+ public List gCredito { get; set; }
+
+ public bool ShouldSerializegCredito()
+ {
+ return gCredito != null &&
+ gCredito.Count > 0;
+ }
+
+ #endregion
+
+ #region Manifestação do Fisco sobre Pedido de Transferência de Crédito (412120 e 412130)
+
+ ///
+ /// P23 - Indicador de deferimento do valor de transferência para a empresa que emitiu a nota referenciada.
+ ///
+ public IndicadorDeferimento? indDeferimento { get; set; }
+
+ ///
+ /// P24 - Motivo da manifestação do fisco.
+ ///
+ public MotivoDeferimento? cMotivo { get; set; }
+
+ ///
+ /// P25 - Descrição do motivo da manifestação do fisco.
+ ///
+ public string xMotivo { get; set; }
+
+ public bool ShouldSerializeindDeferimento()
+ {
+ return indDeferimento.HasValue;
+ }
+
+ public bool ShouldSerializecMotivo()
+ {
+ return cMotivo.HasValue;
+ }
+
+ #endregion
}
-}
\ No newline at end of file
+}
diff --git a/NFe.Classes/Servicos/Evento/detEventoTipos.cs b/NFe.Classes/Servicos/Evento/detEventoTipos.cs
index 01f952652..0f92a8c76 100644
--- a/NFe.Classes/Servicos/Evento/detEventoTipos.cs
+++ b/NFe.Classes/Servicos/Evento/detEventoTipos.cs
@@ -11,6 +11,7 @@ namespace NFe.Classes.Servicos.Evento
/// 3 - Empresa;
/// 5 - Fisco;
/// 6 - RFB;
+ /// 8 - Empresa Sucessora;
/// 9 - Outros Órgãos.
///
public enum TipoAutor
@@ -50,6 +51,13 @@ public enum TipoAutor
[XmlEnum("6")]
taRFB = 6,
+ ///
+ /// 8 - Empresa Sucessora
+ ///
+ [Description("Empresa Sucessora")]
+ [XmlEnum("8")]
+ taEmpresaSucessora = 8,
+
///
/// 9 - Outros Órgãos
///
@@ -96,4 +104,88 @@ public enum MotivoInsucesso
[XmlEnum("4")]
Outros = 4
}
-}
\ No newline at end of file
+
+ ///
+ /// Indicador de efetiva quitação do pagamento integral da operação referente à NF-e referenciada.
+ /// Nota:
+ /// 1 - Quitado;
+ ///
+ public enum IndicadorQuitacao
+ {
+ ///
+ /// 1 - Quitado
+ ///
+ [Description("Quitado")]
+ [XmlEnum("1")]
+ Quitado = 1
+ }
+
+ ///
+ /// Indicador de aceitação.
+ /// Nota:
+ /// 0 - Não Aceite;
+ /// 1 - Aceite;
+ ///
+ public enum IndicadorAceitacao
+ {
+ ///
+ /// 0 - Não Aceite
+ ///
+ [Description("Não Aceite")]
+ [XmlEnum("0")]
+ NaoAceite = 0,
+
+ ///
+ /// 1 - Aceite
+ ///
+ [Description("Aceite")]
+ [XmlEnum("1")]
+ Aceite = 1
+ }
+
+ ///
+ /// Indicador de deferimento do fisco sobre o pedido de transferência de crédito.
+ /// Nota:
+ /// 0 - Não Aceite;
+ /// 1 - Aceite;
+ ///
+ public enum IndicadorDeferimento
+ {
+ ///
+ /// 0 - Não Aceite
+ ///
+ [Description("Não Aceite")]
+ [XmlEnum("0")]
+ NaoAceite = 0,
+
+ ///
+ /// 1 - Aceite
+ ///
+ [Description("Aceite")]
+ [XmlEnum("1")]
+ Aceite = 1
+ }
+
+ ///
+ /// Motivo da manifestação do fisco sobre o pedido de transferência de crédito.
+ /// Nota:
+ /// 1 - Falta de manifestação de todas as sucessoras;
+ /// 2 - Outros;
+ ///
+ public enum MotivoDeferimento
+ {
+ ///
+ /// 1 - Falta de manifestação de todas as sucessoras
+ ///
+ [Description("Falta de manifestação de todas as sucessoras")]
+ [XmlEnum("1")]
+ FaltaManifestacaoSucessoras = 1,
+
+ ///
+ /// 2 - Outros
+ ///
+ [Description("Outros")]
+ [XmlEnum("2")]
+ Outros = 2
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gConsumo.cs b/NFe.Classes/Servicos/Evento/gConsumo.cs
new file mode 100644
index 000000000..1eea5d4aa
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gConsumo.cs
@@ -0,0 +1,45 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações por item da NF-e de importação para o evento 112120.
+ ///
+ public class gConsumo
+ {
+ private decimal _vIBS;
+ private decimal _vCBS;
+
+ ///
+ /// P24 - Corresponde ao atributo nItem do elemento det da NF-e de importação.
+ ///
+ [XmlAttribute("nItem")]
+ public int nItem { get; set; }
+
+ ///
+ /// P25 - Valor do IBS correspondente à quantidade que não atendeu aos requisitos para a conversão em isenção.
+ ///
+ [XmlElement("vIBS")]
+ public decimal vIBS
+ {
+ get { return _vIBS.Arredondar(2); }
+ set { _vIBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P26 - Valor da CBS correspondente à quantidade que não atendeu aos requisitos para a conversão em isenção.
+ ///
+ [XmlElement("vCBS")]
+ public decimal vCBS
+ {
+ get { return _vCBS.Arredondar(2); }
+ set { _vCBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P27 - Informações de quantidade de estoque influenciadas pelo evento.
+ ///
+ [XmlElement("gControleEstoque")]
+ public gControleEstoqueConsumo gControleEstoque { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gConsumoComb.cs b/NFe.Classes/Servicos/Evento/gConsumoComb.cs
new file mode 100644
index 000000000..5c01d7a2f
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gConsumoComb.cs
@@ -0,0 +1,45 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de consumo de combustíveis para o evento 211140.
+ ///
+ public class gConsumoComb
+ {
+ private decimal _vIBS;
+ private decimal _vCBS;
+
+ ///
+ /// P24 - Corresponde ao atributo nItem do elemento det do documento referenciado.
+ ///
+ [XmlAttribute("nItem")]
+ public int nItem { get; set; }
+
+ ///
+ /// P25 - Valor do IBS relativo ao consumo de combustível na nota de aquisição.
+ ///
+ [XmlElement("vIBS")]
+ public decimal vIBS
+ {
+ get { return _vIBS.Arredondar(2); }
+ set { _vIBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P26 - Valor da CBS relativo ao consumo de combustível na nota de aquisição.
+ ///
+ [XmlElement("vCBS")]
+ public decimal vCBS
+ {
+ get { return _vCBS.Arredondar(2); }
+ set { _vCBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P27 - Informações de quantidade por item.
+ ///
+ [XmlElement("gControleEstoque")]
+ public gControleEstoqueConsumoComb gControleEstoque { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gControleEstoque.cs b/NFe.Classes/Servicos/Evento/gControleEstoque.cs
index d9b436fb4..ba8395d2a 100644
--- a/NFe.Classes/Servicos/Evento/gControleEstoque.cs
+++ b/NFe.Classes/Servicos/Evento/gControleEstoque.cs
@@ -3,13 +3,14 @@
namespace NFe.Classes.Servicos.Evento
{
///
- /// Informações de quantidade de estoque influenciadas pelo evento 112130.
+ /// Informações de quantidade de estoque influenciadas pelos eventos 112130 e 211124.
///
public class gControleEstoque
{
private decimal _qPerecimento;
- private decimal _vIBS;
- private decimal _vCBS;
+ private decimal? _vIBS;
+ private decimal? _vCBS;
+
///
/// Quantidade objeto de roubo, perda, furto ou perecimento.
///
@@ -28,9 +29,10 @@ public decimal qPerecimento
///
/// Valor do crédito IBS referente às aquisições a ser estornado.
+ /// Obrigatório no evento 112130 e não informado no evento 211124.
///
[XmlElement("vIBS")]
- public decimal vIBS
+ public decimal? vIBS
{
get { return _vIBS.Arredondar(2); }
set { _vIBS = value.Arredondar(2); }
@@ -38,12 +40,23 @@ public decimal vIBS
///
/// Valor do crédito CBS referente às aquisições a ser estornado.
+ /// Obrigatório no evento 112130 e não informado no evento 211124.
///
[XmlElement("vCBS")]
- public decimal vCBS
+ public decimal? vCBS
{
get { return _vCBS.Arredondar(2); }
set { _vCBS = value.Arredondar(2); }
}
+
+ public bool ShouldSerializevIBS()
+ {
+ return vIBS.HasValue;
+ }
+
+ public bool ShouldSerializevCBS()
+ {
+ return vCBS.HasValue;
+ }
}
-}
\ No newline at end of file
+}
diff --git a/NFe.Classes/Servicos/Evento/gControleEstoqueConsumo.cs b/NFe.Classes/Servicos/Evento/gControleEstoqueConsumo.cs
new file mode 100644
index 000000000..02dbdca8c
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gControleEstoqueConsumo.cs
@@ -0,0 +1,28 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de quantidade de estoque influenciadas pelo evento 112120.
+ ///
+ public class gControleEstoqueConsumo
+ {
+ private decimal _qtde;
+
+ ///
+ /// P28 - Informar a quantidade que não atendeu os requisitos para a conversão em isenção.
+ ///
+ [XmlElement("qtde")]
+ public decimal qtde
+ {
+ get { return _qtde.Arredondar(4); }
+ set { _qtde = value.Arredondar(4); }
+ }
+
+ ///
+ /// P29 - Informar a unidade relativa ao campo gConsumo.
+ ///
+ [XmlElement("unidade")]
+ public string unidade { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gControleEstoqueConsumoComb.cs b/NFe.Classes/Servicos/Evento/gControleEstoqueConsumoComb.cs
new file mode 100644
index 000000000..8e38cac2f
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gControleEstoqueConsumoComb.cs
@@ -0,0 +1,28 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de quantidade por item influenciadas pelo evento 211140.
+ ///
+ public class gControleEstoqueConsumoComb
+ {
+ private decimal _qComb;
+
+ ///
+ /// P28 - Informar a quantidade de consumo do item.
+ ///
+ [XmlElement("qComb")]
+ public decimal qComb
+ {
+ get { return _qComb.Arredondar(4); }
+ set { _qComb = value.Arredondar(4); }
+ }
+
+ ///
+ /// P29 - Informar a unidade relativa ao campo qComb.
+ ///
+ [XmlElement("uComb")]
+ public string uComb { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gControleEstoqueImobilizacao.cs b/NFe.Classes/Servicos/Evento/gControleEstoqueImobilizacao.cs
new file mode 100644
index 000000000..d34b903e8
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gControleEstoqueImobilizacao.cs
@@ -0,0 +1,28 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de quantidade de estoque influenciadas pelo evento 211130.
+ ///
+ public class gControleEstoqueImobilizacao
+ {
+ private decimal _qImobilizado;
+
+ ///
+ /// P28 - Informar a quantidade do item a ser imobilizado.
+ ///
+ [XmlElement("qImobilizado")]
+ public decimal qImobilizado
+ {
+ get { return _qImobilizado.Arredondar(4); }
+ set { _qImobilizado = value.Arredondar(4); }
+ }
+
+ ///
+ /// P29 - Informar a unidade relativa ao campo qImobilizado.
+ ///
+ [XmlElement("uImobilizado")]
+ public string uImobilizado { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gControleEstoqueItemNaoFornecido.cs b/NFe.Classes/Servicos/Evento/gControleEstoqueItemNaoFornecido.cs
new file mode 100644
index 000000000..79e15fae0
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gControleEstoqueItemNaoFornecido.cs
@@ -0,0 +1,28 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de quantidade de estoque influenciadas pelo evento 112140.
+ ///
+ public class gControleEstoqueItemNaoFornecido
+ {
+ private decimal _qNaoFornecida;
+
+ ///
+ /// P28 - Informar a quantidade que não foi fornecida e teve o imposto antecipado.
+ ///
+ [XmlElement("qNaoFornecida")]
+ public decimal qNaoFornecida
+ {
+ get { return _qNaoFornecida.Arredondar(4); }
+ set { _qNaoFornecida = value.Arredondar(4); }
+ }
+
+ ///
+ /// P29 - Informar a unidade relativa ao campo qNaoFornecida.
+ ///
+ [XmlElement("uNaoFornecida")]
+ public string uNaoFornecida { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gCredPresOper.cs b/NFe.Classes/Servicos/Evento/gCredPresOper.cs
new file mode 100644
index 000000000..59048c865
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gCredPresOper.cs
@@ -0,0 +1,46 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de crédito presumido por item para o evento 211110.
+ ///
+ public class gCredPresOper
+ {
+ private decimal _vBCCredPres;
+
+ ///
+ /// P24 - Corresponde ao atributo nItem do elemento det do documento referenciado.
+ ///
+ [XmlAttribute("nItem")]
+ public int nItem { get; set; }
+
+ ///
+ /// P25 - Valor da base de cálculo do item.
+ ///
+ [XmlElement("vBCCredPres")]
+ public decimal vBCCredPres
+ {
+ get { return _vBCCredPres.Arredondar(2); }
+ set { _vBCCredPres = value.Arredondar(2); }
+ }
+
+ ///
+ /// P25a - Código de Classificação do Crédito presumido, conforme tabela cCredPres (Anexo IV).
+ ///
+ [XmlElement("cCredPres")]
+ public string cCredPres { get; set; }
+
+ ///
+ /// P26 - Grupo de Informações do Crédito Presumido do IBS.
+ ///
+ [XmlElement("gIBSCredPres")]
+ public gCredPresTributo gIBSCredPres { get; set; }
+
+ ///
+ /// P30 - Grupo de Informações do Crédito Presumido da CBS.
+ ///
+ [XmlElement("gCBSCredPres")]
+ public gCredPresTributo gCBSCredPres { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gCredPresTributo.cs b/NFe.Classes/Servicos/Evento/gCredPresTributo.cs
new file mode 100644
index 000000000..6f13f9b21
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gCredPresTributo.cs
@@ -0,0 +1,34 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Grupo de informações do crédito presumido do IBS (gIBSCredPres) ou da CBS (gCBSCredPres)
+ /// para o evento 211110.
+ ///
+ public class gCredPresTributo
+ {
+ private decimal _pCredPres;
+ private decimal _vCredPres;
+
+ ///
+ /// Percentual do Crédito Presumido.
+ ///
+ [XmlElement("pCredPres")]
+ public decimal pCredPres
+ {
+ get { return _pCredPres.Arredondar(4); }
+ set { _pCredPres = value.Arredondar(4); }
+ }
+
+ ///
+ /// Valor do Crédito Presumido.
+ ///
+ [XmlElement("vCredPres")]
+ public decimal vCredPres
+ {
+ get { return _vCredPres.Arredondar(2); }
+ set { _vCredPres = value.Arredondar(2); }
+ }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gCredito.cs b/NFe.Classes/Servicos/Evento/gCredito.cs
new file mode 100644
index 000000000..bb52258b7
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gCredito.cs
@@ -0,0 +1,39 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de crédito por item para o evento 211150.
+ ///
+ public class gCredito
+ {
+ private decimal _vCredIBS;
+ private decimal _vCredCBS;
+
+ ///
+ /// P24 - Corresponde ao atributo nItem do elemento det do documento referenciado.
+ ///
+ [XmlAttribute("nItem")]
+ public int nItem { get; set; }
+
+ ///
+ /// P25 - Valor da solicitação de crédito a ser apropriado de IBS.
+ ///
+ [XmlElement("vCredIBS")]
+ public decimal vCredIBS
+ {
+ get { return _vCredIBS.Arredondar(2); }
+ set { _vCredIBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P26 - Valor da solicitação de crédito a ser apropriado de CBS.
+ ///
+ [XmlElement("vCredCBS")]
+ public decimal vCredCBS
+ {
+ get { return _vCredCBS.Arredondar(2); }
+ set { _vCredCBS = value.Arredondar(2); }
+ }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gImobilizacao.cs b/NFe.Classes/Servicos/Evento/gImobilizacao.cs
new file mode 100644
index 000000000..c2d88c21a
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gImobilizacao.cs
@@ -0,0 +1,45 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações de itens integrados ao ativo imobilizado para o evento 211130.
+ ///
+ public class gImobilizacao
+ {
+ private decimal _vIBS;
+ private decimal _vCBS;
+
+ ///
+ /// P24 - Corresponde ao atributo nItem do elemento det do documento referenciado.
+ ///
+ [XmlAttribute("nItem")]
+ public int nItem { get; set; }
+
+ ///
+ /// P25 - Valor do IBS relativo à imobilização.
+ ///
+ [XmlElement("vIBS")]
+ public decimal vIBS
+ {
+ get { return _vIBS.Arredondar(2); }
+ set { _vIBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P26 - Valor da CBS relativo à imobilização.
+ ///
+ [XmlElement("vCBS")]
+ public decimal vCBS
+ {
+ get { return _vCBS.Arredondar(2); }
+ set { _vCBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P27 - Informações de quantidade de estoque influenciadas pelo evento.
+ ///
+ [XmlElement("gControleEstoque")]
+ public gControleEstoqueImobilizacao gControleEstoque { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gItemNaoFornecido.cs b/NFe.Classes/Servicos/Evento/gItemNaoFornecido.cs
new file mode 100644
index 000000000..8e74b6cac
--- /dev/null
+++ b/NFe.Classes/Servicos/Evento/gItemNaoFornecido.cs
@@ -0,0 +1,45 @@
+using System.Xml.Serialization;
+
+namespace NFe.Classes.Servicos.Evento
+{
+ ///
+ /// Informações por item da Nota de Pagamento antecipado para o evento 112140.
+ ///
+ public class gItemNaoFornecido
+ {
+ private decimal _vIBS;
+ private decimal _vCBS;
+
+ ///
+ /// P24 - Corresponde ao atributo nItem do elemento det do documento referenciado.
+ ///
+ [XmlAttribute("nItem")]
+ public int nItem { get; set; }
+
+ ///
+ /// P25 - Valor do IBS na nota de débito de pagamento antecipado correspondente à quantidade que não foi fornecida.
+ ///
+ [XmlElement("vIBS")]
+ public decimal vIBS
+ {
+ get { return _vIBS.Arredondar(2); }
+ set { _vIBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P26 - Valor da CBS na nota de débito de pagamento antecipado correspondente à quantidade que não foi fornecida.
+ ///
+ [XmlElement("vCBS")]
+ public decimal vCBS
+ {
+ get { return _vCBS.Arredondar(2); }
+ set { _vCBS = value.Arredondar(2); }
+ }
+
+ ///
+ /// P27 - Informações de quantidade de estoque influenciadas pelo evento.
+ ///
+ [XmlElement("gControleEstoque")]
+ public gControleEstoqueItemNaoFornecido gControleEstoque { get; set; }
+ }
+}
diff --git a/NFe.Classes/Servicos/Evento/gPerecimento.cs b/NFe.Classes/Servicos/Evento/gPerecimento.cs
index 13d4975f4..23e2d3d08 100644
--- a/NFe.Classes/Servicos/Evento/gPerecimento.cs
+++ b/NFe.Classes/Servicos/Evento/gPerecimento.cs
@@ -3,7 +3,7 @@
namespace NFe.Classes.Servicos.Evento
{
///
- /// Informações por item da Nota de Fornecimento para o evento 112130.
+ /// Informações por item da Nota de Fornecimento (evento 112130) ou da Nota de Aquisição (evento 211124).
///
public class gPerecimento
{
@@ -16,7 +16,7 @@ public class gPerecimento
public int nItem { get; set; }
///
- /// Valor do IBS na Nota de Fornecimento correspondente à quantidade objeto de roubo, perda, furto ou perecimento.
+ /// Valor do IBS na Nota de Fornecimento/Aquisição correspondente à quantidade objeto de roubo, perda, furto ou perecimento.
///
[XmlElement("vIBS")]
public decimal vIBS
@@ -26,7 +26,7 @@ public decimal vIBS
}
///
- /// Valor da CBS na Nota de Fornecimento correspondente à quantidade objeto de roubo, perda, furto ou perecimento.
+ /// Valor da CBS na Nota de Fornecimento/Aquisição correspondente à quantidade objeto de roubo, perda, furto ou perecimento.
///
[XmlElement("vCBS")]
public decimal vCBS
diff --git a/NFe.Classes/Servicos/Tipos/NFeServicosTipos.cs b/NFe.Classes/Servicos/Tipos/NFeServicosTipos.cs
index 1b5498eec..11bc1e717 100644
--- a/NFe.Classes/Servicos/Tipos/NFeServicosTipos.cs
+++ b/NFe.Classes/Servicos/Tipos/NFeServicosTipos.cs
@@ -123,7 +123,79 @@ public enum ServicoNFe
///
NfceAdministracaoCSC,
- ConsultaGtin
+ ConsultaGtin,
+
+ // Serviços da Reforma Tributária (NT 2025.002) ficam no final para não alterar o valor numérico dos membros anteriores
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Cancelamento de Evento (NT 2025.002 - Reforma Tributária)
+ ///
+ RecepcaoEventoCancelamentoEventoNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Informação de efetivo pagamento integral para liberar crédito presumido do adquirente
+ ///
+ RecepcaoEventoPagamentoIntegralNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Importação em ALC/ZFM não convertida em isenção
+ ///
+ RecepcaoEventoImportacaoAlcZfmNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Fornecimento não realizado com pagamento antecipado
+ ///
+ RecepcaoEventoFornecimentoNaoRealizadoNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Solicitação de Apropriação de crédito presumido
+ ///
+ RecepcaoEventoApropriacaoCredPresumidoNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Perecimento, Perda, Roubo ou Furto durante o Transporte contratado pelo adquirente
+ ///
+ RecepcaoEventoPerecimentoTransporteAdquirenteNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Aceite de débito na apuração por emissão de nota de crédito
+ ///
+ RecepcaoEventoAceiteDebitoNotaCreditoNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Imobilização de Item
+ ///
+ RecepcaoEventoImobilizacaoItemNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Solicitação de Apropriação de Crédito de Combustível
+ ///
+ RecepcaoEventoApropriacaoCreditoCombustivelNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente
+ ///
+ RecepcaoEventoApropriacaoCreditoBensServicosNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Manifestação sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ ///
+ RecepcaoEventoManifestacaoTransfCredIBSNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Manifestação sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
+ ///
+ RecepcaoEventoManifestacaoTransfCredCBSNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Manifestação do Fisco sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ ///
+ RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe,
+
+ ///
+ /// serviço destinado à recepção de mensagem do Evento de Manifestação do Fisco sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
+ ///
+ RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe
}
///
@@ -161,6 +233,20 @@ public enum IndicadorSincronizacao
/// 110750 - Conciliação Financeira da NF-e
/// 110751 - Cancelamento Conciliação Financeira da NF-e
/// 112130 - Perecimento, perda, roubo ou furto durante o transporte contratado pelo fornecedor (Extravio de Transporte)
+ /// 110001 - Cancelamento de Evento
+ /// 112110 - Informação de efetivo pagamento integral para liberar crédito presumido do adquirente
+ /// 112120 - Importação em ALC/ZFM não convertida em isenção
+ /// 112140 - Fornecimento não realizado com pagamento antecipado
+ /// 211110 - Solicitação de Apropriação de crédito presumido
+ /// 211124 - Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente
+ /// 211128 - Aceite de débito na apuração por emissão de nota de crédito
+ /// 211130 - Imobilização de Item
+ /// 211140 - Solicitação de Apropriação de Crédito de Combustível
+ /// 211150 - Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente
+ /// 212110 - Manifestação sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ /// 212120 - Manifestação sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
+ /// 412120 - Manifestação do Fisco sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ /// 412130 - Manifestação do Fisco sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
/// 210200 – Confirmação da Operação
/// 210210 – Ciência da Emissão
/// 210220 – Desconhecimento da Operação
@@ -245,6 +331,104 @@ public enum NFeTipoEvento
[XmlEnum("112130")]
TeNfePerecimentoTransporteNFe = 112130,
+ ///
+ /// 110001 - Cancelamento de Evento
+ ///
+ [Description("Cancelamento de Evento")]
+ [XmlEnum("110001")]
+ TeNfeCancelamentoEvento = 110001,
+
+ ///
+ /// 112110 - Informação de efetivo pagamento integral para liberar crédito presumido do adquirente
+ ///
+ [Description("Informação de efetivo pagamento integral para liberar crédito presumido do adquirente")]
+ [XmlEnum("112110")]
+ TeNfePagamentoIntegralNFe = 112110,
+
+ ///
+ /// 112120 - Importação em ALC/ZFM não convertida em isenção
+ ///
+ [Description("Importação em ALC/ZFM não convertida em isenção")]
+ [XmlEnum("112120")]
+ TeNfeImportacaoAlcZfmNFe = 112120,
+
+ ///
+ /// 112140 - Fornecimento não realizado com pagamento antecipado
+ ///
+ [Description("Fornecimento não realizado com pagamento antecipado")]
+ [XmlEnum("112140")]
+ TeNfeFornecimentoNaoRealizadoNFe = 112140,
+
+ ///
+ /// 211110 - Solicitação de Apropriação de crédito presumido
+ ///
+ [Description("Solicitação de Apropriação de crédito presumido")]
+ [XmlEnum("211110")]
+ TeNfeApropriacaoCredPresumidoNFe = 211110,
+
+ ///
+ /// 211124 - Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente
+ ///
+ [Description("Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente")]
+ [XmlEnum("211124")]
+ TeNfePerecimentoTransporteAdquirenteNFe = 211124,
+
+ ///
+ /// 211128 - Aceite de débito na apuração por emissão de nota de crédito
+ ///
+ [Description("Aceite de débito na apuração por emissão de nota de crédito")]
+ [XmlEnum("211128")]
+ TeNfeAceiteDebitoNotaCreditoNFe = 211128,
+
+ ///
+ /// 211130 - Imobilização de Item
+ ///
+ [Description("Imobilização de Item")]
+ [XmlEnum("211130")]
+ TeNfeImobilizacaoItemNFe = 211130,
+
+ ///
+ /// 211140 - Solicitação de Apropriação de Crédito de Combustível
+ ///
+ [Description("Solicitação de Apropriação de Crédito de Combustível")]
+ [XmlEnum("211140")]
+ TeNfeApropriacaoCreditoCombustivelNFe = 211140,
+
+ ///
+ /// 211150 - Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente
+ ///
+ [Description("Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente")]
+ [XmlEnum("211150")]
+ TeNfeApropriacaoCreditoBensServicosNFe = 211150,
+
+ ///
+ /// 212110 - Manifestação sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ ///
+ [Description("Manifestação sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão")]
+ [XmlEnum("212110")]
+ TeNfeManifestacaoTransfCredIBSNFe = 212110,
+
+ ///
+ /// 212120 - Manifestação sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
+ ///
+ [Description("Manifestação sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão")]
+ [XmlEnum("212120")]
+ TeNfeManifestacaoTransfCredCBSNFe = 212120,
+
+ ///
+ /// 412120 - Manifestação do Fisco sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ ///
+ [Description("Manifestação do Fisco sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão")]
+ [XmlEnum("412120")]
+ TeNfeManifestacaoFiscoTransfCredIBSNFe = 412120,
+
+ ///
+ /// 412130 - Manifestação do Fisco sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
+ ///
+ [Description("Manifestação do Fisco sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão")]
+ [XmlEnum("412130")]
+ TeNfeManifestacaoFiscoTransfCredCBSNFe = 412130,
+
///
/// 210200 – Confirmação da Operação
///
diff --git a/NFe.Servicos/ServicoNfeFactory.cs b/NFe.Servicos/ServicoNfeFactory.cs
index 3baba1449..06dad4933 100644
--- a/NFe.Servicos/ServicoNfeFactory.cs
+++ b/NFe.Servicos/ServicoNfeFactory.cs
@@ -240,6 +240,22 @@ public static INfeServico CriaWsdlOutros(ServicoNFe servico, ConfiguracaoServico
case ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe:
return new RecepcaoEvento4SVCAN(url, certificado, cfg.TimeOut);
+ case ServicoNFe.RecepcaoEventoCancelamentoEventoNFe:
+ case ServicoNFe.RecepcaoEventoPagamentoIntegralNFe:
+ case ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe:
+ case ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe:
+ case ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe:
+ case ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe:
+ case ServicoNFe.RecepcaoEventoImobilizacaoItemNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe:
+ return new RecepcaoEvento4SVCAN(url, certificado, cfg.TimeOut);
+
case ServicoNFe.RecepcaoEventoConciliacaoFinanceiraNFe:
case ServicoNFe.RecepcaoEventoCancConciliacaoFinanceiraNFe:
return new RecepcaoEvento4SVCAN(url, certificado, cfg.TimeOut);
diff --git a/NFe.Servicos/ServicosNFe.cs b/NFe.Servicos/ServicosNFe.cs
index 6474fdf7e..98bc88f83 100644
--- a/NFe.Servicos/ServicosNFe.cs
+++ b/NFe.Servicos/ServicosNFe.cs
@@ -377,7 +377,21 @@ private RetornoRecepcaoEvento RecepcaoEvento(int idlote, List eventos, S
ServicoNFe.RecepcaoEventoCancComprovanteEntregaNFe,
ServicoNFe.RecepcaoEventoConciliacaoFinanceiraNFe,
ServicoNFe.RecepcaoEventoCancConciliacaoFinanceiraNFe,
- ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe
+ ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe,
+ ServicoNFe.RecepcaoEventoCancelamentoEventoNFe,
+ ServicoNFe.RecepcaoEventoPagamentoIntegralNFe,
+ ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe,
+ ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe,
+ ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe,
+ ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe,
+ ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe,
+ ServicoNFe.RecepcaoEventoImobilizacaoItemNFe,
+ ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe,
+ ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe
};
if (
!listaEventos.Contains(servicoEvento))
@@ -426,7 +440,7 @@ private RetornoRecepcaoEvento RecepcaoEvento(int idlote, List eventos, S
#region Valida, Envia os dados e obtém a resposta
var xmlEvento = _cFgServico.RemoverAcentos
- ? pedEvento.ObterXmlString().RemoverAcentos()
+ ? pedEvento.ObterXmlString().RemoverAcentosPreservandoDescEvento()
: pedEvento.ObterXmlString();
SalvarArquivoXml(idlote + "-ped-eve.xml", xmlEvento);
@@ -1230,6 +1244,15 @@ public RetornoRecepcaoEvento RecepcaoEventoPerecimentoTransporte(int idlote,
if (perecimentos == null || !perecimentos.Any())
throw new ArgumentException("Informe ao menos um item para o evento de Perecimento, perda, roubo ou furto durante o transporte.", nameof(perecimentos));
+ // vIBS e vCBS de gControleEstoque são obrigatórios neste evento: quando não informados, são enviados zerados
+ foreach (var controleEstoque in perecimentos.Select(p => p.gControleEstoque).Where(g => g != null))
+ {
+ if (!controleEstoque.vIBS.HasValue)
+ controleEstoque.vIBS = 0;
+ if (!controleEstoque.vCBS.HasValue)
+ controleEstoque.vCBS = 0;
+ }
+
var versaoServico =
ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe.VersaoServicoParaString(
_cFgServico.VersaoRecepcaoEventoPerecimentoTransporte);
@@ -1279,6 +1302,1047 @@ public RetornoRecepcaoEvento RecepcaoEventoPerecimentoTransporte(int idlote, Lis
return retorno;
}
+ ///
+ /// Recepção do Evento de Cancelamento de Evento
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Código do evento autorizado a ser cancelado
+ /// Número do Protocolo de Autorização do Evento a ser cancelado
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoCancelamentoEvento(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ NFeTipoEvento tpEventoAut, string nProtEvento,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (tpEventoAut == NFeTipoEvento.TeNfeCancelamentoEvento)
+ throw new ArgumentException("O próprio Evento de Cancelamento (110001) não pode ser cancelado.", nameof(tpEventoAut));
+
+ if (string.IsNullOrWhiteSpace(nProtEvento))
+ throw new ArgumentException("Informe o protocolo do evento a ser cancelado.", nameof(nProtEvento));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoCancelamentoEventoNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeCancelamentoEvento.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ verAplic = versaoAplicativo ?? "1.0",
+ tpEventoAut = tpEventoAut,
+ nProtEvento = nProtEvento
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeCancelamentoEvento,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoCancelamentoEventoNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Cancelamento de Evento" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoCancelamentoEvento(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoCancelamentoEventoNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Informação de efetivo pagamento integral para liberar crédito presumido do adquirente
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoPagamentoIntegral(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoPagamentoIntegralNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfePagamentoIntegralNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaEmitente,
+ verAplic = versaoAplicativo ?? "1.0",
+ indQuitacao = IndicadorQuitacao.Quitado
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfePagamentoIntegralNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoPagamentoIntegralNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Informação de efetivo pagamento integral para liberar crédito presumido do adquirente" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoPagamentoIntegral(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoPagamentoIntegralNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Importação em ALC/ZFM não convertida em isenção
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Informações por item da NF-e de importação
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoImportacaoAlcZfm(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ List consumos,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (consumos == null || !consumos.Any())
+ throw new ArgumentException("Informe ao menos um item para o evento de Importação em ALC/ZFM não convertida em isenção.", nameof(consumos));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeImportacaoAlcZfmNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaEmitente,
+ verAplic = versaoAplicativo ?? "1.0",
+ gConsumo = consumos
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeImportacaoAlcZfmNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Importação em ALC/ZFM não convertida em isenção" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoImportacaoAlcZfm(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Fornecimento não realizado com pagamento antecipado
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Informações por item da Nota de Pagamento antecipado
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoFornecimentoNaoRealizado(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ List itensNaoFornecidos,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (itensNaoFornecidos == null || !itensNaoFornecidos.Any())
+ throw new ArgumentException("Informe ao menos um item para o evento de Fornecimento não realizado com pagamento antecipado.", nameof(itensNaoFornecidos));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeFornecimentoNaoRealizadoNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaEmitente,
+ verAplic = versaoAplicativo ?? "1.0",
+ gItemNaoFornecido = itensNaoFornecidos
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeFornecimentoNaoRealizadoNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Fornecimento não realizado com pagamento antecipado" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoFornecimentoNaoRealizado(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Solicitação de Apropriação de crédito presumido
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Informações de crédito presumido por item
+ /// Autor do evento. Informar 1=Empresa Emitente ou 2=Empresa Destinatária
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoApropriacaoCredPresumido(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ List creditosPresumidos, TipoAutor tpAutor = TipoAutor.taEmpresaDestinataria,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (creditosPresumidos == null || !creditosPresumidos.Any())
+ throw new ArgumentException("Informe ao menos um item para o evento de Solicitação de Apropriação de crédito presumido.", nameof(creditosPresumidos));
+
+ if (tpAutor != TipoAutor.taEmpresaEmitente && tpAutor != TipoAutor.taEmpresaDestinataria)
+ throw new ArgumentException("O autor deste evento deve ser 1=Empresa Emitente ou 2=Empresa Destinatária.", nameof(tpAutor));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeApropriacaoCredPresumidoNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = tpAutor,
+ verAplic = versaoAplicativo ?? "1.0",
+ gCredPresOper = creditosPresumidos
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeApropriacaoCredPresumidoNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Solicitação de Apropriação de crédito presumido" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoApropriacaoCredPresumido(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Informações por item da Nota de Aquisição. Os campos vIBS e vCBS de gControleEstoque não devem ser informados neste evento
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoPerecimentoTransporteAdquirente(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ List perecimentos,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (perecimentos == null || !perecimentos.Any())
+ throw new ArgumentException("Informe ao menos um item para o evento de Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente.", nameof(perecimentos));
+
+ if (perecimentos.Any(p => p.gControleEstoque != null && (p.gControleEstoque.vIBS.HasValue || p.gControleEstoque.vCBS.HasValue)))
+ throw new ArgumentException("Os campos vIBS e vCBS de gControleEstoque não devem ser informados no evento de Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente.", nameof(perecimentos));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfePerecimentoTransporteAdquirenteNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaDestinataria,
+ verAplic = versaoAplicativo ?? "1.0",
+ gPerecimento = perecimentos
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfePerecimentoTransporteAdquirenteNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirente" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoPerecimentoTransporteAdquirente(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Aceite de débito na apuração por emissão de nota de crédito
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Indicador de concordância com o valor da nota de crédito
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoAceiteDebitoNotaCredito(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ IndicadorAceitacao indAceitacao,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeAceiteDebitoNotaCreditoNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaDestinataria,
+ verAplic = versaoAplicativo ?? "1.0",
+ indAceitacao = indAceitacao
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeAceiteDebitoNotaCreditoNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Aceite de débito na apuração por emissão de nota de crédito" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoAceiteDebitoNotaCredito(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Imobilização de Item
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Informações de itens integrados ao ativo imobilizado
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoImobilizacaoItem(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ List imobilizacoes,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (imobilizacoes == null || !imobilizacoes.Any())
+ throw new ArgumentException("Informe ao menos um item para o evento de Imobilização de Item.", nameof(imobilizacoes));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoImobilizacaoItemNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeImobilizacaoItemNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaDestinataria,
+ verAplic = versaoAplicativo ?? "1.0",
+ gImobilizacao = imobilizacoes
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeImobilizacaoItemNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoImobilizacaoItemNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Imobilização de Item" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoImobilizacaoItem(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoImobilizacaoItemNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Solicitação de Apropriação de Crédito de Combustível
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Informações de consumo de combustíveis
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoApropriacaoCreditoCombustivel(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ List consumosCombustivel,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (consumosCombustivel == null || !consumosCombustivel.Any())
+ throw new ArgumentException("Informe ao menos um item para o evento de Solicitação de Apropriação de Crédito de Combustível.", nameof(consumosCombustivel));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeApropriacaoCreditoCombustivelNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaDestinataria,
+ verAplic = versaoAplicativo ?? "1.0",
+ gConsumoComb = consumosCombustivel
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeApropriacaoCreditoCombustivelNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Solicitação de Apropriação de Crédito de Combustível" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoApropriacaoCreditoCombustivel(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Informações de crédito por item
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoApropriacaoCreditoBensServicos(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ List creditos,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (creditos == null || !creditos.Any())
+ throw new ArgumentException("Informe ao menos um item para o evento de Solicitação de Apropriação de Crédito para bens e serviços.", nameof(creditos));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeApropriacaoCreditoBensServicosNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaDestinataria,
+ verAplic = versaoAplicativo ?? "1.0",
+ gCredito = creditos
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeApropriacaoCreditoBensServicosNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirente" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoApropriacaoCreditoBensServicos(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Manifestação sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Indicador de aceitação do valor de transferência
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoTransfCredIBS(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ IndicadorAceitacao indAceitacao,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeManifestacaoTransfCredIBSNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaSucessora,
+ verAplic = versaoAplicativo ?? "1.0",
+ indAceitacao = indAceitacao
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeManifestacaoTransfCredIBSNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Manifestação sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoTransfCredIBS(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Manifestação sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Indicador de aceitação do valor de transferência
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoTransfCredCBS(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ IndicadorAceitacao indAceitacao,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeManifestacaoTransfCredCBSNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taEmpresaSucessora,
+ verAplic = versaoAplicativo ?? "1.0",
+ indAceitacao = indAceitacao
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeManifestacaoTransfCredCBSNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Manifestação sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoTransfCredCBS(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Manifestação do Fisco sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Indicador de deferimento do valor de transferência
+ /// Motivo da manifestação do fisco
+ /// Descrição do motivo da manifestação do fisco
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoFiscoTransfCredIBS(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ IndicadorDeferimento indDeferimento, MotivoDeferimento cMotivo, string xMotivo,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (string.IsNullOrWhiteSpace(xMotivo))
+ throw new ArgumentException("Informe a descrição do motivo da manifestação do fisco.", nameof(xMotivo));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeManifestacaoFiscoTransfCredIBSNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taFisco,
+ verAplic = versaoAplicativo ?? "1.0",
+ indDeferimento = indDeferimento,
+ cMotivo = cMotivo,
+ xMotivo = xMotivo
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeManifestacaoFiscoTransfCredIBSNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Manifestação do Fisco sobre Pedido de Transferência de Crédito de IBS em Operação de Sucessão" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoFiscoTransfCredIBS(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
+ ///
+ /// Recepção do Evento de Manifestação do Fisco sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão
+ ///
+ /// Nº do lote
+ /// Sequência do evento
+ /// CPF/CNPJ do autor do evento
+ /// Chave de acesso da NF-e vinculada ao evento
+ /// Indicador de deferimento do valor de transferência
+ /// Motivo da manifestação do fisco
+ /// Descrição do motivo da manifestação do fisco
+ /// Código da UF do autor do evento
+ /// Versão do aplicativo do autor do evento
+ /// Data e hora do evento
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoFiscoTransfCredCBS(int idlote,
+ int sequenciaEvento, string cpfcnpj, string chaveNFe,
+ IndicadorDeferimento indDeferimento, MotivoDeferimento cMotivo, string xMotivo,
+ Estado? ufAutor = null, string versaoAplicativo = null, DateTimeOffset? dhEvento = null)
+ {
+ if (string.IsNullOrWhiteSpace(xMotivo))
+ throw new ArgumentException("Informe a descrição do motivo da manifestação do fisco.", nameof(xMotivo));
+
+ var versaoServico =
+ ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe.VersaoServicoParaString(
+ _cFgServico.VersaoRecepcaoEventoRTC);
+
+ var detEvento = new detEvento
+ {
+ versao = versaoServico,
+ descEvento = NFeTipoEvento.TeNfeManifestacaoFiscoTransfCredCBSNFe.Descricao(),
+ cOrgaoAutor = ufAutor ?? _cFgServico.cUF,
+ tpAutor = TipoAutor.taFisco,
+ verAplic = versaoAplicativo ?? "1.0",
+ indDeferimento = indDeferimento,
+ cMotivo = cMotivo,
+ xMotivo = xMotivo
+ };
+
+ var infEvento = new infEventoEnv
+ {
+ cOrgao = Estado.SVRS,
+ tpAmb = _cFgServico.tpAmb,
+ chNFe = chaveNFe,
+ dhEvento = dhEvento ?? DateTime.Now,
+ tpEvento = NFeTipoEvento.TeNfeManifestacaoFiscoTransfCredCBSNFe,
+ nSeqEvento = sequenciaEvento,
+ verEvento = versaoServico,
+ detEvento = detEvento
+ };
+
+ if (cpfcnpj.Length == 11)
+ infEvento.CPF = cpfcnpj;
+ else
+ infEvento.CNPJ = cpfcnpj;
+
+ var evento = new evento { versao = versaoServico, infEvento = infEvento };
+
+ var retorno = RecepcaoEvento(idlote, new List { evento }, ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, true);
+ return retorno;
+ }
+
+ ///
+ /// Envia eventos do tipo "Manifestação do Fisco sobre Pedido de Transferência de Crédito de CBS em Operação de Sucessão" já assinados.
+ ///
+ /// Nº do lote
+ /// Eventos já montados e assinados
+ ///
+ /// false (padrão) para transmitir os eventos exatamente como vieram, já assinados; true para a biblioteca
+ /// calcular o Id e assinar cada evento com o certificado desta instância de ServicosNFe, sobrescrevendo o Id
+ /// que já estiver preenchido.
+ ///
+ /// Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento
+ public RetornoRecepcaoEvento RecepcaoEventoManifestacaoFiscoTransfCredCBS(int idlote, List eventos, bool assinar = false)
+ {
+ var retorno = RecepcaoEvento(idlote, eventos, ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe, _cFgServico.VersaoRecepcaoEventoRTC, assinar);
+ return retorno;
+ }
+
///
/// Consulta a situação cadastral, com base na UF/Documento
/// O documento pode ser: IE, CNPJ ou CPF
diff --git a/NFe.Utils/Assinatura/Assinador.cs b/NFe.Utils/Assinatura/Assinador.cs
index 53032fba0..b16a3f387 100644
--- a/NFe.Utils/Assinatura/Assinador.cs
+++ b/NFe.Utils/Assinatura/Assinador.cs
@@ -4,7 +4,7 @@
using System.Xml;
using DFe.Utils;
using DFe.Utils.Assinatura;
-using Shared.DFe.Utils;
+using NFe.Utils.Evento;
using Signature = DFe.Classes.Assinatura.Signature;
namespace NFe.Utils.Assinatura
@@ -60,7 +60,7 @@ public static Signature ObterAssinatura(T objeto, string id, X509Certificate2
{
var documento = new XmlDocument { PreserveWhitespace = true };
var xml = cfgServicoRemoverAcentos
- ? FuncoesXml.ClasseParaXmlString(objetoLocal).RemoverAcentos()
+ ? FuncoesXml.ClasseParaXmlString(objetoLocal).RemoverAcentosPreservandoDescEvento()
: FuncoesXml.ClasseParaXmlString(objetoLocal);
documento.LoadXml(xml);
diff --git a/NFe.Utils/ConfiguracaoServico.cs b/NFe.Utils/ConfiguracaoServico.cs
index 289729482..e414b53a9 100644
--- a/NFe.Utils/ConfiguracaoServico.cs
+++ b/NFe.Utils/ConfiguracaoServico.cs
@@ -32,6 +32,7 @@ public sealed class ConfiguracaoServico : INotifyPropertyChanged
private VersaoServico _versaoRecepcaoEventoComprovanteEntrega;
private VersaoServico _versaoRecepcaoEventoConciliacaoFinanceira;
private VersaoServico _versaoRecepcaoEventoPerecimentoTransporte;
+ private VersaoServico _versaoRecepcaoEventoRTC;
private VersaoServico _versaoRecepcaoEventoEpec;
private VersaoServico _versaoRecepcaoEventoManifestacaoDestinatario;
private VersaoServico _versaoNfeRecepcao;
@@ -209,6 +210,7 @@ private void AtualizaVersoes()
VersaoRecepcaoEventoComprovanteEntrega = obterVersao(ServicoNFe.RecepcaoEventoComprovanteEntregaNFe);
VersaoRecepcaoEventoConciliacaoFinanceira = obterVersao(ServicoNFe.RecepcaoEventoConciliacaoFinanceiraNFe);
VersaoRecepcaoEventoPerecimentoTransporte = obterVersao(ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe);
+ VersaoRecepcaoEventoRTC = obterVersao(ServicoNFe.RecepcaoEventoCancelamentoEventoNFe);
VersaoRecepcaoEventoEpec = obterVersao(ServicoNFe.RecepcaoEventoEpec);
VersaoRecepcaoEventoManifestacaoDestinatario = obterVersao(ServicoNFe.RecepcaoEventoManifestacaoDestinatario);
VersaoNfeRecepcao = obterVersao(ServicoNFe.NfeRecepcao);
@@ -314,6 +316,21 @@ public VersaoServico VersaoRecepcaoEventoPerecimentoTransporte
}
}
+ ///
+ /// Versão do serviço RecepcaoEvento para os eventos da Reforma Tributária (NT 2025.002), códigos
+ /// 110001, 112110, 112120, 112140, 211110, 211124, 211128, 211130, 211140, 211150, 212110, 212120, 412120 e 412130
+ ///
+ public VersaoServico VersaoRecepcaoEventoRTC
+ {
+ get { return _versaoRecepcaoEventoRTC; }
+ set
+ {
+ if (value == _versaoRecepcaoEventoRTC) return;
+ _versaoRecepcaoEventoRTC = value;
+ OnPropertyChanged();
+ }
+ }
+
///
/// Versão do serviço RecepcaoEvento para Manifestação do destinatário
///
diff --git a/NFe.Utils/Enderecos/Enderecador.cs b/NFe.Utils/Enderecos/Enderecador.cs
index cd3e59f4b..9f6bb5b91 100644
--- a/NFe.Utils/Enderecos/Enderecador.cs
+++ b/NFe.Utils/Enderecos/Enderecador.cs
@@ -123,6 +123,25 @@ private static List CarregarEnderecosServicos()
var eventoPerecimentoTransporteNFe = new[] { ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe };
+ // Eventos da Reforma Tributária (NT 2025.002), autorizados na SVRS
+ var eventosRTC = new[]
+ {
+ ServicoNFe.RecepcaoEventoCancelamentoEventoNFe,
+ ServicoNFe.RecepcaoEventoPagamentoIntegralNFe,
+ ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe,
+ ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe,
+ ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe,
+ ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe,
+ ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe,
+ ServicoNFe.RecepcaoEventoImobilizacaoItemNFe,
+ ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe,
+ ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe,
+ ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe
+ };
+
var hom = TipoAmbiente.Homologacao;
var prod = TipoAmbiente.Producao;
@@ -1632,6 +1651,10 @@ private static List CarregarEnderecosServicos()
//Perecimento, perda, roubo ou furto durante o transporte
addServico(eventoPerecimentoTransporteNFe, versao1, TipoAmbiente.Producao, emissao, estado, modelo, "https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx");
addServico(eventoPerecimentoTransporteNFe, versao1, TipoAmbiente.Homologacao, emissao, estado, modelo, "https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx");
+
+ //Eventos da Reforma Tributária (NT 2025.002)
+ addServico(eventosRTC, versao1, TipoAmbiente.Producao, emissao, estado, modelo, "https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx");
+ addServico(eventosRTC, versao1, TipoAmbiente.Homologacao, emissao, estado, modelo, "https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento4.asmx");
}
}
}
@@ -1675,6 +1698,21 @@ public static void CarregarEnderecos()
return cfgServico.VersaoRecepcaoEventoConciliacaoFinanceira;
case ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe:
return cfgServico.VersaoRecepcaoEventoPerecimentoTransporte;
+ case ServicoNFe.RecepcaoEventoCancelamentoEventoNFe:
+ case ServicoNFe.RecepcaoEventoPagamentoIntegralNFe:
+ case ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe:
+ case ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe:
+ case ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe:
+ case ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe:
+ case ServicoNFe.RecepcaoEventoImobilizacaoItemNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe:
+ return cfgServico.VersaoRecepcaoEventoRTC;
case ServicoNFe.RecepcaoEventoEpec:
return cfgServico.VersaoRecepcaoEventoEpec;
case ServicoNFe.RecepcaoEventoManifestacaoDestinatario:
diff --git a/NFe.Utils/Evento/Extevento.cs b/NFe.Utils/Evento/Extevento.cs
index 70e3668e5..a61640d1f 100644
--- a/NFe.Utils/Evento/Extevento.cs
+++ b/NFe.Utils/Evento/Extevento.cs
@@ -1,9 +1,13 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
using System.Security.Cryptography.X509Certificates;
+using System.Text.RegularExpressions;
using DFe.Utils;
using NFe.Classes.Servicos.Evento;
using NFe.Classes.Servicos.Tipos;
using NFe.Utils.Assinatura;
+using Shared.DFe.Utils;
namespace NFe.Utils.Evento
{
@@ -57,5 +61,45 @@ public static evento Assina(this evento evento, X509Certificate2 certificadoDigi
eventoLocal.Signature = assinatura;
return eventoLocal;
}
+
+ ///
+ /// descEvento que o XSD do evento só aceita acentuado, indexados pela forma sem acentos.
+ /// Os demais eventos (ex.: Carta de Correção, cujo XSD aceita as duas formas) seguem tendo os acentos removidos.
+ ///
+ private static readonly Dictionary DescEventoSomenteComAcento = new[]
+ {
+ NFeTipoEvento.TeNfeCancConciliacaoFinanceiraNFe,
+ NFeTipoEvento.TeNfePagamentoIntegralNFe,
+ NFeTipoEvento.TeNfeImportacaoAlcZfmNFe,
+ NFeTipoEvento.TeNfeFornecimentoNaoRealizadoNFe,
+ NFeTipoEvento.TeNfeApropriacaoCredPresumidoNFe,
+ NFeTipoEvento.TeNfeAceiteDebitoNotaCreditoNFe,
+ NFeTipoEvento.TeNfeImobilizacaoItemNFe,
+ NFeTipoEvento.TeNfeApropriacaoCreditoCombustivelNFe,
+ NFeTipoEvento.TeNfeApropriacaoCreditoBensServicosNFe,
+ NFeTipoEvento.TeNfeManifestacaoTransfCredIBSNFe,
+ NFeTipoEvento.TeNfeManifestacaoTransfCredCBSNFe,
+ NFeTipoEvento.TeNfeManifestacaoFiscoTransfCredIBSNFe,
+ NFeTipoEvento.TeNfeManifestacaoFiscoTransfCredCBSNFe
+ }.Select(t => t.Descricao()).ToDictionary(d => d.RemoverAcentos(), d => d);
+
+ ///
+ /// Remove os acentos do XML, mantendo o descEvento dos eventos cujo XSD só aceita a descrição acentuada
+ /// (ex.: "Imobilização de Item")
+ ///
+ public static string RemoverAcentosPreservandoDescEvento(this string xml)
+ {
+ var semAcentos = xml.RemoverAcentos();
+ if (string.IsNullOrEmpty(semAcentos) || semAcentos.IndexOf("", StringComparison.Ordinal) < 0)
+ return semAcentos;
+
+ return Regex.Replace(semAcentos, "([^<]*)", m =>
+ {
+ string descricao;
+ return DescEventoSomenteComAcento.TryGetValue(m.Groups[1].Value, out descricao)
+ ? "" + descricao + ""
+ : m.Value;
+ });
+ }
}
}
\ No newline at end of file
diff --git a/NFe.Utils/Validacao/Validador.cs b/NFe.Utils/Validacao/Validador.cs
index 34f20a35a..52d258688 100644
--- a/NFe.Utils/Validacao/Validador.cs
+++ b/NFe.Utils/Validacao/Validador.cs
@@ -45,6 +45,21 @@ internal static string ObterArquivoSchema(ServicoNFe servicoNFe, VersaoServico v
return "envEventoCancEConf_v1.00.xsd";
case ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe:
return "envEvento_v1.00.xsd";
+ case ServicoNFe.RecepcaoEventoCancelamentoEventoNFe:
+ case ServicoNFe.RecepcaoEventoPagamentoIntegralNFe:
+ case ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe:
+ case ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe:
+ case ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe:
+ case ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe:
+ case ServicoNFe.RecepcaoEventoImobilizacaoItemNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe:
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe:
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe:
+ return "envEvento_v1.00.xsd";
case ServicoNFe.RecepcaoEventoEpec:
return "envEPEC_v1.00.xsd";
case ServicoNFe.RecepcaoEventoManifestacaoDestinatario:
@@ -128,6 +143,48 @@ public static string[] Valida(ServicoNFe servicoNFe, VersaoServico versaoServico
case ServicoNFe.RecepcaoEventoPerecimentoTransporteNFe:
falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e112130_v1.00.xsd"));
break;
+ case ServicoNFe.RecepcaoEventoCancelamentoEventoNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e110001_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoPagamentoIntegralNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e112110_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoImportacaoAlcZfmNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e112120_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoFornecimentoNaoRealizadoNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e112140_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoApropriacaoCredPresumidoNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e211110_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoPerecimentoTransporteAdquirenteNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e211124_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoAceiteDebitoNotaCreditoNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e211128_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoImobilizacaoItemNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e211130_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoCombustivelNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e211140_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoApropriacaoCreditoBensServicosNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e211150_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredIBSNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e212110_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoManifestacaoTransfCredCBSNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e212120_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredIBSNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e412120_v1.00.xsd"));
+ break;
+ case ServicoNFe.RecepcaoEventoManifestacaoFiscoTransfCredCBSNFe:
+ falhas = ValidaDetEvento(stringXml, Path.Combine(pathSchema, "e412130_v1.00.xsd"));
+ break;
}
return falhas.ToString().Trim().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);