From b742b2c2e358022b4c33e542a5190e7a15508f937170d876f64c95aaf9dfbbf3 Mon Sep 17 00:00:00 2001 From: victor Date: Mon, 22 Jun 2026 17:26:26 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20Do=20Bot=C3=A3o=20Arquivar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/consolidacao.rb | 19 +++++++++++++------ app/views/consolidacoes/arquivadas.html.erb | 4 ++-- app/views/consolidacoes/show.html.erb | 2 +- ...1_add_preco_extraordinaria_configuracao.rb | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 db/migrate/20260622000001_add_preco_extraordinaria_configuracao.rb diff --git a/app/models/consolidacao.rb b/app/models/consolidacao.rb index 4152a71..d2705b3 100644 --- a/app/models/consolidacao.rb +++ b/app/models/consolidacao.rb @@ -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 diff --git a/app/views/consolidacoes/arquivadas.html.erb b/app/views/consolidacoes/arquivadas.html.erb index d25fadc..2a97621 100644 --- a/app/views/consolidacoes/arquivadas.html.erb +++ b/app/views/consolidacoes/arquivadas.html.erb @@ -46,10 +46,10 @@ <% if policy(c).destroy? %>
<%= 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]' %>
<% end %> diff --git a/app/views/consolidacoes/show.html.erb b/app/views/consolidacoes/show.html.erb index aa6cfbc..4a5a916 100644 --- a/app/views/consolidacoes/show.html.erb +++ b/app/views/consolidacoes/show.html.erb @@ -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 %> diff --git a/db/migrate/20260622000001_add_preco_extraordinaria_configuracao.rb b/db/migrate/20260622000001_add_preco_extraordinaria_configuracao.rb new file mode 100644 index 0000000..7e63ed6 --- /dev/null +++ b/db/migrate/20260622000001_add_preco_extraordinaria_configuracao.rb @@ -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