Exemple de script de réduction

Cet exemple utilise un script de rubrique afin de proposer une réduction en fonction du pays du client. Il inclut également un exemple de code Liquid pour fournir des informations au client sur la réduction.

Cet exemple utilise une TVA fictive dont les règles sont les suivantes :

  • Les clients résidant au sein d'une union internationale doivent payer la TVA sur tous les produits.
  • Les clients qui achètent des produits et les exportent vers des pays extérieurs à l'union n'ont pas à payer la TVA (en d'autres termes, ces clients n'ont aucune taxe ajoutée).
  • Le prix de produits de la boutique inclut la TVA (autrement dit, le paramètre Toutes les taxes sont incluses dans mes prix est activé pour les paramètres de taxe de la boutique.

Dans la vitrine, tous les clients voient la TVA incluse dans le prix des produits. Lors de l'ajout au panier, la TVA incluse dans le prix est affichée séparément :

Panier affichant la taxe

Lors du passage à la caisse, le script vérifie le pays d'expédition. Si le pays n'appartient pas à l'union, alors le montant de la TVA est déduit du prix total :

Panier affichant la taxe supprimée

Dans l'exemple suivant, le pays du client est vérifié. Si le client vit dans un pays où la TVA ne s'applique pas, alors le prix total de la commande n'inclut pas le montant de la TVA.

# 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

Le code Liquid suivant fonctionne avec le script ci-dessous pour expliquer les modifications du panier.

Ajoutez ce code à 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>

Ajoutez le code suivant à votre fichier de paramètres régionaux en anglais :

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

En savoir plus

En savoir plus sur :

Prêt(e) à commencer à vendre avec Shopify ?

Essayez gratuitement