diff --git a/core/lib/spree/core/unreturned_item_charger.rb b/core/lib/spree/core/unreturned_item_charger.rb index 2636c784415..7e31409e8ec 100644 --- a/core/lib/spree/core/unreturned_item_charger.rb +++ b/core/lib/spree/core/unreturned_item_charger.rb @@ -10,7 +10,7 @@ def initialize(message, new_order) class_attribute :failure_handler - attr_reader :original_order + attr_reader :original_order, :new_order def initialize(shipment, return_items) @shipment = shipment @@ -19,6 +19,8 @@ def initialize(shipment, return_items) end def charge_for_items + self.new_order = Spree::Order.create!(exchange_order_attributes) + new_order.associate_user!(@original_order.user) if @original_order.user add_exchange_variants_to_order @@ -55,9 +57,7 @@ def charge_for_items private - def new_order - @new_order ||= Spree::Order.create!(exchange_order_attributes) - end + attr_writer :new_order def add_exchange_variants_to_order @return_items.group_by(&:exchange_variant).map do |variant, variant_return_items| diff --git a/core/lib/tasks/exchanges.rake b/core/lib/tasks/exchanges.rake index 2cc8b24e393..6e6a62d9e0c 100644 --- a/core/lib/tasks/exchanges.rake +++ b/core/lib/tasks/exchanges.rake @@ -20,12 +20,13 @@ namespace :exchanges do begin item_charger.charge_for_items rescue Spree::UnreturnedItemCharger::ChargeFailure => e - failure = {message: e.message, new_order: e.new_order.try(:number)} - rescue Exception => e - failure = {message: "#{e.class}: #{e.message}"} + failure = { message: e.message } + rescue => e + failure = { message: "#{e.class}: #{e.message}" } end if failure + failure[:new_order] = item_charger.new_order.number if item_charger.new_order failures << failure.merge({ order: item_charger.original_order.number, shipment: shipment.number,