summaryrefslogtreecommitdiff
path: root/lib/solidus_subscriptions/order_creator.rb
diff options
context:
space:
mode:
authorcesartalves <cesartalvez@gmail.com>2021-05-04 10:59:05 -0300
committercesartalves <cesartalvez@gmail.com>2021-05-04 11:02:49 -0300
commit9f87d809e339d459aa29c6aa62f3033a7c978ee7 (patch)
tree8a517c8be9870d943aebbab4965eba8239b9dc55 /lib/solidus_subscriptions/order_creator.rb
parentdafa723b228ec80dfb66a112d495114d29b43e9d (diff)
Introduce Installment OrderCreator configuration
This adds both SolidusSubscriptions.configuration.order_creation_class and SolidusSubscriptions.configuration.order_creation_extra attributes, so that users can add attributes to each Installment Order at Checkout or even override how the Order is created
Diffstat (limited to 'lib/solidus_subscriptions/order_creator.rb')
-rw-r--r--lib/solidus_subscriptions/order_creator.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/solidus_subscriptions/order_creator.rb b/lib/solidus_subscriptions/order_creator.rb
new file mode 100644
index 0000000..97b858a
--- /dev/null
+++ b/lib/solidus_subscriptions/order_creator.rb
@@ -0,0 +1,26 @@
+# frozen_string_literal: true
+
+module SolidusSubscriptions
+ class OrderCreator
+ def initialize(installment, extra_attributes)
+ @installment = installment
+ @extra_attributes = (extra_attributes || {}).symbolize_keys
+ end
+
+ def call
+ ::Spree::Order.create(
+ user: installment.subscription.user,
+ email: installment.subscription.user.email,
+ store: installment.subscription.store || ::Spree::Store.default,
+ subscription_order: true,
+ subscription: installment.subscription,
+ currency: installment.subscription.currency,
+ **extra_attributes
+ )
+ end
+
+ protected
+
+ attr_reader :installment, :extra_attributes
+ end
+end