From 6c655634bccf108ed9fd2781568c3668405fdd59 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 28 Dec 2024 10:58:01 +0100 Subject: [PATCH] Auto commit for release 'develop' on 2024-12-28 --- .../Correction/CorrectsNativeAmounts.php | 3 +- .../Upgrade/UpgradesTransferCurrencies.php | 23 ++++---- app/Exceptions/Handler.php | 4 +- app/Handlers/Observer/AccountObserver.php | 2 +- app/Handlers/Observer/AutoBudgetObserver.php | 2 +- .../Observer/AvailableBudgetObserver.php | 2 +- app/Handlers/Observer/BillObserver.php | 2 +- app/Handlers/Observer/BudgetLimitObserver.php | 2 +- .../Observer/PiggyBankEventObserver.php | 2 +- app/Handlers/Observer/TransactionObserver.php | 4 +- .../Controllers/Account/EditController.php | 4 +- .../Controllers/Chart/CategoryController.php | 10 ++-- .../ExchangeRates/IndexController.php | 2 +- .../Category/NoCategoryRepository.php | 2 +- .../Category/OperationsRepository.php | 4 +- app/Support/Amount.php | 56 ++++++++++--------- .../Http/Controllers/PeriodOverview.php | 14 ++--- app/Support/Steam.php | 5 +- changelog.md | 18 +++--- config/firefly.php | 2 +- .../2024_11_30_075826_multi_piggy.php | 3 +- resources/lang/en_US/firefly.php | 2 +- 22 files changed, 87 insertions(+), 81 deletions(-) diff --git a/app/Console/Commands/Correction/CorrectsNativeAmounts.php b/app/Console/Commands/Correction/CorrectsNativeAmounts.php index eab4e97525..7cbab491fc 100644 --- a/app/Console/Commands/Correction/CorrectsNativeAmounts.php +++ b/app/Console/Commands/Correction/CorrectsNativeAmounts.php @@ -59,8 +59,9 @@ class CorrectsNativeAmounts extends Command */ public function handle(): int { - if(!config('cer.enabled')) { + if (!config('cer.enabled')) { $this->friendlyInfo('This command will not run because currency exchange rates are disabled.'); + return 0; } Log::debug('Will update all native amounts. This may take some time.'); diff --git a/app/Console/Commands/Upgrade/UpgradesTransferCurrencies.php b/app/Console/Commands/Upgrade/UpgradesTransferCurrencies.php index a58b1af8bf..a16fe46351 100644 --- a/app/Console/Commands/Upgrade/UpgradesTransferCurrencies.php +++ b/app/Console/Commands/Upgrade/UpgradesTransferCurrencies.php @@ -39,8 +39,8 @@ class UpgradesTransferCurrencies extends Command use ShowsFriendlyMessages; public const string CONFIG_NAME = '480_transfer_currencies'; - protected $description = 'Updates transfer currency information.'; - protected $signature = 'upgrade:480-transfer-currencies {--F|force : Force the execution of this command.}'; + protected $description = 'Updates transfer currency information.'; + protected $signature = 'upgrade:480-transfer-currencies {--F|force : Force the execution of this command.}'; private array $accountCurrencies; private AccountRepositoryInterface $accountRepos; private JournalCLIRepositoryInterface $cliRepos; @@ -71,6 +71,7 @@ class UpgradesTransferCurrencies extends Command if ($this->count > 0) { $this->friendlyInfo(sprintf('Verified currency information of %d transfer(s).', $this->count)); } + return 0; } @@ -211,14 +212,14 @@ class UpgradesTransferCurrencies extends Command private function getCurrency(Account $account): ?TransactionCurrency { - $accountId = $account->id; + $accountId = $account->id; if (array_key_exists($accountId, $this->accountCurrencies) && 0 === $this->accountCurrencies[$accountId]) { return null; } if (array_key_exists($accountId, $this->accountCurrencies) && $this->accountCurrencies[$accountId] instanceof TransactionCurrency) { return $this->accountCurrencies[$accountId]; } - $currency = $this->accountRepos->getAccountCurrency($account); + $currency = $this->accountRepos->getAccountCurrency($account); if (null === $currency) { $this->accountCurrencies[$accountId] = 0; @@ -290,7 +291,8 @@ class UpgradesTransferCurrencies extends Command if (null === $this->sourceTransaction->transaction_currency_id && null !== $this->sourceCurrency) { $this->sourceTransaction ->transaction_currency_id - = $this->sourceCurrency->id; + = $this->sourceCurrency->id + ; $message = sprintf( 'Transaction #%d has no currency setting, now set to %s.', $this->sourceTransaction->id, @@ -312,7 +314,7 @@ class UpgradesTransferCurrencies extends Command && null === $this->sourceTransaction->foreign_amount && (int) $this->sourceTransaction->transaction_currency_id !== $this->sourceCurrency->id ) { - $message = sprintf( + $message = sprintf( 'Transaction #%d has a currency setting #%d that should be #%d. Amount remains %s, currency is changed.', $this->sourceTransaction->id, $this->sourceTransaction->transaction_currency_id, @@ -335,7 +337,8 @@ class UpgradesTransferCurrencies extends Command if (null === $this->destinationTransaction->transaction_currency_id && null !== $this->destinationCurrency) { $this->destinationTransaction ->transaction_currency_id - = $this->destinationCurrency->id; + = $this->destinationCurrency->id + ; $message = sprintf( 'Transaction #%d has no currency setting, now set to %s.', $this->destinationTransaction->id, @@ -357,7 +360,7 @@ class UpgradesTransferCurrencies extends Command && null === $this->destinationTransaction->foreign_amount && (int) $this->destinationTransaction->transaction_currency_id !== $this->destinationCurrency->id ) { - $message = sprintf( + $message = sprintf( 'Transaction #%d has a currency setting #%d that should be #%d. Amount remains %s, currency is changed.', $this->destinationTransaction->id, $this->destinationTransaction->transaction_currency_id, @@ -380,8 +383,8 @@ class UpgradesTransferCurrencies extends Command { if ($this->destinationCurrency->id === $this->sourceCurrency->id) { // update both transactions to match: - $this->sourceTransaction->foreign_amount = null; - $this->sourceTransaction->foreign_currency_id = null; + $this->sourceTransaction->foreign_amount = null; + $this->sourceTransaction->foreign_currency_id = null; $this->destinationTransaction->foreign_amount = null; $this->destinationTransaction->foreign_currency_id = null; diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index e8352aa791..60d31fa76f 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -68,9 +68,7 @@ class Handler extends ExceptionHandler /** * Register the exception handling callbacks for the application. */ - public function register(): void - { - } + public function register(): void {} /** * Render an exception into an HTTP response. It's complex but lucky for us, we never use it because diff --git a/app/Handlers/Observer/AccountObserver.php b/app/Handlers/Observer/AccountObserver.php index e321b102e6..fc839ec78b 100644 --- a/app/Handlers/Observer/AccountObserver.php +++ b/app/Handlers/Observer/AccountObserver.php @@ -44,7 +44,7 @@ class AccountObserver private function updateNativeAmount(Account $account): void { - if(!Amount::convertToNative($account->user)) { + if (!Amount::convertToNative($account->user)) { return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($account->user->userGroup); diff --git a/app/Handlers/Observer/AutoBudgetObserver.php b/app/Handlers/Observer/AutoBudgetObserver.php index e4a911653f..6109617b52 100644 --- a/app/Handlers/Observer/AutoBudgetObserver.php +++ b/app/Handlers/Observer/AutoBudgetObserver.php @@ -45,7 +45,7 @@ class AutoBudgetObserver private function updateNativeAmount(AutoBudget $autoBudget): void { - if(!Amount::convertToNative($autoBudget->budget->user)) { + if (!Amount::convertToNative($autoBudget->budget->user)) { return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($autoBudget->budget->user->userGroup); diff --git a/app/Handlers/Observer/AvailableBudgetObserver.php b/app/Handlers/Observer/AvailableBudgetObserver.php index d5d03fe31c..3017450bd3 100644 --- a/app/Handlers/Observer/AvailableBudgetObserver.php +++ b/app/Handlers/Observer/AvailableBudgetObserver.php @@ -45,7 +45,7 @@ class AvailableBudgetObserver private function updateNativeAmount(AvailableBudget $availableBudget): void { - if(!Amount::convertToNative($availableBudget->user)) { + if (!Amount::convertToNative($availableBudget->user)) { return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($availableBudget->user->userGroup); diff --git a/app/Handlers/Observer/BillObserver.php b/app/Handlers/Observer/BillObserver.php index 262ed250bc..3dcc1ac5a5 100644 --- a/app/Handlers/Observer/BillObserver.php +++ b/app/Handlers/Observer/BillObserver.php @@ -56,7 +56,7 @@ class BillObserver private function updateNativeAmount(Bill $bill): void { - if(!Amount::convertToNative($bill->user)) { + if (!Amount::convertToNative($bill->user)) { return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($bill->user->userGroup); diff --git a/app/Handlers/Observer/BudgetLimitObserver.php b/app/Handlers/Observer/BudgetLimitObserver.php index e13bde9327..af029db737 100644 --- a/app/Handlers/Observer/BudgetLimitObserver.php +++ b/app/Handlers/Observer/BudgetLimitObserver.php @@ -45,7 +45,7 @@ class BudgetLimitObserver private function updateNativeAmount(BudgetLimit $budgetLimit): void { - if(!Amount::convertToNative($budgetLimit->budget->user)) { + if (!Amount::convertToNative($budgetLimit->budget->user)) { return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($budgetLimit->budget->user->userGroup); diff --git a/app/Handlers/Observer/PiggyBankEventObserver.php b/app/Handlers/Observer/PiggyBankEventObserver.php index 7ed4b2fae3..b764fed9d6 100644 --- a/app/Handlers/Observer/PiggyBankEventObserver.php +++ b/app/Handlers/Observer/PiggyBankEventObserver.php @@ -45,7 +45,7 @@ class PiggyBankEventObserver private function updateNativeAmount(PiggyBankEvent $event): void { - if(!Amount::convertToNative($event->piggyBank->accounts()->first()->user)) { + if (!Amount::convertToNative($event->piggyBank->accounts()->first()->user)) { return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($event->piggyBank->accounts()->first()->user->userGroup); diff --git a/app/Handlers/Observer/TransactionObserver.php b/app/Handlers/Observer/TransactionObserver.php index 986cda6eeb..ebf2fca3c8 100644 --- a/app/Handlers/Observer/TransactionObserver.php +++ b/app/Handlers/Observer/TransactionObserver.php @@ -56,7 +56,7 @@ class TransactionObserver public function updated(Transaction $transaction): void { -// Log::debug('Observe "updated" of a transaction.'); + // Log::debug('Observe "updated" of a transaction.'); if (config('firefly.feature_flags.running_balance_column') && self::$recalculate) { if (1 === bccomp($transaction->amount, '0')) { Log::debug('Trigger recalculateForJournal'); @@ -68,7 +68,7 @@ class TransactionObserver private function updateNativeAmount(Transaction $transaction): void { - if(!Amount::convertToNative($transaction->transactionJournal->user)) { + if (!Amount::convertToNative($transaction->transactionJournal->user)) { return; } $userCurrency = app('amount')->getDefaultCurrencyByUserGroup($transaction->transactionJournal->user->userGroup); diff --git a/app/Http/Controllers/Account/EditController.php b/app/Http/Controllers/Account/EditController.php index 8d1b772256..ca674eb407 100644 --- a/app/Http/Controllers/Account/EditController.php +++ b/app/Http/Controllers/Account/EditController.php @@ -90,7 +90,7 @@ class EditController extends Controller $latitude = null !== $location ? $location->latitude : config('firefly.default_location.latitude'); $longitude = null !== $location ? $location->longitude : config('firefly.default_location.longitude'); $zoomLevel = null !== $location ? $location->zoom_level : config('firefly.default_location.zoom_level'); - $canEditCurrency = $account->piggyBanks()->count() === 0; + $canEditCurrency = 0 === $account->piggyBanks()->count(); $hasLocation = null !== $location; $locations = [ 'location' => [ @@ -163,7 +163,7 @@ class EditController extends Controller $request->session()->flash('preFilled', $preFilled); - return view('accounts.edit', compact('account', 'currency','canEditCurrency', 'showNetWorth', 'subTitle', 'subTitleIcon', 'locations', 'liabilityDirections', 'objectType', 'roles', 'preFilled', 'liabilityTypes', 'interestPeriods')); + return view('accounts.edit', compact('account', 'currency', 'canEditCurrency', 'showNetWorth', 'subTitle', 'subTitleIcon', 'locations', 'liabilityDirections', 'objectType', 'roles', 'preFilled', 'liabilityTypes', 'interestPeriods')); } /** diff --git a/app/Http/Controllers/Chart/CategoryController.php b/app/Http/Controllers/Chart/CategoryController.php index 9c9fc19ead..79979e6a70 100644 --- a/app/Http/Controllers/Chart/CategoryController.php +++ b/app/Http/Controllers/Chart/CategoryController.php @@ -197,11 +197,11 @@ class CategoryController extends Controller $chartData[$inKey] = [ - 'label' => sprintf('%s (%s)', (string) trans('firefly.earned'), $currencyInfo['currency_name']), - 'entries' => [], - 'type' => 'bar', - 'backgroundColor' => 'rgba(0, 141, 76, 0.5)', // green - ]; + 'label' => sprintf('%s (%s)', (string) trans('firefly.earned'), $currencyInfo['currency_name']), + 'entries' => [], + 'type' => 'bar', + 'backgroundColor' => 'rgba(0, 141, 76, 0.5)', // green + ]; // loop empty periods: foreach (array_keys($periods) as $period) { $label = $periods[$period]; diff --git a/app/Http/Controllers/ExchangeRates/IndexController.php b/app/Http/Controllers/ExchangeRates/IndexController.php index 880ed1ffd1..4cff4418e2 100644 --- a/app/Http/Controllers/ExchangeRates/IndexController.php +++ b/app/Http/Controllers/ExchangeRates/IndexController.php @@ -47,7 +47,7 @@ class IndexController extends Controller return $next($request); } ); - if(!config('cer.enabled')) { + if (!config('cer.enabled')) { throw new NotFoundHttpException(); } } diff --git a/app/Repositories/Category/NoCategoryRepository.php b/app/Repositories/Category/NoCategoryRepository.php index 18a7b2a783..810fc178b3 100644 --- a/app/Repositories/Category/NoCategoryRepository.php +++ b/app/Repositories/Category/NoCategoryRepository.php @@ -154,7 +154,7 @@ class NoCategoryRepository implements NoCategoryRepositoryInterface $journals = $collector->getExtractedJournals(); $array = []; // default currency information for native stuff. - $convertToNative = Amount::convertToNative($this->user);; + $convertToNative = Amount::convertToNative($this->user); $default = Amount::getDefaultCurrency(); foreach ($journals as $journal) { diff --git a/app/Repositories/Category/OperationsRepository.php b/app/Repositories/Category/OperationsRepository.php index 598214e8b7..6d4615b3f4 100644 --- a/app/Repositories/Category/OperationsRepository.php +++ b/app/Repositories/Category/OperationsRepository.php @@ -331,7 +331,7 @@ class OperationsRepository implements OperationsRepositoryInterface $collector->setUser($this->user)->setRange($start, $end)->setTypes([TransactionTypeEnum::WITHDRAWAL->value]); // default currency information for native stuff. - $convertToNative = Amount::convertToNative($this->user);; + $convertToNative = Amount::convertToNative($this->user); $default = Amount::getDefaultCurrency(); if (null !== $accounts && $accounts->count() > 0) { $collector->setAccounts($accounts); @@ -411,7 +411,7 @@ class OperationsRepository implements OperationsRepositoryInterface } $collector->setCategories($categories); $journals = $collector->getExtractedJournals(); - $convertToNative = Amount::convertToNative($this->user);; + $convertToNative = Amount::convertToNative($this->user); $default = Amount::getDefaultCurrency(); $array = []; diff --git a/app/Support/Amount.php b/app/Support/Amount.php index 33ddc22b93..1d55989e52 100644 --- a/app/Support/Amount.php +++ b/app/Support/Amount.php @@ -30,6 +30,7 @@ use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\UserGroup; use FireflyIII\User; use Illuminate\Support\Collection; +use FireflyIII\Support\Facades\Preferences; /** * Class Amount. @@ -70,9 +71,10 @@ class Amount public function convertToNative(?User $user = null): bool { if (null === $user) { - return \FireflyIII\Support\Facades\Preferences::get('convert_to_native', false)->data && config('cer.enabled'); + return Preferences::get('convert_to_native', false)->data && config('cer.enabled'); } - return \FireflyIII\Support\Facades\Preferences::getForUser($user, 'convert_to_native', false)->data && config('cer.enabled'); + + return Preferences::getForUser($user, 'convert_to_native', false)->data && config('cer.enabled'); } /** @@ -81,16 +83,16 @@ class Amount */ public function getAmountFromJournalObject(TransactionJournal $journal): string { - $convertToNative = $this->convertToNative(); - $currency = $this->getDefaultCurrency(); - $field = $convertToNative && $currency->id !== $journal->transaction_currency_id ? 'native_amount' : 'amount'; + $convertToNative = $this->convertToNative(); + $currency = $this->getDefaultCurrency(); + $field = $convertToNative && $currency->id !== $journal->transaction_currency_id ? 'native_amount' : 'amount'; /** @var null|Transaction $sourceTransaction */ $sourceTransaction = $journal->transactions()->where('amount', '<', 0)->first(); if (null === $sourceTransaction) { return '0'; } - $amount = $sourceTransaction->{$field} ?? '0'; + $amount = $sourceTransaction->{$field} ?? '0'; if ((int) $sourceTransaction->foreign_currency_id === $currency->id) { // use foreign amount instead! $amount = (string) $sourceTransaction->foreign_amount; // hard coded to be foreign amount. @@ -109,15 +111,15 @@ class Amount */ public function formatFlat(string $symbol, int $decimalPlaces, string $amount, ?bool $coloured = null): string { - $locale = app('steam')->getLocale(); - $rounded = app('steam')->bcround($amount, $decimalPlaces); + $locale = app('steam')->getLocale(); + $rounded = app('steam')->bcround($amount, $decimalPlaces); $coloured ??= true; - $fmt = new \NumberFormatter($locale, \NumberFormatter::CURRENCY); + $fmt = new \NumberFormatter($locale, \NumberFormatter::CURRENCY); $fmt->setSymbol(\NumberFormatter::CURRENCY_SYMBOL, $symbol); $fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, $decimalPlaces); $fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, $decimalPlaces); - $result = (string) $fmt->format((float) $rounded); // intentional float + $result = (string) $fmt->format((float) $rounded); // intentional float if (true === $coloured) { if (1 === bccomp($rounded, '0')) { @@ -163,7 +165,7 @@ class Amount public function getDefaultCurrencyByUserGroup(UserGroup $userGroup): TransactionCurrency { - $cache = new CacheProperties(); + $cache = new CacheProperties(); $cache->addProperty('getDefaultCurrencyByGroup'); $cache->addProperty($userGroup->id); if ($cache->has()) { @@ -226,20 +228,20 @@ class Amount private function getLocaleInfo(): array { // get config from preference, not from translation: - $locale = app('steam')->getLocale(); - $array = app('steam')->getLocaleArray($locale); + $locale = app('steam')->getLocale(); + $array = app('steam')->getLocaleArray($locale); setlocale(LC_MONETARY, $array); - $info = localeconv(); + $info = localeconv(); // correct variables - $info['n_cs_precedes'] = $this->getLocaleField($info, 'n_cs_precedes'); - $info['p_cs_precedes'] = $this->getLocaleField($info, 'p_cs_precedes'); + $info['n_cs_precedes'] = $this->getLocaleField($info, 'n_cs_precedes'); + $info['p_cs_precedes'] = $this->getLocaleField($info, 'p_cs_precedes'); - $info['n_sep_by_space'] = $this->getLocaleField($info, 'n_sep_by_space'); - $info['p_sep_by_space'] = $this->getLocaleField($info, 'p_sep_by_space'); + $info['n_sep_by_space'] = $this->getLocaleField($info, 'n_sep_by_space'); + $info['p_sep_by_space'] = $this->getLocaleField($info, 'p_sep_by_space'); - $fmt = new \NumberFormatter($locale, \NumberFormatter::CURRENCY); + $fmt = new \NumberFormatter($locale, \NumberFormatter::CURRENCY); $info['mon_decimal_point'] = $fmt->getSymbol(\NumberFormatter::MONETARY_SEPARATOR_SYMBOL); $info['mon_thousands_sep'] = $fmt->getSymbol(\NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL); @@ -262,7 +264,7 @@ class Amount public static function getAmountJsConfig(bool $sepBySpace, int $signPosn, string $sign, bool $csPrecedes): string { // negative first: - $space = ' '; + $space = ' '; // require space between symbol and amount? if (false === $sepBySpace) { @@ -271,11 +273,11 @@ class Amount // there are five possible positions for the "+" or "-" sign (if it is even used) // pos_a and pos_e could be the ( and ) symbol. - $posA = ''; // before everything - $posB = ''; // before currency symbol - $posC = ''; // after currency symbol - $posD = ''; // before amount - $posE = ''; // after everything + $posA = ''; // before everything + $posB = ''; // before currency symbol + $posC = ''; // after currency symbol + $posD = ''; // before amount + $posE = ''; // after everything // format would be (currency before amount) // AB%sC_D%vE @@ -317,11 +319,11 @@ class Amount } // default is amount before currency - $format = $posA . $posD . '%v' . $space . $posB . '%s' . $posC . $posE; + $format = $posA.$posD.'%v'.$space.$posB.'%s'.$posC.$posE; if ($csPrecedes) { // alternative is currency before amount - $format = $posA . $posB . '%s' . $posC . $space . $posD . '%v' . $posE; + $format = $posA.$posB.'%s'.$posC.$space.$posD.'%v'.$posE; } return $format; diff --git a/app/Support/Http/Controllers/PeriodOverview.php b/app/Support/Http/Controllers/PeriodOverview.php index b66ba5747c..632f5088cf 100644 --- a/app/Support/Http/Controllers/PeriodOverview.php +++ b/app/Support/Http/Controllers/PeriodOverview.php @@ -576,13 +576,13 @@ trait PeriodOverview } $entries[] = [ - 'title' => $title, - 'route' => route('transactions.index', [$transactionType, $currentDate['start']->format('Y-m-d'), $currentDate['end']->format('Y-m-d')]), - 'total_transactions' => count($spent) + count($earned) + count($transferred), - 'spent' => $this->groupByCurrency($spent), - 'earned' => $this->groupByCurrency($earned), - 'transferred' => $this->groupByCurrency($transferred), - ]; + 'title' => $title, + 'route' => route('transactions.index', [$transactionType, $currentDate['start']->format('Y-m-d'), $currentDate['end']->format('Y-m-d')]), + 'total_transactions' => count($spent) + count($earned) + count($transferred), + 'spent' => $this->groupByCurrency($spent), + 'earned' => $this->groupByCurrency($earned), + 'transferred' => $this->groupByCurrency($transferred), + ]; } return $entries; diff --git a/app/Support/Steam.php b/app/Support/Steam.php index d0734e1896..d6e9e96b9a 100644 --- a/app/Support/Steam.php +++ b/app/Support/Steam.php @@ -31,6 +31,7 @@ use FireflyIII\Models\TransactionCurrency; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; +use FireflyIII\Support\Facades\Amount; /** * Class Steam. @@ -310,8 +311,8 @@ class Steam public function finalAccountBalance(Account $account, Carbon $date): array { Log::debug(sprintf('Now in finalAccountBalance(#%d, "%s", "%s")', $account->id, $account->name, $date->format('Y-m-d H:i:s'))); - $native = \FireflyIII\Support\Facades\Amount::getDefaultCurrencyByUserGroup($account->user->userGroup); - $convertToNative = \FireflyIII\Support\Facades\Amount::convertToNative($account->user); + $native = Amount::getDefaultCurrencyByUserGroup($account->user->userGroup); + $convertToNative = Amount::convertToNative($account->user); $accountCurrency = $this->getAccountCurrency($account); $hasCurrency = null !== $accountCurrency; $currency = $hasCurrency ? $accountCurrency : $native; diff --git a/changelog.md b/changelog.md index 450bc5b765..da0a52fce3 100644 --- a/changelog.md +++ b/changelog.md @@ -10,17 +10,17 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Multi-currency support. If you set `ENABLE_EXCHANGE_RATES=true` and optionally `ENABLE_EXTERNAL_RATES=true` Firefly III will try to calculate all foreign currencies back to your native currency. This is a work in progress, not all fields and all places will support this yet. Please check out the [documentation](https://docs.firefly-iii.org/explanation/financial-concepts/exchange-rates/). - Notifications support Nfty, Pushover, Slack and Discord. - Many new security related notifications. -- #5523 -- #8531 -- #8307 -- #7945 -- #6760 -- #6557 +- [Issue 5523](https://github.com/firefly-iii/firefly-iii/issues/5523) (Add comment on a budget for a given month) reported by @n-serrette +- [Issue 8531](https://github.com/firefly-iii/firefly-iii/issues/8531) (Add `notes` to transaction audit report) reported by @clouserw +- [Issue 8307](https://github.com/firefly-iii/firefly-iii/issues/8307) (Notification support for Ntfy (and other push notification tools)) reported by @ragnarkarlsson +- [Issue 7945](https://github.com/firefly-iii/firefly-iii/issues/7945) ("Rules" that only trigger manually) reported by @SekoiaTree +- [Issue 6760](https://github.com/firefly-iii/firefly-iii/issues/6760) (Add a new trigger for automated rules) reported by @Gsyltc +- [Issue 6557](https://github.com/firefly-iii/firefly-iii/issues/6557) (Piggy Banks - Draw Funds from Multiple Accounts) reported by @BugPhobic ### Changed - Firefly III requires PHP 8.4. -- #9501 +- [Issue 9501](https://github.com/firefly-iii/firefly-iii/issues/9501) (PHP8.4 support) reported by @JC5 - Docker container no longer runs under root. - "Bills" are now called "subscriptions" to better reflect their purpose. @@ -31,8 +31,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed -- #9532 -- #7288 +- [Issue 9532](https://github.com/firefly-iii/firefly-iii/issues/9532) (ReportSum Integrity Check fails due to empty foreign_amount) reported by @SircasticFox +- [Issue 7288](https://github.com/firefly-iii/firefly-iii/issues/7288) (currentMonthStart/currentMonthEnd not working for no-budget view) reported by @bradsk88 ### API diff --git a/config/firefly.php b/config/firefly.php index 5968f7c992..4f59a04af3 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -81,7 +81,7 @@ return [ 'running_balance_column' => env('USE_RUNNING_BALANCE', false), // see cer.php for exchange rates feature flag. ], - 'version' => 'develop/2024-12-27', + 'version' => 'develop/2024-12-28', 'api_version' => '2.1.0', // field is no longer used. 'db_version' => 25, diff --git a/database/migrations/2024_11_30_075826_multi_piggy.php b/database/migrations/2024_11_30_075826_multi_piggy.php index f32628e86f..86af179a03 100644 --- a/database/migrations/2024_11_30_075826_multi_piggy.php +++ b/database/migrations/2024_11_30_075826_multi_piggy.php @@ -5,6 +5,7 @@ declare(strict_types=1); use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Facades\Log; return new class () extends Migration { /** @@ -19,7 +20,7 @@ return new class () extends Migration { $table->dropForeign('piggy_banks_account_id_foreign'); }); } catch (RuntimeException $e) { - \Illuminate\Support\Facades\Log::error('Could not drop foreign key "piggy_banks_account_id_foreign". Probably not an issue.'); + Log::error('Could not drop foreign key "piggy_banks_account_id_foreign". Probably not an issue.'); } Schema::table('piggy_banks', static function (Blueprint $table): void { // 2. make column nullable. diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 6921b61bb6..e4490fba3f 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -1913,7 +1913,7 @@ return [ 'extension_date_is' => 'Extension date is {date}', // accounts: - 'account_locked_currency' => 'The currency of this account must remain :name as long as piggy banks are linked to it.', + 'account_locked_currency' => 'The currency of this account must remain :name as long as piggy banks are linked to it.', 'i_am_owed_amount' => 'I am owed amount', 'i_owe_amount' => 'I owe amount', 'inactive_account_link' => 'You have :count inactive (archived) account, which you can view on this separate page.|You have :count inactive (archived) accounts, which you can view on this separate page.',