Exemple d'script de descompte

Aquest exemple utilitza un script de partida per oferir un descompte basat en el país del client. També inclou codi de mostra de Liquid per proporcionar informació al client sobre el descompte. Requereix tenir accés al fitxer checkout.liquid de la teva botiga. Si no hi tens accés al codi del tema, utilitza Shopify Extensions per al pagament i Shopify Functions per personalitzar la pantalla de pagament.

Aquest exemple utilitza un IVA fictici que té les regles següents:

  • Als clients que resideixen a una unió de països se'ls cobra l'IVA de tots els productes venuts.
  • Els clients que compren productes i els exporten a un país aliè a la unió no han de pagar l'IVA (és a dir, a les vendes a aquests clients s'hi aplica un tipus zero).
  • Els preus dels productes a la botiga inclouen l'IVA. Això significa que la configuració Tots els impostos estan inclosos als meus preus està activada a la configuració d'impostos de la botiga.

A l'aparador, tots els clients veuen l'IVA inclòs als preus dels productes. En afegir articles al carretó, es mostra el preu amb l'IVA inclòs:

Carretó amb impostos aplicats

Durant el procés de pagament, l'script comprova el país de lliurament. Si el país és aliè a la unió, es dedueix l'import de l'IVA del preu total:

Carretó sense impostos

A l'exemple següent, es comprova el país del client. Si el client viu en un país on no s'aplica l'IVA, es dedueix l'import d'aquest impost del preu total de la comanda.

# 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

El codi de Liquid següent funciona amb l'script anterior per explicar els canvis al carretó.

Afegeix aquest codi a 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>

Afegeix el codi següent al teu fitxer de configuració regional de l'anglès:

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

En aquesta pàgina