Atualização geral de inconsistencias da UX
This commit is contained in:
@@ -122,9 +122,6 @@ class DashboardController < ApplicationController
|
||||
# Evolução diária no período (para Chart.js) — por data real (checkout)
|
||||
@grafico_diario = build_grafico_diario(pagas, config[:entrega])
|
||||
|
||||
# Resultado por dia (entregue/falhada/pendente) — barras empilhadas
|
||||
@grafico_status = build_grafico_status(pagas, falhadas, pendentes)
|
||||
|
||||
# Consolidações cujo período (data_inicio..data_fim) cruza o período do dashboard
|
||||
# — independe de quando foram criadas (created_at).
|
||||
@consolidacoes_mes = Consolidacao.ativas
|
||||
@@ -168,6 +165,9 @@ class DashboardController < ApplicationController
|
||||
|
||||
@pagamentos_feitos = pagos.includes(:consolidacao, :pagador).order(pago_em: :desc)
|
||||
@pagamentos_pendentes = pendentes.includes(:consolidacao).order(consolidacao_id: :desc)
|
||||
|
||||
# Fluxo de pagamentos por dia (valor pago + acumulado) para o gráfico
|
||||
@grafico_pagamentos_dia = build_grafico_pagamentos(pagos)
|
||||
end
|
||||
|
||||
# Visão financeira (custo) das consolidações finalizadas do período, já com o
|
||||
@@ -244,33 +244,26 @@ class DashboardController < ApplicationController
|
||||
{ labels: labels, valores: valores, qtds: qtds }
|
||||
end
|
||||
|
||||
# Entregas por dia separadas por resultado, para o gráfico empilhado.
|
||||
# Concluídas pela data real (checkout); falhadas e pendentes não têm
|
||||
# checkout, então usam a data planejada (planned_date).
|
||||
def build_grafico_status(pagas, falhadas, pendentes)
|
||||
# Valor pago por dia (pela data do pagamento) + acumulado no período,
|
||||
# para o gráfico de fluxo de pagamentos.
|
||||
def build_grafico_pagamentos(pagos)
|
||||
dias = (@periodo_inicio..@periodo_fim).to_a
|
||||
|
||||
if dias.size <= MAX_DIAS_GRAFICO
|
||||
ok = pagas.group("DATE(checkout)").count.transform_keys(&:to_s)
|
||||
falhas = falhadas.group("DATE(planned_date)").count.transform_keys(&:to_s)
|
||||
pend = pendentes.group("DATE(planned_date)").count.transform_keys(&:to_s)
|
||||
soma = pagos.group("DATE(pago_em)").sum(:valor_total).transform_keys(&:to_s)
|
||||
labels = dias.map { |d| d.strftime('%d/%m') }
|
||||
chaves = dias.map(&:to_s)
|
||||
else
|
||||
ok = pagas.group("TO_CHAR(checkout, 'YYYY-MM')").count
|
||||
falhas = falhadas.group("TO_CHAR(planned_date, 'YYYY-MM')").count
|
||||
pend = pendentes.group("TO_CHAR(planned_date, 'YYYY-MM')").count
|
||||
soma = pagos.group("TO_CHAR(pago_em, 'YYYY-MM')").sum(:valor_total)
|
||||
meses = meses_no_periodo
|
||||
labels = meses.map { |m| Date.strptime(m, '%Y-%m').strftime('%m/%Y') }
|
||||
chaves = meses
|
||||
end
|
||||
|
||||
{
|
||||
labels: labels,
|
||||
entregues: chaves.map { |k| ok[k] || 0 },
|
||||
falhadas: chaves.map { |k| falhas[k] || 0 },
|
||||
pendentes: chaves.map { |k| pend[k] || 0 }
|
||||
}
|
||||
valores = chaves.map { |k| soma[k].to_f.round(2) }
|
||||
acumulado = 0
|
||||
{ labels: labels, valores: valores,
|
||||
acumulado: valores.map { |v| (acumulado += v).round(2) } }
|
||||
end
|
||||
|
||||
# Meses ("YYYY-MM") do início ao fim do período selecionado, inclusive.
|
||||
|
||||
Reference in New Issue
Block a user