{# @version EC=CUBE4.1 TWIG
# @copyright 株式会社 翔 kakeru.co.jp
# @author
# 2022年05月11日作成
#
# app/template/default/Cart/index.twig
#
# 202210修正
#
# カート LM仕様
# 1 SKUの追加 カラーの変更 サイズの変更 数量の変更 SKUの削除
#
#
# ≡≡≡┏(^o^)┛
############################################################# #}
{% extends 'default_frame.twig' %}
{% block stylesheet %}
<link rel="stylesheet" href="/stylesheets/cart_step.css?20250715_01">
{% if isMobile %}
<link rel="stylesheet" href="/stylesheets/sp/shopping/cart_step1.css?20231004">
{% endif %}
{% endblock %}
{% block javascript %}
<script>
var num = 1;
var count = 0;
$(function () {
$('.pc .CartItem_color').each(function (i, e) {
ChangeColor(e);
});
$(document).on('change', '.pc .CartItem_color', function () {
var parentElement = $(this).parent();
var sessionKey = parentElement.data('session-key');
ChangeColor(this);
LoadSizePullDown(this);
LineAddAlert(sessionKey);
});
$(document).on('change', '.js .CartItem_color', function () {
var parentElement = $(this).parent();
var sessionKey = parentElement.data('session-key');
ChangeColor(this);
LoadSizePullDown(this);
LineAddAlert(sessionKey);
});
$(document).on('change', '.pc .CartItem_size', function () {
//
var parentElement = $(this).parent();
var sessionKey = parentElement.data('session-key');
//
const size = this;
const color = $(size).closest('.cart-row').find('select.CartItem_color').get(0);
//
LoadStockLabel(color, size);
LoadColorPullDown(this);
//
LineAddAlert(sessionKey);
});
$(document).on('change', '.js .CartItem_size', function () {
//
var parentElement = $(this).parent();
var sessionKey = parentElement.data('session-key');
//
const size = this;
const color = $(size).closest('.cart-row').find('select.CartItem_color').get(0);
//
LoadStockLabel(color, size);
//
LineAddAlert(sessionKey);
LoadColorPullDown(this);
});
$(document).on('change', '.pc .CartItem_quantity', function () {
var parentElement = $(this).parent();
var sessionKey = parentElement.data('session-key');
LineAddAlert(sessionKey);
});
$(document).on('change', '.js .CartItem_quantity', function () {
var parentElement = $(this).parent();
var sessionKey = parentElement.data('session-key');
LineAddAlert(sessionKey);
});
$('.sp .CartItem_quantity').change(function () {
ItemSubMit();
});
$('.sp .CartItem_size').change(function () {
ItemSubMit();
});
$('.sp .CartItem_color').change(function () {
ItemSubMit();
}).each(function (i, e) {
ChangeColor(e);
});
});
function ChangeColor(colorSelect) {
var selectedColor = $(colorSelect).find('option:selected').data('rgb');
$(colorSelect).closest('.color').find('.item_rgb').css('color', selectedColor);
}
function LoadSizePullDown(color) {
//
const $color = $(color);
//
const ItemId = $color.data('itemId');
const ProductId = $color.data('productId');
const ClassCategory2Id = $('#CartItem_size_' + ItemId).val();
const ClassCategory1Id = $color.val();
const EstimateId = $color.data('estimateId');
//
const data = {
ItemId,
ProductId,
ClassCategory2Id,
ClassCategory1Id,
EstimateId,
};
//
const $size = $('#CartItem_size_' + ItemId)
.prop('disabled', true)
.load('{{ url('ajax_show-goods-size-list-pull-down-by-color') }}', data, function (responseText) {
$(this).prop('disabled', false);
//
LoadStockLabel(color, this);
})
;
}
function LoadColorPullDown(size) {
//
const $size = $(size);
//
const ItemId = $size.data('itemId');
const ProductId = $size.data('productId');
const ClassCategory1Id = $('#CartItem_color_' + ItemId).val();
const ClassCategory2Id = $size.val();
const EstimateId = $size.data('estimateId');
//
const data = {
ItemId,
ProductId,
ClassCategory2Id,
ClassCategory1Id,
EstimateId,
};
//
const $color = $('#CartItem_color_' + ItemId)
.prop('disabled', true)
.load('{{ url('ajax_show-goods-color-list-pull-down-by-size') }}', data, function (responseText) {
$(this).prop('disabled', false);
});
}
function LoadStockLabel(color, size) {
//
removeDisableOption();
const $color = $(color);
const $size = $(size);
const ProductId = $color.data('productId');
const ClassCategory1Id = $color.val();
const ClassCategory2Id = $size.val();
//
const $stockLabel = $color.closest('.cart-row').find('.stock-label');
const url = $color.parent().data('url') ? $color.parent().data('url') : $color.data('url');
$.ajax({
url: '{{ url('ajax_show-stock-label') }}',
method: 'POST',
data: {
ProductId,
ClassCategory1Id,
ClassCategory2Id
},
success: function (response, xhr) {
$stockLabel.html(response);
},
error: function (xhr) {
if (xhr.status === 500) {
if(url){
}
}
}
});
disableOption();
}
function disableOption(){
$(".CartItem_color option").each(function () {
if ($(this).data("wasDisabled")) {
$(this).prop("disabled", true);
}
});
$(".CartItem_size option").each(function () {
if ($(this).data("wasDisabled")) {
$(this).prop("disabled", true);
}
});
}
function removeDisableOption(){
$(".CartItem_color option").each(function () {
$(this).data("wasDisabled", $(this).prop("disabled"));
});
$(".CartItem_size option").each(function () {
$(this).data("wasDisabled", $(this).prop("disabled"));
});
$(".CartItem_color option:disabled").prop("disabled", false);
$(".CartItem_size option:disabled").prop("disabled", false);
}
function RemoveItem(id) {
if (!confirm('{{ 'front.cart_item_remove'|trans }}')) {
return false;
}
document.getElementById("overlay").style.display = "block";
window.location.href = '{{ url('remove_cart_item', {'mode': 'item', 'Token': OlToken('RemoveCartItme')}) }}/' + id;
}
function RemoveCart(sessionKey) {
if (!confirm('{{ 'front.cart_item_remove'|trans }}')) {
return false;
}
location.href = '{{ url("remove_cart_item", { mode: "all" }) }}'
}
function AddCartItem(productItemKey) {
var hiddenCartItem = $('.cart-row[data-line="' + productItemKey + '"]').last();
var currentCartItem = $('.cart-row[data-line="' + productItemKey + '"]:last').prev();
var nextIndex = currentCartItem.data('current-index') + 1;
var estimateId = hiddenCartItem.data('estimate-id');
var productId = hiddenCartItem.data('product-id');
var cartItemId = hiddenCartItem.data('cart-item-id');
var classCategory1Id = hiddenCartItem.data('category1-id');
var classCategory2Id = hiddenCartItem.data('category2-id');
var newCartItem = hiddenCartItem.clone()
.removeClass('new-cart-item')
.data('current-index', nextIndex)
.insertBefore(hiddenCartItem)
;
var newError = newCartItem.find('.error')
.attr('id', `CartError_${estimateId}-${productId}-${nextIndex}`)
;
var itemSize = newCartItem.find('.CartItem_size')
.attr('name', `CartItem[${estimateId}][${estimateId}-${productId}-${nextIndex}][size]`)
.attr('id', `CartItem_size_${estimateId}-${productId}-${nextIndex}`)
.data('item-id', `${estimateId}-${productId}-${nextIndex}`)
.val(currentCartItem.find('.CartItem_size option:selected').val())
;
var itemColor = newCartItem.find('.CartItem_color')
.attr('name', `CartItem[${estimateId}][${estimateId}-${productId}-${nextIndex}][color]`)
.attr('id', `CartItem_color_${estimateId}-${productId}-${nextIndex}`)
.data('item-id', `${estimateId}-${productId}-${nextIndex}`)
.attr('data-url', $('.cart-row[data-line="' + productItemKey + '"]').data('url'))
.val(currentCartItem.find('.CartItem_color option:selected').val())
.trigger('change')
;
var itemQuantity = newCartItem.find('.CartItem_quantity')
.attr('name', `CartItem[${estimateId}][${estimateId}-${productId}-${nextIndex}][quantity]`)
.attr('id', `CartItem_quantity_${estimateId}-${productId}-${nextIndex}`)
.data('item-id', `${estimateId}-${productId}-${nextIndex}`)
.val('')
;
}
function SetLinAddRe(num) {
var title = '{{ 'front.cart_item_button01'|trans }}';
var dl = 'div#line_add_' + num + ' dl';
var dt = 'div#line_add_' + num + ' dt';
var dd = 'div#line_add_' + num + ' dd';
if ('none' == $(dd).css('display')) {
$(dl).css('display', 'inline-block');
if ($('body').width() < 768) {
$(dt).css('display', 'inline-block');
}
$(dd).css('display', 'inline-block');
title = '{{ 'front.cart_item_button03'|trans }}';
} else {
if ($('body').width() <= 768) {
$(dl).hide();
}
$(dt).hide();
$(dd).hide();
$('input#line_add_' + num).val('');
$('td.line_add .error').text('');
}
$('button#line_add_button_' + num).text(title);
}
function ItemSubMit(e) {
removeDisableOption();
//
const sessionKey = $(e).closest('[data-session-key]').data('sessionKey');
var $form = $('form#form_cart');
document.getElementById("overlay").style.display = "block";
//
$('.cart-row.js:not(.new-cart-item) .CartItem_quantity').filter(function () {
return !this.value;
}).each(function () {
$(this).closest('.cart-row.js').remove();
})
//
$.ajax({
url: '{{ url('add_line') }}',
type: 'POST',
data: $form.serialize(),
dataType: 'json'
}).done(function (data) {
if (data.status == 'Error') {
$('#OlToken').val(data.OlToken);
DispError(data.Errors, sessionKey);
}
}).fail(function (jqXHR, Status) {
$('#allError01').text('{{ 'front.Error'|trans }}');
$('#allError02').text('{{ 'front.Submit.Error'|trans }}');
}).always(function (data) {
if (data.status == 'OK') {
window.location.href = '{{ url('cart') }}';
}
document.getElementById("overlay").style.display = "none";
//
disableOption();
});
}
function DispError(Errors, sessionKey) {
$('p.error').text('');
Errors.forEach(function (Error, i) {
if ([14].indexOf(Error.errid) >= 0) {
//
LineAddAlert(sessionKey, true)
//
return;
}
$('#allError01').text('{{ 'front.Error'|trans }}');
if (0 == Error.class_id) {
$('#allError02').text(Error.message);
} else {
if (8 == Error.errid) {
$('.Quantity_' + Error.class_id).each(function (i, e) {
if (0 == $(e).val()) {
var ItemId = $(e).data('item_id');
$('#CartError_' + ItemId).text(Error.message);
}
});
} else {
$('.CartError_' + Error.class_id).text(Error.message);
$('#CartError_' + Error.class_id).text(Error.message);
}
}
if (Error.add_lines) {
Error.add_lines.forEach(function (Addline) {
$('#CartError_' + Addline).text(Error.message);
});
}
});
}
function HybridSubmit(EstimateID, CartItemId) {
url = '{{ url('estimate') }}' + EstimateID;
$('#Hybrid_Cart_Item_Ids').val(CartItemId);
$('#form_cart').attr('action', url);
$('#form_cart').submit();
}
{# レスポンシブ時不要s #}
function LineAddAlert(sessionKey, hide) {
if (hide) {
$('#line_add_alert.' + sessionKey + ' span').hide();
$('.cart-footer .right_btn').remove('disabledBtn');
} else {
$('#line_add_alert.' + sessionKey + ' span').show();
$('.cart-footer .right_btn').addClass('disabledBtn');
}
}
$('.sp.button-group .next_btn,.cart-footer .right_btn').on('click',function (e){
if($(this).hasClass('disabledBtn')){
e.preventDefault();
}
});
$('button[id^="mitsumoriBtn"]').on('click', function () {
var winOpen;
if (!winOpen || winOpen.closed) {
winOpen = window.open('', 'mitsuWin', 'width=800,height=600,resizable=no,scrollbars=yes,location=yes,menubar=yes,status=yes,titlebar=yes,toolbar=yes');
}
var form = $('<form/>', {
action: "{{ url('mitsumori') }}?t=3",
method: 'post',
name: 'form02',
target: 'mitsuWin'
});
$.each($("#form01").serializeArray(), function (key, val) {
form.append($('<input/>', {type: 'hidden', "name": val.name, "value": val.value}));
});
form.appendTo(document.body);
form.submit();
return false;
});
</script>
{% endblock %}
{% block main %}
<style>
.sp.button-group .disabledBtn,
.cart-footer .group-button .disabledBtn .right-btn{
background-color: #e1e1e1 !important;
border: 1px solid #e1e1e1 !important;
}
.blink {
animation: blinking .75s ease-in-out infinite alternate;
}
@keyframes blinking {
0% {opacity: 0;}
100% {opacity: 1;}
}
</style>
<div id="overlay">
<div id="overlay-text">処理中。。。</div>
</div>
{% if isMobile %}
<div class="sp wrapper-block-normal">
<div class="step d-flex flex-center">
{% if LmCartType() == 3 %}
<img src="https://img0.land-mark.biz/ut_img/public_images/order/flow7.gif" style="max-width: 80%;" alt="カートの商品"/>
{% else %}
{{ include('Cart/Parts/Step.twig') }}
{% endif %}
</div>
{% set nextStep = app.user ? 'shopping' : 'shopping_entry' %}
<div class="ec-cartRole__error">
{% for error in app.session.flashbag.get('eccube.front.cart.request.error') %}
<div class="ec-alert-warning">
<div class="ec-alert-warning__icon">
<img src="{{ asset('assets/icon/exclamation-white.svg') }}">
</div>
<div class="ec-alert-warning__text">
{{ error|trans|nl2br }}
</div>
</div>
{% endfor %}
</div>
{% if totalQuantity > 0 %}
<div class="remaining">入力完了まで:約2分(目安)</div>
<div class="title-cart-contents">カートの中身</div>
<div id="bodyContentRegular" style="width: 100%">
<form name="form" id="form_cart" class="lm-cartRole" method="post" action="{{ url('cart') }}">
<input type="hidden" name="OlToken" id="OlToken" value="{{ OlToken('matrix') }}">
<input type="hidden" name="Hybrid[cart_item_id]" id="Hybrid_Cart_Item_Ids" value="">
{% for CartIndex,Cart in Carts %}
<div id="top_btn" class="sp button-group">
<a class="botton back_btn" href="{{ CartBackBtn() }}">
{{ GetCartBackBtnText() }}
</a>
<a
id="next_btn"
{% if isItemsStockAvailable and not isSusoageChange %}
class="next_btn big-btn"
href="{{ path('cart_buystep', {'cart_key':Cart.cart_key, 'next_step': nextStep}) }}"
{% else %}
class="next_btn big-btn disabledBtn"
{% endif %}
>
{{ GetCartNextBtnText() }}▶
</a>
</div>
<input type="hidden" name="CartType" value="{{ Cart.CartType }}">
{% set cartKey = Cart.cart_key %}
<div class="ec-cartRole__error">
{% for error in app.session.flashbag.get('eccube.front.cart.' ~ cartKey ~ '.request.error') %}
<div class="ec-alert-warning">
<div class="ec-alert-warning__icon">
<img src="{{ asset('assets/icon/exclamation-white.svg') }}">
</div>
<div class="ec-alert-warning__text">
{{ error|trans|nl2br }}
</div>
</div>
{% endfor %}
<div class="ec-alert-warning">
<div id="allError01" class="ec-alert-warning__text"></div>
<div id="allError02" class="ec-alert-warning__text"></div>
{{ ExclusionControl()|raw }}
</div>
{% set sampleLimitError = GetSampleLimitError() %}
{% if sampleLimitError is not empty %}
<div class="ec-alert-warning">
<div id="allError02" class="ec-alert-warning__text">{{ sampleLimitError }}</div>
</div>
{% endif %}
{% if not isItemsStockAvailable %}
<div class="ec-alert-warning">
<div id="allError02" class="ec-alert-warning__text">在庫切れの商品があります。他のカラー、サイズを選択するか、カートから削除してください。</div>
</div>
{% endif %}
{% if isSusoageChange %}
<div class="ec-alert-warning">
<div id="allError02" class="ec-alert-warning__text">商品情報が更新さたため裾上げ内容を再設定してください。</div>
</div>
{% endif %}
</div>
<div class="carts-group pt-0">
{# for sessionKey, cartItems in cartsTransformed #}
<div id="Cart-{{ CartIndex }}"
class="cart-box{# sessionKey == 'GROUP_2_RESERVATION' ? ' yoyaku-cart' : '' #}{% if isYoyaku %} yoyaku-cart{% endif %}"
data-session-key="Cart-{{ CartIndex }}"
>
<div class="cart-title">
{% if isYoyaku %}
<p class="font-14">{# getCartSessionName(sessionKey) #}予約注文</p>
{% endif %}
<div class="clear-carts hover-pointer"
onclick="RemoveCart('Cart-{{ CartIndex }}')">
<p class="pt-4">すべてクリア</p>
<img src="/stylesheets/images/icons-svg/trash-icon.svg"
alt="delete button"/>
</div>
</div>
{# {% if RepartData is not null %} #}
{# <p class="repart">{{'front.Cart.Repeat'|trans}} {{'ftont.Order_id.name'|trans}}:{{RepartData.ohid}}</p> #}
{# {% endif %} #}
{{ include('Cart/Parts/Responsive.twig') }}
</div>
<div id="cart-explain">
※カートに商品を入れた時点では、在庫は確保されません。「ご注文完了」時点で確保されます。
</div>
{# endfor #}
</div>
<div class="bg-white pt-1 pb-5">
<div id="total">
<div id="prices">
<div class="prices-box">
<div class="prices-title float-left">商品合計点数:</div>
<div class="prices-content color-red">{{ totalQuantity }}<span
class="prices-unit fs-13">点</span></div>
</div>
{% if LargeDiscount > 0 %}
<div class="prices-box">
<div
class="prices-title">{{ 'common.total__with_separator'|trans }}</div>
<div class="prices-content">{{ ProductTotal }}</div>
</div>
<div class="prices-box">
<div class="prices-title">{{ ItemType(8) }}({{ LargeDiscountRitu }}%):
</div>
<div class="prices-content">-{{ LargeDiscount|FormatPrice|raw }}</div>
</div>
{% endif %}
{% if LmCartType() != 3 %}
<div class="prices-total">
<div class="prices-title float-left">合計金額:</div>
<div class="prices-content color-red">{{ totalPrice|FormatPrice|raw }}
<span class="prices-unit fs-13">(税込)</span></div>
</div>
{% endif %}
</div>
{% if LmCartType() != 3 %}
<div id="prices-explain" class="py-12">
10,000円以上で送料無料、<br/>10万円以上で5%OFF、30万円以上で10%OFFです。
</div>
{% endif %}
</div>
<div class="Lm_footArea">
{% if LmCartType() < 3 %}
{% if BaseInfo.delivery_free_amount %}
{% if is_delivery_free[cartKey] %}
<div class="delivery-free-info">
<p class="title">10,000円<span
style="font-size: 10px;">(税込)</span>以上のご注文のため、
</p>
<p class="title"><span>送料が無料</span>です。</p>
<p style="font-size: 10px; color: #666666; margin-top: 5px; text-align: left; padding: 2px;">
※10,000円以上の場合、全国一律
送料770円(税込)が無料サービスとなります。</p>
<p style="font-size: 10px; color: #666666; margin-top: 5px; text-align: left; padding: 2px;">
※一部の地域(離島)につきましては、別途送料をご請求させていただきます。</p>
<p style="font-size: 10px; color: #666666; margin-top: 5px; text-align: left; padding: 2px;">
※お支払い方法が「後払い」の場合は、後払い手数料が無料になります。</p>
</div>
{% else %}
<div class="free-ship-explain">
<p class="free-ship-by-price">
あと{{ (BaseInfo.DeliveryFreeAmount - totalPrice)|LmPrice }}
で送料無料(※一部離島除く)です。</p>
<p class="free-payment-fee">さらに、後払い手数料も無料になります。</p>
</div>
{% endif %}
{% endif %}
{% endif %}
</div>
</div>
<div class="block-line"></div>
<div id="botom_btn" class="sp button-group pt-5">
<a class="back_btn" href="{{ CartBackBtn() }}">
{{ GetCartBackBtnText() }}
</a>
<a
id="next_btn"
{% if isItemsStockAvailable and not isSusoageChange %}
class="next_btn big-btn"
href="{{ path('cart_buystep', {'cart_key':Cart.cart_key, 'next_step': nextStep}) }}"
{% else %}
class="next_btn big-btn disabledBtn"
{% endif %}
>
{{ GetCartNextBtnText() }}▶
</a>
</div>
<div class="mitsumori-button mb-10">
<a href="{{ url('mitsumori') }}?t=3" target="_blank">見積書をメールで送信する</a>
</div>
<div class="kakaku-confidence-button">
<a href="/kakaku-confidence/" target="_blank">
<img src="https://img0.land-mark.biz/ut_img/public_img/kakaku-confidence-sp.png" alt="empty cart"/>
</a>
</div>
<div class="block-line-medium"></div>
{% endfor %}
</form>
</div>
{% else %}
<div class="flex-center empty-cart">
<img src="/stylesheets/images/icons-svg/empty-cart-warning.svg" alt="empty cart"/>
</div>
<div class="flex-center py-8 mb-10">
<div id="noitem_btn">
<a class="pc" href="{{ CartBackBtn() }}">◀ {{ 'front.cart.continue'|trans }}</a>
</div>
</div>
{% endif %}
{% if LmCartType() != 3 %}
<div class="section-recent-post {% if totalQuantity <= 0 %} pt-0 {% endif %}">
{% include 'Block/Sp/Item/lm_item_recently_checked_item.twig' %}
</div>
{% endif %}
</div>
{% else %}
<div class="step text-center">
{% if LmCartType() == 3 %}
<img src="https://img0.land-mark.biz/ut_img/public_images/order/flow7.gif" style="max-width: 80%;" alt="カートの商品"/>
{% else %}
{{ include('Cart/Parts/Step.twig') }}
{% endif %}
</div>
<div class="search-list">
<form action="{{ url('item_searchlist') }}" method="GET">
<input type="hidden" name="hantei" value="検索"/>
<input class="search-input" type="text" name="searchtext" value=""
placeholder="商品名・品番で検索 (※「Enter」キーで検索)"/>
<input style="padding: 5px;" type="submit" name="" value="検索" data-loading="false">
</form>
</div>
{% if totalQuantity > 0 %}
<div id="title-bar" class="d-flex flex-center-vertial">
<p class="titleText">
{% set TImage = 'images/order/title_cart.gif' %}
{% if LmCartType() == 3 %}
{% set TImage = 'images/order/title_sample.gif' %}
{% endif %}
<img src="{{ TImage }}" alt="ショッピングカート" width="" height="28">
</p>
</div>
<div id="bodyContentRegular" class="pc" style="width: 100%">
<p class="cart-des">
<strong>
{% if LmCartType() == 3 %}
貸出サンプルサービス申し込み商品の一覧です。
{% else %}
お客様のショッピングカート内の商品一覧です。
{% endif %}
</strong>
</p>
<div class="ec-cartRole__error">
{% for error in app.session.flashbag.get('eccube.front.cart.request.error') %}
<div class="ec-alert-warning">
<div class="ec-alert-warning__icon">
<img src="{{ asset('assets/icon/exclamation-white.svg') }}">
</div>
<div class="ec-alert-warning__text">
{{ error|trans|nl2br }}
</div>
</div>
{% endfor %}
</div>
<form name="form" id="form_cart" class="lm-cartRole" method="post" action="{{ url('cart') }}">
<input type="hidden" name="OlToken" id="OlToken" value="{{ OlToken('matrix') }}">
<input type="hidden" name="Hybrid[cart_item_id]" id="Hybrid_Cart_Item_Ids" value="">
{% for CartIndex,Cart in Carts %}
<input type="hidden" name="CartType" value="{{ Cart.CartType }}">
{% set cartKey = Cart.cart_key %}
<div class="ec-cartRole__error">
{% for error in app.session.flashbag.get('eccube.front.cart.' ~ cartKey ~ '.request.error') %}
<div class="ec-alert-warning">
<div class="ec-alert-warning__icon">
<img src="{{ asset('assets/icon/exclamation-white.svg') }}">
</div>
<div class="ec-alert-warning__text">
{{ error|trans|nl2br }}
</div>
</div>
{% endfor %}
<div class="ec-alert-warning">
<div id="allError01" class="ec-alert-warning__text"></div>
<div id="allError02" class="ec-alert-warning__text"></div>
{{ ExclusionControl()|raw }}
</div>
{% set sampleLimitError = GetSampleLimitError() %}
{% if sampleLimitError is not empty %}
<div class="ec-alert-warning">
<div id="allError02" class="ec-alert-warning__text">{{ sampleLimitError }}</div>
</div>
{% endif %}
{% if not isItemsStockAvailable %}
<div class="ec-alert-warning">
<div id="allError02" class="ec-alert-warning__text">在庫切れの商品があります。他のカラー、サイズを選択するか、カートから削除してください。</div>
</div>
{% endif %}
{% if isSusoageChange %}
<div class="ec-alert-warning">
<div id="allError02" class="ec-alert-warning__text">商品情報が更新さたため裾上げ内容を再設定してください。</div>
</div>
{% endif %}
</div>
<div class="carts-group">
<div id="Cart-{{ CartIndex }}"
class="cart-box{# sessionKey == 'GROUP_2_RESERVATION' ? ' yoyaku-cart' : '' #}{% if isYoyaku %} yoyaku-cart{% endif %}"
data-session-key="Cart-{{ CartIndex }}"
>
{# if isMixCart is not empty or sessionKey == 'GROUP_2_RESERVATION' #}
{% if isYoyaku %}
<div class="cart-title">
<p>{# getCartSessionName(sessionKey) #}予約注文</p>
<div class="clear-carts hover-pointer" onclick="RemoveCart('{{ CartIndex }}')">
<p>すべてクリア</p>
<img src="/stylesheets/images/icons-svg/trash-icon.svg"
alt="delete button"/>
</div>
</div>
{% else %}
<div class="delete-all">
<div
class="clear-carts hover-pointer bg-none border-none d-flex flex-center-vertial"
onclick="RemoveCart('Cart-{{ CartIndex }}')">
<span class="text-gray-700 fs-12 pt-4">すべてクリア</span>
<img src="/stylesheets/images/icons-svg/trash_gray.svg"
alt="icon delete all"/>
</div>
</div>
{% endif %}
{% if RepartData is not null %}
<p class="repart">{{ 'front.Cart.Repeat'|trans }} {{ 'ftont.Order_id.name'|trans }}
:{{ RepartData.ohid }}</p>
{% endif %}
{{ include('Cart/Parts/table.twig') }}
</div>
</div>
<div class="cart-footer">
<div class="footer-row font-20 mr-5">
<div class="item-title">{{ eccube_config.ESTIMATE_TEXT.Text20 }}:</div>
<div
class="item-value">{{ totalQuantity }}{{ eccube_config.ESTIMATE_TEXT.Text04 }}</div>
</div>
{% if LargeDiscount > 0 %}
<div class="footer-row font-20 mr-5">
<div class="item-title">{{ 'common.total__with_separator'|trans }}</div>
<div class="item-value">{{ ProductTotal|LmPrice }}</div>
</div>
<div class="footer-row font-20 mr-5">
<div class="item-title">{{ ItemType(8) }}({{ LargeDiscountRitu }}%):</div>
<div class="item-value">{{ LargeDiscount|LmPrice }}</div>
</div>
{% endif %}
{% if LmCartType() != 3 %}
<div class="footer-row font-24 mr-5">
<div class="item-title color-red">{{ 'front.cart_message01'|trans }}:</div>
<div class="item-value color-red font-bold">{{ totalPrice|LmPrice }}</div>
</div>
{% endif %}
</div>
<div class="cart-footer">
<div class="group-button">
<div class="button-group-wrapper" style="display: flex; align-items: center; gap: 0;">
<a class="left_btn mr-5" href="{{ CartBackBtn() }}">
<div class="button left-btn">
◀
{% if LmCartType() == 3 %}
{{ 'front.cart.type_3_back'|trans }}
{% else %}
{{ 'front.cart.continue'|trans }}
{% endif %}
</div>
</a>
<a href="/kakaku-confidence/" target="_blank" class="ml-5">
<img src="https://img0.land-mark.biz/ut_img/public_images/top/kakaku-confidence.png" alt="empty cart"/>
</a>
</div>
<a class="right_btn{% if not isItemsStockAvailable or isSusoageChange %} disabledBtn{% endif %}" href="{{ path('cart_buystep', {'cart_key':cartKey}) }}">
<div class="button right-btn">
{% if LmCartType() == 3 %}
{{ 'front.cart.type_3_continue'|trans }}
{% else %}
次へ(レジへ進む)
{% endif %}
▶
</div>
</a>
</div>
</div>
<div class="cart-footer">
<div class="group-message group-message-{{ LmCartType() }}">
{% if LmCartType() == 3 %}
<div class="sample color-red">
<p class="title fs-16 lh-19">サンプル申し込みにつきまして</p>
<p class="fs-13 lh-19">※10点まで。金額無制限です。</p>
<p class="fs-13 lh-19">※名入れ処理はできません。</p>
<p class="fs-13 lh-19">
※通常購入の商品とサンプル申込みの商品を同一のカートに入れることはできません。</p>
<p class="fs-13 lh-19">
※通常の購入を行う場合は、サンプル申込みが完了してからお願いいたします。</p>
</div>
{% else %}
<div class="quotation">
<button id="mitsumoriBtn2" class="SF-nonDisplay mBtnStyle">見積書<br>印刷・メールする
</button>
</div>
<div class="guide">
<p>{{ 'front.cart_message02'|trans|Base }}</p>
<p>{{ 'front.cart_message03'|trans|Base }}</p>
<p>{{ 'front.cart_message04'|trans }}</p>
</div>
{% endif %}
</div>
{% if LmCartType() < 3 %}
<div class="group-message-center">
{% if BaseInfo.delivery_free_amount %}
{% if is_delivery_free[cartKey] %}
<div class="free-shipping-message">
<p class="title">10,000円<span class="title-1">(税込)</span>以上のご注文のため、
</p>
<p class="title"><span class="title-2">送料が無料</span>です。</p>
<p>※10,000円以上の場合、全国一律
送料770円(税込)が無料サービスとなります。</p>
<p>
※一部の地域(離島)につきましては、別途送料をご請求させていただきます。</p>
<p>※お支払い方法が「後払い」の場合は、後払い手数料が無料になります。</p>
</div>
{% else %}
<div class="free-shipping-message">
<p>あと <span> {{ least[cartKey]|LmPrice }}</span><span>(税込)</span>
で送料・代引手数料が無料です。</p>
<p>{{ 'front.cart_message05'|trans|Base }}</p>
<p>{{ 'front.cart_message06'|trans }}</p>
<p>{{ 'front.cart_message07'|trans }}</p>
</div>
{% endif %}
{% endif %}
</div>
{% endif %}
</div>
{% endfor %}
</form>
{% if LmCartType() < 3 %}
{{ include('Cart/Parts/ItemAlsoBuy.twig') }}
{% endif %}
</div>
{% else %}
<div class="ec-cartRole__error">
{% for error in app.session.flashbag.get('eccube.front.cart.request.error') %}
<div class="ec-alert-warning">
<div class="ec-alert-warning__icon">
<img src="{{ asset('assets/icon/exclamation-white.svg') }}">
</div>
<div class="ec-alert-warning__text">
{{ error|trans|nl2br }}
</div>
</div>
{% endfor %}
</div>
<div class="ec-alert-warning">
{{ ExclusionControl()|raw }}
</div>
<div class="flex-center py-12">
<img src="/stylesheets/images/icons-svg/empty-cart-warning.svg" alt="empty cart"/>
</div>
<div class="flex-center py-12">
<div id="noitem_btn">
<a class="pc" href="{{ CartBackBtn() }}">◀ {{ 'front.cart.continue'|trans }}</a>
</div>
</div>
{% endif %}
{% endif %}
{% endblock %}