How can I add a product to the cart when cart total > 100

How can I add a product to the cart when cart total > 100

Stefano99
Shopify Partner
5 0 0

 

Hi, I can't move on.
I need that when a product is added to the cart, a check is made on the cart and if the total is equal to or greater than €77, a product 'X' is automatically added if it is not already present.

the code is good but has some errors.
1 The first time I add a product to the cart, product YYY is never added because the check on the cart is done when the value is still 0.

2. However, if I already have a product for example worth €100 in my cart and I add a second product, product 'X' is added but the second product is not added

 

 

          <script>
      
document.addEventListener('DOMContentLoaded', function() {
    console.log("Script caricato correttamente.");

    let isAddingProduct = false;

    document.querySelectorAll('form[action^="/cart/add"]').forEach(function(form) {
        form.addEventListener('submit', function(event) {
            console.log("Form di aggiunta al carrello intercettato.");

            if (isAddingProduct) {
                console.log("Operazione di aggiunta già in corso, prevenire duplicazioni.");
                event.preventDefault();
                return;
            }

            event.preventDefault();

            var formData = new FormData(form);
            var addedProductId = formData.get('id');
            var addedProductQuantity = formData.get('quantity') || 1;
            console.log("ID prodotto aggiunto:", addedProductId);
            console.log("Quantità prodotto aggiunto:", addedProductQuantity);

            isAddingProduct = true; // Imposta lo stato di aggiunta in corso

            
           fetch('/cart.js')
            .then(response => {
                if (!response.ok) {
                    return response.text().then(text => {
                        throw new Error("Errore nella risposta del carrello: " + response.statusText + " - " + text);
                    });
                }
                return response.json();
            })
            .then(cart => {
                console.log("Dati del carrello:", cart);

                var cartTotal = (cart.total_price / 100);
                console.log("Totale del carrello (con prodotto aggiunto):", cartTotal);

                var productYYYId = '49211712569640';
                console.log("ID prodotto YYY:", productYYYId);

                var productYYYInCart = cart.items.some(item => item.id == productYYYId);
                console.log("Prodotto YYY nel carrello?", productYYYInCart);

                if (cartTotal >= 77 && !productYYYInCart) {
                    console.log("Aggiunta del prodotto YYY al carrello.");
                    return fetch('/cart/add.js', {
                        method: 'POST',
                        headers: { 'Content-Type': 'application/json' },
                        body: JSON.stringify({ id: productYYYId, quantity: 1 })
                    });
                }
            })
            .then(() => {
                // Aggiorna il cart-drawer
                if (typeof openCartDrawer === 'function') {
                    openCartDrawer();
                } else {
                    console.log("Funzione openCartDrawer non definita.");
                }
            })
            .catch(error => {
                console.error("Errore durante la richiesta del carrello:", error);
            })
            .finally(() => {
                isAddingProduct = false;
            });
        });
    });
});
</script>
    

 

Replies 0 (0)