Skip to content
On this page

Eventos da Reforma Tributária (Evento Genérico)

Os eventos criados pela Reforma Tributária são enviados por uma API única: você monta o detEvento específico do evento (classe DetEvento<código> do package schemas_eventos) e o EventoGenericoUtil monta, assina e envia o envelope.

Exemplo: 112110 - Pagamento integral para liberar crédito presumido

java
import br.com.swconsultoria.nfe.Nfe;
import br.com.swconsultoria.nfe.dom.ConfiguracoesNfe;
import br.com.swconsultoria.nfe.dom.Evento;
import br.com.swconsultoria.nfe.dom.enuns.EventosEnum;
import br.com.swconsultoria.nfe.schemas_eventos.DetEvento112110;
import br.com.swconsultoria.nfe.schemas_eventos.TEnvEventoGenerico;
import br.com.swconsultoria.nfe.schemas_eventos.TRetEnvEventoGenerico;
import br.com.swconsultoria.nfe.util.ConstantesUtil;
import br.com.swconsultoria.nfe.util.EventoGenericoUtil;
import br.com.swconsultoria.nfe.util.RetornoUtil;

import java.time.LocalDateTime;

/**
 * @author Samuel Oliveira
 */
public class EventoGenericoTeste {

    public static void main(String[] args) {
        try {
            // Inicia As Configurações (1)
            ConfiguracoesNfe config = Config.iniciaConfiguracoes();

            //Dados básicos do Evento
            Evento generico = new Evento();
            generico.setChave("XXX");
            generico.setCnpj("XXX");            // ou setCpf
            generico.setSequencia(1);
            generico.setDataEvento(LocalDateTime.now());

            //Payload específico do evento (2)
            DetEvento112110 detEvento = new DetEvento112110();
            detEvento.setVersao(ConstantesUtil.VERSAO.EVENTO_GENERICO);
            detEvento.setDescEvento("Informação de efetivo pagamento integral para liberar crédito presumido do adquirente");
            detEvento.setCOrgaoAutor(config.getEstado().getCodigoUF());
            detEvento.setTpAutor("1");
            detEvento.setVerAplic("1.0");
            detEvento.setIndQuitacao("1");
            generico.setDetEvento(detEvento);

            //Monta o Evento Genérico: informe a classe do detEvento e o tipo do evento
            TEnvEventoGenerico enviEvento = EventoGenericoUtil.montaEvento(generico, DetEvento112110.class,
                    EventosEnum.PAGAMENTO_INTEGRAL_CREDITO_PRESUMIDO, config);

            //Envia o Evento Genérico
            TRetEnvEventoGenerico retorno = Nfe.eventoGenerico(config, enviEvento, true);

            //Valida o Retorno
            RetornoUtil.validaEventoGenerico(retorno);

            //Resultado
            System.out.println();
            retorno.getRetEvento().forEach( resultado -> {
                System.out.println("# Chave: " + resultado.getInfEvento().getChNFe());
                System.out.println("# Status: " + resultado.getInfEvento().getCStat() + " - " + resultado.getInfEvento().getXMotivo());
                System.out.println("# Protocolo: " + resultado.getInfEvento().getNProt());
            });

            //Cria ProcEvento Genérico
            String proc = EventoGenericoUtil.criaProcEventoGenerico(config, enviEvento, retorno.getRetEvento().get(0));
            System.out.println();
            System.out.println("# ProcEvento : " + proc);

        } catch (Exception e) {
            System.err.println();
            System.err.println("# Erro: " + e.getMessage());
        }
    }
}
  1. Acesse o menu Configurações (Certificado)
  2. O payload precisa ser o do próprio tpEvento: usar a classe de outro evento gera a rejeição 493 - Evento não atende o Schema XML específico.

Eventos disponíveis (EventosEnum)

CódigoEventosEnumClasse do detEvento
112110PAGAMENTO_INTEGRAL_CREDITO_PRESUMIDODetEvento112110
112120IMPORTACAO_ALC_ZFM_NAO_CONVERTIDADetEvento112120
112130PERECIMENTO_TRANSPORTE_FORNECEDORDetEvento112130
112140FORNECIMENTO_NAO_REALIZADO_PAGAMENTO_ANTECIPADODetEvento112140
112150ATUALIZACAO_DATA_PREVISAO_ENTREGADetEvento112150
211110APROPRIACAO_CREDITO_PRESUMIDODetEvento211110
211120DESTINACAO_CONSUMO_PESSOALDetEvento211120
211124PERECIMENTO_TRANSPORTE_ADQUIRENTEDetEvento211124
211128ACEITE_DEBITO_NOTA_CREDITODetEvento211128
211130IMOBILIZACAO_ITEMDetEvento211130
211140APROPRIACAO_CREDITO_COMBUSTIVELDetEvento211140
211150APROPRIACAO_CREDITO_BENS_SERVICOSDetEvento211150
212110MANIFESTACAO_TRANSFERENCIA_CREDITO_IBSDetEvento212110
212120MANIFESTACAO_TRANSFERENCIA_CREDITO_CBSDetEvento212120
412120MANIFESTACAO_FISCO_TRANSFERENCIA_IBSDetEvento412120
412130MANIFESTACAO_FISCO_TRANSFERENCIA_CBSDetEvento412130
110001CANCELAMENTO_EVENTODetEvento110001

Evento 110300 (Vinculação de Pagamento)

O PL 010g (v4.3.0) trouxe as classes DetEvento110300 e TEventoPgto (NT 2026.006), mas o código 110300 ainda não consta no EventosEnum, portanto ainda não pode ser enviado por EventoGenericoUtil.montaEvento.

Outros eventos com método próprio em Nfe

EventoMétodoClasses
Ator InteressadoNfe.atorInteressadoNFe(config, envEvento, valida)TEnvEventoAtorInteressado
Insucesso de Entrega (NT 2023.005)Nfe.insucessoEntrega(config, envEvento, valida)TEnvEventoInsucessoEntrega
Cancelamento de Insucesso de EntregaNfe.cancelamentoInsucessoEntrega(config, envEvento, valida)TEnvEventoCancelamentoInsucessoEntrega
Conciliação Financeira (ECONF)Nfe.econf(config, envEvento, documento, valida)ver ECONF
Cancelamento de ECONFNfe.cancelamentoEconf(config, envEvento, valida)TEnvEventoCancelamentoConciliacaoFinanceira
Evento manual (XML pronto)Nfe.enviarEnventoManual(config, xml, ServicosEnum, valida, assina, DocumentoEnum)String

Para esses eventos o TEnvEvento* é montado manualmente (como no exemplo do ECONF).

MIT License.