# Gestão de MACs — regras implementadas

## Hierarquia

- **ADM**
  - MACs de clientes: ilimitados.
  - Cadastro/renovação anual de clientes ADM não consome saldo.
  - Pode manter até **500.000 MACs disponíveis por revenda ou sub-revenda**.

- **Revenda**
  - Pode receber até **500.000 MACs disponíveis** do ADM.
  - Pode distribuir para cada sub-revenda sob sua gestão até **50.000 MACs disponíveis**.
  - A distribuição reduz o saldo da revenda; uma devolução/aumento negativo na sub-revenda devolve o saldo ao pai.

- **Sub-revenda**
  - Quando abastecida por uma revenda, seu saldo máximo é **50.000 MACs**.
  - Quando abastecida diretamente pelo ADM, o limite de saldo é **500.000 MACs**.

## Consumo

- MAC em modo teste: não consome crédito.
- Ativação anual de MAC novo: consome 1 crédito.
- Renovação anual de MAC expirado: consome 1 crédito.
- As operações de consumo são feitas dentro de transação e usam `UPDATE ... WHERE macs > 0`, reduzindo risco de dupla utilização em requisições concorrentes.

## Auditoria

A tabela `mac_movements` registra:
- quem movimentou;
- origem/tipo;
- destino;
- quantidade;
- saldo após a operação;
- motivo;
- referência;
- data/hora.

Saldos existentes antes da instalação do módulo recebem uma entrada de migração `legacy_balance_import`, sem alterar seus valores.

## Interface

Foi adicionada a página **Gestão de MACs** para ADM, revenda e sub-revenda, com:
- resumo do saldo;
- limites;
- histórico recente;
- atalhos para distribuição/cadastro.

O cabeçalho do ADM mostra `MACs INFINITOS`, deixando explícito que o estoque de MACs de clientes do ADM é ilimitado.

## Contabilidade Revenda → Sub-revenda

- Adicionar X MACs à sub-revenda reduz X do saldo disponível da Revenda.
- Remover X MACs da sub-revenda devolve X ao saldo disponível da Revenda.
- A operação é rejeitada se a sub-revenda não pertencer à Revenda conectada.
- A operação é rejeitada se o saldo da Revenda for insuficiente.
- O saldo da sub-revenda nunca fica negativo nem ultrapassa 50.000 quando pertence a uma Revenda.
- As duas pontas da movimentação são registradas no histórico dentro da mesma transação.
