首页 文章

WooCommerce运费价格包含税

提问于
浏览
3

在WooCommerce我只能输入不含税的运费 . 如何才能使包含税的给定价格?

显示“含税价格”的设置仅适用于产品 .

因此,例如,如果我输入设置运费€1,00它显示在结帐€1,21(0,21 =税)

它应该是€1,00(包括0,21税)(这里不关心计算,这只是一个例子)

谢谢,如果有人有解决方案或功能 .

2 回答

  • 2

    在原始问题发生一年之后,我遇到了同样的问题而且没有太多帮助 .

    在调查中,这对于“class-wc-tax.php”的运费税计算来说是一个问题,正如您在下面看到的硬编码运输是免税的 .

    /**
         * Calculate the shipping tax using a passed array of rates.
         *
         * @param   float       Price
         * @param   array       Taxation Rate
         * @return  array
         */
        public static function calc_shipping_tax( $price, $rates ) {
            $taxes = self::calc_exclusive_tax( $price, $rates );
            return apply_filters( 'woocommerce_calc_shipping_tax', $taxes, $price, $rates );
        }
    

    事实证明,由于某些原因,woo已经通过下游税计算将这种运输假设推向税务,因此您需要在您的functions.php中添加几个过滤器以便解决问题 .

    1)第一个计算包含税

    function yourname_fix_shipping_tax( $taxes, $price, $rates) {
    
            if(wc_prices_include_tax()){
                return  WC_Tax::calc_inclusive_tax( $price, $rates );
            }
    
            return $taxes;
        }
    
        add_filter( 'woocommerce_calc_shipping_tax', 'yourname_fix_shipping_tax',10,3);
    

    小心你不要忘记add_filter结束时的10,3 . 10是我在默认情况下保留的优先级 . 3是参数的数量 . 你真的需要这个 - 过滤器显示行为问题,如果你把它留下来 .

    2)第二个过滤器用于固定下游计算中的总数 .

    function yourname_fix_totals( $cart) {
    
        if(wc_prices_include_tax()){        
            $cart->shipping_total -= $cart->shipping_tax_total;
        }
    }
    add_filter( 'woocommerce_calculate_totals', 'yourname_fix_totals');
    

    那些担心这是我们正在讨论的真钱和实际税收的人的详细信息

    第一个过滤器是相当直接的 - 它只是在包容性案例中重新计算税收 .

    第二个过滤器是为了处理将独家税的假设进一步推入税收计算的问题 .

    在'class-wc-cart.php'的第1396行附近,我们有以下内容 .

    // Grand Total - Discounted product prices, discounted tax, shipping cost + tax
        $this->total = max( 0, apply_filters( 'woocommerce_calculated_total', round( $this->cart_contents_total + $this->tax_total + $this->shipping_tax_total + $this->shipping_total + $this->fee_total, $this->dp ), $this ) );
    

    这样做的目的是将运费税加到我们不希望它做的运输总额中 - 并且他们已将其硬编码......

    我们要做的是使用位于1392行周围几行的方便的'woocommerce_calculate_totals'过滤器(),在使用上面的第二个过滤器加起来之前从总数中减去运费税 .

    // Allow plugins to hook and alter totals before final total is calculated
    do_action( 'woocommerce_calculate_totals', $this );
    

    在几个星期前的这篇文章的早期剪辑中,我担心这将是一堆蠕虫 - 而现在我已经可以测试一些东西了 .

    所以 huge 告诫这里 . 彻底测试您的最终税金总额和小计 - 这不再是风险 . Woo做出了税收专属运输的假设,并推动了它的下游计算 . 不幸的是,即使您的代码中存在错误,您也必须向各自的政府纳税 .

    还要记住,在测试时,当您在woocommerce设置中将独家税改为包含税时,旧价格不受影响,因此您可能需要使用干净的测试数据 .

    到目前为止所说的一切对我来说都是好的,但在我的情况下,我绕过了大量的woo - 我没有使用他们的任何前端代码,这意味着我可能没有找到其他地方受到税收影响的影响独家运费 .

  • 1

    实际上它在Tax选项卡下 . 设置税率时,还需要选中“运送”复选框 .

    enter image description here

相关问题