Beispiel für ein Rabatt-Skript

Dieses Beispiel verwendet ein Positionsskript, um einen Rabatt anzubieten, der auf dem Land der Kundschaft basiert. Das Beispiel enthält auch Liquid-Beispielcode, um die Kundschaft über den Rabatt zu informieren. Für dieses Beispiel musst du auf die Datei checkout.liquid deines Shops zugreifen können. Wenn du in deinem Theme-Code keinen Zugriff auf diese Datei hast, verwende Shopify Extensions für den Checkout und Shopify Functions, um deinen Checkout anzupassen.

In diesem Beispiel wird eine fiktive Mehrwertsteuer verwendet, für die die folgenden Regeln gelten:

  • Kund:innen mit Wohnsitz in einer Länderunion wird auf alle verkauften Produkte die Mehrwertsteuer berechnet.
  • Kund:innen, die Produkte kaufen und in ein Nicht-Unionsland exportieren lassen, müssen keine Mehrwertsteuer bezahlen (d. h., Verkäufe an diese Kund:innen gelten als steuerfrei).
  • Die Produktpreise im Shop enthalten die Mehrwertsteuer. Das bedeutet, die Einstellung Alle Steuern sind in meinen Preisen enthalten ist in den Steuereinstellungen des Shops aktiviert.

In der Storefront sehen alle Kund:innen die im Produktpreis enthaltene Mehrwertsteuer. Wenn Artikel in den Warenkorb gelegt werden, wird der Preis inklusive Mehrwertsteuer angezeigt:

Warenkorb mit angewandter Steuer

Beim Checkout wird das Versandland vom Skript überprüft. Wenn das Land ein Nicht-Unionsland ist, wird der Gesamtpreis um den Mehrwertsteuerbetrag reduziert:

Warenkorb mit entfernter Steuer

Im folgenden Beispiel wird das Land des Kunden bzw. der Kundin geprüft. Wenn der Kunde oder die Kundin in einem Land wohnt, in dem keine Mehrwertsteuer anfällt, wird der Gesamtpreis der Bestellung um den Mehrwertsteuerbetrag reduziert.

# 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

Der folgende Liquid-Code funktioniert mit dem obigen Skript, um die Änderungen im Warenkorb zu erklären.

Füge diesen Code zu checkout.liquid hinzu:

<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>

Füge den folgenden Code zu deiner englischen Sprachdatei hinzu:

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

Auf dieser Seite

Mehr Informationen

Mehr Informationen zu: