status !== StockOpnameStatus::PROCESS) { abort(403); } $this->items = StockOpnameItem::with('itemable') ->where('stock_opname_id', $stockOpname->id) ->get(); $outletStock = []; foreach ($this->items as $item) { $outletStock[$item->id] = $item->qty_physical; } $this->form->outlet_stock = $outletStock; $this->form->setStockOpname($stockOpname); } public function updated(string $propertyName, $value): void { $this->canOrAbort('manage stock opname'); if (str_starts_with($propertyName, 'form.outlet_stock.')) { $itemId = explode('.', $propertyName)[2]; $item = $this->items->firstWhere('id', $itemId); if ($item) { $normalizedValue = str_replace('.', '', (string) $value); $item->qty_physical = (int) $normalizedValue; $item->difference = (int) $normalizedValue - $item->qty_system; } } } public function save(): void { $this->canOrAbort('manage stock opname'); $this->form->update(); $this->toast('Data stock opname berhasil disimpan.', 'Berhasil'); } public function render(): View { return view('livewire.studio.stock.stock-opname.manage', [ 'pageTitle' => 'Kelola Stock Opname', ]); } }