/** * Get the product total price excluding tax * * @param int $quantity * @return float the total price of the product times the quantity without any tax included */ public function get_price_excluding_tax($quantity = 1) { // to avoid rounding errors multiply by 100 $price = $this->get_price() * 100; if (self::get_options()->get('fflcommerce_calc_taxes') === 'yes' && self::get_options()->get('fflcommerce_prices_include_tax') === 'yes') { $rates = (array) $this->get_tax_base_rate(); if (count($rates) > 0) { // rates array sorted so that taxes applied to retail value come first. To reverse taxes, need to reverse this array $new_rates = array_reverse($rates, true); $tax_totals = 0; $_tax = new fflcommerce_tax(100); foreach ($new_rates as $key => $value) { if ($value['is_not_compound_tax']) { $tax_totals += $_tax->calc_tax($price * $quantity, $value['rate'], true); } else { $tax_amount[$key] = $_tax->calc_tax($price * $quantity, $value['rate'], true); $tax_totals += $tax_amount[$key]; } } return round(($price * $quantity - $tax_totals) / 100, 4); } } return round($price * $quantity / 100, 4); }