implantação da fase 2 e 3

This commit is contained in:
2026-06-10 20:12:20 -03:00
parent d37237ead2
commit 472484798f
33 changed files with 2915 additions and 430 deletions

View File

@@ -1,55 +1,39 @@
# app/models/configuracao.rb
class Configuracao < ApplicationRecord
# Chaves válidas do sistema
CHAVES = %w[
preco_entrega
preco_retirada
preco_bonus
preco_desconto
notificacao_whatsapp
notificacao_email
empresa_nome
empresa_logo
].freeze
TIPOS = %w[entrega retirada bonus desconto].freeze
CHAVES_MOEDA = %w[
preco_entrega
preco_retirada
preco_bonus
preco_desconto
].freeze
enum tipo: { entrega: 0, retirada: 1, bonus: 2, desconto: 3 }
validates :chave, presence: true, inclusion: { in: CHAVES }, uniqueness: true
validates :valor, presence: true
validates :tipo, presence: true, uniqueness: true
validates :valor, presence: true,
numericality: { greater_than_or_equal_to: 0 }
# ── Acesso rápido ───────────────────────────────────────────
LABELS = {
'entrega' => 'Entrega Normal',
'retirada' => 'Retirada',
'bonus' => 'Bônus',
'desconto' => 'Desconto'
}.freeze
def self.valor(chave)
find_by(chave: chave)&.valor
ICONES = {
'entrega' => '🚚',
'retirada' => '📦',
'bonus' => '⭐',
'desconto' => '🔻'
}.freeze
def tipo_label
LABELS[tipo] || tipo.humanize
end
def self.preco_entrega
valor('preco_entrega').to_f
def icone
ICONES[tipo] || '💰'
end
def self.preco_retirada
valor('preco_retirada').to_f
end
def self.preco_bonus
valor('preco_bonus').to_f
end
def self.preco_desconto
valor('preco_desconto').to_f
end
def moeda?
CHAVES_MOEDA.include?(chave)
end
def valor_formatado
return "R$ #{format('%.2f', valor.to_f).gsub('.', ',')}" if moeda?
valor
# Retorna um hash { entrega: 10.50, retirada: 8.00, bonus: 5.00, desconto: 2.00 }
def self.mapa_de_precos
all.each_with_object({}) do |c, h|
h[c.tipo.to_sym] = c.valor.to_f
end
end
end