Correção Do Botão Arquivar

This commit is contained in:
2026-06-22 17:26:26 -03:00
parent 94d8420bbd
commit b742b2c2e3
4 changed files with 34 additions and 9 deletions

View File

@@ -60,24 +60,31 @@ class Consolidacao < ApplicationRecord
# ── Métodos ─────────────────────────────────────────────────
# Arquivar é um soft-delete administrativo: deve SEMPRE funcionar, mesmo numa
# consolidação zerada ou em rascunho com dados incompletos. Por isso usamos
# update_columns — pula validações (periodo_valido, presença) e o callback
# recalcular_valor_total, que não fazem sentido ao apenas mover para o arquivo.
def arquivar!(user)
update!(
update_columns(
deleted_at: Time.current,
status: :arquivada,
status: self.class.statuses[:arquivada],
arquivado_por: user&.id,
arquivado_em: Time.current
arquivado_em: Time.current,
updated_at: Time.current
)
end
# Restaura uma consolidação arquivada. Como o status original não é guardado,
# inferimos: se já tinha sido finalizada (finalizado_em presente) volta para
# :finalizada, senão para :rascunho. Limpa os campos de arquivamento.
# Também via update_columns para não depender da validade do conteúdo.
def reativar!(_user)
update!(
update_columns(
deleted_at: nil,
status: finalizado_em? ? :finalizada : :rascunho,
status: self.class.statuses[finalizado_em? ? :finalizada : :rascunho],
arquivado_por: nil,
arquivado_em: nil
arquivado_em: nil,
updated_at: Time.current
)
end

View File

@@ -46,10 +46,10 @@
<% if policy(c).destroy? %>
<div class="flex gap-2">
<%= button_to '♻️ Reativar', reativar_consolidacao_path(c), method: :post,
data: { turbo_confirm: 'Reativar esta consolidação? Ela voltará para a lista de ativas.' },
form: { data: { turbo_confirm: 'Reativar esta consolidação? Ela voltará para a lista de ativas.' } },
class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold px-4 py-2.5 rounded-lg text-sm min-h-[44px]' %>
<%= button_to '🗑️ Excluir', consolidacao_path(c), method: :delete,
data: { turbo_confirm: 'EXCLUIR PERMANENTEMENTE esta consolidação e todas as suas classificações? Esta ação NÃO pode ser desfeita.' },
form: { data: { turbo_confirm: 'EXCLUIR PERMANENTEMENTE esta consolidação e todas as suas classificações? Esta ação NÃO pode ser desfeita.' } },
class: 'text-red-400 hover:text-white hover:bg-red-600 border border-red-900 px-4 py-2.5 rounded-lg text-sm min-h-[44px]' %>
</div>
<% end %>

View File

@@ -40,7 +40,7 @@
class: 'bg-[#1a1a1a] hover:bg-[#2a2a2a] text-white border border-orange-500 font-semibold px-4 py-3 rounded-lg min-h-[48px] flex items-center' %>
<% if policy(@consolidacao).destroy? && !@consolidacao.arquivada? %>
<%= button_to '📁 Arquivar', arquivar_consolidacao_path(@consolidacao), method: :post,
data: { turbo_confirm: 'Arquivar esta consolidação? Ela não será excluída, apenas movida para o arquivo.' },
form: { data: { turbo_confirm: 'Arquivar esta consolidação? Ela não será excluída, apenas movida para o arquivo.' } },
class: 'text-gray-400 hover:text-white border border-[#2a2a2a] px-4 py-3 rounded-lg min-h-[48px]' %>
<% end %>
</div>