WC_Tracker::get_refund_order_data()private staticWC 1.0

Fetch refund data for a specific set of orders.

Метод класса: WC_Tracker{}

Хуков нет.

Возвращает

Массив. Refund data, indexed by order ID.

Использование

$result = WC_Tracker::get_refund_order_data( $order_ids );
$order_ids(массив) (обязательный)
List of order ID's to fetch data for.

Код WC_Tracker::get_refund_order_data() WC 9.6.1

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;
}