190 lines
7.5 KiB
Plaintext
190 lines
7.5 KiB
Plaintext
{%- comment -%}
|
|
Pass in:
|
|
|
|
- product or variant
|
|
- format string, one of
|
|
- "sale_text"
|
|
- "percent_off"
|
|
- "minus_percent"
|
|
- "save_percent"
|
|
- "amount_off"
|
|
- "minus_amount"
|
|
- "save_amount"
|
|
{%- endcomment -%}
|
|
|
|
{%- assign varies = false -%}
|
|
|
|
{%- liquid
|
|
assign prod_price = prod.price
|
|
assign prod_compare_at_price = prod.compare_at_price
|
|
|
|
if variant
|
|
assign prod = variant
|
|
|
|
assign prod_price = variant.metafields.app--168074346497.auto_discounted_price.value | default: variant.price
|
|
assign prod_compare_at_price = variant.compare_at_price
|
|
|
|
if variant.metafields.app--168074346497.discount_type.value != nil and variant.metafields.app--168074346497.discount_type.value != "fixed" and prod.metafields.app--168074346497.discount_percentage.value > 0.01
|
|
assign deducted_percentage = 1.0 | minus: prod.metafields.app--168074346497.discount_percentage.value
|
|
|
|
if variant.metafields.app--168074346497.discount_percentage.value > 0.01
|
|
assign deducted_percentage = 1.0 | minus: variant.metafields.app--168074346497.discount_percentage.value
|
|
endif
|
|
|
|
assign prod_price = variant.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
|
|
|
assign prod_compare_at_price = variant.price
|
|
|
|
if variant.compare_at_price > prod_compare_at_price
|
|
assign prod_compare_at_price = variant.compare_at_price
|
|
endif
|
|
endif
|
|
else
|
|
if prod.compare_at_price_varies or prod.price_varies
|
|
assign varies = true
|
|
assign amount_off_varies = true
|
|
|
|
assign smallest_amount_off = 0
|
|
assign largest_amount_off = 0
|
|
|
|
for variant in prod.variants
|
|
|
|
assign variant_price = variant.metafields.app--168074346497.auto_discounted_price.value | default: variant.price
|
|
assign variant_compare_at_price = variant.compare_at_price
|
|
|
|
if variant.metafields.app--168074346497.discount_type.value != nil and variant.metafields.app--168074346497.discount_type.value != "fixed" and prod.metafields.app--168074346497.discount_percentage.value > 0.01
|
|
assign deducted_percentage = 1.0 | minus: prod.metafields.app--168074346497.discount_percentage.value
|
|
|
|
if variant.metafields.app--168074346497.discount_percentage.value > 0.01
|
|
assign deducted_percentage = 1.0 | minus: variant.metafields.app--168074346497.discount_percentage.value
|
|
endif
|
|
|
|
assign variant_price = variant.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil
|
|
|
|
assign variant_compare_at_price = variant.price
|
|
|
|
if variant.compare_at_price > variant_compare_at_price
|
|
assign variant_compare_at_price = variant.compare_at_price
|
|
endif
|
|
endif
|
|
|
|
if variant_compare_at_price > variant_price
|
|
assign variant_amount_off = variant_compare_at_price | minus: variant_price
|
|
|
|
if smallest_amount_off == 0 or variant_amount_off < smallest_amount_off
|
|
assign smallest_amount_off = variant_amount_off
|
|
endif
|
|
|
|
if variant_amount_off > largest_amount_off
|
|
assign largest_amount_off = variant_amount_off
|
|
endif
|
|
endif
|
|
endfor
|
|
|
|
if smallest_amount_off == largest_amount_off
|
|
assign amount_off_varies = false
|
|
endif
|
|
endif
|
|
endif
|
|
-%}
|
|
|
|
{% comment %}
|
|
{% if variant %}
|
|
{% assign prod = variant %}
|
|
{% else %}
|
|
{%- if prod.compare_at_price_varies or prod.price_varies -%}
|
|
{%- assign varies = true -%}
|
|
{%- assign amount_off_varies = true -%}
|
|
|
|
{% comment %}
|
|
The price may vary but the amount off may be the same for each variant.
|
|
Here we check to see if the amount off for each variant is the same or different.
|
|
{% endcomment %}
|
|
{%- assign smallest_amount_off = 0 -%}
|
|
{%- assign largest_amount_off = 0 -%}
|
|
{%- for variant in prod.variants -%}
|
|
{%- if variant.compare_at_price > variant.price -%}
|
|
{%- assign variant_amount_off = variant.compare_at_price | minus: variant.price -%}
|
|
{%- if smallest_amount_off == 0 -%}
|
|
{%- assign smallest_amount_off = variant_amount_off -%}
|
|
{%- endif -%}
|
|
{%- if variant_amount_off > largest_amount_off -%}
|
|
{%- assign largest_amount_off = variant_amount_off -%}
|
|
{%- endif -%}
|
|
{%- if variant_amount_off < smallest_amount_off -%}
|
|
{%- assign smallest_amount_off = variant_amount_off -%}
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
{%- endfor -%}
|
|
|
|
{% comment %}
|
|
If the smallest amount off is equal to the largest amount then the discount does not vary
|
|
{% endcomment %}
|
|
{%- if smallest_amount_off == largest_amount_off -%}
|
|
{%- assign amount_off_varies = false -%}
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
{% endcomment %}
|
|
|
|
{%- if format == 'sale_text' -%}
|
|
{%- if prod_compare_at_price > prod_price -%}
|
|
{{ 'products.product.on_sale' | t }}
|
|
{%- endif -%}
|
|
{%- else -%}
|
|
{%- assign is_percent_format = false -%}
|
|
{%- if format == 'percent_off' or format == 'minus_percent' or format == 'save_percent' -%}
|
|
{%- assign is_percent_format = true -%}
|
|
{%- endif -%}
|
|
|
|
{%- if varies -%}
|
|
{%- if is_percent_format -%}
|
|
{%- capture displayed_discount -%}
|
|
{%- render 'get-varied-percent-discount', prod: prod -%}
|
|
{%- endcapture -%}
|
|
{%- else -%}
|
|
{%- capture displayed_discount -%}
|
|
{%- render 'get-varied-amount-discount', prod: prod -%}
|
|
{%- endcapture -%}
|
|
{%- endif -%}
|
|
{%- else -%}
|
|
{%- if is_percent_format -%}
|
|
{%- capture displayed_discount -%}{%- render 'get-percent-discount', prod: prod -%}{%- endcapture -%}
|
|
{%- else -%}
|
|
{%- capture displayed_discount -%}{%- render 'get-amount-discount', prod: prod -%}{%- endcapture -%}
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
{% assign displayed_discount = displayed_discount | plus: 0 -%}
|
|
|
|
{%- unless is_percent_format %}
|
|
{% capture formatted_currency_discount %}{{ displayed_discount | money }}{% endcapture %}
|
|
{% endunless -%}
|
|
{%- if displayed_discount > 0 %}
|
|
{%- if format == 'percent_off' -%}
|
|
{% if amount_off_varies %}{{ 'products.product.on_sale_varied_prefix' | t }}{% endif %}
|
|
{{ 'products.product.on_sale_format_percent_off' | t: value: displayed_discount }}
|
|
{%- elsif format == 'minus_percent' -%}
|
|
{% if amount_off_varies %}{{ 'products.product.on_sale_varied_prefix' | t }}{% endif %}
|
|
{{ 'products.product.on_sale_format_minus_percent' | t: value: displayed_discount }}
|
|
{%- elsif format == 'save_percent' -%}
|
|
{% if amount_off_varies %}
|
|
{{ 'products.product.on_sale_format_save_percent_varied' | t: value: displayed_discount }}
|
|
{% else %}
|
|
{{ 'products.product.on_sale_format_save_percent' | t: value: displayed_discount }}
|
|
{% endif %}
|
|
{%- elsif format == 'amount_off' -%}
|
|
{% if amount_off_varies %}{{ 'products.product.on_sale_varied_prefix' | t }}{% endif %}
|
|
{{ 'products.product.on_sale_format_amount_off' | t: value: formatted_currency_discount }}
|
|
{%- elsif format == 'minus_amount' -%}
|
|
{% if amount_off_varies %}{{ 'products.product.on_sale_varied_prefix' | t }}{% endif %}
|
|
{{ 'products.product.on_sale_format_minus_amount' | t: value: formatted_currency_discount }}
|
|
{%- elsif format == 'save_amount' -%}
|
|
{% if amount_off_varies %}
|
|
{{ 'products.product.on_sale_format_save_amount_varied' | t: value: formatted_currency_discount }}
|
|
{% else %}
|
|
{{ 'products.product.on_sale_format_save_amount' | t: value: formatted_currency_discount }}
|
|
{% endif %}
|
|
{%- endif -%}
|
|
{% endif -%}
|
|
{%- endif -%}
|