MódulosCompras e Suprimentos

Contratos de Empreitada

Contratos formais de mão de obra terceirizada, com retenção 5%, aditivos e medições mensais

Por que existem

Empreitada (mão de obra terceirizada) tem ritual diferente da compra de material:

  • Não é entregue de uma vez — é executada ao longo de meses
  • Precisa de cláusulas que um PC normal não tem: cronograma físico-financeiro, forma de medição, reajuste, multa, retenção de garantia 5%, anti-vínculo trabalhista, recebimento provisório/definitivo

Onde acessar

Suprimentos → "Contratos de empreitada" (botão no header) ou diretamente /projects/[id]/suprimentos/contratos.

Criar contrato

FormWizard de 8 passos:

  1. Identificação — fornecedor (autocomplete), título
  2. Objeto — descrição detalhada do que será executado, tipo (preço unitário / global / preço misto / administração)
  3. Valor — valor total, forma de medição (etapa / preço unitário / global), multa por atraso, bônus antecipação
  4. Cronograma — data assinatura, início e fim previstos
  5. Reajuste — índice (INCC / IPCA / IGPM / sem reajuste), periodicidade
  6. Garantia — tipo (caução / seguro performance / retenção técnica / sem garantia), %
  7. ART/CNO — ART/RRT do responsável técnico, CNO da obra
  8. Revisão — resumo + observações

Cláusulas estruturadas (jsonb): objeto, multa, anti-vínculo, foro, reajuste, garantia, recebimento. Permite editor markdown opcional.

Aprovação

Após criar, sistema dispara approval contrato_empreitada:

  • Default: gerente + diretor (sempre 2 níveis)
  • > R$ 100k: gerente + jurídico + diretor (3 steps — referência ética da Lei 8.666)

Após aprovado, callback marca status='aprovado'. Você passa manualmente para assinado quando tiver assinatura física (data + URL do PDF).

Estados

em_elaboracao → aguardando_aprovacao → aprovado → assinado → em_execucao 
   → em_recebimento_provisorio → em_garantia → recebimento_definitivo → encerrado

                          distratado (qualquer estado pós-assinado)

Aditivos

Toda alteração de prazo / valor / escopo é um aditivo formal, não edição direta.

Criar aditivo

No detalhe do contrato → seção Aditivos → "Novo aditivo":

  • Tipo: prazo / valor / escopo / misto
  • Descrição
  • Δ valor (negativo = redução)
  • Δ prazo (dias)

Regra dos 25%

Sistema calcula automaticamente:

  • pct_acumulado = soma dos aditivos aplicados ÷ valor original
  • pct_se_aprovado = projeção com este novo

Se pct_relevante > 25%, sobe alçada automaticamente:

  • Acima de 25% → diretor sempre (approval_policies aditivo_contrato > 25 → diretor)
  • Notifica visualmente no dialog antes de submeter

Aplicar

Aditivo aprovado fica em status='aprovado'. O gerente clica "Aplicar ao contrato" para materializar a alteração:

  • Trigger SQL atualiza valor_aditivos_acumulados do contrato
  • valor_atual (generated column) reflete imediatamente

Esse 2º clique registra quando o aditivo foi efetivamente aplicado (separado de quando foi aprovado).

Medições mensais

A cada mês, o empreiteiro apresenta boletim de medição. No detalhe do contrato → seção Medições → "Nova medição":

CampoNotas
Tipomedicao / glosa / recebimento_provisorio / recebimento_definitivo
Mês referênciaData
ValorBruto da medição
% físicoQuanto da obra foi executada
Justificativa (glosa)Obrigatório para refazimento

Sistema calcula em tempo real:

  • Retenção técnica = valor × garantia_pct (default 5%)
  • Líquido = valor - retenção - retenções tributárias (depois)

Acumula retencao_tecnica_acumulada no contrato para visibilidade.

Aprovação

Cada medição vai por medicao_empreiteiro (gerente sempre, diretor se > R$ 100k). Após aprovado, status vira aprovada.

Calcular retenções LC 116

Após medição aprovada, botão "Retenções" abre dialog:

  • Selecione código de serviço LC 116/2003 (ex: 7.02 empreitada construção civil)
  • Município ISS, alíquota override
  • Toggles Simples Nacional + ISS retido no tomador

Sistema calcula automaticamente: INSS 11%, ISS, IRRF 1.5%, PIS/COFINS/CSLL 4.65%. Salva no retencoes_calculadas.

→ CAP e Retenções

Gerar CAP da medição

Botão "Gerar CAP": cria conta a pagar com valor líquido (descontando retenção técnica + retenções tributárias).

Glosa (medição negativa)

Se na medição seguinte se constata que parte foi medida demais (refazimento), gera-se medição com tipo_lancamento='glosa' e valor negativo. Justificativa obrigatória (mínimo 10 chars).

Não estorna NF já emitida — gera glosa para a próxima.

Liberar retenção

Quando obra recebida, o empreiteiro pede para liberar a retenção técnica acumulada. Botão "Liberar retenção" numa medição aprovada:

  • Cria approval liberacao_retencao (alçada diretor)
  • Após aprovado, callback marca medicao.retencao_liberada=true automaticamente
  • Visível no detalhe do contrato (KPI atualizado)

A retenção típica fica retida até recebimento definitivo (geralmente 90 dias após o recebimento provisório).

Recebimento provisório / definitivo

Marcos do contrato:

  • em_recebimento_provisorio — fim da obra física, começa contagem do prazo de garantia
  • em_garantia — período de defesa contra vícios construtivos
  • recebimento_definitivo — encerra contrato, libera todas as retenções

Acessível como mudança de status no detalhe + datas registráveis.

Permissões

PermissãoEscopoDefault
compras_contrato:readprojectTodos + jurídico
compras_contrato:writeprojectgerente
compras_contrato:manageprojectdiretor (aditivos, garantia, distrato)
`compras_medicao:readwritemanage`

KPIs

No header do contrato:

  • Valor original vs valor atual (com % aditivos — alerta visual se > 25%)
  • Total medido
  • Retenção líquida (acumulada - liberada)

On this page