我最近试图修改我所有的航运率与钩适用折扣。
下面是我的代码:
add_filter( 'woocommerce_package_rates', 'woocommerce_package_rates' );
function woocommerce_package_rates( $rates ) {
$user_id = get_current_user_id();
if ( ! wc_memberships_is_user_active_member( $user_id, 'silver' ) ) { return $rates; }
$discount_amount = 30; // 30%
foreach($rates as $key => $rate ) {
$rates[$key]->cost = $rates[$key]->cost - ( $rates[$key]->cost * ( $discount_amount/100 ) );
}
return $rates;
}
但还有一步就是税了!我弄错了税。
例如,我有我的运费谁成本3$
。与折扣,它现在的2,10$
。
我买一个项目的2$
和航运2.10$
。我得到了1美元的税(作为3美元的运费。看起来他不采取的变化),通常它的0.82$
。
我需要什么才能得到正确的税款计算?
3条答案
按热度按时间hfyxw5xn1#
有一些小错误,你的代码,你已经错过了税务计算折扣。我已经重温了你的代码位,你应该试试这个:
此代码经过测试并正常工作。
1.首先,这段代码已经保存在function.php文件中。
1.在"发运设置"中,输入发运区域,禁用发运方法并"保存"。然后重新启用该发运方法并"保存"。操作完成。
f87krz0w2#
下面的代码@LoicTheAztec没有错误:
lmvvr0a83#
以上答案的问题在于你是根据已经计算过的原始成本来计算税金的。例如,如果一个插件是根据运费来计算税金的呢?例如,如果100美元或以上,则为10%;如果200美元或以上,则为20%;如果低于100美元,则为0%。
如果原始成本为$150,您应用$60的折扣,则折扣后的成本将为$90,并且在上述情况下不会应用任何税。因此,我们需要一种方法来修改成本**,然后才能计算税**。这样,我们就不必自己重新计算税,并且可以减少第一段中示例的错误。
在我的一个插件中,我使用了
woocommerce_shipping_method_add_rate_args
过滤器,它由\WC_Shipping_Method::add_rate()调用,每次\WC_Shipping_Method示例添加费率时都会调用此方法。这个过滤器将接受一个数组作为它的第一个参数,这是汇率数据。这个数组有一个'cost'条目,这是我们想要修改的。记住,这可以是一个标量(显然,一个数字字符串)或数组。在处理这个时,只要检查它是否是一个数组: