Ví dụ về tập lệnh giảm giá

Ví dụ này dùng tập lệnh mục hàng để giảm giá dựa trên quốc gia của khách hàng. Ví dụ này cũng bao gồm mã Liquid mẫu để cung cấp thông tin cho khách hàng về khoản giảm giá. Bạn cần có quyền truy cập vào tệp checkout.liquid của cửa hàng đối với ví dụ này. Nếu không có quyền truy cập vào tệp này trong mã chủ đề, hãy sử dụng Tiện ích thanh toán của ShopifyShopify Functions để tùy chỉnh trang thanh toán.

Ví dụ này dùng một loại thuế GTGT giả định có các quy tắc sau:

  • Khách hàng cư trú tại một liên minh các quốc gia sẽ bị tính thuế GTGT đối với mọi sản phẩm được bán.
  • Khách hàng mua và xuất khẩu sản phẩm sang quốc gia không thuộc liên minh không phải trả thuế GTGT (nói cách khác, doanh số bán cho những khách hàng này bị tính thuế ở mức 0).
  • Giá sản phẩm trong cửa hàng đã bao gồm thuế GTGT, tức là cài đặt Đã bao gồm mọi khoản thuế trong giá được bật trong cài đặt thuế của cửa hàng.

Trên cửa hàng, tất cả khách hàng đều thấy mức giá sản phẩm đã bao gồm thuế GTGT. Khi thêm mặt hàng vào giỏ hàng, mức giá đã bao gồm thuế GTGT sẽ hiển thị:

Giỏ hàng có áp dụng thuế

Tại trang thanh toán, quốc gia vận chuyển được kiểm tra bằng tập lệnh. Nếu quốc gia này không thuộc liên minh, tổng giá sẽ giảm theo số tiền thuế GTGT:

Giỏ hàng đã loại bỏ thuế

Trong ví dụ sau, quốc gia của khách hàng được kiểm tra. Nếu khách hàng cư trú tại một quốc gia không áp dụng thuế GTGT, tổng giá đơn hàng sẽ giảm theo số tiền thuế GTGT.

# 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

Mã Liquid sau đây hoạt động cùng với tập lệnh ở trên nhằm giải thích những thay đổi trong giỏ hàng.

Thêm mã này vào 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>

Thêm mã sau vào tệp ngôn ngữ và vùng tiếng Anh của bạn:

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

Trên trang này

Tìm hiểu thêm

Tìm hiểu thêm về: