updateNativeAmount($availableBudget); } public function updated(AvailableBudget $availableBudget): void { // Log::debug('Observe "updated" of an available budget.'); $this->updateNativeAmount($availableBudget); } private function updateNativeAmount(AvailableBudget $availableBudget): void { if (!Amount::convertToNative($availableBudget->user)) { // Log::debug('Do not update native available amount of the available budget.'); return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($availableBudget->user->userGroup); $availableBudget->native_amount = null; if ($availableBudget->transactionCurrency->id !== $userCurrency->id) { $converter = new ExchangeRateConverter(); $converter->setUserGroup($availableBudget->user->userGroup); $converter->setIgnoreSettings(true); $availableBudget->native_amount = $converter->convert($availableBudget->transactionCurrency, $userCurrency, today(), $availableBudget->amount); } $availableBudget->saveQuietly(); Log::debug('Available budget native amount is updated.'); } }