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

Ben*_*ino 6 mysql wordpress metadata orders woocommerce

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

我一直能够突出显示一个表行,该表行的状态不是'wc-completed'处理可能需要的任何其他处理.但是,今天我注意到已经为一个项目退还了一项特定订单.一个部分退款不会更改订单状态,所以我需要拉从另一个数据库表中的退款信息.

我检查了所有我知道的相关的表格,订单处理- ,,wp_posts 和,但没有任何退款信息的迹象.实际上,最后一个表中包含的itemmeta甚至没有调整数量,这使我的报告对于这样的部分订单不正确.wp_postmetawp_woocommerce_order_itemswp_woocommerce_order_itemmeta

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

有谁知道这个退款数据存储在wordpress数据库中的哪个位置?

谢谢.

Loi*_*tec 8

部分退款订单与正常退款订单一样存储在数据库中:在wp_posts带有a 'post_type' = 'shop_order_refund'和a的表中'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):那么它是正常的 (不是部分的).

笔记:

  • 您可以为一个订单进行一次或多次部分退款.
  • 对于退款订单_order_total,wp_postmeta表中的项目具有负值,该值始终反映_refund_amount项目的正值.此_order_total值与相关父 'shop_order' => '_order_total'值无关.

    仅当退款订单不是PARTIAL时,它才是相关父值 的相反(负)值. 'shop_order' => '_order_total'

  • wp_woocommerce_order_itemswp_woocommerce_order_itemmeta表格中,有关于订单中的产品和退款订单的相关详细数据......