{%- doc -%} This snippet is used to render a product card. It is used in the product block,featured product block, and the product card block. @param {product} product_resource - The product to render @param {boolean} [show_unit_price] - Whether to show the unit price @param {boolean} [show_sale_price_first] - Whether to show the sale price first {%- enddoc -%} {%- liquid assign show_unit_price = show_unit_price | default: false assign show_sale_price_first = show_sale_price_first | default: false assign selected_variant = product_resource.selected_or_first_available_variant assign price = selected_variant.price assign compare_at_price = selected_variant.compare_at_price # start - Yagi discounted price calculation assign price = selected_variant.metafields.app--168074346497.auto_discounted_price.value | default: selected_variant.price if price < selected_variant.price assign compare_at_price = selected_variant.price endif if selected_variant.metafields.app--168074346497.discount_type.value != nil and selected_variant.metafields.app--168074346497.discount_type.value != "fixed" assign deducted_percentage = 1.0 | minus: product.metafields.app--168074346497.discount_percentage.value if selected_variant.metafields.app--168074346497.discount_percentage.value > 0.01 assign deducted_percentage = 1.0 | minus: selected_variant.metafields.app--168074346497.discount_percentage.value endif assign price = selected_variant.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil assign compare_at_price = selected_variant.price if selected_variant.compare_at_price > compare_at_price assign compare_at_price = selected_variant.compare_at_price endif endif # end - Yagi discounted price calculation assign show_compare_price = false if compare_at_price > price assign show_compare_price = true endif if product_resource == blank assign price = 1999 endif # Check if variant has volume pricing assign has_volume_pricing = null assign price_min = null assign price_max = null # For product cards (collection/search pages), calculate min/max across all variants # For product pages, only use the selected variant's pricing assign is_product_card = false if template.name != 'product' assign is_product_card = true endif if is_product_card assign price_min = product_resource.price_min assign price_max = product_resource.price_max # start - Yagi discounted price calculation assign price = product_resource.metafields.app--168074346497.min_auto_discounted_price.value | default: product_resource.price if product_resource.metafields.app--168074346497.discount_percentage.value > 0.01 assign deducted_percentage = 1.0 | minus: product_resource.metafields.app--168074346497.discount_percentage.value assign price = product_resource.price | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil assign price_min = price assign price_max = product_resource.price_max | divided_by: 100.0 | times: deducted_percentage | times: 100.0 | ceil comment assign compare_at_price = product_resource.price if product_resource.compare_at_price > compare_at_price assign compare_at_price = product_resource.compare_at_price endif endcomment endif # end - Yagi discounted price calculation assign has_volume_pricing = product_resource.quantity_price_breaks_configured? | default: false else # Product page: only use selected variant's pricing if selected_variant.quantity_price_breaks.size > 0 assign has_volume_pricing = true assign price_min = selected_variant.quantity_price_breaks.last.price assign price_max = selected_variant.price endif endif # Determine if currency code should be shown assign use_currency = false if product.handle == product_resource.handle if settings.currency_code_enabled_product_pages assign use_currency = true endif elsif settings.currency_code_enabled_product_cards assign use_currency = true endif # Format all prices if use_currency assign price = price | money_with_currency assign compare_at_price = compare_at_price | money_with_currency assign price_min = price_min | money_with_currency assign price_max = price_max | money_with_currency else assign price = price | money assign compare_at_price = compare_at_price | money assign price_min = price_min | money assign price_max = price_max | money endif -%}