Przykład skryptu rabatowego

W tym przykładzie używany jest skrypt pozycji pojedynczych w celu zaoferowania rabatu zależnego od kraju klienta. Przykład zawiera również przykładowy kod Liquid, który ma na celu dostarczenie klientowi informacji na temat rabatu. Ten przykład wymaga dostępu do pliku checkout.liquid Twojego sklepu. Jeśli nie masz dostępu do tego pliku w kodzie szablonu użyj Checkout Extensibility i Funkcji Shopify, aby dostosować proces realizacji zakupu.

W tym przykładzie wykorzystany jest fikcyjny podatek VAT podlegający następującym regułom:

  • Klienci będący rezydentami Unii są obciążani podatkiem VAT od wszystkich sprzedawanych produktów.
  • Klienci, którzy kupują produkty i eksportują je do krajów nienależących do Unii, nie muszą płacić podatku VAT (innymi słowy, podatek od sprzedaży do tych klientów ma zerową stawkę).
  • Ceny produktów w sklepie zawierają podatek VAT tzn. ustawienie Wszystkie podatki są wliczone w moje ceny jest włączone w Ustawieniach podatkowych sklepu.

W witrynie sklepu wszyscy klienci widzą VAT zawarty w cenach produktów. Po dodaniu pozycji do koszyka wyświetlana jest cena z VAT:

Cart with tax applied

Podczas realizacji zakupu kraj wysyłki jest sprawdzany przez skrypt. Jeśli kraj jest krajem spoza Unii, całkowita cena jest pomniejszona o kwotę podatku VAT:

Koszyk z usuniętym podatkiem

W poniższym przykładzie sprawdzany jest kraj klienta. Jeśli klient mieszka w kraju, w którym podatek VAT nie obowiązuje, całkowita cena zamówienia jest pomniejszona o kwotę VAT.

# Set VAT equal to the amount of the VAT rate.
# For example, if the VAT rate is 20%, then VAT=20
VAT = 20

# Message that appears beside the discount in the checkout
VAT_REMOVAL_MESSAGE = "VAT removed"

# List of countries where the VAT is charged to orders
COUNTRY_CODES_EU = %w[
AT BE BG CY CZ DK EE FI FR DE GR HU IE IT
LV LT LU MT NL PL PT RO SK SI ES SE GB
]

if Input.cart.shipping_address
  unless COUNTRY_CODES_EU.include?(Input.cart.shipping_address.country_code)
    Input.cart.line_items.each do |line_item|
      product = line_item.variant.product
      next if product.gift_card?
      vat_only_fraction = VAT / (100.0 + VAT)
      vat = line_item.line_price * vat_only_fraction
      ex_vat_price = line_item.line_price - vat
      line_item.change_line_price(ex_vat_price, message: VAT_REMOVAL_MESSAGE)
    end
  end
end

Output.cart = Input.cart

Poniższy kod Liquid współdziała z powyższym skryptem w celu objaśnienia zmian w koszyku.

Dodaj ten kod do checkout.liquid:

<style>
  .checkout__vat-exemption-message {
    padding: 1.25em 0;
    display: none;
  }
  @media (min-width: 1000px) {
    .checkout__vat-exemption-message {
      padding-top: 0;
      padding-bottom: 2.5em;
    }
  }
</style>

<div class="checkout__vat-exemption-message">
  <span>{{ 'plus.checkout.vat_exemption_message' | t }}</span>
</div>

<script>
  $(document).on('ready page:load page:change', function() {
    var country = '';

    if(Shopify.Checkout.step === 'contact_information') {
      $country = $('[data-step] select[name="checkout[shipping_address][country]"]');
      country = $country.find(':selected').data('code');
    } else {
      country = "{{ checkout.shipping_address.country_code }}";
    }

    var eu_countries = ['AT','BE','BG','CY','CZ','DK','EE','FI','FR','DE','GR','HU','IE','IT','LV','LT','LU','MT','NL','PL','PT','RO','SK','SI','ES','SE','GB'];

    if (eu_countries.includes(country)) {
      $('.checkout__vat-exemption-message').css('display', 'none');
    } else {
      $('.checkout__vat-exemption-message').css('display', 'block');
    }
  });

</script>

Dodaj następujący kod do pliku angielskich ustawień regionalnych:

"plus":{
    "checkout": {
      "vat_exemption_message": "As we're shipping outside the EU the VAT has been removed from items in your cart."
    }
  }

Na tej stronie

Dowiedz się więcej

Dowiedz się więcej o:

Gotowy(-a) do rozpoczęcia sprzedaży za pomocą Shopify?

Wypróbuj za darmo