I'm trying to apply a fixed-amount discount to a cart that is over a certain amount, and I think I finally figured out the correct way to edit the cart subtotal. The issue is, I'm getting an error that I don't understand when I'm running the script. Here's the code:
class AmountsDiscountCampaign def initialize(cart1, discount1, cart2, discount2) @cart1 = Money.new(cents:100) * cart1 @discount1 = Money.new(cents:100) * discount1 @cart2 = Money.new(cents:100) * cart2 @discount2 = Money.new(cents:100) * discount2 end def run(cart) if cart.subtotal_price_was >= @cart1 [cart.subtotal_price - @discount1, Money.new(0)].max elsif cart.subtotal_price_was >= @cart2 [cart.subtotal_price - @discount2, Money.new(0)].max else cart.subtotal_price end end end CAMPAIGNS = [ AmountsDiscountCampaign.new(100, 10, 50, 5) ] CAMPAIGNS.each do |campaign| campaign.run(Input.cart) end Output.cart = Input.cart
And the error message:
[Error] undefined method 'fetch' for 0 shopify/std_lib_mutable/core/money.rb:24:in Money.initialize Campaigns:13:in AmountsDiscountCampaign.run Campaigns:29:in Object.call Campaigns:28
Admittedly, fairly inexperienced with Ruby, but this seems like it should do what I want - I'm just not understanding what the error message is even referring to. Any help would be appreciated.