Ejemplo de script de descuento

Este ejemplo usa un script de línea de artículo para ofrecer un descuento en función del país del cliente. También incluye un código de Liquid de ejemplo para informar al cliente sobre el descuento.

Este ejemplo usa un impuesto de IVA ficticio que tiene las siguientes reglas:

  • Los clientes que viven en una unión de países pagan impuestos de IVA sobre 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 impuesto del IVA (es decir, las ventas a estos clientes tienen calificación cero).
  • Los precios de los productos en la tienda incluyen el impuesto del IVA (es decir, la configuración Todos los impuestos están incluidos en mis precios está habilitada en la configuración de impuestos de la tienda).

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

Carrito con el impuesto aplicado

En la pantalla de pagos, el script verifica el país de envío. Si el país no pertenece a la unión, se resta el monto del IVA al precio total:

Carrito sin el impuesto

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

# 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 de 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 a tu archivo de configuración regional en inglés:

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

Leer más

Leer más acerca de

¿Estas listo(a) para comenzar a vender con Shopify?

Pruébala gratis