<!--ФОРМИРОВАНИЕ ЗАЛОГА ЗА ТАРУ В КОРЗИНЕ-->
<script>
document.addEventListener("DOMContentLoaded", function() {
(function () {
const depositName = 'Залог за тару'; //Название для залога
const depositPrice = 500.4; //Цена для залога
const depositImage = 'https://static.tildacdn.com/tild3162-6339-4064-b533-383966623836/image.png'; //Картинка для залога
const searchWord = '19 л'; //Искомое слово в товарах
const exceptionWord = 'ПЭТ'; //Слово исключение в товарах
let cart = '';
//Отслеживаем изменения в коризне
setTimeout(function() {
cart = document.querySelector('.t706');
correctProductCount();
if(cart!=null){
cart.setAttribute('data-cart-countdown', 'no');
const observer = new MutationObserver(mutationRecords => {
checkProductInCart(cart);
correctProductCount();
});
const elem = document.querySelector('.t706__cartwin-prodamount');
observer.observe(elem, {
childList: true,
subtree: true,
characterDataOldValue: true
});
};
}, 1000);
//Коррекция кол-ва товара у иконки корзины
//Коррекция минимального заказа
function correctProductCount(){
const cartMinOrder = +cart.getAttribute('data-cart-minorder');
const cartMinCountOrder = +cart.getAttribute('data-cart-mincntorder');
const cartIcon = document.querySelector('.t706__carticon-counter');
const productsList = tcart.products;
let totalQuant = +tcart.total;
let totalAmount = +tcart.amount;
let depositQuant = 0;
let depositPrice = 0;
if(productsList.length){
for(let i=0; i<productsList.length;i++){
const productName = productsList[i]['name'];
if(productName==depositName){
depositQuant = +productsList[i]['quantity'];
depositPrice = +productsList[i]['amount'];
};
};
totalQuant = totalQuant - depositQuant;
//totalAmount = totalAmount - depositPrice;
cartIcon.setAttribute('data-total-correct' , totalQuant );
if(cartMinCountOrder!=null){
if(depositQuant>0){
if(totalQuant<cartMinCountOrder){
window.tcart_mincntorder = cartMinCountOrder+depositQuant;
}else{
window.tcart_mincntorder = cartMinCountOrder;
};
}else{
window.tcart_mincntorder = cartMinCountOrder;
};
};
// if(cartMinOrder!=null){
// if(depositQuant>0){
// if(totalQuant<cartMinOrder){
// window.tcart_minorder = cartMinOrder+depositPrice;
// }else{
// window.tcart_minorder = cartMinOrder;
// };
// }else{
// window.tcart_minorder = cartMinOrder;
// };
// };
tcart__updateMinimals();
setTimeout(function() {
const minCountOrderMessages = cart.querySelectorAll('.t706__cartwin-prodamount-mincntorder');
const minOrderMessages = cart.querySelectorAll('.t706__cartwin-prodamount-minorder');
if(minCountOrderMessages.length){
if(totalQuant>=cartMinCountOrder){
for(let i=0; i<minCountOrderMessages.length;i++){
minCountOrderMessages[i].classList.add('hide-minimal');
};
}else{
for(let i=0; i<minCountOrderMessages.length;i++){
minCountOrderMessages[i].classList.remove('hide-minimal');
};
};
};
if(minOrderMessages.length){
if(totalAmount>=cartMinOrder){
for(let i=0; i<minOrderMessages.length;i++){
minOrderMessages[i].classList.add('hide-minimal');
};
}else{
for(let i=0; i<minOrderMessages.length;i++){
minOrderMessages[i].classList.remove('hide-minimal');
};
};
};
}, 150);
const minCountErrors = cart.querySelectorAll('.js-rule-error-minquantity');
for(let i=1; i<minCountErrors.length;i++){
minCountErrors[i].remove();
};
const minOrderErrors = cart.querySelectorAll('.js-rule-error-minorder');
for(let i=1; i<minOrderErrors.length;i++){
minOrderErrors[i].remove();
};
};
};
document.addEventListener('click', function(event) {
if(event.target.closest('a[href^="#order"]')) correctProductCount();
});
//Проверка попадания искомого товара в корзину
function checkProductInCart(cart){
let searchProductCount = 0;
const productsList = tcart.products;
if(productsList.length){
let depositInCart = false;
let depositInCartPrice = 0;
let depositInCartIndex = 0;
for(let i=0; i<productsList.length;i++){
const productName = productsList[i]['name'];
//Если искомое слово найдено и в названии нет исключения
if( productName.includes(searchWord) && !productName.includes(exceptionWord) ){
//Считаем общее кол-во товаров
searchProductCount += +productsList[i]['quantity'];
};
//Если в корзине найден залог, то получаем его общую стоимость
if(productName==depositName){
depositInCart = true;
depositInCartIndex = i;
depositInCartPrice = +productsList[i]['amount'];
markDepositeInCart(cart,depositInCartIndex);
};
};
//Считаем сумму залога по кол-ву искомых товаров
const fullPrice = +((searchProductCount*depositPrice).toFixed(1));
//Если у залога есть цена И если она отличается от предыдущей
if(fullPrice>0){
//Если залог уже в корзине
if(depositInCart){
if(fullPrice!=depositInCartPrice){
productsList[depositInCartIndex]['amount'] = fullPrice;
productsList[depositInCartIndex]['price'] = depositPrice;
productsList[depositInCartIndex]['quantity'] = searchProductCount;
updateCart();
};
//Если залога ещё нет в корзине
}else{
addDeposite(fullPrice,searchProductCount);
};
//Если залог не нужен
}else{
//И если залог был уже в корзине, то удаляем его
if(depositInCart){
deleteDeposite(depositInCartIndex);
};
};
};
};
//Удаляем залог из корзины
function deleteDeposite(depositInCartIndex){
let productsList = tcart.products;
let deletedProduct = productsList.splice(depositInCartIndex, 1);
updateCart();
};
//Добавляем залог в корзину
function addDeposite(fullPrice,searchProductCount){
const depositeObj = {
"name": depositName,
"price": depositPrice,
"img": depositImage,
"recid": "",
"lid": "",
"pack_label": "",
"pack_m": "",
"pack_x": "",
"pack_y": "",
"pack_z": "",
"part_uids": [""],
"gen_uid": "",
"url": location.href,
"quantity": searchProductCount,
"amount": fullPrice,
"ts": Date.now()
};
tcart.products.push(depositeObj);
updateCart();
};
//Помечаем залоговый товар в корзине
function markDepositeInCart(cart,depositInCartIndex){
cart.querySelector('[data-cart-product-i="'+depositInCartIndex+'"]').classList.add('marked-deposite');
};
function updateCart(){
tcart__saveLocalObj();
tcart__syncProductsObject__LStoObj();
tcart__reDrawTotal();
tcart__reDrawCartIcon();
tcart__reDrawProducts();
};
})();
});
</script>
<style>
.hide-minimal{
display: none;
}
.t706__product.marked-deposite {
/*opacity: 0.3;*/
pointer-events: none;
order: 1;
}
.t706__cartwin-products {
display: grid;
}
.t706__product {
border-radius: 7px;
padding: 10px;
}
.t706__carticon-counter {
font-size: 0;
}
.t706__carticon-counter:after {
content: attr(data-total-correct);
font-size: 16px;
}
.t706__product-imgdiv {
background-size: contain;
background-repeat: no-repeat;
background-position: center;
background-color: #fff;
}
.t706__product.marked-deposite .t706__product-minus,
.t706__product.marked-deposite .t706__product-plus{
display: none;
}
.t706__product.marked-deposite .t706__product-del-wrapper {
display: none !important;!i;!;
}
.t706__product.marked-deposite .t706__product-amount {
text-align: right;
}
</style>