Automattic\WooCommerce\Internal\OrderReviews

ItemEligibility::exclude_fully_refunded_items │ public static │ WC 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.

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

Хуков нет.

Возвращает

WC_Order_Item[].

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

$result = ItemEligibility::exclude_fully_refunded_items( $items, $order ): array;
$items(WC_Order_Item[]) (обязательный)
Order line items.
$order(WC_Order) (обязательный)
Order being reviewed.

Список изменений

С версии 10.8.0 Введена.

Код ItemEligibility::exclude_fully_refunded_items() WC 11.2.2

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