如果税额因国家而异,则不会显示在购物车总数中

时间:2013-09-26 作者:Alexander

如果您要添加的税是特定于国家的(例如欧盟国家),则税估计不会显示在购物车总计中(尽管我是使用用户指定的欧盟帐单地址登录的)。但它显示在结帐页面中。

我想问一下,是否有任何方式可以将税款显示在购物车页面中,就像它不是特定国家的税款一样。

我的意思是:当税收国家代码留空(意味着它适用于所有人)时,这就是您得到的消息和屏幕enter image description here

这真是太棒了,对我很有用。但是,当您在我的case DE中添加特定于国家/地区的代码时,我不会在我的购物车页面中看到它,尽管我是使用帐单地址为德国的用户登录的。

enter image description here

我在结帐台上拿到税,但不是在购物车上,我认为这可能会误导我。我希望有个解决办法

enter image description here

1 个回复
SO网友:Nicolai Grossherr

这是一个配置问题:

tax settings

这样,税款将显示在购物车页面上:

cart

但因为地址可以在结账时更改,所以这不是也不可能是决定性的-就像上面所说的那样,税是估计的,会在结账时更新。

<小时>

Update:

上周,我快速查看了woocommerce代码,但没有时间完成我的回答。我发现有一个过滤器-woocommerce_matched_rates - 你可以加入。过滤器是get_rates() 内部功能class-wc-tax.php. 下面是一些代码示例:

add_filter( \'woocommerce_matched_rates\', 
            \'wpse115734_wc_customer_based_tax_on_cart\' );

function wpse115734_wc_customer_based_tax_on_cart( $matched_tax_rates = \'\', $tax_class = \'\' ) {
    global $woocommerce,$product;
    $tax_class = sanitize_title( $tax_class );
    $_taxobj = new WC_Tax();

    list( $country, $state, $postcode, $city ) = $woocommerce->customer->get_taxable_address();
    $shop_country = $woocommerce->countries->get_base_country();

    if ( ! ( $country == $shop_country ) ) {
        $matched_tax_rates = $_taxobj->find_rates( array(
            \'country\'   => $country,
            \'state\'     => $state,
            \'postcode\'  => $postcode,
            \'city\'      => $city,
            \'tax_class\' => $tax_class
        ) );
        return $matched_tax_rates;
    } else {
        $matched_tax_rates = $_taxobj->get_shop_base_rate( $tax_class );
        return $matched_tax_rates;
    }
}
正如您所看到的,这将挂钩到过滤器中,并根据店铺基础和客户国家/地区进行一些条件检查。这对我来说很有用,如果客户地址与商店所在国不同,则根据客户地址显示税款。But 就像我说的,这是开始,因为我没有做进一步的测试,这仅仅是可能性的证明。

结束