// fix for price computation with combination in product page FO
This commit is contained in:
1 parent
a07a3204ea
commit
d90902b569
1 file changed
+35
-33
@@ -148,6 +148,9 @@ function findCombination(firstTime)
|
|||||||
//update display of the availability of the product AND the prices of the product
|
//update display of the availability of the product AND the prices of the product
|
||||||
function updateDisplay()
|
function updateDisplay()
|
||||||
{
|
{
|
||||||
|
var productPriceDisplay = productPrice;
|
||||||
|
var productPriceWithoutReductionDisplay = productPriceWithoutReduction;
|
||||||
|
|
||||||
if (!selectedCombination['unavailable'] && quantityAvailable > 0 && productAvailableForOrder == 1)
|
if (!selectedCombination['unavailable'] && quantityAvailable > 0 && productAvailableForOrder == 1)
|
||||||
{
|
{
|
||||||
//show the choice of quantities
|
//show the choice of quantities
|
||||||
@@ -303,6 +306,22 @@ function updateDisplay()
|
|||||||
|
|
||||||
var tax = (taxRate / 100) + 1;
|
var tax = (taxRate / 100) + 1;
|
||||||
|
|
||||||
|
var reduction = 0;
|
||||||
|
if (selectedCombination['specific_price'].reduction_price || selectedCombination['specific_price'].reduction_percent)
|
||||||
|
{
|
||||||
|
reduction_price = (specific_currency ? selectedCombination['specific_price'].reduction_price : selectedCombination['specific_price'].reduction_price * currencyRate);
|
||||||
|
reduction = productPriceDisplay * (parseFloat(selectedCombination['specific_price'].reduction_percent) / 100) + reduction_price;
|
||||||
|
if (reduction_price && (displayPrice || noTaxForThisProduct))
|
||||||
|
reduction = ps_round(reduction / tax, 6);
|
||||||
|
}
|
||||||
|
else if (product_specific_price.reduction_price || product_specific_price.reduction_percent)
|
||||||
|
{
|
||||||
|
reduction_price = (specific_currency ? product_specific_price.reduction_price : product_specific_price.reduction_price * currencyRate);
|
||||||
|
reduction = productPriceDisplay * (parseFloat(product_specific_price.reduction_percent) / 100) + reduction_price;
|
||||||
|
if (reduction_price && (displayPrice || noTaxForThisProduct))
|
||||||
|
reduction = ps_round(reduction / tax, 6);
|
||||||
|
}
|
||||||
|
|
||||||
if (selectedCombination.specific_price)
|
if (selectedCombination.specific_price)
|
||||||
{
|
{
|
||||||
if (selectedCombination['specific_price'].reduction_type == 'percentage')
|
if (selectedCombination['specific_price'].reduction_type == 'percentage')
|
||||||
@@ -311,7 +330,7 @@ function updateDisplay()
|
|||||||
$('#reduction_percent_display').html('-' + parseFloat(selectedCombination['specific_price'].reduction_percent) + '%');
|
$('#reduction_percent_display').html('-' + parseFloat(selectedCombination['specific_price'].reduction_percent) + '%');
|
||||||
$('#reduction_percent').show();
|
$('#reduction_percent').show();
|
||||||
} else if (selectedCombination['specific_price'].reduction_type == 'amount' && selectedCombination['specific_price'].reduction_price != 0) {
|
} else if (selectedCombination['specific_price'].reduction_type == 'amount' && selectedCombination['specific_price'].reduction_price != 0) {
|
||||||
$('#reduction_amount_display').html('-' + formatCurrency(selectedCombination['specific_price'].reduction_price, currencyFormat, currencySign, currencyBlank));
|
$('#reduction_amount_display').html('-' + formatCurrency(reduction_price, currencyFormat, currencySign, currencyBlank));
|
||||||
$('#reduction_percent').hide();
|
$('#reduction_percent').hide();
|
||||||
$('#reduction_amount').show();
|
$('#reduction_amount').show();
|
||||||
} else {
|
} else {
|
||||||
@@ -343,61 +362,44 @@ function updateDisplay()
|
|||||||
var taxExclPrice = priceTaxExclWithoutGroupReduction + (selectedCombination['price'] * currencyRate);
|
var taxExclPrice = priceTaxExclWithoutGroupReduction + (selectedCombination['price'] * currencyRate);
|
||||||
|
|
||||||
if (!displayPrice && !noTaxForThisProduct)
|
if (!displayPrice && !noTaxForThisProduct)
|
||||||
productPrice = taxExclPrice * tax; // Need to be global => no var
|
productPriceDisplay = taxExclPrice * tax; // Need to be global => no var
|
||||||
else
|
else
|
||||||
productPrice = ps_round(taxExclPrice, 2); // Need to be global => no var
|
productPriceDisplay = ps_round(taxExclPrice, 2); // Need to be global => no var
|
||||||
|
|
||||||
|
productPriceWithoutReductionDisplay = productPriceDisplay * group_reduction;
|
||||||
|
|
||||||
var reduction = 0;
|
productPriceDisplay -= reduction;
|
||||||
if (selectedCombination['specific_price'].reduction_price || selectedCombination['specific_price'].reduction_percent)
|
var tmp = productPriceDisplay * group_reduction;
|
||||||
{
|
productPriceDisplay = ps_round(productPriceDisplay * group_reduction, 2);
|
||||||
selectedCombination['specific_price'].reduction_price = (specific_currency ? selectedCombination['specific_price'].reduction_price : selectedCombination['specific_price'].reduction_price * currencyRate);
|
|
||||||
reduction = productPrice * (parseFloat(selectedCombination['specific_price'].reduction_percent) / 100) + selectedCombination['specific_price'].reduction_price;
|
|
||||||
if (selectedCombination['specific_price'].reduction_price && (displayPrice || noTaxForThisProduct))
|
|
||||||
reduction = ps_round(reduction / tax, 6);
|
|
||||||
}
|
|
||||||
else if (product_specific_price.reduction_price || product_specific_price.reduction_percent)
|
|
||||||
{
|
|
||||||
product_specific_price.reduction_price = (specific_currency ? product_specific_price.reduction_price : product_specific_price.reduction_price * currencyRate);
|
|
||||||
reduction = productPrice * (parseFloat(product_specific_price.reduction_percent) / 100) + product_specific_price.reduction_price;
|
|
||||||
if (product_specific_price.reduction_price && (displayPrice || noTaxForThisProduct))
|
|
||||||
reduction = ps_round(reduction / tax, 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
productPriceWithoutReduction = productPrice * group_reduction;
|
|
||||||
|
|
||||||
productPrice -= reduction;
|
|
||||||
var tmp = productPrice * group_reduction;
|
|
||||||
productPrice = ps_round(productPrice * group_reduction, 2);
|
|
||||||
|
|
||||||
var ecotaxAmount = !displayPrice ? ps_round(selectedCombination['ecotax'] * (1 + ecotaxTax_rate / 100), 2) : selectedCombination['ecotax'];
|
var ecotaxAmount = !displayPrice ? ps_round(selectedCombination['ecotax'] * (1 + ecotaxTax_rate / 100), 2) : selectedCombination['ecotax'];
|
||||||
productPrice += ecotaxAmount;
|
productPriceDisplay += ecotaxAmount;
|
||||||
productPriceWithoutReduction += ecotaxAmount;
|
productPriceWithoutReductionDisplay += ecotaxAmount;
|
||||||
|
|
||||||
var our_price = '';
|
var our_price = '';
|
||||||
if (productPrice > 0) {
|
if (productPriceDisplay > 0) {
|
||||||
our_price = formatCurrency(productPrice, currencyFormat, currencySign, currencyBlank);
|
our_price = formatCurrency(productPriceDisplay, currencyFormat, currencySign, currencyBlank);
|
||||||
} else {
|
} else {
|
||||||
our_price = formatCurrency(0, currencyFormat, currencySign, currencyBlank);
|
our_price = formatCurrency(0, currencyFormat, currencySign, currencyBlank);
|
||||||
}
|
}
|
||||||
$('#our_price_display').text(our_price);
|
$('#our_price_display').text(our_price);
|
||||||
$('#old_price_display').text(formatCurrency(productPriceWithoutReduction, currencyFormat, currencySign, currencyBlank));
|
$('#old_price_display').text(formatCurrency(productPriceWithoutReductionDisplay, currencyFormat, currencySign, currencyBlank));
|
||||||
if (productPriceWithoutReduction > productPrice)
|
if (productPriceWithoutReductionDisplay > productPriceDisplay)
|
||||||
$('#old_price,#old_price_display,#old_price_display_taxes').show();
|
$('#old_price,#old_price_display,#old_price_display_taxes').show();
|
||||||
else
|
else
|
||||||
$('#old_price,#old_price_display,#old_price_display_taxes').hide();
|
$('#old_price,#old_price_display,#old_price_display_taxes').hide();
|
||||||
// Special feature: "Display product price tax excluded on product page"
|
// Special feature: "Display product price tax excluded on product page"
|
||||||
var productPricePretaxed = '';
|
var productPricePretaxed = '';
|
||||||
if (!noTaxForThisProduct)
|
if (!noTaxForThisProduct)
|
||||||
productPricePretaxed = productPrice / tax;
|
productPricePretaxed = productPriceDisplay / tax;
|
||||||
else
|
else
|
||||||
productPricePretaxed = productPrice;
|
productPricePretaxed = productPriceDisplay;
|
||||||
$('#pretaxe_price_display').text(formatCurrency(productPricePretaxed, currencyFormat, currencySign, currencyBlank));
|
$('#pretaxe_price_display').text(formatCurrency(productPricePretaxed, currencyFormat, currencySign, currencyBlank));
|
||||||
// Unit price
|
// Unit price
|
||||||
productUnitPriceRatio = parseFloat(productUnitPriceRatio);
|
productUnitPriceRatio = parseFloat(productUnitPriceRatio);
|
||||||
if (productUnitPriceRatio > 0 )
|
if (productUnitPriceRatio > 0 )
|
||||||
{
|
{
|
||||||
newUnitPrice = (productPrice / parseFloat(productUnitPriceRatio)) + selectedCombination['unit_price'];
|
newUnitPrice = (productPriceDisplay / parseFloat(productUnitPriceRatio)) + selectedCombination['unit_price'];
|
||||||
$('#unit_price_display').text(formatCurrency(newUnitPrice, currencyFormat, currencySign, currencyBlank));
|
$('#unit_price_display').text(formatCurrency(newUnitPrice, currencyFormat, currencySign, currencyBlank));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user