Lição: Orçamento de Procedimentos

🟢 Em produção. O módulo de Orçamento está disponível e em uso real. Ele substitui o antigo processo manual de planilha e, ao aprovar, gera o agendamento automaticamente. A HU do módulo (#398) foi concluída em jul/2026.

1. Objetivo do módulo e onde fica

O módulo de Orçamento serve para montar, enviar e acompanhar orçamentos de procedimentos eletivos: cirurgias, planos de tratamento e atendimentos particulares. Você monta o orçamento com serviços, produtos consumidos, taxas e equipamentos; o paciente recebe um PDF; ao aprovar, o sistema converte o orçamento em agendamento e abre o fluxo financeiro — sem redigitar nada.

Onde fica (menu / rota): Agenda → Orçamento.

TelaRota /portal/...Para que serve
Lista de orçamentos/portal/agenda/orcamentoConsultar e filtrar orçamentos
Novo orçamento/portal/agenda/orcamento/criarCriar orçamento do zero
Ver / editar orçamento/portal/agenda/orcamento/:idDetalhar, editar, enviar, aprovar
Reabrir cancelado/portal/agenda/orcamento/:idOrcamentoCancelado/reabrirVoltar um orçamento cancelado ao fluxo

2. Como um orçamento é estruturado

Um orçamento tem um cabeçalho (paciente, local, profissional responsável, status, observação) e uma lista de Serviços. Cada serviço pode conter:

Ou seja, o valor total do orçamento é a soma dos serviços, e cada serviço soma seus produtos, taxas e equipamentos.

3. Campos do orçamento

Os campos abaixo aparecem ao criar/editar (OrcamentoForm.tsx). Datas seguem o formato dd/mm/aaaa e valores em R$ 1.234,56.

CampoObrigatório?Validação / observação
PacienteSimBusca por nome ou CPF; o paciente precisa estar cadastrado
Local / UnidadeSimOnde o procedimento será realizado
Profissional responsávelSimColaborador que responde pelo orçamento
Serviço (um ou mais)SimAo menos um serviço; puxa preço da tabela do convênio/tabela interna
Quantidade por serviçoSimNúmero inteiro maior que zero
Valor unitárioSim (calculado)Vem da tabela; só é editável com a permissão de override de valor
Produtos consumidosOpcionalPor serviço; puxa do Estoque
TaxasOpcionalPor serviço (sala, equipamento)
EquipamentosOpcionalPor serviço, com tempo de uso
DescontoOpcionalValidado por nível de permissão do colaborador (ver seção 8)
ObservaçãoOpcionalTexto livre
ValidadeAutomáticaDefinida por ParametrosOrcamento.diasValidos (padrão 30 dias)

4. Status do orçamento (ciclo de vida)

O status muda conforme o orçamento avança. Decorar essa sequência é essencial.

StatusSignificado
RASCUNHOEm criação, ainda não enviado
AGUARDANDO_APROVACAOEnviado ao paciente, aguardando resposta
APROVADO_CLIENTEPaciente aprovou
REJEITADO_CLIENTEPaciente rejeitou (com motivo)
CONFIRMADOAgendamento gerado, fluxo iniciado
AGENDADOData marcada
REALIZADOProcedimento executado
CANCELADOCancelado (guarda a descricaoCancelamento)
EXPIRADOValidade vencida — marcado automaticamente por cron diário

5. Botões e ações

AçãoO que faz
SalvarGrava o orçamento como RASCUNHO
Enviar ao pacienteGera o PDF e passa para AGUARDANDO_APROVACAO
AprovarRegistra aprovação do paciente e dispara a criação automática do agendamento
RejeitarMarca REJEITADO_CLIENTE exigindo motivo
AgendarAbre a tela de agendamento pré-preenchida (orçamento vira CONFIRMADO ao salvar)
CancelarMarca CANCELADO com descrição do motivo
ReabrirTraz um orçamento cancelado de volta ao fluxo
Aplicar descontoChama a validação de nível de permissão (ver seção 8)

6. Passo a passo — criar e aprovar um orçamento

  1. Vá em Agenda → Orçamento e clique em Novo (/portal/agenda/orcamento/criar).
  2. Busque e selecione o paciente (por nome ou CPF).
  3. Informe local e profissional responsável.
  4. Adicione um ou mais serviços; para cada um, informe a quantidade e, se preciso, os produtos, taxas e equipamentos.
  5. Se houver desconto, aplique — o sistema validará seu nível de permissão.
  6. Clique em Salvar (fica RASCUNHO) e revise o total.
  7. Clique em Enviar ao paciente — gera o PDF e passa para AGUARDANDO_APROVACAO.
  8. Quando o paciente responder, clique em Aprovar (ou Rejeitar). Ao aprovar, o sistema cria o agendamento automaticamente e o orçamento vira CONFIRMADO.
  9. Com o procedimento executado e o atendimento fechado, o orçamento vira REALIZADO.

7. Aprovação vira agendamento (automático)

Ao aprovar (POST /orcamento/:id/aprovar), o sistema cria o agendamento automaticamente e abre o fluxo de atendimento — você não precisa recriar os dados. Sequência da conversão:

  1. Orçamento APROVADO_CLIENTE → botão Agendar.
  2. Sistema abre a tela de agendamento pré-preenchida.
  3. Ao salvar o agendamento, o orçamento vira CONFIRMADO.
  4. Na execução do atendimento, a MovimentacaoFinanceira é vinculada ao OrcamentoServicoMovimentacao.
  5. Ao fechar o atendimento, o orçamento vira REALIZADO.

Orçamentos cancelados podem ser reabertos em /portal/agenda/orcamento/:idOrcamentoCancelado/reabrir.

✅ Novo — jul/2026 O caminho inverso também existe: é possível vincular o orçamento a partir do agendamento (#359). Entregue no ciclo de julho/2026; se ainda não apareceu no seu ambiente, chega na próxima atualização.

8. Regras de negócio — descontos por nível

Ao aplicar desconto, o sistema chama o validacaoDescontoController, que confere o nível de permissão do colaborador via ParametrosDeDesconto:

NívelLimite de descontoPerfil típico
Nível 1até 5%Recepcionista
Nível 2até 10%Coordenador
Nível 3até 20%Gerente
Sem limitequalquerDiretor

9. Regras de negócio — validade e expiração

Todo orçamento tem validade em ParametrosOrcamento.diasValidos (padrão 30 dias). Um cron diário marca como EXPIRADO os orçamentos vencidos, automaticamente, sem ação manual. Também há versões: cada alteração relevante (valor ou escopo) gera uma nova versão para o cliente comparar antes de aprovar; o histórico fica preservado.

10. Permissões necessárias

Modelo atual: papel (Role) + ações por módulo. Além das quatro ações padrão, o Orçamento tem ações específicas:

PermissãoPermite
ORCAMENTO.VIEWConsultar orçamentos
ORCAMENTO.CREATECriar orçamento
ORCAMENTO.UPDATEEditar orçamento
ORCAMENTO.APROVARConfirmar a aprovação do paciente
ORCAMENTO.CANCELARCancelar orçamento
ORCAMENTO.REABRIRReabrir um cancelado
ORCAMENTO.OVERRIDE_VALORLançar valor manual acima da tabela

11. Erros comuns e como resolver

SituaçãoComo resolver
Não consigo aplicar o desconto desejadoSeu nível de permissão limita o percentual. Peça a um nível superior (Coordenador/Gerente/Diretor) para aplicar.
Orçamento sumiu / ficou EXPIRADOPassou da validade (padrão 30 dias). Reabra a partir dele ou crie uma nova versão.
Preciso mudar o valor da tabela e o campo está bloqueadoÉ necessária a permissão ORCAMENTO.OVERRIDE_VALOR.
Aprovei mas o agendamento não apareceuA aprovação gera o agendamento automaticamente; confira em Agenda. O bug de sessões (#386) foi corrigido em jul/2026 — veja a nota abaixo.
Orçamento cancelado por enganoUse Reabrir (/orcamento/:id/reabrir), se você tiver ORCAMENTO.REABRIR.
✅ Novo — jul/2026 Bug corrigido (#386): a validação sessoesRealizadas < sessoesAutorizadas, que rodava depois de incrementar e podia gerar agendamento além do autorizado, foi corrigida. Entregue no ciclo de julho/2026; se ainda não apareceu no seu ambiente, chega na próxima atualização.

12. Farol de resultado — ENTREGUE ✅ Novo — jul/2026

Entregue no ciclo de julho/2026; se ainda não apareceu no seu ambiente, chega na próxima atualização. O Farol de resultado 🟢🟡🔴 por convênio/serviço/produto (#390/#434) mostra cores + índice ao calcular o resultado: 🟢 verde segue direto, 🟡 amarelo alerta e 🔴 vermelho BLOQUEIA — a liberação no vermelho exige aprovação de nível superior. Apenas a visão geral/lista de cruzamentos (#435) ainda está em desenvolvimento (Sprint 3).

Pontos-chave

O que a prova vai cobrar