Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save peterberwind/383a5049a69d8f34756204ea745f689c to your computer and use it in GitHub Desktop.
Save peterberwind/383a5049a69d8f34756204ea745f689c to your computer and use it in GitHub Desktop.
Buy X quantity of a product, Get Y% off
DISCOUNTS_BY_QUANTITY = {
10_000 => 20,
1_000 => 15,
100 => 10,
10 => 5,
}
Input.cart.line_items.each do |line_item|
next if line_item.variant.product.gift_card?
quantity, discount = DISCOUNTS_BY_QUANTITY.find do |quantity, _|
line_item.quantity >= quantity
end
next unless discount
message = "#{discount}% off when buying at least #{quantity}."
line_item.change_line_price(
line_item.line_price * (Decimal.new(1) - discount.to_d / 100),
message: message,
)
end
Output.cart = Input.cart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment