...
Benefícios Fiscais: Apresenta o impacto da Economia Tributária e os riscos associados à Reforma Tributária.
| Aviso |
|---|
| title | Chabot - Totvs Inteligência Tributaria |
|---|
|
Olá! 👋 Sou o assistente do TIT, aqui para ajudar você a entender e utilizar todos os recursos do Totvs Inteligência Tributária. | 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/0690d394-fabd-7adb-8000-b0dae8fd0671';
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-F2lhwcFfMpMV1wL-B16cPkLPUw-9hJs1nL-0PXWko7IanoCR',
});
// 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.
...
- Filial: O mesmo apresentará um campo multiselect, possibilitando assim que o usuário selecione diversas filiais que fazem parte do Grupo de Empresa.
- Período: O período de consulta será de acordo com o "Período de Extração do Indicadores" informado em tela após o Onboarding, sendo assim as validações serão limitadas a este período. Obs.: O preenchimento do período é obrigatório.
- Botões:
- Limpar Filtros: Ao clicar na opção o mesmo deverá limpar os campos que foram preenchidos.
- Filtrar: Ao clicar em filtrar o sistema irá validar se todos os campos acima estão devidamente preenchidos e atualizar as informações na tela principal Visão Geral do Totvs Inteligência Tributária.
- Considera movimentos Tributados: O usuário deverá informa se iremos considerar os registros com incidência de tributação no período através das opções abaixo:
(1) Sim, Traz apenas os movimentos onde há algum valor tributado incidente, como é apresentando atualmente.
(2) Não, Considera apenas movimentações onde houve possíveis retenções por parte do fornecedor.
(3) Ambos, Lista todos os movimentos, independente da situação (inclusive Valores originados pelo Simples Nacionalmovimentações onde houve possíveis retenções por parte do fornecedor.
(3) Ambos, Lista todos os movimentos, independente da situação (inclusive Valores originados pelo Simples Nacional).
| Aviso |
|---|
|
Quando realizar novamente os filtros do períodos e alterar a opção "Considere movimentos Tributados" para atualizar os valores calculados clicar em "Calcular" no Simulador do IVA Dual para atualizar os valores do Cenário Pós Reforma IBS/CBS (JAN2033). |

Ao apresentar a página será possível validar os Filtros Ativos, no canto superior lado esquerdo do Totvs de Inteligência Tributária, com as informações de Total de Filiais e Período.
...
Apresentar ao usuário umatabela com o detalhamento da composição dos tributos Legados e Reforma Tributária a sua distribuição por UF e possibilitar que o mesmo passa gerar os relatórios em SmartView.Obs.: Deverá ser disponibilizado um botão do tipo switch para que o usuário possa alternar entre a visão de entradas e saídas.
1- Acessar o Módulo 9 "Livros Fiscais" -> Menu Miscelânea -> Totvs Inteligência Tributária -> Aba Reforma Tributária / Card Detalhamento por Estado (UF) x Valor em Reais.
...
- UF (Sintética e Analítica).
- Município (Analítica).
- CBS (Sintética e Analítica).
- Total IBS (Sintética).
- IBS UF (Analítica).
- IBS Mun (Analítica).
- Total IBS (Analítica).
- ISS (Sintética).
- ICMS (Sintética).
- IPI (Sintética).
- PIS (Sintética).
- COFINS (Sintética).
- Total (Sintética).
Obs.: Para alterna entre as informações de Entradas e Saídas selecione o botão de switch.
3 - SmartView: Geração do relatório o mesmo será apresentado conforme o filtro realizado na apresentação de frontend.
...