effective_orders 5.1.2 → 5.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e62ea845d2b3982fbb11f3f6c50c7e225ad96d928a7ba957a19b7e3b997eb1d8
4
- data.tar.gz: 49350bba4a80a42aca9e0d81d9fd1140fdace45b57db00ea951fd61ca3234b08
3
+ metadata.gz: '063584ca12ed4cb46363a9c7c99f729889bf536eb0a1afb6021e04f07349532b'
4
+ data.tar.gz: 313908b8ff6797d96c7139a3598b6790a3fda9fb358e69a240e0ccb5afcd8569
5
5
  SHA512:
6
- metadata.gz: 434791b34029447935fe2ebd8d1520ecb4abd59d9d31fcb11f08ed3b8db3c07841b46cb75d4f40fd36072a636f84a1a4b524b08565b5cbe4155ba39f8bf40553
7
- data.tar.gz: 4a2e1df8a24b1cadf8bb845655de1e1b2adba896c6b74b52fda7fcb4d2ef80302958bbbd6b72221b88738b9f8c595279daefb9381244c6fa09df81df812b4838
6
+ metadata.gz: 71a032b3e32b4387801d3630e58df4ee9b91f890a0d87e42c1c4eacb5cb49875e7494316089c01d9d9bdf8a10e246d09caa8d4d2bb400897221661957fc63034
7
+ data.tar.gz: 7149e03e2c5f5f830a53f235eafd6c712213d5dd6eb4958554d752e7f8e51d124188cebe432284a8ddde462e2fd5ff7ec21999a00465220fbc9d4cb5f5a84a08
@@ -11,7 +11,7 @@ module Effective
11
11
  Effective::Cart.where(user: @order.user).destroy_all
12
12
 
13
13
  if flash[:success].blank?
14
- if email && EffectiveOrders.mailer[:send_order_receipt_to_buyer]
14
+ if email && @order.send_order_receipt_to_buyer?
15
15
  flash[:success] = "Payment successful! A receipt has been sent to #{@order.emails_send_to}"
16
16
  else
17
17
  flash[:success] = "Payment successful! An email receipt has not been sent."
@@ -69,6 +69,7 @@ module Effective
69
69
  before_validation { assign_billing_name }
70
70
  before_validation { assign_email }
71
71
  before_validation { assign_last_address }
72
+ before_validation { assign_user_address }
72
73
 
73
74
  before_validation(if: -> { confirmed_checkout }) do
74
75
  self.state = EffectiveOrders::CONFIRMED if pending?
@@ -156,30 +157,34 @@ module Effective
156
157
  def initialize(atts = nil, &block)
157
158
  super(state: EffectiveOrders::PENDING) # Initialize with state: PENDING
158
159
 
159
- return unless atts.present?
160
+ return self unless atts.present?
160
161
 
161
162
  if atts.kind_of?(Hash)
162
- items = Array(atts.delete(:item)) + Array(atts.delete(:items))
163
+ items = Array(atts[:item]) + Array(atts[:items])
163
164
 
164
- self.user = atts.delete(:user) || (items.first.user if items.first.respond_to?(:user))
165
+ self.user = atts[:user] || (items.first.user if items.first.respond_to?(:user))
165
166
 
166
- if (address = atts.delete(:billing_address)).present?
167
+ if (address = atts[:billing_address]).present?
167
168
  self.billing_address = address
168
169
  self.billing_address.full_name ||= user.to_s.presence
169
170
  end
170
171
 
171
- if (address = atts.delete(:shipping_address)).present?
172
+ if (address = atts[:shipping_address]).present?
172
173
  self.shipping_address = address
173
174
  self.shipping_address.full_name ||= user.to_s.presence
174
175
  end
175
176
 
176
- atts.each { |key, value| self.send("#{key}=", value) }
177
+ atts.except(:item, :items, :user, :billing_address, :shipping_address).each do |key, value|
178
+ self.send("#{key}=", value)
179
+ end
177
180
 
178
181
  add(items) if items.present?
179
182
  else # Attributes are not a Hash
180
183
  self.user = atts.user if atts.respond_to?(:user)
181
184
  add(atts)
182
185
  end
186
+
187
+ self
183
188
  end
184
189
 
185
190
  # Items can be an Effective::Cart, an Effective::order, a single acts_as_purchasable, or multiple acts_as_purchasables
@@ -225,7 +230,6 @@ module Effective
225
230
  retval.size == 1 ? retval.first : retval
226
231
  end
227
232
 
228
-
229
233
  def update_prices!
230
234
  raise('already purchased') if purchased?
231
235
  raise('must be pending or confirmed') unless pending? || confirmed?
@@ -346,6 +350,14 @@ module Effective
346
350
  order_items.map { |oi| oi.quantity }.sum
347
351
  end
348
352
 
353
+ def send_order_receipt_to_admin?
354
+ EffectiveOrders.mailer[:send_order_receipt_to_admin] && !free?
355
+ end
356
+
357
+ def send_order_receipt_to_buyer?
358
+ EffectiveOrders.mailer[:send_order_receipt_to_buyer] && !free?
359
+ end
360
+
349
361
  def send_payment_request_to_buyer?
350
362
  EffectiveResources.truthy?(send_payment_request_to_buyer) && !free? && !refund?
351
363
  end
@@ -426,11 +438,7 @@ module Effective
426
438
  def defer!(provider: 'none', email: true)
427
439
  return false if purchased?
428
440
 
429
- assign_attributes(
430
- state: EffectiveOrders::DEFERRED,
431
- payment_provider: provider
432
- )
433
-
441
+ assign_attributes(state: EffectiveOrders::DEFERRED, payment_provider: provider)
434
442
  save!
435
443
 
436
444
  send_payment_request_to_buyer! if email
@@ -478,8 +486,8 @@ module Effective
478
486
  end
479
487
 
480
488
  def send_order_receipts!
481
- send_order_receipt_to_admin! if EffectiveOrders.mailer[:send_order_receipt_to_admin]
482
- send_order_receipt_to_buyer! if EffectiveOrders.mailer[:send_order_receipt_to_buyer]
489
+ send_order_receipt_to_admin! if send_order_receipt_to_admin?
490
+ send_order_receipt_to_buyer! if send_order_receipt_to_buyer?
483
491
  send_refund_notification! if refund?
484
492
  end
485
493
 
@@ -563,6 +571,23 @@ module Effective
563
571
  end
564
572
  end
565
573
 
574
+ def assign_user_address
575
+ return unless user.present?
576
+ return unless (EffectiveOrders.billing_address || EffectiveOrders.shipping_address)
577
+ return if EffectiveOrders.billing_address && billing_address.present?
578
+ return if EffectiveOrders.shipping_address && shipping_address.present?
579
+
580
+ if billing_address.blank? && user.respond_to?(:billing_address) && user.billing_address.present?
581
+ self.billing_address = user.billing_address
582
+ self.billing_address.full_name ||= user.to_s.presence
583
+ end
584
+
585
+ if shipping_address.blank? && user.respond_to?(:shipping_address) && user.shipping_address.present?
586
+ self.shipping_address = user.shipping_address
587
+ self.shipping_address.full_name ||= user.to_s.presence
588
+ end
589
+ end
590
+
566
591
  def update_purchasables_purchased_order!
567
592
  order_items.each { |oi| oi.purchasable&.update_column(:purchased_order_id, self.id) }
568
593
  end
@@ -24,14 +24,21 @@ module Effective
24
24
  @order = order
25
25
  @country_code = country_code
26
26
  @state_code = state_code
27
-
28
- raise 'expected an order, or a country and state code' unless (order || country_code)
29
- raise 'expected an order OR a country and state code. Not both.' if (order && country_code)
30
27
  end
31
28
 
32
29
  def tax_rate
33
- country = country_code || (order.billing_address.country_code if order.billing_address.present?)
34
- state = state_code || (order.billing_address.state_code if order.billing_address.present?)
30
+ country = country_code
31
+ state = state_code
32
+
33
+ if order.present? && order.billing_address.present?
34
+ country ||= order.billing_address.country_code
35
+ state ||= order.billing_address.state_code
36
+ end
37
+
38
+ if order.present? && order.user.respond_to?(:billing_address) && order.user.billing_address.present?
39
+ country ||= order.user.billing_address.country_code
40
+ state ||= order.user.billing_address.state_code
41
+ end
35
42
 
36
43
  rate = RATES[country]
37
44
  return rate if rate.kind_of?(Numeric)
@@ -1,3 +1,3 @@
1
1
  module EffectiveOrders
2
- VERSION = '5.1.2'.freeze
2
+ VERSION = '5.1.6'.freeze
3
3
  end
@@ -107,7 +107,7 @@ module EffectiveOrders
107
107
 
108
108
  # The Effective::Order.payment_provider value must be in this collection
109
109
  def self.payment_providers
110
- [
110
+ @payment_providers ||= [
111
111
  ('cheque' if cheque?),
112
112
  ('credit card' if mark_as_paid?),
113
113
  ('free' if free?),
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: 5.1.2
4
+ version: 5.1.6
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: 2021-08-28 00:00:00.000000000 Z
11
+ date: 2021-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails