#
#= ranks
#-------------------------------------------------------------------------------
#
class Rank < Comm::BaseModel::PermanentMaster
  include Comm::Const::MasterCode

  NOLIMIT_VAL = -1

  has_many :ranks_approvals, :dependent => :destroy
  has_many :wholesale_approvals, :dependent => :destroy

  #== 承認に必要なランク番号取得
  #-----------------------------------------------------------------#++
  def self.approvable_ranking(app_type_id = nil, amount = nil)
    rank = self.find(
      :first,
      :joins => 'INNER JOIN ranks_approvals ON ranks.id = ranks_approvals.rank_id',
      :order => 'ranks.ranking DESC',
      :conditions => [
        'application_type_id = ? AND (amount >= ? OR amount = ?) AND ranks.invalid_flag_code = ?',
        app_type_id,
        amount,
        NOLIMIT_VAL,
        MCODE_FLAG_OFF
      ]
    )
    return rank.ranking
  end

  #== 仕切値申請承認に必要なランク番号取得
  #-----------------------------------------------------------------#++
  def self.price_approvable_ranking(amount = nil, product_id = nil)
    rank = self.find(
      :first,
      :joins => 'INNER JOIN wholesale_approvals ON ranks.id = wholesale_approvals.rank_id',
      :order => 'ranks.ranking DESC',
      :conditions => [
        'product_set_id = ? AND (amount <= ? OR amount = ?) AND ranks.invalid_flag_code = ?',
        product_id,
        amount,
        NOLIMIT_VAL,
        MCODE_FLAG_OFF
      ]
    )
    return rank.ranking
  end
end
