Grande correção do filtro de veiculos na area de consolidação

This commit is contained in:
2026-07-03 09:58:59 -03:00
parent 83310e9e66
commit eca6df39eb
17 changed files with 681 additions and 41 deletions

View File

@@ -159,6 +159,10 @@ class ConsolidacoesController < ApplicationController
@apontamentos = @consolidacao.consolidacao_entregas.apontamentos
.order(:motorista_nome, :tracking_id)
.group_by { |ce| [ce.motorista_nome, ce.tracking_id] }
# Veículos consolidados por motorista (breakdown informativo no card).
@veiculos_por_motorista = @consolidacao.consolidacao_veiculos.ativos
.order(:vehicle)
.group_by(&:motorista_nome)
end
# GET /consolidacoes/:id/wizard — PASSO 1: selecionar motorista
@@ -177,14 +181,20 @@ class ConsolidacoesController < ApplicationController
.apontamentos
.where(motorista_nome: cm.motorista_nome)
.distinct.count(:tracking_id)
# Status por veículo (para o breakdown do card) e estado de fechamento.
veiculos = @consolidacao.consolidacao_veiculos.ativos
.where(motorista_nome: cm.motorista_nome)
.order(:vehicle)
{
registro: cm,
total: total,
classificadas: classificadas,
apontamentos: apontamentos,
# Espelha o gate do servidor (todas_entregas_classificadas?): um motorista
# só com apontamento manual tem 0 entregas elegíveis e já está "completo".
completo: total.zero? || classificadas >= total
veiculos: veiculos,
veiculos_fechados: veiculos.count(&:fechado?),
# Espelha o gate do servidor (todas_entregas_classificadas?): exige tudo
# classificado E todos os veículos ativos fechados (consolidados).
completo: @consolidacao.motorista_completo?(cm.motorista_nome)
}
end
end
@@ -199,7 +209,7 @@ class ConsolidacoesController < ApplicationController
redirect_to @consolidacao, notice: 'Consolidação finalizada! Motoristas notificados.'
else
redirect_to wizard_consolidacao_path(@consolidacao),
alert: 'Não é possível finalizar: existem entregas não classificadas.'
alert: 'Não é possível finalizar: ainda há entregas não classificadas. Classifique-as ou arquive o veículo pendente.'
end
end
@@ -320,6 +330,7 @@ class ConsolidacoesController < ApplicationController
nome = cm.motorista_nome
ActiveRecord::Base.transaction do
@consolidacao.consolidacao_entregas.where(motorista_nome: nome).delete_all
@consolidacao.consolidacao_veiculos.where(motorista_nome: nome).delete_all
cm.destroy!
end
# cm já não existe — atualiza o total da consolidação direto (soma dos ativos).