effective_orders 5.1.4 → 5.1.8

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: 8a084a1145beb50dc672efd5506bb81e497553d73e945195f2f31ea567bbc757
4
- data.tar.gz: 2743bac90f7d5f5ff4b2985b97a7404040f875fc12414e308bd188023307512c
3
+ metadata.gz: a32c61a739e40a41c7af3d4de0f254f8f1bf0aa673de5c98d82b404f700f1616
4
+ data.tar.gz: 53f2b2f8e550b45e16fc1b844f6a8ebc30336d3ee10e3ac493a3cd4de07d9b85
5
5
  SHA512:
6
- metadata.gz: 2ee2c0d212855b3a7883c9ac4194b2b9b796668cdadd57778e23afdfe774fcd07f503f96b0812242bb2e0aa9f872c6a354fa2dd0d10275fc78b3787d9a09a65b
7
- data.tar.gz: 2d6ae464bd99a12bfd0e3226d8a1bdb20fa04c4e7b015d185f0432c8be5a92644840a3e9a93b9f437102f5dc03ae9dcc6faa7d7589582235b55609bef976cbe9
6
+ metadata.gz: dc2ee60878dc3c1cb2f2f81d86462f5aae9cca2297c1e2859ef90af51ebe9f511d3db580cfd0eddbb5d788f97ff84d2f467e7b65e5dc988d03b060148f3b09a5
7
+ data.tar.gz: caf788b76fb2affe7ee4d5229d95c9fb62a2da798b1a7a3d981b38f9b8ba8d66f415fdefe8b3560220f3ce8441507a0273897785054e2721dbaa17bead649577
@@ -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
@@ -198,9 +203,21 @@ module Effective
198
203
  # Duplicate an existing order
199
204
  self.note_to_buyer ||= item.note_to_buyer
200
205
  self.note_internal ||= item.note_internal
206
+ self.cc ||= item.cc
201
207
 
202
208
  item.order_items.select { |oi| oi.purchasable.kind_of?(Effective::Product) }.map do |oi|
203
- product = Effective::Product.new(name: oi.purchasable.purchasable_name, price: oi.purchasable.price, tax_exempt: oi.purchasable.tax_exempt)
209
+ purchasable = oi.purchasable
210
+
211
+ product = Effective::Product.new(name: purchasable.purchasable_name, price: purchasable.price, tax_exempt: purchasable.tax_exempt)
212
+
213
+ # Copy over any extended attributes that may have been created
214
+ atts = purchasable.dup.attributes.except('name', 'price', 'tax_exempt', 'purchased_order_id').compact
215
+
216
+ atts.each do |k, v|
217
+ next unless product.respond_to?("#{k}=") && product.respond_to?(k)
218
+ product.send("#{k}=", v) if product.send(k).blank?
219
+ end
220
+
204
221
  Effective::CartItem.new(quantity: oi.quantity, purchasable: product)
205
222
  end
206
223
  else
@@ -278,6 +295,10 @@ module Effective
278
295
  [card, '-', last4].compact.join(' ')
279
296
  end
280
297
 
298
+ def duplicate
299
+ Effective::Order.new(self)
300
+ end
301
+
281
302
  # For moneris and moneris_checkout. Just a unique value.
282
303
  def transaction_id
283
304
  [to_param, billing_name.to_s.parameterize.presence, Time.zone.now.to_i].compact.join('-')
@@ -345,6 +366,14 @@ module Effective
345
366
  order_items.map { |oi| oi.quantity }.sum
346
367
  end
347
368
 
369
+ def send_order_receipt_to_admin?
370
+ EffectiveOrders.mailer[:send_order_receipt_to_admin] && !free?
371
+ end
372
+
373
+ def send_order_receipt_to_buyer?
374
+ EffectiveOrders.mailer[:send_order_receipt_to_buyer] && !free?
375
+ end
376
+
348
377
  def send_payment_request_to_buyer?
349
378
  EffectiveResources.truthy?(send_payment_request_to_buyer) && !free? && !refund?
350
379
  end
@@ -425,11 +454,7 @@ module Effective
425
454
  def defer!(provider: 'none', email: true)
426
455
  return false if purchased?
427
456
 
428
- assign_attributes(
429
- state: EffectiveOrders::DEFERRED,
430
- payment_provider: provider
431
- )
432
-
457
+ assign_attributes(state: EffectiveOrders::DEFERRED, payment_provider: provider)
433
458
  save!
434
459
 
435
460
  send_payment_request_to_buyer! if email
@@ -477,8 +502,8 @@ module Effective
477
502
  end
478
503
 
479
504
  def send_order_receipts!
480
- send_order_receipt_to_admin! if EffectiveOrders.mailer[:send_order_receipt_to_admin]
481
- send_order_receipt_to_buyer! if EffectiveOrders.mailer[:send_order_receipt_to_buyer]
505
+ send_order_receipt_to_admin! if send_order_receipt_to_admin?
506
+ send_order_receipt_to_buyer! if send_order_receipt_to_buyer?
482
507
  send_refund_notification! if refund?
483
508
  end
484
509
 
@@ -562,6 +587,23 @@ module Effective
562
587
  end
563
588
  end
564
589
 
590
+ def assign_user_address
591
+ return unless user.present?
592
+ return unless (EffectiveOrders.billing_address || EffectiveOrders.shipping_address)
593
+ return if EffectiveOrders.billing_address && billing_address.present?
594
+ return if EffectiveOrders.shipping_address && shipping_address.present?
595
+
596
+ if billing_address.blank? && user.respond_to?(:billing_address) && user.billing_address.present?
597
+ self.billing_address = user.billing_address
598
+ self.billing_address.full_name ||= user.to_s.presence
599
+ end
600
+
601
+ if shipping_address.blank? && user.respond_to?(:shipping_address) && user.shipping_address.present?
602
+ self.shipping_address = user.shipping_address
603
+ self.shipping_address.full_name ||= user.to_s.presence
604
+ end
605
+ end
606
+
565
607
  def update_purchasables_purchased_order!
566
608
  order_items.each { |oi| oi.purchasable&.update_column(:purchased_order_id, self.id) }
567
609
  end
@@ -24,19 +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
30
  country = country_code
34
- country ||= order.billing_address.country_code if order.billing_address.present?
35
- country ||= order.user.billing_address.country_code if order.user.respond_to?(:billing_address) && order.user.billing_address.present?
36
-
37
31
  state = state_code
38
- state ||= order.billing_address.state_code if order.billing_address.present?
39
- state ||= order.user.billing_address.state_code if order.user.respond_to?(:billing_address) && order.user.billing_address.present?
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
40
42
 
41
43
  rate = RATES[country]
42
44
  return rate if rate.kind_of?(Numeric)
@@ -11,7 +11,7 @@
11
11
  %tbody
12
12
  %tr
13
13
  - if order.note.present?
14
- %td= order.note
14
+ %td= simple_format(order.note)
15
15
 
16
16
  - if order.note_to_buyer.present?
17
- %td= order.note_to_buyer
17
+ %td= simple_format(order.note_to_buyer)
@@ -1,6 +1,8 @@
1
1
  .card
2
2
  .card-body
3
- %h2 Admin: Mark as Paid
3
+ %h2
4
+ Admin:
5
+ = order.refund? ? 'Complete Refund' : 'Mark as Paid'
4
6
 
5
7
  = effective_form_with(model: order, url: effective_orders.mark_as_paid_order_path(order), method: :post) do |f|
6
8
  = f.date_field :purchased_at, required: true
@@ -21,4 +23,4 @@
21
23
 
22
24
  = f.text_area :note_to_buyer, hint: 'This message will be displayed on the receipt.'
23
25
 
24
- = f.submit order_checkout_label(:mark_as_paid), center: true
26
+ = f.submit order_checkout_label(order.refund? ? :refund : :mark_as_paid), center: true
@@ -1,3 +1,3 @@
1
1
  module EffectiveOrders
2
- VERSION = '5.1.4'.freeze
2
+ VERSION = '5.1.8'.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: 5.1.4
4
+ version: 5.1.8
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-30 00:00:00.000000000 Z
11
+ date: 2021-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails