/* global React */ const { brl, pct, intFmt } = window; const _fmtDate = (iso) => { if (!iso) return '—'; const d = new Date(iso); return d.toLocaleDateString('pt-BR') + ' · ' + d.toLocaleTimeString('pt-BR', { hour:'2-digit', minute:'2-digit' }); }; // ===================================================================== // HISTÓRICO DE SIMULAÇÕES — agora conectado ao Supabase // ===================================================================== function HistoricoSimView({ items, loaded, onReload, onView, onDelete, disabled }) { return ( <>

Histórico de simulações

{loaded ? `${items.length} registros` : 'Não carregado'}
{!loaded && (
Clique em Atualizar para buscar o histórico do banco. Cada simulação salva é um snapshot imutável.
)} {loaded && items.length === 0 && (
Nenhuma simulação salva ainda. Clique em Salvar simulação na aba Venda para registrar a primeira.
)} {loaded && items.length > 0 && (
ID
Produto
Data
Qtd
Valor
Canal
Lucro líq.
Ações
{items.map(s => (
#{String(s.seq).padStart(4, '0')}
{s.produto_nome}
{_fmtDate(s.created_at)}
{intFmt(s.qtd)}
{brl(s.valor_total)}
{s.marketplace ? 'MKT' : 'Direto'}
= 0 ? 'var(--positive)' : 'var(--negative)' }}> {brl(s.lucro_liq)}
))}
)} ); } // ===================================================================== // HISTÓRICO DE PRODUTOS — conectado ao Supabase // ===================================================================== function HistoricoProdView({ items, loaded, onReload, onView, onDelete, disabled }) { return ( <>

Versões de produtos

{loaded ? `${items.length} versões` : 'Não carregado'}
{!loaded && (
Clique em Atualizar para buscar as versões de produto do banco. Cada save é uma versão imutável.
)} {loaded && items.length === 0 && (
Nenhuma versão salva ainda. Vá em uma aba de produto e clique em Salvar produto.
)} {loaded && items.length > 0 && (
ID
Produto
NCM
Qtd / dia
CMV / un
Data
Ações
{items.map(s => (
v#{String(s.seq).padStart(4, '0')}
{s.nome}
{s.ncm || '—'}
{intFmt(s.qtd_dia)}
{brl(s.cmv_calc, 4)}
{_fmtDate(s.created_at)}
))}
)} ); } // ===================================================================== // PARÂMETROS // ===================================================================== function ParamsView({ params, setParams }) { const set = (patch) => setParams({ ...params, ...patch }); return ( <>
Alíquotas e premissas do regime Lucro Real. Alterações aqui afetam todos os cálculos.
01 Alíquotas de tributos
set({ icmsSp: n })} />
art. 52, RICMS/SP
set({ ipi: n })} />
TIPI Cap. 39
set({ pis: n })} />
set({ cofins: n })} />
set({ irpj: n })} />
sobre lucro real
set({ csll: n })} />
02 Premissas de operação
set({ fixos: n })} />
overhead administrativo, financeiro, comercial
10% acima de R$ 20k/mês
não aplicado em conta unitária
); } // ===================================================================== // UFs // ===================================================================== function UFsView() { return ( <>
Alíquotas interestaduais a partir de SP e alíquotas internas dos estados de destino — usadas para DIFAL pela base dupla (LC 190/2022).
UF
Interestadual (SP → UF)
Interna destino
Diferencial
Visual
{window.UFS.map(([uf, ie, ii]) => { const diff = ii - ie; return (
{uf}
{pct(ie)}
{pct(ii)}
+{pct(diff)}
); })}
); } window.HistoricoSimView = HistoricoSimView; window.HistoricoProdView = HistoricoProdView; window.ParamsView = ParamsView; window.UFsView = UFsView;