Files
Reem-Notas/app/models/consolidacao_motorista.rb
victor c7ed5f0ceb Corrige 500 no painel do motorista (tabela consolidacao_motorista inexistente)
O inflector pt-BR (inflections.rb) resolvia o composto ConsolidacaoMotorista
para o singular "consolidacao_motorista", tabela que não existe (migration cria
"consolidacao_motoristas"). Login do motorista por PIN derrubava /motorista com
PG::UndefinedTable.

Fixa self.table_name explicitamente nos models pt-BR (Consolidacao,
ConsolidacaoMotorista, ConsolidacaoEntrega, Configuracao), eliminando a
dependência do inflector. Spec trava os nomes de tabela.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 01:50:07 -03:00

28 lines
1.1 KiB
Ruby

# app/models/consolidacao_motorista.rb
class ConsolidacaoMotorista < ApplicationRecord
# Nome da tabela fixado: o inflector pt-BR (config/initializers/inflections.rb)
# pode resolver o composto "consolidacao_motorista" no singular errado.
self.table_name = 'consolidacao_motoristas'
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