-
Notifications
You must be signed in to change notification settings - Fork 0
/
Spend $30 on Max Factor and receive a free Max Factor Mascara.arb
53 lines (48 loc) · 1.72 KB
/
Spend $30 on Max Factor and receive a free Max Factor Mascara.arb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
FREEBIE_PRODUCT_ID = 4166628606026
CART_TOTAL_FOR_DISCOUNT_APPLIED = Money.new(cents: 3000)
TARGET_TAG = "brand_absolute"
DISCOUNT_MESSAGE = "Spend $30+ on Max Factor and get a free gift"
freebie_in_cart = false
cart_price_exceeds_discounted_freebie_amount = false
target_tag_found = false
cost_of_freebie = Money.zero
conditional_item_price = Money.zero
conditional_item_price_total = Money.zero
Input.cart.line_items.select do |line_item|
product = line_item.variant.product
product_tags = product.tags.map { |tag| tag.downcase.strip }
if product_tags.include?(TARGET_TAG.downcase.strip)
target_tag_found = true
conditional_item_price = line_item.line_price
else
target_tag_found = false
conditional_item_price = Money.zero
end
conditional_item_price_total = conditional_item_price_total + conditional_item_price
if product.id == FREEBIE_PRODUCT_ID
freebie_in_cart = true
cost_of_freebie = line_item.line_price
end
end
if freebie_in_cart
cart_subtotal_minus_freebie_cost = conditional_item_price_total - cost_of_freebie
if cart_subtotal_minus_freebie_cost >= CART_TOTAL_FOR_DISCOUNT_APPLIED
cart_price_exceeds_discounted_freebie_amount = true
end
end
was_discount_applied = false
if cart_price_exceeds_discounted_freebie_amount
Input.cart.line_items.each do |item|
if item.variant.product.id == FREEBIE_PRODUCT_ID && was_discount_applied == false
if item.quantity > 1
new_line_item = item.split(take: 1)
new_line_item.change_line_price(Money.zero, message: DISCOUNT_MESSAGE)
Input.cart.line_items << new_line_item
next
else
item.change_line_price(Money.zero, message: DISCOUNT_MESSAGE)
end
end
end
end
Output.cart = Input.cart