diff --git a/resources/views/ops/actions/inspection.blade.php b/resources/views/ops/actions/inspection.blade.php new file mode 100644 index 0000000..33a7bf7 --- /dev/null +++ b/resources/views/ops/actions/inspection.blade.php @@ -0,0 +1,81 @@ + +
+

🔍 Inspection

+ +
+ +
+

✓ Passed Inspection

+

Quality check completed - proceed to packing

+ +
+ @csrf + +
+
+ + +
+

✗ Flag Issue

+

Quality issue detected - needs review

+ +
+ @csrf + + + + +
+ + +
+
+
diff --git a/resources/views/ops/actions/packing.blade.php b/resources/views/ops/actions/packing.blade.php new file mode 100644 index 0000000..219342d --- /dev/null +++ b/resources/views/ops/actions/packing.blade.php @@ -0,0 +1,135 @@ + +
+

📦 Confirm Packing

+ +
+ @csrf + +
+ +
+ + + @error('width') +

{{ $message }}

+ @enderror +
+ + +
+ + + @error('length') +

{{ $message }}

+ @enderror +
+ + +
+ + + @error('height') +

{{ $message }}

+ @enderror +
+ + +
+ + + @error('weight') +

{{ $message }}

+ @enderror +
+
+ + +
+ + +
+
+ + +
diff --git a/resources/views/ops/actions/read-only.blade.php b/resources/views/ops/actions/read-only.blade.php new file mode 100644 index 0000000..a523370 --- /dev/null +++ b/resources/views/ops/actions/read-only.blade.php @@ -0,0 +1,48 @@ + +
+
+
+

📋 Order Status: Read-Only

+

+ This order is in the {{ str_replace('_', ' ', ucfirst($order->status)) }} phase. + No actions are available at this stage. +

+ + @if($order->status === 'ready_to_ship') +
+

+ Next Step: Move Trello card to "Ready to Ship" to trigger automatic shipment creation. +

+
+ @elseif($order->status === 'awaiting_collection') +
+

+ Status: Parcel is awaiting collection from courier. +

+ @if($order->courier_waybill_id) +

+ Waybill: {{ $order->courier_waybill_id }} +

+ @endif +
+ @elseif($order->status === 'in_transit') +
+

+ Status: Parcel is in transit to the customer. +

+ @if($order->courier_tracking_number) +

+ Tracking: {{ $order->courier_tracking_number }} +

+ @endif +
+ @else +
+

+ The order is progressing through the fulfillment pipeline. +

+
+ @endif +
+
+
diff --git a/resources/views/ops/order-detail.blade.php b/resources/views/ops/order-detail.blade.php new file mode 100644 index 0000000..b9d998a --- /dev/null +++ b/resources/views/ops/order-detail.blade.php @@ -0,0 +1,131 @@ +@extends('layouts.app') + +@section('content') +
+ +
+

Order {{ $order->order_number }}

+

{{ $order->uuid }}

+
+ + +
+
+
+

Status

+

{{ str_replace('_', ' ', $order->status) }}

+
+
+

Order Type

+

{{ $order->is_custom_order ? 'Custom' : 'Standard' }}

+
+
+

Customer

+

{{ $order->user->name ?? 'N/A' }}

+
+
+

Created

+

{{ $order->created_at->format('M d, Y') }}

+
+
+ + +
+

Scan to access this order:

+
+ {!! file_get_contents(storage_path("app/public/qr-codes/{$order->uuid}.svg")) !!} +
+
+
+ + + @if($order->status === 'inspection') + @include('ops.actions.inspection') + @elseif($order->status === 'packing' || $order->status === 'printing') + @include('ops.actions.packing') + @elseif(in_array($order->status, ['ready_to_ship', 'awaiting_collection', 'in_transit'])) + @include('ops.actions.read-only') + @else +
+

No actions available for this order status.

+
+ @endif + + +
+

Order Items

+
+ + + + + + + + + + + @forelse($order->items as $item) + + + + + + + @empty + + + + @endforelse + +
ProductTypeQuantityAmount
{{ $item->product->name ?? 'N/A' }}{{ $item->product_type ?? 'N/A' }}{{ $item->quantity }}R{{ number_format($item->unit_price * $item->quantity, 2) }}
No items
+
+
+ + + @if($order->packing_completed_at) +
+

Packing Details

+
+
+

Width

+

{{ $order->packing_width }} cm

+
+
+

Length

+

{{ $order->packing_length }} cm

+
+
+

Weight

+

{{ $order->packing_weight }} kg

+
+
+

Packed At

+

{{ $order->packing_completed_at->format('M d, H:i') }}

+
+
+
+ @endif + + + @if($order->courier_waybill_id) +
+

Shipment Details

+
+
+

Waybill ID

+

{{ $order->courier_waybill_id }}

+
+
+

Tracking Number

+

{{ $order->courier_tracking_number ?? 'N/A' }}

+
+
+

Status

+

{{ str_replace('_', ' ', $order->courier_status ?? 'pending') }}

+
+
+
+ @endif +
+@endsection diff --git a/resources/views/ops/order-not-found.blade.php b/resources/views/ops/order-not-found.blade.php new file mode 100644 index 0000000..9a499cf --- /dev/null +++ b/resources/views/ops/order-not-found.blade.php @@ -0,0 +1,15 @@ +@extends('layouts.app') + +@section('content') +
+
+

❌ Order Not Found

+

+ The QR code token is invalid or the order does not exist. +

+ + Return Home + +
+
+@endsection diff --git a/resources/views/ops/unauthorized.blade.php b/resources/views/ops/unauthorized.blade.php new file mode 100644 index 0000000..d436371 --- /dev/null +++ b/resources/views/ops/unauthorized.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.app') + +@section('content') +
+
+

🔒 Access Denied

+

+ You do not have permission to access this page. Only operations staff can view QR-based order interfaces. +

+ @if(auth()->check()) +

+ Logged in as: {{ auth()->user()->name }} +

+ @endif + + Return Home + +
+
+@endsection