Regras fiscais e apuração
Matching NCM/CFOP/UF, lançamento FAY002 e fechamento do período.
Matching (FAY006)
Critérios: NCM (prefixo mais longo pontua mais), CFOP, UF origem/destino, regime (SIMPLES_NACIONAL | LUCRO_PRESUMIDO | LUCRO_REAL), tipo de contribuinte, CEST, natureza, vigência, ativa.
RegraFiscalService.calcularImpostos(filialId, input):
- Busca a regra aplicável (score).
baseGeral = produto + frete + seguro + despesas − desconto.- ICMS com redução de BC; ICMS-ST (Convênio 142/2018) — substituto calcula; substituído CST 60 / CSOSN 500 não. Interna: MVA original; interestadual: MVA ajustada. DIFAL não mistura com ST no mesmo item.
- Lançamento rascunho idempotente em
FAY002(chave empresa+doc+item+tributo+versão). - IPI / PIS / COFINS / IBS / CBS / ISS conforme CST e flags de XML.
- DIFAL via
FAY007se UFs diferem,aplicaDifale o item não é ST.
Tabelas auxiliares: FAY001 IBS/CBS por ano, FAY003 MVA, FAY004 cClassTrib, FAY005 ajuste SPED, FAY007 alíquotas UF.
Onda de classificação (entrada/saída)
Importação, devolução, bonificação, remessa, ativo, uso/consumo, ST retido. Uso/consumo na entrada não credita. Devolução na saída lança crédito. ST retido na saída = ressarcimento (ICMS_ST crédito). IP ENTRY.BEFORE_CLASSIFY observa; não altera a regra sozinho.
Fechar período
POST /regras-fiscais/livro/:filialId/fechar corpo { "periodo": "YYYY-MM" } promove conferido → apurado.
IPs: IP.FISCAL.APURACAO.BEFORE_CLOSE / AFTER_CLOSE (wired, fail-open).
Eventos: fiscal.apuracao.closed / reopened.
EFD ICMS/IPI: com fiscal.apuracao.efd=false o Bloco E soma documentos (comportamento clássico). Flag on: Bloco E lê FAY002 apurado, sem recalcular alíquota.
infCpl NF-e 55
Template FAI011.nfe_inf_cpl_template ({pedido}, {duplicatas}, …) + override FAT003.nfe_inf_cpl no faturamento. NFC-e 65 usa texto atual de referência ao doc. de saída.
