# 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