35 lines
1.1 KiB
Ruby
35 lines
1.1 KiB
Ruby
# app/models/consolidacao.rb
|
|
class Consolidacao < ApplicationRecord
|
|
# Soft delete
|
|
acts_as_paranoid if respond_to?(:acts_as_paranoid)
|
|
|
|
enum status: { aberta: 0, em_revisao: 1, fechada: 2, aprovada: 3, cancelada: 4 }
|
|
|
|
belongs_to :criado_por, class_name: 'User', foreign_key: :user_id
|
|
has_many :consolidacao_motoristas, dependent: :destroy
|
|
has_many :consolidacao_entregas, through: :consolidacao_motoristas
|
|
has_many :motoristas, through: :consolidacao_motoristas, source: :user
|
|
|
|
validates :referencia_mes, presence: true
|
|
validates :status, presence: true
|
|
|
|
scope :do_mes, ->(data = Date.today) {
|
|
where(referencia_mes: data.beginning_of_month..data.end_of_month)
|
|
}
|
|
|
|
scope :abertas, -> { where(status: :aberta) }
|
|
scope :fechadas, -> { where(status: [:fechada, :aprovada]) }
|
|
|
|
def progresso_percentual
|
|
return 0 if consolidacao_motoristas.none?
|
|
|
|
finalizados = consolidacao_motoristas.where(finalizado: true).count
|
|
total = consolidacao_motoristas.count
|
|
((finalizados.to_f / total) * 100).round
|
|
end
|
|
|
|
def mes_label
|
|
referencia_mes&.strftime('%B/%Y')&.capitalize
|
|
end
|
|
end
|