<!--ФОРМИРОВАНИЕ ЗАЛОГА ЗА ТАРУ В КОРЗИНЕ-->
<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>
More products
Made on
Tilda