я так понимаю package это active record
Далее у тебя есть класс с методами (костылями вроде Util или Core) в котором есть setUnits, это пример процедурного кода, когда данные лежат отдельно (в package), а работа с этими данным в другом месте.
Как бы я улучшил этот код.
1. Я почти уверен что из package можно получить clientSource и clientDestination это похоже тоже объекты AR, значит я бы добавил связи между моделями
2. Я бы удалил этот метод setUnits
3. Поля SourceUnitsFinishJob и DestinationUnitsFinishJob и DestinationUnitsStartJob и SourceUnitsStartJob я бы сделал чтобы они расчитывались на основе связей с clientSource и clientDestination, если твоя AR этого не позволяет то получение значения этих полей я бы сделал методом
Тогда получение некоторых свойств выглядело было вот так
$package = Package::find($packageId);
$package->clientSource->units; // SourceUnitsFinishJob
// и тд
// Чтобы получить поля DestinationUnitsStartJob которые расчитываются на основе двух параметров я бы сделал динамический атрибут
$package->destinationUnitsStartJob;
В laravel этот атрибут можно создать следующим образом в модели Package
public function getDestinationUnitsStartJobAttribute()
{
return $this->clientDestination->units + $this->clientDestination->cost;
}
Где clientDestionation это связь
соответсвенно работу работать с package можно было бы с помощью стандартных методов.