部分退款如何存储在 WooCommerce 数据库中?

How are partial refunds stored in the WooCommerce Database?

我有一个用 PHP 编写的简单后端管理工具,它从 WooCommerce 数据库中提取订单并将它们呈现给我们的厨房以处理交货。

我总是能够突出显示状态不同于 'wc-completed' 的 table 行,以处理可能需要的任何其他处理。但是,今天引起我注意的是,一个特定订单已针对一个订单项进行了退款。 部分退款 不会更改订单状态,因此我需要从数据库中的另一个 table 提取退款信息。

我检查了所有我知道的与订单处理相关的 tables - wp_postswp_postmetawp_woocommerce_order_itemswp_woocommerce_order_itemmeta,但没有迹象任何退款信息。事实上,最后 table 中包含的 itemmeta 甚至没有调整数量,使我的报告对于像这样的部分订单不正确。

当您在 woocommerce 后端查看订单摘要时,它会显示该特定商品的数量 1,然后在其正下方显示 -1。基于此,我假设数据库中某处有与订单关联的退款记录,但我似乎无法找到它。即使 wp_postmeta 中的订单总额也没有反映部分退款。

有谁知道这个退款数据存储在wordpress数据库中的什么地方?

谢谢。

部分退款订单像普通订单一样存储在数据库中: 在 wp_posts table 中有一个 'post_type' = 'shop_order_refund' 和一个 'post_parent' = order_ID (number),其中 order_ID 是对原始 'shop_order'.

的引用

要找出其中哪一项退款是部分退款,您需要 _refund_amount 金额值,您可以在 wp_post_meta 下找到此 'refund_order' 及其对应的 'shop_order' 也具有 _order_total 值:

if ( 'refund_order' => _refund_amount ) != ( 'shop_order' => _order_total ) : 然后是部分.

if ( 'refund_order' => _refund_amount ) == ( 'shop_order' => _order_total ) : 那么就是正常(不偏).

备注:

  • 一个订单可以有一个或多个部分退款。
  • 退款订单 wp_postmeta table 中的一个 _order_total 项的负值始终反映正值_refund_amount 项。此_order_total值与相关父'shop_order' => '_order_total'值无关。

    It's the opposite (negative) value of the related parent 'shop_order' => '_order_total' value only when refund order IS NOT PARTIAL.

  • wp_woocommerce_order_itemswp_woocommerce_order_itemmetatable中,有订单商品和退款订单的相关详细数据...