isDirty('warehouse_id')) { $oldWarehouseId = $eggCollection->getOriginal('warehouse_id'); $newWarehouseId = $eggCollection->warehouse_id; foreach ($eggCollection->items as $item) { if ($oldWarehouseId) { WarehouseStock::adjustStock($oldWarehouseId, $item->unit_id, $item->is_broken, -$item->quantity); } if ($newWarehouseId) { WarehouseStock::adjustStock($newWarehouseId, $item->unit_id, $item->is_broken, $item->quantity); } } } } /** * Handle the EggCollection "deleted" event. */ public function deleted(EggCollection $eggCollection): void { // Items are usually deleted via cascade or manual deletion which triggers ItemObserver. // But if it's a soft delete, we should decide if we want to remove stock. // Assuming we want to remove stock when production record is deleted. if (! $eggCollection->isForceDeleting() && $warehouseId = $eggCollection->warehouse_id) { foreach ($eggCollection->items as $item) { WarehouseStock::adjustStock($warehouseId, $item->unit_id, $item->is_broken, -$item->quantity); } } } /** * Handle the EggCollection "restored" event. */ public function restored(EggCollection $eggCollection): void { if ($warehouseId = $eggCollection->warehouse_id) { foreach ($eggCollection->items as $item) { WarehouseStock::adjustStock($warehouseId, $item->unit_id, $item->is_broken, $item->quantity); } } } }