Jump to content

Prezzo degli articoli che si aggiorna in base alla quantità


Recommended Posts

Salve a tutti,

sto testando una funzione che permetta, nella scheda degli articoli, di aggiornare il prezzo quando si modifica la quantità del prodotto. Questo a mio avviso semplifica e aiuta chi acquista. Avevo chiesto ad un amico se era possibile farlo semplicemente senza ricorrere a moduli etc. In 20 minuti mi scrisse il seguente codice che sul sito con Prestashop 1.7.7.8 va ancora alla grande. Visto che sto aggiornando il tutto alla versione 8.1.3 ho provato lo stesso codice che funziona ma con un problema, il prezzo si aggiorna ma dopo pochi secondi ritorna quello base (gli articoli hanno tutti 3 diverse opzioni, il risultato voluto è che il prezzo mostrato sia coerente con l'opzione scelta e il numero di articoli selezionati. ES: scelgo opzione1 €5,00 e seleziono 3 come quantità, il prezzo mostrato dovrebbe essere €15,00).

Le condizioni di test sono le seguenti: PHP 8.1.27, Prestashop 8.1.3, Tema installato boom17 v1.1.4 - Sviluppato da ETS-Soft 

Modifica al file \themes\boom17\assets\js\custom.js aggiungendo la seguente funzione:

$(function() {
     let current_product_price = parseFloat($('.product-price .current-price span').attr('content'));

    $( '#quantity_wanted' ).on('keyup', function() {
        if ($(this).val() && $(this).val() >= 0) {
            if (parseFloat($('.product-price .current-price span').attr('content')) != current_product_price) {
                current_product_price = parseFloat($('.product-price .current-price span').attr('content'))
            }
            let new_price = $(this).val() * current_product_price;
            let new_price_formatted = ($(this).val() * current_product_price).toFixed(2).replace('.', ',') + ' €';

            $('.product-price .current-price span').text(new_price_formatted);
        }
    });

    $('.product-quantity .bootstrap-touchspin-up, .product-quantity .bootstrap-touchspin-down').on('click', function() {
        let quantity = $('#quantity_wanted').val();

        if (quantity && quantity >= 0) {
            if (parseFloat($('.product-price .current-price span').attr('content')) != current_product_price) {
                current_product_price = parseFloat($('.product-price .current-price span').attr('content'))
            }
            
            let new_price = quantity * current_product_price;
            let new_price_formatted = (quantity * current_product_price).toFixed(2).replace('.', ',') + ' €';

            $('.product-price .current-price span').text(new_price_formatted);
        }
    });
 });

 

se qualcuno avesse suggerimenti o indicazioni sarebbe di aiuto. Potete utilizzare liberamente il codice.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...