Bei PrestaShop ist es leider nicht möglich bei Auswahl eines neuen Staffelpreises den neuen Grundpreis automatisch zu berechnen. Somit verstösst man als Betreiber PrestaShop gegen die in Deutschland geltende Grundpreisverordnung. Abhilfe schafft das folgende Script.

Grundpreis in PrestaShop automatisch berechnen

Das folgende Script wird am Ende der product.tpl des aktiven PrestaShop Themes eingebunden. Es wird jedes Mal automatisch ausgelöst, wenn sich der angezeigte Produktpreis aufgrund der Preisstaffel in PrestaShop ändert. Der neue Grundpreis wird dynamisch errechnet und ohne Neuladen der Seite in PrestaShop angezeigt:

<script>

$(document).ready(function() {

    // --------------------------------------
    // -- Calculate changing base-prices
    // --------------------------------------
    // Get starting price and capacity
    //
    let pGros = parseFloat($('#our_price_display').html().replace(' €','').replace(',','.'));
    let basePrice = parseFloat($('.unit-price').text().replace(',','.').match(/.*?\..*?\s/));
    let capacity = pGros / basePrice;

    // Recalculate at every price change
    //
    $('#our_price_display').bind("DOMSubtreeModified",function(){

        pGros = parseFloat($('#our_price_display').html().replace(' €','').replace(',','.'));

        if(pGros) {
            let qty = parseInt($('#quantity_wanted').val());
            let basePriceUnit = $('.unit-price').text().match(/pro .*$/);
            basePrice = pGros / capacity;

            console.log('Price change detected: ' + pGros.toFixed(2).toString());
            console.log('Base-price: ' + basePrice.toFixed(2).toString());
            console.log('Base-price unit: ' + basePriceUnit);
            console.log('Quantity ' + qty.toString());

            // Update base-price display
            $('.unit-price').text(basePrice.toFixed(2).toString().replace('.', ',') + ' € ' + basePriceUnit);
        }
    });
});

</script>