Do not restore adjustments that got deleted

If something in the block deleted the adjustment update_attribute will
fail.
This commit is contained in:
Pau Perez
2019-01-29 09:39:15 +01:00
parent 59f39b14f4
commit c50fa1224b

View File

@@ -143,17 +143,15 @@ Spree::OrdersController.class_eval do
# adjustments that might get created in the yielded block.
def with_open_adjustments
previous_states = @order.adjustments.each_with_object({}) do |adjustment, hash|
hash[adjustment.id] = { adjustment: adjustment, previous_state: adjustment.state }
hash[adjustment.id] = adjustment.state
end
@order.adjustments.each(&:open)
yield
previous_states.each do |adjustment_id, adjustment_pair|
adjustment = adjustment_pair[:adjustment]
previous_state = adjustment_pair[:previous_state]
adjustment.update_attribute(:state, previous_state)
@order.adjustments.each do |adjustment|
previous_state = previous_states[adjustment.id]
adjustment.update_attribute(:state, previous_state) if previous_state
end
end