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

时间:2016-06-08 20:57:22

标签: mysql wordpress woocommerce metadata orders

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

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

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

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

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

感谢。

1 个答案:

答案 0 :(得分:7)

部分退款订单与正常商品一样存储在数据库中: 在wp_posts表格中'post_type' = 'shop_order_refund''post_parent' = order_ID (number),其中order_ID是对原始'shop_order'的引用。

要了解此退款中哪一项是部分退款,您需要_refund_amountwp_post_meta的{​​{1}}金额值,'refund_order'及其对应的'shop_order' _order_total值也是{<1}}:

if('refund_order' =&gt; _refund_amount)!=('shop_order' =&gt; _order_total): 然后它部分

if {'refund_order' =&gt; _refund_amount)==('shop_order' =&gt; _order_total): 然后它正常 (非部分)

注意:

  • 您可以为一个订单提供一次或多次部分退款。
  • _order_total表格中有退款订单一个wp_postmeta项,其值为负值,始终反映_refund_amount项的正值。此_order_total值与相关父 'shop_order' => '_order_total'值无关。
      

    相关父级 'shop_order' => '_order_total'值相反的(负)值   仅当退款订单不属于部分

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