core_merchant 0.10.0 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 698e2da9b3b98b8e6c6275063af7d439c1c2a79384927e952e50419691331ce9
4
- data.tar.gz: fde06b7ff60d2ac49bc36b5c89200c073a1f498eca046075c7bd0cfb626702de
3
+ metadata.gz: 2fadff8a1997d56c7aeaed293ac6e675dfb7b2bd310abc209607d20ef87ca336
4
+ data.tar.gz: c36ba36b69437b96fd0e14bb230e8a08cea03db802fdb2492ab5af7eb8eab594
5
5
  SHA512:
6
- metadata.gz: 2cc9e74b4053e9a91435977f1b6d30222c96a69403654062a9c36dcfec6a18e2e4eebecfdc9c889cc3afbac1ac1a34e4f451cd78e6abbe64bf4ca7e795570543
7
- data.tar.gz: 6a8cfc973fe959bfbb5cf29c0b68e3e7f644e1cee9f5e21fdc415a4d510b26ddf904e85d05c29188a176fec0225c6e763938713dcdb4d8521cf12d0aab4797c5
6
+ metadata.gz: bec0145aec16c30230e2f756de3ba843bf487d5861128b7417ce3643192b7c0d67fa7cadbb20e642eccc6015f5b67c779339399e3a298b4eb1c1e597c11be53b
7
+ data.tar.gz: 7b7fc60c7e21840887603f2fc0a223f0394d6b73b7a3ec2e49b17dd4cfeafd663a335ec6408c379ba2e94a184abb5d45b5f4e6982d566a474b1180661d93c446
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- core_merchant (0.9.0)
4
+ core_merchant (0.10.1)
5
5
  activesupport (~> 7.0)
6
6
  rails (~> 7.0)
7
7
 
@@ -10,6 +10,7 @@ module CoreMerchant
10
10
 
11
11
  included do
12
12
  has_many :events, class_name: "SubscriptionEvent", dependent: :destroy
13
+ after_update :create_status_change_event, if: :saved_change_to_status?
13
14
 
14
15
  EVENT_TYPES.each do |event_type|
15
16
  scope_name = "#{event_type}_events".to_sym
@@ -21,6 +22,10 @@ module CoreMerchant
21
22
  events.create!(event_type: event_type, metadata: metadata)
22
23
  end
23
24
  end
25
+
26
+ def create_status_change_event
27
+ status_change_events.create!(from: saved_changes["status"].first, to: status)
28
+ end
24
29
  end
25
30
  end
26
31
  end
@@ -123,6 +123,7 @@ module CoreMerchant
123
123
  end
124
124
 
125
125
  notify_subscription_manager(:canceled, reason: reason, immediate: !at_period_end)
126
+ cancellation_events.create!(reason: reason, at_period_end: at_period_end)
126
127
  end
127
128
 
128
129
  # Starts a new period for the subscription.
@@ -37,10 +37,6 @@ module CoreMerchant
37
37
 
38
38
  validates :event_type, presence: true
39
39
 
40
- def self.event_type
41
- name.demodulize.underscore
42
- end
43
-
44
40
  def metadata
45
41
  value = self[:metadata]
46
42
  value.is_a?(Hash) ? value : JSON.parse(value || "{}")
@@ -104,6 +104,11 @@ module CoreMerchant
104
104
  return unless subscription.transition_to_active
105
105
 
106
106
  subscription.start_new_period
107
+ subscription.renewal_events.create!(
108
+ price_cents: subscription.subscription_plan.price_cents,
109
+ renewed_from: subscription.current_period_start, renewed_until: subscription.current_period_end
110
+ )
111
+
107
112
  notify(subscription, :renewed)
108
113
  end
109
114
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CoreMerchant
4
- VERSION = "0.10.0"
4
+ VERSION = "0.10.2"
5
5
  end
@@ -23,14 +23,10 @@ module CoreMerchant
23
23
  end
24
24
 
25
25
  def create_migration_file
26
- migration_template "migrate/create_core_merchant_subscription_plans.erb",
27
- "db/migrate/create_core_merchant_subscription_plans.rb"
28
-
29
- migration_template "migrate/create_core_merchant_subscriptions.erb",
30
- "db/migrate/create_core_merchant_subscriptions.rb"
31
-
32
- migration_template "migrate/create_core_merchant_subscription_events.erb",
33
- "db/migrate/create_core_merchant_subscription_events.rb"
26
+ migration_template(
27
+ "migrate/create_core_merchant_tables.erb",
28
+ "db/migrate/create_core_merchant_tables.rb"
29
+ )
34
30
  end
35
31
 
36
32
  def show_post_install
@@ -0,0 +1,47 @@
1
+ class CreateCoreMerchantTables < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
2
+ def change
3
+ create_table :core_merchant_subscription_plans do |t|
4
+ t.string :name_key, null: false
5
+ t.integer :price_cents, null: false, default: 0
6
+ t.string :duration, null: false
7
+ t.integer :introductory_price_cents
8
+ t.string :introductory_duration
9
+
10
+ t.timestamps
11
+
12
+ t.index :name_key, unique: true
13
+ end
14
+
15
+ create_table :core_merchant_subscriptions do |t|
16
+ t.references :customer, polymorphic: true, null: false
17
+ t.references :subscription_plan, null: false
18
+ t.integer :status, null: false, default: 0
19
+ t.datetime :canceled_at
20
+ t.string :cancellation_reason
21
+
22
+ t.datetime :start_date, null: false
23
+ t.datetime :trial_end_date
24
+ t.datetime :end_date
25
+ t.datetime :current_period_start_date
26
+ t.datetime :current_period_end_date
27
+ t.datetime :pause_start_date
28
+ t.datetime :pause_end_date
29
+
30
+ t.integer :current_period_price_cents
31
+
32
+ t.timestamps
33
+
34
+ t.index :status
35
+ end
36
+
37
+ create_table :core_merchant_subscription_events do |t|
38
+ t.references :subscription, null: false
39
+ t.string :event_type, null: false
40
+ t.json :metadata
41
+
42
+ t.timestamps
43
+
44
+ t.index :event_type
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: core_merchant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seyithan Teymur
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-25 00:00:00.000000000 Z
11
+ date: 2024-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -158,9 +158,7 @@ files:
158
158
  - lib/generators/core_merchant/install_generator.rb
159
159
  - lib/generators/core_merchant/templates/core_merchant.en.yml
160
160
  - lib/generators/core_merchant/templates/core_merchant.rb
161
- - lib/generators/core_merchant/templates/migrate/create_core_merchant_subscription_events.erb
162
- - lib/generators/core_merchant/templates/migrate/create_core_merchant_subscription_plans.erb
163
- - lib/generators/core_merchant/templates/migrate/create_core_merchant_subscriptions.erb
161
+ - lib/generators/core_merchant/templates/migrate/create_core_merchant_tables.erb
164
162
  - sig/core_merchant.rbs
165
163
  homepage: https://github.com/theseyithan/core_merchant
166
164
  licenses:
@@ -1,14 +0,0 @@
1
- # Created by: rails generate core_merchant:install
2
- class CreateCoreMerchantSubscriptionEvents < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
3
- def change
4
- create_table :core_merchant_subscription_events do |t|
5
- t.references :subscription, null: false, foreign_key: { to_table: :core_merchant_subscriptions }
6
- t.string :event_type, null: false
7
- t.jsonb :metadata, default: {}, null: false
8
-
9
- t.timestamps
10
-
11
- t.index :event_type
12
- end
13
- end
14
- end
@@ -1,16 +0,0 @@
1
- # Created by: rails generate core_merchant:install
2
- class CreateCoreMerchantSubscriptionPlans < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
3
- def change
4
- create_table :core_merchant_subscription_plans do |t|
5
- t.string :name_key, null: false
6
- t.integer :price_cents, null: false, default: 0
7
- t.string :duration, null: false
8
- t.integer :introductory_price_cents
9
- t.string :introductory_duration
10
-
11
- t.timestamps
12
-
13
- t.index :name_key, unique: true
14
- end
15
- end
16
- end
@@ -1,26 +0,0 @@
1
- # Created by: rails generate core_merchant:install
2
- class CreateCoreMerchantSubscriptions < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
3
- def change
4
- create_table :core_merchant_subscriptions do |t|
5
- t.references :customer, polymorphic: true, null: false
6
- t.references :subscription_plan, null: false
7
- t.integer :status, null: false, default: 0
8
- t.datetime :canceled_at
9
- t.string :cancellation_reason
10
-
11
- t.datetime :start_date, null: false
12
- t.datetime :trial_end_date
13
- t.datetime :end_date
14
- t.datetime :current_period_start_date
15
- t.datetime :current_period_end_date
16
- t.datetime :pause_start_date
17
- t.datetime :pause_end_date
18
-
19
- t.integer :current_period_price_cents
20
-
21
- t.timestamps
22
-
23
- t.index :status
24
- end
25
- end
26
- end