Correção Dash board e implantação Relaório de ADM
This commit is contained in:
@@ -39,7 +39,8 @@ class ConsolidacaoEntregasController < ApplicationController
|
||||
entrega_normal: Configuracao.preco_entrega,
|
||||
retirada: Configuracao.preco_retirada,
|
||||
bonus: Configuracao.preco_bonus,
|
||||
desconto: Configuracao.preco_desconto
|
||||
desconto: Configuracao.preco_desconto,
|
||||
extraordinaria: Configuracao.preco_extraordinaria
|
||||
}
|
||||
end
|
||||
|
||||
@@ -62,7 +63,7 @@ class ConsolidacaoEntregasController < ApplicationController
|
||||
tracking_id: params[:tracking_id],
|
||||
motorista_nome: params[:motorista],
|
||||
tipo: params[:tipo],
|
||||
valor_aplicado: valor_para_tipo(params[:tipo]),
|
||||
valor_aplicado: valor_classificacao(params[:tipo]),
|
||||
created_by: current_user.id
|
||||
)
|
||||
ativo = true
|
||||
@@ -106,7 +107,7 @@ class ConsolidacaoEntregasController < ApplicationController
|
||||
.destroy_all
|
||||
else
|
||||
# ADICIONA o pilar às entregas (não remove os demais já marcados).
|
||||
valor = valor_para_tipo(tipo)
|
||||
valor = valor_classificacao(tipo)
|
||||
tracking_ids.each do |tid|
|
||||
ce = @consolidacao.consolidacao_entregas.find_or_initialize_by(tracking_id: tid, tipo: tipo)
|
||||
ce.assign_attributes(motorista_nome: motorista,
|
||||
@@ -296,6 +297,18 @@ class ConsolidacaoEntregasController < ApplicationController
|
||||
ConsolidacaoEntrega.valor_para(tipo)
|
||||
end
|
||||
|
||||
# Valor a aplicar na classificação. Para o pilar "extraordinária" o admin pode
|
||||
# informar um valor customizado (params[:valor]) por ser uma exceção; se vier
|
||||
# ausente/inválido, cai no preço padrão de Configurações. Demais pilares usam
|
||||
# sempre o preço configurado.
|
||||
def valor_classificacao(tipo)
|
||||
return valor_para_tipo(tipo) unless tipo.to_s == 'extraordinaria'
|
||||
|
||||
valor = params[:valor].to_s.strip.tr(',', '.')
|
||||
valor = BigDecimal(valor) rescue nil
|
||||
valor.present? && valor >= 0 ? valor : Configuracao.preco_extraordinaria
|
||||
end
|
||||
|
||||
def recalcular_motorista(nome)
|
||||
@consolidacao.recalcular_motorista!(nome)
|
||||
end
|
||||
|
||||
@@ -5,7 +5,8 @@ class ConsolidacoesController < ApplicationController
|
||||
before_action :set_consolidacao,
|
||||
only: %i[show edit update destroy finalizar arquivar reativar wizard
|
||||
registrar_pagamento cancelar_pagamento
|
||||
preview_holerite gerar_pdf_relatorio gerar_pdf_holerite]
|
||||
preview_holerite gerar_pdf_relatorio gerar_pdf_holerite
|
||||
gerar_pdf_financeiro]
|
||||
|
||||
# Formas de pagamento aceitas (o select da UI usa esta mesma lista).
|
||||
FORMAS_PAGAMENTO = %w[pix transferencia dinheiro].freeze
|
||||
@@ -271,6 +272,19 @@ class ConsolidacoesController < ApplicationController
|
||||
disposition: 'attachment'
|
||||
end
|
||||
|
||||
# GET /consolidacoes/:id/gerar_pdf_financeiro — relatório financeiro da consolidação
|
||||
def gerar_pdf_financeiro
|
||||
authorize @consolidacao, :show?
|
||||
|
||||
pdf = Pdf::RelatorioFinanceiroConsolidacaoPdf.new(consolidacao: @consolidacao)
|
||||
auditar!(:editar, @consolidacao, dados_novos: { pdf: 'financeiro' })
|
||||
|
||||
send_data pdf.render,
|
||||
filename: "financeiro_#{@consolidacao.nome.parameterize}_#{@consolidacao.id}.pdf",
|
||||
type: 'application/pdf',
|
||||
disposition: 'attachment'
|
||||
end
|
||||
|
||||
# GET /consolidacoes/:id/gerar_pdf_holerite?motorista=X
|
||||
def gerar_pdf_holerite
|
||||
autorizar_holerite!(params[:motorista])
|
||||
|
||||
@@ -12,6 +12,44 @@ class DashboardController < ApplicationController
|
||||
carregar_dados_dashboard
|
||||
end
|
||||
|
||||
# GET /dashboard/relatorio_financeiro?inicio=&fim=&operacoes[]=
|
||||
# Relatório financeiro do período (PDF) — mesmos números da tela.
|
||||
def relatorio_financeiro
|
||||
skip_authorization
|
||||
return redirect_to(motorista_dashboard_path) if current_user.motorista?
|
||||
|
||||
@periodo_inicio, @periodo_fim = periodo_selecionado
|
||||
carregar_dados_dashboard
|
||||
|
||||
op_label = @operacao_filtro.present? ? @operacao_filtro.map { |t| Operacao.label(t) }.join(', ') : 'Todas'
|
||||
|
||||
dados = {
|
||||
custo_total: @fin_custo_total,
|
||||
ticket_medio: @fin_ticket_medio,
|
||||
pago: @fin_pago,
|
||||
pendente: @fin_pendente,
|
||||
por_operacao: @fin_por_operacao,
|
||||
por_motorista: @fin_por_motorista,
|
||||
por_tipo: @fin_por_tipo,
|
||||
pagamentos_feitos: @pagamentos_feitos,
|
||||
pagamentos_pendentes: @pagamentos_pendentes,
|
||||
pag_pago_valor: @pag_pago_valor,
|
||||
pag_pago_qtd: @pag_pago_qtd,
|
||||
pag_pend_valor: @pag_pend_valor,
|
||||
pag_pend_qtd: @pag_pend_qtd
|
||||
}
|
||||
|
||||
pdf = Pdf::RelatorioFinanceiroPeriodoPdf.new(
|
||||
periodo_inicio: @periodo_inicio, periodo_fim: @periodo_fim,
|
||||
operacao_label: op_label, dados: dados
|
||||
)
|
||||
|
||||
send_data pdf.render,
|
||||
filename: "financeiro_#{@periodo_inicio.strftime('%Y%m%d')}_#{@periodo_fim.strftime('%Y%m%d')}.pdf",
|
||||
type: 'application/pdf',
|
||||
disposition: 'attachment'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Faixa de datas vinda do filtro de calendário (params inicio/fim).
|
||||
|
||||
Reference in New Issue
Block a user