Chcę napisać skrypt w Shopify, który zapobiega renderowaniu rabatów na niektóre produkty. Wiem, że to jest nie tak, ale coś takiego:

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

Spojrzałem na Dokumentacja i zobaczyłem metodę .reject({ message: String }), ale to dotyczy całego koszyka. Czy istnieje sposób na zlokalizowanie tego do jednej instancji?

1
kawnah 15 luty 2017, 18:29

2 odpowiedzi

Najlepsza odpowiedź

Stare pytanie, ale znalazłem rezolucję: zasadniczo nie możesz "zlokalizować" zniżki na określony produkt. Musisz zablokować cały wózek od uzyskania zniżki. Podejście, które skończyło się podejmować poniżej:

# 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
kawnah 21 maj 2017, 21:10

Rabaty są łatwe. Najpierw ... Uzyskaj kod rabatowy z koszyka. Wiesz, że dotyczy całego koszyka. Teraz masz kwotę lub procent lub cokolwiek dałeś klientowi w kodzie. Teraz kopie w piękno skryptów.

Dla każdego produktu zdecyduj, czy jest dyskontowany, czy nie. Jeśli jest, zastosuj kwotę rabatową, którą znasz z kodu rabatowego dostarczonego do elementu. Jeśli jest to produkt, który nie jest dyskontowany, zostaw sam cenę.

Płacisz duże dolary do silnika skryptowego. Jeśli nie możesz tego zaprogramować, zapłacić komuś, kto może! Studiuj Studiowanie skryptu roboczego do nauki, który próbuje się outfox.

W rzeczywistości możesz odrzucić kod rabatowy do koszyka, ale nadal rabatowe produkty, niektóre, nie wszystkie lub inne.

-1
David Lazar 16 luty 2017, 22:23