diff --git a/app/Http/Controllers/Transaction/ShowController.php b/app/Http/Controllers/Transaction/ShowController.php index 7b52f21705..98908a51ad 100644 --- a/app/Http/Controllers/Transaction/ShowController.php +++ b/app/Http/Controllers/Transaction/ShowController.php @@ -194,7 +194,12 @@ class ShowController extends Controller foreach ($group['transactions'] as $transaction) { // add normal amount: $symbol = $transaction['currency_symbol']; - $amounts[$symbol] ??= ['amount' => '0', 'symbol' => $symbol, 'decimal_places' => $transaction['currency_decimal_places'],'approximate' =>false]; + $amounts[$symbol] ??= [ + 'amount' => '0', + 'symbol' => $symbol, + 'decimal_places' => $transaction['currency_decimal_places'], + 'approximate' => false, + ]; $amounts[$symbol]['amount'] = bcadd($amounts[$symbol]['amount'], (string) $transaction['amount']); // add foreign amount: @@ -207,7 +212,7 @@ class ShowController extends Controller $foreignSymbol = $transaction['foreign_currency_symbol']; $amounts[$foreignSymbol] ??= [ 'amount' => '0', - 'approximate' =>false, + 'approximate' => false, 'symbol' => $foreignSymbol, 'decimal_places' => $transaction['foreign_currency_decimal_places'], ]; @@ -223,7 +228,7 @@ class ShowController extends Controller $primarySymbol = $this->primaryCurrency->symbol; $amounts[$primarySymbol] ??= [ 'amount' => '0', - 'approximate' =>true, + 'approximate' => true, 'symbol' => $this->primaryCurrency->symbol, 'decimal_places' => $this->primaryCurrency->decimal_places, ]; diff --git a/app/Listeners/Model/TransactionGroup/SupportsGroupProcessingTrait.php b/app/Listeners/Model/TransactionGroup/SupportsGroupProcessingTrait.php index c1dd68273e..3b0b4fbf6c 100644 --- a/app/Listeners/Model/TransactionGroup/SupportsGroupProcessingTrait.php +++ b/app/Listeners/Model/TransactionGroup/SupportsGroupProcessingTrait.php @@ -34,12 +34,12 @@ trait SupportsGroupProcessingTrait return; } - $array = $set->pluck('id')->toArray(); + $array = $set->pluck('id')->toArray(); /** @var TransactionJournal $first */ - $first = $set->first(); - $journalIds = implode(',', $array); - $user = $first->user; + $first = $set->first(); + $journalIds = implode(',', $array); + $user = $first->user; Log::debug(sprintf('Add local operator for journal(s): %s', $journalIds)); // collect rules: @@ -49,12 +49,12 @@ trait SupportsGroupProcessingTrait // add the groups to the rule engine. // it should run the rules in the group and cancel the group if necessary. Log::debug(sprintf('Fire processRules with ALL %s rule groups.', $type)); - $groups = $ruleGroupRepository->getRuleGroupsWithRules($type); + $groups = $ruleGroupRepository->getRuleGroupsWithRules($type); // create and fire rule engine. - $newRuleEngine = app(RuleEngineInterface::class); + $newRuleEngine = app(RuleEngineInterface::class); $newRuleEngine->setUser($user); - $newRuleEngine->addOperator(['type' => 'journal_id', 'value' => $journalIds]); + $newRuleEngine->addOperator(['type' => 'journal_id', 'value' => $journalIds]); $newRuleEngine->setRuleGroups($groups); $newRuleEngine->fire(); Log::debug(sprintf('Done with processRules("%s") for %d journal(s)', $type, $set->count())); @@ -89,6 +89,7 @@ trait SupportsGroupProcessingTrait { if (!auth()->check()) { Log::debug('Will NOT remove period statistics for all objects, because no user detected.'); + return; } Log::debug('Will now remove period statistics for all objects.'); @@ -139,8 +140,8 @@ trait SupportsGroupProcessingTrait } /** @var TransactionGroup $first */ - $first = $groups->first(); - $user = $first->user; + $first = $groups->first(); + $user = $first->user; /** @var MessageGeneratorInterface $engine */ $engine = app(MessageGeneratorInterface::class); diff --git a/app/Repositories/PeriodStatistic/PeriodStatisticRepository.php b/app/Repositories/PeriodStatistic/PeriodStatisticRepository.php index 78c57b4544..450281696c 100644 --- a/app/Repositories/PeriodStatistic/PeriodStatisticRepository.php +++ b/app/Repositories/PeriodStatistic/PeriodStatisticRepository.php @@ -95,8 +95,9 @@ class PeriodStatisticRepository implements PeriodStatisticRepositoryInterface, U #[Override] public function deleteStatisticsForPrefix(string $prefix, Collection $dates): void { - if(null === $this->userGroup) { - Log::warning(('No user group, so cannot continue.')); + if (null === $this->userGroup) { + Log::warning('No user group, so cannot continue.'); + return; } $count = $this->userGroup diff --git a/app/Support/Calendar/Calculator.php b/app/Support/Calendar/Calculator.php index b15a3c65ca..829191a208 100644 --- a/app/Support/Calendar/Calculator.php +++ b/app/Support/Calendar/Calculator.php @@ -39,6 +39,7 @@ class Calculator // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private static array $intervals = []; public function isAvailablePeriodicity(Periodicity $periodicity): bool diff --git a/app/Support/Export/ExportDataGenerator.php b/app/Support/Export/ExportDataGenerator.php index 87861e3490..9ea51cab62 100644 --- a/app/Support/Export/ExportDataGenerator.php +++ b/app/Support/Export/ExportDataGenerator.php @@ -96,6 +96,8 @@ class ExportDataGenerator // @phpstan-ignore-line + // @phpstan-ignore-line + public function __construct() { $this->accounts = new Collection(); diff --git a/app/Support/Http/Controllers/PeriodOverview.php b/app/Support/Http/Controllers/PeriodOverview.php index 63b1d792ed..34cca069dd 100644 --- a/app/Support/Http/Controllers/PeriodOverview.php +++ b/app/Support/Http/Controllers/PeriodOverview.php @@ -84,6 +84,7 @@ trait PeriodOverview // temp data holder // temp data holder // temp data holder + // temp data holder private array $transactions; // temp data holder // temp data holder @@ -92,6 +93,8 @@ trait PeriodOverview // temp data holder + // temp data holder + /** * This method returns "period entries", so nov-2015, dec-2015, etc. (this depends on the users session range) * and for each period, the amount of money spent and earned. This is a complex operation which is cached for diff --git a/app/Support/JsonApi/Enrichments/AvailableBudgetEnrichment.php b/app/Support/JsonApi/Enrichments/AvailableBudgetEnrichment.php index 4621f41803..4ebd3b9b7d 100644 --- a/app/Support/JsonApi/Enrichments/AvailableBudgetEnrichment.php +++ b/app/Support/JsonApi/Enrichments/AvailableBudgetEnrichment.php @@ -44,10 +44,12 @@ class AvailableBudgetEnrichment implements EnrichmentInterface // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private readonly bool $convertToPrimary; // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private array $currencies = []; private array $currencyIds = []; private array $ids = []; diff --git a/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php b/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php index 00c5d40512..e778dd585a 100644 --- a/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php +++ b/app/Support/JsonApi/Enrichments/BudgetLimitEnrichment.php @@ -44,6 +44,7 @@ class BudgetLimitEnrichment implements EnrichmentInterface // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private array $currencies = []; private array $currencyIds = []; private Carbon $end; diff --git a/app/Support/JsonApi/Enrichments/PiggyBankEnrichment.php b/app/Support/JsonApi/Enrichments/PiggyBankEnrichment.php index e3d9a5b9a7..d452e69385 100644 --- a/app/Support/JsonApi/Enrichments/PiggyBankEnrichment.php +++ b/app/Support/JsonApi/Enrichments/PiggyBankEnrichment.php @@ -46,10 +46,12 @@ class PiggyBankEnrichment implements EnrichmentInterface // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private array $accounts = []; // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private array $amounts = []; private Collection $collection; private array $currencies = []; diff --git a/app/Support/JsonApi/Enrichments/PiggyBankEventEnrichment.php b/app/Support/JsonApi/Enrichments/PiggyBankEventEnrichment.php index 462680325b..4b4ddb978b 100644 --- a/app/Support/JsonApi/Enrichments/PiggyBankEventEnrichment.php +++ b/app/Support/JsonApi/Enrichments/PiggyBankEventEnrichment.php @@ -41,10 +41,12 @@ class PiggyBankEventEnrichment implements EnrichmentInterface // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private array $accountIds = []; // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private Collection $collection; private array $currencies = []; private array $groupIds = []; diff --git a/app/Support/JsonApi/Enrichments/SubscriptionEnrichment.php b/app/Support/JsonApi/Enrichments/SubscriptionEnrichment.php index 82245d1bee..c21c5ba7d3 100644 --- a/app/Support/JsonApi/Enrichments/SubscriptionEnrichment.php +++ b/app/Support/JsonApi/Enrichments/SubscriptionEnrichment.php @@ -50,6 +50,7 @@ class SubscriptionEnrichment implements EnrichmentInterface // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private readonly bool $convertToPrimary; private ?Carbon $end = null; private array $mappedObjects = []; diff --git a/app/Support/JsonApi/Enrichments/TransactionGroupEnrichment.php b/app/Support/JsonApi/Enrichments/TransactionGroupEnrichment.php index 5434d75f85..cac952e1e2 100644 --- a/app/Support/JsonApi/Enrichments/TransactionGroupEnrichment.php +++ b/app/Support/JsonApi/Enrichments/TransactionGroupEnrichment.php @@ -61,6 +61,8 @@ class TransactionGroupEnrichment implements EnrichmentInterface // @phpstan-ignore-line + // @phpstan-ignore-line + public function __construct() { $this->dateFields = ['interest_date', 'book_date', 'process_date', 'due_date', 'payment_date', 'invoice_date']; diff --git a/app/Support/JsonApi/Enrichments/WebhookEnrichment.php b/app/Support/JsonApi/Enrichments/WebhookEnrichment.php index d4b245677c..aa9835eca0 100644 --- a/app/Support/JsonApi/Enrichments/WebhookEnrichment.php +++ b/app/Support/JsonApi/Enrichments/WebhookEnrichment.php @@ -46,10 +46,12 @@ class WebhookEnrichment implements EnrichmentInterface // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private array $ids = []; // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line // @phpstan-ignore-line + // @phpstan-ignore-line private array $responses = []; private array $triggers = []; private array $webhookDeliveries = []; diff --git a/app/Support/Search/QueryParser/QueryParser.php b/app/Support/Search/QueryParser/QueryParser.php index 8209e3e003..ee001eb7b0 100644 --- a/app/Support/Search/QueryParser/QueryParser.php +++ b/app/Support/Search/QueryParser/QueryParser.php @@ -54,7 +54,7 @@ class QueryParser implements QueryParserInterface $prohibited = false; $chrArray = preg_split('//u', $this->query, -1, PREG_SPLIT_NO_EMPTY); $count = count($chrArray); - $prevChar = null; + $prevChar = null; while ($this->position < $count) { $char = $chrArray[$this->position]; $nextChar = $chrArray[$this->position + 1] ?? ''; diff --git a/changelog.md b/changelog.md index 9e717dce26..4bb8f94b60 100644 --- a/changelog.md +++ b/changelog.md @@ -9,7 +9,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Batch processing. Firefly III now has a setting (under `/settings`) that allows you to send `"batch_processing": true` with new transactions over the API. If this setting is enabled and the value is `true`, Firefly III will not fire rules, webhooks or other events untill you either send `false` with a transaction OR use the [API end point](https://api-docs.firefly-iii.org/) `/v1/api/batch/finish`. This should speed up (large) data imports. It's a little experimental, use at your own risk. - [Issue 11614](https://github.com/firefly-iii/firefly-iii/issues/11614) (Add New Taiwan Dollar to Currency Seeder) reported by @nick322 -- #11246 +- [Issue 11246](https://github.com/firefly-iii/firefly-iii/issues/11246) (Distinguish automatically converted amount from foreign amount) reported by @jfpedroza ### Changed @@ -28,13 +28,13 @@ This project adheres to [Semantic Versioning](http://semver.org/). - [Issue 11546](https://github.com/firefly-iii/firefly-iii/issues/11546) (Wrong invitation expiry time) reported by @GunoH - [Issue 11563](https://github.com/firefly-iii/firefly-iii/issues/11563) (Tag Report/Insight API Endpoint for Tags Non Functional) reported by @Unsantae - [PR 11569](https://github.com/firefly-iii/firefly-iii/pull/11569) (Fix layout overflow issues with long content in v1 and v2 layouts) reported by @gian21391 -- [PR 11589](https://github.com/firefly-iii/firefly-iii/pull/11589) (apply user-selected light/dark mode to form elements (checkboxes, date picker) #8613 #7620) reported by @mateuszkulapl -- #11597 +- [PR 11589](https://github.com/firefly-iii/firefly-iii/pull/11589) (apply user-selected light/dark mode to form elements (checkboxes, date picker) [Issue 8613](https://github.com/firefly-iii/firefly-iii/issues/8613) (Some minor color issues) reported by @rumpff [Issue 7620](https://github.com/firefly-iii/firefly-iii/issues/7620) (Issues with light mode) reported by @rchl) reported by @mateuszkulapl +- [Issue 11597](https://github.com/firefly-iii/firefly-iii/issues/11597) (Changing category doesn't recompute stats) reported by @jlauwers - [Issue 11601](https://github.com/firefly-iii/firefly-iii/issues/11601) (Only ungrouped piggy banks are listed when creating a transaction) reported by @jgmm81 - [Issue 11620](https://github.com/firefly-iii/firefly-iii/issues/11620) (Add database indexes to improve reporting query performance) reported by @Zakmaf - [PR 11632](https://github.com/firefly-iii/firefly-iii/pull/11632) (fix v2 layout dashboard transactions load) reported by @mateuszkulapl -- #11657 -- #11660 +- [Issue 11657](https://github.com/firefly-iii/firefly-iii/issues/11657) (since v6.4.16: Backslash in category names cannot be matched in rules) reported by @37-b-j +- [Issue 11660](https://github.com/firefly-iii/firefly-iii/issues/11660) (Display of negative values of transfers) reported by @Robubble - Confirming your new email address would result in an error. ### API diff --git a/composer.lock b/composer.lock index 3819f983ab..70164b7b15 100644 --- a/composer.lock +++ b/composer.lock @@ -10530,16 +10530,16 @@ }, { "name": "fruitcake/laravel-debugbar", - "version": "v4.0.6", + "version": "v4.0.7", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-debugbar.git", - "reference": "0cbf2986de59f66870cee565491b81eb89f8d25e" + "reference": "a9cc62c81cd0bda4ca7410229487638d7df786be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/0cbf2986de59f66870cee565491b81eb89f8d25e", - "reference": "0cbf2986de59f66870cee565491b81eb89f8d25e", + "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/a9cc62c81cd0bda4ca7410229487638d7df786be", + "reference": "a9cc62c81cd0bda4ca7410229487638d7df786be", "shasum": "" }, "require": { @@ -10616,7 +10616,7 @@ ], "support": { "issues": "https://github.com/fruitcake/laravel-debugbar/issues", - "source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.0.6" + "source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.0.7" }, "funding": [ { @@ -10628,7 +10628,7 @@ "type": "github" } ], - "time": "2026-02-04T11:48:53+00:00" + "time": "2026-02-06T20:53:50+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -11198,16 +11198,16 @@ }, { "name": "php-debugbar/php-debugbar", - "version": "v3.3.0", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/php-debugbar/php-debugbar.git", - "reference": "e22287890107602af6a113dc7975b3d77c542e5f" + "reference": "afdaa2e56aca9d56b5bb2bad041bd2f6002017cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/e22287890107602af6a113dc7975b3d77c542e5f", - "reference": "e22287890107602af6a113dc7975b3d77c542e5f", + "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/afdaa2e56aca9d56b5bb2bad041bd2f6002017cf", + "reference": "afdaa2e56aca9d56b5bb2bad041bd2f6002017cf", "shasum": "" }, "require": { @@ -11284,7 +11284,7 @@ ], "support": { "issues": "https://github.com/php-debugbar/php-debugbar/issues", - "source": "https://github.com/php-debugbar/php-debugbar/tree/v3.3.0" + "source": "https://github.com/php-debugbar/php-debugbar/tree/v3.3.1" }, "funding": [ { @@ -11296,7 +11296,7 @@ "type": "github" } ], - "time": "2026-01-28T12:57:47+00:00" + "time": "2026-02-06T21:09:38+00:00" }, { "name": "php-debugbar/symfony-bridge", diff --git a/config/firefly.php b/config/firefly.php index 4d5dbd3ca2..9411120bc7 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -78,8 +78,8 @@ return [ 'running_balance_column' => (bool)envNonEmpty('USE_RUNNING_BALANCE', true), // this is only the default value, is not used. // see cer.php for exchange rates feature flag. ], - 'version' => 'develop/2026-02-06', - 'build_time' => 1770398635, + 'version' => 'develop/2026-02-07', + 'build_time' => 1770442634, 'api_version' => '2.1.0', // field is no longer used. 'db_version' => 28, // field is no longer used. diff --git a/database/migrations/2016_08_25_091522_changes_for_3101.php b/database/migrations/2016_08_25_091522_changes_for_3101.php index f36c5cbc79..ce78bf0dfe 100644 --- a/database/migrations/2016_08_25_091522_changes_for_3101.php +++ b/database/migrations/2016_08_25_091522_changes_for_3101.php @@ -33,16 +33,12 @@ class ChangesFor3101 extends Migration /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. * * @SuppressWarnings("PHPMD.ShortMethodName") */ - public function up(): void - { - } + public function up(): void {} } diff --git a/database/migrations/2016_09_12_121359_fix_nullables.php b/database/migrations/2016_09_12_121359_fix_nullables.php index e3f685ed24..2636459641 100644 --- a/database/migrations/2016_09_12_121359_fix_nullables.php +++ b/database/migrations/2016_09_12_121359_fix_nullables.php @@ -39,9 +39,7 @@ class FixNullables extends Migration /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. diff --git a/database/migrations/2018_04_29_174524_changes_for_v474.php b/database/migrations/2018_04_29_174524_changes_for_v474.php index e9c97c60b3..a3415a224d 100644 --- a/database/migrations/2018_04_29_174524_changes_for_v474.php +++ b/database/migrations/2018_04_29_174524_changes_for_v474.php @@ -34,16 +34,12 @@ class ChangesForV474 extends Migration /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. * * @SuppressWarnings("PHPMD.ShortMethodName") */ - public function up(): void - { - } + public function up(): void {} } diff --git a/database/migrations/2019_02_05_055516_changes_for_v4711.php b/database/migrations/2019_02_05_055516_changes_for_v4711.php index c8e7f6db8a..e42ad0c4ca 100644 --- a/database/migrations/2019_02_05_055516_changes_for_v4711.php +++ b/database/migrations/2019_02_05_055516_changes_for_v4711.php @@ -37,9 +37,7 @@ class ChangesForV4711 extends Migration /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. diff --git a/database/migrations/2019_02_11_170529_changes_for_v4712.php b/database/migrations/2019_02_11_170529_changes_for_v4712.php index b8f35ada56..f0773c5c82 100644 --- a/database/migrations/2019_02_11_170529_changes_for_v4712.php +++ b/database/migrations/2019_02_11_170529_changes_for_v4712.php @@ -37,9 +37,7 @@ class ChangesForV4712 extends Migration /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. diff --git a/database/migrations/2021_05_13_053836_extend_currency_info.php b/database/migrations/2021_05_13_053836_extend_currency_info.php index 974ecbc2c9..1836e844b4 100644 --- a/database/migrations/2021_05_13_053836_extend_currency_info.php +++ b/database/migrations/2021_05_13_053836_extend_currency_info.php @@ -35,9 +35,7 @@ class ExtendCurrencyInfo extends Migration /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. diff --git a/database/migrations/2024_03_03_174645_add_indices.php b/database/migrations/2024_03_03_174645_add_indices.php index 5107649317..80e8d76c8d 100644 --- a/database/migrations/2024_03_03_174645_add_indices.php +++ b/database/migrations/2024_03_03_174645_add_indices.php @@ -34,9 +34,7 @@ return new class() extends Migration { /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. diff --git a/database/migrations/2024_04_01_174351_expand_preferences_table.php b/database/migrations/2024_04_01_174351_expand_preferences_table.php index 510d8de286..0022db6abd 100644 --- a/database/migrations/2024_04_01_174351_expand_preferences_table.php +++ b/database/migrations/2024_04_01_174351_expand_preferences_table.php @@ -31,9 +31,7 @@ return new class() extends Migration { /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations. diff --git a/database/migrations/2024_11_05_062108_add_date_tz_columns.php b/database/migrations/2024_11_05_062108_add_date_tz_columns.php index 47705b5752..6bb3726641 100644 --- a/database/migrations/2024_11_05_062108_add_date_tz_columns.php +++ b/database/migrations/2024_11_05_062108_add_date_tz_columns.php @@ -51,9 +51,7 @@ return new class() extends Migration { /** * Reverse the migrations. */ - public function down(): void - { - } + public function down(): void {} /** * Run the migrations.