Automattic\WooCommerce\Internal\OrderReviews
ItemEligibility::exclude_fully_refunded_items
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() 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;
}