increment('stock_quantity', $quantity); InventoryMovement::create(['product_id' => $product->id, 'quantity' => $quantity, 'reason' => $reason, 'created_by' => $userId]); }); } public function available(Product $product): int { return max(0, (int) $product->stock_quantity); } }