Skip to content

Commit 9d073d0

Browse files
committed
Discount Order: Use more #filter_map
This makes the whole class easier to read an a little bit faster.
1 parent 4b99e1e commit 9d073d0

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

promotions/app/models/solidus_promotions/order_adjuster/discount_order.rb

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,22 @@ def call
3232
private
3333

3434
def perform_order_benefits(lane_benefits, lane)
35-
lane_benefits.select { |benefit| benefit.respond_to?(:perform) }.each do |benefit|
36-
benefit.perform(order)
35+
lane_benefits.filter_map do |benefit|
36+
benefit.respond_to?(:perform) && benefit.perform(order)
3737
end
3838

39-
automated_line_items = order.line_items.select(&:managed_by_order_benefit)
40-
return if automated_line_items.empty?
41-
42-
ineligible_line_items = automated_line_items.select do |line_item|
43-
line_item.managed_by_order_benefit.promotion.lane == lane && !line_item.managed_by_order_benefit.in?(lane_benefits)
44-
end
45-
46-
ineligible_line_items.each do |line_item|
47-
line_item.managed_by_order_benefit.remove_from(order)
39+
order.line_items.filter_map do |line_item|
40+
line_item.managed_by_order_benefit &&
41+
line_item.managed_by_order_benefit.promotion.lane == lane &&
42+
!line_item.managed_by_order_benefit.in?(lane_benefits) &&
43+
line_item.managed_by_order_benefit.remove_from(order)
4844
end
4945
end
5046

5147
def adjust_line_items(benefits)
52-
order.discountable_line_items.select do |line_item|
53-
line_item.variant.product.promotionable?
54-
end.map do |line_item|
48+
order.discountable_line_items.filter_map do |line_item|
49+
next unless line_item.variant.product.promotionable?
50+
5551
discounts = generate_discounts(benefits, line_item)
5652
chosen_item_discounts = SolidusPromotions.config.discount_chooser_class.new(discounts).call
5753
[line_item, chosen_item_discounts]
@@ -67,7 +63,9 @@ def adjust_shipments(benefits)
6763
end
6864

6965
def adjust_shipping_rates(benefits)
70-
order.shipments.flat_map(&:shipping_rates).select(&:cost).map do |rate|
66+
order.shipments.flat_map(&:shipping_rates).filter_map do |rate|
67+
next unless rate.cost
68+
7169
discounts = generate_discounts(benefits, rate)
7270
chosen_item_discounts = SolidusPromotions.config.discount_chooser_class.new(discounts).call
7371
[rate, chosen_item_discounts]

0 commit comments

Comments
 (0)