<!-- Ограничить ввод промокода по сумме заказа https://dabreeze.ru/blog/summ-promocode -->
<script>
(function () {
var MINIMUM = 10000;
function init() {
var cart = document.querySelector('.t706');
var group = cart && cart.querySelector('.t-input-group_pc[data-input-lid]');
var record = cart && cart.closest('[id^="rec"]');
if (!group || !record) return;
var cartId = record.id.slice(3);
var promoFieldId = group.getAttribute('data-input-lid');
var wrapper = group.querySelector('.t-inputpromocode__wrapper');
if (!wrapper) return;
var originalField = wrapper.cloneNode(true);
var resetting = false;
var scheduled = false;
function subtotal() {
var amount = window.tcart && Number(window.tcart.prodamount);
if (Number.isFinite(amount)) return amount;
var price = cart.querySelector(
'.t706__cartpage-prodamount .t706__cartwin-prodamount-price'
);
if (!price) return 0;
amount = Number(
price.textContent.replace(/[\s\u00a0]/g, '').replace(',', '.')
);
return Number.isFinite(amount) ? amount : 0;
}
function clearWarning() {
var warning = group.querySelector('.promo-minimum-warning');
if (warning) warning.remove();
}
function showWarning(message) {
var warning = group.querySelector('.promo-minimum-warning');
if (!warning) {
warning = document.createElement('div');
warning.className = 'promo-minimum-warning t-descr t-descr_xxs';
warning.setAttribute('role', 'alert');
warning.style.cssText = 'margin-top:8px;color:#a52a2a';
group.querySelector('.t-input-block').appendChild(warning);
}
warning.textContent = message;
}
function revokeIfBelowMinimum() {
if (resetting) return;
if (subtotal() >= MINIMUM) {
clearWarning();
return;
}
if (!window.tcart) return;
var field = group.querySelector('.t-inputpromocode__wrapper');
var promoApplied =
!!window.tcart.promocode ||
!!(window.cartCalculator &&
window.cartCalculator.appliedPromocode) ||
!!(field && !field.querySelector('.t-inputpromocode'));
if (!promoApplied) return;
resetting = true;
try {
delete window.tcart.promocode;
if (window.cartCalculator) {
window.cartCalculator.appliedPromocode = null;
}
tcart__updateTotalProductsinCartObj();
tcart__reDrawTotal();
tcart__saveLocalObj();
if (field && !field.querySelector('.t-inputpromocode')) {
var restored = originalField.cloneNode(true);
var input = restored.querySelector('.t-inputpromocode');
var button = restored.querySelector('.t-inputpromocode__btn');
if (input) input.value = '';
if (button) button.style.display = 'none';
field.replaceWith(restored);
t_input_promocode_init(cartId, promoFieldId);
}
showWarning(
'Промокод отменён: сумма товаров стала меньше 10 000 ₽.'
);
} finally {
resetting = false;
}
}
cart.addEventListener('click', function (event) {
var button = event.target.closest('.t-inputpromocode__btn');
if (button && button.closest('.t-input-group_pc[data-input-lid]') === group) {
if (subtotal() >= MINIMUM) {
clearWarning();
return;
}
event.preventDefault();
event.stopImmediatePropagation();
var input = group.querySelector('.t-inputpromocode');
if (input) {
input.value = '';
input.dispatchEvent(new Event('input', { bubbles: true }));
}
showWarning(
'Промокод действует при сумме товаров от 10 000 ₽.'
);
return;
}
if (event.target.closest(
'.t706__product-minus, .t706__product-plus, .t706__product-del'
)) {
setTimeout(revokeIfBelowMinimum, 0);
}
if (event.target.closest('.t-submit')) {
revokeIfBelowMinimum();
}
}, true);
cart.addEventListener('submit', revokeIfBelowMinimum, true);
cart.addEventListener('input', function (event) {
if (event.target.matches('.t-inputpromocode')) {
clearWarning();
}
});
new MutationObserver(function () {
if (scheduled || resetting) return;
scheduled = true;
requestAnimationFrame(function () {
scheduled = false;
revokeIfBelowMinimum();
});
}).observe(cart, {
childList: true,
characterData: true,
subtree: true
});
revokeIfBelowMinimum();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
</script>