Module: EffectiveOrders
- Defined in:
- lib/effective_orders.rb,
lib/effective_orders/engine.rb,
lib/effective_orders/version.rb,
lib/generators/effective_orders/install_generator.rb
Defined Under Namespace
Modules: Generators
Classes: AlreadyPurchasedException, Engine, SoldOutException
Constant Summary
collapse
- PENDING =
'pending'.freeze
- CONFIRMED =
'confirmed'.freeze
- PURCHASED =
'purchased'.freeze
- DECLINED =
'declined'.freeze
- STATES =
{ PENDING => PENDING, CONFIRMED => CONFIRMED, PURCHASED => PURCHASED, DECLINED => DECLINED }
- ACTIVE =
Subscription statuses (as per stripe)
'active'.freeze
- PAST_DUE =
'past_due'.freeze
- CANCELED =
'canceled'.freeze
- STATUSES =
{ ACTIVE => ACTIVE, PAST_DUE => PAST_DUE, CANCELED => CANCELED }
- VERSION =
'4.1.2'.freeze
Class Method Summary
collapse
Class Method Details
.authorize!(controller, action, resource) ⇒ Object
86
87
88
|
# File 'lib/effective_orders.rb', line 86
def self.authorize!(controller, action, resource)
raise Effective::AccessDenied.new('Access Denied', action, resource) unless authorized?(controller, action, resource)
end
|
.authorized?(controller, action, resource) ⇒ Boolean
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/effective_orders.rb', line 73
def self.authorized?(controller, action, resource)
@_exceptions ||= [Effective::AccessDenied, (CanCan::AccessDenied if defined?(CanCan)), (Pundit::NotAuthorizedError if defined?(Pundit))].compact
return !!authorization_method unless authorization_method.respond_to?(:call)
controller = controller.controller if controller.respond_to?(:controller)
begin
!!(controller || self).instance_exec((controller || self), action, resource, &authorization_method)
rescue *@_exceptions
false
end
end
|
.can_skip_checkout_step1? ⇒ Boolean
159
160
161
162
163
164
165
166
|
# File 'lib/effective_orders.rb', line 159
def self.can_skip_checkout_step1?
return false if require_billing_address
return false if require_shipping_address
return false if collect_note
return false if terms_and_conditions
return false if collect_user_fields.present?
true
end
|
.cheque? ⇒ Boolean
100
101
102
|
# File 'lib/effective_orders.rb', line 100
def self.cheque?
cheque.kind_of?(Hash)
end
|
.free? ⇒ Boolean
104
105
106
|
# File 'lib/effective_orders.rb', line 104
def self.free?
free_enabled == true
end
|
.mark_as_paid? ⇒ Boolean
108
109
110
|
# File 'lib/effective_orders.rb', line 108
def self.mark_as_paid?
mark_as_paid_enabled == true
end
|
.moneris? ⇒ Boolean
112
113
114
|
# File 'lib/effective_orders.rb', line 112
def self.moneris?
moneris.kind_of?(Hash)
end
|
.payment_providers ⇒ Object
The Effective::Order.payment_provider value must be in this collection
145
146
147
148
149
150
151
152
153
154
155
156
157
|
# File 'lib/effective_orders.rb', line 145
def self.payment_providers
[
('cheque' if cheque?),
('free' if free?),
('moneris' if moneris?),
('paypal' if paypal?),
('pretend' if pretend?),
('stripe' if stripe?),
('credit card' if mark_as_paid?),
('other' if mark_as_paid?),
'none'
].compact
end
|
.paypal? ⇒ Boolean
116
117
118
|
# File 'lib/effective_orders.rb', line 116
def self.paypal?
paypal.kind_of?(Hash)
end
|
.permitted_params ⇒ Object
90
91
92
93
94
95
96
97
98
|
# File 'lib/effective_orders.rb', line 90
def self.permitted_params
[
:note, :terms_and_conditions,
billing_address: EffectiveAddresses.permitted_params,
shipping_address: EffectiveAddresses.permitted_params,
user_attributes: (EffectiveOrders.collect_user_fields || []),
subscripter: [:stripe_plan_id, :stripe_token]
]
end
|
.pretend? ⇒ Boolean
120
121
122
|
# File 'lib/effective_orders.rb', line 120
def self.pretend?
pretend_enabled == true
end
|
.refunds? ⇒ Boolean
124
125
126
|
# File 'lib/effective_orders.rb', line 124
def self.refunds?
refunds_enabled == true
end
|
.setup {|_self| ... } ⇒ Object
69
70
71
|
# File 'lib/effective_orders.rb', line 69
def self.setup
yield self
end
|
.single_payment_processor? ⇒ Boolean
140
141
142
|
# File 'lib/effective_orders.rb', line 140
def self.single_payment_processor?
[cheque?, moneris?, paypal?, stripe?].select { |enabled| enabled }.length == 1
end
|
.stripe? ⇒ Boolean
128
129
130
|
# File 'lib/effective_orders.rb', line 128
def self.stripe?
stripe.kind_of?(Hash)
end
|
.stripe_plans ⇒ Object
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
# File 'lib/effective_orders.rb', line 168
def self.stripe_plans
return {} unless (stripe? && subscriptions?)
@stripe_plans ||= (
Rails.logger.info '[STRIPE] index plans'
plans = begin
Stripe::Plan.all
rescue => e
raise e if Rails.env.production?
Rails.logger.info "[STRIPE ERROR]: #{e.message}"
Rails.logger.info "[STRIPE ERROR]: effective_orders continuing with empty stripe plans. This would fail loudly in Rails.env.production."
{}
end
plans.inject({}) do |h, plan|
h[plan.id] = {
id: plan.id,
product_id: plan.product,
name: plan.nickname,
amount: plan.amount,
currency: plan.currency,
description: "$#{'%0.2f' % (plan.amount / 100.0)} #{plan.currency.upcase}/#{plan.interval}",
interval: plan.interval,
interval_count: plan.interval_count
}; h
end
)
end
|
.subscriptions? ⇒ Boolean
132
133
134
|
# File 'lib/effective_orders.rb', line 132
def self.subscriptions?
subscriptions.kind_of?(Hash)
end
|
.trial? ⇒ Boolean
136
137
138
|
# File 'lib/effective_orders.rb', line 136
def self.trial?
trial.kind_of?(Hash)
end
|