Work with 4dp for discounts so totals add up. Closes #2476.
This commit is contained in:
parent
15e6b14b58
commit
35d5e2997a
File diff suppressed because one or more lines are too long
|
@ -963,7 +963,7 @@ ul.wc_coupon_list_block {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
input {
|
input {
|
||||||
width: 60px;
|
width: 70px;
|
||||||
vertical-align:middle;
|
vertical-align:middle;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1049,7 +1049,7 @@ class WC_Cart {
|
||||||
|
|
||||||
// Get item discount by dividing item cost by subtotal to get a %
|
// Get item discount by dividing item cost by subtotal to get a %
|
||||||
if ( $this->subtotal_ex_tax )
|
if ( $this->subtotal_ex_tax )
|
||||||
$discount_percent = ( $values['data']->get_price_excluding_tax()*$values['quantity'] ) / $this->subtotal_ex_tax;
|
$discount_percent = ( $values['data']->get_price_excluding_tax() * $values['quantity'] ) / $this->subtotal_ex_tax;
|
||||||
else
|
else
|
||||||
$discount_percent = 0;
|
$discount_percent = 0;
|
||||||
|
|
||||||
|
@ -1063,7 +1063,7 @@ class WC_Cart {
|
||||||
$item_discount = $item_discount / $values['quantity'];
|
$item_discount = $item_discount / $values['quantity'];
|
||||||
|
|
||||||
// Pence
|
// Pence
|
||||||
$price = ( $price * 100 );
|
$price = $price * 100;
|
||||||
|
|
||||||
// Check if discount is more than price
|
// Check if discount is more than price
|
||||||
if ( $price < $item_discount )
|
if ( $price < $item_discount )
|
||||||
|
@ -1078,7 +1078,8 @@ class WC_Cart {
|
||||||
$price = $price / 100;
|
$price = $price / 100;
|
||||||
|
|
||||||
// Cannot be below 0
|
// Cannot be below 0
|
||||||
if ( $price < 0 ) $price = 0;
|
if ( $price < 0 )
|
||||||
|
$price = 0;
|
||||||
|
|
||||||
// Add coupon to discount total (once, since this is a fixed cart discount and we don't want rounding issues)
|
// Add coupon to discount total (once, since this is a fixed cart discount and we don't want rounding issues)
|
||||||
if ( $add_totals ) {
|
if ( $add_totals ) {
|
||||||
|
@ -1419,7 +1420,7 @@ class WC_Cart {
|
||||||
|
|
||||||
// Line prices
|
// Line prices
|
||||||
$line_tax = get_option('woocommerce_tax_round_at_subtotal') == 'no' ? $this->tax->round( $discounted_tax_amount ) : $discounted_tax_amount;
|
$line_tax = get_option('woocommerce_tax_round_at_subtotal') == 'no' ? $this->tax->round( $discounted_tax_amount ) : $discounted_tax_amount;
|
||||||
$line_total = $this->tax->round( ( $discounted_price * $values['quantity'] ) - $this->tax->round( $line_tax ) );
|
$line_total = ( $discounted_price * $values['quantity'] ) - $this->tax->round( $line_tax );
|
||||||
|
|
||||||
// Add any product discounts (after tax)
|
// Add any product discounts (after tax)
|
||||||
$this->apply_product_discounts_after_tax( $values, $line_total + $discounted_tax_amount );
|
$this->apply_product_discounts_after_tax( $values, $line_total + $discounted_tax_amount );
|
||||||
|
|
|
@ -260,8 +260,8 @@ class WC_Checkout {
|
||||||
woocommerce_add_order_item_meta( $item_id, '_tax_class', $_product->get_tax_class() );
|
woocommerce_add_order_item_meta( $item_id, '_tax_class', $_product->get_tax_class() );
|
||||||
woocommerce_add_order_item_meta( $item_id, '_product_id', $values['product_id'] );
|
woocommerce_add_order_item_meta( $item_id, '_product_id', $values['product_id'] );
|
||||||
woocommerce_add_order_item_meta( $item_id, '_variation_id', $values['variation_id'] );
|
woocommerce_add_order_item_meta( $item_id, '_variation_id', $values['variation_id'] );
|
||||||
woocommerce_add_order_item_meta( $item_id, '_line_subtotal', woocommerce_format_decimal( $values['line_subtotal'] ) );
|
woocommerce_add_order_item_meta( $item_id, '_line_subtotal', woocommerce_format_decimal( $values['line_subtotal'], 4 ) );
|
||||||
woocommerce_add_order_item_meta( $item_id, '_line_total', woocommerce_format_decimal( $values['line_total'] ) );
|
woocommerce_add_order_item_meta( $item_id, '_line_total', woocommerce_format_decimal( $values['line_total'], 4 ) );
|
||||||
woocommerce_add_order_item_meta( $item_id, '_line_tax', woocommerce_format_decimal( $values['line_tax'], 4 ) );
|
woocommerce_add_order_item_meta( $item_id, '_line_tax', woocommerce_format_decimal( $values['line_tax'], 4 ) );
|
||||||
woocommerce_add_order_item_meta( $item_id, '_line_subtotal_tax', woocommerce_format_decimal( $values['line_subtotal_tax'], 4 ) );
|
woocommerce_add_order_item_meta( $item_id, '_line_subtotal_tax', woocommerce_format_decimal( $values['line_subtotal_tax'], 4 ) );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue