| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- @extends('layouts.app')
- @section('content')
- <div class="d-flex justify-content-between align-items-center mb-3">
- <h3 class="mb-0">Склад: {{ $item->article }}</h3>
- <a href="{{ route('stock.index') }}" class="btn btn-sm btn-outline-secondary">Назад к наличию</a>
- </div>
- <div class="card mb-3"><div class="card-body">
- <div class="row g-3">
- <div class="col-md-2">
- @if($item->imageFile)
- <a href="{{ $item->imageFile->link }}" data-toggle="lightbox" data-gallery="stock-card"><img src="{{ $item->imageFile->thumbnail_link }}" alt="{{ $item->article }}" class="img-thumbnail w-100"></a>
- @else
- <div class="border rounded text-muted d-flex align-items-center justify-content-center" style="min-height: 140px"><i class="bi bi-image fs-1"></i></div>
- @endif
- </div>
- <div class="col-md-5">
- <dl class="row mb-0 small">
- <dt class="col-4">Артикул</dt><dd class="col-8">{{ $item->article }}</dd>
- <dt class="col-4">Наименование</dt><dd class="col-8">{{ $item->calculator_name }}</dd>
- <dt class="col-4">Вид</dt><dd class="col-8">{{ $item->kind }}</dd>
- <dt class="col-4">Габариты</dt><dd class="col-8">{{ $item->dimensions }}</dd>
- <dt class="col-4">Ед.</dt><dd class="col-8">{{ $item->unit }}</dd>
- <dt class="col-4">Примечание</dt><dd class="col-8">{{ $item->latestStockOrder?->note }}</dd>
- </dl>
- </div>
- <div class="col-md-5">
- <div class="row text-center g-2">
- @foreach(['physical' => 'На складе', 'reserved' => 'Забронировано', 'available' => 'Остаток', 'ordered' => 'Заказано'] as $key => $label)
- <div class="col-6"><div class="border rounded p-3"><div class="small text-muted">{{ $label }}</div><div class="fs-4 fw-semibold">{{ $summary[$key] }}</div></div></div>
- @endforeach
- </div>
- </div>
- </div>
- </div></div>
- @if(hasPermission('stock.reserve'))
- <div class="card mb-3">
- <div class="card-header"><strong>Забронировать</strong></div>
- <div class="card-body">
- <form action="{{ route('stock.reserve', $item) }}" method="POST" class="row g-2 align-items-end">
- @csrf
- <div class="col-md-4"><label class="form-label small">Менеджер</label><select name="manager_id" class="form-select form-select-sm" required><option value="">Выберите</option>@foreach($managers as $manager)<option value="{{ $manager->id }}" @selected((int) old('manager_id') === $manager->id)>{{ $manager->name }}</option>@endforeach</select></div>
- <div class="col-md-2"><label class="form-label small">Количество</label><input type="number" min="1" max="{{ $summary['available'] }}" name="quantity" value="{{ old('quantity') }}" class="form-control form-control-sm @error('quantity') is-invalid @enderror" required>@error('quantity')<div class="invalid-feedback">{{ $message }}</div>@enderror</div>
- <div class="col-md-4"><label class="form-label small">Примечание</label><input name="note" value="{{ old('note') }}" maxlength="2000" class="form-control form-control-sm"></div>
- <div class="col-md-2"><button class="btn btn-sm btn-primary w-100" @disabled($summary['available'] === 0)>Забронировать</button></div>
- </form>
- </div>
- </div>
- @endif
- <div class="card mb-3">
- <div class="card-header"><strong>Забронировано</strong></div>
- <div class="table-responsive"><table class="table table-sm table-bordered mb-0 align-middle">
- <thead class="table-light"><tr><th>Менеджер</th><th>Количество</th><th>№ заказа</th><th>Примечание</th><th>Дата</th><th></th></tr></thead>
- <tbody>
- @forelse($item->stockReservations->where('status', \App\Models\StockReservation::STATUS_ACTIVE) as $reservation)
- <tr><td>{{ $reservation->manager?->name }}</td><td>{{ $reservation->quantity }}</td><td>{{ $reservation->order?->order_number }}</td><td>{{ $reservation->note }}</td><td>{{ $reservation->created_at?->format('d.m.Y H:i') }}</td>
- <td class="text-nowrap">
- @if(hasPermission('stock.issue'))<form action="{{ route('stock.reservations.issue', $reservation) }}" method="POST" class="d-inline" onsubmit="return confirm('Списать забронированную позицию?')">@csrf<button class="btn btn-sm btn-outline-success">Списать</button></form>@endif
- @if(hasPermission('stock.cancel'))<form action="{{ route('stock.reservations.cancel', $reservation) }}" method="POST" class="d-inline" onsubmit="return confirm('Отменить бронь?')">@csrf<button class="btn btn-sm btn-outline-danger">Отменить</button></form>@endif
- </td></tr>
- @empty
- <tr><td colspan="6" class="text-center text-muted py-3">Активных броней нет.</td></tr>
- @endforelse
- </tbody>
- </table></div>
- </div>
- <div class="card mb-3"><div class="card-header"><strong>Заказы</strong></div><div class="table-responsive"><table class="table table-sm table-bordered mb-0">
- <thead class="table-light"><tr><th>№</th><th>Статус</th><th>Заказано</th><th>Бронь</th><th>Остаток</th><th>Примечание</th></tr></thead><tbody>
- @forelse($item->stockOrders as $order)<tr><td>{{ $order->order_number }}</td><td>{{ $order->status_name }}</td><td>{{ $order->ordered_quantity }}</td><td>{{ $order->reserved_quantity }}</td><td>{{ $order->free_quantity }}</td><td>{{ $order->note }}</td></tr>@empty<tr><td colspan="6" class="text-center text-muted py-3">Заказов нет.</td></tr>@endforelse
- </tbody></table></div></div>
- <div class="card"><div class="card-header"><strong>История движений</strong></div><div class="table-responsive"><table class="table table-sm table-bordered mb-0">
- <thead class="table-light"><tr><th>Дата</th><th>Операция</th><th>Количество</th><th>№ заказа</th><th>Пользователь</th><th>Примечание</th></tr></thead><tbody>
- @forelse($item->stockMovements as $movement)<tr><td>{{ $movement->created_at?->format('d.m.Y H:i') }}</td><td>{{ $movement->type_name }}</td><td>{{ $movement->quantity }}</td><td>{{ $movement->order?->order_number }}</td><td>{{ $movement->user?->name }}</td><td>{{ $movement->note }}</td></tr>@empty<tr><td colspan="6" class="text-center text-muted py-3">Операций нет.</td></tr>@endforelse
- </tbody></table></div></div>
- @endsection
|