Suprimento de Fundos
Fundo fixo (caixinha permanente) e adiantamentos eventuais com prestação de contas
Quando usar
Para gastos miúdos sem cotação:
- Comprar broca, EPI, ferragem
- Chaveiro emergencial
- Material de escritório da obra
- Manutenção miúda
Tem 2 modalidades:
| Modalidade | Quando |
|---|---|
| Fundo fixo | Caixinha permanente do mestre/encarregado (ex: R$ 5k). Gasta, sistema repõe. |
| Adiantamento eventual | Valor único pra um gasto específico (ex: R$ 800 para comprar broca). Tem prazo de prestar contas. |
Onde acessar
Sidebar Execução → Fundos ou direto /projects/[id]/fundos.
Criar fundo
Novo fundo — campos comuns:
- Tipo (fundo_fixo / adiantamento_eventual)
- Finalidade
- Responsável (auto-completo de membros da org)
- Valor inicial
- Limite por gasto individual (opcional)
- Categorias permitidas (multi-select toggleável):
- Ferragem, EPI, Ferramenta pequena, Transporte, Manutenção, Limpeza, Escritório, Alimentação emergencial, Outros
Específico de fundo fixo
- Saldo mínimo: gatilho de reposição
Específico de adiantamento
- Prazo de prestação (default 5 dias) — após esse prazo, bloqueia novos adiantamentos do mesmo responsável
Aprovação
Vai pelo suprimento_fundos com alçada por valor:
- Qualquer valor → gerente
-
R$ 5k → + financeiro
-
R$ 20k → + diretor
Após aprovado pelo último step, callback marca status='aprovado'. Financeiro vê na lista para liberar.
Liberar
Botão "Liberar" no detalhe do fundo:
- Cria CAP da liberação (PIX/transferência ao responsável)
- Lança movimento
liberacaoque ativa o saldo do fundo - Status:
liberado→ automaticamenteativo
Lançar gasto
Detalhe do fundo → "Lançar gasto":
- Valor (negativo bloqueia)
- Data
- Descrição
- Fornecedor (mesmo informal — campo livre)
- CPF/CNPJ (opcional)
- Toggles Pessoa física + É serviço
- Categoria (validada contra
categorias_permitidasse configurado) - Comprovante (foto/PDF — upload para
compras-fundos-comprovantes/) - Observações
Validações automáticas (trigger SQL)
- Saldo suficiente
- Limite individual (se configurado)
- Categoria permitida
- Bloqueio crítico: PF + serviço → bloqueado (vínculo trabalhista)
- Status do fundo precisa ser
liberadoouativo
UI mostra alerta visual antes do submit quando PF+serviço.
Validação manual
Cada gasto entra em status lancado. Gerente/financeiro valida (botão check) ou rejeita:
- Validar → status
validado - Rejeitar → status
rejeitado+ estorno automático (saldo retorna)
Bloqueio anti-acúmulo
Ao tentar criar adiantamento eventual, sistema verifica se o responsável tem outro adiantamento com prestação vencida. Se sim, bloqueia com mensagem.
Adiantamento ainda no prazo NÃO bloqueia novo (regra: vencidos bloqueiam, no prazo não).
Repor (fundo fixo)
Quando saldo cai abaixo do mínimo, alerta visual. Botão "Repor":
- Cria CAP de reposição (até saldo cheio)
- Lança movimento
reposicaoque recompõe saldo
Encerrar
Botão "Encerrar" no detalhe:
- Saldo restante vira
devolucaoautomaticamente (registro contábil) - Bloqueia se há gastos rejeitados pendentes (precisa estornar manualmente)
- Status:
encerrado
Importante: o encerramento não gera CAP de devolução automaticamente — o PIX de retorno ao caixa central é processo manual fora do sistema. O lançamento aqui apenas reconcilia o saldo contábil.
Categorias proibidas (regra de negócio)
Algumas categorias são bloqueadas pelo trigger, independente da config:
- Pagamento de serviço a PF (vínculo trabalhista)
- Alimentação recorrente (vira benefício, passivo trabalhista)
- Pagamento pessoal (vai por folha)
KPIs
No detalhe:
- Valor inicial
- Saldo atual (alerta amarelo se abaixo do mínimo)
- Total gasto
- Para adiantamento: prazo (vermelho se vencido)
Lista de fundos mostra cards com badges de status + alertas.
Permissões
| Permissão | Escopo | Default |
|---|---|---|
compras_fundos:read | project | Todos exceto comercial |
compras_fundos:write | project | engenheiro+ (criar fundo, lançar gasto) |
compras_fundos:manage | project | financeiro / diretor (aprovar, liberar, repor, validar) |
Storage de comprovantes
Bucket compras-fundos-comprovantes (privado, RLS por org). Acessar comprovante gera URL assinado de 60s para visualização — comprovante nunca fica público.