Sha256: d5c14b27e826be838a7bbaa0180d704cdd256d6a9d186fe9fb583404787cb5b7

Contents?: true

Size: 1.17 KB

Versions: 66

Compression:

Stored size: 1.17 KB

Contents

module Spree
  class Exchange
    class UnableToCreateShipments < StandardError; end

    def initialize(order, reimbursement_objects)
      @order = order
      @reimbursement_objects = reimbursement_objects
    end

    def description
      @reimbursement_objects.map do |reimbursement_object|
        "#{reimbursement_object.variant.options_text} => #{reimbursement_object.exchange_variant.options_text}"
      end.join(" | ")
    end

    def display_amount
      Spree::Money.new @reimbursement_objects.map(&:total).sum
    end

    def perform!
      shipments = Spree::Stock::Coordinator.new(@order, @reimbursement_objects.map(&:build_exchange_inventory_unit)).shipments
      if shipments.flat_map(&:inventory_units).size != @reimbursement_objects.size
        raise UnableToCreateShipments.new("Could not generate shipments for all items. Out of stock?")
      end
      @order.shipments += shipments
      @order.save!
      shipments.each do |shipment|
        shipment.update!(@order)
        shipment.finalize!
      end
    end

    def to_key
      nil
    end

    def self.param_key
      "spree_exchange"
    end

    def self.model_name
      Spree::Exchange
    end

  end
end

Version data entries

66 entries across 66 versions & 3 rubygems

Version Path
goca-spree-core-3.1.14.rails.5.0.1 app/models/spree/exchange.rb
goca-spree-core-3.1.14.rails.5.0 app/models/spree/exchange.rb
goca-spree-core-3.1.15.rails.5.0 app/models/spree/exchange.rb
goca-spree-core-3.1.15.pre.rails.pre.5.0 app/models/spree/exchange.rb
spree_core-3.2.9 app/models/spree/exchange.rb
spree_core-3.1.14 app/models/spree/exchange.rb
spree_core-3.2.8 app/models/spree/exchange.rb
spree_core-3.1.13 app/models/spree/exchange.rb
spree_core-3.2.7 app/models/spree/exchange.rb
spree_core-3.1.12 app/models/spree/exchange.rb
spree_core-3.2.6 app/models/spree/exchange.rb
spree_core-3.1.11 app/models/spree/exchange.rb
spree_core-3.1.10 app/models/spree/exchange.rb
spree_core-3.2.5 app/models/spree/exchange.rb
spree_core-3.1.9 app/models/spree/exchange.rb
spree_core-3.2.4 app/models/spree/exchange.rb
spree_core-3.1.8 app/models/spree/exchange.rb
spree_core-3.1.7 app/models/spree/exchange.rb
spree_core-3.2.3 app/models/spree/exchange.rb
spree_core-3.2.2 app/models/spree/exchange.rb