[-] CORE : Fix bug last part #PSCFV-8636, cart rule with a reduction and free shipping
This commit is contained in:
+6
-2
@@ -2870,8 +2870,12 @@ class CartCore extends ObjectModel
|
|||||||
{
|
{
|
||||||
$cart_rule['value_real'] -= $total_shipping;
|
$cart_rule['value_real'] -= $total_shipping;
|
||||||
$cart_rule['value_tax_exc'] -= $total_shipping_tax_exc;
|
$cart_rule['value_tax_exc'] -= $total_shipping_tax_exc;
|
||||||
$total_discounts -= $total_shipping;
|
$cart_rule['value_real'] = Tools::ps_round($cart_rule['value_real'], (int)$context->currency->decimals * _PS_PRICE_DISPLAY_PRECISION_);
|
||||||
$total_discounts_tax_exc -= $total_shipping_tax_exc;
|
$cart_rule['value_tax_exc'] = Tools::ps_round($cart_rule['value_tax_exc'], (int)$context->currency->decimals * _PS_PRICE_DISPLAY_PRECISION_);
|
||||||
|
if ($total_discounts > $cart_rule['value_real'])
|
||||||
|
$total_discounts -= $total_shipping;
|
||||||
|
if ($total_discounts_tax_exc > $cart_rule['value_tax_exc'])
|
||||||
|
$total_discounts_tax_exc -= $total_shipping_tax_exc;
|
||||||
|
|
||||||
// Update total shipping
|
// Update total shipping
|
||||||
$total_shipping = 0;
|
$total_shipping = 0;
|
||||||
|
|||||||
@@ -912,7 +912,7 @@ class CartRuleCore extends ObjectModel
|
|||||||
if ($cart_vat_amount == 0 || $cart_amount_te == 0)
|
if ($cart_vat_amount == 0 || $cart_amount_te == 0)
|
||||||
$cart_average_vat_rate = 0;
|
$cart_average_vat_rate = 0;
|
||||||
else
|
else
|
||||||
$cart_average_vat_rate = $cart_vat_amount / $cart_amount_te;
|
$cart_average_vat_rate = Tools::ps_round($cart_vat_amount / $cart_amount_te, 3);
|
||||||
|
|
||||||
if ($this->reduction_tax && !$use_tax)
|
if ($this->reduction_tax && !$use_tax)
|
||||||
$reduction_value += $prorata * $reduction_amount / (1 + $cart_average_vat_rate);
|
$reduction_value += $prorata * $reduction_amount / (1 + $cart_average_vat_rate);
|
||||||
|
|||||||
@@ -429,13 +429,14 @@ abstract class PaymentModuleCore extends Module
|
|||||||
|
|
||||||
// Set the new voucher value
|
// Set the new voucher value
|
||||||
if ($voucher->reduction_tax)
|
if ($voucher->reduction_tax)
|
||||||
$voucher->reduction_amount = $values['tax_incl'] - $order->total_products_wt;
|
$voucher->reduction_amount = $values['tax_incl'] - $order->total_products_wt - $order->total_shipping_tax_incl;
|
||||||
else
|
else
|
||||||
$voucher->reduction_amount = $values['tax_excl'] - $order->total_products;
|
$voucher->reduction_amount = $values['tax_excl'] - $order->total_products - $order->total_shipping_tax_excl;
|
||||||
|
|
||||||
$voucher->id_customer = $order->id_customer;
|
$voucher->id_customer = $order->id_customer;
|
||||||
$voucher->quantity = 1;
|
$voucher->quantity = 1;
|
||||||
$voucher->quantity_per_user = 1;
|
$voucher->quantity_per_user = 1;
|
||||||
|
$voucher->free_shipping = 0;
|
||||||
if ($voucher->add())
|
if ($voucher->add())
|
||||||
{
|
{
|
||||||
// If the voucher has conditions, they are now copied to the new voucher
|
// If the voucher has conditions, they are now copied to the new voucher
|
||||||
|
|||||||
@@ -655,9 +655,9 @@ function updateCartSummary(json)
|
|||||||
location.reload();
|
location.reload();
|
||||||
|
|
||||||
if (priceDisplayMethod !== 0)
|
if (priceDisplayMethod !== 0)
|
||||||
$('#total_discount').html(formatCurrency(json.total_discounts_tax_exc, currencyFormat, currencySign, currencyBlank));
|
$('#total_discount').html('-' + formatCurrency(json.total_discounts_tax_exc, currencyFormat, currencySign, currencyBlank));
|
||||||
else
|
else
|
||||||
$('#total_discount').html(formatCurrency(json.total_discounts, currencyFormat, currencySign, currencyBlank));
|
$('#total_discount').html('-' + formatCurrency(json.total_discounts, currencyFormat, currencySign, currencyBlank));
|
||||||
|
|
||||||
$('.cart_discount').each(function(){
|
$('.cart_discount').each(function(){
|
||||||
var idElmt = $(this).attr('id').replace('cart_discount_','');
|
var idElmt = $(this).attr('id').replace('cart_discount_','');
|
||||||
@@ -667,10 +667,12 @@ function updateCartSummary(json)
|
|||||||
if (json.discounts[i].id_discount == idElmt)
|
if (json.discounts[i].id_discount == idElmt)
|
||||||
{
|
{
|
||||||
if (json.discounts[i].value_real !== '!')
|
if (json.discounts[i].value_real !== '!')
|
||||||
|
{
|
||||||
if (priceDisplayMethod !== 0)
|
if (priceDisplayMethod !== 0)
|
||||||
$('#cart_discount_' + idElmt + ' td.cart_discount_price span.price-discount').html(formatCurrency(json.discounts[i].value_tax_exc * -1, currencyFormat, currencySign, currencyBlank));
|
$('#cart_discount_' + idElmt + ' td.cart_discount_price span.price-discount').html(formatCurrency(json.discounts[i].value_tax_exc * -1, currencyFormat, currencySign, currencyBlank));
|
||||||
else
|
else
|
||||||
$('#cart_discount_' + idElmt + ' td.cart_discount_price span.price-discount').html(formatCurrency(json.discounts[i].value_real * -1, currencyFormat, currencySign, currencyBlank));
|
$('#cart_discount_' + idElmt + ' td.cart_discount_price span.price-discount').html(formatCurrency(json.discounts[i].value_real * -1, currencyFormat, currencySign, currencyBlank));
|
||||||
|
}
|
||||||
toDelete = false;
|
toDelete = false;
|
||||||
}
|
}
|
||||||
if (toDelete)
|
if (toDelete)
|
||||||
|
|||||||
Reference in New Issue
Block a user