Automattic\WooCommerce\Internal\OrderReviews

ItemEligibility::exclude_fully_refunded_itemspublic staticWC 10.8.0

Drop fully-refunded line items from the eligible-items list.

Default callback wired onto woocommerce_review_order_eligible_items the page never shows a row for a product the customer no longer owns. A line item is considered fully refunded when the absolute refunded quantity is greater than or equal to the item's ordered quantity. Fractional quantities are honoured.

Method of the class: ItemEligibility{}

No Hooks.

Returns

WC_Order_Item[].

Usage

$result = ItemEligibility::exclude_fully_refunded_items( $items, $order ): array;
$items(WC_Order_Item[]) (required)
Order line items.
$order(WC_Order) (required)
Order being reviewed.

Changelog

Since 10.8.0 Introduced.

ItemEligibility::exclude_fully_refunded_items() code WC 10.9.1

public static function exclude_fully_refunded_items( array $items, WC_Order $order ): array {
	$filtered = array();
	foreach ( $items as $key => $item ) {
		if ( ! $item instanceof WC_Order_Item_Product ) {
			$filtered[ $key ] = $item;
			continue;
		}

		$refunded_qty = (float) abs( (float) $order->get_qty_refunded_for_item( $item->get_id() ) );
		$ordered_qty  = (float) $item->get_quantity();

		if ( $ordered_qty > 0 && $refunded_qty >= $ordered_qty ) {
			continue;
		}

		$filtered[ $key ] = $item;
	}

	return $filtered;
}