diff --git a/lib/solidus_subscriptions/checkout.rb b/lib/solidus_subscriptions/checkout.rb index 9b39f3a1..53e05251 100644 --- a/lib/solidus_subscriptions/checkout.rb +++ b/lib/solidus_subscriptions/checkout.rb @@ -42,6 +42,9 @@ def populate_order(order) end def finalize_order(order) + # Rerun the legacy promotion handler + # `solidus_promotions` does not need this handler, and will pickup promotions in `order.recalculate` + ::Spree::PromotionHandler::Cart.new(order).activate if defined?(::Spree::PromotionHandler::Cart) order.recalculate order.checkout_steps[0...-1].each do diff --git a/lib/solidus_subscriptions/subscription_line_item_builder.rb b/lib/solidus_subscriptions/subscription_line_item_builder.rb index 303c4de0..64b06f08 100644 --- a/lib/solidus_subscriptions/subscription_line_item_builder.rb +++ b/lib/solidus_subscriptions/subscription_line_item_builder.rb @@ -9,6 +9,9 @@ def create_subscription_line_item(line_item) subscription_params.merge(spree_line_item: line_item) ) + # Rerun the legacy promotion handler to pickup subscription promotions + # `solidus_promotions` does not need this handler, and will pickup promotions in `order.recalculate` + ::Spree::PromotionHandler::Cart.new(line_item.order).activate if defined?(::Spree::PromotionHandler::Cart) line_item.order.recalculate end