@php $trackingStatus = $order->getTrackingStatus(); $orderStatus = $trackingStatus->getValue(); $isCanceled = in_array($orderStatus, [ \Botble\Ecommerce\Enums\OrderStatusEnum::CANCELED, \Botble\Ecommerce\Enums\OrderStatusEnum::RETURNED, \Botble\Ecommerce\Enums\OrderStatusEnum::PARTIAL_RETURNED, ]); $shipmentStatus = ($order->shipment && $order->shipment->id) ? ($order->shipment->status instanceof \Botble\Base\Supports\Enum ? $order->shipment->status->getValue() : (string) $order->shipment->status) : null; $currentStep = 1; if ($orderStatus === \Botble\Ecommerce\Enums\OrderStatusEnum::COMPLETED || in_array($shipmentStatus, [\Botble\Ecommerce\Enums\ShippingStatusEnum::DELIVERED, \Botble\Ecommerce\Enums\ShippingStatusEnum::AUDITED])) { $currentStep = 4; } elseif ($shipmentStatus === \Botble\Ecommerce\Enums\ShippingStatusEnum::DELIVERING) { $currentStep = 3; } elseif ( $orderStatus === \Botble\Ecommerce\Enums\OrderStatusEnum::PROCESSING || in_array($shipmentStatus, [ \Botble\Ecommerce\Enums\ShippingStatusEnum::APPROVED, \Botble\Ecommerce\Enums\ShippingStatusEnum::PENDING, \Botble\Ecommerce\Enums\ShippingStatusEnum::ARRANGE_SHIPMENT, \Botble\Ecommerce\Enums\ShippingStatusEnum::READY_TO_BE_SHIPPED_OUT, \Botble\Ecommerce\Enums\ShippingStatusEnum::PICKING, \Botble\Ecommerce\Enums\ShippingStatusEnum::DELAY_PICKING, \Botble\Ecommerce\Enums\ShippingStatusEnum::PICKED, ]) ) { $currentStep = 2; } else { $currentStep = 1; } $progressPercent = match ($currentStep) { 1 => 0, 2 => 33.33, 3 => 66.66, 4 => 100, default => 0, }; $steps = [ [ 'number' => 1, 'key' => 'approved', 'title' => $trackingStatus->label() ?: __('Approved'), 'description' => __('Order Placed'), 'icon' => $trackingStatus->getIcon() ?: 'ti ti-clipboard-check', 'time' => $order->created_at ? $order->created_at->translatedFormat('d M Y, H:i') : null, ], [ 'number' => 2, 'key' => 'preparing', 'title' => __('Preparing'), 'description' => __('Processing & Packing'), 'icon' => 'ti ti-package', 'time' => ($currentStep >= 2 && $order->shipment && $order->shipment->created_at) ? $order->shipment->created_at->translatedFormat('d M Y, H:i') : null, ], [ 'number' => 3, 'key' => 'shipping', 'title' => __('Shipping'), 'description' => ($order->shipment && $order->shipment->shipping_company_name) ? $order->shipment->shipping_company_name : __('Out for Delivery'), 'icon' => 'ti ti-truck-delivery', 'time' => ($order->shipment && $order->shipment->date_shipped) ? \Carbon\Carbon::parse($order->shipment->date_shipped)->translatedFormat('d M Y, H:i') : null, ], [ 'number' => 4, 'key' => 'delivered', 'title' => __('Delivered'), 'description' => __('Package Delivered'), 'icon' => 'ti ti-home-check', 'time' => ($currentStep >= 4 && $order->completed_at) ? $order->completed_at->translatedFormat('d M Y, H:i') : null, ], ]; @endphp
{{ __('Order Status Progress') }}
{{ __('Real-time timeline of your order fulfillment') }}
{!! BaseHelper::clean($trackingStatus->toHtml()) !!}
@if ($isCanceled) @endif
@foreach ($steps as $step) @php $stepNumber = $step['number']; $isCompleted = ! $isCanceled && ($currentStep > $stepNumber || ($currentStep === 4 && $stepNumber === 4)); $isCurrent = ! $isCanceled && ($currentStep === $stepNumber && $currentStep !== 4); $isPending = $isCanceled || ($currentStep < $stepNumber); @endphp
$isCompleted, 'is-current' => $isCurrent, 'is-pending' => $isPending, ])>
@if ($isCompleted) @else @endif
{{ $stepNumber }}
{{ $step['title'] }}

{{ $step['description'] }}

@if ($step['time']) {{ $step['time'] }} @endif
@endforeach