2017-02-15 11 views
0

Я хочу написать скрипт в Shopify, который предотвращает скидки при рендеринге определенных продуктов. Я знаю, что это неправильно, но что-то вроде этого:Блокировать скидку на определенный продукт shopify скрипт

Input.cart.line_items.each do |line_item| 
    product = line_item.variant.product 

    if product = 123456789 
    CartDiscount.remove("Discount does not apply") 
    end 

end 

Output.cart = Input.cart 

Я смотрел на documentation и увидел метод .reject({ message: String }) но это относится ко всей корзине. Есть ли способ локализовать это для одного экземпляра?

ответ

0

Старый вопрос, но я нашел решение: в принципе, вы не можете «локализовать» скидку на определенный продукт. Вы должны заблокировать всю корзину от получения скидки. Подход, который я в конечном итоге захват ниже:

# ID of product you want to block 
productId = 10199241991 

# Runs through a loop of items in your cart 
Input.cart.line_items.each do |line_item| 
    product = line_item.variant.product 
    puts product.id 
    next if product.gift_card? 
    next unless product.id == productId 
    case Input.cart.discount_code 
    when CartDiscount::Percentage 
    Input.cart.discount_code.reject({message: "Cannot be used with this product"}) 
    end 
end 


Output.cart = Input.cart 
0

Скидки легко. Сначала ... получите код скидки из корзины. Вы знаете, что это относится ко всей телеге. Теперь у вас есть сумма, или процент, или то, что вы дали клиенту в коде. Теперь пинает красоту сценариев.

Для каждого продукта принимайте решение о дисконтировании или нет. Если это так, примените сумму скидки, которую вы знаете, из кода скидки, предоставленного этому товару. Если это продукт, который нельзя сбрасывать со счетов, оставьте цену в покое.

Вы платите большие деньги за скриптовый движок. Если вы не можете запрограммировать его самостоятельно, заплатите кому-то, кто может! Вы лучше изучаете рабочий сценарий, чтобы учиться, пытаясь перехитрить себя.

Таким образом, вы действительно можете отклонить код скидки для тележки, но все же скидки на продукты, некоторые, не все или другие.

+0

Это не совсем ответ на мой вопрос - я хочу, чтобы локализовать '.reject ({сообщение: String})' для одного продукта, но по-прежнему применять скидку на другие предметы в корзине, где это применимо. Это возможно? – kawnah

+0

Кто помечает правильный ответ? Зачем мне это надо. Amatuer час ... –