status !== StockOpnameStatus::PROCESS) { abort(403); } $items = StockOpnameItem::with('itemable') ->where('stock_opname_id', $stockOpname->id) ->get(); $outletStock = []; foreach ($items as $item) { $outletStock[$item->id] = $item->qty_physical; } $this->form->outlet_stock = $outletStock; $this->form->setStockOpname($stockOpname); } public function save(): void { $this->canOrAbort('manage stock opname'); $this->form->update(); $this->redirectRoute('studio.stock.stock_opname.index', [ 'notification' => 'Stock opname berhasil disimpan.', ], navigate: true); } public function fillAllWithZero(): void { $this->form->outlet_stock = array_map( fn ($qty) => $qty === null || $qty === '' ? 0 : $qty, $this->form->outlet_stock ); } public function render(): View { $items = StockOpnameItem::with('itemable') ->where('stock_opname_id', $this->form->stockOpname->id) ->when($this->search, function ($query) { $query->whereHasMorph('itemable', '*', function ($query) { $query->where('name', 'like', '%'.$this->search.'%') ->orWhere('display_name', 'like', '%'.$this->search.'%'); }); }) ->get(); return view('livewire.studio.stock.stock-opname.manage', [ 'pageTitle' => 'Kelola Stock Opname', 'items' => $items, ]); } }