Melhorias gerais descritas no READ.me
This commit is contained in:
@@ -165,6 +165,8 @@ class ConsolidacoesController < ApplicationController
|
||||
authorize @consolidacao, :update?
|
||||
|
||||
@arquivados = @consolidacao.consolidacao_motoristas.arquivados.order(:motorista_nome)
|
||||
# Alimenta o datalist do "Adicionar motorista" (mesma fonte da criação).
|
||||
@motoristas_disponiveis = Entrega.motoristas_ativos
|
||||
@motoristas = @consolidacao.consolidacao_motoristas.ativos.order(:motorista_nome).map do |cm|
|
||||
total = @consolidacao.entregas_elegiveis_count(cm.motorista_nome)
|
||||
classificadas = @consolidacao.classificadas_count(cm.motorista_nome)
|
||||
@@ -299,6 +301,59 @@ class ConsolidacoesController < ApplicationController
|
||||
notice: "#{cm.motorista_nome} restaurado para a consolidação."
|
||||
end
|
||||
|
||||
# DELETE /consolidacoes/:id/excluir_motorista — apaga de vez 1 motorista desta
|
||||
# consolidação (só admin/gerente). Caminho destrutivo (o reversível é arquivar):
|
||||
# como consolidacao_entregas se liga ao motorista por STRING (motorista_nome,
|
||||
# sem FK/cascade), apagamos os lançamentos dele à mão antes de remover o registro.
|
||||
def excluir_motorista
|
||||
authorize @consolidacao, :destroy?
|
||||
cm = @consolidacao.consolidacao_motoristas.find(params[:consolidacao_motorista_id])
|
||||
|
||||
if cm.pago?
|
||||
return redirect_to wizard_consolidacao_path(@consolidacao),
|
||||
alert: "#{cm.motorista_nome} já está pago — estorne o pagamento antes de excluir."
|
||||
end
|
||||
|
||||
nome = cm.motorista_nome
|
||||
ActiveRecord::Base.transaction do
|
||||
@consolidacao.consolidacao_entregas.where(motorista_nome: nome).delete_all
|
||||
cm.destroy!
|
||||
end
|
||||
# cm já não existe — atualiza o total da consolidação direto (soma dos ativos).
|
||||
@consolidacao.update_column(:valor_total, @consolidacao.consolidacao_motoristas.ativos.sum(:valor_total))
|
||||
auditar!(:editar, @consolidacao, dados_novos: { excluir_motorista: nome })
|
||||
redirect_to wizard_consolidacao_path(@consolidacao),
|
||||
notice: "#{nome} excluído desta consolidação."
|
||||
end
|
||||
|
||||
# POST /consolidacoes/:id/adicionar_motorista — inclui um motorista nesta
|
||||
# consolidação (ou restaura, se estava arquivado). Útil para refazer rápido
|
||||
# depois de excluir/arquivar por erro de precificação.
|
||||
def adicionar_motorista
|
||||
authorize @consolidacao, :update?
|
||||
nome = params[:motorista_nome].to_s.strip
|
||||
|
||||
if nome.blank?
|
||||
return redirect_to wizard_consolidacao_path(@consolidacao), alert: 'Informe o nome do motorista.'
|
||||
end
|
||||
|
||||
cm = @consolidacao.consolidacao_motoristas.find_or_initialize_by(motorista_nome: nome)
|
||||
aviso =
|
||||
if cm.persisted? && cm.arquivado?
|
||||
cm.desarquivar!(current_user)
|
||||
"#{nome} restaurado para a consolidação."
|
||||
elsif cm.persisted?
|
||||
"#{nome} já está nesta consolidação."
|
||||
else
|
||||
cm.save!
|
||||
"#{nome} adicionado à consolidação."
|
||||
end
|
||||
|
||||
@consolidacao.recalcular_motorista!(nome)
|
||||
auditar!(:editar, @consolidacao, dados_novos: { adicionar_motorista: nome })
|
||||
redirect_to wizard_consolidacao_path(@consolidacao), notice: aviso
|
||||
end
|
||||
|
||||
# ── FASE 7 — PDFs ────────────────────────────────────────────
|
||||
|
||||
# GET /consolidacoes/:id/gerar_pdf_relatorio?motorista=X
|
||||
|
||||
Reference in New Issue
Block a user