Files
Reem-Notas/app/services/notificacao/formatador.rb

32 lines
1.1 KiB
Ruby

# app/services/notificacao/formatador.rb
#
# Formatação dos valores que entram numa mensagem. Existe porque o mesmo `moeda`
# estava copiado em `Notificacao::Gatilhos` e em `NotificacaoService` — e agora o
# catálogo de variáveis também precisa dele, o que faria três cópias.
#
# Métodos de módulo (sem estado): é chamado de model, job, service e view.
module Notificacao
module Formatador
module_function
# R$ 1.234,56 — separador de milhar incluído (o `number_to_currency` do Rails
# depende de locale carregado, e isto roda também dentro de job).
def moeda(valor)
inteiro, decimais = format('%.2f', valor.to_f).split('.')
inteiro = inteiro.reverse.gsub(/(\d{3})(?=\d)/, '\1.').reverse
"R$ #{inteiro},#{decimais}"
end
def periodo(inicio, fim)
return '' if inicio.blank? || fim.blank?
"#{inicio.to_date.strftime('%d/%m/%Y')} a #{fim.to_date.strftime('%d/%m/%Y')}"
end
# Números grandes ficam ilegíveis sem separador numa mensagem de WhatsApp.
def numero(valor)
valor.to_i.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\1.').reverse
end
end
end