solidus-returnly 0.5.1 → 0.6.0

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
  SHA1:
3
- metadata.gz: ddffe240ef5edcbc4fc3bddbef636c9e5fc81f55
4
- data.tar.gz: 24c1a5a4fbea8296524a01681ed3c7273af07c8e
3
+ metadata.gz: '083e914f59852fdd042dcb656a7586374fe4f780'
4
+ data.tar.gz: e99474dab16979ca9aa30dce9a1fa814dd1002c4
5
5
  SHA512:
6
- metadata.gz: 746ff00afaf6114e99bfe2e1dee76398ee5f0625646d27d6fe7e39d7225b49d278ec3f98c1180d5b1467527924b72128e825421330b953d3712165f6f4aa1807
7
- data.tar.gz: 2ec89ad7b3236b8c58618d2633fd735189d8f3a5447f9392206defc956853036f8bbd4aff28604d42769aaa5579ec01d037e182f3d96b86b3661401f178c56ec
6
+ metadata.gz: 93c7c301d731ad1a45c41caefb37cd42d343af2413ec8466ad2b580b8c81c6d7fe45d7391cb7b182f7a5dc484384003d73ca5de182dc447af9ed37e317e44392
7
+ data.tar.gz: b650b812d349d35541d116fed203d3400da769610e716a2c91286d9da516a09ddd676578c830dfd09a205ceae93509b3ee161af3e90b2d46d097b0a952a45ef6
data/README.md CHANGED
@@ -164,23 +164,23 @@ Overriding Refund Logic
164
164
 
165
165
  Is possible to override the default behavior of the Refund Gem by extending the following classes
166
166
 
167
- `lib/solidus/returnly/refund/return_item_restock_policy.rb`
167
+ `lib/returnly/refund/return_item_restock_policy.rb`
168
168
 
169
169
  ```ruby
170
170
  class CustomReturnItemRestockPolicy < ReturnItemRestockPolicy
171
- def should_return_item?(return_item)
172
- return_item.cost > 1
173
- end
171
+ def should_return_item?(return_item)
172
+ return_item.cost > 1
173
+ end
174
174
  end
175
175
  ```
176
176
 
177
- `lib/solidus/returnly/refund/amount_calculator.rb`
177
+ `lib/returnly/refund/amount_calculator.rb`
178
178
 
179
179
  ```ruby
180
180
  class CustomAmountCalculator < AmountCalculator
181
- def return_item_refund_amount(return_item)
182
- default_amount(return_item) - 5.0
183
- end
181
+ def return_item_refund_amount(return_item)
182
+ default_amount(return_item) - 5.0
183
+ end
184
184
  end
185
185
  ```
186
186
 
@@ -188,12 +188,13 @@ to set your custom classes to the returns process just
188
188
  add an initializer file: `cofnig/initializers/returnly.rb`
189
189
 
190
190
  ```ruby
191
- Returnly.configure do |config|
192
- config.return_item_amount_calculator = CustomAmountCalculator
193
- config.return_item_restock_policy = CustomReturnItemRestockPolicy
194
- config.refunder = CustomRefunder
195
- config.refund_calculator = CustomRefunderCalculator
196
- end
191
+ Returnly.configure do |config|
192
+ config.return_item_amount_calculator = CustomAmountCalculator
193
+ config.return_item_restock_policy = CustomReturnItemRestockPolicy
194
+ config.refunder = CustomRefunder
195
+ config.refund_calculator = CustomRefunderCalculator
196
+ config.reimbursement_type_no_items = CustomOriginalPaymentNoItems
197
+ end
197
198
  ```
198
199
 
199
200
  Copyright (c) 2017 Returnly Technologies, Inc
@@ -22,6 +22,7 @@ module Spree
22
22
  private
23
23
 
24
24
  def line_items_params
25
+ return [] if params[:items].blank?
25
26
  params.require(:items)
26
27
  end
27
28
 
@@ -0,0 +1,17 @@
1
+ module ReimbursementType
2
+ class OriginalPaymentNoItems < Spree::ReimbursementType
3
+ extend Spree::ReimbursementType::ReimbursementHelpers
4
+
5
+ class << self
6
+ def reimburse(reimbursement, _return_items, simulate)
7
+ unpaid_amount = reimbursement.total.round(2, :down)
8
+ payments = reimbursement.order.payments.completed
9
+
10
+ refund_list, _unpaid_amount = create_refunds(reimbursement, payments, unpaid_amount, simulate)
11
+ reimbursement.update(total: refund_list.sum(&:amount))
12
+ refund_list
13
+ end
14
+ end
15
+ end
16
+
17
+ end
@@ -19,7 +19,7 @@ module Returnly
19
19
  total_refund_amount: total_refund_amount.to_f,
20
20
  refundable_shipping_amount: calculator.order.shipment_total.to_f,
21
21
  refundable_shipping_tax_amount: shipping_tax.to_f,
22
- max_refundable_amount: calculator.order.total.to_f,
22
+ max_refundable_amount: (calculator.order.total - calculator.order.refunds.sum(&:amount)).to_f,
23
23
  refunds_by_payment_method: refunds_by_payment(calculator.order, total_refund_amount.to_d + calculator.order.shipment_total + shipping_tax)
24
24
  }
25
25
  end
@@ -50,7 +50,7 @@ module Returnly
50
50
  customer_return = refunder.customer_return
51
51
 
52
52
  {
53
- refund_id: customer_return.number,
53
+ refund_id: refunder.order.refunds.last.try(:id),
54
54
  line_items: customer_return.return_items.group_by { |ri| ri.inventory_unit.line_item.id }.map do |_, return_items|
55
55
  first_return_item = return_items.first
56
56
  {
@@ -29,6 +29,7 @@ module Returnly
29
29
  end
30
30
 
31
31
  def proceed!
32
+ return proceed_without_line_items if line_items.empty?
32
33
  process_return_items
33
34
 
34
35
  if customer_return.save!
@@ -57,11 +58,26 @@ module Returnly
57
58
  self.refund_calculator = refund_calculator_class.new(order, line_items)
58
59
  end
59
60
 
61
+ def proceed_without_line_items
62
+ reimburse_without_items!
63
+ RefundPresenter.present_refund(self)
64
+ end
65
+
60
66
  def perform_reimbursement
61
67
  reimbursement.save!
62
68
  reimbursement.perform!
63
69
  end
64
70
 
71
+ def reimburse_without_items!
72
+ reimbursement_total = product_refund_amount.to_d + shipping_refund_amount.to_d
73
+ @_reimbursement = Spree::Reimbursement.new(
74
+ order: order,
75
+ total: reimbursement_total.round(2, :down)
76
+ )
77
+ reimbursement.save!
78
+ ::ReimbursementType::OriginalPaymentNoItems.reimburse(reimbursement, nil, false)
79
+ end
80
+
65
81
  def each_return_item
66
82
  customer_return.return_items = refund_calculator.line_items_return_items.values.flatten
67
83
  customer_return.return_items.each do |return_item|
@@ -1,5 +1,5 @@
1
1
  module Returnly
2
- VERSION = '0.5.1'
2
+ VERSION = '0.6.0'
3
3
 
4
4
  def platform_version
5
5
  defined?(Solidus)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus-returnly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Returnly Technologies, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-31 00:00:00.000000000 Z
11
+ date: 2017-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus
@@ -330,6 +330,7 @@ files:
330
330
  - app/controllers/spree/api/returnly/api_controller.rb
331
331
  - app/controllers/spree/api/returnly/refunds_controller.rb
332
332
  - app/controllers/spree/api/returnly/version_controller.rb
333
+ - app/models/reimbursement_type/original_payment_no_items.rb
333
334
  - app/models/spree/return_item_decorator.rb
334
335
  - config/locales/en.yml
335
336
  - config/routes.rb