首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WooCommerce在税后订购时使用优惠券

WooCommerce在税后订购时使用优惠券
EN

WordPress Development用户
提问于 2020-04-29 12:57:10
回答 1查看 1.8K关注 0票数 2

我有一种价值1000英镑的产品(含税)。然后我用10%的优惠券代码,但金额是920。

应该是900英镑。( 100折扣)。

我正在编程地应用代码,如下所示:

代码语言:javascript
复制
$order->apply_coupon('123')

似乎折扣是适用于产品价格不征税,但它应该适用,包括税收。

一般税是25%,但是所有的产品价格都是确定的,包括税。

所以,如果你做1000 %- 20% (税收) it : 800,10%的800是80,那么折扣率只有80,而实际上它应该是100。

有人能帮我一下吗?如果我使用正常的签出流程应用优惠券,它可以正常工作,但我正在尝试以编程方式应用优惠券。

EN

回答 1

WordPress Development用户

发布于 2021-11-05 10:36:29

我最近也遇到了这个问题,并设法解决了它。

在我的例子中,我创建了订单,并通过编程添加了行项和优惠券。当这件事完成后,你就算出总数和税金。如果没有可应用的优惠券,我将使用:$order->calculate_totals( true ),当应用优惠券时,我不会使用calculate_totals方法,因为$order->apply_coupons 自动重新计算总额和税金。

对基于百分比的优惠券这样做,计算出错,总金额不符合我的预期数额。和您一样,在遵循正常的签出流程时,计算将是正确的。

因此,我所做的就是在添加行项目之后和在优惠券应用之前计算总计。这确保了在使用优惠券之前税收和总额是正确的。

简化示例:

代码语言:javascript
复制
// Create a new order.
$order = new WC_Order();
$order->set_prices_include_tax( true );
$order_id = $order->save();

// Add line item for order.
$line_item = new WC_Order_Item_Product();
$line_item->set_order_id( $order_id );
$line_item->set_name( 'Test product' );
$line_item->set_quantity( 1 );
$line_item->set_tax_class( 'tax-21' );
$line_item->set_subtotal( 1000 / 1.21 ); // Calc price pre tax: 21% VAT in this case.
$line_item->set_total( 1000 / 1.21 );
$line_item_id = $line_item->save();

// The next line is what fixed the problem: 
// Calculate totals and taxes before a coupon is applied to ensure taxes and totals for order are correct.
$order->calculate_totals( true ); 

// Apply coupon.
$order->apply_coupon( 'MY_COUPON_CODE' );
票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/365386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档