Module: SpreeCmCommissioner::VariantDecorator
- Defined in:
- app/models/spree_cm_commissioner/variant_decorator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #delivery_required? ⇒ Boolean
-
#discontinued? ⇒ Boolean
override.
- #display_variant ⇒ Object
- #event ⇒ Object
-
#in_stock? ⇒ Boolean
override.
- #non_digital_ecommerce? ⇒ Boolean
-
#options_text ⇒ Object
override.
- #permanent_stock? ⇒ Boolean
- #selected_option_value_ids ⇒ Object
- #transit? ⇒ Boolean
Class Method Details
.prepended(base) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 3 def self.prepended(base) base.include SpreeCmCommissioner::ProductDelegation base.include SpreeCmCommissioner::VariantOptionsConcern base.after_commit :update_vendor_price base.validate :validate_option_types base.before_save -> { self.track_inventory = false }, if: :subscribable? base.belongs_to :vendor, class_name: 'Spree::Vendor' base.has_many :taxons, class_name: 'Spree::Taxon', through: :product base.has_many :visible_option_values, lambda { joins(:option_type).where(spree_option_types: { hidden: false }) }, through: :option_value_variants, source: :option_value base.has_many :video_on_demands, class_name: 'SpreeCmCommissioner::VideoOnDemand', dependent: :destroy base.has_many :complete_line_items, -> { complete }, class_name: 'Spree::LineItem' base.has_many :variant_guest_card_class, class_name: 'SpreeCmCommissioner::VariantGuestCardClass' base.has_many :guest_card_classes, class_name: 'SpreeCmCommissioner::GuestCardClass', through: :variant_guest_card_class base.scope :subscribable, -> { active.joins(:product).where(product: { subscribable: true, status: :active }) } base.accepts_nested_attributes_for :option_values end |
Instance Method Details
#delivery_required? ⇒ Boolean
29 30 31 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 29 def delivery_required? delivery_option == 'delivery' end |
#discontinued? ⇒ Boolean
override
38 39 40 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 38 def discontinued? super || product.discontinued? end |
#display_variant ⇒ Object
59 60 61 62 63 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 59 def display_variant display_sku = sku.split('-').join(' ') display_price = Spree::Money.new(price.to_i, currency: currency).to_s "#{display_sku} - #{display_price}" end |
#event ⇒ Object
46 47 48 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 46 def event taxons.event.first end |
#in_stock? ⇒ Boolean
override
70 71 72 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 70 def in_stock? available_quantity.positive? end |
#non_digital_ecommerce? ⇒ Boolean
33 34 35 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 33 def non_digital_ecommerce? !digital? && ecommerce? end |
#options_text ⇒ Object
override
51 52 53 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 51 def ||= Spree::Variants::VisableOptionsPresenter.new(self).to_sentence end |
#permanent_stock? ⇒ Boolean
42 43 44 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 42 def permanent_stock? accommodation? end |
#selected_option_value_ids ⇒ Object
55 56 57 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 55 def selected_option_value_ids option_value_variants.pluck(:option_value_id) end |
#transit? ⇒ Boolean
65 66 67 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 65 def transit? product.product_type == 'transit' end |