@php use App\Enums\Order\OrderItemReturnStatusEnum; $current = (string) $return->return_status; $pickupStatus = (string) $return->pickup_status; $orderItemStatus = (string) ($return->orderItem?->status ?? ''); // Comment: Check for early rejection by seller or late rejection/cancellation at store or during pickup $rejectedInitial = $current === (string) OrderItemReturnStatusEnum::SELLER_REJECTED(); $rejectedStore = in_array($current, [ (string) OrderItemReturnStatusEnum::REJECTED_AT_STORE(), (string) OrderItemReturnStatusEnum::CANCELLED(), 'rejected', ], true) || in_array($pickupStatus, [ (string) \App\Enums\Order\OrderItemReturnPickupStatusEnum::CANCELLED(), 'rejected', 'cancelled', ], true) || in_array($orderItemStatus, [ (string) \App\Enums\Order\OrderItemStatusEnum::REJECTED(), (string) \App\Enums\Order\OrderItemStatusEnum::CANCELLED(), 'rejected', 'cancelled', ], true); $rejected = $rejectedInitial || $rejectedStore; if ($rejectedInitial) { $currentIndex = 1; } elseif ($rejectedStore) { $currentIndex = 4; } else { $currentIndex = match ($current) { (string) OrderItemReturnStatusEnum::REQUESTED() => 0, (string) OrderItemReturnStatusEnum::SELLER_APPROVED() => 1, (string) OrderItemReturnStatusEnum::PICKUP_ASSIGNED() => 2, (string) OrderItemReturnStatusEnum::PICKED_UP() => 3, (string) OrderItemReturnStatusEnum::RECEIVED_BY_SELLER() => 4, (string) OrderItemReturnStatusEnum::REFUND_PROCESSED(), (string) OrderItemReturnStatusEnum::COMPLETED() => 5, default => false, }; } $finalLabel = (string) $return->return_status === (string) OrderItemReturnStatusEnum::REFUND_PROCESSED() ? __('labels.refund_processed') : __('labels.completed'); $steps = [ ['key' => 'requested', 'label' => __('labels.requested')], ['key' => 'approved', 'label' => $rejectedInitial ? __('labels.rejected') : __('labels.approved')], ['key' => 'pickup_assigned', 'label' => __('labels.pickup_assigned')], ['key' => 'picked_up', 'label' => __('labels.picked_up')], ['key' => 'received', 'label' => $rejectedStore ? (__('labels.rejected_at_store') ?? 'Rejected at store / Cancelled') : __('labels.received')], ['key' => 'completed', 'label' => $rejected && (float) $return->refund_amount <= 0 ? (__('labels.no_refund_customer') ?? 'No Refund') : $finalLabel], ]; @endphp