@extends('layouts.front.home') @section('title') {{ __('nav.order_details') }} #{{ $order->id }} - Vendor | Hema @endsection @section('css') @endsection @section('content') @php $timeline = $order->timeline->sortBy('timeline_no')->values(); $timelineNos = $timeline->pluck('timeline_no')->map(fn($n)=>(int)$n)->all(); $lastTimelineNo = (int) ($timeline->last()->timeline_no ?? 0); $isScheduled = (int)$order->request_type === 2; $isQuotation = (int)$order->order_type === 2; $isMaintenance = (int)$order->order_type === 3; $isPurchase = (int)$order->order_type === 1; $statusState = $order->front_status_state ?? $order->front_status ?? ['key' => 'pending', 'text' => 'Pending', 'class' => 'chip-pending']; $currentStatus = $statusState['text']; $actionLabelKey = null; $timelineActionNo = null; $showPendingConfirmActions = false; $__stepMap = match ((int)$order->order_type) { 1 => [1 => 3, 3 => 4, 4 => 5, 5 => 6], 2 => [1 => 7, 7 => 9, 9 => 6], 3 => [1 => 7, 7 => 9, 9 => 6], default => [], }; $nextTimelineNo = $__stepMap[$lastTimelineNo] ?? null; if ($useOfferFlow) { if (!$myOffer) { $actionLabelKey = 'nav.send_offer'; } else { $offerStatus = strtolower((string)$myOffer->status); if ($offerStatus === '3' || $offerStatus === 'rejected') { $actionLabelKey = 'nav.resubmit_offer'; } elseif ($offerStatus === '2' || $offerStatus === 'accepted') { $actionLabelKey = null; } else { $actionLabelKey = 'nav.send_offer'; } } } elseif ($isScheduled) { if (in_array($statusState['key'], ['scheduled', 'active_scheduled'], true)) { $actionLabelKey = 'nav.mark_as_in_progress'; } elseif ($statusState['key'] === 'completed_scheduled') { $actionLabelKey = 'nav.mark_as_completed'; } elseif ($statusState['key'] === 'cancelled') { $actionLabelKey = 'nav.cancel_order'; } } else { // Purchase order if ($nextTimelineNo === 3) { $actionLabelKey = 'nav.mark_as_offer_prepared'; $timelineActionNo = 3; } elseif ($nextTimelineNo === 4) { $actionLabelKey = 'nav.mark_as_shipped'; $timelineActionNo = 4; } elseif ($nextTimelineNo === 5) { $actionLabelKey = 'nav.mark_as_delivered'; $timelineActionNo = 5; } elseif ($nextTimelineNo === 6) { $actionLabelKey = 'nav.mark_as_completed'; $timelineActionNo = 6; } } $timelineSteps = $isQuotation ? [1,7,9,6] : ($isMaintenance ? [1,7,9,6] : ($isScheduled ? [1,2,3,4,5,6] : [1,3,4,5,6])); $isAr = app()->getLocale() === 'ar'; $tr = function ($text) use ($isAr) { if (!$isAr) { return $text; } $map = [ 'pending' => 'قيد الانتظار', 'confirmed' => 'تم التأكيد', 'under review' => 'قيد المراجعة', 'processing' => 'قيد المعالجة', 'shipped' => 'تم الشحن', 'delivered' => 'تم التسليم', 'completed' => 'مكتمل', 'cancelled' => 'ملغي', 'canceled' => 'ملغي', 'rejected' => 'مرفوض', 'paused' => 'متوقف', 'upcoming' => 'قادم', 'active' => 'نشط', 'offers received' => 'تم استلام العروض', 'supplier selected' => 'تم اختيار المورد', 'converted to order' => 'تم التحويل إلى طلب', 'assigned to supplier' => 'تم التعيين إلى المورد', 'on hold' => 'معلق', 'order created' => 'تم إنشاء الطلب', 'edit offer' => 'تعديل العرض', 'cancel offer' => 'إلغاء العرض', 'send offer' => 'إرسال عرض', 'resubmit offer' => 'إعادة تقديم العرض', 'mark as processing' => 'تحديد كقيد المعالجة', 'mark as shipped' => 'تحديد كتم الشحن', 'mark as delivered' => 'تحديد كتم التسليم', 'mark as completed' => 'تحديد كمكتمل', 'mark as offer prepared' => 'تحديد كمعد', 'mark as offer sent' => 'تحديد كإرسال العرض', 'mark as appointment set' => 'تحديد موعد', 'mark as in progress' => 'تحديد كقيد التنفيذ', 'requests details' => 'تفاصيل الطلبات', 'my offer' => 'عرضي', 'offer rejected' => 'تم رفض العرض', 'contact us' => 'تواصل معنا', 'no notes provided.' => 'لا توجد ملاحظات.', 'delete this offer?' => 'هل تريد حذف هذا العرض؟', ]; $key = strtolower(trim((string) $text)); return $map[$key] ?? $text; }; $currentStatus = $tr($currentStatus); $actionLabel = $actionLabelKey ? __($actionLabelKey) : null; $paymentRaw = $order->payment_type ?: ($order->payment_status ?: '-'); $paymentKey = strtolower(trim((string) $paymentRaw)); $paymentMap = [ 'cash on delivery' => $isAr ? 'الدفع عند الاستلام' : 'Cash on Delivery', 'cod' => $isAr ? 'الدفع عند الاستلام' : 'Cash on Delivery', 'paid' => $isAr ? 'مدفوع' : 'Paid', 'unpaid' => $isAr ? 'غير مدفوع' : 'Unpaid', '1' => $isAr ? 'مدفوع' : 'Paid', '0' => $isAr ? 'غير مدفوع' : 'Unpaid', ]; $paymentDisplay = $paymentMap[$paymentKey] ?? $paymentRaw; $orderFiles = collect(is_array($order->files) ? $order->files : [])->filter()->values(); $imageExtensions = ['jpg', 'jpeg', 'png', 'webp', 'gif', 'bmp']; @endphp
@include('flash::message')
{{ __('nav.order_details') }}
{{ __('nav.request_number') }}#{{ $order->id }}
{{ __('nav.delivery_address') }}{{ $order->address ?: '-' }}
@if($isScheduled)
{{ __('nav.supplier') }}{{ auth()->user()->company_name ?? auth()->user()->name }}
@endif
{{ __('nav.payment_method') }}{{ $paymentDisplay }}
{{ __('nav.status') }}{{ $currentStatus }}
@if($isScheduled) @php $start = $order->schedule_start_date ? \Carbon\Carbon::parse($order->schedule_start_date) : null; $end = $start ? (clone $start)->addMonths(3) : null; @endphp
{{ __('nav.scheduled_period') }}{{ $start ? $start->translatedFormat('M d') : '-' }} - {{ $end ? $end->translatedFormat('M d, Y') : '-' }}
@endif
{{ __('nav.created_at') }}{{ $order->created_at->translatedFormat('M d, Y') }}
@if($isQuotation || $isMaintenance)
{{ __('nav.request_information') }}
{{ __('nav.order_type_label') }}{{ $isQuotation ? __('nav.quotation_request') : __('nav.maintenance_request') }}
@if($isQuotation) @if($order->budget)
{{ __('nav.budget') }}{{ number_format((float)$order->budget, 0) }} {{ __('nav.sar') }}
@endif @if($order->delivery_duration)
{{ __('nav.delivery_duration') }}{{ $order->delivery_duration }}
@endif @if($order->frequency)
{{ __('nav.frequency') }}{{ $order->frequency }}
@endif @if($order->date_time_picker)
{{ __('nav.preferred_date_time') }}{{ $order->date_time_picker }}
@endif @if($order->quotation_type)
{{ __('nav.quotation_type') }}{{ $order->quotation_type }}
@endif @endif @if($isMaintenance) @if($order->device_category)
{{ __('nav.device_category') }}{{ $order->device_category->name ?? $order->device_category_id }}
@endif @if($order->device_name)
{{ __('nav.device_name') }}{{ $order->device_name }}
@endif @if($order->serial_number)
{{ __('nav.serial_number') }}{{ $order->serial_number }}
@endif @if($order->issue_description)
{{ __('nav.issue_description') }}{{ $order->issue_description }}
@endif @if($order->preferred_service_time)
{{ __('nav.preferred_service_time') }}{{ $order->preferred_service_time }}
@endif @endif
@endif @if($isScheduled)
{{ __('nav.note') }}
{{ $order->notes ?: __('nav.no_notes_provided') }}
@elseif($order->notes)
{{ __('nav.general_notes') }}
{{ $order->notes }}
@endif
{{ ($isQuotation || (int)$order->order_type === 3 || $isScheduled) ? __('nav.request_attachments') : __('nav.product_details') }}
@if($isQuotation || (int)$order->order_type === 3 || $isScheduled) @if($orderFiles->count() > 0)
@foreach($orderFiles as $f) @php $ext = strtolower(pathinfo((string) $f, PATHINFO_EXTENSION)); $isImage = in_array($ext, $imageExtensions, true); @endphp @endforeach
@else
--
@endif @elseif($order->items && $order->items->count())
@foreach($order->items as $item)
{{ $item->product->name ?? __('nav.product') }} {{ $item->quantity }} {{ __('nav.quantity') }}
@endforeach
@else
{{ $order->device_name ?: '-' }}-
@endif
{{ __('nav.timeline') }}
@foreach($timelineSteps as $stepNo) @php $done = in_array($stepNo, $timelineNos, true); $entry = $timeline->firstWhere('timeline_no', $stepNo); @endphp
{{ vendorTimelineName($stepNo, $order->order_type) }}
{{ $entry ? $entry->created_at->translatedFormat('M j') : '-' }}
@endforeach @if($myOffer && in_array(strtolower((string)$myOffer->status), ['3','rejected'], true))
{{ __('nav.offer_rejected') }}
{{ optional($myOffer->updated_at)->translatedFormat('M j') }}
@endif
@if($order->user)
{{ __('nav.contact_us') }}
{{ $order->user->company_name ?? $order->user->name }}
{{ $order->user->mobile ?? '+966-1234567' }}
@if($order->user->mobile) @endif
@endif @if($isQuotation && $myOffer)
{{ __('nav.my_offer') }}
{{ __('nav.my_offer') }}
{{ __('nav.total_price') }}: {{ number_format((float)($myOffer->cost ?? 0), 0) }} {{ __('nav.sar') }}
{{ __('nav.delivery_time') }}: {{ $myOffer->delivery_time ?? 0 }} {{ __('nav.days_text') }}
{{ __('nav.warranty') }}: {{ $myOffer->warranty ?? '-' }}
{{ __('nav.note') }}: {{ $myOffer->notes ?? '-' }}
@endif
{{ __('nav.payment_details') }}
@if($order->items_cost && $order->items_cost != $order->total_before_discount && $order->items_cost != $order->total_cost)
{{ __('nav.items_cost') }}{{ number_format((float)$order->items_cost, 0) }} {{ __('nav.sar') }}
@endif
{{ __('nav.subtotal') }}{{ number_format((float)($order->total_before_discount ?? $order->items_cost ?? $order->total_cost ?? 0), 0) }} {{ __('nav.sar') }}
@if($order->discount)
{{ __('nav.discount') }}-{{ number_format((float)$order->discount, 0) }} {{ __('nav.sar') }}
@endif @if($order->coupon)
{{ __('nav.coupon_code') }}{{ $order->coupon->code ?? $order->coupon_id }}
@endif
{{ __('nav.vat') }} (10%){{ number_format((float)($order->vat_amount ?? 0), 0) }} {{ __('nav.sar') }}
{{ __('nav.delivery_fee') }}{{ number_format((float)($order->delivery_fee ?? 0), 0) }} {{ __('nav.sar') }}
{{ __('nav.net_total') }}{{ number_format((float)($order->total_cost ?? 0), 0) }} {{ __('nav.sar') }}
@if($order->payment_status || $order->gateway_name)
@if($order->payment_status)
{{ __('nav.payment_status') }}{{ $paymentDisplay }}
@endif @if($order->gateway_name)
{{ __('nav.payment_gateway') }}{{ $order->gateway_name }}
@endif @if($order->gateway_payment_id)
Gateway Payment ID{{ $order->gateway_payment_id }}
@endif
@endif
@php $orderShipments = $order->shipments()->with(['images', 'shippingMethod'])->orderByDesc('id')->get(); @endphp @if($orderShipments->count() > 0)
{{ __('nav.shipments') }} ({{ $orderShipments->count() }})
@foreach($orderShipments as $s)
{{ __('nav.shipment') }} #{{ $s->id }} {{ $s->status_label }}
@if($s->tracking_number){{ __('nav.tracking_number') }}: {{ $s->tracking_number }} | @endif @if($s->shippingMethod){{ $s->shippingMethod->name }} | @endif {{ $s->created_at->translatedFormat('M d, Y H:i') }}
@if($s->images->count() > 0)
@foreach($s->images as $img) {{ $img->caption ?? '' }} @endforeach
@endif
@endforeach
@endif @if($useOfferFlow && $myOffer && in_array(strtolower((string)$myOffer->status), ['3','rejected'], true))
{{ __('nav.offer_rejected') }}: {{ $myOffer->rejected_reson ?: __('nav.client_requests_lower_price') }}
@elseif($useOfferFlow && !$myOffer) @elseif($useOfferFlow && $myOffer && (string)$myOffer->status === '1')
@csrf @method('DELETE')
{{ __('nav.edit_offer') }}
@elseif($showPendingConfirmActions)
@csrf @if((int)$order->order_type === 1) @endif
@elseif($timelineActionNo && (int)$timelineActionNo === 4)
@if(isset($shippingMethods) && $shippingMethods->count() > 0)
@csrf
@foreach($shippingMethods as $method) @endforeach
@endif {{ __('nav.create_shipment_with_images') }}
@elseif($timelineActionNo)
@csrf @if((int)$timelineActionNo === 2 && (int)$order->order_type === 1) @endif
@elseif($actionLabel)
@endif
@endsection