MódulosCompras e Suprimentos

CNDs — Certidões Negativas

Cadastro de certidões do fornecedor com classificação automática de status e cron diário de vencimento

Por que importa

Pagar fornecedor com CND vencida cria responsabilidade solidária para a incorporadora — especialmente em empreitada (Lei 9.711/1998 e CLT). Pode gerar passivo trabalhista, previdenciário ou fiscal.

OctaBuild força o registro e monitoramento das CNDs antes de cada pagamento.

Tipos cobertos

TipoEmissor
FederalRFB / PGFN (CND Federal Conjunta)
FGTSCaixa (CRF-FGTS)
TrabalhistaTST (CNDT)
EstadualSEFAZ do estado
MunicipalPrefeitura (ISS)

Cadastrar

Financeiro → Fornecedores → menu ⋮ → Qualificação → aba CNDs

Campos:

  • Tipo (federal / fgts / trabalhista / estadual / municipal)
  • Emissor (UF para estadual, código IBGE para municipal)
  • Número da certidão
  • Validade até (data — campo crítico)
  • Arquivo (PDF/imagem — upload para compras-cnds/ no Supabase Storage)
  • Observações

Status automático

Trigger SQL classifica conforme validade_ate:

StatusQuando
vigenteValidade > 30 dias no futuro
a_vencerValidade entre hoje e +30 dias
vencidaValidade no passado
irregularMarcado manualmente — fornecedor com pendências fiscais
positiva_com_efeitos_negativaManual — para fornecedor com débito mas com situação juridicamente equiparada à negativa

Reclassificação automática a cada update da validade_ate.

Cron diário

/api/cron/cnds-vencimento roda às 14:00 UTC (11h BRT):

  1. Força reclassificação de todas as CNDs (refresca status)
  2. Para cada CND vencida ou a vencer (≤ 7 dias), busca admins/financeiro da org
  3. Envia digest por email (Resend) com lista agrupada:
    • CNDs vencidas (vermelho)
    • CNDs a vencer (amarelo)
  4. Idempotente: não envia mais que 1 email por dia por CND (via ultima_notificacao_em)

Verificação no pagamento

Quando você gera CAP via recebimento ou medição, sistema chama checkSupplierCnds(supplierId):

{
  ok: false,
  bloqueia: true,           // tem vencidas ou irregulares
  alertas: [
    "CND Federal VENCIDA em 15/04/2026",
    "CRF FGTS a vencer em 02/05/2026"
  ],
  vencidas: [...],
  a_vencer: [...],
  irregulares: [...]
}

Response da geração de CAP retorna cnd_warnings[] e cnd_bloqueia_pagamento. UI mostra alerta antes do pagamento ser efetivado.

Atualmente alerta apenas. Bloqueio rígido configurável é planejado para a próxima iteração.

Visualização

Aba CNDs no qualification dialog mostra cada certidão com:

  • Ícone colorido (verde/amarelo/vermelho)
  • Tipo + emissor
  • "Validade dd/mm/aaaa (em N dias)" ou "(vencida há N dias)"
  • Badge de status
  • Botão para baixar PDF (URL assinada 60s)
  • Botão deletar

Permissões

PermissãoEscopoDefault
cnds:readglobalTodos os roles
cnds:writeglobalFinanceiro, administrativo, diretor, proprietário
cnds:manageglobalFinanceiro, diretor, proprietário (consultas automáticas — phase 2+)

Consulta automática

Para Phase 2.1+: integração com APIs públicas para buscar CNDs automaticamente:

  • Receita Federal (CND Federal)
  • Caixa (FGTS)
  • TST (CNDT)
  • SEFAZ (algumas UFs)

Hoje é cadastro manual + arquivo. Trigger ainda assim mantém o status sempre atual.

Storage

Bucket compras-cnds (privado):

  • RLS por organização: <org_id>/<entity_id>/<filename>
  • Apenas membros da org acessam
  • URL assinada de 60s para download — não fica público

On this page