# Domínio de Produtos

## Princípio

O produto contém somente seus dados mestres. Preços, tributação e saldos são entidades relacionadas e não colunas fixas do produto. Isso permite atender varejo e distribuição sem duplicar produtos.

## Produto (tela 101)

### Identificação

- código sequencial automático por empresa;
- tipo: mercadoria, serviço, composição ou kit;
- descrição, descrição reduzida, referência/SKU;
- GTIN/EAN comercial;
- marca, grupo, subgrupo, seção, linha e unidade padrão;
- ativo e observações.

### Comercial

- custo de referência;
- margem sugerida e desconto máximo;
- comissão padrão;
- quantidade mínima e múltipla de venda;
- venda fracionada;
- peso e dimensões.

Os preços efetivos pertencem às tabelas de preço, não ao produto.

### Fiscal básico

- NCM;
- CEST;
- origem da mercadoria;
- GTIN e unidade tributável;
- código de benefício fiscal, quando aplicável.

Alíquotas, CST/CSOSN, CFOP e demais tratamentos pertencem às regras fiscais.

### Estoque

- controla estoque;
- permite saldo negativo;
- lote, série e validade, quando aplicáveis;
- estoque mínimo/máximo de referência.

Saldo, reserva, localização e limites específicos pertencem à combinação produto + estoque.

## Tabelas de preço

Entidades previstas:

- `tabelas_preco`: empresa, código, descrição, moeda, vigência e status;
- `tabela_preco_itens`: tabela, produto, preço, quantidade mínima e vigência;
- `cliente_tabela_preco`: associação de cliente à tabela preferencial;
- regras de prioridade para tabela do cliente, canal, condição comercial e tabela padrão.

O histórico de preços deverá ser preservado para auditoria.

## Multiestoque

Entidades previstas:

- `estoques`: depósitos/lojas da empresa;
- `produto_estoques`: parâmetros do produto em cada estoque;
- `movimentos_estoque`: razão imutável de entradas, saídas e transferências;
- `saldos_estoque`: projeção de saldo físico, reservado e disponível;
- `enderecos_estoque`: rua, corredor, prateleira e posição, quando usados.

Transferências geram dois movimentos vinculados. O saldo não deve ser alterado diretamente sem um movimento de origem.

## Motor fiscal

Entidades previstas:

- `ncm` e suas vigências;
- `regras_fiscais` por empresa, regime, operação, origem/destino, perfil do cliente e NCM;
- tributos da regra separados por ICMS, ICMS-ST/FCP, IPI, PIS e COFINS;
- exceções por produto somente quando necessárias;
- versionamento e vigência das regras.

Ordem inicial de resolução:

1. exceção específica do produto;
2. regra por NCM + UF origem/destino + operação + perfil do cliente;
3. regra por NCM + operação;
4. regra fiscal padrão da empresa;
5. bloqueio da operação quando nenhuma regra válida for encontrada.

O documento fiscal deve armazenar uma cópia do resultado calculado; alterações futuras nas regras não podem mudar documentos já emitidos.

## Evolução sugerida

1. Cadastro mestre do produto.
2. Cadastro de estoques e parâmetros produto/estoque.
3. Tabelas de preço e associação a clientes.
4. Catálogo de NCM e regras fiscais.
5. Movimentação e saldo de estoque.
6. Integração com pedidos e faturamento.

## Separação das telas de preço

- `108 — Cadastro de Tabelas de Preço`: somente código, descrição, moeda, vigência, status e parâmetros da tabela.
- `109 — Preços por Produto`: seleção da tabela e manutenção de produto, preço, quantidade mínima e vigência.

Editar o cadastro da tabela nunca deve apagar ou substituir seus itens. Permissões para administrar tabelas e alterar preços também serão independentes.
# Estoque por produto

Os saldos atuais são armazenados em `produto_estoques`, com uma linha única para cada combinação de `produto_id` e `estoque_id`. O serviço valida que ambos pertencem à mesma empresa antes da gravação.

A grid da aba Estoque apresenta todos os estoques não excluídos da empresa atual. Estoques ainda sem associação aparecem com quantidade zero. Esta estrutura representa o saldo corrente; quando o módulo de movimentações for criado, entradas, saídas, ajustes e transferências deverão atualizar o saldo de forma transacional e manter seu próprio histórico imutável.
