Corrige dashboard por período, CRUD de usuário, PDFs e paginação na revisão
- Dashboard: no_periodo passa a cobrir o dia inteiro (planned_date é timestamp), corrigindo período que zerava ao terminar no dia dos dados - Dashboard: card de consolidações filtra por sobreposição de datas (não created_at) - Usuários: adiciona helper role_options_for_select (corrige edição/criação) - Consolidação: set_consolidacao nas actions de PDF/preview (corrige Pundit::NotDefinedError em Relatório Individual, Gerar Holerite e Preview) - Revisão: paginação com Pagy (20/página + seletor 20/50/100) - Nova consolidação: veículos filtrados pelo(s) motorista(s) no período
This commit is contained in:
@@ -20,8 +20,11 @@ class Entrega < ApplicationRecord
|
||||
scope :pagas, -> { concluidas.com_checkout }
|
||||
scope :pendentes, -> { where.not(status: 'completed') }
|
||||
|
||||
# planned_date é timestamp: usamos o dia inteiro do limite superior para não
|
||||
# descartar as entregas do último dia do período (causava dashboard zerado e
|
||||
# subcontagem de elegíveis nas consolidações).
|
||||
scope :no_periodo, ->(inicio, fim) {
|
||||
where(planned_date: inicio.to_date..fim.to_date)
|
||||
where(planned_date: inicio.to_date.beginning_of_day..fim.to_date.end_of_day)
|
||||
}
|
||||
|
||||
scope :do_motorista, ->(nome) {
|
||||
@@ -65,6 +68,17 @@ class Entrega < ApplicationRecord
|
||||
base.distinct.order(:vehicle).pluck(:vehicle).compact.reject(&:empty?)
|
||||
end
|
||||
|
||||
# Veículos usados pelo(s) motorista(s) selecionado(s) no período — alimenta o
|
||||
# filtro dinâmico de veículos na criação de consolidação.
|
||||
def self.veiculos_de_motoristas(motoristas, inicio: nil, fim: nil)
|
||||
nomes = Array(motoristas).reject(&:blank?)
|
||||
return [] if nomes.empty?
|
||||
|
||||
base = da_conta_gade.where(driver: nomes)
|
||||
base = base.no_periodo(inicio, fim) if inicio.present? && fim.present?
|
||||
base.distinct.order(:vehicle).pluck(:vehicle).compact.reject(&:empty?)
|
||||
end
|
||||
|
||||
# Contagem de entregas pagas para cálculo estimado
|
||||
def self.contar_pagas(inicio:, fim:, motorista: nil, vehicle: nil)
|
||||
base = pagas.da_conta_gade.no_periodo(inicio, fim)
|
||||
|
||||
Reference in New Issue
Block a user