show.blade.php 7.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. @extends('layouts.app')
  2. @section('content')
  3. <div class="d-flex justify-content-between align-items-center mb-3">
  4. <h3 class="mb-0">Склад: {{ $item->article }}</h3>
  5. <a href="{{ route('stock.index') }}" class="btn btn-sm btn-outline-secondary">Назад к наличию</a>
  6. </div>
  7. <div class="card mb-3"><div class="card-body">
  8. <div class="row g-3">
  9. <div class="col-md-2">
  10. @if($item->imageFile)
  11. <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>
  12. @else
  13. <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>
  14. @endif
  15. </div>
  16. <div class="col-md-5">
  17. <dl class="row mb-0 small">
  18. <dt class="col-4">Артикул</dt><dd class="col-8">{{ $item->article }}</dd>
  19. <dt class="col-4">Наименование</dt><dd class="col-8">{{ $item->calculator_name }}</dd>
  20. <dt class="col-4">Вид</dt><dd class="col-8">{{ $item->kind }}</dd>
  21. <dt class="col-4">Габариты</dt><dd class="col-8">{{ $item->dimensions }}</dd>
  22. <dt class="col-4">Ед.</dt><dd class="col-8">{{ $item->unit }}</dd>
  23. <dt class="col-4">Примечание</dt><dd class="col-8">{{ $item->latestStockOrder?->note }}</dd>
  24. </dl>
  25. </div>
  26. <div class="col-md-5">
  27. <div class="row text-center g-2">
  28. @foreach(['physical' => 'На складе', 'reserved' => 'Забронировано', 'available' => 'Остаток', 'ordered' => 'Заказано'] as $key => $label)
  29. <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>
  30. @endforeach
  31. </div>
  32. </div>
  33. </div>
  34. </div></div>
  35. @if(hasPermission('stock.reserve'))
  36. <div class="card mb-3">
  37. <div class="card-header"><strong>Забронировать</strong></div>
  38. <div class="card-body">
  39. <form action="{{ route('stock.reserve', $item) }}" method="POST" class="row g-2 align-items-end">
  40. @csrf
  41. <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>
  42. <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>
  43. <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>
  44. <div class="col-md-2"><button class="btn btn-sm btn-primary w-100" @disabled($summary['available'] === 0)>Забронировать</button></div>
  45. </form>
  46. </div>
  47. </div>
  48. @endif
  49. <div class="card mb-3">
  50. <div class="card-header"><strong>Забронировано</strong></div>
  51. <div class="table-responsive"><table class="table table-sm table-bordered mb-0 align-middle">
  52. <thead class="table-light"><tr><th>Менеджер</th><th>Количество</th><th>№ заказа</th><th>Примечание</th><th>Дата</th><th></th></tr></thead>
  53. <tbody>
  54. @forelse($item->stockReservations->where('status', \App\Models\StockReservation::STATUS_ACTIVE) as $reservation)
  55. <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>
  56. <td class="text-nowrap">
  57. @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
  58. @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
  59. </td></tr>
  60. @empty
  61. <tr><td colspan="6" class="text-center text-muted py-3">Активных броней нет.</td></tr>
  62. @endforelse
  63. </tbody>
  64. </table></div>
  65. </div>
  66. <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">
  67. <thead class="table-light"><tr><th>№</th><th>Статус</th><th>Заказано</th><th>Бронь</th><th>Остаток</th><th>Примечание</th></tr></thead><tbody>
  68. @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
  69. </tbody></table></div></div>
  70. <div class="card"><div class="card-header"><strong>История движений</strong></div><div class="table-responsive"><table class="table table-sm table-bordered mb-0">
  71. <thead class="table-light"><tr><th>Дата</th><th>Операция</th><th>Количество</th><th>№ заказа</th><th>Пользователь</th><th>Примечание</th></tr></thead><tbody>
  72. @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
  73. </tbody></table></div></div>
  74. @endsection