'maf_order', 'title' => 'Заказы МАФ', 'id' => 'maf_order', 'header' => [ 'product-image' => 'Картинка', 'id' => 'ID', 'order_number' => '№ заказа', 'status' => 'Статус', 'user_name' => 'Менеджер', 'article' => 'Артикул', 'nomenclature_number' => 'Номер номенклатуры', 'quantity' => 'Заказано', 'in_stock' => 'Остаток', 'created_at' => 'Дата создания', ], 'searchFields' => [ 'order_number', 'nomenclature_number', 'article', ], ]; public function index(Request $request) { $model = new MafOrdersView; session(['gp_maf_order' => $request->all()]); $this->createDateFilters($model, 'created_at'); $this->createFilters($model, 'user_name'); $this->createRangeFilters($model, 'in_stock'); $q = $model::query(); $this->acceptFilters($q, $request); $this->acceptSearch($q, $request); $this->setSortAndOrderBy($model, $request); $this->applyStableSorting($q); $this->data['maf_orders'] = $q->paginate($this->data['per_page'])->withQueryString(); $this->data['order_numbers'] = MafOrder::query() ->whereNotNull('order_number') ->where('order_number', '!=', '') ->orderBy('order_number') ->distinct() ->pluck('order_number'); return view('maf_orders.index', $this->data); } public function store(StoreMafOrderRequest $request) { MafOrder::query()->create($request->validated() + ['user_id' => $request->user()->id, 'in_stock' => 0]); return redirect()->route('maf_order.index', session('gp_maf_order')); } public function show(Request $request, int $maf_order) { $this->data['maf_order'] = MafOrder::query()->withoutGlobalScope(\App\Models\Scopes\YearScope::class)->find($maf_order); $this->data['previous_url'] = $this->resolvePreviousUrl( $request, 'previous_url_maf_order', route('maf_order.index', session('gp_maf_order')) ); return view('maf_orders.edit', $this->data); } public function update(StoreMafOrderRequest $request, MafOrder $maf_order) { MafOrder::query()->where('id', $maf_order->id)->update($request->validated()); return redirect()->route('maf_order.index', session('gp_maf_order')); } public function destroy(MafOrder $maf_order) { $maf_order->delete(); return redirect()->route('maf_order.index', session('gp_maf_order')); } public function setInStock(MafOrder $maf_order) { $maf_order->update(['in_stock' => $maf_order->quantity, 'status' => 'на складе']); return redirect()->route('maf_order.show', $maf_order); } public function setOrderInStock(Request $request) { $validated = $request->validate([ 'bulk_order_number' => 'required|string', ]); $orderNumber = trim((string) $validated['bulk_order_number']); $query = MafOrder::query()->where('order_number', $orderNumber); if (!$query->exists()) { throw ValidationException::withMessages([ 'bulk_order_number' => 'Заказ не найден в выбранном году.', ]); } $query->update([ 'in_stock' => DB::raw('quantity'), 'status' => 'на складе', ]); return redirect()->route('maf_order.index', session('gp_maf_order')); } }