O Isis separa catálogo e estoque de propósito:
- Catálogo é o conjunto de produtos da empresa (tenant). SKU único.
- Estoque é o saldo e o preço do produto em cada loja. Loja A pode ter 50 unidades a R$10; loja B, 0 unidades a R$12.
Criar um produto no catálogo
Catálogo → Novo produto:
- Nome (obrigatório).
- SKU (opcional mas recomendado — único por empresa).
- Descrição (até 2000 caracteres).
- Dados fiscais (pra emitir nota):
- NCM (8 dígitos) — consulte no site do SPED.
- CEST (7 dígitos, só pros produtos de ST).
- Origem (0 = nacional, 1-8 = importados — default 0).
- CFOP de venda (4 dígitos,
5102= revenda tributada intra-estadual).
- Comissão do vendedor (%) — override opcional; vazio = usa o padrão do vendedor.
Produto criado fica no catálogo mas ainda não está em nenhuma loja.
Adicionar ao estoque de uma loja
Selecione a loja no topo. Estoque → Adicionar ao estoque:
- Selecione o produto do catálogo.
- Preço varejo.
- Saldo inicial.
- Alerta de estoque mínimo (opcional, default 5).
Editar preço e estoque
Estoque → clicar no produto → Editar. Cada mudança de preço gera um registro no histórico de preços (audível em Relatórios → Histórico de preços).
Pra adicionar unidades sem editar o preço (ex.: chegou uma caixa), use Movimentações → Entrada — gera StockMovement rastreável com fornecedor associado.
Faixas de preço de atacado
Se a loja tem atacado habilitado (toggle em Configurações → Lojas), o estoque de cada produto aceita faixas:
10+→ R$ 8,0050+→ R$ 6,00100+→ R$ 5,00
O PDV aplica automaticamente a maior faixa que couber na quantidade. Veja também Tabelas de preço e atacado B2B.
Soft delete
Produtos no catálogo não são apagados — são marcados como is_active: false. Assim:
- Vendas antigas continuam referenciando o produto corretamente.
- Relatórios históricos não quebram.
- Pra reativar, edite e marque de novo como ativo.
Importação em massa
Catálogo → Importar CSV. Baixa um template, preenche com seus produtos e faz upload. O sistema:
- Valida cada linha (Zod no backend).
- Mostra preview com linhas OK e linhas com erro (campo + motivo).
- Se tem erro, devolve 422 com tudo detalhado — você corrige o CSV e re-envia.
- Sem erros, importa em uma transação.
Mesmo esquema vale pra Clientes e Fornecedores.