How can I set up tiered discount codes at checkout?

I am needing a script for $5 off $50, $10 Off $75 $20 Off $100 by discount code entered at checkout for cart subtotal

================================ Customizable Settings ================================

================================================================

Tiered Discounts by Manish Rustagi

If the cart total is greater than (or equal to) an entered

threshold, the associated discount is applied to each item.

- ‘threshold’ is the spend amount needed to qualify

- ‘discount_type’ is the type of discount to provide. Can be

either:

- ‘:percent’

- ‘:dollar’

- ‘discount_amount’ is the percentage/dollar discount to

apply (per item)

- ‘discount_message’ is the message to show when a discount

is applied

================================================================

SPENDING_THRESHOLDS_STANDARD = [
{
threshold: 499,
discount_type: :percent,
discount_amount: 20,
discount_message: ‘Spend $499 and get 20% off!’,
},
{
threshold: 999,
discount_type: :percent,
discount_amount: 25,
discount_message: ‘Spend $999 and get 25% off!’,
},
{
threshold: 1999,
discount_type: :percent,
discount_amount: 35,
discount_message: ‘Spend $1999 and get 35% off!’,
},
]

DISCOUNT_CODES = {
‘maxoff’ => SPENDING_THRESHOLDS_STANDARD
}

================================ Script Code (do not edit) ================================

================================================================

DiscountApplicator

Applies the entered discount to the supplied line item.

================================================================

class DiscountApplicator
def initialize(discount_type, discount_amount, discount_message)
@discount_type = discount_type
@discount_message = discount_message

@discount_amount = if discount_type == :percent
1 - (discount_amount * 0.01)
else
Money.new(cents: 100) * discount_amount
end
end

def apply(line_item)
new_line_price = if @discount_type == :percent
line_item.line_price * @discount_amount
else
[line_item.line_price - (@discount_amount * line_item.quantity), Money.zero].max
end

line_item.change_line_price(new_line_price, message: @discount_message)
end
end

================================================================

TieredDiscountBySpendCampaign

If the cart total is greater than (or equal to) an entered

threshold, the associated discount is applied to each item.

================================================================

class TieredDiscountBySpendCampaign
def initialize(tiers)
@tiers = tiers.sort_by { |tier| tier[:threshold] }.reverse
end

def run(cart)
applicable_tier = @tiers.find { |tier| cart.subtotal_price >= (Money.new(cents: 100) * tier[:threshold]) }
return if applicable_tier.nil?

discount_applicator = DiscountApplicator.new(
applicable_tier[:discount_type],
applicable_tier[:discount_amount],
applicable_tier[:discount_message]
)

cart.line_items.each do |line_item|
next if line_item.variant.product.gift_card?
discount_applicator.apply(line_item)
end
end
end

def discount_code_present(cart, code)
!cart.discount_code.nil? and (cart.discount_code.code.upcase == code.upcase)
end

CAMPAIGNS =

DISCOUNT_CODES.each do |discount_code|
if discount_code_present(Input.cart, discount_code[0])
CAMPAIGNS = [
TieredDiscountBySpendCampaign.new(discount_code[1]),
]
end
end

CAMPAIGNS.each do |campaign|
campaign.run(Input.cart)
end

Output.cart = Input.cart