Add getter for tax_display_cart variable, with filter

This commit is contained in:
Mike Jolley 2017-12-15 13:39:35 +00:00
parent fd2c676837
commit 01871fd2c8
7 changed files with 53 additions and 45 deletions

View File

@ -45,11 +45,11 @@ class WC_Cart extends WC_Legacy_Cart {
public $applied_coupons = array();
/**
* Are prices in the cart displayed inc or excl tax.
* Are prices in the cart displayed inc or excl tax?
*
* @var string
*/
public $tax_display_cart;
public $tax_display_cart = 'incl';
/**
* This stores the chosen shipping methods for the cart item packages.
@ -357,6 +357,16 @@ class WC_Cart extends WC_Legacy_Cart {
return apply_filters( 'woocommerce_cart_' . __FUNCTION__, $this->get_totals_var( 'fee_taxes' ) );
}
/**
* Return whether or not the cart is displaying prices including tax, rather than excluding tax.
*
* @since 3.3.0
* @return bool
*/
protected function display_prices_including_tax() {
return apply_filters( 'woocommerce_cart_' . __FUNCTION__, 'incl' === $this->tax_display_cart );
}
/*
|--------------------------------------------------------------------------
| Setters.
@ -951,7 +961,7 @@ class WC_Cart extends WC_Legacy_Cart {
* @return string
*/
public function get_displayed_subtotal() {
return 'incl' === $this->tax_display_cart ? $this->get_subtotal() + $this->get_subtotal_tax() : $this->get_subtotal();
return $this->display_prices_including_tax() ? $this->get_subtotal() + $this->get_subtotal_tax() : $this->get_subtotal();
}
/**
@ -1393,21 +1403,21 @@ class WC_Cart extends WC_Legacy_Cart {
public function get_cart_shipping_total() {
if ( 0 < $this->get_shipping_total() ) {
if ( 'excl' === $this->tax_display_cart ) {
$return = wc_price( $this->shipping_total );
if ( $this->shipping_tax_total > 0 && wc_prices_include_tax() ) {
$return .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
return $return;
} else {
if ( $this->display_prices_including_tax() ) {
$return = wc_price( $this->shipping_total + $this->shipping_tax_total );
if ( $this->shipping_tax_total > 0 && ! wc_prices_include_tax() ) {
$return .= ' <small class="tax_label">' . WC()->countries->inc_tax_or_vat() . '</small>';
}
return $return;
} else {
$return = wc_price( $this->shipping_total );
if ( $this->shipping_tax_total > 0 && wc_prices_include_tax() ) {
$return .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
return $return;
}
} else {
@ -1758,18 +1768,18 @@ class WC_Cart extends WC_Legacy_Cart {
if ( $compound ) {
$cart_subtotal = wc_price( $this->get_cart_contents_total() + $this->get_shipping_total() + $this->get_taxes_total( false, false ) );
} elseif ( 'excl' === $this->tax_display_cart ) {
$cart_subtotal = wc_price( $this->get_subtotal() );
if ( $this->get_subtotal_tax() > 0 && wc_prices_include_tax() ) {
$cart_subtotal .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
} else {
} elseif ( $this->display_prices_including_tax() ) {
$cart_subtotal = wc_price( $this->get_subtotal() + $this->get_subtotal_tax() );
if ( $this->get_subtotal_tax() > 0 && ! wc_prices_include_tax() ) {
$cart_subtotal .= ' <small class="tax_label">' . WC()->countries->inc_tax_or_vat() . '</small>';
}
} else {
$cart_subtotal = wc_price( $this->get_subtotal() );
if ( $this->get_subtotal_tax() > 0 && wc_prices_include_tax() ) {
$cart_subtotal .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
}
return apply_filters( 'woocommerce_cart_subtotal', $cart_subtotal, $compound, $this );
@ -1782,10 +1792,10 @@ class WC_Cart extends WC_Legacy_Cart {
* @return string formatted price
*/
public function get_product_price( $product ) {
if ( 'excl' === $this->tax_display_cart ) {
$product_price = wc_get_price_excluding_tax( $product );
} else {
if ( $this->display_prices_including_tax() ) {
$product_price = wc_get_price_including_tax( $product );
} else {
$product_price = wc_get_price_excluding_tax( $product );
}
return apply_filters( 'woocommerce_cart_product_price', wc_price( $product_price ), $product );
}
@ -1806,22 +1816,20 @@ class WC_Cart extends WC_Legacy_Cart {
if ( $product->is_taxable() ) {
if ( 'excl' === $this->tax_display_cart ) {
$row_price = wc_get_price_excluding_tax( $product, array( 'qty' => $quantity ) );
$product_subtotal = wc_price( $row_price );
if ( wc_prices_include_tax() && $this->get_subtotal_tax() > 0 ) {
$product_subtotal .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
} else {
if ( $this->display_prices_including_tax() ) {
$row_price = wc_get_price_including_tax( $product, array( 'qty' => $quantity ) );
$product_subtotal = wc_price( $row_price );
if ( ! wc_prices_include_tax() && $this->get_subtotal_tax() > 0 ) {
$product_subtotal .= ' <small class="tax_label">' . WC()->countries->inc_tax_or_vat() . '</small>';
}
} else {
$row_price = wc_get_price_excluding_tax( $product, array( 'qty' => $quantity ) );
$product_subtotal = wc_price( $row_price );
if ( wc_prices_include_tax() && $this->get_subtotal_tax() > 0 ) {
$product_subtotal .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
}
} else {
$row_price = $price * $quantity;

View File

@ -115,7 +115,7 @@ abstract class WC_Legacy_Cart {
break;
case 'display_totals_ex_tax' :
case 'display_cart_ex_tax' :
$value = 'excl' === $this->tax_display_cart;
$value = ! $this->display_prices_including_tax();
break;
case 'cart_contents_weight' :
$value = $this->get_cart_contents_weight();

View File

@ -162,7 +162,7 @@ class WC_Shipping_Free_Shipping extends WC_Shipping_Method {
if ( in_array( $this->requires, array( 'min_amount', 'either', 'both' ) ) ) {
$total = WC()->cart->get_displayed_subtotal();
if ( 'incl' === WC()->cart->tax_display_cart ) {
if ( WC()->cart->display_prices_including_tax() ) {
$total = round( $total - ( WC()->cart->get_discount_total() + WC()->cart->get_discount_tax() ), wc_get_price_decimals() );
} else {
$total = round( $total - WC()->cart->get_discount_total(), wc_get_price_decimals() );

View File

@ -176,7 +176,7 @@ class WC_Shipping_Legacy_Free_Shipping extends WC_Shipping_Method {
if ( in_array( $this->requires, array( 'min_amount', 'either', 'both' ) ) ) {
$total = WC()->cart->get_displayed_subtotal();
if ( 'incl' === WC()->cart->tax_display_cart ) {
if ( WC()->cart->display_prices_including_tax() ) {
$total = round( $total - ( WC()->cart->get_discount_total() + WC()->cart->get_discount_tax() ), wc_get_price_decimals() );
} else {
$total = round( $total - WC()->cart->get_discount_total(), wc_get_price_decimals() );

View File

@ -299,7 +299,7 @@ function wc_cart_totals_order_total_html() {
$value = '<strong>' . WC()->cart->get_total() . '</strong> ';
// If prices are tax inclusive, show taxes here.
if ( wc_tax_enabled() && WC()->cart->tax_display_cart == 'incl' ) {
if ( wc_tax_enabled() && WC()->cart->display_prices_including_tax() ) {
$tax_string_array = array();
$cart_tax_totals = WC()->cart->get_tax_totals();
@ -329,7 +329,7 @@ function wc_cart_totals_order_total_html() {
* @param object $fee
*/
function wc_cart_totals_fee_html( $fee ) {
$cart_totals_fee_html = ( 'excl' == WC()->cart->tax_display_cart ) ? wc_price( $fee->total ) : wc_price( $fee->total + $fee->tax );
$cart_totals_fee_html = WC()->cart->display_prices_including_tax() ? wc_price( $fee->total + $fee->tax ) : wc_price( $fee->total );
echo apply_filters( 'woocommerce_cart_totals_fee_html', $cart_totals_fee_html, $fee );
}
@ -343,16 +343,16 @@ function wc_cart_totals_shipping_method_label( $method ) {
$label = $method->get_label();
if ( $method->cost > 0 ) {
if ( WC()->cart->tax_display_cart == 'excl' ) {
$label .= ': ' . wc_price( $method->cost );
if ( $method->get_shipping_tax() > 0 && wc_prices_include_tax() ) {
$label .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
} else {
if ( WC()->cart->display_prices_including_tax() ) {
$label .= ': ' . wc_price( $method->cost + $method->get_shipping_tax() );
if ( $method->get_shipping_tax() > 0 && ! wc_prices_include_tax() ) {
$label .= ' <small class="tax_label">' . WC()->countries->inc_tax_or_vat() . '</small>';
}
} else {
$label .= ': ' . wc_price( $method->cost );
if ( $method->get_shipping_tax() > 0 && wc_prices_include_tax() ) {
$label .= ' <small class="tax_label">' . WC()->countries->ex_tax_or_vat() . '</small>';
}
}
}

View File

@ -65,7 +65,7 @@ if ( ! defined( 'ABSPATH' ) ) {
</tr>
<?php endforeach; ?>
<?php if ( wc_tax_enabled() && 'excl' === WC()->cart->tax_display_cart ) :
<?php if ( wc_tax_enabled() && ! WC()->cart->display_prices_including_tax() ) :
$taxable_address = WC()->customer->get_taxable_address();
$estimated_text = WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping()
? sprintf( ' <small>' . __( '(estimated for %s)', 'woocommerce' ) . '</small>', WC()->countries->estimated_for_prefix( $taxable_address[0] ) . WC()->countries->countries[ $taxable_address[0] ] )

View File

@ -84,7 +84,7 @@ if ( ! defined( 'ABSPATH' ) ) {
</tr>
<?php endforeach; ?>
<?php if ( wc_tax_enabled() && 'excl' === WC()->cart->tax_display_cart ) : ?>
<?php if ( wc_tax_enabled() && ! WC()->cart->display_prices_including_tax() ) : ?>
<?php if ( 'itemized' === get_option( 'woocommerce_tax_total_display' ) ) : ?>
<?php foreach ( WC()->cart->get_tax_totals() as $code => $tax ) : ?>
<tr class="tax-rate tax-rate-<?php echo sanitize_title( $code ); ?>">