@extends('layouts.admin.app', ['page' => $menuAdmin['returns']['active'] ?? 'returns']) {{-- Return Dispute System UI Polish Purpose: Segregate customer, rider, and seller evidence sections, and show interactive/read-only resolution summaries. --}} @section('title', 'Return Dispute Resolution #' . $return->id) @section('header_data') @php $page_title = 'Return Dispute Resolution #' . $return->id; $page_pretitle = 'Admin return moderation'; @endphp @endsection @php use App\Enums\Order\OrderItemReturnStatusEnum; use App\Enums\Order\AdminLossBearerEnum; $breadcrumbs = [ ['title' => __('labels.home'), 'url' => route('admin.dashboard')], ['title' => 'Disputed Returns', 'url' => route('admin.returns.disputed')], ['title' => 'Dispute #' . $return->id, 'url' => ''], ]; $isResolved = !empty($return->resolved_by_admin_at); $canResolve = !$isResolved && (string) $return->return_status === (string) \App\Enums\Order\OrderItemReturnStatusEnum::DISPUTED(); @endphp @section('admin-content')
@include('returns._detail', [ 'return' => $return, 'panel' => 'admin', 'refundBreakdown' => $refundBreakdown, 'timelineSteps' => $timelineSteps, 'canAssignRider' => false, 'storeZoneId' => null, 'hideEvidenceCards' => true, ])

Customer Evidence

Return Reason:
{{ $return->reason ?? 'No reason provided.' }}
Customer Description:
{{ $return->description ?? 'No customer description available.' }}
Customer Uploaded Photos: @if (!empty($return->images) && count($return->images) > 0)
@foreach ($return->images as $imageUrl) Customer Photo @endforeach
@else
No customer evidence uploaded.
@endif

Rider Information

Assigned Rider: @php $assignedRiderModel = $return->deliveryBoy; @endphp @if ($assignedRiderModel)
{{ $assignedRiderModel->full_name ?? ($assignedRiderModel->user?->name ?? '—') }}
ID: #{{ $assignedRiderModel->id }} | Mobile: {{ $assignedRiderModel->user?->mobile ?? '—' }}
@else
No rider assigned.
@endif
Pickup Condition:
@if ($return->pickup_condition) {{ ucfirst($return->pickup_condition) }} @else No rider pickup condition recorded. @endif
Pickup Remarks:
{{ $return->pickup_remarks ?? 'No rider remarks available.' }}
Pickup Evidence Photos: @if (!empty($return->pickup_images) && count($return->pickup_images) > 0)
@foreach ($return->pickup_images as $imageUrl) Rider Pickup Photo @endforeach
@else
No rider evidence uploaded.
@endif

Seller Inspection

Dispute Escalation Date:
{{ $return->disputed_at ? $return->disputed_at->format('Y-m-d H:i:s') . ' (' . $return->disputed_at->diffForHumans() . ')' : '—' }}
Dispute Reason (Seller's Escalation):
{{ $return->dispute_reason ?? 'No dispute reason specified.' }}
Seller Remarks on Inspection:
{{ $return->seller_comment ?? 'No seller comments provided.' }}
Seller Inspection Photos: @if (!empty($return->inspection_photos) && count($return->inspection_photos) > 0)
@foreach ($return->inspection_photos as $imageUrl) Seller Photo @endforeach
@else
No seller inspection photos uploaded.
@endif
@if ($isResolved)

Dispute Resolution Summary (Locked Outcome)

Financial Loss Bearer:
@if ($return->admin_resolution === AdminLossBearerEnum::CUSTOMER) Customer is Responsible @elseif ($return->admin_resolution === AdminLossBearerEnum::SELLER) Seller is Responsible @elseif ($return->admin_resolution === AdminLossBearerEnum::RIDER) Rider is Responsible @elseif ($return->admin_resolution === AdminLossBearerEnum::PLATFORM) Platform is Responsible @else Unknown @endif
Resolution Status:
{{ str_replace('_', ' ', $return->return_status) }}
Settlement Status:
@if ($return->admin_resolution === AdminLossBearerEnum::CUSTOMER) No Refund to Customer Seller payout remains active. @elseif ($return->admin_resolution === AdminLossBearerEnum::SELLER) Customer Refunded Debited from seller payout. @elseif ($return->admin_resolution === AdminLossBearerEnum::RIDER) Customer Refunded Charged to rider (Platform Expense). @elseif ($return->admin_resolution === AdminLossBearerEnum::PLATFORM) Customer Refunded Absorbed by Platform. @endif
Administrator Name:
{{ $return->resolvedBy?->name ?? '—' }}
Resolution Date & Time:
{{ $return->resolved_by_admin_at ? $return->resolved_by_admin_at->format('Y-m-d H:i:s') : '—' }}
@if (in_array($return->admin_resolution, [AdminLossBearerEnum::RIDER, AdminLossBearerEnum::PLATFORM]) && $return->platformExpense)
Platform Expense Reference:
{{ $return->platformExpense->reference_number }}
@endif
Administrator Remarks / Comments:
{{ $return->admin_comment }}
Admin Resolution Evidence Photos: @if (!empty($return->resolution_photos) && count($return->resolution_photos) > 0)
@foreach ($return->resolution_photos as $imageUrl) Resolution Photo @endforeach
@else
No resolution photos uploaded by the administrator.
@endif
@elseif ($canResolve)

Resolve Return Dispute

@csrf @method('PUT')
Maximum 1000 characters. These remarks will be stored permanently.
Supported formats: JPG, JPEG, PNG, WEBP. Maximum file size: 10MB per photo.
Back to Disputed list
@else

Dispute Requires Data Review

This return has a dispute timestamp but is currently marked as {{ \Illuminate\Support\Str::headline((string) $return->return_status) }} without an administrator resolution timestamp.

Resolution actions are disabled because this record is no longer in the disputed state.

@endif
@endsection @push('scripts') @endpush