But still, why is this behavior in the checkout different as in the cart module?
That is still not answered. this is confusing and not congruent. So this must be an error on the checkout page or all the other pages/modules?!?
Checkout: brutto amount equals netto amount (tax not added) — cart module calculates correctly, checkout page does not
-
OlafR
- Phoca Newbie

- Posts: 7
- Joined: 13 Aug 2026, 16:29
- Jan
- Phoca Hero

- Posts: 49569
- Joined: 10 Nov 2007, 18:23
- Location: Czech Republic
- Contact:
Re: Checkout: brutto amount equals netto amount (tax not added) — cart module calculates correctly, checkout page does n
Hi, this is only about how to interpret the view - if x way or y way. Communit just selected the current way for the checkout. Checkout and cart are different views - one is really small view to only inform about the items in cart, the second is complete checkout info for users and there are possible two ways (how to display the rows or columns amounts) and the current way was just selected. So for now, the checkout view can be changed in template override for displaying it in opposite way 
If you find Phoca extensions useful, please support the project
- Nidzo
- Phoca Expert

- Posts: 564
- Joined: 07 Nov 2018, 14:55
Re: Checkout: brutto amount equals netto amount (tax not added) — cart module calculates correctly, checkout page does n
Or maybe to implement it in core as option:
Use X way
Use Y way

Use X way
Use Y way
-
OlafR
- Phoca Newbie

- Posts: 7
- Joined: 13 Aug 2026, 16:29
Re: Checkout: brutto amount equals netto amount (tax not added) — cart module calculates correctly, checkout page does n
I assume that this will not be resolved so i added the script to my template (it is adding the VAT and Brutto together and displays the correct value back in the Brutto field:
// Checkout: the 'Price' column per row shows netto instead of brutto (Phoca Cart bug) —
// add the tax ourselves and display the corrected total.
document.addEventListener('DOMContentLoaded', function () {
var checkoutBox = document.getElementById('ph-pc-checkout-box');
if (!checkoutBox) return; // only run on the checkout page
function parseEuro(text) {
if (!text) return 0;
var cleaned = text.replace('€', '').trim();
// strip thousands-separator dots, comma -> dot
cleaned = cleaned.replace(/\./g, '').replace(',', '.');
var val = parseFloat(cleaned);
return isNaN(val) ? 0 : val;
}
function formatEuro(value) {
var negative = value < 0;
value = Math.abs(value);
var parts = value.toFixed(2).split('.');
var intPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, '.');
return (negative ? '- ' : '') + '€ ' + intPart + ',' + parts[1];
}
function fixCheckoutBrutoPrices() {
checkoutBox.querySelectorAll('.ph-checkout-cart-row-item').forEach(function (row) {
var taxEl = row.querySelector('.ph-checkout-cart-tax');
var bruttoEl = row.querySelector('.ph-checkout-cart-brutto');
if (!taxEl || !bruttoEl || bruttoEl.dataset.phBrutoFixed) return;
var tax = parseEuro(taxEl.textContent);
var wronglyNetto = parseEuro(bruttoEl.textContent);
bruttoEl.textContent = formatEuro(wronglyNetto + tax);
bruttoEl.dataset.phBrutoFixed = '1';
});
}
fixCheckoutBrutoPrices();
// Phoca refreshes this block via AJAX (e.g. on quantity change) — re-apply
var debounceTimer;
new MutationObserver(function () {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(fixCheckoutBrutoPrices, 50);
}).observe(checkoutBox, { childList: true, subtree: true });
});
// Checkout: the 'Price' column per row shows netto instead of brutto (Phoca Cart bug) —
// add the tax ourselves and display the corrected total.
document.addEventListener('DOMContentLoaded', function () {
var checkoutBox = document.getElementById('ph-pc-checkout-box');
if (!checkoutBox) return; // only run on the checkout page
function parseEuro(text) {
if (!text) return 0;
var cleaned = text.replace('€', '').trim();
// strip thousands-separator dots, comma -> dot
cleaned = cleaned.replace(/\./g, '').replace(',', '.');
var val = parseFloat(cleaned);
return isNaN(val) ? 0 : val;
}
function formatEuro(value) {
var negative = value < 0;
value = Math.abs(value);
var parts = value.toFixed(2).split('.');
var intPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, '.');
return (negative ? '- ' : '') + '€ ' + intPart + ',' + parts[1];
}
function fixCheckoutBrutoPrices() {
checkoutBox.querySelectorAll('.ph-checkout-cart-row-item').forEach(function (row) {
var taxEl = row.querySelector('.ph-checkout-cart-tax');
var bruttoEl = row.querySelector('.ph-checkout-cart-brutto');
if (!taxEl || !bruttoEl || bruttoEl.dataset.phBrutoFixed) return;
var tax = parseEuro(taxEl.textContent);
var wronglyNetto = parseEuro(bruttoEl.textContent);
bruttoEl.textContent = formatEuro(wronglyNetto + tax);
bruttoEl.dataset.phBrutoFixed = '1';
});
}
fixCheckoutBrutoPrices();
// Phoca refreshes this block via AJAX (e.g. on quantity change) — re-apply
var debounceTimer;
new MutationObserver(function () {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(fixCheckoutBrutoPrices, 50);
}).observe(checkoutBox, { childList: true, subtree: true });
});