Correção Do Botão Arquivar
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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 %>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Cria a configuração de preço "Entrega Extraordinária" (pilar coringa) em bancos
|
||||
# já existentes, para que apareça na tela de Configurações. Idempotente — não
|
||||
# sobrescreve se o admin já tiver definido um valor.
|
||||
class AddPrecoExtraordinariaConfiguracao < ActiveRecord::Migration[7.1]
|
||||
def up
|
||||
return if Configuracao.exists?(chave: 'preco_extraordinaria')
|
||||
|
||||
Configuracao.create!(
|
||||
chave: 'preco_extraordinaria',
|
||||
valor: '25.00',
|
||||
descricao: 'Valor coringa para entregas fora do planejamento (R$)'
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
Configuracao.where(chave: 'preco_extraordinaria').delete_all
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user