当15个标记为“外套”的商品添加到购物车时,我试图创建一个25%折扣的脚本。
该脚本在购物车中循环查找存储在items_quantities_total中的数量,但这不会检查购物车中的那15个物品是否都具有合格标签。
Input.cart.line_items.each_with_index do |line_item, index|
MIN_QTY_IN_CART_15 = 15
items_quantities = Input.cart&.line_items&.map { |item| item.quantity }
items_quantities_total = items_quantities.reduce(0, :+)
discountCollectionPriceBasis = line_item.line_price_was
if line_item.variant.compare_at_price
discountCollectionPriceBasis = line_item.variant.compare_at_price * line_item.quantity
end
discountCollectionPrice = discountCollectionPriceBasis * 0.75
if discountCollectionPrice < line_item.line_price
unless line_item.line_price_was < discountCollectionPrice
if line_item.variant.product.tags.include?('outerwear')
if items_quantities_total >= MIN_QTY_IN_CART_15
line_item.change_line_price(discountCollectionPrice, message: "Buy 15 outerwear items and get 25% Off!")
end
end
end
end
end
结果的一个示例是,即使我的“外套”折扣中不包含14种产品,而预期折扣中只有1种产品,该结果当前仍有效。然后,该商品减价25%。
答案 0 :(得分:0)
问题是您不仅对items_quantities_total
的所有line_items
计算"outerwear"
。
要解决此问题,您可以调整线条
items_quantities = Input.cart&.line_items&.map { |item| item.quantity }
过滤"outerwear"
标签。