Fases 7 e 8 — PDFs Prawn + QR + Painel Motorista + Notificações
This commit is contained in:
@@ -99,7 +99,8 @@ class ConsolidacoesController < ApplicationController
|
||||
|
||||
if @consolidacao.finalizar!(current_user)
|
||||
auditar!(:finalizar, @consolidacao)
|
||||
redirect_to @consolidacao, notice: 'Consolidação finalizada com sucesso!'
|
||||
NotificacaoService.notificar_finalizacao(@consolidacao) # WhatsApp/email aos motoristas
|
||||
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.'
|
||||
@@ -114,6 +115,49 @@ class ConsolidacoesController < ApplicationController
|
||||
redirect_to consolidacoes_path, notice: 'Consolidação arquivada.'
|
||||
end
|
||||
|
||||
# ── FASE 7 — PDFs ────────────────────────────────────────────
|
||||
|
||||
# GET /consolidacoes/:id/gerar_pdf_relatorio?motorista=X
|
||||
def gerar_pdf_relatorio
|
||||
authorize @consolidacao, :show?
|
||||
motorista = params[:motorista]
|
||||
|
||||
pdf = Pdf::RelatorioMotoristaPdf.new(consolidacao: @consolidacao, motorista: motorista)
|
||||
auditar!(:editar, @consolidacao, dados_novos: { pdf: 'relatorio', motorista: motorista })
|
||||
|
||||
send_data pdf.render,
|
||||
filename: "relatorio_#{motorista.parameterize}_#{@consolidacao.id}.pdf",
|
||||
type: 'application/pdf',
|
||||
disposition: 'attachment'
|
||||
end
|
||||
|
||||
# GET /consolidacoes/:id/gerar_pdf_holerite?motorista=X
|
||||
def gerar_pdf_holerite
|
||||
authorize @consolidacao, :show?
|
||||
motorista = params[:motorista]
|
||||
user_mot = User.motorista.find_by('LOWER(nome) = ?', motorista.to_s.downcase)
|
||||
user_mot&.regenerar_login_token! if user_mot&.login_token.blank?
|
||||
|
||||
pdf = Pdf::HoleritePdf.new(consolidacao: @consolidacao, motorista: motorista,
|
||||
user_motorista: user_mot, app_host: ENV['APP_HOST'])
|
||||
auditar!(:editar, @consolidacao, dados_novos: { pdf: 'holerite', motorista: motorista })
|
||||
|
||||
send_data pdf.render,
|
||||
filename: "holerite_#{motorista.parameterize}_#{@consolidacao.id}.pdf",
|
||||
type: 'application/pdf',
|
||||
disposition: 'attachment'
|
||||
end
|
||||
|
||||
# GET /consolidacoes/:id/preview_holerite?motorista=X — preview HTML antes do PDF
|
||||
def preview_holerite
|
||||
authorize @consolidacao, :show?
|
||||
@motorista = params[:motorista]
|
||||
@entregas = @consolidacao.consolidacao_entregas.where(motorista_nome: @motorista)
|
||||
@resumo = @entregas.group(:tipo).count
|
||||
@total = @entregas.sum { |e| e.desconto? ? -e.valor_aplicado : e.valor_aplicado }
|
||||
render layout: false # renderiza dentro do modal (Turbo Frame)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_consolidacao
|
||||
|
||||
Reference in New Issue
Block a user