Module: SpreeCmCommissioner::VariantDecorator
- Defined in:
- app/models/spree_cm_commissioner/variant_decorator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #create_trip_stops ⇒ Object
- #delivery_required? ⇒ Boolean
-
#discontinued? ⇒ Boolean
override.
- #display_variant ⇒ 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 28 29 30 31 32 33 34 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 3 def self.prepended(base) base.include SpreeCmCommissioner::ProductDelegation base.include SpreeCmCommissioner::VariantOptionsConcern base.include SpreeCmCommissioner::KycBitwise 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_one :event, class_name: 'Spree::Taxon', through: :product 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.has_one :trip, class_name: 'SpreeCmCommissioner::Trip' base.has_many :trip_stops, class_name: 'SpreeCmCommissioner::TripStop', dependent: :destroy, foreign_key: :trip_id base.accepts_nested_attributes_for :option_values base.after_commit :sync_trip, if: :transit? base.accepts_nested_attributes_for :trip_stops, allow_destroy: true base.after_commit :create_trip_stops, if: :transit? end |
Instance Method Details
#create_trip_stops ⇒ Object
36 37 38 39 40 41 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 36 def create_trip_stops return if is_master? trip_stops.find_or_create_by(stop_type: :boarding, stop_id: .origin) trip_stops.find_or_create_by(stop_type: :drop_off, stop_id: .destination) end |
#delivery_required? ⇒ Boolean
43 44 45 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 43 def delivery_required? delivery_option == 'delivery' end |
#discontinued? ⇒ Boolean
override
52 53 54 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 52 def discontinued? super || product.discontinued? end |
#display_variant ⇒ Object
69 70 71 72 73 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 69 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 |
#in_stock? ⇒ Boolean
override
80 81 82 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 80 def in_stock? available_quantity.positive? end |
#non_digital_ecommerce? ⇒ Boolean
47 48 49 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 47 def non_digital_ecommerce? !digital? && ecommerce? end |
#options_text ⇒ Object
override
61 62 63 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 61 def @options_text ||= Spree::Variants::VisableOptionsPresenter.new(self).to_sentence end |
#permanent_stock? ⇒ Boolean
56 57 58 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 56 def permanent_stock? accommodation? end |
#selected_option_value_ids ⇒ Object
65 66 67 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 65 def selected_option_value_ids option_value_variants.pluck(:option_value_id) end |
#transit? ⇒ Boolean
75 76 77 |
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 75 def transit? product.product_type == 'transit' end |