Sha256: 4069b3d94a3629362433b4f4f39116e00c1ae4aac11faa22876768aab97fe1f7

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

module Workarea
  decorate Pricing::Sku, with: :flow_io do
    decorated do
      embeds_many :flow_io_local_items, class_name: "Workarea::FlowIo::LocalItem"
    end

    # @return Money
    def msrp_for_experience(experience)
      local_item = flow_io_local_items.detect do |item|
        item.experience.key == experience.key
      end

      local_item&.msrp&.price
    end

    # Find the price to sell at for a specific options.
    #
    # Takes options :quantity, :experience (::Io::Flow::V0::Models::ExperienceSummary || ::Io::Flow::V0::Models::ExperienceGeo)
    #
    # @param [Hash]
    # @return [Pricing::Price]
    #
    def find_price(options = {})
      return super unless options[:experience].present?

      quantity = options[:quantity] || 1

      local_item = flow_io_local_items.detect do |item|
        item.experience.key == options[:experience].key
      end

      local_item&.to_price(quantity) ||
        Pricing::Price.new(regular: 0.to_m(options[:experience].currency))
    end

    # @param Io::Flow::V0::Models::Item
    def import_flow_item(flow_item)
      local_item = flow_io_local_items.detect { |li| li.experience.key == flow_item.local.experience.key } ||
        flow_io_local_items.new

      local_item.update_from_flow_item(flow_item)

      Sidekiq::Callbacks.disable(Workarea::FlowIo::ItemExporter) { save! }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
workarea-flow_io-1.2.1 app/models/workarea/pricing/sku.decorator