Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据商业中的购物车商品价格有条件地设置不同的税率_Php_Wordpress_Woocommerce_Cart_Tax - Fatal编程技术网

Php 根据商业中的购物车商品价格有条件地设置不同的税率

Php 根据商业中的购物车商品价格有条件地设置不同的税率,php,wordpress,woocommerce,cart,tax,Php,Wordpress,Woocommerce,Cart,Tax,在我的Wordpress电子商务网站中,我使用了WP Hotel Booking,一个用于酒店房间预订的插件。签出过程使用WooCommerce完成 问题:我们有不同价格的房间。例如: 房间A价格-1500 B房间价格-2700 c房间价格-2200 对于价格低于2500的房间,GST税率为12%,对于价格高于2500的房间,GST税率为18% 由于我正在使用此定制产品(客房管理)的WP Hotel Booking,因此我无法使用woocommerce中的附加税类选项设置不同的税类 我需要你

在我的Wordpress电子商务网站中,我使用了WP Hotel Booking,一个用于酒店房间预订的插件。签出过程使用WooCommerce完成

问题:我们有不同价格的房间。例如:

  • 房间A价格-1500
  • B房间价格-2700
  • c房间价格-2200
对于价格低于2500的房间,GST税率为12%,对于价格高于2500的房间,GST税率为18%

由于我正在使用此定制产品(客房管理)的WP Hotel Booking,因此我无法使用woocommerce中的附加税类选项设置不同的税类

我需要你的帮助,写一个函数来检查房间的价值,然后决定需要为给定的房间设置什么税


谢谢

这是一件容易获得的东西

1°)您需要在您的电子商务税务设置中创建2个新的税务类别。在本例中,我将该税务类别命名为“
税务12
”和“
税务18
”。然后,您必须为它们中的每一个设置不同百分比的
12%
18%

2°)现在这里有一个自定义函数,在计算总计之前挂接在
woocommerce\u中,该函数将基于产品价格应用税务类别。我不使用税类名称,但税类slug,它们是小写的,空格由连字符替换

下面是代码:

add_action( 'woocommerce_before_calculate_totals', 'change_cart_items_prices', 10, 1 );
function change_cart_items_prices( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach ( $cart->get_cart() as $cart_item ) {
        // get product price
        $price = $cart_item['data']->get_price();

        // Set conditionaly based on price the tax class
        if ( $price < 2500 )
            $cart_item['data']->set_tax_class( 'tax-12' ); // below 2500
        if ( $price >= 2500 )
            $cart_item['data']->set_tax_class( 'tax-18' ); // Above 2500
    }
}
add_action('woocommerce_-before_-calculate_-total','change_-cart_-items_-price',10,1);
功能更改\u购物车\u商品\u价格($cart){
if(定义了('DOING'uajax'))
返回;
如果(did_action('woocommerce_before_calculate_totals')>=2)
返回;
foreach($cart->get\u cart()作为$cart\u项目){
//获得产品价格
$price=$cart_item['data']->get_price();
//根据税类的价格设置条件
如果(价格<2500美元)
$cart_item['data']->set_tax_class('tax-12');//低于2500
如果($price>=2500)
$cart_item['data']->set_tax_class('tax-18');//高于2500
}
}
代码位于活动子主题(或主题)的function.php文件或任何插件文件中

此代码经过测试并在WooCommerce版本3上运行+


您好,我尝试了您的代码,并将其粘贴到新安装的wordpress/woocommerce上的my functions.php上。我用标准零税率取代了tax-12和tax-18。两个类的设置都是正确的。1.标准利率=8%2。零利率-0%,但似乎不起作用。税收不会显示出来。我错过了什么?感谢您的回答,但是,如果我们启用价格含税的设置,则会变得棘手。我们该如何处理呢?@RajPawanGumdal你不应该为多个税率设定包含税的价格,而应该总是设定不包含税的价格……我同意,从理论上讲,这可能会变得复杂和可行。现在,假设不含税价格为2510,这意味着在2510时向客户收取更高的费用,并收取18%的税款,这将使卖方获得的价值低于向客户收取2490+12%的税款的较低价格。在后一种情况下,对买卖双方来说也是双赢的。我认为,我们可以将这些逻辑内置于普惠税价格中,以提供价值解决方案。