summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolò€ Rebughini <nicolo.rebughini@gmail.com>2020-09-17 17:38:58 +0200
committerNicolò€ Rebughini <nicolo.rebughini@gmail.com>2020-09-17 17:38:58 +0200
commit6614671689cc337422478fef87cf4703d241c539 (patch)
treeec1e2d2fd99c4029941ae2c4b3e26f398424a48f
parent77b8567fa0fd1b8e93a21c71cc0fb9ec0638e1d6 (diff)
Add order association to subscriptions
-rw-r--r--app/decorators/models/solidus_subscriptions/spree/order/subscription_association.rb13
-rw-r--r--app/models/solidus_subscriptions/subscription.rb1
-rw-r--r--app/services/solidus_subscriptions/checkout.rb3
-rw-r--r--db/migrate/20200917072152_add_subscription_reference_to_orders.rb5
4 files changed, 21 insertions, 1 deletions
diff --git a/app/decorators/models/solidus_subscriptions/spree/order/subscription_association.rb b/app/decorators/models/solidus_subscriptions/spree/order/subscription_association.rb
new file mode 100644
index 0000000..9dc386a
--- /dev/null
+++ b/app/decorators/models/solidus_subscriptions/spree/order/subscription_association.rb
@@ -0,0 +1,13 @@
+module SolidusSubscriptions
+ module Spree
+ module Order
+ module SubscriptionAssociation
+ def self.prepended(base)
+ base.belongs_to :subscription, class_name: '::SolidusSubscriptions::Subscription', optional: true
+ end
+ end
+ end
+ end
+end
+
+Spree::Order.prepend(SolidusSubscriptions::Spree::Order::SubscriptionAssociation)
diff --git a/app/models/solidus_subscriptions/subscription.rb b/app/models/solidus_subscriptions/subscription.rb
index 9839773..2f23a6e 100644
--- a/app/models/solidus_subscriptions/subscription.rb
+++ b/app/models/solidus_subscriptions/subscription.rb
@@ -11,6 +11,7 @@ module SolidusSubscriptions
has_many :line_items, class_name: 'SolidusSubscriptions::LineItem', inverse_of: :subscription
has_many :installments, class_name: 'SolidusSubscriptions::Installment'
has_many :events, class_name: 'SolidusSubscriptions::SubscriptionEvent'
+ has_many :orders, class_name: '::Spree::Order', inverse_of: :subscription
belongs_to :store, class_name: '::Spree::Store'
belongs_to :shipping_address, class_name: '::Spree::Address', optional: true
belongs_to :billing_address, class_name: '::Spree::Address', optional: true
diff --git a/app/services/solidus_subscriptions/checkout.rb b/app/services/solidus_subscriptions/checkout.rb
index 3457435..dbc3174 100644
--- a/app/services/solidus_subscriptions/checkout.rb
+++ b/app/services/solidus_subscriptions/checkout.rb
@@ -58,7 +58,8 @@ module SolidusSubscriptions
user: user,
email: user.email,
store: subscription.store || ::Spree::Store.default,
- subscription_order: true
+ subscription_order: true,
+ subscription: subscription
)
end
diff --git a/db/migrate/20200917072152_add_subscription_reference_to_orders.rb b/db/migrate/20200917072152_add_subscription_reference_to_orders.rb
new file mode 100644
index 0000000..dae918a
--- /dev/null
+++ b/db/migrate/20200917072152_add_subscription_reference_to_orders.rb
@@ -0,0 +1,5 @@
+class AddSubscriptionReferenceToOrders < ActiveRecord::Migration[5.2]
+ def change
+ add_reference :spree_orders, :subscription, null: true, foreign_key: { to_table: :solidus_subscriptions_subscriptions }
+ end
+end