Correções: - Erro de sintaxe em Admin::Usuarios#toggle_ativo (entidade: \'User\') que derrubava /admin/usuarios - Migration fase2 readicionava coluna `ativo` sem guard (db:migrate do zero quebrava); db:seed colidia no índice único de email para motoristas - Dashboard e HistoricoEstimado agora aplicam .da_conta_gade - ConsolidacaoMotorista#recalcular_valor usa valor_aplicado (fonte única) - Gate de finalização por motorista (antes soma agregada com >=) e validação de elegibilidade em classificar/classificar_em_massa - Remove coluna órfã pin_acesso; registra autor do arquivamento (arquivado_por/arquivado_em + belongs_to :arquivador) - Dashboard redireciona motorista; Date.parse tolerante - Remove MotoristaController + view órfãos (não roteados e quebrados) Testes: infra RSpec + factories + specs de models, policy e request. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
24 lines
949 B
Ruby
24 lines
949 B
Ruby
# app/models/consolidacao_motorista.rb
|
|
class ConsolidacaoMotorista < ApplicationRecord
|
|
belongs_to :consolidacao
|
|
has_many :consolidacao_entregas,
|
|
->(cm) { where(motorista_nome: cm.motorista_nome) },
|
|
foreign_key: :consolidacao_id,
|
|
primary_key: :consolidacao_id
|
|
|
|
validates :motorista_nome, presence: true
|
|
validates :motorista_nome, uniqueness: { scope: :consolidacao_id }
|
|
|
|
before_save :recalcular_valor
|
|
|
|
def recalcular_valor
|
|
# Fonte única de verdade: o valor_aplicado capturado no momento da
|
|
# classificação (igual ao ConsolidacaoEntregasController#recalcular_motorista).
|
|
# Recalcular pelos preços atuais de Configuracao divergiria caso os preços
|
|
# mudassem depois das entregas já terem sido classificadas.
|
|
self.valor_total = consolidacao_entregas
|
|
.where(motorista_nome: motorista_nome)
|
|
.sum { |e| e.desconto? ? -e.valor_aplicado : e.valor_aplicado }
|
|
end
|
|
end
|