This commit is contained in:
Abhishek Mali
2025-11-13 13:05:17 +05:30
parent 15497076ae
commit 6608caf61d
7 changed files with 679 additions and 190 deletions

View File

@@ -135,29 +135,29 @@ body, .container-fluid { background: #f4f7fc; }
<div class="container-fluid py-3">
<!-- DASHBOARD TITLE & DESC -->
<!-- DASHBOARD TITLE -->
<div class="dash-top-titlebox">
<div class="dash-title-main">Admin Dashboard</div>
<div class="dash-title-desc">Monitor operations and manage system</div>
</div>
<!-- STATS CARDS BLOCK: 2 x 4 layout -->
<!-- STATS CARDS -->
<div class="stats-row-wrap">
<div class="stats-row">
<div class="stats-card stats-card-blue"><span class="stats-icon">📦</span><div style="z-index:2;"><div class="stats-label">Total Shipments</div><div class="stats-value">1,247</div></div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">👥</span><div style="z-index:2;"><div class="stats-label">Active Customers</div><div class="stats-value">342</div></div></div>
<div class="stats-card stats-card-green"><span class="stats-icon">💰</span><div style="z-index:2;"><div class="stats-label">Total Revenue</div><div class="stats-value">₹123</div></div></div>
<div class="stats-card stats-card-red"><span class="stats-icon"></span><div style="z-index:2;"><div class="stats-label">Pending Order</div><div class="stats-value">23</div></div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">📦</span><div class="stats-label">Total Shipments</div><div class="stats-value">1,247</div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">👥</span><div class="stats-label">Active Customers</div><div class="stats-value">342</div></div>
<div class="stats-card stats-card-green"><span class="stats-icon">💰</span><div class="stats-label">Total Revenue</div><div class="stats-value">₹123</div></div>
<div class="stats-card stats-card-red"><span class="stats-icon"></span><div class="stats-label">Pending Order</div><div class="stats-value">23</div></div>
</div>
<div class="stats-row">
<div class="stats-card stats-card-blue"><span class="stats-icon">📦</span><div style="z-index:2;"><div class="stats-label">Total Orders</div><div class="stats-value">453</div></div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">🧑‍💼</span><div style="z-index:2;"><div class="stats-label">Total Staff</div><div class="stats-value">125</div></div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">📦</span><div style="z-index:2;"><div class="stats-label">Total Items</div><div class="stats-value">321</div></div></div>
<div class="stats-card stats-card-orng"><span class="stats-icon"></span><div style="z-index:2;"><div class="stats-label">Inactive Customers</div><div class="stats-value">10</div></div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">📦</span><div class="stats-label">Total Orders</div><div class="stats-value">453</div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">🧑‍💼</span><div class="stats-label">Total Staff</div><div class="stats-value">125</div></div>
<div class="stats-card stats-card-blue"><span class="stats-icon">📦</span><div class="stats-label">Total Items</div><div class="stats-value">321</div></div>
<div class="stats-card stats-card-orng"><span class="stats-icon"></span><div class="stats-label">Inactive Customers</div><div class="stats-value">10</div></div>
</div>
</div>
<!-- ORDER MANAGEMENT BOX (header + main) -->
<!-- ORDER MANAGEMENT -->
<div class="order-mgmt-box">
<div class="order-mgmt-bar">
<span class="order-mgmt-title"><i class="bi bi-table"></i> Order Management</span>
@@ -165,123 +165,307 @@ body, .container-fluid { background: #f4f7fc; }
<i class="bi bi-plus-circle"></i> Create Order
</button>
</div>
<div class="order-mgmt-main">
<!-- Create Order Form -->
<!-- CREATE ORDER FORM -->
<div id="createOrderForm" class="collapse mb-3">
<div class="card">
<div class="card-header bg-light"><strong>New Order Form</strong></div>
<div class="card-body">
<form action="{{ route('admin.orders.store') }}" method="POST">
{{-- FORM START --}}
<form action="{{ route('admin.orders.temp.add') }}" method="POST">
@csrf
<div class="row g-3">
<div class="col-md-4"><label class="form-label">Mark No</label>
<select class="form-select" id="markNoSelect" name="mark_no" required>
<option value="">Select Mark No</option>
@foreach($markList as $mark)
<option value="{{ $mark->mark_no }}"
data-origin="{{ $mark->origin }}"
data-destination="{{ $mark->destination }}">
{{ $mark->mark_no }} - {{ $mark->customer_name }}
</option>
@endforeach
</select>
{{-- MARK NO --}}
<div class="col-md-4">
<label class="form-label">Mark No</label>
@if(session('temp_order_items'))
{{-- Mark No locked, cannot be changed --}}
<input type="text" class="form-control" value="{{ session('mark_no') }}" disabled>
{{-- Hidden field to submit mark_no --}}
<input type="hidden" name="mark_no" value="{{ session('mark_no') }}">
@else
{{-- Normal selectable dropdown --}}
<select class="form-select" id="markNoSelect" name="mark_no" required>
<option value="">Select Mark No</option>
@foreach($markList as $mark)
<option value="{{ $mark->mark_no }}"
data-origin="{{ $mark->origin }}"
data-destination="{{ $mark->destination }}"
@if(session('mark_no') == $mark->mark_no) selected @endif>
{{ $mark->mark_no }} - {{ $mark->customer_name }}
</option>
@endforeach
</select>
@endif
</div>
<div class="col-md-4"><label class="form-label">Origin</label><input type="text" class="form-control" name="origin" id="originField" readonly></div>
<div class="col-md-4"><label class="form-label">Destination</label><input type="text" class="form-control" name="destination" id="destinationField" readonly></div>
<div class="col-md-4"><label class="form-label">Description</label><input type="text" class="form-control" name="description" required></div>
<div class="col-md-2"><label class="form-label">CTN</label><input type="number" class="form-control" name="ctn"></div>
<div class="col-md-2"><label class="form-label">QTY</label><input type="number" class="form-control" name="qty"></div>
<div class="col-md-2"><label class="form-label">TTL/QTY</label><input type="number" class="form-control" name="ttl_qty"></div>
<div class="col-md-2"><label class="form-label">Unit</label><input type="text" class="form-control" name="unit"></div>
<div class="col-md-2"><label class="form-label">Price</label><input type="number" step="0.01" class="form-control" name="price"></div>
<div class="col-md-2"><label class="form-label">TTL Amount</label><input type="number" step="0.01" class="form-control" name="ttl_amount"></div>
<div class="col-md-2"><label class="form-label">CBM</label><input type="number" step="0.001" class="form-control" name="cbm"></div>
<div class="col-md-2"><label class="form-label">TTL CBM</label><input type="number" step="0.001" class="form-control" name="ttl_cbm"></div>
<div class="col-md-2"><label class="form-label">KG</label><input type="number" step="0.001" class="form-control" name="kg"></div>
<div class="col-md-2"><label class="form-label">TTL KG</label><input type="number" step="0.001" class="form-control" name="ttl_kg"></div>
<div class="col-md-3"><label class="form-label">Shop No</label><input type="text" class="form-control" name="shop_no"></div>
<div class="col-md-12 text-end">
<button type="submit" class="btn btn-success mt-3"><i class="bi bi-save"></i> Submit Order</button>
{{-- ORIGIN --}}
<div class="col-md-4">
<label class="form-label">Origin</label>
<input type="text" class="form-control"
id="originField"
name="origin"
readonly required
value="{{ session('origin') }}">
</div>
{{-- DESTINATION --}}
<div class="col-md-4">
<label class="form-label">Destination</label>
<input type="text" class="form-control"
id="destinationField"
name="destination"
readonly required
value="{{ session('destination') }}">
</div>
</div>
<hr class="my-3">
{{-- ITEM INPUTS --}}
<h6 class="text-primary">Add Item</h6>
<div class="row g-3">
<div class="col-md-4">
<label class="form-label">Description</label>
<input type="text" class="form-control" name="description" required>
</div>
<div class="col-md-2"><label>CTN</label><input type="number" name="ctn" class="form-control"></div>
<div class="col-md-2"><label>QTY</label><input type="number" name="qty" class="form-control"></div>
<div class="col-md-2"><label>TTL/QTY</label><input type="number" name="ttl_qty" class="form-control"></div>
<div class="col-md-2"><label>Unit</label><input type="text" name="unit" class="form-control"></div>
<div class="col-md-2"><label>Price</label><input type="number" step="0.01" name="price" class="form-control"></div>
<div class="col-md-2"><label>TTL Amount</label><input type="number" step="0.01" name="ttl_amount" class="form-control"></div>
<div class="col-md-2"><label>CBM</label><input type="number" step="0.001" name="cbm" class="form-control"></div>
<div class="col-md-2"><label>TTL CBM</label><input type="number" step="0.001" name="ttl_cbm" class="form-control"></div>
<div class="col-md-2"><label>KG</label><input type="number" step="0.001" name="kg" class="form-control"></div>
<div class="col-md-2"><label>TTL KG</label><input type="number" step="0.001" name="ttl_kg" class="form-control"></div>
<div class="col-md-3"><label>Shop No</label><input type="text" name="shop_no" class="form-control"></div>
<div class="col-md-12 text-end mt-3">
<button class="btn btn-info">
<i class="bi bi-plus-circle"></i> Add Item
</button>
</div>
</div>
</form>
{{-- FORM END --}}
{{-- RESET ORDER BUTTON --}}
@if(session('temp_order_items'))
<div class="text-start mt-2">
<form action="{{ route('admin.orders.temp.reset') }}" method="POST">
@csrf
<button class="btn btn-sm btn-warning">
<i class="bi bi-arrow-repeat"></i> Reset Order
</button>
</form>
</div>
@endif
{{-- TEMPORARY ITEMS TABLE --}}
@if(session('temp_order_items') && count(session('temp_order_items')) > 0)
<hr class="my-4">
<h5 class="text-success">Temporary Items</h5>
<table class="table table-bordered text-center align-middle">
<thead class="table-light">
<tr>
<th>#</th>
<th>Description</th>
<th>CTN</th>
<th>QTY</th>
<th>TTL/QTY</th>
<th>Unit</th>
<th>Price</th>
<th>TTL Amount</th>
<th>CBM</th>
<th>TTL CBM</th>
<th>KG</th>
<th>TTL KG</th>
<th>Shop No</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
@foreach(session('temp_order_items') as $index => $item)
<tr>
<td>{{ $index + 1 }}</td>
<td>{{ $item['description'] }}</td>
<td>{{ $item['ctn'] }}</td>
<td>{{ $item['qty'] }}</td>
<td>{{ $item['ttl_qty'] }}</td>
<td>{{ $item['unit'] }}</td>
<td>{{ $item['price'] }}</td>
<td>{{ $item['ttl_amount'] }}</td>
<td>{{ $item['cbm'] }}</td>
<td>{{ $item['ttl_cbm'] }}</td>
<td>{{ $item['kg'] }}</td>
<td>{{ $item['ttl_kg'] }}</td>
<td>{{ $item['shop_no'] }}</td>
<td>
<form action="{{ route('admin.orders.temp.delete') }}" method="POST">
@csrf
<input type="hidden" name="index" value="{{ $index }}">
<button class="btn btn-sm btn-danger">
<i class="bi bi-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="text-end mt-3">
<form action="{{ route('admin.orders.finish') }}" method="POST">
@csrf
<input type="hidden" name="mark_no" value="{{ session('mark_no') }}">
<input type="hidden" name="origin" value="{{ session('origin') }}">
<input type="hidden" name="destination" value="{{ session('destination') }}">
<button class="btn btn-success btn-lg">
<i class="bi bi-check-circle"></i> Finish & Save Order
</button>
</form>
</div>
@endif
</div>
</div>
</div>
{{-- Recent Orders Table --}}
<div class="card shadow-sm">
<div class="card-header bg-light">
<strong>Recent Orders</strong>
</div>
<div class="card-body table-responsive">
<table class="table table-striped table-bordered align-middle text-center">
<thead class="table-light">
<tr>
<th>#</th>
<th>Order ID</th>
<th>Mark No</th>
<th>Description</th>
<th>Origin</th>
<th>Destination</th>
<th>CTN</th>
<th>QTY</th>
<th>TTL/QTY</th>
<th>Unit</th>
<th>Price ()</th>
<th>TTL Amount ()</th>
<th>CBM</th>
<th>TTL CBM</th>
<th>KG</th>
<th>TTL KG</th>
<th>Shop No</th>
<th>Status</th>
<th>Date</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@forelse($orders as $index => $order)
<tr>
<td>{{ $order->id }}</td>
<td><a href="{{ route('admin.orders.show', $order->id) }}" class="fw-semibold text-primary">{{ $order->order_id }}</a></td>
<td>{{ $order->mark_no }}</td>
<td>{{ $order->description }}</td>
<td>{{ $order->origin }}</td>
<td>{{ $order->destination }}</td>
<td>{{ $order->ctn }}</td>
<td>{{ $order->qty }}</td>
<td>{{ $order->ttl_qty }}</td>
<td>{{ $order->unit }}</td>
<td>{{ number_format($order->price, 2) }}</td>
<td>{{ number_format($order->ttl_amount, 2) }}</td>
<td>{{ $order->cbm }}</td>
<td>{{ $order->ttl_cbm }}</td>
<td>{{ $order->kg }}</td>
<td>{{ $order->ttl_kg }}</td>
<td>{{ $order->shop_no }}</td>
<td><span class="badge bg-info text-dark">{{ ucfirst($order->status) }}</span></td>
<td>{{ $order->created_at->format('d-m-Y') }}</td>
<td>
<a href="{{ route('admin.orders.show', $order->id) }}" class="btn btn-sm btn-outline-primary">
<i class="bi bi-eye"></i> View
</a>
</td>
</tr>
@empty
<tr><td colspan="20" class="text-center text-muted">No orders found</td></tr>
@endforelse
</tbody>
</table>
<!-- RECENT ORDERS TABLE -->
<div class="card shadow-sm">
<div class="card-header bg-light">
<strong>Recent Orders</strong>
</div>
<div class="card-body table-responsive">
<table class="table table-striped table-bordered align-middle text-center">
<thead class="table-light">
<tr>
<th>#</th>
<th>Order ID</th>
<th>Mark No</th>
<th>Origin</th>
<th>Destination</th>
<th>Total CTN</th>
<th>Total QTY</th>
<th>Total TTL/QTY</th>
<th>Total Amount ()</th>
<th>Total CBM</th>
<th>Total TTL CBM</th>
<th>Total KG</th>
<th>Total TTL KG</th>
<th>Status</th>
<th>Date</th>
<th>Action</th>
</tr>
</thead>
<tbody>
@forelse($orders as $order)
<tr>
<td>{{ $order->id }}</td>
<td>
<a href="{{ route('admin.orders.show', $order->id) }}" class="fw-semibold text-primary">
{{ $order->order_id }}
</a>
</td>
<td>{{ $order->mark_no }}</td>
<td>{{ $order->origin }}</td>
<td>{{ $order->destination }}</td>
<td>{{ $order->ctn }}</td>
<td>{{ $order->qty }}</td>
<td>{{ $order->ttl_qty }}</td>
<td>{{ number_format($order->ttl_amount, 2) }}</td>
<td>{{ $order->cbm }}</td>
<td>{{ $order->ttl_cbm }}</td>
<td>{{ $order->kg }}</td>
<td>{{ $order->ttl_kg }}</td>
<td>
<span class="badge bg-info text-dark">{{ ucfirst($order->status) }}</span>
</td>
<td>{{ $order->created_at->format('d-m-Y') }}</td>
<td>
<a href="{{ route('admin.orders.show', $order->id) }}" class="btn btn-sm btn-outline-primary">
<i class="bi bi-eye"></i> View
</a>
</td>
</tr>
@empty
<tr>
<td colspan="16" class="text-muted">No orders found</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{{-- JS: LOCK MARK NO + LOAD ORIGIN/DESTINATION --}}
<script>
document.getElementById('markNoSelect').addEventListener('change', function() {
const option = this.options[this.selectedIndex];
document.getElementById('originField').value = option.dataset.origin || '';
document.getElementById('destinationField').value = option.dataset.destination || '';
document.getElementById('markNoSelect').addEventListener('change', function () {
const locked = {{ session('temp_order_items') ? 'true' : 'false' }};
if (locked) {
alert("You must finish the current order before changing Mark No.");
this.value = "{{ session('mark_no') }}";
return;
}
const option = this.options[this.selectedIndex];
document.getElementById('originField').value = option.dataset.origin || '';
document.getElementById('destinationField').value = option.dataset.destination || '';
});
</script>
{{-- AUTO OPEN FORM AFTER REDIRECT --}}
<script>
document.addEventListener("DOMContentLoaded", function () {
if (window.location.hash === "#createOrderForm") {
new bootstrap.Collapse(document.getElementById('createOrderForm'), { toggle: true });
}
});
</script>
@endsection

View File

@@ -10,8 +10,8 @@
<div class="card-body">
<div class="d-flex justify-content-between align-items-start">
<div>
<h4 class="fw-bold mb-0">Orders Details</h4>
<small class="text-muted">Detailed view of all orders in this shipment consolidation.</small>
<h4 class="fw-bold mb-0">Order Details</h4>
<small class="text-muted">Detailed view of this shipment order</small>
</div>
<a href="{{ route('admin.dashboard') }}" class="btn-close"></a>
</div>
@@ -43,61 +43,101 @@
{{-- Order Summary --}}
<div class="bg-light rounded p-3 mb-3">
<div class="row text-center">
<div class="col-md-4 border-end">
<div class="col-md-3 border-end">
<p class="fw-semibold mb-1">Order ID</p>
<h6 class="text-primary fw-bold">{{ $order->order_id }}</h6>
</div>
<div class="col-md-4 border-end">
<p class="fw-semibold mb-1">Total Orders</p>
<h6>{{ 1 }}</h6>
<div class="col-md-3 border-end">
<p class="fw-semibold mb-1">Mark No</p>
<h6>{{ $order->mark_no }}</h6>
</div>
<div class="col-md-4">
<div class="col-md-3 border-end">
<p class="fw-semibold mb-1">Total Items</p>
<h6>{{ $order->items->count() }}</h6>
</div>
<div class="col-md-3">
<p class="fw-semibold mb-1">Status</p>
<span class="badge bg-warning text-dark">{{ ucfirst($order->status) }}</span>
</div>
</div>
</div>
{{-- Order Table --}}
{{-- Origin - Destination --}}
<div class="row text-center mb-4">
<div class="col-md-6">
<p class="mb-1 fw-semibold text-muted">Origin</p>
<h6>{{ $order->origin }}</h6>
</div>
<div class="col-md-6">
<p class="mb-1 fw-semibold text-muted">Destination</p>
<h6>{{ $order->destination }}</h6>
</div>
</div>
{{-- Order Items Table --}}
<div class="table-responsive">
<table class="table table-bordered align-middle">
<table class="table table-bordered align-middle text-center">
<thead class="table-light">
<tr>
<th>Item No</th>
<th>#</th>
<th>Description</th>
<th>CTN</th>
<th>QTY</th>
<th>TTL/QTY</th>
<th>Unit</th>
<th>Amount ()</th>
<th>Price ()</th>
<th>TTL Amount ()</th>
<th>CBM</th>
<th>TTL CBM</th>
<th>KG</th>
<th>TTL KG</th>
<th>Shop No</th>
</tr>
</thead>
<tbody>
@foreach($order->items as $index => $item)
<tr>
<td>{{ $order->mark_no }}</td>
<td>{{ $order->description }}</td>
<td>{{ $order->ctn }}</td>
<td>{{ $order->qty }}</td>
<td>{{ $order->ttl_qty }}</td>
<td>{{ $order->unit }}</td>
<td>{{ number_format($order->ttl_amount, 2) }}</td>
<td>{{ $index + 1 }}</td>
<td>{{ $item->description }}</td>
<td>{{ $item->ctn }}</td>
<td>{{ $item->qty }}</td>
<td>{{ $item->ttl_qty }}</td>
<td>{{ $item->unit }}</td>
<td>{{ number_format($item->price, 2) }}</td>
<td>{{ number_format($item->ttl_amount, 2) }}</td>
<td>{{ $item->cbm }}</td>
<td>{{ $item->ttl_cbm }}</td>
<td>{{ $item->kg }}</td>
<td>{{ $item->ttl_kg }}</td>
<td>{{ $item->shop_no }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
{{-- Totals --}}
<div class="d-flex justify-content-between mt-3">
<div>
<h6 class="text-primary mb-0 fw-bold">{{ $order->ttl_qty }}</h6>
<small class="text-muted">Total TTL/QTY</small>
<div class="row text-center mt-4">
<div class="col-md-3">
<h6 class="fw-bold text-primary">{{ $order->ctn }}</h6>
<small class="text-muted">Total CTN</small>
</div>
<div>
<h6 class="text-success mb-0 fw-bold">{{ $order->ttl_kg }}</h6>
<div class="col-md-3">
<h6 class="fw-bold text-primary">{{ $order->qty }}</h6>
<small class="text-muted">Total QTY</small>
</div>
<div class="col-md-3">
<h6 class="fw-bold text-success">{{ $order->ttl_kg }}</h6>
<small class="text-muted">Total TTL KG</small>
</div>
<div class="text-end">
<h6 class="text-danger mb-0 fw-bold">{{ number_format($order->ttl_amount, 2) }}</h6>
<div class="col-md-3">
<h6 class="fw-bold text-danger">{{ number_format($order->ttl_amount, 2) }}</h6>
<small class="text-muted">Total Amount</small>
</div>
</div>