diff options
Diffstat (limited to 'app/decorators/core/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb')
-rw-r--r-- | app/decorators/core/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/decorators/core/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb b/app/decorators/core/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb new file mode 100644 index 0000000..3f83b82 --- /dev/null +++ b/app/decorators/core/models/solidus_subscriptions/spree/order/finalize_creates_subscriptions.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +# Once an order is finalized its subscriptions line items should be converted +# into active subscriptions. This hooks into Spree::Order#finalize! and +# passes all subscription_line_items present on the order to the Subscription +# generator which will build and persist the subscriptions +module SolidusSubscriptions + module Spree + module Order + module FinalizeCreatesSubscriptions + def finalize! + SolidusSubscriptions::SubscriptionGenerator.group(subscription_line_items).each do |line_items| + SolidusSubscriptions::SubscriptionGenerator.activate(line_items) + end + + reload + + super + end + end + end + end +end + +Spree::Order.prepend(SolidusSubscriptions::Spree::Order::FinalizeCreatesSubscriptions) |