<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Materiais Fiscais]]></title><description><![CDATA[Materiais Fiscais]]></description><link>https://materiaisfiscais.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 04 Nov 2026 19:08:48 GMT</lastBuildDate><atom:link href="https://materiaisfiscais.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[SAP Business One: query de clientes sem compra há 90 dias (SQL Server)]]></title><description><![CDATA[Uma das perguntas mais comuns do comercial em fim de ano: "quem parou de comprar com a gente?". No SAP Business One dá para responder com uma consulta só…]]></description><link>https://materiaisfiscais.hashnode.dev/sap-business-one-query-de-clientes-sem-compra-h-90-dias-sql-server</link><guid isPermaLink="true">https://materiaisfiscais.hashnode.dev/sap-business-one-query-de-clientes-sem-compra-h-90-dias-sql-server</guid><category><![CDATA[SQL]]></category><category><![CDATA[# sqlserver]]></category><category><![CDATA[ERP]]></category><category><![CDATA[SAP]]></category><dc:creator><![CDATA[Materiais Fiscais]]></dc:creator><pubDate>Sat, 31 Oct 2026 16:03:16 GMT</pubDate><content:encoded><![CDATA[<p>Uma das perguntas mais comuns do comercial em fim de ano: "quem parou de comprar com a gente?". No SAP Business One dá para responder com uma consulta só, sem abrir o Crystal.</p>
<p>A ideia: pegar o cadastro de parceiros (OCRD), filtrar só clientes (CardType = 'C'), juntar com as notas fiscais de saída (OINV) não canceladas e ficar com quem tem a última nota há mais de 90 dias.</p>
<pre><code class="language-sql">SELECT T0.CardCode, T0.CardName, MAX(T1.DocDate) AS UltimaCompra
FROM OCRD T0
INNER JOIN OINV T1 ON T1.CardCode = T0.CardCode AND T1.CANCELED = 'N'
WHERE T0.CardType = 'C'
GROUP BY T0.CardCode, T0.CardName
HAVING MAX(T1.DocDate) &lt; DATEADD(day, -90, GETDATE())
ORDER BY UltimaCompra;
</code></pre>
<p>Três cuidados:</p>
<ol>
<li>O INNER JOIN deixa de fora quem nunca comprou. Se quiser ver também o cliente cadastrado que nunca recebeu nota, troque por LEFT JOIN e use HAVING MAX(T1.DocDate) IS NULL OR MAX(T1.DocDate) &lt; ...</li>
<li>Devolução (ORIN) não entra aqui. Se o cliente comprou e devolveu tudo, ele ainda aparece como "comprou". Para carteira de cobrança, isso costuma ser aceitável; para comissão, não.</li>
<li>Troque o 90 por um parâmetro ([%0]) no Query Manager para o comercial escolher o período sem pedir alteração.</li>
</ol>
<p>Rodando no Query Manager, dá para salvar como consulta e deixar no menu do usuário de vendas. Teste sempre numa base de testes antes.</p>
<p>Essa é uma das 20 do meu Pack 20 Queries SAP Business One: faturamento, aging de recebíveis, estoque, margem por item e outras, comentadas, em SQL Server e HANA, com PDF guia das tabelas e 3 pesquisas formatadas. É produto meu: <a href="https://pay.kiwify.com.br/hlEABhA?src=hashnode">https://pay.kiwify.com.br/hlEABhA?src=hashnode</a></p>
<p>Material independente. SAP e SAP Business One são marcas da SAP SE.</p>
]]></content:encoded></item><item><title><![CDATA[SAP Business One: query de curva ABC de itens por faturamento (SQL Server)]]></title><description><![CDATA[Quando chega a hora de planejar compra para o começo do ano, a pergunta clássica é: "quais itens fazem 80% do faturamento?". No SAP Business One dá para…]]></description><link>https://materiaisfiscais.hashnode.dev/sap-business-one-query-de-curva-abc-de-itens-por-faturamento-sql-server</link><guid isPermaLink="true">https://materiaisfiscais.hashnode.dev/sap-business-one-query-de-curva-abc-de-itens-por-faturamento-sql-server</guid><category><![CDATA[ERP]]></category><category><![CDATA[# sqlserver]]></category><category><![CDATA[SQL]]></category><category><![CDATA[SAP]]></category><dc:creator><![CDATA[Materiais Fiscais]]></dc:creator><pubDate>Fri, 30 Oct 2026 06:06:35 GMT</pubDate><content:encoded><![CDATA[<p>Quando chega a hora de planejar compra para o começo do ano, a pergunta clássica é: "quais itens fazem 80% do faturamento?". No SAP Business One dá para responder com uma query só, somando as linhas das notas de saída e acumulando o percentual.</p>
<h2>As tabelas que entram</h2>
<ul>
<li><code>OINV</code> e <code>INV1</code>: cabeçalho e linhas das notas fiscais de saída (A/R Invoice).</li>
<li><code>OITM</code>: cadastro de itens, só para trazer o nome.</li>
</ul>
<p>A ideia: somar <code>LineTotal</code> por item no período, ordenar do maior para o menor, calcular o percentual acumulado e classificar em A (até 80%), B (até 95%) e C (o resto).</p>
<h2>A query</h2>
<pre><code class="language-sql">WITH Vendas AS (
    SELECT
        L.ItemCode,
        SUM(L.LineTotal) AS Faturamento
    FROM INV1 L
    JOIN OINV H ON H.DocEntry = L.DocEntry
    WHERE H.CANCELED = 'N'
      AND H.DocDate &gt;= '2026-01-01'
      AND H.DocDate &lt;  '2027-01-01'
    GROUP BY L.ItemCode
),
Acumulado AS (
    SELECT
        V.ItemCode,
        V.Faturamento,
        SUM(V.Faturamento) OVER (ORDER BY V.Faturamento DESC, V.ItemCode
                                 ROWS UNBOUNDED PRECEDING) AS FatAcumulado,
        SUM(V.Faturamento) OVER () AS FatTotal
    FROM Vendas V
)
SELECT
    A.ItemCode,
    I.ItemName,
    A.Faturamento,
    CAST(100.0 * A.FatAcumulado / NULLIF(A.FatTotal, 0) AS DECIMAL(5,2)) AS [% acumulado],
    CASE
        WHEN 100.0 * A.FatAcumulado / NULLIF(A.FatTotal, 0) &lt;= 80 THEN 'A'
        WHEN 100.0 * A.FatAcumulado / NULLIF(A.FatTotal, 0) &lt;= 95 THEN 'B'
        ELSE 'C'
    END AS Curva
FROM Acumulado A
JOIN OITM I ON I.ItemCode = A.ItemCode
ORDER BY A.Faturamento DESC;
</code></pre>
<h2>Pontos de atenção</h2>
<ul>
<li><code>LineTotal</code> vem na moeda local e sem impostos da linha. Se o comercial quiser o valor com impostos, troque por <code>L.GTotal</code>.</li>
<li>Troque as datas pelo período pedido. No Query Manager, use <code>[%0]</code> e <code>[%1]</code> no lugar das datas para virar parâmetro.</li>
<li>Devoluções (<code>ORIN</code>/<code>RIN1</code>) não estão descontadas. Para curva por faturamento líquido, some as devoluções no CTE <code>Vendas</code> com sinal negativo.</li>
<li>A função de janela com <code>ROWS UNBOUNDED PRECEDING</code> pede SQL Server 2012 ou superior. Em HANA a sintaxe de janela é parecida; troque só o filtro de datas pelo formato do HANA.</li>
</ul>
<h2>Para levar mais pronto</h2>
<p>Se o próximo pedido do financeiro for faturamento por cliente e mês, faturamento líquido ou contas a receber vencidas com aging, juntei 5 consultas prontas, em SQL Server e HANA, num pacote de R$ 9: <a href="https://pay.kiwify.com.br/KPkxSbq?src=hashnode">Mini Pack 5 consultas SAP B1</a>. É produto meu.</p>
<p>SAP e SAP Business One são marcas da SAP SE; este é um material independente.</p>
]]></content:encoded></item><item><title><![CDATA[Amigo secreto e confra do time de tecnologia sem planilha bagunçada]]></title><description><![CDATA[Um checklist para times remotos e híbridos, com modelo de regras pronto para colar no Slack]]></description><link>https://materiaisfiscais.hashnode.dev/amigo-secreto-e-confra-do-time-de-tecnologia-sem-planilha-bagun-ada</link><guid isPermaLink="true">https://materiaisfiscais.hashnode.dev/amigo-secreto-e-confra-do-time-de-tecnologia-sem-planilha-bagun-ada</guid><category><![CDATA[Productivity]]></category><category><![CDATA[remote work]]></category><category><![CDATA[teamwork]]></category><category><![CDATA[management]]></category><category><![CDATA[checklist]]></category><dc:creator><![CDATA[Materiais Fiscais]]></dc:creator><pubDate>Fri, 30 Oct 2026 03:38:13 GMT</pubDate><content:encoded><![CDATA[<p>Todo fim de ano a mesma cena se repete: alguém abre uma planilha compartilhada chamada "Confra 2026 (FINAL)", outra pessoa cria uma cópia "FINAL v2", metade do time responde no Slack, a outra metade no WhatsApp, e na semana do evento ninguém sabe ao certo quantas pessoas vão, quem tirou quem no amigo secreto ou qual era o valor combinado do presente.</p>
<p>Times de tecnologia resolvem problemas de coordenação o ano inteiro. Dá para aplicar o mesmo raciocínio aqui: definir uma fonte única da verdade, deixar as regras explícitas antes de começar e automatizar o que for repetitivo. Abaixo está o checklist que funciona bem para times remotos, híbridos ou presenciais.</p>
<hr />
<h3>1. Defina o dono e a fonte única da verdade</h3>
<p>Antes de qualquer mensagem no canal, escolha <strong>uma pessoa responsável</strong> (ou um par, para não depender de quem pode tirar férias) e <strong>um único lugar</strong> onde a informação oficial mora.</p>
<ul>
<li>Lista de participantes: um só arquivo ou ferramenta, com permissão de edição restrita.</li>
<li>Canal de avisos: um canal ou thread fixada só para a confra. Discussão paralela pode existir, decisão oficial fica ali.</li>
<li>Datas-chave publicadas logo no primeiro aviso: prazo para confirmar presença, data do sorteio, data do evento.</li>
</ul>
<p>Se a informação aparece em dois lugares, ela vai divergir. É o mesmo princípio de não duplicar estado entre dois serviços.</p>
<h3>2. Monte a lista de participantes uma vez só</h3>
<p>Puxe a lista do sistema de RH, do diretório da empresa ou do próprio workspace do Slack, em vez de digitar nome por nome. Confira três coisas:</p>
<ul>
<li><strong>Quem entra</strong>: só o time, a área inteira, terceirizados, estagiários? Decida e escreva.</li>
<li><strong>Acompanhantes</strong>: a confra presencial aceita +1? Isso muda o número do buffet.</li>
<li><strong>Quem está remoto</strong>: em time híbrido, separe quem participa só do amigo secreto (com envio do presente) de quem vai ao evento presencial.</li>
</ul>
<h3>3. Confirmação de presença com prazo e sem ambiguidade</h3>
<p>"Reage com 👍 se for" não é confirmação, é palpite. Para fechar com buffet, espaço ou delivery, você precisa de:</p>
<ul>
<li>uma resposta explícita (vou / não vou / talvez até tal data);</li>
<li>o número de acompanhantes;</li>
<li>restrições alimentares, se houver comida;</li>
<li>um prazo claro, com um lembrete dois ou três dias antes.</li>
</ul>
<p>No fim do prazo, quem não respondeu conta como "não vai" para efeito de pedido. Avise isso no primeiro aviso, e não no último.</p>
<h3>4. O sorteio: sigilo de verdade e restrições</h3>
<p>O papelzinho falha em time remoto por motivos óbvios, e o "alguém sorteia e manda no privado" falha porque essa pessoa fica sabendo de todos os pares. O mínimo que um sorteio decente precisa ter:</p>
<ul>
<li><strong>Ninguém, nem quem organiza, vê os pares.</strong> Cada participante só descobre quem tirou.</li>
<li><strong>Ninguém tira a si mesmo.</strong> Parece óbvio, mas script improvisado às vezes esquece.</li>
<li><strong>Restrições configuráveis</strong>: casais que trabalham no mesmo time, gestor e liderado direto, ou quem pediu para não tirar determinada pessoa.</li>
<li><strong>Refazer sem drama</strong>: se alguém entra ou sai depois do sorteio, existe um jeito de sortear de novo sem expor os pares anteriores.</li>
</ul>
<p>Se você pensou em escrever um script para isso, é um ótimo exercício de permutação sem ponto fixo (derangement). Só lembre que quem roda o script consegue ver o resultado, a não ser que o envio seja automático e o log não guarde os pares.</p>
<h3>5. Regras de valor e de troca, escritas antes do sorteio</h3>
<p>A maior parte das brigas do amigo secreto vem de regra combinada de boca. Escreva e fixe no canal antes de sortear:</p>
<ul>
<li>valor mínimo e máximo do presente;</li>
<li>se vale vale-presente, presente digital ou doação;</li>
<li>como funciona para quem está remoto (envio pelo correio, entrega por app, data limite de postagem);</li>
<li>se haverá lista de desejos e até quando ela pode ser editada;</li>
<li>o que acontece se alguém desistir depois do sorteio.</li>
</ul>
<h4>Modelo para colar no Slack ou no WhatsApp</h4>
<pre><code class="language-text">🎁 Amigo secreto do time — regras

• Valor: entre R$ ___ e R$ ___
• Sorteio: dia __/__. Cada pessoa recebe quem tirou de forma privada.
• Lista de desejos: preencha até __/__ (ajuda muito quem tirou você).
• Quem está remoto: envie o presente até __/__ para chegar antes da troca.
• Troca: dia __/__, às __h, [local ou link da call].
• Desistência depois do sorteio: avise a organização até __/__
  para refazermos o sorteio sem expor ninguém.
• Dúvidas: só nesta thread 🙏
</code></pre>
<p>Troque os campos e fixe a mensagem. Parece burocrático, mas evita a conversa constrangedora de dezembro.</p>
<h3>6. Check-in no dia do evento</h3>
<p>Em confra presencial com muita gente, a lista impressa na entrada vira gargalo: fila, busca por sobrenome, nome escrito errado. Algumas alternativas:</p>
<ul>
<li><strong>QR Code por convidado confirmado</strong>: lê na entrada e a presença fica registrada.</li>
<li><strong>Lista digital pesquisável</strong> no celular de quem recebe as pessoas, se não houver QR.</li>
<li><strong>Exportação final</strong> (CSV) com quem confirmou e quem compareceu, útil para fechar a conta com o fornecedor e para o planejamento do ano seguinte.</li>
</ul>
<h3>7. Feche o ciclo</h3>
<p>Depois do evento, publique um resumo curto: quantas pessoas foram, o que funcionou, o que mudar. Guarde a lista e as regras num lugar fácil de achar. No ano que vem, quem organizar começa do segundo passo, e não do zero.</p>
<hr />
<h3>Resumo do checklist</h3>
<ul>
<li><input disabled type="checkbox" /> Responsável definido e um único canal oficial</li>
<li><input disabled type="checkbox" /> Lista de participantes importada, com critério de quem entra</li>
<li><input disabled type="checkbox" /> Confirmação de presença com prazo e número de acompanhantes</li>
<li><input disabled type="checkbox" /> Sorteio com sigilo, sem autossorteio e com restrições</li>
<li><input disabled type="checkbox" /> Regras de valor e de troca fixadas antes do sorteio</li>
<li><input disabled type="checkbox" /> Check-in no dia sem lista impressa</li>
<li><input disabled type="checkbox" /> Resumo e arquivamento para o próximo ano</li>
</ul>
<hr />
<h3>Se não quiser montar tudo na mão</h3>
<p>Dá para fazer todo esse fluxo com planilha, formulário e um script de sorteio, e para muitos times isso basta. Se preferir algo pronto, o TeConvidei junta confirmação de presença, sorteio do amigo secreto com sigilo entre os pares e check-in por QR Code num link só. O sorteio do amigo secreto é grátis, e a confra sai por R$ 29,90 por evento, pagamento único. Os detalhes para empresas estão em <a href="https://www.teconvidei.com/empresas?utm_source=hashnode&amp;utm_medium=social&amp;utm_campaign=confra2026">www.teconvidei.com/empresas</a>.</p>
]]></content:encoded></item><item><title><![CDATA[SAP Business One: query de itens com estoque e sem venda nos últimos 90 dias]]></title><description><![CDATA[Fim de ano é quando o comercial pergunta: "o que está parado no estoque e dá pra entrar na promoção?". No SAP Business One isso sai com uma query só…]]></description><link>https://materiaisfiscais.hashnode.dev/sap-business-one-query-de-itens-com-estoque-e-sem-venda-nos-ltimos-90-dias</link><guid isPermaLink="true">https://materiaisfiscais.hashnode.dev/sap-business-one-query-de-itens-com-estoque-e-sem-venda-nos-ltimos-90-dias</guid><category><![CDATA[SAP]]></category><category><![CDATA[SQL]]></category><category><![CDATA[ERP]]></category><category><![CDATA[# sqlserver]]></category><dc:creator><![CDATA[Materiais Fiscais]]></dc:creator><pubDate>Thu, 29 Oct 2026 12:03:49 GMT</pubDate><content:encoded><![CDATA[<p>Fim de ano é quando o comercial pergunta: "o que está parado no estoque e dá pra entrar na promoção?". No SAP Business One isso sai com uma query só, cruzando o saldo por depósito com as linhas das notas de saída.</p>
<h2>As tabelas que entram</h2>
<ul>
<li><code>OITM</code>: cadastro de itens (<code>ItemCode</code>, <code>ItemName</code>, <code>InvntItem</code>).</li>
<li><code>OITW</code>: saldo por depósito (<code>WhsCode</code>, <code>OnHand</code>).</li>
<li><code>OINV</code> e <code>INV1</code>: cabeçalho e linhas das notas fiscais de saída (A/R Invoice).</li>
</ul>
<p>A ideia: pegar todo item de estoque com saldo maior que zero e excluir os que aparecem em alguma nota de saída não cancelada nos últimos 90 dias.</p>
<h2>A query</h2>
<pre><code class="language-sql">SELECT
    T0.ItemCode,
    T0.ItemName,
    T1.WhsCode,
    T1.OnHand,
    (SELECT MAX(H.DocDate)
       FROM INV1 L
       JOIN OINV H ON H.DocEntry = L.DocEntry
      WHERE L.ItemCode = T0.ItemCode
        AND H.CANCELED = 'N') AS [Ultima venda]
FROM OITM T0
JOIN OITW T1 ON T1.ItemCode = T0.ItemCode
WHERE T0.InvntItem = 'Y'
  AND T1.OnHand &gt; 0
  AND NOT EXISTS (
        SELECT 1
          FROM INV1 L
          JOIN OINV H ON H.DocEntry = L.DocEntry
         WHERE L.ItemCode = T0.ItemCode
           AND H.CANCELED = 'N'
           AND H.DocDate &gt;= DATEADD(DAY, -90, GETDATE())
  )
ORDER BY T1.OnHand DESC;
</code></pre>
<h2>Pontos de atenção</h2>
<ul>
<li>Troque <code>-90</code> pelo período que o comercial pedir. Para virar parâmetro no Query Manager, use <code>[%0]</code> no lugar do número.</li>
<li>A coluna "Última venda" vem nula quando o item nunca foi faturado. Esses costumam ser os primeiros candidatos à promoção (ou à baixa).</li>
<li>Se a empresa usa devolução (<code>ORIN</code>), a query ainda conta a nota de saída original como venda, o que costuma ser o comportamento esperado.</li>
<li>Em HANA, troque <code>DATEADD(DAY, -90, GETDATE())</code> por <code>ADD_DAYS(CURRENT_DATE, -90)</code>.</li>
</ul>
<h2>Para levar mais pronto</h2>
<p>Se o próximo pedido do financeiro for faturamento, notas menos devoluções ou contas a receber vencidas, juntei 5 consultas prontas (faturamento do período, por cliente e mês, faturamento líquido, vencidas com dias de atraso e aging por faixa), em SQL Server e HANA, num pacote de R$ 9: <a href="https://pay.kiwify.com.br/KPkxSbq?src=hashnode">Mini Pack 5 consultas SAP B1</a>. É produto meu.</p>
<p>SAP e SAP Business One são marcas da SAP SE; este é um material independente.</p>
<p>P.S. Organizando a confra da firma? O sorteio de amigo secreto online é grátis: <a href="https://www.teconvidei.com/amigo-secreto?utm_source=hashnode&amp;utm_medium=social&amp;utm_campaign=confra2026">teconvidei.com/amigo-secreto</a></p>
]]></content:encoded></item><item><title><![CDATA[CIOT no MDF-e: como evitar a rejeição 684 antes de 23/11/2026]]></title><description><![CDATA[O que muda na validação do MDF-e rodoviário, quem é afetado e um checklist para quem mantém emissor ou TMS.]]></description><link>https://materiaisfiscais.hashnode.dev/ciot-no-mdf-e-como-evitar-a-rejei-o-684-antes-de-23-11-2026</link><guid isPermaLink="true">https://materiaisfiscais.hashnode.dev/ciot-no-mdf-e-como-evitar-a-rejei-o-684-antes-de-23-11-2026</guid><category><![CDATA[mdf-e]]></category><category><![CDATA[ERP]]></category><category><![CDATA[backend]]></category><category><![CDATA[brasil]]></category><dc:creator><![CDATA[Materiais Fiscais]]></dc:creator><pubDate>Thu, 29 Oct 2026 00:07:40 GMT</pubDate><content:encoded><![CDATA[<p>Se você mantém um emissor de MDF-e, um TMS ou a integração fiscal de uma transportadora, a NT MDF-e 2026.001 merece atenção agora. A regra de validação que gera a <strong>rejeição 684 ("CIOT deverá ser informado")</strong> está em homologação desde 21/09/2026 e entra em produção em <strong>23/11/2026</strong>.</p>
<h2>De onde vem a regra</h2>
<ul>
<li><strong>Ajuste SINIEF 03/2026 (CONFAZ):</strong> torna obrigatório informar o CIOT no MDF-e nas prestações de transporte rodoviário de cargas por conta de terceiros e mediante remuneração.</li>
<li><strong>NT MDF-e 2026.001:</strong> cria a validação 684 no modal rodoviário.</li>
<li><strong>Resolução ANTT nº 6.078/2026</strong> (altera a 5.862/2019): prevê multa de R$ 10.500 por deixar de cadastrar a Operação de Transporte ou de informar/vincular o CIOT no MDF-e quando devido (art. 19).</li>
</ul>
<h2>Quem cai na validação</h2>
<p>Pela NT, no modal rodoviário:</p>
<ul>
<li><code>tpEmit = 1</code> (prestador de serviço de transporte, com CT-e);</li>
<li><code>tpEmit = 3</code> (CT-e globalizado);</li>
<li><code>tpEmit = 2</code> <strong>com</strong> <code>tpTransp</code> informado.</li>
</ul>
<p>Carga própria sem frete a terceiros, em regra, fica fora da 684, mas vale confirmar o enquadramento caso a caso.</p>
<h2>A ordem que o sistema precisa respeitar</h2>
<ol>
<li>Gerar o <strong>CIOT</strong> (12 dígitos) antes de iniciar a operação.</li>
<li>Emitir o(s) <strong>CT-e</strong> (o CT-e não tem campo de CIOT).</li>
<li>Emitir o <strong>MDF-e</strong> com o grupo <code>infCIOT</code> (CIOT + CPF/CNPJ de quem gerou).</li>
<li>Encerrar MDF-e e CIOT depois da viagem.</li>
</ol>
<p>Na prática, o ponto de quebra é o passo 3 acontecer antes do 1: depois de 23/11, isso vira rejeição e caminhão parado no pátio.</p>
<h2>Armadilhas que valem uma validação no seu código</h2>
<table>
<thead>
<tr>
<th>Erro</th>
<th>Resultado</th>
</tr>
</thead>
<tbody><tr>
<td>CIOT colado com dígitos extras da consulta ANTT</td>
<td>Campo rejeita (use só os 12 dígitos)</td>
</tr>
<tr>
<td>CPF/CNPJ inválido no <code>infCIOT</code></td>
<td>Rejeição 716</td>
</tr>
<tr>
<td>Documento de quem não gerou o CIOT</td>
<td>Divergência na fiscalização ANTT</td>
</tr>
<tr>
<td>CIOT reaproveitado de outra viagem ou placa</td>
<td>Divergência na fiscalização</td>
</tr>
<tr>
<td>MDF-e emitido antes do CIOT (após 23/11/2026)</td>
<td>Rejeição 684</td>
</tr>
</tbody></table>
<h2>Sugestões para quem desenvolve</h2>
<ul>
<li>Bloquear no front a emissão do MDF-e rodoviário com <code>tpEmit</code> 1 ou 3 (ou 2 com <code>tpTransp</code>) sem <code>infCIOT</code> preenchido, antes de ir à SEFAZ.</li>
<li>Validar tamanho (12 dígitos) e dígito do CPF/CNPJ no <code>infCIOT</code> localmente.</li>
<li>Rodar os MDF-e reais de hoje contra a homologação para ver quantos já cairiam na 684.</li>
</ul>
<p>Regras mudam: confira sempre a NT e o MOC vigentes no portal do MDF-e (SVRS), a legislação da ANTT e o CONFAZ. Conteúdo informativo, não substitui orientação contábil ou jurídica.</p>
<hr />
<p><em>Produto meu, para quem quiser a versão impressa:</em> fiz uma cola de 1 página com esse fluxo, os campos do <code>infCIOT</code> e as rejeições mais comuns, por R$ 7: <a href="https://pay.kiwify.com.br/yYrsRGP?src=hashnode">https://pay.kiwify.com.br/yYrsRGP?src=hashnode</a></p>
<p>— Materiais Fiscais</p>
<p>P.S. Fim de ano chegando: se você organiza o amigo secreto da confra da firma, dá para fazer o sorteio online e grátis aqui: <a href="https://www.teconvidei.com/amigo-secreto?utm_source=hashnode&amp;utm_medium=social&amp;utm_campaign=confra2026">sorteio de amigo secreto</a>.</p>
]]></content:encoded></item></channel></rss>