Modificação na area do motorista

This commit is contained in:
2026-08-26 15:34:56 -03:00
parent 7a8ec1bc16
commit 6c78570658
10 changed files with 261 additions and 54 deletions

View File

@@ -32,6 +32,24 @@ RSpec.describe 'Visão por motorista', type: :request do
expect(response.body).to include('R$ 120,00')
end
# O default tem que ser o MESMO recorte do dashboard ("Consolidado / Pago"),
# senão o operador compara as duas telas e vê valores diferentes.
it 'sem status na URL mostra o CONSOLIDADO (rascunho fica de fora)' do
consolidacao_finalizada(motorista: 'Carlos', valor: 120.0)
rascunho = create(:consolidacao, status: :rascunho,
data_inicio: Date.new(2026, 6, 1), data_fim: Date.new(2026, 6, 30))
create(:consolidacao_entrega, consolidacao: rascunho, motorista_nome: 'Carlos', valor_aplicado: 500.0)
create(:consolidacao_motorista, consolidacao: rascunho, motorista_nome: 'Carlos')
sign_in create(:gerente)
get consolidacoes_path(periodo.merge(visao: 'motoristas'))
expect(response.body).to include('R$ 120,00')
expect(response.body).not_to include('R$ 620,00')
get consolidacoes_path(periodo.merge(visao: 'motoristas', status: 'todos'))
expect(response.body).to include('R$ 620,00')
end
it 'só abre a composição do motorista clicado' do
consolidacao_finalizada(motorista: 'Carlos', valor: 120.0, nome: 'Fechamento Junho')
consolidacao_finalizada(motorista: 'Pedro', valor: 90.0, nome: 'Fechamento do Pedro')

View File

@@ -28,7 +28,7 @@ RSpec.describe Analytics::TotaisPorMotorista do
consolidar(motorista: 'Carlos', valor: 50.0, qtd: 1) # 50
consolidar(motorista: 'Pedro', valor: 30.0, qtd: 1) # 30
consolidar(motorista: 'Carlos', valor: 999.0, status: :rascunho) # fora (rascunho)
consolidar(motorista: 'Carlos', valor: 999.0, # fora (período)
consolidar(motorista: 'Carlos', valor: 999.0, # fora (não cruza)
data_inicio: Date.new(2026, 7, 1), data_fim: Date.new(2026, 7, 31))
expect(totais.linhas.map { |l| [l[:motorista], l[:valor_total]] })
@@ -37,6 +37,29 @@ RSpec.describe Analytics::TotaisPorMotorista do
expect(totais.total_consolidacoes).to eq(3)
end
# ── Recorte de datas: o MESMO do dashboard financeiro ───────────────────
# Quando estes dois casos divergiam do dashboard, o operador via dois valores
# diferentes para o mesmo motorista no mesmo período e lia como erro de conta.
it 'inclui a consolidação que CRUZA o período (não precisa caber inteira)' do
# 20/05 a 20/06: começa antes do filtro, termina dentro.
consolidar(motorista: 'Carlos', valor: 100.0,
data_inicio: Date.new(2026, 5, 20), data_fim: Date.new(2026, 6, 20))
# 20/06 a 20/07: começa dentro, termina depois.
consolidar(motorista: 'Carlos', valor: 40.0,
data_inicio: Date.new(2026, 6, 20), data_fim: Date.new(2026, 7, 20))
expect(totais.total_geral).to eq(140.0)
end
it 'inclui a consolidação de outro período PAGA dentro do período' do
_, cm = consolidar(motorista: 'Carlos', valor: 80.0,
data_inicio: Date.new(2026, 4, 1), data_fim: Date.new(2026, 4, 30))
cm.update!(pago_em: Time.zone.local(2026, 6, 10, 12, 0), forma_pagamento: 'pix')
expect(totais.total_geral).to eq(80.0)
expect(totais.total_pago).to eq(80.0)
end
it 'respeita o filtro de status (o mesmo select da lista)' do
consolidar(motorista: 'Carlos', valor: 100.0)
consolidar(motorista: 'Carlos', valor: 40.0, status: :rascunho)