correção do filtro de veiculos na area de consolidação
This commit is contained in:
@@ -3,7 +3,7 @@ class ConsolidacoesController < ApplicationController
|
||||
include Auditavel
|
||||
|
||||
before_action :set_consolidacao,
|
||||
only: %i[show edit update destroy finalizar arquivar reativar wizard
|
||||
only: %i[show edit update destroy finalizar finalizar_parcial arquivar reativar wizard
|
||||
registrar_pagamento cancelar_pagamento
|
||||
arquivar_motorista desarquivar_motorista
|
||||
excluir_motorista adicionar_motorista
|
||||
@@ -181,20 +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)
|
||||
# Status por veículo (breakdown do card): total usados, consolidados (🔒),
|
||||
# pendentes (não dá p/ consolidar ainda) e prontos (100%, falta consolidar).
|
||||
vinfo = @consolidacao.veiculos_do_motorista(cm.motorista_nome).reject { |v| v[:arquivado] }
|
||||
{
|
||||
registro: cm,
|
||||
total: total,
|
||||
classificadas: classificadas,
|
||||
apontamentos: apontamentos,
|
||||
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)
|
||||
registro: cm,
|
||||
total: total,
|
||||
classificadas: classificadas,
|
||||
apontamentos: apontamentos,
|
||||
veiculos_total: vinfo.size,
|
||||
veiculos_fechados: vinfo.count { |v| v[:fechado] },
|
||||
veiculos_prontos: vinfo.count { |v| !v[:fechado] && v[:completo] },
|
||||
veiculos_pendentes: vinfo.select { |v| !v[:fechado] && !v[:completo] && v[:eligible].positive? }
|
||||
.map { |v| v[:vehicle] },
|
||||
completo: @consolidacao.motorista_completo?(cm.motorista_nome)
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -213,6 +213,25 @@ class ConsolidacoesController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
# POST /consolidacoes/:id/finalizar_parcial
|
||||
# Atalho "finalizar só os veículos consolidados": arquiva os veículos que ainda
|
||||
# não dá para consolidar (não 100% classificados) e finaliza a consolidação. Os
|
||||
# veículos consolidados/prontos seguem no fechamento; os pendentes ficam de fora.
|
||||
def finalizar_parcial
|
||||
authorize @consolidacao, :update?
|
||||
|
||||
arquivados = @consolidacao.arquivar_veiculos_pendentes!(current_user)
|
||||
if @consolidacao.finalizar!(current_user)
|
||||
auditar!(:finalizar, @consolidacao, dados_novos: { finalizar_parcial: true, veiculos_arquivados: arquivados })
|
||||
NotificacaoService.notificar_finalizacao(@consolidacao)
|
||||
redirect_to @consolidacao,
|
||||
notice: "Consolidação finalizada. #{arquivados.size} veículo(s) pendente(s) ficaram de fora. Motoristas notificados."
|
||||
else
|
||||
redirect_to wizard_consolidacao_path(@consolidacao),
|
||||
alert: 'Não foi possível finalizar: ainda há entregas pendentes fora dos veículos arquivados.'
|
||||
end
|
||||
end
|
||||
|
||||
# POST /consolidacoes/:id/arquivar
|
||||
def arquivar
|
||||
authorize @consolidacao, :destroy?
|
||||
|
||||
Reference in New Issue
Block a user