Produto:

Totvs Protheus®

Versões:

a partir da 12.1.24.10

Ocorrência:

Monitor de Eventos


Introdução

Com a Reforma Tributária, foram definidos cerca de 17 eventos que devem ser comunicados a Receita e que serão imprescindíveis para a correta apuração dos tributos e créditos dos contribuintes. 
O objetivo destes eventos é garantir a integridade e a rastreabilidade das operações realizadas pelos contribuintes, servindo como base de dados para o controle e a transparência do novo modelo tributário. 
Conforme o artigo 348, §1º, da Emenda Constitucional, os contribuintes estarão dispensados do recolhimento do IBS e da CBS relativamente aos fatos geradores ocorridos entre 1º de janeiro e 31 de dezembro de 2026, desde que cumpram integralmente as obrigações acessórias previstas  na legislação.
Por isso, a apresentação correta e no prazo legal deste evento é essencial para que as empresas possam se beneficiar da dispensa do recolhimento dos tributos nesse período de transição.
O não cumprimento dessas obrigações poderá implicar na perda desse benefício, ocasionando o recolhimento normal dos tributos devidos.
Por isso, os Eventos da Reforma Tributária devem ser registrados, a partir de janeiro/2026, sempre que a situação concreta exigir, respeitando os critérios e prazos estabelecidos pela legislação, como forma de garantir o direito à dispensa e de contribuir para a efetividade do novo sistema tributário.

Essa funcionalidade exclusiva que permite gerenciar e registrar eventos relacionados à Reforma Tributária e associados à NF-e, sendo assim com as mudanças introduzidas pela nova legislação, determinados documentos fiscais de acordo com suas finalidades passam a exigir o envio de um Código de Evento e de suas Informações Complementares.

Esses eventos impactam não apenas o Controle Governamental, mas também a apuração futura dos tributos CBS e IBS, portanto e valido ressaltar que é essencial dispor de um recurso que possibilite uma gestão eficiente na geração, no envio e na recepção de eventos vinculados à Nota Fiscal Eletrônica.

Olá! 👋🤖 Sou seu assistente Monitor, aqui para ajudar você a entender sobre o Monitor de Eventos.

<!-- Chat embutido (sem ocupar espaço) -->
<dta-chat label="DTA" class="chat-collapsed"></dta-chat>
<dta-chat-anchor size="22"></dta-chat-anchor>

<script defer src="https://assets.dta.totvs.ai/client/stable/dta_chat.js"></script>

<script>
  // Fluxo /run
  function getConfig() {
    const baseUrl = 'https://totvs.dta.totvs.ai/api/flows/workflow/0693aa7f-80b5-7777-8000-9adfc8df058b';
    return {
      apiInit: {
        url: baseUrl + '/run',
        sendHeaders: ['x-dta-project', 'x-dta-api-key'],
      },
      apiMessage: {
        url: baseUrl + '/run',
        method: 'POST',
        sendHeaders: ['x-dta-project', 'x-dta-api-key'],
      },
      header_session_prefix: null,
      header_thread_prefix: null,
      header_session: 'x-dta-session-id',
      header_thread: 'x-dta-trace-id',
    };
  }

  const wait = (ms) => new Promise(r => setTimeout(r, ms));
  function uuid() {
    if (crypto.randomUUID) return crypto.randomUUID();
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
      const r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
      return v.toString(16);
    });
  }

  let api = null;

  // —————— Injetar botão no header do shadow DOM ——————
  function injectResetButtonIntoHeader(root) {
    if (!root) return;

    // cabeçalho e área de ações: cobrimos possíveis variações de seletor
    const header = root.querySelector('[part="header"], .header, header');
    if (!header) return;

    // evita duplicar
    if (root.getElementById('dta-reset-inline')) return;

    // estilo no shadow DOM (garante visual padronizado)
    const style = document.createElement('style');
    style.textContent = `
      #dta-reset-inline {
        display:inline-flex;
        align-items:center;
        gap:8px;
        padding:6px 12px;
        border:none;
        border-radius:999px;
        background:#00c9eb;
        color:#fff;
        font:600 12px/1 'Segoe UI', Arial, sans-serif;
        cursor:pointer;
        box-shadow:0 1px 4px rgba(0,0,0,.15);
        margin-left:auto; /* empurra para a direita dentro do header */
      }
      #dta-reset-inline:hover { background:#0098b3; }
    `;
    root.appendChild(style);

    // botão
    const btn = document.createElement('button');
    btn.id = 'dta-reset-inline';
    btn.type = 'button';
    btn.textContent = '🔄 Nova conversa';

    // tenta posicionar antes dos ícones (fullscreen/close)
    const actions = root.querySelector('[part="header-actions"], .actions, .header-actions');
    if (actions && actions.parentElement === header) {
      header.insertBefore(btn, actions); // fica à esquerda dos ícones
    } else {
      header.appendChild(btn); // fallback: vai ao final do header
    }

    btn.addEventListener('click', async () => {
      // inicia nova thread
      const newThreadId = uuid();
      api.addHeaders({ 'x-dta-trace-id': newThreadId });

      if (typeof api.reset === 'function') {
        api.reset();
      } else {
        // fecha e reabre como fallback
        const anchor = document.querySelector('dta-chat-anchor');
        if (anchor) {
          anchor.click();
          await wait(400);
          anchor.click();
        }
      }

      // mensagem após reset
      await wait(400);
      try {
        await api.sendMessage("🔄 Nova conversa iniciada. Em que posso te ajudar agora?");
      } catch (e) { console.warn(e); }
    });
  }

  // observa o shadow DOM do <dta-chat> para injetar quando o painel abrir/atualizar
  function attachHeaderObserver(host) {
    if (!host || !host.shadowRoot) return;
    const root = host.shadowRoot;

    // injeta imediatamente se o header já existe
    injectResetButtonIntoHeader(root);

    // observa mudanças (ex.: abrir/fechar painel, recriar header)
    const mo = new MutationObserver(() => {
      injectResetButtonIntoHeader(root);
    });
    mo.observe(root, { childList:true, subtree:true });
  }

  // —————— Boot ——————
  window.addEventListener('dta-chat-ready', async (ev) => {
    api = ev.detail;
    api.config(getConfig());
    api.addHeaders({
      'x-dta-project': 'dta-fiscal-protheus',
      'x-dta-api-key': 'sk-57VpgNblWvzIHZN-N01NWibhRM-rJWMBWP-swdp4zW4lMnP6',
    });

    // abre o chat automaticamente
    await wait(250);
    try {
      if (typeof api.open === 'function') api.open();
      else document.querySelector('dta-chat-anchor')?.click();
    } catch (e) { console.warn(e); }

    // mensagem de boas-vindas simples
    try {
      await api.sendMessage("👋 Olá! Sou o assistente **DTA**. Como posso te ajudar hoje?");
    } catch (e) { console.warn(e); }

    // conecta no shadow DOM do componente para inserir o botão no header
    const host = document.querySelector('dta-chat');
    if (host) attachHeaderObserver(host);
  }, { once:true });

  // bloqueio de hotkeys
  (function () {
    const CHAT_TAGS = new Set(['DTA-CHAT','DTA-CHAT-ANCHOR']);
    const CHAT_SELECTOR = 'dta-chat, dta-chat-anchor, dta-chat *, dta-chat-anchor *';
    function cameFromChat(ev) {
      const path = typeof ev.composedPath === 'function' ? ev.composedPath() : [];
      for (const el of path) if (el && el.tagName && CHAT_TAGS.has(el.tagName)) return true;
      const t = ev.target; return !!(t && typeof t.closest==='function' && t.closest(CHAT_SELECTOR));
    }
    function isPlainLetterOrHotkey(k) {
      if (!k) return false; const key = k.length===1?k.toLowerCase():k.toLowerCase();
      return /^[a-z]$/.test(key) || key==='/' || key==='?' || key==='g';
    }
    function stop(ev){ ev.stopImmediatePropagation(); ev.stopPropagation(); }
    function handler(ev){
      if (ev.isComposing) return;
      if (!cameFromChat(ev)) return;
      if (ev.ctrlKey||ev.metaKey||ev.altKey) return;
      const k = (ev.key||'').toLowerCase();
      if (isPlainLetterOrHotkey(k)) stop(ev);
    }
    ['keydown','keypress','keyup'].forEach(t => document.addEventListener(t, handler, { capture:true }));
  })();
</script>

<style>
  /* sem espaço em branco */
  dta-chat.chat-collapsed{
    display:block;
    height:0 !important;
    min-height:0 !important;
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
  }
</style>


Procedimento Para Uso

Pré-Requisitos.

Configurações de Eventos.

Para realizar a confirmação de envio na inclusão de Eventos é necessário realizar a configuração do TSS, conforme o processo abaixo:

1- Acessar o Módulo 05 "Faturamento" -> Menu Faturamento -> Atualizações -> NFe e NFse  -> NFe sefaz.

2 - Configurar Certificado, Após clicar em ok.

3 - Ao apresentar a Tela Monitoramento SEFAZ selecionar a opção Outras Ações -> Parâmetros -> Eventos e clicar em ok. 

Obs.: Se possível ter os ambientes de Homologação e Produção separados para realizar a configuração.


Obs.: a chave da NF precisa ser válida, segue abaixo os tipos de Status do SPED150 TSS:

1 = A Processar.

2 = Em processamento.

3 = Falha de schema.

5 = Rejeição.

6 = autorizado.

DSERTSS1-30020 DT Protheus - Controle de Liberação das Tags da NT 2025.002 - v 1.30


  • O monitor de Eventos irá atender a NF-e do modelo 55 e não ocorrerá vinculo MTI e Monitor de Tributos.
  • Fluxo do Monitor de Eventos: Inclusão do Documento Fiscal> Envio de dados da SEFAZ > Inclusão Manual de Evento.
  • Tabelas utilizadas  T7A / T7B / T7C / T7D / T7E / 5R/T7R, os campos C20_PRVENT, C30_ITEXML, C30_QTDXML, C30_UMXML.
  • Expedição continua do TAF/Backoffice de dezembro de 2025

Essa rotina permite que o usuário acompanhe, em tempo real, os eventos dos Documentos Fiscais Eletrônicos transmitidos pelo sistema desta forma e possível realizar à gestão dos eventos instituídos pela Reforma Tributária do Consumo.


1- Acessar o Módulo 84 "TOTVS Automação Fiscal" -> Menu Atualizações -> Reforma Tributária -> Monitor de Eventos.


2 - Tela Monitor de Eventos irá apresentar os seguintes filtros abaixo:

Inclusão de Evento


1- Clicar na opção "+Inclusão de Evento"

2 - Tela Inclusão de Evento irá apresentar os seguintes filtros abaixo:

Obs.: A inclusão de evento é o processo que envia os dados exigidos pela Reforma Tributária, sendo assim os filtros são para organizar e selecionar os documentos que precisam ser transmitidos.

Avançar:

Avançar:

Dúvidas Frequentes

O que é o Monitor de Eventos?

O Monitor de Eventos (rotina TAFA635, desenvolvida em PO-UI) é uma ferramenta que permite incluir, enviar, corrigir, consultar e cancelar eventos relacionados à Reforma Tributária, aplicáveis às Notas Fiscais Eletrônicas modelo 55.

Esses eventos ajustam valores de débito e crédito de IBS e CBS no Portal de Apuração.

Precisamos executar o Wizard do TAF para utilizar o monitor de Eventos?

Não, essa rotina não necessita de configurações dentro do TAF, apenas a criação do menu buscando a rotina TAFA635 e habilitar o SmartSchedule no configurador.

Para que servem os eventos da Reforma Tributária?

Os eventos são mecanismos criados pela Receita Federal para:

Sem o envio correto desses eventos, o cliente pode ser obrigado a recolher tributos indevidos.

Quantos eventos existem atualmente?

São 16 eventos oficiais relacionados à reforma, com novos modelos ainda sendo disponibilizados pela Receita Federal.

EVENTODESCRIÇÃOAUTOR
112110Informação de efetivo pagamento integral para liberar crédito presumido do adquirenteEmitente
112120Importação em ALC/ZFM não convertida em isençãoEmitente
112130Perecimento, perda, roubo ou furto durante o transporte contratado pelo fornecedorEmitente
112140Fornecimento não realizado com pagamento antecipadoEmitente
112150Atualização da Data de Previsão de EntregaEmitente
211110Solicitação de Apropriação de crédito presumidoDestinatário
211120Destinação de item para consumo pessoalEmitente/Destinatário
211124Perecimento, perda, roubo ou furto durante o transporte contratado pelo adquirenteDestinatário
211128Aceite de débito na apuração por emissão de nota de créditoDestinatário
211130Imobilização de ItemDestinatário
211140Solicitação de Apropriação de Crédito de CombustívelDestinatário
211150Solicitação de Apropriação de Crédito para bens e serviços que dependem de atividade do adquirenteDestinatário
212110Manifestação sobre Pedido de Transferência de Crédito de IBS em Operações de SucessãoSucessora
212120Manifestação sobre Pedido de Transferência de Crédito de CBS em Operações de SucessãoSucessora
110001Cancelamento de EventoIdem ao Autor do Evento que está sendo cancelado

Quem é responsável por enviar os eventos?

No cenário atual, o cliente é responsável por registrar o Evento vinculado a NFe.

O envio para SEFAZ ocorrerá automaticamente após sua inclusão, via SmartSchedule, após a conclusão do envio seu STATUS será atualizado para Enviado, em caso de sucesso ou Falha de envio.

Quais são os pré-requisitos para enviar um evento?

O Monitor de Eventos funciona com outros modelos de nota?

Não. Atualmente funciona somente para a NFe modelo 55.

Consigo enviar eventos com dados gerados a partir da integração TSI?

Sim, serão considerados NF-e, modelo 55, com os campos de XML preenchido (DT Débitos Técnicos - [TSI CBS/IBS] Gravação dos novos tributos)

TSI - TAF Service Integration

Onde os dados dos eventos são gravados?

A rotina utiliza as tabelas novas:

TabelaNomeDescriçãoTabela Pai
T7AEventosEvento por NF-e, conterá indicador de pagamento e aceitação, tipo de motivo e detalhamento do motivo, Indicador de cancelamento, STATUS: Incluso, Enviado, Sol. Cancelamento, Falha de envio-
T7BCred PresumidoDetalhamento por Item NF-eT7A
T7CEventos genéricosDetalhamento por Item NF-eT7A
T7DLog de processamentoPor EventoT7A
T7ETipos de EventosAutoContida com os Eventos

Como funciona o envio de um evento?

O processo é:

  1. Usuário clica em "Incluir Evento"
  2. Seleciona período, tipo de documento e espécie
  3. Escolhe o tipo de evento
  4. Ajusta valores quando necessário
  5. Ao enviar, os dados são gravados nas tabelas e uma task é disparada para o Smart Schedule + TSS
  6. O status é atualizado para "Enviado" se o processamento ocorrer sem falhas

O que acontece quando ocorre erro no envio?

Se houver falha (ex.: erro de schema):

Como funcionam os cancelamentos de eventos?

Por que o envio utiliza o MV_SPEDURL e não o MV_TAFSURL?

Clientes que usam o TAF sem NFe podem transmitir eventos?

Sim, desde que:

Como funcionam os ambientes de transmissão (produção/homologação)?

Para o envio dos eventos para a SEFAZ, é possível configurar se a transmissão será em ambiente de homologação (testes) ou produção.

Para alterar essa configuração, é necessário acessar o módulo 05 - faturamento, menu atualizações > Nf-e e Nfs-e > Nf-e Sefaz.

Confirmar as telas iniciais e ao acessar a rotina, ir em outras ações > Parâmetros > Eventos. Nesta tela, é possível alterar o ambiente da Sefaz no qual os eventos serão recepcionados.

Atenção: recomendamos que não seja utilizado o mesmo ambiente Protheus de homologação para envio em produção.

Como identificar eventos nas tabelas TSS?

O Monitor de Eventos terá relatórios de conferência?

Sim, mas não na versão atual.

A primeira entrega foi focada na operação do envio.
Relatórios, dashboards e melhorias no log estão previstos para a segunda fase.


Ocorreu um alerta de divergência de tamanho de campos nos campos T7A_CHVELE e C20_CHVELE. Como solucionar?




Para solucionar o alerta, o campo T7A_CHVELE deve ser alterado para o mesmo tamanho do campo C20_CHVELE via Configurador.

Qual filtro para seleção de nota por eventos?

Na inclusão manual do evento, a rotina não faz filtro de tipo de documento por evento, ou seja, irá trazer todas as notas normais, debito e credito, do modelo 55, que foram enviadas para SEFAZ e importadas para TAF, a seleção da nota, será feita pelo usuário, conforme evento selecionado.