Implantação na hora de gerar o holerite de um motorista sem conta (deve aparecer o aviso)

This commit is contained in:
2026-06-18 20:56:09 -03:00
parent 6d246cadb8
commit 731774c32a
4 changed files with 2333 additions and 1 deletions

View File

@@ -218,7 +218,7 @@ class ConsolidacoesController < ApplicationController
def gerar_pdf_holerite
autorizar_holerite!(params[:motorista])
motorista = params[:motorista]
user_mot = User.motorista.find_by('LOWER(nome) = ?', motorista.to_s.downcase)
user_mot = buscar_user_motorista(motorista)
user_mot&.regenerar_login_token! if user_mot&.login_token.blank?
cm = @consolidacao.consolidacao_motoristas.find_by(motorista_nome: motorista)
@@ -245,6 +245,22 @@ class ConsolidacoesController < ApplicationController
private
# Acha o User motorista pelo nome para gerar o QR Code de acesso. O
# motorista_nome vem dos dados externos de entrega e o users.nome é digitado
# no admin — então toleramos diferenças de caixa e de espaços (extras/duplos).
# Sem isso, qualquer divergência deixava user_mot nil e o QR sumia do holerite.
def buscar_user_motorista(nome)
exato = User.motorista.find_by('LOWER(nome) = ?', nome.to_s.downcase.strip)
return exato if exato
alvo = normalizar_nome(nome)
User.motorista.find { |u| normalizar_nome(u.nome) == alvo }
end
def normalizar_nome(nome)
nome.to_s.strip.downcase.gsub(/\s+/, ' ')
end
# Staff (show?) baixa qualquer holerite. O motorista baixa só o PRÓPRIO — o PDF
# já é filtrado pelo nome dele, então não há vazamento de dados de terceiros.
def autorizar_holerite!(motorista_nome)