<%# app/views/admin/romaneios/_operacao.html.erb Vínculo MANUAL da operação do mês, feito na própria tela do romaneio. Por que aqui e não só na criação: é aqui que o operador descobre que a coluna APARELHO saiu vazia. Mandar ele reimportar o plano (única saída até então) depende da API do SimpliRoute responder ou de o .xlsx ainda estar em mãos. Sem JavaScript de propósito:
nativo + form comum. Este controle é o conserto de um romaneio que já está errado — precisa funcionar mesmo quando o Stimulus não carrega (foi exatamente esse o caso em 28/08/2026, com os assets dando 404 no servidor e a tela inteira sem JS). %> <% vinculada = @romaneio.operacao_tabela.present? %> <%# O cabeçalho e o formulário ficam EMPILHADOS, não lado a lado: aberto, o seletor + botão precisam da largura toda da caixa; espremidos numa coluna lateral o rótulo do estado saía cortado justamente quando ele é a informação que importa ("Nenhuma vinculada"). %>

Operação do mês

<%= vinculada ? @romaneio.operacao_label : 'Nenhuma vinculada — APARELHO não é preenchido sozinho' %>

É ela que diz quem é paciente NOVO, e quem é novo sempre leva aparelho.

<%# Já vinculada: fica fechado, para não convidar a trocar sem motivo. Sem operação: abre sozinho, porque é a pendência da tela. %> <%# group-open: aberto, o gatilho fica discreto. Aberto ele vira só o título do painel — deixá-lo laranja poria DOIS botões laranja um sobre o outro e o operador não saberia qual confirma. %>
> <%# cor: nil e espaco: false — o fundo laranja apagaria o laranja da marca e o container já tem gap-2. %> <%= icone :operacao, cor: nil, espaco: false %> <%= vinculada ? 'Trocar operação' : 'Vincular operação' %> <%= form_with url: vincular_operacao_admin_romaneio_path(@romaneio), method: :patch, class: 'mt-3 flex flex-col sm:flex-row gap-2 sm:items-center' do %> <% end %>

Preenche APARELHO, TELEFONES e NOME pelas notas fiscais já importadas. O que você digitou na tabela é mantido — só os campos sem edição são atualizados.