WooCommerce:使用税收行获取订单导出
WooCommerce: Get order export with tax lines
我想导出所有税行按税率分隔的订单。
例如:订单的税率可能为 7% 和 19%。如果订单中有两种税率的产品,我只会得到一个合并税额。
假设订单有两个产品,每个 100 欧元。会有以下税费:
- 100 欧元折扣价:7 欧元
- 100€ 默认汇率:19€
- 综合税:26€
我正在使用以下代码(摘录)导出订单数据:
$order_data = $order->get_data(); // The Order data
$order_date_created = $order_data['date_created']->date('d.m.Y'); // Example for oder creation date
获取到数据后,我需要将它们存储在一个数组中:
$custom_data = array(
'custom_order_date_created' => $custom_order_date_created,
)
我需要的是每个税率的固定列(如上面的$order_date_created
)。
喜欢:
- 第 1 列:税率 - 7%
- 第 2 列:税额 - 7€
- 第 3 列:税率 - 19%
- 第 4 列:税额 - 19€
如果没有税率金额,则该列可能为空。
我知道有一个订单属性叫tax_lines
。但它是一个数组,我不知道如何使用它。 属性 tax_lines
有一些自己的 tax lines properties.
有人知道如何从订单中获取这些值吗?
编辑: 我在 中找到了一个片段:
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>';
}
它看起来不错,但我不确定如何在我的代码示例中使用它并将它存储在我的数组中。
编辑 2: 经过更多挖掘,我发现 WC_Order_Item_Tax
object 其中包含订单税项。
所以我尝试使用该数据,但它是一个巨大的对象,我不确定如何 select 数据并将其显示在右栏中。
看起来像这样(还有很多)。我需要 select 按 rate_id
征税 例如:
[4543] => WC_Order_Item_Tax Object
(
[extra_data:protected] => Array
(
[rate_code] =>
[rate_id] => 0
[label] =>
[compound] =>
[tax_total] => 0
[shipping_tax_total] => 0
[rate_percent] =>
)
[data:protected] => Array
(
[order_id] => 11244
[name] =>
[rate_code] => DE-MWST.-1
[rate_id] => 1
[label] => MwSt.
[compound] => 1
[tax_total] => 7.54
[shipping_tax_total] => 0
[rate_percent] => 16
)
[cache_group:protected] => order-items
[meta_type:protected] => order_item
[object_type:protected] => order_item
[id:protected] => 4543
[changes:protected] => Array
(
)
[object_read:protected] => 1
[default_data:protected] => Array
(
[order_id] => 0
[name] =>
[rate_code] =>
[rate_id] => 0
[label] =>
[compound] =>
[tax_total] => 0
[shipping_tax_total] => 0
[rate_percent] =>
)
你可以这样使用它,可能在这行代码之后
$custom_data = array(
'custom_order_date_created' => $custom_order_date_created,
)
然后 foreach 循环与税率项目和使用 WC_Tax
method get_rate_percent()
得到税率百分比如下:
// Loop through order tax items
foreach ( $order->get_tax_totals() as $rate_code => $tax ) {
// Store it in the array
$custom_data['taxes'][] = array(
'tax_rate' => WC_Tax::get_rate_percent($tax->rate_id), // <=== the tax rate percentage
'tax_amount' => $tax->formatted_amount
);
}
相关:
- How to get order tax details and rates in WooCommerce?
我想导出所有税行按税率分隔的订单。
例如:订单的税率可能为 7% 和 19%。如果订单中有两种税率的产品,我只会得到一个合并税额。
假设订单有两个产品,每个 100 欧元。会有以下税费:
- 100 欧元折扣价:7 欧元
- 100€ 默认汇率:19€
- 综合税:26€
我正在使用以下代码(摘录)导出订单数据:
$order_data = $order->get_data(); // The Order data
$order_date_created = $order_data['date_created']->date('d.m.Y'); // Example for oder creation date
获取到数据后,我需要将它们存储在一个数组中:
$custom_data = array(
'custom_order_date_created' => $custom_order_date_created,
)
我需要的是每个税率的固定列(如上面的$order_date_created
)。
喜欢:
- 第 1 列:税率 - 7%
- 第 2 列:税额 - 7€
- 第 3 列:税率 - 19%
- 第 4 列:税额 - 19€
如果没有税率金额,则该列可能为空。
我知道有一个订单属性叫tax_lines
。但它是一个数组,我不知道如何使用它。 属性 tax_lines
有一些自己的 tax lines properties.
有人知道如何从订单中获取这些值吗?
编辑: 我在
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>';
}
它看起来不错,但我不确定如何在我的代码示例中使用它并将它存储在我的数组中。
编辑 2: 经过更多挖掘,我发现 WC_Order_Item_Tax
object 其中包含订单税项。
所以我尝试使用该数据,但它是一个巨大的对象,我不确定如何 select 数据并将其显示在右栏中。
看起来像这样(还有很多)。我需要 select 按 rate_id
征税 例如:
[4543] => WC_Order_Item_Tax Object
(
[extra_data:protected] => Array
(
[rate_code] =>
[rate_id] => 0
[label] =>
[compound] =>
[tax_total] => 0
[shipping_tax_total] => 0
[rate_percent] =>
)
[data:protected] => Array
(
[order_id] => 11244
[name] =>
[rate_code] => DE-MWST.-1
[rate_id] => 1
[label] => MwSt.
[compound] => 1
[tax_total] => 7.54
[shipping_tax_total] => 0
[rate_percent] => 16
)
[cache_group:protected] => order-items
[meta_type:protected] => order_item
[object_type:protected] => order_item
[id:protected] => 4543
[changes:protected] => Array
(
)
[object_read:protected] => 1
[default_data:protected] => Array
(
[order_id] => 0
[name] =>
[rate_code] =>
[rate_id] => 0
[label] =>
[compound] =>
[tax_total] => 0
[shipping_tax_total] => 0
[rate_percent] =>
)
你可以这样使用它,可能在这行代码之后
$custom_data = array(
'custom_order_date_created' => $custom_order_date_created,
)
然后 foreach 循环与税率项目和使用 WC_Tax
method get_rate_percent()
得到税率百分比如下:
// Loop through order tax items
foreach ( $order->get_tax_totals() as $rate_code => $tax ) {
// Store it in the array
$custom_data['taxes'][] = array(
'tax_rate' => WC_Tax::get_rate_percent($tax->rate_id), // <=== the tax rate percentage
'tax_amount' => $tax->formatted_amount
);
}
相关:
- How to get order tax details and rates in WooCommerce?