Sha256: 384f91cd1520ffb4bb318281c3d95dad51c76f7290e1d7bceb7f2aec705d4cd1

Contents?: true

Size: 799 Bytes

Versions: 3

Compression:

Stored size: 799 Bytes

Contents

# frozen_string_literal: true

module SolidusPromotions
  module LineItemDecorator
    def self.prepended(base)
      base.attr_accessor :quantity_setter
      base.belongs_to :managed_by_order_benefit, class_name: "SolidusPromotions::Benefit", optional: true
      base.validate :validate_managed_quantity_same, on: :update
      base.after_save :reset_quantity_setter
    end

    private

    def validate_managed_quantity_same
      if managed_by_order_benefit && quantity_changed? && quantity_setter != managed_by_order_benefit
        errors.add(:quantity, :cannot_be_changed_for_automated_items)
      end
    end

    def reset_quantity_setter
      @quantity_setter = nil
    end

    Spree::LineItem.prepend self
    Spree::LineItem.prepend SolidusPromotions::DiscountableAmount
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_promotions-4.4.2 app/decorators/models/solidus_promotions/line_item_decorator.rb
solidus_promotions-4.4.1 app/decorators/models/solidus_promotions/line_item_decorator.rb
solidus_promotions-4.4.0 app/decorators/models/solidus_promotions/line_item_decorator.rb