solidus-returnly 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/returnly/builders/return_item.rb +28 -7
- data/lib/returnly/refund_calculator.rb +8 -5
- data/lib/returnly/refund_presenter.rb +5 -1
- data/lib/returnly/refunder.rb +1 -1
- data/lib/returnly/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbba58335cd0c6733fd3ac7ac1cd1138f9fe60c3c9fd054d333d6cd214880af4
|
4
|
+
data.tar.gz: 92908dfff3ed9d1725e8439404ea3da94bbe7849d6b004ea95eb81dca871e7ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acb300cf3987ae5db4687721141f20336abb11cd333e27f44edd60a45a8b0b63d362a5c1cd31da59654c7788a2f07a8099b554facacf5bd8f9273c339d222f48
|
7
|
+
data.tar.gz: bc19abf556483df2f5c5931f1e607607fc2f414cb51e93423c0c1287091c4eee51ecef94e47de732a8c1f7645151ee8c7807e5d4fb403a4cb47191144784245c
|
@@ -8,23 +8,30 @@ module Returnly
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def build_by_requested_line_items(requested_line_items)
|
11
|
-
|
11
|
+
is_returned_item = false
|
12
|
+
items = requested_line_items.each_with_object([]) do |request_line_item, return_items|
|
12
13
|
quantity = request_line_item[:units].to_i
|
13
14
|
next return_items unless quantity > 0
|
14
15
|
|
15
|
-
inventory_units_by(request_line_item[:order_line_item_id])
|
16
|
+
inventory_units = inventory_units_by(request_line_item[:order_line_item_id])
|
17
|
+
if inventory_units.empty?
|
18
|
+
inventory_units = returned_inventory_units_by(request_line_item[:order_line_item_id])
|
19
|
+
request_line_item[:find_return?] = true
|
20
|
+
is_returned_item = true
|
21
|
+
end
|
22
|
+
inventory_units.take(quantity).each do |inventory_unit|
|
16
23
|
return_items << build_by_inventory_unit(inventory_unit, request_line_item)
|
17
24
|
end
|
18
25
|
|
19
26
|
return_items
|
20
27
|
end
|
28
|
+
{
|
29
|
+
items: items,
|
30
|
+
is_returned_items: is_returned_item
|
31
|
+
}
|
21
32
|
end
|
22
33
|
|
23
|
-
def
|
24
|
-
build_by_requested_line_items(requested_line_items)
|
25
|
-
end
|
26
|
-
|
27
|
-
def build_by_inventory_unit(inventory_unit, options = {})
|
34
|
+
def exact_build_by_inventory_unit(inventory_unit, options = {})
|
28
35
|
Spree::ReturnItem.new(
|
29
36
|
amount: inventory_unit.line_item.price,
|
30
37
|
acceptance_status: 'accepted',
|
@@ -34,6 +41,14 @@ module Returnly
|
|
34
41
|
)
|
35
42
|
end
|
36
43
|
|
44
|
+
def build_by_inventory_unit(inventory_unit, options = {})
|
45
|
+
return exact_build_by_inventory_unit(inventory_unit, options) unless options[:find_return?]
|
46
|
+
Spree::ReturnItem.find_by(
|
47
|
+
amount: inventory_unit.line_item.price,
|
48
|
+
inventory_unit_id: inventory_unit.id
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
37
52
|
private
|
38
53
|
|
39
54
|
def inventory_units_by(line_item_ids)
|
@@ -41,6 +56,12 @@ module Returnly
|
|
41
56
|
.where(line_item_id: line_item_ids)
|
42
57
|
.where.not(state: 'returned')
|
43
58
|
end
|
59
|
+
|
60
|
+
def returned_inventory_units_by(line_item_ids)
|
61
|
+
order.inventory_units.includes(:line_item, :return_items)
|
62
|
+
.where(line_item_id: line_item_ids, state: 'returned')
|
63
|
+
.where(spree_return_items: { reimbursement_id: nil })
|
64
|
+
end
|
44
65
|
end
|
45
66
|
end
|
46
67
|
end
|
@@ -20,13 +20,18 @@ module Returnly
|
|
20
20
|
(line_item.adjustments.tax.sum(&:amount).to_d / line_item.quantity).round(2, :down)
|
21
21
|
end
|
22
22
|
|
23
|
-
def line_items_return_items
|
24
|
-
|
23
|
+
def line_items_return_items
|
24
|
+
available_to_return = available_return_items
|
25
|
+
items = available_to_return[:items].each_with_object({}) do |return_item, return_items|
|
25
26
|
line_item_id = return_item.inventory_unit.line_item_id
|
26
27
|
return_items[line_item_id] ||= []
|
27
28
|
return_items[line_item_id] << set_tax(return_item)
|
28
29
|
return_items
|
29
30
|
end
|
31
|
+
{
|
32
|
+
items: items,
|
33
|
+
is_returned_items: available_to_return[:is_returned_items]
|
34
|
+
}
|
30
35
|
end
|
31
36
|
|
32
37
|
def shipping_tax
|
@@ -35,9 +40,7 @@ module Returnly
|
|
35
40
|
|
36
41
|
protected
|
37
42
|
|
38
|
-
def available_return_items
|
39
|
-
return self.class.return_item_builder_class.new(order).build_for_estimate(line_items) if is_estimate
|
40
|
-
|
43
|
+
def available_return_items
|
41
44
|
self.class.return_item_builder_class.new(order).build_by_requested_line_items(line_items)
|
42
45
|
end
|
43
46
|
|
@@ -5,12 +5,16 @@ module Returnly
|
|
5
5
|
sub_total = Money.new 0
|
6
6
|
tax = Money.new 0
|
7
7
|
|
8
|
-
calculator.line_items_return_items
|
8
|
+
return_items = calculator.line_items_return_items
|
9
|
+
return_items[:items].values.flatten.each do |return_item|
|
9
10
|
sub_total += Money.from_amount return_item.total_excluding_vat
|
10
11
|
tax += Money.from_amount calculator.line_item_tax(return_item.inventory_unit.line_item)
|
11
12
|
end
|
12
13
|
|
13
14
|
discount = Money.from_amount(calculator.discount)
|
15
|
+
if return_items[:is_returned_items]
|
16
|
+
sub_total += discount
|
17
|
+
end
|
14
18
|
total_refund_amount = sub_total + tax - (discount * -1) # discount is negative, so we multiply it by -1 to make it positive for subtraction
|
15
19
|
shipping_tax = calculator.shipping_tax
|
16
20
|
{
|
data/lib/returnly/refunder.rb
CHANGED
@@ -95,7 +95,7 @@ module Returnly
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def each_return_item
|
98
|
-
return_items = refund_calculator.line_items_return_items
|
98
|
+
return_items = refund_calculator.line_items_return_items[:items].values.flatten
|
99
99
|
self.customer_return = Returnly::Builders::CustomerReturn.build_by_return_items(return_items)
|
100
100
|
|
101
101
|
return_items.each do |return_item|
|
data/lib/returnly/version.rb
CHANGED
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.
|
4
|
+
version: 0.11.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: 2018-
|
11
|
+
date: 2018-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: solidus
|