part_number)) { $prefix = 'P-'; $partName = Str::slug(substr($part->name, 0, 3)); $latest = Part::where('part_number', 'like', $prefix . $partName . '%') ->orderBy('part_number', 'desc') ->first(); $number = 1; if ($latest) { $parts = explode('-', $latest->part_number); $number = intval(end($parts)) + 1; } $part->part_number = $prefix . $partName . '-' . str_pad($number, 4, '0', STR_PAD_LEFT); } } /** * Handle the Part "updated" event. */ public function updated(Part $part): void { // If stock drops below reorder level, could trigger notifications if ($part->isDirty('quantity_in_stock') && $part->quantity_in_stock <= $part->reorder_level) { // Notification logic could go here } } }