WC_Tracker::get_refund_order_data
Fetch refund data for a specific set of orders.
Method of the class: WC_Tracker{}
No Hooks.
Returns
Array. Refund data, indexed by order ID.
Usage
$result = WC_Tracker::get_refund_order_data( $order_ids );
- $order_ids(array) (required)
- List of order ID's to fetch data for.
WC_Tracker::get_refund_order_data() WC Tracker::get refund order data code WC 10.5.0
private static function get_refund_order_data( $order_ids ) {
global $wpdb;
if ( empty( $order_ids ) || ! is_array( $order_ids ) ) {
return array();
}
$joined_ids = implode( ',', $order_ids );
$refund_data = array();
if ( OrderUtil::custom_orders_table_usage_is_enabled() ) {
$order_table_name = OrdersTableDataStore::get_orders_table_name();
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
$data = $wpdb->get_results(
"SELECT
parent_order_id AS order_id,
SUM(total_amount) AS refund_amount
FROM $order_table_name
WHERE
type = 'shop_order_refund'
AND status = 'wc-completed'
AND parent_order_id IN ($joined_ids)
GROUP BY parent_order_id",
ARRAY_A
);
// phpcs:enable
} else {
// phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared
$data = $wpdb->get_results(
"SELECT
refunds.post_parent AS order_id,
SUM(amount.meta_value) AS refund_amount
FROM $wpdb->posts AS refunds
LEFT JOIN $wpdb->postmeta AS amount ON amount.post_id = refunds.ID AND amount.meta_key = '_order_total'
WHERE
refunds.post_type = 'shop_order_refund'
AND refunds.post_status = 'wc-completed'
AND refunds.post_parent IN ($joined_ids)
GROUP BY refunds.post_parent",
ARRAY_A
);
// phpcs:enable
}
foreach ( $data as $row ) {
$refund_data[ $row['order_id'] ] = array(
'refund_amount' => $row['refund_amount'],
);
}
return $refund_data;
}