Product price resets when changing quantity on cart page - Debut

Solved
Ronald321
Tourist
5 2 0

Hello all,

 

I am trying to create a wholesale website where specific customers get an automatic discount in Debut.  I have got it working where the product price with discount will show on the product page and cart. However, if you change the quantity of the items in the cart the price resets to the default value with no discount.  At checkout the discount is still applied and everything is correct but I would like to have the cart page show the correct pricing, even when changing quantity.

Below are pictures of the before and after changing the quantity.

Ronald321_0-1619620041972.png

Ronald321_1-1619620119400.png

 

Code of price I am trying to show instead of the default price

{{ product_price | money }}

Code of my cart-template.liquid section:

I think it has to do with looping and something relating to this section.

<div class="cart__qty medium-up--hide">

<div class="page-width" data-section-id="{{ section.id }}" data-section-type="cart-template" data-ajax-enabled="{{ section.settings.cart_ajax_enable }}">
{% include 'dealer-25-check' %}
{% include 'dealer-35-check' %}
{% include 'calc-cart-total-price' %}


  <div {% if cart.item_count == 0 %}class="hide" {% endif %}data-cart-wrapper>
    <div class="cart-header">
      <h1 class="cart-header__title">{{ 'cart.general.title' | t }}</h1>
      <a href="{{ routes.all_products_collection_url }}" class="text-link text-link--accent">
        {{ 'cart.general.continue_shopping' | t }}
      </a>
    </div>

    <form action="{{ routes.cart_url }}" method="post" novalidate class="cart">
       
      <table>
        <thead class="cart__row cart__row--heading">
          <th scope="col">{{ 'cart.label.product' | t }}</th>
          <th class="text-right" scope="col">{{ 'cart.label.price' | t }}</th>
          <th class="text-right small--hide" scope="col">{{ 'cart.label.quantity' | t }}</th>
          <th class="text-right small--hide" scope="col">{{ 'cart.label.total' | t }}</th>
        </thead>
        <tbody data-cart-line-items>
          {%- for item in cart.items -%}
          
          {% comment %} Below line is for dealer pricing {% endcomment %}
          {%- include 'calc-product-price' with product: item.product -%}

            <tr class="cart__row" data-cart-item data-cart-item-key="{{ item.key }}" data-cart-item-url="{{ item.url }}" data-cart-item-title="{{ item.title }}" data-cart-item-index="{{ forloop.index }}" data-cart-item-quantity="{{ item.quantity }}">
              <td class="cart__meta small--text-left" data-cart-table-cell>
                <div class="cart__product-information">
                  <div class="cart__image-wrapper">
                    <img class="cart__image{% if item.image == null %} hide{% endif %}" src="{{ item | img_url: 'x190' }}" alt="{{ item.image.alt | escape }}" data-cart-item-image>
                  </div>
                  <div>
                    <div class="list-view-item__title">
                      <a href="{{ item.url }}" class="cart__product-title" data-cart-item-title data-role="product-title">
                        {{ item.product.title }}
                      </a>
                    </div>

                    {%- assign variant_options = 'template ' | split: ' ' -%}
                    {%- if item.product.has_only_default_variant != true -%}
                      {%- assign variant_options = item.options_with_values -%}
                    {%- endif -%}
                    {%- assign property_size = item.properties | size -%}

                    <ul class="product-details{% if item.product.has_only_default_variant and property_size == 0 and item.selling_plan_allocation == nil %} hide{% endif %}" data-cart-item-details aria-label="{{ 'cart.label.product_details' | t }}">
                      {%- for option in variant_options -%}
                        <li class="product-details__item product-details__item--variant-option{% if item.product.has_only_default_variant %} hide{% endif %}" data-cart-item-option>{{ option.name }}: {{ option.value }}</li>
                      {%- endfor -%}

                      <li
                        class="product-details__item product-details__item--property
                        {% if item.selling_plan_allocation == empty %} hide {% endif %}"
                        data-cart-item-selling-plan-name
                      >
                        {{ item.selling_plan_allocation.selling_plan.name }}
                      </li>

                      {%- comment -%}
                        Optional, loop through custom product line items if available

                        Line item properties come in as having two parts. The first part will be passed with the default form,
                        but p.last is the actual custom property and may be blank. If it is, don't show it.

                        For more info on line item properties, visit:
                          - http://docs.shopify.com/support/your-store/products/how-do-I-collect-additional-information-on-the-product-page-Like-for-a-monogram-engraving-or-customization
                      {%- endcomment -%}

                      {%- assign properties = 'template ' | split: ' ' -%}
                      {%- if property_size > 0 -%}
                        {%- assign properties = item.properties -%}
                      {%- endif -%}

                      {%- for p in properties -%}
                        {% assign property_first_char = p.first | slice: 0 %}
                        <li class="product-details__item product-details__item--property
                          {%if property_size == 0 or p.last == blank or property_first_char == '_' %} hide{% endif %}" data-cart-item-property>
                          <span class="product-details__item-label" data-cart-item-property-name>{{ p.first }}: </span>

                          {%- comment -%}
                            Check if there was an uploaded file associated
                          {%- endcomment -%}
                          <span data-cart-item-property-value>
                            {%- if p.last contains '/uploads/' -%}
                              <a href="{{ p.last }}" data-role="product-upload">{{ p.last | split: '/' | last }}</a>
                            {%- else -%}
                              {{ p.last }}
                            {%- endif -%}
                          </span>
                        </li>
                      {%- endfor -%}
                    </ul>

                    <p class="cart__remove">
                      <a href="/cart/change?line={{ forloop.index }}&amp;quantity=0" class="text-link text-link--accent" aria-label="{{ 'cart.label.remove' | t: product: item.title }}" data-cart-remove data-role="product-remove">{{ 'cart.general.remove' | t }}</a>
                    </p>
                  </div>
                </div>
              </td>
              <td class="cart__price text-right">

                {%- assign hasDiscount = false -%}
                {%- if item.original_price != item.final_price -%}
                  {%- assign hasDiscount = true -%}
                {%- endif -%}

                <div data-cart-item-price>
                  <dl data-cart-item-price-list>
                    {%- comment -%}
                      Markup template for discount item
                    {%- endcomment -%}
                    <div {% unless hasDiscount %}class="hide" {% endunless %}data-cart-item-discounted-price-group>
                      <dt>
                        <span class="visually-hidden">{{ 'products.product.regular_price' | t }}</span>
                      </dt>
                      <dd>
                        <s data-cart-item-original-price> {{ item.original_price | money }} </s>
                      </dd>
                      <dt>
                        <span class="visually-hidden">{{ 'products.product.sale_price' | t }}</span>
                      </dt>
                      <dd>
                        <span class="order-discount" data-cart-item-final-price>{{ item.final_price | money }}</span>
                      </dd>
                    </div>

                    {%- comment -%}
                      Markup template for regular price item
                    {%- endcomment -%}
                    <div {% if hasDiscount %}class="hide" {% endif %}data-cart-item-regular-price-group>
                      <dt>
                        <span class="visually-hidden"> {{ 'products.product.regular_price' | t }}</span>
                      </dt>
                      <dd data-cart-item-regular-price>
                                           {% comment %}  original code {{ item.original_price | money }}                    {% endcomment %}

                        {{ product_price | money }}

                      </dd>
                    </div>

                    {%- comment -%}
                      Markup template for unit price
                    {%- endcomment -%}
                    <div {% unless item.unit_price_measurement %}class="hide" {% endunless %}data-unit-price-group>
                      <dt>
                        <span class="visually-hidden visually-hidden--inline">{{ 'products.product.unit_price_label' | t }}</span>
                      </dt>
                      <dd>
                        <span class="price-unit-price">
                          {%- capture unit_price_separator -%}
                            <span aria-hidden="true">/</span><span class="visually-hidden">{{ 'general.accessibility.unit_price_separator' | t }}&nbsp;</span>
                          {%- endcapture -%}
                          {%- capture unit_price_base_unit -%}
                            {%- if item.unit_price_measurement.reference_value != 1 -%}
                              {{- item.unit_price_measurement.reference_value -}}
                            {%- endif -%}
                            {{ item.unit_price_measurement.reference_unit }}
                          {%- endcapture -%}

                        <span data-unit-price>{{ item.unit_price | money }}</span>{{- unit_price_separator -}}<span data-unit-price-base-unit>{{- unit_price_base_unit -}}</span>
                                                                      

                        
                        </span>
                                              
                        
                      </dd>
                    </div>
                  </dl>
                </div>

                {%- assign itemDiscounts = 'template ' | split: ' ' -%}
                {%- if item.line_level_discount_allocations != blank -%}
                  {%- assign itemDiscounts = item.line_level_discount_allocations -%}
                {%- endif -%}

                <ul class="order-discount order-discount--list order-discount--title order-discount--cart{% if item.line_level_discount_allocations == blank %} hide{% endif %}" aria-label="{{ 'customer.order.discount' | t }}" data-cart-item-discount-list>
                  {%- for discount_allocation in itemDiscounts -%}
                    <li class="order-discount__item" data-cart-item-discount>
                      {% include 'icon-saletag' %}
                      <span data-cart-item-discount-title>
                        {{- discount_allocation.discount_application.title -}}
                      </span> (-<span data-cart-item-discount-amount>{{ discount_allocation.amount | money }}</span>)
                    </li>
                  {%- endfor -%}
                </ul>

                
                
                
                <div class="cart__qty medium-up--hide">
                  <label for="updates_{{ item.key }}" class="cart__qty-label" aria-label="{{ 'cart.label.quantity' | t }}" data-quantity-label-mobile>
                    {{ 'cart.label.qty' | t }}
                  </label>
                  <input id="updates_{{ item.key }}" class="cart__qty-input" type="number"
                    value="{{ item.quantity }}" min="0" pattern="[0-9]*"
                    data-quantity-input data-quantity-item="{{ forloop.index }}" data-quantity-input-mobile data-role="product-quantity-mobile">
                </div>
                <div class="cart__qty-error-message-wrapper cart__qty-error-message-wrapper--mobile hide" role="alert" data-cart-quantity-error-message-wrapper>
                  <span class="visually-hidden">{{ 'general.accessibility.error' | t }} </span>
                  {% include 'icon-error' %}
                  <span class="cart__qty-error-message" data-cart-quantity-error-message></span>
                </div>
              </td>
              <td class="cart__quantity-td text-right small--hide">
                <div class="cart__qty">
                  <label for="updates_large_{{ item.key }}" class="cart__qty-label" data-quantity-label-desktop>{{ 'cart.label.quantity' | t }}</label>
                  <input id="updates_large_{{ item.key }}" class="cart__qty-input" type="number"
                    name="updates[]" value="{{ item.quantity }}" min="0" pattern="[0-9]*"
                    data-quantity-input data-quantity-item="{{ forloop.index }}" data-quantity-input-desktop data-role="product-quantity-desktop">
                </div>
                <div class="cart__qty-error-message-wrapper cart__qty-error-message-wrapper--desktop hide" role="alert" data-cart-quantity-error-message-wrapper>
                  <span class="visually-hidden">{{ 'general.accessibility.error' | t }} </span>
                  {% include 'icon-error' %}
                  <span class="cart__qty-error-message" data-cart-quantity-error-message></span>
                </div>
              </td>
            
              
              
              
              
              
              <td class="cart__final-price text-right small--hide" data-cart-item-line-price>
                {%- comment -%}
                  Markup template for discount item
                {%- endcomment -%}
                <dl {% unless item.original_line_price != item.final_line_price %}class="hide" {% endunless %}data-cart-item-discounted-price-group>
                  <dt>
                    <span class="visually-hidden">{{ 'cart.label.regular_total' | t }}</span>
                  </dt>
                  <dd>
                    <s data-cart-item-original-price>{{ item.original_line_price | money }}</s>
                  </dd>
                  <dt>
                    <span class="visually-hidden">{{ 'cart.label.discounted_total' | t }}</span>
                  </dt>
                  <dd>
                    <span class="order-discount" data-cart-item-final-price>{{ item.final_line_price | money }}</span>
                  </dd>
                </dl >

                {%- comment -%}
                  Markup template for regular price item
                {%- endcomment -%}
                <div {% if item.original_line_price != item.final_line_price %}class="hide" {% endif %}data-cart-item-regular-price-group>
                  <span data-cart-item-regular-price>                               {{ product_price | times: item.quantity | money }}
    {% comment %} {{ item.original_line_price | money }}   {% endcomment %}</span>
                </div>
              </td>
            </tr>
          {%- endfor -%}
        </tbody>
      </table>

      <div class="cart__footer">
        <div class="grid">
          {%- if section.settings.cart_notes_enable -%}
            <div class="grid__item medium-up--one-half cart-note">
              <label for="CartSpecialInstructions" class="cart-note__label small--text-center">{{ 'cart.general.note' | t }}</label>
              <textarea name="note" id="CartSpecialInstructions" class="cart-note__input" data-cart-notes>{{ cart.note }}</textarea>
            </div>
          {%- endif -%}
          <div class="grid__item text-right small--text-center{% if section.settings.cart_notes_enable %} medium-up--one-half{% endif %}">

            {%- assign cartDiscounts = 'template ' | split: ' ' -%}
            {%- if cart.cart_level_discount_applications.size > 0 -%}
              {%- assign cartDiscounts = cart.cart_level_discount_applications -%}
            {%- endif -%}
            <div{% if cart.cart_level_discount_applications.size == 0 %} class="hide"{% endif %} data-cart-discount-wrapper>
              <div class="order-discount-card-wrapper" data-cart-discount>
                {%- for discount_application in cartDiscounts -%}
                  <span class="order-discount order-discount--title order-discount--cart">
                    {% include 'icon-saletag' %}<span class="visually-hidden">{{ 'customer.order.discount' | t }}:</span><span data-cart-discount-title>{{- discount_application.title -}}</span>
                  </span>
                  <span class="order-discount order-discount--cart order-discount--cart-total">
                    -<span data-cart-discount-amount>{{ discount_application.total_allocated_amount | money }}</span>
                  </span>
                {%- endfor -%}
              </div>
            </div>

            <div class="cart-subtotal">
              <span class="cart-subtotal__title">{{ 'cart.general.subtotal' | t }}</span>
              <span class="cart-subtotal__price" data-cart-subtotal> {{ cart_total_price | money }}  
                {% comment %} original code       {{ cart.total_price | money_with_currency }} {% endcomment %} </span>
            </div>

            {%- capture taxes_shipping_checkout -%}
              {%- if cart.taxes_included and shop.shipping_policy.body != blank -%}
                {{ 'cart.general.taxes_included_and_shipping_policy_html' | t: link: shop.shipping_policy.url }}
              {%- elsif cart.taxes_included -%}
                {{ 'cart.general.taxes_included_but_shipping_at_checkout' | t }}
              {%- elsif shop.shipping_policy.body != blank -%}
                {{ 'cart.general.taxes_and_shipping_policy_at_checkout_html' | t: link: shop.shipping_policy.url }}
              {%- else -%}
                {{ 'cart.general.taxes_and_shipping_at_checkout' | t }}
              {%- endif -%}
            {%- endcapture -%}
            <div class="cart__shipping rte">{{ taxes_shipping_checkout }}</div>
            <div class="cart__buttons-container">
              <div class="cart__submit-controls">
                {%- unless section.settings.cart_ajax_enable -%}
                <input type="submit" name="update"
                  class="cart__submit btn btn--secondary"
                  value="{{ 'cart.general.update' | t }}">
                {%- endunless -%}
               
                <input type="submit" name="checkout"
                  class="cart__submit btn btn--small-wide"
                  value="{{ 'cart.general.checkout' | t }}">
              </div>

              <div class="cart__error-message-wrapper hide" role="alert" data-cart-error-message-wrapper>
                <span class="visually-hidden">{{ 'general.accessibility.error' | t }} </span>
                {% include 'icon-error' %}
                <span class="cart__error-message" data-cart-error-message></span>
              </div>
              
			  {%- if additional_checkout_buttons -%}
                <div class="additional-checkout-buttons">{{ content_for_additional_checkout_buttons }}</div>
              {%- endif -%}
            </div>
          </div>
        </div>
      </div>
      
      {%- comment -%}
                  Codes for automatic discounts  
                {%- endcomment -%}
      
      
      {% if is_dealer_25 %}
  <input type="hidden" name="discount" value="DEALER25"/>
{% endif %}
      
       {% if is_dealer_35 %}
  <input type="hidden" name="discount" value="DEALER_35"/>
{% endif %}
      
      
      
    </form>

    <p class="visually-hidden" data-cart-status
      aria-live="polite"
      role="status"
    ></p>
  </div>

  <div class="empty-page-content{% if cart.item_count > 0 %} hide{% endif %} text-center" data-empty-page-content>
    <h1>{{ 'cart.general.title' | t }}</h1>
    <p class="cart--empty-message">{{ 'cart.general.empty' | t }}</p>
    <div class="cookie-message">
      <p>{{ 'cart.general.cookies_required' | t }}</p>
    </div>
    <a href="{{ routes.root_url }}" class="btn btn--has-icon-after cart__continue-btn">{{ 'general.404.link' | t }}{% include 'icon-arrow-right' %}</a>
  </div>
</div>

 

0 Likes
Ronald321
Tourist
5 2 0

This is an accepted solution.

I solved this by customizing my cart page using the theme editor and de-selecting "Enable automatic cart updates"

 
0 Likes