Ejemplo de script de descuento

Este ejemplo usa un script de línea de artículo para ofrecer un descuento según el país del cliente. También incluye código Liquid de ejemplo para informar al cliente sobre el descuento. Este ejemplo requiere acceso al archivo checkout.liquid de la tienda. Si no hay acceso a este archivo en el código del tema, usa Shopify Extensions for checkout y Shopify Functions para personalizar el pago.

Este ejemplo usa un IVA ficticio con las siguientes reglas:

  • A los clientes que residen en una unión de países se les cobra IVA en todos los productos vendidos.
  • Los clientes que compran productos y los exportan a un país que no pertenece a la unión no tienen que pagar el IVA (es decir, las ventas a estos clientes tienen tasa cero).
  • Los precios de los productos en la tienda incluyen el IVA cuando en la tax settings de la tienda está activada la opción Todos los impuestos están incluidos en mis precios.

En la tienda online, todos los clientes ven el IVA incluido en los precios de los productos. Cuando se agregan artículos al carrito, se muestra el precio con IVA incluido:

Carrito con impuestos aplicados

En el pago, el script verifica el país de envío. Si el país no pertenece a la unión, el precio total se reduce por el monto del IVA:

Carrito con impuestos eliminados

En el siguiente ejemplo, se verifica el país del cliente. Si el cliente vive en un país donde no se aplica el IVA, el precio total del pedido se reduce por el monto del IVA.

# 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 siguiente código Liquid funciona con el script anterior para explicar los cambios en el carrito.

Agrega este código 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>

Agrega el siguiente código al English locale file:

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

En esta página

Más información

Más información sobre: