我有一个用PHP编写的简单后端管理工具,它从WooCommerce数据库中提取订单并将它们呈现给我们的厨房用于处理交付。
我始终能够突出显示状态不是'wc-completed'
的表行,以处理可能需要的任何其他处理。但是,今天我注意到已经为一个项目退还了一项特定订单。 部分退款不会更改订单状态,因此我需要从数据库中的其他表中提取退款信息。
我查看了我所知道的与订单处理相关的所有表格 - wp_posts
,wp_postmeta
,wp_woocommerce_order_items
和wp_woocommerce_order_itemmeta
,但没有任何退款信息的迹象。事实上,最后一个表格中包含的itemmeta甚至没有调整数量,这使我的报告对于这样的部分订单不正确。
当您在woocommerce后端查看订单摘要时,它会显示此特定项目的1
数量,然后在其下方显示-1
。我假设在此基础上,数据库中的某个地方有与订单相关的退款记录,但我似乎无法找到它。即使wp_postmeta
中的订单总额也不能反映部分退款。
有谁知道这个退款数据存储在wordpress数据库中的哪个位置?
感谢。
答案 0 :(得分:7)
部分退款订单与正常商品一样存储在数据库中:
在wp_posts
表格中'post_type' = 'shop_order_refund'
和'post_parent' = order_ID (number)
,其中order_ID
是对原始'shop_order'
的引用。
要了解此退款中哪一项是部分退款,您需要_refund_amount
下wp_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_items
和wp_woocommerce_order_itemmeta
表中,有关于订单中产品和退款订单的相关详细数据......