Sha256: 0d1693e8aa2671727d475f473d631e25dcea5740095653aa309126b0a28200f3

Contents?: true

Size: 1.44 KB

Versions: 26

Compression:

Stored size: 1.44 KB

Contents

module Spree
  module Api
    module Webhooks
      module StockItemDecorator
        def self.prepended(base)
          base.around_save :queue_webhooks_requests_for_variant_backorderable!
          base.around_save :queue_webhooks_requests_for_product_backorderable!
        end

        private

        def queue_webhooks_requests_for_variant_backorderable!
          was_out_of_stock = !variant.in_stock_or_backorderable?
          was_not_backorderable = !variant_backorderable?
          yield
          if was_out_of_stock && was_not_backorderable && variant_backorderable?
            reload
            variant.queue_webhooks_requests!('variant.backorderable')
          end
        end

        def queue_webhooks_requests_for_product_backorderable!
          product_was_out_of_stock = !product.any_variant_in_stock_or_backorderable?
          product_was_not_backorderable = !product_backorderable?
          yield
          if product_was_out_of_stock && product_was_not_backorderable && product_backorderable?
            variant.product.queue_webhooks_requests!('product.backorderable')
          end
        end

        def product_backorderable?
          Spree::StockItem.exists?(backorderable: true, variant_id: variant.product.variants.ids)
        end

        def variant_backorderable?
          variant.stock_items.exists?(backorderable: true)
        end
      end
    end
  end
end

Spree::StockItem.prepend(Spree::Api::Webhooks::StockItemDecorator)

Version data entries

26 entries across 26 versions & 3 rubygems

Version Path
spree_api-4.8.3 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.8.2 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.7.3 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.6.6 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.5.5 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.4.1 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.5.4 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.6.5 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.7.2 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.7.1 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.6.4 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.7.0 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.6.3 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.6.2 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.6.1 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.6.0 app/models/spree/api/webhooks/stock_item_decorator.rb
spree_api-4.5.3 app/models/spree/api/webhooks/stock_item_decorator.rb
atkhayar-dev-spree-api-0.0.1 app/models/spree/api/webhooks/stock_item_decorator.rb
atkhayar-dev-spree-api-0.0.0 app/models/spree/api/webhooks/stock_item_decorator.rb
atkhayar-spree-dev-api-0.0.0 app/models/spree/api/webhooks/stock_item_decorator.rb