blob: e19c308fc65b2816533b0921e142853489e601e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
module SolidusSubscriptions
module Config
class << self
# Maximum number of times a user can skip their subscription before it
# must be processed
mattr_accessor(:maximum_successive_skips) { 1 }
# Limit on the number of times a user can skip thier subscription. Once
# this limit is reached, no skips are permitted
mattr_accessor(:maximum_total_skips) { nil }
# Time between an installment failing to be processed and the system
# retrying to fulfil it
mattr_accessor(:reprocessing_interval) { 1.day }
mattr_accessor(:minimum_cancellation_notice) { 1.day }
# Which queue is responsible for processing subscriptions
mattr_accessor(:processing_queue) { :default }
# SolidusSubscriptions::LineItem attributes which are allowed to
# be updated from user data
#
# This is useful in the case where certain fields should not be allowed to
# be modified by the user. This locks these attributes from being passed
# in to the orders controller (or the api controller).
# Ie. if a store does not want to allow users to configure the number of
# installments they will receive. Add this to an initializer:
# ```
# SolidusSubscriptions::Config.subscription_line_item_attributes = [
# :quantity,
# :interval_length,
# :interval_units,
# :subscribable_id
# ]
# ```
# This configuration also easily allows the gem to be customized to track
# more information on the subcriptions line items.
mattr_accessor(:subscription_line_item_attributes) do
[
:quantity,
:subscribable_id,
:interval_length,
:interval_units,
:max_installments
]
end
def default_gateway=(gateway)
@gateway = gateway
end
def default_gateway
@gateway ||= Spree::Gateway.where(active: true).detect do |gateway|
gateway.payment_source_class == Spree::CreditCard
end
return @gateway if @gateway
raise <<-MSG.strip
SolidusSubscriptions requires a Credit Card Gateway
Make sure at lease one Spree::PaymentMethod exists with a
#payment_source_class of Spree::CreditCard.
Alternatively, you can manually set the Gateway you would like to use by
adding the following to an initializer:
SolidusSubscription::Config.default_gateway = my_gateway
MSG
end
end
end
end
|