effective_orders 4.5.2 → 4.5.7

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: 36b254eb8e99a4c04b3b63135b2b1caa15f5a8d7803bcad0fff8323b0aab957a
4
- data.tar.gz: 699ccd522afef972528e9dcee5b5eae8abad124cf11e0002f84e5c7a06bf0e8b
3
+ metadata.gz: 7af8313072b9cd7b4ab2fdac74aa083b29a0c8dbcc9e23b215aa96a771478884
4
+ data.tar.gz: 9a472569b70bcc8d2b2aec76e5922bc96f946df57cebd1f6a3dba055f85a1284
5
5
  SHA512:
6
- metadata.gz: 784ec95030d906ab226f26d7f50651062979a3e50fdf286135fc81e3907d6bc23a93c77e1504433012ea59e49bcb4613702723b69a9fe58b858fd36a15ae1590
7
- data.tar.gz: 7f1cf4534c235f84a025a040b2988fcfa8664046d7026de8665f4c14b139afdbd570a4491ffb46ade0d5ba40f80bd6403064f6de6aa5fa4e3ace5e1032331f83
6
+ metadata.gz: 5c82f040bd36057c9919a11378f6fd2c0fc4fb552c06237f6d27f4f96f20f38c43ffb5e71b2cb61c03da91f47162ff62c15458cc486e2eb6523f15941915375c
7
+ data.tar.gz: 8095e12ec205f3d259290058ec9650a8e8b532c2ff1dec4220354baeecf374cc875fcc7b6797d171f8dd3b3b4d32da6bbf8cb618fc0a08df557023df4beaf4ea
@@ -8,7 +8,7 @@ this.StripeForm ||= class StripeForm
8
8
  @card = null
9
9
 
10
10
  initialize: ->
11
- @form = $('form[data-stripe-form]').first()
11
+ @form = $('form[data-stripe-form]:not(.initialized)').first()
12
12
  return false unless @form.length > 0
13
13
 
14
14
  @paymentIntent = @form.find("input[name$='[payment_intent_id]']").first()
@@ -17,6 +17,7 @@ this.StripeForm ||= class StripeForm
17
17
  @card = @stripe.elements().create('card', @style())
18
18
 
19
19
  @mount()
20
+ @form.addClass('initialized')
20
21
 
21
22
  style: ->
22
23
  style: {
@@ -2,6 +2,8 @@ module Effective
2
2
  class CartsController < ApplicationController
3
3
  layout (EffectiveOrders.layout.kind_of?(Hash) ? EffectiveOrders.layout[:carts] : EffectiveOrders.layout)
4
4
 
5
+ before_action :authenticate_user!
6
+
5
7
  def show
6
8
  @cart = current_cart
7
9
  @pending_orders = Effective::Order.pending.where(user: current_user) if current_user.present?
@@ -4,6 +4,8 @@ module Effective
4
4
 
5
5
  include Effective::CrudController
6
6
 
7
+ before_action :authenticate_user!
8
+
7
9
  submit :save, 'Save', success: -> { 'Successfully updated card.' }
8
10
  page_title 'Customer Settings'
9
11
 
@@ -67,6 +67,12 @@ module ActsAsSubscribable
67
67
  subscribed? && subscription_status == EffectiveOrders::PAST_DUE
68
68
  end
69
69
 
70
+ # If we do use stripe
71
+ def subscription_trialing?
72
+ subscribed? && subscription_status == EffectiveOrders::TRIALING
73
+ end
74
+
75
+ # If we don't use stripe
70
76
  def trialing?
71
77
  subscription_status.blank?
72
78
  end
@@ -228,13 +228,13 @@ module Effective
228
228
 
229
229
  def update_prices!
230
230
  raise('already purchased') if purchased?
231
- raise('must be pending') unless pending?
231
+ raise('must be pending or confirmed') unless pending? || confirmed?
232
232
 
233
233
  order_items.each do |item|
234
234
  purchasable = item.purchasable
235
235
 
236
236
  if purchasable.blank? || purchasable.marked_for_destruction?
237
- item.mark_for_destruction
237
+ item.mark_for_destruction
238
238
  else
239
239
  item.price = purchasable.price
240
240
  end
@@ -382,11 +382,11 @@ module Effective
382
382
 
383
383
  raise "Failed to purchase order: #{error || errors.full_messages.to_sentence}" unless error.nil?
384
384
 
385
+ run_purchasable_callbacks(:after_purchase)
386
+
385
387
  send_refund_notification! if email && refund?
386
388
  send_order_receipts! if email
387
389
 
388
- run_purchasable_callbacks(:after_purchase)
389
-
390
390
  true
391
391
  end
392
392
 
@@ -487,13 +487,17 @@ module Effective
487
487
 
488
488
  def get_tax
489
489
  return nil unless tax_rate.present?
490
- order_items.reject { |oi| oi.tax_exempt? }.map { |oi| (oi.subtotal * (tax_rate / 100.0)).round(0).to_i }.sum
490
+ present_order_items.reject { |oi| oi.tax_exempt? }.map { |oi| (oi.subtotal * (tax_rate / 100.0)).round(0).to_i }.sum
491
491
  end
492
492
 
493
493
  private
494
494
 
495
+ def present_order_items
496
+ order_items.reject { |oi| oi.marked_for_destruction? }
497
+ end
498
+
495
499
  def assign_order_totals
496
- self.subtotal = order_items.map { |oi| oi.subtotal }.sum
500
+ self.subtotal = present_order_items.map { |oi| oi.subtotal }.sum
497
501
  self.tax_rate = get_tax_rate() unless (tax_rate || 0) > 0
498
502
  self.tax = get_tax()
499
503
  self.total = subtotal + (tax || 0)
@@ -534,7 +538,11 @@ module Effective
534
538
  end
535
539
 
536
540
  def send_email(email, *mailer_args)
537
- Effective::OrdersMailer.public_send(email, *mailer_args).public_send(EffectiveOrders.mailer[:deliver_method])
541
+ begin
542
+ Effective::OrdersMailer.public_send(email, *mailer_args).public_send(EffectiveOrders.mailer[:deliver_method])
543
+ rescue => e
544
+ raise if Rails.env.development? || Rails.env.test?
545
+ end
538
546
  end
539
547
 
540
548
  def truthy?(value)
@@ -126,7 +126,13 @@ module Effective
126
126
  return false unless subscription.stripe_subscription.blank?
127
127
 
128
128
  Rails.logger.info "[STRIPE] create subscription: #{items}"
129
- stripe_subscription = Stripe::Subscription.create(customer: customer.stripe_customer_id, items: items, metadata: metadata)
129
+
130
+ stripe_subscription = Stripe::Subscription.create(
131
+ customer: customer.stripe_customer_id,
132
+ items: items,
133
+ metadata: metadata,
134
+ trial_from_plan: true
135
+ )
130
136
 
131
137
  subscription.update!(
132
138
  stripe_subscription: stripe_subscription,
@@ -79,6 +79,10 @@ module Effective
79
79
  name.to_s <=> other&.name.to_s
80
80
  end
81
81
 
82
+ def trialing?
83
+ status == 'trialing'
84
+ end
85
+
82
86
  def active?
83
87
  status == 'active'
84
88
  end
@@ -14,9 +14,10 @@ module EffectiveOrders
14
14
  # Subscription statuses (as per stripe)
15
15
  ACTIVE = 'active'.freeze
16
16
  PAST_DUE = 'past_due'.freeze
17
+ TRIALING = 'trialing'.freeze
17
18
  CANCELED = 'canceled'.freeze
18
19
 
19
- STATUSES = { ACTIVE => ACTIVE, PAST_DUE => PAST_DUE, CANCELED => CANCELED }
20
+ STATUSES = { ACTIVE => ACTIVE, PAST_DUE => PAST_DUE, CANCELED => CANCELED, TRIALING => TRIALING }
20
21
 
21
22
  # The following are all valid config keys
22
23
  mattr_accessor :orders_table_name
@@ -1,3 +1,3 @@
1
1
  module EffectiveOrders
2
- VERSION = '4.5.2'.freeze
2
+ VERSION = '4.5.7'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_orders
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.2
4
+ version: 4.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-25 00:00:00.000000000 Z
11
+ date: 2020-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails