correção dos nomes no filtro de meses

This commit is contained in:
2026-07-03 10:37:30 -03:00
parent 0a6b5a68fc
commit 069301bc2e
3 changed files with 50 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@@ -37,17 +37,28 @@ class Operacao
nomes_validos.include?(nome.to_s) nomes_validos.include?(nome.to_s)
end end
# Rótulo amigável: tira o prefixo e formata. # Rótulo amigável: tira o prefixo e formata em CAIXA ALTA (para não parecer o
# nome cru da tabela do banco).
def label(tabela) def label(tabela)
tabela.to_s.delete_prefix(PREFIXO).tr('_', ' ').strip.titleize tabela.to_s.delete_prefix(PREFIXO).tr('_', ' ').strip.upcase
end end
# Abreviações de mês usadas nos nomes das tabelas (gade_entregas_emad_fev_2026). # Meses usados nos nomes das tabelas (gade_entregas_emad_fev_2026). Aceita a
# abreviação (fev) E o nome por extenso (fevereiro) — o cliente usa os dois
# (ex.: "..._ubs_norte_maio_2026"), então ambos precisam cair no mês certo.
MESES = { MESES = {
'jan' => [1, 'Janeiro'], 'fev' => [2, 'Fevereiro'], 'mar' => [3, 'Março'], 'jan' => [1, 'Janeiro'], 'janeiro' => [1, 'Janeiro'],
'abr' => [4, 'Abril'], 'mai' => [5, 'Maio'], 'jun' => [6, 'Junho'], 'fev' => [2, 'Fevereiro'], 'fevereiro' => [2, 'Fevereiro'],
'jul' => [7, 'Julho'], 'ago' => [8, 'Agosto'], 'set' => [9, 'Setembro'], 'mar' => [3, 'Março'], 'marco' => [3, 'Março'], 'março' => [3, 'Março'],
'out' => [10, 'Outubro'], 'nov' => [11, 'Novembro'], 'dez' => [12, 'Dezembro'] 'abr' => [4, 'Abril'], 'abril' => [4, 'Abril'],
'mai' => [5, 'Maio'], 'maio' => [5, 'Maio'],
'jun' => [6, 'Junho'], 'junho' => [6, 'Junho'],
'jul' => [7, 'Julho'], 'julho' => [7, 'Julho'],
'ago' => [8, 'Agosto'], 'agosto' => [8, 'Agosto'],
'set' => [9, 'Setembro'], 'setembro' => [9, 'Setembro'],
'out' => [10, 'Outubro'], 'outubro' => [10, 'Outubro'],
'nov' => [11, 'Novembro'], 'novembro' => [11, 'Novembro'],
'dez' => [12, 'Dezembro'], 'dezembro' => [12, 'Dezembro']
}.freeze }.freeze
# Agrupa as operações por mês/ano (extraído do nome da tabela), do mais recente # Agrupa as operações por mês/ano (extraído do nome da tabela), do mais recente
@@ -99,7 +110,7 @@ class Operacao
resto = (tokens[0...idx] + tokens[(ano ? idx + 2 : idx + 1)..]).join(' ').strip resto = (tokens[0...idx] + tokens[(ano ? idx + 2 : idx + 1)..]).join(' ').strip
{ {
titulo: ano ? "#{nome} #{ano}" : nome, titulo: ano ? "#{nome} #{ano}" : nome,
item: resto.presence&.titleize || nome, item: (resto.presence || nome).to_s.upcase,
# mais recente primeiro; sem ano vai pro fim do bloco do mês # mais recente primeiro; sem ano vai pro fim do bloco do mês
ordem: [-(ano || 0), -num] ordem: [-(ano || 0), -num]
} }

View File

@@ -0,0 +1,31 @@
require 'rails_helper'
# label e grupo_de são só parsing do nome da tabela (sem tocar o banco).
RSpec.describe Operacao do
describe '.label (caixa alta, sem parecer o nome do banco)' do
it 'tira o prefixo e deixa em CAIXA ALTA' do
expect(Operacao.label('gade_entregas_ubs_norte_maio_2026')).to eq('UBS NORTE MAIO 2026')
expect(Operacao.label('gade_entregas_emad_fev_2026')).to eq('EMAD FEV 2026')
end
end
describe '.grupo_de (agrupamento por mês)' do
it 'reconhece o mês por EXTENSO (maio) e agrupa no mês certo, item em caixa alta' do
g = Operacao.send(:grupo_de, 'gade_entregas_ubs_norte_maio_2026')
expect(g[:titulo]).to eq('Maio 2026')
expect(g[:item]).to eq('UBS NORTE')
end
it 'continua reconhecendo a abreviação (fev)' do
g = Operacao.send(:grupo_de, 'gade_entregas_emad_fev_2026')
expect(g[:titulo]).to eq('Fevereiro 2026')
expect(g[:item]).to eq('EMAD')
end
it 'cai em "Outras" quando não há mês reconhecível' do
g = Operacao.send(:grupo_de, 'gade_entregas_oeste_centro_remanescentes')
expect(g[:titulo]).to eq('Outras')
expect(g[:item]).to eq('OESTE CENTRO REMANESCENTES')
end
end
end