Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Índice
outlinetrue

Introdução

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.

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, desdeque 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.


Dica
titleChatBot - Monitor de Eventos

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

HTML
<!-- 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 {
      
Dica
titleChatBot - Monitor de Eventos

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

HTML
<!-- 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>  overflow:visible !important;
  }
</style>

Roadmap

O Monitor de Eventos foi desenvolvido para atender às exigências da legislação vigente. 
Atualmente, o processo ocorre de forma manual para registro de situações específicas de uma operação (como recebimento, perda, transferência de crédito, etc.)

A automatização do preenchimento dos eventos, a partir da integração com os demais módulos do Backoffice já está prevista em nosso roadmap, com o objetivo de disponibilizar essa evolução o quanto antes no produto padrão.

Recomendamos fortemente que as necessidades e sugestões relacionadas ao Monitor de Eventos sejam cadastradas na Central Colaborativa, pois essas contribuições são fundamentais para priorização, evolução contínua do produto e alinhamento com as demandas dos clientes.
Ficamos à disposição para esclarecimentos adicionais.

Procedimento Para Uso

Pré-Requisitos.

...

Esses eventos ajustam valores de débito e crédito de IBS e CBS no Portal de Apuração 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?

...

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)

O Monitor de Eventos funciona com outros modelos de nota?

Não. Atualmente funciona somente para a NFe modelo 55.TSI - TAF Service Integration

Onde os dados dos eventos são gravados?

...

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):

  • O usuário pode clicar em "Editar", corrigir e salvar.
  • Uma nova task é criada
  • Todo o histórico é registrado na T7D - Log de processamento

Como funcionam os cancelamentos de eventos?

  • Após enviar à SEFAZ, o evento não pode mais ser editado, apenas cancelado
  • O cancelamento gera nova task no TSS
  • Status pode ser “Cancelado com sucesso” ou “Falha de cancelamento”
  • O log do cancelamento também é gravado na T7D - Log de processamento

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

  • O SPED URL garante o mesmo mecanismo de transmissão da nota fiscal, pois os eventos são complementos da própria NFe
  • O envio da nota fiscal e do evento é interdependente
  • A Central de Diagnóstico da Reforma (em construção) também reforça o uso do MV_SPEDURL

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?

  • Cada evento transmitido será gravado na tabela SPED150
  • ID de transmissão da SPED150 é gravada na tabela T7D - Log de processamento

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

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

AutoContida 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):

  • O usuário pode clicar em "Editar", corrigir e salvar.
  • Uma nova task é criada
  • Todo o histórico é registrado na T7D - Log de processamento

Como funcionam os cancelamentos de eventos?

  • Após enviar à SEFAZ, o evento não pode mais ser editado, apenas cancelado
  • O cancelamento gera nova task no TSS
  • Status pode ser “Cancelado com sucesso” ou “Falha de cancelamento”
  • O log do cancelamento também é gravado na T7D - Log de processamento

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

  • O SPED URL garante o mesmo mecanismo de transmissão da nota fiscal, pois os eventos são complementos da própria NFe
  • O envio da nota fiscal e do evento é interdependente
  • A Central de Diagnóstico da Reforma (em construção) também reforça o uso do MV_SPEDURL

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?

  • Cada evento transmitido será gravado na tabela SPED150
  • ID de transmissão da SPED150 é gravada na tabela T7D - Log de processamento

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?


Image Added



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 selecionadoA primeira entrega foi focada na operação do envio.
Relatórios, dashboards e melhorias no log estão previstos para a segunda fase.