Class: SpreeCmCommissioner::Promotion::Rules::Vendors

Inherits:
Spree::PromotionRule
  • Object
show all
Defined in:
app/models/spree_cm_commissioner/promotion/rules/vendors.rb

Constant Summary collapse

MATCH_POLICIES =
%w[any all none].freeze

Instance Method Summary collapse

Instance Method Details

#actionable?(line_item) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
39
40
41
42
43
44
45
# File 'app/models/spree_cm_commissioner/promotion/rules/vendors.rb', line 36

def actionable?(line_item)
  case preferred_match_policy
  when 'any', 'all'
    vendor_ids.include? line_item.vendor_id
  when 'none'
    vendor_ids.exclude? line_item.vendor_id
  else
    false
  end
end

#applicable?(promotable) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
# File 'app/models/spree_cm_commissioner/promotion/rules/vendors.rb', line 17

def applicable?(promotable)
  promotable.is_a?(Spree::Order)
end

#eligible?(order, _options = {}) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/models/spree_cm_commissioner/promotion/rules/vendors.rb', line 21

def eligible?(order, _options = {})
  return true if eligible_vendors.empty?

  case preferred_match_policy
  when 'all'
    order.line_items.all? { |line_item| eligible_vendors.include?(line_item.vendor) }
  when 'any'
    order.line_items.any? { |line_item| eligible_vendors.include?(line_item.vendor) }
  when 'none'
    order.line_items.none? { |line_item| eligible_vendors.include?(line_item.vendor) }
  else
    false
  end
end

#vendor_ids_stringObject



47
48
49
# File 'app/models/spree_cm_commissioner/promotion/rules/vendors.rb', line 47

def vendor_ids_string
  vendor_ids.join(',')
end

#vendor_ids_string=(value) ⇒ Object



51
52
53
# File 'app/models/spree_cm_commissioner/promotion/rules/vendors.rb', line 51

def vendor_ids_string=(value)
  self.vendor_ids = value
end