テーマ仕様書 更新履歴
2024年
2024/05/23更新

2024/05/23更新

+ 更新した行
- 削除した行

複数お届け先機能の実装

機能や設定の詳細は「ecforce FAQ: 複数のお届け先 (opens in a new tab)」をご確認ください。

cart > 注文情報入力画面

ec_force/shop/orders/new.html.liquid
ec_force/shop/orders/new.html+smartphone.liquid

   <!-- フラッシュメッセージ -->
   {{ 'notice' | flash: 'alert alert-success', 'text' }}
   {{ 'alert' | flash: 'alert alert-danger', 'text' }}
+  {{ 'order_errors' | flash: 'alert alert-danger', 'text' }}
     <!-- 各入力フォーム部分テンプレート(PC用) -->
     <!-- 請求先住所(お客様情報)の入力 -->
     {% include 'ec_force/shop/orders/view_billing_information.html' %}
     <!-- 受取方法の選択  -->
     {% include 'ec_force/shop/orders/view_how_to_receive.html' %}
+    <!-- 複数のお届け先を指定  -->
+    {% include 'ec_force/shop/orders/view_multiple_shipping_option.html' %}
     <!-- お届け先住所(お届け先情報)の入力 -->
     {% include 'ec_force/shop/orders/view_shipping_information.html' %}
+    <!-- お届け先住所(複数のお届け先情報)の入力  -->
+    {% include 'ec_force/shop/orders/view_multiple_shipping_information.html' %}
     <!-- 受取店舗の選択 -->
     {% include 'ec_force/shop/orders/view_pickup_store_information.html' %}
     <!-- ラッピングの選択 -->
     {% include 'ec_force/shop/orders/view_wrapping_information.html' %}
     <!-- 各入力フォーム部分テンプレート(スマートフォン用) -->
     <!-- 請求先住所(お客様情報)の入力 -->
     {% include 'ec_force/shop/orders/view_billing_information.html+smartphone' %}
     <!-- 受取方法の選択  -->
     {% include 'ec_force/shop/orders/view_how_to_receive.html+smartphone' %}
+    <!-- 複数のお届け先を指定  -->
+    {% include 'ec_force/shop/orders/view_multiple_shipping_option.html+smartphone' %}
     <!-- お届け先住所(お届け先情報)の入力 -->
     {% include 'ec_force/shop/orders/view_shipping_information.html+smartphone' %}
+    <!-- お届け先住所(複数のお届け先情報)の入力  -->
+    {% include 'ec_force/shop/orders/view_multiple_shipping_information.html+smartphone' %}
     <!-- 受取店舗の選択 -->
     {% include 'ec_force/shop/orders/view_pickup_store_information.html+smartphone' %}
     <!-- ラッピングの選択 -->
     {% include 'ec_force/shop/orders/view_wrapping_information.html+smartphone' %}
     <!-- 確認画面リンク -->
     <input id="submit" type="submit" value="{{ submit_label }}">
   </form>
 
+  <!-- 複数のお届け先の入力フォームデータ及びフォームテンプレート(PC用) -->
+  {% include 'ec_force/shop/orders/view_multiple_shipping_information_form_data.html' %}
+  <!-- 複数のお届け先の入力フォームデータ及びフォームテンプレート(スマートフォン用) -->
+  {% include 'ec_force/shop/orders/view_multiple_shipping_information_form_data.html+smartphone' %}
 
 </div>

cart > 注文情報確認画面

ec_force/shop/orders/confirm.html.liquid
ec_force/shop/orders/confirm.html+smartphone.liquid

   <!-- 受取店舗情報 -->
-  {% if order.pickup_store %}
+  {% if order.pickup_store != blank %}
     <!-- 店舗名 -->
     {{ order.pickup_store.name }}
     <!-- フリガナ -->
     {{ order.pickup_store.kana }}
     <!-- 住所 -->
     {{ order.pickup_store.full_address }}
     <!-- 電話番号 -->
     {{ order.pickup_store.full_tel }}
     <!-- FAX番号 -->
     {{ order.pickup_store.full_fax }}
     <!-- 営業時間 -->
     {{ order.pickup_store.business_hours }}
     <!-- 営業時間 -->
     {{ order.pickup_store.business_hours }}
+  {% else %}
+    <!-- 複数のお届け先がある場合のお届け先情報 -->
+    {% if order.multiple_shipping? %}
+      {% for shipping_address in order.shipping_addresses %}
+        <!-- お名前 -->
+        {{ shipping_address.full_name }}
+        <!-- フリガナ -->
+        {{ shipping_address.full_kana }}
+        <!-- 住所 -->
+        {{ shipping_address.full_address }}
+        <!-- 電話番号 -->
+        {{ shipping_address.full_tel }}
+        <!-- お届け先登録 -->
+        {% assign address_registered = order.id | already_registered: shipping_address.id %}
+        {% unless address_registered %}
+          {% if shipping_address.persist_as_customer_shipping_address %}する{% else %}しない{% endif %}
+        {% endunless %}
+        <!-- 商品情報 -->
+        {% for order_item in shipping_address.order_items_and_gift_order_items %}
+          <!-- 商品名 -->
+          {{ order_item.variant.name_with_option_values_presentation }}
+          <!-- 商品個数 -->
+          {{ order_item.id | quantity_of: shipping_address.id }} 個
+        {% endfor %}
     <!-- お届け先情報 --> 
     {% else %}
       <!-- お名前 -->
       {{ order.shipping_address.full_name }}
       <!-- フリガナ -->
       {{ order.shipping_address.full_kana }}
       <!-- 住所 -->
       {{ order.shipping_address.full_address }}
+    {% endif %}
   {% endif %}
 
   <!-- ラッピング -->
   <!-- 配送業者名 -->
-  {% unless order.pickup_store %}
+  {% if order.pickup_store == blank and order.multiple_shipping? == false %}
     {{ order.shipping_carrier.name }}
-  {% endunless%}
+  {% endif %}
     {% else %}
       <a class='btn btn-sm btn-default' href="/shop/order">入力内容を修正する</a>
     {% endif %}
+    {% if order.multiple_shipping? %}
+      {% for shipping_address in order.shipping_addresses %}
+        <input type="hidden" name="order[persist_as_customer_shipping_addresses_attributes][{{ forloop.index0 }}][id]" value="{{ shipping_address.id }}">
+        <input type="hidden" name="order[persist_as_customer_shipping_addresses_attributes][{{ forloop.index0 }}][persist_as_customer_shipping_address]" value="{% if shipping_address.persist_as_customer_shipping_address %}1{% else %}0{% endif %}">
+      {% endfor %}
+    {% endif %}
     <button type='submit'>ご注文完了へ</button>
   </form>

cart > お届け先住所(部分テンプレート)

ec_force/shop/orders/_view_shipping_information.html.liquid
ec_force/shop/orders/_view_shipping_information.html+smartphone.liquid

 <!-- 部分テンプレート(お届け先住所の入力) -->
+<!-- 店頭受取の可否 -->
+{% assign pickup_store = false %}
 {% if pickup_store_is_available == true and delivery_to_address_is_checked == false %}
+  {% assign pickup_store = true %}
+{% endif %}
 
+<!-- 複数のお届け先の可否 -->
+{% assign multiple_shipping = false %}
+{% if multiple_shipping_is_available == true and order_is_multiple_shipping  == true%}
+  {% assign multiple_shipping = true %}
+{% endif %}
 
+{% if pickup_store or multiple_shipping %}
   {% assign own_style = 'display: none;' %}
 {% else %}
   {% assign own_style = '' %}
 {% endif %}
 
 <div id="view-shipping-information" style="{{ own_style }}">
 
 <!-- お届け先情報の選択 -->
       <!-- フリガナ -->
       <label>フリガナ</label>
       {% if shop_form_settings['kana_1_field'] %}
         <input type="text" class="validate[required,custom[katakana]]" id="order_shipping_address_attributes_kana01" name="order[shipping_address_attributes][kana01]" value="{% if order.shipping_address %}{{ order.shipping_address.full_kana }}{% else %}{{ order.customer.shipping_address.full_kana }}{% endif %}">
       {% else %}
         <span>セイ</span>
         <input type="text" class="validate[required,custom[katakana]]" id="order_shipping_address_attributes_kana01" name="order[shipping_address_attributes][kana01]" value="{% if order.shipping_address %}{{ order.shipping_address.kana01 }}{% else %}{{ order.customer.shipping_address.kana01 }}{% endif %}">
         <span>メイ</span>
-        <input type="text" class="validate[required,custom[katakana]]" id="order_shipping_address_attributes_kana02" name="order[shipping_address_attributes][kana02]" value="{% if order.shipping_address %}{{ order.shipping_address.kana01 }}{% else %}{{ order.customer.shipping_address.kana02 }}{% endif %}">
+        <input type="text" class="validate[required,custom[katakana]]" id="order_shipping_address_attributes_kana02" name="order[shipping_address_attributes][kana02]" value="{% if order.shipping_address %}{{ order.shipping_address.kana02 }}{% else %}{{ order.customer.shipping_address.kana02 }}{% endif %}">
       {% endif %}
 
       <!-- 郵便番号 -->
       <!-- 住所2 -->
       <label>{{ shop_form_settings['addr02_label'] }}</label>
       {% if shop_form_settings['addr03'] %}
         <input type="text" class="{% if shop_form_settings['addr02_require'] %}validate[required]{% endif %}" id="order_shipping_address_attributes_addr02" name="order[shipping_address_attributes][addr02]" value="{% if order.shipping_address %}{{ order.shipping_address.addr02 }}{% elsif order.customer.shipping_address %}{{ order.customer.shipping_address.addr02 }}{% endif %}" placeholder="{{ shop_form_settings['addr02_placeholder'] }}">
       {% else %}
         <input type="text" class="{% if shop_form_settings['addr02_require'] %}validate[required]{% endif %}" id="order_shipping_address_attributes_addr02" name="order[shipping_address_attributes][addr02]"
-        value="{% if order.shipping_address %}{{ order.shipping_address.addr02 }}{{ order.shipping_address.addr03 }}{% elsif order.customer.shipping_address %}{{ order.customer.shipping_address.addr02 }}{{ order.customer.shipping_address.addr03 }}{% endif %}" placeholder="{{ shop_form_settings['addr02_placeholder'] }}">
+        value="{% if order.shipping_address %}{{ order.shipping_address.addr02 }}{{ order.shipping_address.addr03 }}{% elsif order.customer.shipping_address %}{{ order.customer.shipping_address.addr02 }}{{ order.customer.shipping_address.addr03 }}{% endif %}" placeholder="{{ shop_form_settings['addr02_placeholder'] | append: shop_form_settings['addr03_placeholder'] }}">
       {% endif %}
 
       <!-- 住所3 -->

cart > ラッピング(部分テンプレート)

ec_force/shop/orders/_view_wrapping_information.html.liquid
ec_force/shop/orders/_view_wrapping_information.html+smartphone.liquid

 <div id='view-wrapping-information'>
   {% if shop_form_settings['wrapping'] %}
 
+    <!-- 複数のお届け先の可否 -->
+    {% assign multiple_shipping = false %}
+    {% if multiple_shipping_is_available == true and order_is_multiple_shipping  == true%}
+      {% assign multiple_shipping = true %}
+    {% endif %}
+    <div id="container-wrapping" style="{% if multiple_shipping %}display:none;{% endif %}">
 
       <!-- ラッピングの選択 -->
       <label>ラッピング</label>
       <select id='wrapping-id' name='order[wrapping_id]'>
         <option value=''>無し</option>
         {% for wrapping in wrappings %}
           {% if wrapping.active %}
             <option value="{{ wrapping.id }}" {% if order.wrapping_id == wrapping.id %}selected{% endif %} data-thumbnail-url="{{ wrapping.thumbnail.url }}">{{ wrapping.name }} {{ wrapping.price | number_to_currency : format: '%n %u' }}</option>
           {% endif %}
         {% endfor %}
       </select>
 
       <!-- ラッピングサムネイル画像 -->
       <div id='wrapping-thumbnail-box' style='display:none;'>
         <img id='wrapping-thumbnail' src=''>
       </div>
+    </div>
 
+    <!-- 複数のお届け先がある場合の注釈 -->
+    <div id="container-wrapping-for-multiple-shipping" style="{% unless multiple_shipping %}display:none;{% endunless %}">
+      ※複数のお届け先を指定する場合は、ラッピングは選択できません
+    </div>
 
  {% endif %} 
 </div>

cart > クーポン(部分テンプレート)

ec_force/shop/orders/_view_coupon.html.liquid
ec_force/shop/orders/_view_coupon.html+smartphone.liquid

   <!-- クーポンの入力 -->
   {% if shop_form_settings['coupon'] %}
 
+    <!-- クーポンコードの取得-->
+    {% assign coupon_code = '' %}
+    {% if order.coupon.code != blank %}
+      {% assign coupon_code = order.coupon.code %}
+    {% elsif order.coupon_code != blank %}
+      {% assign coupon_code = order.coupon_code %}
+    {% endif %}
 
     <label>クーポンコード</label>
-    <input name="order[coupon_code]" value="{{ order.coupon.code }}">
+    <input name="order[coupon_code]" value="{{ coupon_code }}">
 
   {% endif %}

cart > お届けサイクル(部分テンプレート)

ec_force/shop/orders/_view_payment_schedule.html.liquid
ec_force/shop/orders/_view_payment_schedule.html+smartphone.liquid

    <!-- お届け予定時期 -->
    <div id='pre_ordered_delivery_description' style='display:none;'></div>
   </div>
 
+  <!-- 複数のお届け先がある場合の注釈 -->
+  <div id="container_multiple_shipping_caution" style='display:none;'>
+    ※複数のお届け先を指定する場合は、お届け日時は選択できません
+  </div>
 </div>

cart > 複数のお届け先を指定(部分テンプレート)

ec_force/shop/orders/_view_multiple_shipping_option.html.liquid
ec_force/shop/orders/_view_multiple_shipping_option.html+smartphone.liquid

※新規追加ファイルです。

cart > 複数のお届け先情報(部分テンプレート)

ec_force/shop/orders/_view_multiple_shipping_information.html.liquid
ec_force/shop/orders/_view_multiple_shipping_information.html+smartphone.liquid

※新規追加ファイルです。

cart > 複数のお届け先入力フォーム(部分テンプレート)

ec_force/shop/orders/_view_multiple_shipping_information_form_data.html.liquid
ec_force/shop/orders/_view_multiple_shipping_information_form_data.html+smartphone.liquid

※新規追加ファイルです。

cart > 注文情報確認プレビュー(部分テンプレート)

ec_force/shop/orders/_view_payment_preview.html.liquid
ec_force/shop/orders/_view_payment_preview.html+smartphone.liquid

     <div id="shipping_address_table">
       <div>
         <label>お名前</label>
         <span id="shipping_address_full_name"></span>
       </div>
       <div>
         <label>住所</label>
         <span id="shipping_address_full_address"></span>
       </div>
     </div>
 
+    <div id="shipping_addresses_div">
+      {% for index in (0..order.shipping_address_count_limit) %}
+        {% if forloop.last %}
+          {% break %}
+        {% endif %}
+        <div id="section_shipping_addresses_{{ index }}" style="display: none;">
+          お名前<span id="shipping_addresses_{{ index }}_full_name"></span>
+
+          住所<span id="shipping_addresses_{{ index }}_full_address"></span>
+
+          商品情報
+          {% for order_item in order.order_items %}
+            <div id="shipping_addresses_{{ index }}_order_items_info_container_{{ order_item.id }}">
+              {{ order_item.variant.name_with_option_values_presentation }}
+              <span id="shipping_addresses_{{ index }}_order_items_info_{{order_item.id}}_quantity">0</span>
+            </div>
+          {% endfor %}
+
+          <div id="shipping_addresses_{{ index }}_already_registered">
+            お届け先登録
+            <span id="shipping_addresses_{{ index }}_persist_as_customer_shipping_address">する</span>
+            <span id="shipping_addresses_{{ index }}_not_persist_as_customer_shipping_address">しない</span>
+          </div>
+        </div>
+      {% endfor %}
+    </div>
 
     <div>
       <label>商品名</label>
       <label>単価</label>
       <label>個数</label>
       <label>小計</label>
     </div>
     <div>
       {% for item in (1..max_item_length) %}
-        <div id="item_row_{{ forloop.index0 }}" style="display:none;"}>
+        <div id="item_row_{{ forloop.index0 }}" style="display:none;">
           <span id="item_name_with_tax_{{ forloop.index0 }}"></span>
           <span id="item_price_{{ forloop.index0 }}"></span>
           <span id="item_quantity_{{ forloop.index0 }}"></span>
           <span id="item_subtotal_price_{{ forloop.index0 }}"></span>
         </div>
       {% endfor %}
     </div>
     <div>
       <label>小計</label>
       <span id="subtotal"></span>
     </div>

mypage > 購入履歴一覧画面

ec_force/shop/customer/orders/index.html.liquid
ec_force/shop/customer/orders/index.html+smartphone.liquid

-  {% if order.pickup_store %}
+  {% if order.pickup_store != blank %}
     <!-- 受取店舗情報(店舗名)(任意) -->
     {{ order.pickup_store.name }}
     <!-- スマレジ購入店舗(任意) -->
     {{ order.smaregi_order.store_name }}
 
+   {% else %}
+    <!-- 複数のお届け先がある場合のお届け先情報 -->
+    {% if order.multiple_shipping? %}
 
+      {% for shipping_address in order.shipping_addresses %}
+        <!-- お届け先情報(お名前)(任意) -->
+        {{ shipping_address.full_name }}
+        <!-- お届け先情報(フリガナ)(任意) -->
+        {{ shipping_address.full_kana }}
+        <!-- お届け先情報(郵便番号)(任意) -->
+        {{ shipping_address.full_zip }}
+        <!-- お届け先情報(都道府県)(任意) -->
+        {{ shipping_address.prefecture.name }}
+        <!-- お届け先情報(住所)(任意) -->
+        {{ shipping_address.full_address }}
+        <!-- お届け先情報(電話番号)(任意) -->
+        {{ shipping_address.full_tel }}
+        <!-- お届け先情報(FAX 番号)(任意) -->
+        {{ shipping_address.full_fax }}
+        <!-- お届け先情報(配送業者)(任意) -->
+        {{ shipping_address.shipping_carrier.name }}
+      {% endfor %}
 
+    <!-- お届け先情報 -->
     {% else %}
       <!-- お届け先情報(お名前)(任意) -->
       {{ order.shipping_address.full_name }}
       <!-- 配送業者(任意) -->
       {{ order.shipping_carrier.name }}
 
+    {% endif %}
 
   {% endif %}
 
   <!-- 注文商品名(任意) -->

mypage > 購入履歴詳細画面 基本情報

ec_force/shop/customer/orders/show.html.liquid
ec_force/shop/customer/orders/show.html+smartphone.liquid

   <!-- 決済状況 -->
   {{ order.payment.human_state_name }}
 
 
+  <!-- 複数のお届け先ではない場合 -->
+  {% unless order.multiple_shipping? %}
-    {% if order.pickup_store == false and order.smaregi_order? == false %}
+    {% if order.pickup_store == blank and order.smaregi_order? == false %}
       <!-- 配送業者(任意) -->
       {{ order.shipping_carrier.name }}
       <!-- お届け時間(任意) -->
       {% if order.scheduled_delivery_time == blank %}
         指定なし
       {% else %}
         {{ order.scheduled_delivery_time }}
       {% endif %}
 
     {% elsif order.smaregi_order? == true %}
       <!-- スマレジ購入店舗(任意) -->
       {{ order.smaregi_order.store_name }}
     {% endif %}
 
     <!-- 予約販売(任意) -->
     {% if enabled_pre_order and order.unshipped_pre_order? %}
       <!-- 予約日時 -->
       {{ order.pre_ordered_at | date: "%Y/%m/%d %H:%M:%S" }}
     {% else %}
       <!-- 注文日時 -->
       {{ order.completed_at | date: "%Y/%m/%d %H:%M:%S" }}
     {% endif %}
 
+  {% endunless %}
 
-  {% if order.pickup_store %}
+  {% if order.pickup_store != blank %}
     <!-- 受取店舗情報(店舗名)(任意) -->
     {{ order.pickup_store.name }}
     {{ order.pickup_store.business_hours }}
 
   {% elsif order.smaregi_order? == false %}
 
+    <!-- 複数のお届け先がある場合のお届け先情報 -->
+    {% if order.multiple_shipping? %}
+
+      {% for shipping_address in order.shipping_addresses %}
+        <!-- お届け先情報(お名前)(任意) -->
+        {{ shipping_address.full_name }}
+        <!-- お届け先情報(フリガナ)(任意) -->
+        {{ shipping_address.full_kana }}
+        <!-- お届け先情報(郵便番号)(任意) -->
+        {{ shipping_address.full_zip }}
+        <!-- お届け先情報(都道府県)(任意) -->
+        {{ shipping_address.prefecture.name }}
+        <!-- お届け先情報(住所)(任意) -->
+        {{ shipping_address.full_address }}
+        <!-- お届け先情報(電話番号)(任意) -->
+        {{ shipping_address.full_tel }}
+        <!-- お届け先情報(FAX番号)(任意) -->
+        {{ shipping_address.full_fax }}
+      {% endfor %}
+
+    {% else %}
       <!-- お届け先情報(お名前)(任意) -->
       {{ order.shipping_address.full_name }}
       <!-- お届け先情報(電話番号)(任意) -->
       {{ order.shipping_address.full_tel }}
       <!-- お届け先情報(FAX番号)(任意) -->
       {{ order.shipping_address.full_fax }}
 
+    {% endif %}
 
   {% endif %}
 
   <!-- カスタム項目 -->

mypage > 購入履歴詳細画面お届け先情報

ec_force/shop/customer/orders/shipping_addresses/show.html.liquid ec_force/shop/customer/orders/shipping_addresses/show.html+smartphone.liquid

 <!-- (PCの場合)購入履歴詳細タブ(任意) -->
 {% assign template = 'shop/customer/orders/shipping_address' %}
 {% include 'ec_force/shop/customer/orders/shared/nav.html' %}
 
 <!-- (SPの場合)購入履歴詳細タブ(任意) -->
 {% assign template = 'shop/customer/orders/shipping_address' %}
 {% include 'ec_force/shop/customer/orders/shared/nav.html+smartphone' %}
 
+{% unless order.multiple_shipping? %}
+  <!-- 複数のお届け先ではない場合 -->
 
   <!-- 購入履歴詳細画面 - お届け先情報コンテナ -->
   <div id='shipping-address-view'>
     <!-- FAX 番号(任意) -->
     {{ order.shipping_address.full_fax }}
 
     <!-- 編集リンク -->
     {% unless order.state == 'shipped' or order.state == 'delivered' %}
       <a href="/shop/customer/orders/{{ order.number }}/shipping_address/edit">編集</a>
     {% endunless %}
 
     <!-- 戻るリンク -->
     <a href="/shop/customer/orders/{{ order.number }}">戻る</a>
 
   </div>
+{% else %}
+  <!-- 複数のお届け先の場合 -->
+  <div id='shipping-addresses-view'>
+
+    {% for shipping_address in order.shipping_addresses %}
+      <!-- お名前 -->
+      {{ shipping_address.full_name }}
+      <!-- お名前(カナ) -->
+      {{ shipping_address.full_kana }}
+      <!-- 郵便番号 -->
+      {{ shipping_address.full_zip }}
+      <!-- 住所 -->
+      {{ shipping_address.full_address }}
+      <!-- 電話番号 -->
+      {{ shipping_address.full_tel }}
+      <!-- FAX 番号(任意) -->
+      {{ shipping_address.full_fax }}
+      <!-- 配送業者 -->
+      {{ shipping_address.shipping_carrier.name }}
+      <!-- 配送伝票番号 -->
+      {% if shipping_address.tracking_url == blank %}
+        {{ shipping_address.shipping_slip }}
+      {% else %}
+        <a href="{{ shipping_address.tracking_url }}" target="_blank">{{ shipping_address.shipping_slip }}</a>
+      {% endif %}
+      {% if enabled_pre_order and order.unshipped_pre_order? %}
+        <!-- お届け予定時期 -->
+        {{ order.pre_ordered_delivery_description_snapshot }}
+      {% else %}
+        <!-- 発送予定日 -->
+        {{ shipping_address.scheduled_to_be_shipped_at | date: '%Y/%m/%d %H:%M:%S' }}
+        <!-- 発送完了日 -->
+        {{ shipping_address.shipped_at | date: '%Y/%m/%d %H:%M:%S' }}
+        <!-- 配送予定日 -->
+        {{ shipping_address.scheduled_to_be_delivered_at | date: '%Y/%m/%d %H:%M:%S' }}
+      {% endif %}
+      <!-- お届け時間 -->
+      {% if shipping_address.scheduled_delivery_time == blank %}
+        {{ '指定なし' }}
+      {% else %}
+        {{ shipping_address.scheduled_delivery_time }}
+      {% endif %}
+
+      <!-- 商品情報 -->
+      {% for order_item in shipping_address.order_items_and_gift_order_items %}
+        <!-- 商品名 -->
+        {{ order_item.variant.name_with_option_values_presentation }}
+          (
+          <!-- 商品個数 -->
+          {{ order_item.id | quantity_of: shipping_address.id }} 個
+          )
+      {% endfor %}
+
+      {% unless order.state == 'shipped' or order.state == 'delivered' %}
+        <a href="/shop/customer/orders/{{ order.number }}/shipping_address/edit?shipping_address_id={{ shipping_address.id }}">編集</a>
+      {% endunless %}
+      <a href="/shop/customer/orders/{{ order.number }}">戻る</a>
+
+    {% endfor %}
+  </div>
+{% endunless %}

mypage > 購入履歴詳細画面 お届け先情報の編集

ec_force/shop/customer/orders/shipping_addresses/edit.html.liquid
ec_force/shop/customer/orders/shipping_addresses/edit.html+smartphone.liquid

 <div id="shipping-address-edit-view">
 
   <!-- 編集フォーム -->
-  <form novalidate="novalidate" action="/shop/customer/orders/{{ order.number }}/shipping_address" accept-charset="UTF-8" method="post">
+  <form novalidate="novalidate" id="edit_address_order_shipping_{{ shipping_address.id }}" action="/shop/customer/orders/{{ order.number }}/shipping_address?shipping_address_id={{ shipping_address.id }}" accept-charset="UTF-8" method="post">
     <input name="utf8" type="hidden" value="✓">
     <input type="hidden" name="_method" value="put">
 
     <!-- フラッシュメッセージ -->
     {{ 'notice' | flash: 'alert alert-success', 'text' }}
     {{ 'alert' | flash: 'alert alert-danger', 'text' }}
     {{ 'error' | flash: 'alert alert-danger', 'text' }}
 
+    {% if order.multiple_shipping? %}
+      <!-- 複数のお届け先の場合 -->
+      <input type="hidden" value="{{ shipping_address.id }}" name="address_order_shipping[id]" id="address_order_shipping_id">
+    {% endif %}
 
     <!-- お名前 -->
     <label for="address_order_shipping_name01">お名前</label>
     {% if shop_form_settings['name_1_field'] %}
-      <input class="validate[required]" type="text" value="{{ order.shipping_address.full_name }}" name="address_order_shipping[name01]" autocomplete="name" id="address_order_shipping_name01">
+      <input class="validate[required]" type="text" value="{{ shipping_address.full_name }}" name="address_order_shipping[name01]" autocomplete="name" id="address_order_shipping_name01">
     {% else %}
-      <input class="validate[required]" type="text" value="{{ order.shipping_address.name01 }}" name="address_order_shipping[name01]" autocomplete="family-name" id="address_order_shipping_name01">
-      <input class="validate[required]" type="text" value="{{ order.shipping_address.name02 }}" name="address_order_shipping[name02]" autocomplete="given-name" id="address_order_shipping_name02">
+      <input class="validate[required]" type="text" value="{{ shipping_address.name01 }}" name="address_order_shipping[name01]" autocomplete="family-name" id="address_order_shipping_name01">
+      <input class="validate[required]" type="text" value="{{ shipping_address.name02 }}" name="address_order_shipping[name02]" autocomplete="given-name" id="address_order_shipping_name02">
     {% endif %}
 
     <!-- フリガナ -->
     <label for="address_order_shipping_kana01">フリガナ</label>
     {% if shop_form_settings['kana_1_field'] %}
-      <input class="validate[required, custom[katakana]]" type="text" value="{{ order.shipping_address.full_kana }}" name="address_order_shipping[kana01]" id="address_order_shipping_kana01">
+      <input class="validate[required, custom[katakana]]" type="text" value="{{ shipping_address.full_kana }}" name="address_order_shipping[kana01]" id="address_order_shipping_kana01">
     {% else %}
-      <input class="validate[required, custom[katakana]]" type="text" value="{{ order.shipping_address.kana01 }}" name="address_order_shipping[kana01]" id="address_order_shipping_kana01">
-      <input class="validate[required, custom[katakana]]" type="text" value="{{ order.shipping_address.kana02 }}" name="address_order_shipping[kana02]" id="address_order_shipping_kana02">
+      <input class="validate[required, custom[katakana]]" type="text" value="{{ shipping_address.kana01 }}" name="address_order_shipping[kana01]" id="address_order_shipping_kana01">
+      <input class="validate[required, custom[katakana]]" type="text" value="{{ shipping_address.kana02 }}" name="address_order_shipping[kana02]" id="address_order_shipping_kana02">
     {% endif %}
 
     <!-- 郵便番号 -->
     <label for="address_order_shipping_zip01">郵便番号</label>
     {% if shop_form_settings['zip_1_field'] %}
       <span>〒</span>
-      <input class="validate[required,custom[integer],minSize[7]]" type="tel" value="{{ order.shipping_address.full_zip }}" name="address_order_shipping[zip01]" autocomplete="postal-code" id="address_order_shipping_zip01" maxlength="7">
+      <input class="validate[required,custom[integer],minSize[7]]" type="tel" value="{{ shipping_address.full_zip }}" name="address_order_shipping[zip01]" autocomplete="postal-code" id="address_order_shipping_zip01" maxlength="7">
     {% else %}
       <span>〒</span>
-      <input class="validate[required,custom[integer],minSize[3]]" type="tel" value="{{ order.shipping_address.zip01 }}" name="address_order_shipping[zip01]" autocomplete="postal-code" id="address_order_shipping_zip01" maxlength="3">
+      <input class="validate[required,custom[integer],minSize[3]]" type="tel" value="{{ shipping_address.zip01 }}" name="address_order_shipping[zip01]" autocomplete="postal-code" id="address_order_shipping_zip01" maxlength="3">
       <span>−</span>
-      <input class="validate[required,custom[integer],minSize[4]]" type="tel" value="{{ order.shipping_address.zip02 }}" name="address_order_shipping[zip02]" autocomplete="none" id="address_order_shipping_zip02" maxlength="4">
+      <input class="validate[required,custom[integer],minSize[4]]" type="tel" value="{{ shipping_address.zip02 }}" name="address_order_shipping[zip02]" autocomplete="none" id="address_order_shipping_zip02" maxlength="4">
     {% endif %}
 
     <!-- 都道府県 -->
     <label for="address_order_shipping_prefecture_name">都道府県</label>
     <select class="validate[required]" name="address_order_shipping[prefecture_name]" id="address_order_shipping_prefecture_name">
       <option value="">選択してください</option>
       {% for prefecture in prefectures %}
-        <option value='{{ prefecture.name }}' {% if order.shipping_address.prefecture.name == prefecture.name %}selected{% endif %}>{{ prefecture.name }}</option>
+        <option value='{{ prefecture.name }}' {% if shipping_address.prefecture.name == prefecture.name %}selected{% endif %}>{{ prefecture.name }}</option>
       {% endfor %}
     </select>
 
     <!-- 住所 -->
     <label for="address_order_shipping_addr01">住所</label>
-    <input class="validate[required]" type="text" value="{{ order.shipping_address.addr01 }}" name="address_order_shipping[addr01]" id="address_order_shipping_addr01">
+    <input class="validate[required]" type="text" value="{{ shipping_address.addr01 }}" name="address_order_shipping[addr01]" id="address_order_shipping_addr01">
     {% if shop_form_settings['addr03'] %}
-      <input class="validate[required]" type="text" value="{{ order.shipping_address.addr02 }}" name="address_order_shipping[addr02]" id="address_order_shipping_addr02">
-      <input type="text" value="{{ order.shipping_address.addr03 }}" name="address_order_shipping[addr03]" id="address_order_shipping_addr03">
+      <input class="validate[required]" type="text" value="{{ shipping_address.addr02 }}" name="address_order_shipping[addr02]" id="address_order_shipping_addr02">
+      <input type="text" value="{{ shipping_address.addr03 }}" name="address_order_shipping[addr03]" id="address_order_shipping_addr03">
     {% else %}
-      <input class="validate[required]" type="text" value="{{ order.shipping_address.addr02 }}{{ order.shipping_address.addr03 }}" name="address_order_shipping[addr02]" id="address_order_shipping_addr02">
+      <input class="validate[required]" type="text" value="{{ shipping_address.addr02 }}{{ shipping_address.addr03 }}" name="address_order_shipping[addr02]" id="address_order_shipping_addr02">
     {% endif %}
 
     <!-- 電話番号 -->
     <label for="address_order_shipping_tel01">電話番号</label>
     {% if shop_form_settings['tel_1_field'] %}
-      <input class="validate[required,custom[integer]]" type="tel" value="{{ order.shipping_address.full_tel }}" name="address_order_shipping[tel01]" autocomplete="tel" id="address_order_shipping_tel01" maxlength="12">
+      <input class="validate[required,custom[integer]]" type="tel" value="{{ shipping_address.full_tel }}" name="address_order_shipping[tel01]" autocomplete="tel" id="address_order_shipping_tel01" maxlength="12">
     {% else %}
-      <input class="validate[required,custom[integer]]" type="tel" value="{{ order.shipping_address.tel01 }}" name="address_order_shipping[tel01]" autocomplete="none" id="address_order_shipping_tel01" maxlength="5">
+      <input class="validate[required,custom[integer]]" type="tel" value="{{ shipping_address.tel01 }}" name="address_order_shipping[tel01]" autocomplete="none" id="address_order_shipping_tel01" maxlength="5">
       <span>−</span>
-      <input class="validate[required,custom[integer]]" type="tel" value="{{ order.shipping_address.tel02 }}" name="address_order_shipping[tel02]" autocomplete="none" id="address_order_shipping_tel02" maxlength="4">
+      <input class="validate[required,custom[integer]]" type="tel" value="{{ shipping_address.tel02 }}" name="address_order_shipping[tel02]" autocomplete="none" id="address_order_shipping_tel02" maxlength="4">
       <span>−</span>
-      <input class="validate[required,custom[integer]]" type="tel" value="{{ order.shipping_address.tel03 }}" name="address_order_shipping[tel03]" autocomplete="none" id="address_order_shipping_tel03" maxlength="4">
+      <input class="validate[required,custom[integer]]" type="tel" value="{{ shipping_address.tel03 }}" name="address_order_shipping[tel03]" autocomplete="none" id="address_order_shipping_tel03" maxlength="4">
     {% endif %}
 
     <!-- FAX番号 -->
     {% if shop_form_settings['fax'] %}
       <label for="address_order_shipping_fax01">FAX番号</label>
       {% if shop_form_settings['fax_1_field'] %}
-        <input type="tel" value="{{ order.shipping_address.full_fax }}" name="address_order_shipping[fax01]" id="address_order_shipping_fax01">
+        <input type="tel" value="{{ shipping_address.full_fax }}" name="address_order_shipping[fax01]" id="address_order_shipping_fax01">
       {% else %}
-        <input type="tel" value="{{ order.shipping_address.fax01 }}" name="address_order_shipping[fax01]" id="address_order_shipping_fax01">
+        <input type="tel" value="{{ shipping_address.fax01 }}" name="address_order_shipping[fax01]" id="address_order_shipping_fax01">
         <span>−</span>
-        <input type="tel" value="{{ order.shipping_address.fax02 }}" name="address_order_shipping[fax02]" id="address_order_shipping_fax02">
+        <input type="tel" value="{{ shipping_address.fax02 }}" name="address_order_shipping[fax02]" id="address_order_shipping_fax02">
         <span>−</span>
-        <input type="tel" value="{{ order.shipping_address.fax03 }}" name="address_order_shipping[fax03]" id="address_order_shipping_fax03">
+        <input type="tel" value="{{ shipping_address.fax03 }}" name="address_order_shipping[fax03]" id="address_order_shipping_fax03">
       {% endif %}
     {% endif %}
 
     <!-- 会社名 -->
     {% if shop_form_settings['company'] %}
       <label for="address_order_shipping_company_name">会社名</label>
-      <input type="text" value="{{ order.shipping_address.company_name }}" name="address_order_shipping[company_name]" autocomplete="organization" id="address_order_shipping_company_name">
+      <input type="text" value="{{ shipping_address.company_name }}" name="address_order_shipping[company_name]" autocomplete="organization" id="address_order_shipping_company_name">
     {% endif %}
 
     <!-- 送信リンク -->
     <input type="submit" name="commit" value="保存" data-disable-with="保存中...">
     <!-- 戻るリンク -->
     <a href="/shop/customer/orders/{{ order.number }}">戻る</a>
   </form>
 </div>

mypage > 購入履歴詳細タブ(部分テンプレート)

ec_force/shop/customer/orders/shared/_nav.html.liquid
ec_force/shop/customer/orders/shared/_nav.html+smartphone.liquid

 <a {% unless template == 'shop/customer/orders' %}href="/shop/customer/orders/{{ order.number }}"{% endunless %}>基本情報</a>
-{% if order.pickup_store %}
+{% if order.pickup_store != blank %}
   <a {% unless template == 'shop/customer/orders/pickup_store' %}href="/shop/customer/orders/{{ order.number }}/pickup_store"{% endunless %}>受取店舗</a>
 {% elsif order.smaregi_order? == false %}
   <a {% unless template == 'shop/customer/orders/shipping_address' %}href="/shop/customer/orders/{{ order.number }}/shipping_address"{% endunless %}>お届け先住所</a>
 {% endif %}

キャンペーン用のバッジを設定・表示する機能の実装

「設定 > キャンペーン > キャンペーン管理」で設定したキャンペーンバッチ(セール中バッジ / 特典バッジ / カスタムバッジ)を、フロントで表示するために必要な更新です。
機能や設定の詳細は「ecforce FAQ: キャンペーン機能 (opens in a new tab)」をご確認ください。

※キャンペーンはオプション機能です。

pages > トップページ

ec_force/shop/base/index.html.liquid
ec_force/shop/base/index.html+smartphone.liquid

     <!-- イチオシ商品バッジ(任意) -->
-    {% if pre_order_badge_flg_hash[hot_product.master.id] or delivery_group_badge_flg_hash[hot_product.id] or concurrent_purchase_group_badge_flg_hash[hot_product.id] %}
+    {% if pre_order_badge_flg_hash[hot_product.master.id] or delivery_group_badge_flg_hash[hot_product.id] or concurrent_purchase_group_badge_flg_hash[hot_product.id] or campaign_badge_flg_hash[hot_product.id] %}
     <!-- イチオシ商品予約マーク(任意) -->
       <!-- イチオシ商品同時購入グループバッジ(任意) -->
       <!-- 「バッジ表示名」を表示したい場合、hot_product.concurrent_purchase_group_names を hot_product.concurrent_purchase_badge_names に修正してください。 -->
       {% for concurrent_purchase_group_name in hot_product.concurrent_purchase_group_names %}
         {{ concurrent_purchase_group_name }}
       {% endfor %}
+      <!-- キャンペーンバッジ(任意) -->
+      {% assign badges = campaign_badge_flg_hash[hot_product.id] | liquid_render_badges %}
+      {% for render_badge in badges %}
+        {{ render_badge | hash: 'value' }}
+      {% endfor %}
     {% endif %}
 
     <!-- イチオシ商品説明(任意) -->
       <!-- 新着商品バッジ(任意) -->
-      {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] %}
+      {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] or campaign_badge_flg_hash[product.id] %}
         <!-- 新着商品予約マーク(任意) -->
         <!-- 新着商品同時購入グループバッジ(任意) -->
         <!-- 「バッジ表示名」を表示したい場合、product.concurrent_purchase_group_names を product.concurrent_purchase_badge_names に修正してください。 -->
         {% for concurrent_purchase_group_name in product.concurrent_purchase_group_names %}
           {{ concurrent_purchase_group_name }}
         {% endfor %}
+        <!-- キャンペーンバッジ(任意) -->
+        {% assign badges = campaign_badge_flg_hash[product.id] | liquid_render_badges %}
+        {% for render_badge in badges %}
+          {{ render_badge | hash: 'value' }}
+        {% endfor %}
       {% endif %}
 
       <!-- 新着商品説明(任意) -->
       <!-- セール商品バッジ(任意) -->
-      {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] %}
+      {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] or campaign_badge_flg_hash[product.id] %}
         <!-- セール商品予約マーク(任意) -->
         <!-- セール商品同時購入グループバッジ(任意) -->
         <!-- 「バッジ表示名」を表示したい場合、product.concurrent_purchase_group_names を product.concurrent_purchase_badge_names に修正してください。 -->
         {% for concurrent_purchase_group_name in product.concurrent_purchase_group_names %}
           {{ concurrent_purchase_group_name }}
         {% endfor %}
+        <!-- キャンペーンバッジ(任意) -->
+        {% assign badges = campaign_badge_flg_hash[product.id] | liquid_render_badges %}
+        {% for render_badge in badges %}
+          {{ render_badge | hash: 'value' }}
+        {% endfor %}
       {% endif %}
 
       <!-- セール商品説明(任意) -->
       <!-- ランキング商品バッジ(任意) -->
-      {% if pre_order_badge_flg_hash[sale_ranking.product.master.id] or delivery_group_badge_flg_hash[sale_ranking.product.id] or concurrent_purchase_group_badge_flg_hash[sale_ranking.product.id] %}
+      {% if pre_order_badge_flg_hash[sale_ranking.product.master.id] or delivery_group_badge_flg_hash[sale_ranking.product.id] or concurrent_purchase_group_badge_flg_hash[sale_ranking.product.id] or campaign_badge_flg_hash[sale_ranking.product.id] %}
         <!-- ランキング商品予約マーク(任意) -->
         <!-- ランキング商品同時購入グループバッジ(任意) -->
         <!-- 「バッジ表示名」を表示したい場合、sale_ranking.product.concurrent_purchase_group_names を sale_ranking.product.concurrent_purchase_badge_names に修正してください。 -->
         {% for concurrent_purchase_group_name in sale_ranking.product.concurrent_purchase_group_names %}
           {{ concurrent_purchase_group_name }}
         {% endfor %}
+        <!-- キャンペーンバッジ(任意) -->
+        {% assign badges = campaign_badge_flg_hash[sale_ranking.product.id] | liquid_render_badges %}
+        {% for render_badge in badges %}
+          {{ render_badge | hash: 'value' }}
+        {% endfor %}
       {% endif %}
 
       <!-- ランキング商品説明(任意) -->

cart > カート画面

ec_force/shop/carts/show.html.liquid
ec_force/shop/carts/show.html+smartphone.liquid

       <!-- カート内商品バッジ(任意) -->
-      {% if pre_order_badge_flg_hash[order_item.variant.id] or delivery_group_badge_flg_hash[order_item.product.id] or concurrent_purchase_group_badge_flg_hash[order_item.product.id] %}
+      {% if pre_order_badge_flg_hash[order_item.variant.id] or delivery_group_badge_flg_hash[order_item.product.id] or concurrent_purchase_group_badge_flg_hash[order_item.product.id] or campaign_badge_flg_hash[order_item.product.id] %}
         <!-- 商品予約マーク(任意) -->
         <!-- 同時購入グループバッジ(任意) -->
         <!-- 「バッジ表示名」を表示したい場合、order_item.product.concurrent_purchase_group_names を order_item.product.concurrent_purchase_badge_names に修正してください。 -->
         {% for concurrent_purchase_group_name in order_item.product.concurrent_purchase_group_names %}
           {{ concurrent_purchase_group_name }}
         {% endfor %}
+        <!-- キャンペーンバッジ(任意) -->
+        {% assign badges = campaign_badge_flg_hash[order_item.product.id] | liquid_render_badges %}
+        {% for render_badge in badges %}
+          {{ render_badge | hash: 'value' }}
+        {% endfor %}
       {% endif %}
 
       <!-- 規格 -->
         <!-- 関連商品バッジ(任意) -->
-        {% if pre_order_badge_flg_hash[related_product.master.id] or delivery_group_badge_flg_hash[related_product.id] or concurrent_purchase_group_badge_flg_hash[related_product.id] %}
+        {% if pre_order_badge_flg_hash[related_product.master.id] or delivery_group_badge_flg_hash[related_product.id] or concurrent_purchase_group_badge_flg_hash[related_product.id] or campaign_badge_flg_hash_without_cart[related_product.id] %}
           <!-- 商品予約マーク(任意) -->
           <!-- 同時購入グループバッジ(任意) -->
           <!-- 「バッジ表示名」を表示したい場合、related_product.concurrent_purchase_group_names を related_product.concurrent_purchase_badge_names に修正してください。 -->
           {% for concurrent_purchase_group_name in related_product.concurrent_purchase_group_names %}
             {{ concurrent_purchase_group_name }}
           {% endfor %}
+          <!-- キャンペーンバッジ(任意) -->
+          {% assign badges = campaign_badge_flg_hash_without_cart[related_product.id] | liquid_render_badges %}
+          {% for render_badge in badges %}
+            {{ render_badge | hash: 'value' }}
+          {% endfor %}
         {% endif %}
 
         <!-- 販売価格 -->
       <!-- 閲覧履歴商品バッジ(任意) -->
-      {% if pre_order_badge_flg_hash[browsing_history.master.id] or delivery_group_badge_flg_hash[browsing_history.id] or concurrent_purchase_group_badge_flg_hash[browsing_history.id] %}
+      {% if pre_order_badge_flg_hash[browsing_history.master.id] or delivery_group_badge_flg_hash[browsing_history.id] or concurrent_purchase_group_badge_flg_hash[browsing_history.id] or campaign_badge_flg_hash_without_cart[browsing_history.id] %}
         <!-- 商品予約マーク(任意) -->
         <!-- 同時購入グループバッジ(任意) -->
         <!-- 「バッジ表示名」を表示したい場合、browsing_history.concurrent_purchase_group_names を browsing_history.concurrent_purchase_badge_names に修正してください。 -->
         {% for concurrent_purchase_group_name in browsing_history.concurrent_purchase_group_names %}
           {{ concurrent_purchase_group_name }}
         {% endfor %}
+        <!-- キャンペーンバッジ(任意) -->
+        {% assign badges = campaign_badge_flg_hash_without_cart[browsing_history.id] | liquid_render_badges %}
+        {% for render_badge in badges %}
+          {{ render_badge | hash: 'value' }}
+        {% endfor %}
       {% endif %}
 
       <!-- 販売価格(任意) -->

cart > 注文情報確認画面

ec_force/shop/orders/confirm.html.liquid
ec_force/shop/orders/confirm.html+smartphone.liquid

     <!-- 付与予定ポイント(任意) -->
     {% if base_info.use_point? and customer_signed_in %}
+      {% if order.grant_plan_campaign_point == 0 %}
+        {{ order.grant_plan_point }}
+      {% else %}
         {{ order.grant_plan_point }}
+        {{ order.grant_plan_general_point }}
+        {{ order.grant_plan_campaign_point }}
+      {% endif %}
     {% endif %}
 
     <!-- 注意喚起文 -->

cart > 注文情報確認プレビュー(部分テンプレート)

ec_force/shop/orders/_view_payment_preview.html.liquid
ec_force/shop/orders/_view_payment_preview.html+smartphone.liquid

     <div>
       {% if base_info.use_point? && guest_flag %}
-        <label>付与予定ポイント</label>
+        <label id="grant_plan_point_text">付与予定ポイント</label>
+        <label id="grant_plan_total_point_text" style="display: none;">付与予定ポイント(合計)</label>
         <span id="grant_plan_point"></span>
+        <label id="grant_plan_general_point_text" style="display: none;">付与予定ポイント(通常)</label>
+        <span id="grant_plan_general_point" style="display: none;"></span>
+        <label id="grant_plan_campaign_point_text" style="display: none;"></label>
+        <span id="grant_plan_campaign_point" style="display: none;"></span>
       {% endif %}
     </div>

cart > サンクスクロスセル(部分テンプレート)

ec_force/shop/orders/_form_cv_xsell.html.liquid
ec_force/shop/orders/_form_cv_xsell.html+smartphone.liquid

                 <img class="cv_xsell_product_img" src="{{ thumbnail_url }}" data-product-id="{{ cv_xsell_product.id }}"></img>
                 {{ cv_xsell_product.name | truncate: 35 }}
+                <!-- 商品バッジ(任意) -->
+                {% if campaign_badge_flg_offer_hash[cv_xsell_product.id] %}
+                  <!-- キャンペーンバッジ(任意) -->
+                  {% assign badges = campaign_badge_flg_offer_hash[cv_xsell_product.id] | liquid_render_badges %}
+                  {% for render_badge in badges %}
+                    {{ render_badge | hash: 'value' }}
+                  {% endfor %}
+                {% endif %}
                 販売価格:{{ cv_xsell_product.initial_price | number_to_currency }}(税抜)
                 {{ cv_xsell_product.description | truncate: 40 }}
                 <!-- 「バッジ表示名」を表示したい場合、cv_xsell_product.concurrent_purchase_group_names を cv_xsell_product.concurrent_purchase_badge_names に修正してください。 -->
                 {% for concurrent_purchase_group_name in cv_xsell_product.concurrent_purchase_group_names %}
                   {% assign concurrent_purchase_group_names = concurrent_purchase_group_names | append: concurrent_purchase_group_name | append: "," %}
                 {% endfor %}
+                {% assign badges = campaign_badge_flg_offer_hash[cv_xsell_product.id] | liquid_render_badges %}
+                {% assign campaign_badge_types = '' %}
+                {% assign campaign_badge_values = '' %}
+                {% for render_badge in badges %}
+                  {% assign type = render_badge | hash: 'type' %}
+                  {% assign value = render_badge | hash: 'value' %}
+                  {% if campaign_badge_types == '' %}
+                    {% assign campaign_badge_types = campaign_badge_types | append: type %}
+                    {% assign campaign_badge_values = campaign_badge_values | append: value %}
+                  {% else %}
+                    {% assign campaign_badge_types = campaign_badge_types | append: ',' | append: type %}
+                    {% assign campaign_badge_values = campaign_badge_values | append: ',' | append: value %}
+                  {% endif %}
+                {% endfor %}
                 <div>
                   <input type="hidden" name="product-name" value="{{ cv_xsell_product.name | escape }}">
                   <input type="hidden" name="product_description" value="{{ cv_xsell_product.parsed_description | simple_format }}">
                   <input type="hidden" name="is_pre_order" value="{% if enabled_pre_order and cv_xsell_product.master.pre_order.is_pre_order? %}1{% else %}0{% endif %}">
                   <input type="hidden" name="pre_ordered_display_mark" value="{% if pre_order_settings.display_mark %}1{% else %}0{% endif %}">
                   <input type="hidden" name="pre_ordered_delivery_description_modal" value="{{ cv_xsell_product.master.pre_order.pre_ordered_delivery_description | escape }}">
                   <input type="hidden" name="pre_ordered_notes" value="{{ pre_order_settings.notes | escape }}">
                   <input type="hidden" name="valid_pre_order" value="{% if cv_xsell_product.master.pre_order.within_pre_order_period? == false %}0{% endif %}1">
                   <input type="hidden" name="delivery_group_names" value="{{ delivery_group_names }} ">
                   <input type="hidden" name="concurrent_purchase_group_names" value="{{ concurrent_purchase_group_names }} ">
+                  <input type="hidden" name="campaign_badges_type" value="{{ campaign_badge_types }}">
+                  <input type="hidden" name="campaign_badges_value" value="{{ campaign_badge_values }}">
                   <input type="hidden" name="list-price" value="{{ cv_xsell_product.master.list_price | number_to_currency }}">
                   <input type="hidden" name="list-price-include-tax" value="(税込価格 {{ cv_xsell_product.master.list_price_include_tax | number_to_currency }})">
                   <input type="hidden" name="sales-price" value="{{ cv_xsell_product.initial_price | number_to_currency }}">
           <!-- 同時購入グループバッジ(任意) -->
           <span class='concurrent-purchase-group-badge-zone'></span>
+          <!-- キャンペーンバッジ(任意) -->
+          <div class="campaign-badge-zone"></div>
         </div>
 
         <!-- 予約関連情報(任意) -->

product > 商品一覧画面

ec_force/shop/products/index.html.liquid
ec_force/shop/products/index.html+smartphone.liquid

     <!-- 商品名 -->
     <a href="/shop/products/{{ product.master.sku }}">{{ product.name }}</a>
 
     <!-- 商品バッジ(任意) -->
-    {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] %}
+    {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] or campaign_badge_flg_hash[product.id] %}
       <!-- 商品予約マーク(任意) -->
       {% if pre_order_badge_flg_hash[product.master.id] %}
         予約商品
       {% endif %}
       <!-- 配送温度帯ラベル(任意) -->
       {% for delivery_group_name in product.delivery_group_names %}
         {{ delivery_group_name }}
       {% endfor %}
       <!-- 同時購入グループバッジ(任意) -->
       <!-- 「バッジ表示名」を表示したい場合、product.concurrent_purchase_group_names を product.concurrent_purchase_badge_names に修正してください。 -->
       {% for concurrent_purchase_group_name in product.concurrent_purchase_group_names %}
         {{ concurrent_purchase_group_name }}
       {% endfor %}
+      <!-- キャンペーンバッジ(任意) -->
+      {% assign badges = campaign_badge_flg_hash[product.id] | liquid_render_badges %}
+      {% for render_badge in badges %}
+        {{ render_badge | hash: 'value' }}
+      {% endfor %}
     {% endif %}
 
     <!-- 販売価格(任意) -->

product > 商品詳細画面

ec_force/shop/products/show.html.liquid
ec_force/shop/products/show.html+smartphone.liquid

   <!-- 商品詳細(任意) -->
   {{ product.parsed_description }}
 
   <!-- 商品バッジ(任意) -->
-  {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] %}
+  {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] or campaign_badge_flg_hash[product.id] %}
     <!-- 商品予約マーク(任意) -->
     {% if pre_order_badge_flg_hash[product.master.id] %}
       予約商品
     {% endif %}
     <!-- 配送温度帯ラベル(任意) -->
     {% for delivery_group_name in product.delivery_group_names %}
       {{ delivery_group_name }}
     {% endfor %}
     <!-- 同時購入グループバッジ(任意) -->
     <!-- 「バッジ表示名」を表示したい場合、product.concurrent_purchase_group_names を product.concurrent_purchase_badge_names に修正してください。 -->
     {% for concurrent_purchase_group_name in product.concurrent_purchase_group_names %}
       {{ concurrent_purchase_group_name }}
     {% endfor %}
+    <!-- キャンペーンバッジ(任意) -->
+    {% assign badges = campaign_badge_flg_hash[product.id] | liquid_render_badges %}
+    {% for render_badge in badges %}
+      {{ render_badge | hash: 'value' }}
+    {% endfor %}
   {% endif %}
 
   <!-- 予約関連情報(任意) -->
       <!-- 関連商品名 -->
       <a href="/shop/products/{{ related_product.master.sku }}">{{ related_product.name | truncate: 35 }}</a>
 
       <!-- 商品バッジ(任意) -->
-      {% if pre_order_badge_flg_hash[related_product.master.id] or delivery_group_badge_flg_hash[related_product.id] or concurrent_purchase_group_badge_flg_hash[related_product.id] %}
+      {% if pre_order_badge_flg_hash[related_product.master.id] or delivery_group_badge_flg_hash[related_product.id] or concurrent_purchase_group_badge_flg_hash[related_product.id] or campaign_badge_flg_hash[related_product.id] %}
         <!-- 商品予約マーク(任意) -->
         {% if pre_order_badge_flg_hash[related_product.master.id] %}
           予約商品
         {% endif %}
         <!-- 配送温度帯ラベル(任意) -->
         {% for delivery_group_name in related_product.delivery_group_names %}
           {{ delivery_group_name }}
         {% endfor %}
         <!-- 同時購入グループバッジ(任意) -->
         <!-- 「バッジ表示名」を表示したい場合、related_product.concurrent_purchase_group_names を related_product.concurrent_purchase_badge_names に修正してください。 -->
         {% for concurrent_purchase_group_name in related_product.concurrent_purchase_group_names %}
           {{ concurrent_purchase_group_name }}
         {% endfor %}
+        <!-- キャンペーンバッジ(任意) -->
+        {% assign badges = campaign_badge_flg_hash[related_product.id] | liquid_render_badges %}
+        {% for render_badge in badges %}
+          {{ render_badge | hash: 'value' }}
+        {% endfor %}
       {% endif %}
 
       <!-- 販売価格 -->
       <!-- 関連商品名 -->
       <a href="/shop/products/{{ related_product.master.sku }}">{{ related_product.name | truncate: 35 }}</a>
 
       <!-- 商品バッジ(任意) -->
-      {% if pre_order_badge_flg_hash[related_product.master.id] or delivery_group_badge_flg_hash[related_product.id] %}
+      {% if pre_order_badge_flg_hash[related_product.master.id] or delivery_group_badge_flg_hash[related_product.id] or concurrent_purchase_group_badge_flg_hash[related_product.id] %}
         <!-- 商品予約マーク(任意) -->
         {% if pre_order_badge_flg_hash[related_product.master.id] %}
           予約商品
         {% endif %}
         <!-- 配送温度帯ラベル(任意) -->
         {% for delivery_group_name in related_product.delivery_group_names %}
           {{ delivery_group_name }}
         {% endfor %}
+        <!-- 同時購入グループバッジ(任意) -->
+        {% for concurrent_purchase_group_name in related_product.concurrent_purchase_group_names %}
+          {{ concurrent_purchase_group_name }}
+        {% endfor %}
       {% endif %}
 
       <!-- 販売価格 -->

product > キーワード検索結果商品一覧画面

ec_force/shop/searches/show.html.liquid
ec_force/shop/searches/show.html+smartphone.liquid

     <!-- 商品名 -->
     <a href="/shop/products/{{ product.master.sku }}">{{ product.name }}</a>
 
     <!-- 商品バッジ(任意) -->
-    {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] %}
+    {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] or campaign_badge_flg_hash[product.id] %}
       <!-- 商品予約マーク(任意) -->
       {% if pre_order_badge_flg_hash[product.master.id] %}
         予約商品
       {% endif %}
       <!-- 配送温度帯ラベル(任意) -->
       {% for delivery_group_name in product.delivery_group_names %}
         {{ delivery_group_name }}
       {% endfor %}
       <!-- 同時購入グループバッジ(任意) -->
       <!-- 「バッジ表示名」を表示したい場合、product.concurrent_purchase_group_names を product.concurrent_purchase_badge_names に修正してください。 -->
       {% for concurrent_purchase_group_name in product.concurrent_purchase_group_names %}
         {{ concurrent_purchase_group_name }}
       {% endfor %}
+      <!-- キャンペーンバッジ(任意) -->
+      {% assign badges = campaign_badge_flg_hash[product.id] | liquid_render_badges %}
+      {% for render_badge in badges %}
+        {{ render_badge | hash: 'value' }}
+      {% endfor %}
     {% endif %}
 
     <!-- 販売価格(任意) -->

product > 商品カテゴリー詳細画面

ec_force/shop/product_categories/show.html.liquid
ec_force/shop/product_categories/show.html+smartphone.liquid

     <!-- 販売価格 -->
     {{ product.first_price | number_to_currency: format: '%n %u' }}
 
     <!-- 商品バッジ(任意) -->
-    {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] %}
+    {% if pre_order_badge_flg_hash[product.master.id] or delivery_group_badge_flg_hash[product.id] or concurrent_purchase_group_badge_flg_hash[product.id] or campaign_badge_flg_hash[product.id] %}
       <!-- 商品予約マーク(任意) -->
       {% if pre_order_badge_flg_hash[product.master.id] %}
         予約商品
       {% endif %}
       <!-- 配送温度帯ラベル(任意) -->
       {% for delivery_group_name in product.delivery_group_names %}
         {{ delivery_group_name }}
       {% endfor %}
       <!-- 同時購入グループバッジ(任意) -->
       <!-- 「バッジ表示名」を表示したい場合、product.concurrent_purchase_group_names を product.concurrent_purchase_badge_names に修正してください。 -->
       {% for concurrent_purchase_group_name in product.concurrent_purchase_group_names %}
         {{ concurrent_purchase_group_name }}
       {% endfor %}
+      <!-- キャンペーンバッジ(任意) -->
+      {% assign badges = campaign_badge_flg_hash[product.id] | liquid_render_badges %}
+      {% for render_badge in badges %}
+        {{ render_badge | hash: 'value' }}
+      {% endfor %}
     {% endif %}
 
     <!-- 説明 (PC) -->
     {{ product.parsed_description | simple_format }}

selection > セレクション画面

ec_force/shop/selections/show.html.liquid
ec_force/shop/selections/show.html+smartphone.liquid

      <!-- 予約マーク(任意) -->
       {% if enabled_pre_order and product.master.pre_order.is_pre_order? and pre_order_settings.display_mark %}
         予約商品
       {% endif %}
 
+      <!-- 商品バッジ(任意) -->
+      {% if concurrent_purchase_group_badge_flg_hash[product.id] or campaign_badge_flg_hash[product.id] %}
 
         <!-- 同時購入グループバッジ(任意) -->
         {% if concurrent_purchase_group_badge_flg_hash[product.id] %}
           <!-- 「バッジ表示名」を表示したい場合、product.concurrent_purchase_group_names を product.concurrent_purchase_badge_names に修正してください。 -->
           {% for concurrent_purchase_group_name in product.concurrent_purchase_group_names %}
             {{ concurrent_purchase_group_name }}
           {% endfor %}
         {% endif %}
 
+        <!-- キャンペーンバッジ(任意) -->
+        {% assign badges = campaign_badge_flg_hash[product.id] | liquid_render_badges %}
+        {% for render_badge in badges %}
+          {{ render_badge | hash: 'value' }}
+         {% endfor %}
+       {% endif %}
 
       <!-- 販売価格(任意) -->
       {{ product.first_price | number_to_currency: format: '%n %u' }}

sale_ranking > ランキング画面

ec_force/shop/sale_rankings/show.html.liquid
ec_force/shop/sale_rankings/show.html+smartphone.liquid

   <!-- ランキング商品名(任意) -->
   <a href="/shop/products/{{ sale_ranking.product.master.sku }}">{{ sale_ranking.product.name }}</a>
 
   <!-- 商品バッジ(任意) -->
-  {% if pre_order_badge_flg_hash[sale_ranking.product.master.id] or delivery_group_badge_flg_hash[sale_ranking.product.id] or concurrent_purchase_group_badge_flg_hash[sale_ranking.product.id] %}
+  {% if pre_order_badge_flg_hash[sale_ranking.product.master.id] or delivery_group_badge_flg_hash[sale_ranking.product.id] or concurrent_purchase_group_badge_flg_hash[sale_ranking.product.id] or campaign_badge_flg_hash[sale_ranking.product.id] %}
     <!-- ランキング商品予約マーク(任意) -->
     {% if pre_order_badge_flg_hash[sale_ranking.product.master.id] %}
       予約商品
     {% endif %}
     <!-- ランキング商品配送温度帯ラベル(任意) -->
     {% for delivery_group_name in sale_ranking.product.delivery_group_names %}
       {{ delivery_group_name }}
     {% endfor %}
     <!-- ランキング商品同時購入グループバッジ(任意) -->
     <!-- 「バッジ表示名」を表示したい場合、sale_ranking.product.concurrent_purchase_group_names を sale_ranking.product.concurrent_purchase_badge_names に修正してください。 -->
     {% for concurrent_purchase_group_name in sale_ranking.product.concurrent_purchase_group_names %}
       {{ concurrent_purchase_group_name }}
     {% endfor %}
+    <!-- キャンペーンバッジ(任意) -->
+    {% assign badges = campaign_badge_flg_hash[sale_ranking.product.id] | liquid_render_badges %}
+    {% for render_badge in badges %}
+      {{ render_badge | hash: 'value' }}
+    {% endfor %}
   {% endif %}
 
   <!-- ランキング商品説明(任意) -->

mypage > お気に入り一覧画面

ec_force/shop/customer/favorites/index.html.liquid
ec_force/shop/customer/favorites/index.html+smartphone.liquid

     <!-- 販売価格(任意) -->
     {{ favorite.product.first_price | number_to_currency: format: '%n %u' }}
 
     <!-- 商品バッジ(任意) -->
-    {% if pre_order_badge_flg_hash[favorite.product.master.id] or delivery_group_badge_flg_hash[favorite.product.id] or concurrent_purchase_group_badge_flg_hash[favorite.product.id] %}
+    {% if pre_order_badge_flg_hash[favorite.product.master.id] or delivery_group_badge_flg_hash[favorite.product.id] or concurrent_purchase_group_badge_flg_hash[favorite.product.id] or campaign_badge_flg_hash[favorite.product.id] %}
       <!-- 商品予約マーク(任意) -->
       {% if pre_order_badge_flg_hash[favorite.product.master.id] %}
         予約商品
       {% endif %}
       <!-- 配送温度帯ラベル(任意) -->
       {% for delivery_group_name in favorite.product.delivery_group_names %}
         {{ delivery_group_name }}
       {% endfor %}
       <!-- 同時購入グループバッジ(任意) -->
       <!-- 「バッジ表示名」を表示したい場合、favorite.product.concurrent_purchase_group_names を favorite.product.concurrent_purchase_badge_names に修正してください。 --
       {% for concurrent_purchase_group_name in favorite.product.concurrent_purchase_group_names %}
         {{ concurrent_purchase_group_name }}
       {% endfor %}
+      <!-- キャンペーンバッジ(任意) -->
+      {% assign badges = campaign_badge_flg_hash[favorite.product.id] | liquid_render_badges %}
+      {% for render_badge in badges %}
+        {{ render_badge | hash: 'value' }}
+      {% endfor %}
     {% endif %}
 
     <!-- 操作 -->

shared_partial > cart_modal

ec_force/shop/shared/_cart_modal.html.liquid
ec_force/shop/shared/_cart_modal.html+smartphone.liquid

               <!-- 商品名(任意) -->
               {% if order_item.product.gift? %}
                 {{ order_item.product.name }}
               {% else %}
                 <a href="/shop/products/{{ order_item.product.master.sku }}">{{ order_item.product.name }}</a>
                {% endif %}
 
               <!-- 商品バッジ(任意) -->
-              {% if pre_order_badge_flg_cart_modal_hash[order_item.variant.id] or delivery_group_badge_flg_cart_modal_hash[order_item.product.id] or concurrent_purchase_group_badge_flg_cart_modal_hash[order_item.product.id] %}
+              {% if pre_order_badge_flg_cart_modal_hash[order_item.variant.id] or delivery_group_badge_flg_cart_modal_hash[order_item.product.id] or concurrent_purchase_group_badge_flg_cart_modal_hash[order_item.product.id] or campaign_badge_flg_cart_modal_hash[order_item.product.id] %}
                 <!-- 商品予約マーク(任意) -->
                 {% if pre_order_badge_flg_cart_modal_hash[order_item.variant.id] %}
                   予約商品
                 {% endif %}
                 <!-- 配送温度帯ラベル(任意) -->
                 {% for delivery_group_name in order_item.product.delivery_group_names %}
                   {{ delivery_group_name }}
                 {% endfor %}
                 <!-- 同時購入グループバッジ(任意) -->
                 <!-- 「バッジ表示名」を表示したい場合、order_item.product.concurrent_purchase_group_names を order_item.product.concurrent_purchase_badge_names に修正してください。 -->
                 {% for concurrent_purchase_group_name in order_item.product.concurrent_purchase_group_names %}
                   {{ concurrent_purchase_group_name }}
                 {% endfor %}
+                <!-- キャンペーンバッジ(任意) -->
+                {% assign badges = campaign_badge_flg_cart_modal_hash[order_item.product.id] | liquid_render_badges %}
+                {% for render_badge in badges %}
+                  {{ render_badge | hash: 'value' }}
+                {% endfor %}
               {% endif %}
               <!-- 規格(任意) -->
               {% for option_value in order_item.variant.option_values %}

[更新推奨] 所持ポイントの変数変更

仮売上失敗・与信審査エラーの注文で利用する予定のポイントを、顧客が別の注文で利用できないよう内部修正をおこないました。それに伴い、顧客が持っている利用可能なポイント(所持ポイント)の変数を変更しました。

従来の変数: {{ current_customer.point_total }}
変更後の変数:{{ current_customer.available_point_total }}

これに伴い、仮売上失敗・与信審査エラーの注文で利用する予定のポイントとして「消費予定ポイント {{ current_customer.pre_redeem_points_amount }}」を導入しています。
テーマの更新の有無に関わらず、顧客が利用可能なポイント数は {{ current_customer.available_point_total }} となります。 従来の {{ current_customer.point_total }} は「利用可能ポイント {{ current_customer.available_point_total }}」 と「消費予定ポイント {{ current_customer.pre_redeem_points_amount }}」の合算値となります。

変数仕様変更後仕様変更前
{{ current_customer.point_total }}所持ポイント+消費予定ポイント所持ポイント
{{ current_customer.available_point_total }}所持ポイント-
{{ current_customer.pre_redeem_points_amount }}消費予定ポイント-

従来のテーマのままでもポイント機能はご利用いただけますが、与信落ち受注を持つ顧客の場合、所持ポイント数が実際に利用できるポイント数より大きな値で表示される場合がございます。
ポイント機能をご利用のショップ様は、最新の仕様にあわせた記述変更の実施を推奨いたします。

cart > 注文情報確認画面

ec_force/shop/orders/confirm.html.liquid
ec_force/shop/orders/confirm.html+smartphone.liquid

     <!-- 付与予定ポイント(任意) -->
     {% if base_info.use_point? and customer_signed_in %}
+      {% if order.grant_plan_campaign_point == 0 %}
+        {{ order.grant_plan_point }}
+      {% else %}
         {{ order.grant_plan_point }}
+        {{ order.grant_plan_general_point }}
+        {{ order.grant_plan_campaign_point }}
+      {% endif %}
     {% endif %}
 
     <!-- 注意喚起文 -->

cart > サンクスオファー確認画面

ec_force/shop/orders/cv_confirm.html.liquid
ec_force/shop/orders/cv_confirm.html+smartphone.liquid

     <!-- 付与予定ポイント(任意) -->
     {% if base_info.use_point? and customer_signed_in %}
-      {{ order.grant_plan_point }}
+      {% if order.grant_plan_campaign_point == 0 %}
+        {{ order.grant_plan_point }}
+      {% else %}
+        {{ order.grant_plan_point }}
+        {{ order.grant_plan_general_point }}
+        {{ order.grant_plan_campaign_point }}
+      {% endif %}
     {% endif %}
 
     <!-- 注意喚起文 -->

cart > ポイント(部分テンプレート)

ec_force/shop/orders/_view_point_redeem.html.liquid
ec_force/shop/orders/_view_point_redeem.html+smartphone.liquid

   <!-- 現在の所持ポイント -->
-  {{ current_customer.point_total | number_with_delimiter }}
+  {{ current_customer.available_point_total | number_with_delimiter }}

cart > 注文情報確認プレビュー(部分テンプレート)

ec_force/shop/orders/_view_payment_preview.html.liquid
ec_force/shop/orders/_view_payment_preview.html+smartphone.liquid

     <div>
       {% if base_info.use_point? && guest_flag %}
-        <label>付与予定ポイント</label>
+        <label id="grant_plan_point_text">付与予定ポイント</label>
+        <label id="grant_plan_total_point_text" style="display: none;">付与予定ポイント(合計)</label>
         <span id="grant_plan_point"></span>
+        <label id="grant_plan_general_point_text" style="display: none;">付与予定ポイント(通常)</label>
+        <span id="grant_plan_general_point" style="display: none;"></span>
+        <label id="grant_plan_campaign_point_text" style="display: none;"></label>
+        <span id="grant_plan_campaign_point" style="display: none;"></span>
       {% endif %}
     </div>

mypage > ポイント履歴一覧画面

ec_force/shop/customer/points/index.html.liquid
ec_force/shop/customer/points/index.html+smartphone.liquid

 {% if point_total > 0 or current_customer.grant_plan_point > 0 %}
+  <!-- 付与予定ポイント -->
+  {{ current_customer.grant_plan_point | number_with_delimiter }}
 
   <!-- 合計ポイント -->
   {{ current_customer.point_total | number_with_delimiter }}
 
+  <!-- 消費予定ポイント -->
+  {% if pre_redeem_points_amount > 0 %}
+    {{ current_customer.pre_redeem_points_amount | number_with_delimiter }}
+  {% endif %}
   <!-- ポイント履歴一覧 -->
- {% if points %}
  {% for point in points %}
-    {% if point.point != 0 %}
+    {% if point.point %}
      <!-- 日時 -->
      {{ point.created_at | date: "%Y/%m/%d %H:%M" }}
 
      <!-- 名目 -->
-     {{ point.point_event.name }}
+     {% if point.point_event.eventable_type == 'EcForce::Campaign' %}
+       ポイント還元(特典)
+     {% else %}
+       {{ point.point_event.name }}
+     {% endif %}
 
   <!-- 購入番号 -->
       {% if is_point_expired_date_taken_each_history or point_details.size > 1 %}
         <!-- 有効期限 -->
         {% if expirations[point.id] %}
           {{ expirations[point.id] }}
         {% endif %}
       {% endif %}
+    {% endif %}
   {% endfor %}
 {% endif %}

mypage > 定期注文詳細画面 基本情報の編集

ec_force/shop/customer/subs_orders/edit.html.liquid
ec_force/shop/customer/subs_orders/edit.html+smartphone.liquid

   <!-- 現在の所持ポイント -->
-  {{ current_customer.point_total | number_with_delimiter }}
+  {{ current_customer.available_point_total | number_with_delimiter }}

mypage > 定期注文詳細画面 商品情報

ec_force/shop/customer/subs_orders/order_items/index.html.liquid
ec_force/shop/customer/subs_orders/order_items/index.html+smartphone.liquid

   <!-- 現在の所持ポイント -->
-  {{ current_customer.point_total | number_with_delimiter }}
+  {{ current_customer.available_point_total | number_with_delimiter }}

[UI改善]セット商品の選択可能個数を手入力可能にする

従来のUIでは、セット商品機能(オプション機能)ご利用時の購入商品の個数設定はマウスでのクリックのみでしたが、キーボードによる手入力を可能にしました。

mypage > 定期注文詳細画面 セット商品の編集

ec_force/shop/customer/subs_orders/sets/edit.html.liquid
ec_force/shop/customer/subs_orders/sets/edit.html+smartphone.liquid

         <div class='select_template' style='display:none'>
           <div style='display:flex'>
 
-            <!-- 選択個数表示 -->
-            <ul>
-              <!-- class:addがクリックされると個数を1件増やします。-->
-              <li class='add'><p>+</p></li>
-              <!-- class:quantityに現在の個数を更新します。-->
-              <li class='quantity'><p>0</p></li>
-              <!-- class:cutがクリックされると個数を1件減らします。-->
-              <li class='cut'><p>-</p></li>
-            </ul>
 
             <!-- 商品画像表示 -->
             <ul>
               <!-- class:thumbnailに商品画像が更新されます。-->
               <img class='thumbnail' height='60' src='' alt=''>
             </ul>
 
             <ul>
               <!-- 商品名・規格表示 -->
               <!-- class:nameに商品名が更新されます。-->
               <p class='name'>NoName</p>
               <!-- class:option_valuesに規格が更新されます。-->
               <p class='option_values'></p>
+              <!-- 選択個数表示 -->
+              <label>
+                <!-- class:quantityに現在の個数を更新します。-->
+                <input class="quantity validate[required]" name="quantity" type="number">
+                <!-- class:cutがクリックされると個数を1件減らします。-->
+                <button class="cut" type="button">-</button>
+                <!-- class:addがクリックされると個数を1件増やします。-->
+                <button class="add" type="button">+</button>
+              </label>
             </ul>
           </div>
         </div>
       </div>
 
       <!-- 保存ボタン -->

set > セット選択画面

ec_force/shop/sets/show.html.liquid
ec_force/shop/sets/show.html+smartphone.liquid

         <!-- class:select_templateを基準に追加された商品が記載されます。-->
         <div class='select_template' style='display:none'>
           <div style='display:flex'>
-            <ul>
-              <!-- class:addがクリックされると個数を1件増やします。-->
-              <li class='add'><p>+</p></li>
-              <!-- class:quantityに現在の個数を更新します。-->
-              <li class='quantity'><p>0</p></li>
-              <!-- class:cutがクリックされると個数を1件減らします。-->
-              <li class='cut'><p>-</p></li>
-            </ul>
             <ul>
               <!-- class:thumbnailに商品画像が更新されます。-->
               <img class='thumbnail' height='60' src='' alt=''>
             </ul>
             <ul>
               <!-- class:nameに商品名が更新されます。-->
               <p class='name'>NoName</p>
               <!-- class:option_valuesに規格が更新されます。-->
               <p class='option_values'></p>
+              <label>
+                <!-- class:quantityに現在の個数を更新します。-->
+                <input class="quantity validate[required]" name="quantity" type="number">
+                <!-- class:cutがクリックされると個数を1件減らします。-->
+                <button class="cut" type="button">-</button>
+                <!-- class:addがクリックされると個数を1件増やします。-->
+                <button class="add" type="button">+</button>
+              </label>
             </ul>
           </div>
        </div>
 
        <!-- 保存ボタン -->

軽微な不具合修正

cart > お届け先住所(部分テンプレート)

更新内容は「複数お届け先機能の実装」の「 cart > お届け先住所(部分テンプレート)」に含まれています。

mypage > 購入履歴詳細画面 お届け先情報の編集

更新内容は「複数お届け先機能の実装」の「mypage > 購入履歴詳細画面 お届け先情報の編集」に含まれています。