我想修改购物车的显示(以及后来的发票),以便有另一列显示每种产品的税率和税率。我没有找到带有数字的税率函数或吸气剂,只有$ _product-> get_tax_class()这个名字。我在寻找类似$ _product-> get_tax_rate()的函数,但没有找到。所以我在woocommerce / templates / cart / cart.php中写了一个可怕的解决方法。
简单的添加之后
<th class="product-tax"><?php esc_html_e( 'Tax', 'woocommerce' ); ?></th>
在35行中,我从121行中添加:
$tax_name = apply_filters( 'woocommerce_cart_item_tax', $_product->get_tax_class(), $cart_item, $cart_item_key );
if ($tax_name == "reduced-tax-rate") $tax_rate= 7; else $tax_rate= 19;
$with_tax = $_product->get_price( $_product );
$without_tax = $with_tax/((100+$tax_rate)/100);
$tax = $with_tax-$without_tax;
$tax = $tax*$cart_item['quantity'];
$tax = number_format($tax, 2, '.', '')." €";
echo " ".$tax." (".$tax_rate."%)";
该功能目前有效,但仅在德国有效,它很长一段时间都无法幸免。那么,什么是更好的方法呢?
谢谢!
更新
仅找到解决方案的一半:
$tax_name = apply_filters( 'woocommerce_cart_item_tax', $_product->get_tax_class(), $cart_item, $cart_item_key );
if ($tax_name == "reduced-tax-rate") $tax_rate= 7; else $tax_rate= 19;
echo " ".$cart_item['line_subtotal_tax']." (".$tax_rate."%)";
$ cart_item ['line_subtotal_tax']保存我试图通过计算获取的值。现在只剩下名字了...“ 19%”或“ 7%” ...
答案 0 :(得分:1)
我想woocommerce_cart_item_tax
是一个自定义钩子,因为我没有找到它……
税收取决于您的设置,该设置是一个或多个税收类别,并且对于每个税收类别:
现在要以正确的方式处理税收,您将使用the WC_Tax
object Class and all related methods。我们将仅在此处使用基于国家/地区的税率:
// Getting an instance of the WC_Tax object
$wc_tax = new WC_Tax();
// Get User billing country
$billing_country = WC()->customer->get_billing_country();
// Get the item tax class (your code)
$tax_class = apply_filters( 'woocommerce_cart_item_tax', $_product->get_tax_class(), $cart_item, $cart_item_key );
// Get the related Data for Germany and "default" tax class
$tax_data = $tax->find_rates( array('country' => $billing_country, tax_class' => $tax_class ) );
// The rate (percentage number)
$tax_rate = $tax_data['rate'];
经过测试可以正常工作。
对于订单 (pdf发票)应该非常相似,您需要替换以下行:
// Get the item tax class (your code)
$tax_class = apply_filters( 'woocommerce_cart_item_tax', $_product->get_tax_class(), $cart_item, $cart_item_key );
类似于(其中$item
是WC_Order_Item_Product
对象的实例)
// Get the WC_Product Object instance
$_product = $item->get_product();
// Get the item tax class
$tax_class = $_product->get_tax_class();