WooCommerce:仅获取税率降低的商品的订单总额

问题描述 投票:0回答:1

我只想导出税率降低的项目的总计。

例如,我有 2 件降低税率的商品和一件正常税率的商品:

  • 项目 A:100 欧元 - 减税 5,00 欧元 - 总计 105,00 欧元
  • B 项:50 欧元 - 减税 2,50 欧元 - 总计 52,50 欧元
  • C 项:100 欧元 - 19,00 欧元正常税 - 总计 119,00 欧元

我现在想要项目 A 和 B 的总计。在本例中,总价值为 157,50 欧元。

我找到了一个代码片段来获取类别的总税额:

// Get the WC_Order instance Object from the Order ID (if needed)
$order = wc_get_order($order_id);

// Output the tax rows in a table
echo '<table>';
foreach ( $order->get_tax_totals() as $rate_code => $tax ) {
    $tax_rate_id  = $tax->rate_id;
    $tax_label    = $tax->label;
    $tax_amount   = $tax->amount;
    $tax_f_amount = $tax->formatted_amount;
    $compound     = $tax->is_compound;
    echo '<tr><td>' . $tax_label  . ': </td><td>' . $tax_f_amount . '</td></tr>';
}
echo '</table>';

但是该代码为我提供了所有税种。有什么办法可以只得到一个吗?

这就是我现在正在做的事情(摘录):

$custom_order_total_tax         = $custom_order_data['total_tax'];
$custom_order_total             = $custom_order_data['total'];      
$custom_order_subtotal          = $order->get_subtotal();

$order
变量中没有任何我可以使用的东西。

我想我需要检查订单中的所有项目。但我该如何根据税率来选择这些商品呢?

我在这里发现了一些东西:

// Get and Loop Over Order Items foreach ( $order->get_items() as $item_id => $item ) { $product_id = $item->get_product_id(); $variation_id = $item->get_variation_id(); $product = $item->get_product(); $name = $item->get_name(); $quantity = $item->get_quantity(); $subtotal = $item->get_subtotal(); $total = $item->get_total(); $tax = $item->get_subtotal_tax(); $taxclass = $item->get_tax_class(); $taxstat = $item->get_tax_status(); $allmeta = $item->get_meta_data(); $somemeta = $item->get_meta( '_whatever', true ); $type = $item->get_type(); }
但税率不属于其中。所以我想我需要第二个数组?

php wordpress woocommerce orders
1个回答
1
投票
要获取订单商品的税级,请查看此处:

  • 获取一种产品的订单和 WooCommerce 中的运输所使用的税率
然后您可以创建一个自定义函数,

根据指定的税级计算订单商品的总计

该函数有

两个参数

  • $order_id
    :您要获取总计的订单ID
  • $tax_class
    :用作过滤器的税级
    (默认设置“降低税率”)
所以:

// gets the total of the order items by tax class function get_total_order_items_by_tax_class( $order_id, $tax_class = 'reduced-rate' ) { $order = wc_get_order( $order_id ); // initializes the total of the order items $total = 0; foreach( $order->get_items() as $item_id => $order_item ) { // if the product tax class is equal to "$tax_class" if ( $tax_class == $order_item['tax_class'] ) { // sum the total $total += $order_item['total']; } } return $total; }

使用

如果您想根据

60

税级
获取订单 id
reduced-rate
的订单商品的总和,您可以按照以下步骤操作:

$total = get_total_order_items_by_tax_class( 60 );
如果您想根据

standard

税级过滤产品,您可以使用:

$total = get_total_order_items_by_tax_class( 60, '' );
因为

standard

税类段是空的。

代码已经过测试并且可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.