diff --git a/app/Events/Model/PiggyBank/ChangedName.php b/app/Events/Model/PiggyBank/ChangedName.php index 19a2566f27..bed6b78f20 100644 --- a/app/Events/Model/PiggyBank/ChangedName.php +++ b/app/Events/Model/PiggyBank/ChangedName.php @@ -1,5 +1,7 @@ piggyBank->accounts as $account) { + foreach ($event->piggyBank->accounts as $account) { /** @var Rule $rule */ - foreach($account->user->rules as $rule) { + foreach ($account->user->rules as $rule) { /** @var RuleAction $ruleAction */ - foreach($rule->ruleActions()->where('action_type', 'update_piggy')->get() as $ruleAction) { - if($event->oldName === $ruleAction->action_value) { + foreach ($rule->ruleActions()->where('action_type', 'update_piggy')->get() as $ruleAction) { + if ($event->oldName === $ruleAction->action_value) { $ruleAction->action_value = $event->newName; $ruleAction->save(); } @@ -54,6 +54,7 @@ class PiggyBankEventHandler } } } + public function changePiggyAmount(ChangedAmount $event): void { // find journal if group is present. diff --git a/app/Http/Controllers/PiggyBank/AmountController.php b/app/Http/Controllers/PiggyBank/AmountController.php index a9b39b8a80..4cdec6201f 100644 --- a/app/Http/Controllers/PiggyBank/AmountController.php +++ b/app/Http/Controllers/PiggyBank/AmountController.php @@ -78,17 +78,19 @@ class AmountController extends Controller $leftToSave = bcsub($piggyBank->target_amount, $totalSaved); $maxAmount = 0 === bccomp($piggyBank->target_amount, '0') ? $leftOnAccount : min($leftOnAccount, $leftToSave); - Log::debug(sprintf('Account "%s", left on account "%s", saved so far "%s", left to save "%s", max amount "%s".', + Log::debug(sprintf( + 'Account "%s", left on account "%s", saved so far "%s", left to save "%s", max amount "%s".', $account->name, $leftOnAccount, $totalSaved, $leftToSave, - $maxAmount,)); + $maxAmount, + )); $accounts[] = [ 'account' => $account, 'left_on_account' => $leftOnAccount, - 'total_saved' => $totalSaved, + 'total_saved' => $totalSaved, 'left_to_save' => $leftToSave, 'max_amount' => $maxAmount, ]; @@ -107,9 +109,9 @@ class AmountController extends Controller public function addMobile(PiggyBank $piggyBank) { /** @var Carbon $date */ - $date = session('end', today(config('app.timezone'))); - $accounts = []; - $total = '0'; + $date = session('end', today(config('app.timezone'))); + $accounts = []; + $total = '0'; $totalSaved = $this->piggyRepos->getCurrentAmount($piggyBank); foreach ($piggyBank->accounts as $account) { $leftOnAccount = $this->piggyRepos->leftOnAccount($piggyBank, $account, $date); @@ -118,7 +120,7 @@ class AmountController extends Controller $accounts[] = [ 'account' => $account, 'left_on_account' => $leftOnAccount, - 'total_saved' => $totalSaved, + 'total_saved' => $totalSaved, 'left_to_save' => $leftToSave, 'max_amount' => $maxAmount, ]; diff --git a/app/Http/Requests/SelectTransactionsRequest.php b/app/Http/Requests/SelectTransactionsRequest.php index 48b901c3e4..674d3d222e 100644 --- a/app/Http/Requests/SelectTransactionsRequest.php +++ b/app/Http/Requests/SelectTransactionsRequest.php @@ -24,7 +24,6 @@ declare(strict_types=1); namespace FireflyIII\Http\Requests; use Illuminate\Contracts\Validation\Validator; -use Carbon\Carbon; use FireflyIII\Support\Request\ChecksLogin; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Log; diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index c22ebc7cdc..3776b71f10 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -211,7 +211,7 @@ class EventServiceProvider extends ServiceProvider ChangedAmount::class => [ 'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changePiggyAmount', ], - ChangedName::class => [ + ChangedName::class => [ 'FireflyIII\Handlers\Events\Model\PiggyBankEventHandler@changedPiggyBankName', ], diff --git a/app/Repositories/PiggyBank/ModifiesPiggyBanks.php b/app/Repositories/PiggyBank/ModifiesPiggyBanks.php index 316da4c513..3da904540d 100644 --- a/app/Repositories/PiggyBank/ModifiesPiggyBanks.php +++ b/app/Repositories/PiggyBank/ModifiesPiggyBanks.php @@ -65,15 +65,15 @@ trait ModifiesPiggyBanks public function removeAmount(PiggyBank $piggyBank, Account $account, string $amount, ?TransactionJournal $journal = null): bool { - $currentAmount = $this->getCurrentAmount($piggyBank, $account); - $pivot = $piggyBank->accounts()->where('accounts.id', $account->id)->first()->pivot; - $pivot->current_amount = bcsub((string)$currentAmount, $amount); + $currentAmount = $this->getCurrentAmount($piggyBank, $account); + $pivot = $piggyBank->accounts()->where('accounts.id', $account->id)->first()->pivot; + $pivot->current_amount = bcsub((string)$currentAmount, $amount); $pivot->native_current_amount = null; // also update native_current_amount. - $userCurrency = app('amount')->getNativeCurrencyByUserGroup($this->user->userGroup); + $userCurrency = app('amount')->getNativeCurrencyByUserGroup($this->user->userGroup); if ($userCurrency->id !== $piggyBank->transaction_currency_id) { - $converter = new ExchangeRateConverter(); + $converter = new ExchangeRateConverter(); $converter->setIgnoreSettings(true); $pivot->native_current_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $pivot->current_amount); } @@ -88,15 +88,15 @@ trait ModifiesPiggyBanks public function addAmount(PiggyBank $piggyBank, Account $account, string $amount, ?TransactionJournal $journal = null): bool { - $currentAmount = $this->getCurrentAmount($piggyBank, $account); - $pivot = $piggyBank->accounts()->where('accounts.id', $account->id)->first()->pivot; - $pivot->current_amount = bcadd((string)$currentAmount, $amount); + $currentAmount = $this->getCurrentAmount($piggyBank, $account); + $pivot = $piggyBank->accounts()->where('accounts.id', $account->id)->first()->pivot; + $pivot->current_amount = bcadd((string)$currentAmount, $amount); $pivot->native_current_amount = null; // also update native_current_amount. - $userCurrency = app('amount')->getNativeCurrencyByUserGroup($this->user->userGroup); + $userCurrency = app('amount')->getNativeCurrencyByUserGroup($this->user->userGroup); if ($userCurrency->id !== $piggyBank->transaction_currency_id) { - $converter = new ExchangeRateConverter(); + $converter = new ExchangeRateConverter(); $converter->setIgnoreSettings(true); $pivot->native_current_amount = $converter->convert($piggyBank->transactionCurrency, $userCurrency, today(), $pivot->current_amount); } @@ -112,10 +112,10 @@ trait ModifiesPiggyBanks public function canAddAmount(PiggyBank $piggyBank, Account $account, string $amount): bool { Log::debug('Now in canAddAmount'); - $today = today(config('app.timezone'))->endOfDay(); + $today = today(config('app.timezone'))->endOfDay(); $leftOnAccount = $this->leftOnAccount($piggyBank, $account, $today); - $savedSoFar = $this->getCurrentAmount($piggyBank); - $maxAmount = $leftOnAccount; + $savedSoFar = $this->getCurrentAmount($piggyBank); + $maxAmount = $leftOnAccount; Log::debug(sprintf('Left on account: %s on %s', $leftOnAccount, $today->format('Y-m-d H:i:s'))); Log::debug(sprintf('Saved so far: %s', $savedSoFar)); @@ -123,13 +123,13 @@ trait ModifiesPiggyBanks if (0 !== bccomp($piggyBank->target_amount, '0')) { $leftToSave = bcsub($piggyBank->target_amount, (string)$savedSoFar); - $maxAmount = 1 === bccomp((string)$leftOnAccount, $leftToSave) ? $leftToSave : $leftOnAccount; + $maxAmount = 1 === bccomp((string)$leftOnAccount, $leftToSave) ? $leftToSave : $leftOnAccount; Log::debug(sprintf('Left to save: %s', $leftToSave)); Log::debug(sprintf('Maximum amount: %s', $maxAmount)); } - $compare = bccomp($amount, (string)$maxAmount); - $result = $compare <= 0; + $compare = bccomp($amount, (string)$maxAmount); + $result = $compare <= 0; Log::debug(sprintf('Compare <= 0? %d, so canAddAmount is %s', $compare, var_export($result, true))); @@ -163,15 +163,15 @@ trait ModifiesPiggyBanks public function setCurrentAmount(PiggyBank $piggyBank, string $amount): PiggyBank { - $repetition = $this->getRepetition($piggyBank); + $repetition = $this->getRepetition($piggyBank); if (null === $repetition) { return $piggyBank; } - $max = $piggyBank->target_amount; + $max = $piggyBank->target_amount; if (1 === bccomp($amount, $max) && 0 !== bccomp($piggyBank->target_amount, '0')) { $amount = $max; } - $difference = bcsub($amount, (string)$repetition->current_amount); + $difference = bcsub($amount, (string)$repetition->current_amount); $repetition->current_amount = $amount; $repetition->save(); @@ -202,7 +202,7 @@ trait ModifiesPiggyBanks */ public function store(array $data): PiggyBank { - $factory = new PiggyBankFactory(); + $factory = new PiggyBankFactory(); $factory->user = $this->user; return $factory->store($data); @@ -210,20 +210,20 @@ trait ModifiesPiggyBanks public function update(PiggyBank $piggyBank, array $data): PiggyBank { - $piggyBank = $this->updateProperties($piggyBank, $data); + $piggyBank = $this->updateProperties($piggyBank, $data); if (array_key_exists('notes', $data)) { $this->updateNote($piggyBank, (string)$data['notes']); } // update the order of the piggy bank: - $oldOrder = $piggyBank->order; - $newOrder = (int)($data['order'] ?? $oldOrder); + $oldOrder = $piggyBank->order; + $newOrder = (int)($data['order'] ?? $oldOrder); if ($oldOrder !== $newOrder) { $this->setOrder($piggyBank, $newOrder); } // update the accounts - $factory = new PiggyBankFactory(); + $factory = new PiggyBankFactory(); $factory->user = $this->user; // the piggy bank currency is set or updated FIRST, if it exists. @@ -300,11 +300,11 @@ trait ModifiesPiggyBanks $piggyBank->target_amount = '0'; } if (array_key_exists('target_date', $data) && '' !== $data['target_date']) { - $piggyBank->target_date = $data['target_date']; + $piggyBank->target_date = $data['target_date']; $piggyBank->target_date_tz = $data['target_date']?->format('e'); } if (array_key_exists('start_date', $data)) { - $piggyBank->start_date = $data['start_date']; + $piggyBank->start_date = $data['start_date']; $piggyBank->start_date_tz = $data['target_date']?->format('e'); } $piggyBank->save(); @@ -320,7 +320,7 @@ trait ModifiesPiggyBanks return; } - $dbNote = $piggyBank->notes()->first(); + $dbNote = $piggyBank->notes()->first(); if (null === $dbNote) { $dbNote = new Note(); $dbNote->noteable()->associate($piggyBank); @@ -331,7 +331,7 @@ trait ModifiesPiggyBanks public function setOrder(PiggyBank $piggyBank, int $newOrder): bool { - $oldOrder = $piggyBank->order; + $oldOrder = $piggyBank->order; // Log::debug(sprintf('Will move piggy bank #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder)); if ($newOrder > $oldOrder) { PiggyBank::leftJoin('account_piggy_bank', 'account_piggy_bank.piggy_bank_id', '=', 'piggy_banks.id') @@ -339,7 +339,8 @@ trait ModifiesPiggyBanks ->where('accounts.user_id', $this->user->id) ->where('piggy_banks.order', '<=', $newOrder)->where('piggy_banks.order', '>', $oldOrder) ->where('piggy_banks.id', '!=', $piggyBank->id) - ->distinct()->decrement('piggy_banks.order'); + ->distinct()->decrement('piggy_banks.order') + ; $piggyBank->order = $newOrder; Log::debug(sprintf('[1] Order of piggy #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder)); @@ -352,7 +353,8 @@ trait ModifiesPiggyBanks ->where('accounts.user_id', $this->user->id) ->where('piggy_banks.order', '>=', $newOrder)->where('piggy_banks.order', '<', $oldOrder) ->where('piggy_banks.id', '!=', $piggyBank->id) - ->distinct()->increment('piggy_banks.order'); + ->distinct()->increment('piggy_banks.order') + ; $piggyBank->order = $newOrder; Log::debug(sprintf('[2] Order of piggy #%d ("%s") from %d to %d', $piggyBank->id, $piggyBank->name, $oldOrder, $newOrder)); @@ -373,7 +375,7 @@ trait ModifiesPiggyBanks } // if this account contains less than the amount, remove the current amount, update the amount and continue. $this->removeAmount($piggyBank, $account, $current); - $amount = bcsub($amount, (string)$current); + $amount = bcsub($amount, (string)$current); } } } diff --git a/app/Support/Http/Api/ExchangeRateConverter.php b/app/Support/Http/Api/ExchangeRateConverter.php index acaf0b907f..1ff60dbaaa 100644 --- a/app/Support/Http/Api/ExchangeRateConverter.php +++ b/app/Support/Http/Api/ExchangeRateConverter.php @@ -84,7 +84,7 @@ class ExchangeRateConverter return '1'; } if ($from->id === $to->id) { -// Log::debug('ExchangeRateConverter: From and to are the same, return "1".'); + // Log::debug('ExchangeRateConverter: From and to are the same, return "1".'); return '1'; } diff --git a/app/TransactionRules/Actions/UpdatePiggyBank.php b/app/TransactionRules/Actions/UpdatePiggyBank.php index 44c9603c22..64fe735e6a 100644 --- a/app/TransactionRules/Actions/UpdatePiggyBank.php +++ b/app/TransactionRules/Actions/UpdatePiggyBank.php @@ -40,9 +40,7 @@ class UpdatePiggyBank implements ActionInterface /** * TriggerInterface constructor. */ - public function __construct(private readonly RuleAction $action) - { - } + public function __construct(private readonly RuleAction $action) {} public function actOnArray(array $journal): bool { @@ -52,12 +50,12 @@ class UpdatePiggyBank implements ActionInterface // refresh the transaction type. /** @var User $user */ - $user = User::find($journal['user_id']); + $user = User::find($journal['user_id']); /** @var TransactionJournal $journalObj */ - $journalObj = $user->transactionJournals()->find($journal['transaction_journal_id']); + $journalObj = $user->transactionJournals()->find($journal['transaction_journal_id']); - $piggyBank = $this->findPiggyBank($user, $actionValue); + $piggyBank = $this->findPiggyBank($user, $actionValue); if (!$piggyBank instanceof PiggyBank) { Log::info( sprintf('No piggy bank named "%s", cant execute action #%d of rule #%d', $actionValue, $this->action->id, $this->action->rule_id) @@ -74,6 +72,7 @@ class UpdatePiggyBank implements ActionInterface Log::info(sprintf('Piggy bank #%d ("%s") already has an event for transaction journal #%d, so no action will be taken.', $piggyBank->id, $piggyBank->name, $journalObj->id)); event(new RuleActionFailedOnArray($this->action, $journal, trans('rules.cannot_find_piggy', ['name' => $actionValue]))); + return false; } @@ -81,7 +80,7 @@ class UpdatePiggyBank implements ActionInterface /** @var Transaction $destination */ $destination = $journalObj->transactions()->where('amount', '>', 0)->first(); - $accounts = $this->getAccounts($journalObj); + $accounts = $this->getAccounts($journalObj); Log::debug(sprintf('Source account is #%d: "%s"', $accounts['source']->id, $accounts['source']->name)); Log::debug(sprintf('Destination account is #%d: "%s"', $accounts['destination']->id, $accounts['source']->name)); @@ -97,9 +96,9 @@ class UpdatePiggyBank implements ActionInterface null, [ 'currency_symbol' => $journalObj->transactionCurrency->symbol, - 'decimal_places' => $journalObj->transactionCurrency->decimal_places, - 'amount' => $destination->amount, - 'piggy' => $piggyBank->name, + 'decimal_places' => $journalObj->transactionCurrency->decimal_places, + 'amount' => $destination->amount, + 'piggy' => $piggyBank->name, ] ) ); @@ -120,10 +119,10 @@ class UpdatePiggyBank implements ActionInterface null, [ 'currency_symbol' => $journalObj->transactionCurrency->symbol, - 'decimal_places' => $journalObj->transactionCurrency->decimal_places, - 'amount' => $destination->amount, - 'piggy' => $piggyBank->name, - 'piggy_id' => $piggyBank->id, + 'decimal_places' => $journalObj->transactionCurrency->decimal_places, + 'amount' => $destination->amount, + 'piggy' => $piggyBank->name, + 'piggy_id' => $piggyBank->id, ] ) ); @@ -154,7 +153,7 @@ class UpdatePiggyBank implements ActionInterface private function getAccounts(TransactionJournal $journal): array { return [ - 'source' => $journal->transactions()->where('amount', '<', '0')->first()?->account, + 'source' => $journal->transactions()->where('amount', '<', '0')->first()?->account, 'destination' => $journal->transactions()->where('amount', '>', '0')->first()?->account, ]; } @@ -180,11 +179,11 @@ class UpdatePiggyBank implements ActionInterface $repository->setUser($journal->user); // how much can we remove from this piggy bank? - $toRemove = $repository->getCurrentAmount($piggyBank, $account); + $toRemove = $repository->getCurrentAmount($piggyBank, $account); Log::debug(sprintf('Amount is %s, max to remove is %s', $amount, $toRemove)); // if $amount is bigger than $toRemove, shrink it. - $amount = -1 === bccomp($amount, $toRemove) ? $amount : $toRemove; + $amount = -1 === bccomp($amount, $toRemove) ? $amount : $toRemove; Log::debug(sprintf('Amount is now %s', $amount)); // if amount is zero, stop. @@ -213,7 +212,7 @@ class UpdatePiggyBank implements ActionInterface // how much can we add to the piggy bank? if (0 !== bccomp($piggyBank->target_amount, '0')) { - $toAdd = bcsub($piggyBank->target_amount, $repository->getCurrentAmount($piggyBank, $account)); + $toAdd = bcsub($piggyBank->target_amount, $repository->getCurrentAmount($piggyBank, $account)); Log::debug(sprintf('Max amount to add to piggy bank is %s, amount is %s', $toAdd, $amount)); // update amount to fit: diff --git a/composer.lock b/composer.lock index 149e369522..d95f75fe56 100644 --- a/composer.lock +++ b/composer.lock @@ -129,16 +129,16 @@ }, { "name": "brick/math", - "version": "0.12.3", + "version": "0.13.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", + "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", "shasum": "" }, "require": { @@ -177,7 +177,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.3" + "source": "https://github.com/brick/math/tree/0.13.1" }, "funding": [ { @@ -185,7 +185,7 @@ "type": "github" } ], - "time": "2025-02-28T13:11:00+00:00" + "time": "2025-03-29T13:50:30+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -1879,20 +1879,20 @@ }, { "name": "laravel/framework", - "version": "v12.16.0", + "version": "v12.17.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "293bb1c70224faebfd3d4328e201c37115da055f" + "reference": "8729d084510480fdeec9b6ad198180147d4a7f06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/293bb1c70224faebfd3d4328e201c37115da055f", - "reference": "293bb1c70224faebfd3d4328e201c37115da055f", + "url": "https://api.github.com/repos/laravel/framework/zipball/8729d084510480fdeec9b6ad198180147d4a7f06", + "reference": "8729d084510480fdeec9b6ad198180147d4a7f06", "shasum": "" }, "require": { - "brick/math": "^0.11|^0.12", + "brick/math": "^0.11|^0.12|^0.13", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.4", @@ -2090,7 +2090,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-05-27T15:49:44+00:00" + "time": "2025-06-03T14:04:18+00:00" }, { "name": "laravel/passport", @@ -3880,16 +3880,16 @@ }, { "name": "nette/utils", - "version": "v4.0.6", + "version": "v4.0.7", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "ce708655043c7050eb050df361c5e313cf708309" + "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309", - "reference": "ce708655043c7050eb050df361c5e313cf708309", + "url": "https://api.github.com/repos/nette/utils/zipball/e67c4061eb40b9c113b218214e42cb5a0dda28f2", + "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2", "shasum": "" }, "require": { @@ -3960,9 +3960,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.6" + "source": "https://github.com/nette/utils/tree/v4.0.7" }, - "time": "2025-03-30T21:06:30+00:00" + "time": "2025-06-03T04:55:08+00:00" }, { "name": "nunomaduro/collision", diff --git a/config/firefly.php b/config/firefly.php index 67c4ae75b9..8bdfe40ccd 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -78,7 +78,7 @@ return [ 'running_balance_column' => env('USE_RUNNING_BALANCE', false), // see cer.php for exchange rates feature flag. ], - 'version' => 'develop/2025-06-02', + 'version' => 'develop/2025-06-03', 'api_version' => '2.1.0', // field is no longer used. 'db_version' => 25, diff --git a/package-lock.json b/package-lock.json index dcc8f9faea..8af76379a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,9 +43,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz", - "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", + "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", "dev": true, "license": "MIT", "engines": { @@ -94,13 +94,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz", - "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", + "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.3", + "@babel/parser": "^7.27.5", "@babel/types": "^7.27.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", @@ -406,9 +406,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.4.tgz", - "integrity": "sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", "dev": true, "license": "MIT", "dependencies": { @@ -683,9 +683,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.3.tgz", - "integrity": "sha512-+F8CnfhuLhwUACIJMLWnjz6zvzYM2r0yeIHKlbgfw7ml8rOMJsXNXV/hyRcb3nb493gRs4WvYpQAndWj/qQmkQ==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz", + "integrity": "sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1255,9 +1255,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.4.tgz", - "integrity": "sha512-Glp/0n8xuj+E1588otw5rjJkTXfzW7FjH3IIUrfqiZOPQCd2vbg8e+DQE8jK9g4V5/zrxFW+D9WM9gboRPELpQ==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz", + "integrity": "sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5632,9 +5632,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.161", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.161.tgz", - "integrity": "sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==", + "version": "1.5.162", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.162.tgz", + "integrity": "sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA==", "dev": true, "license": "ISC" }, @@ -7713,9 +7713,9 @@ } }, "node_modules/laravel-vite-plugin": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.2.0.tgz", - "integrity": "sha512-R0pJ+IcTVeqEMoKz/B2Ij57QVq3sFTABiFmb06gAwFdivbOgsUtuhX6N2MGLEArajrS3U5JbberzwOe7uXHMHQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.3.0.tgz", + "integrity": "sha512-P5qyG56YbYxM8OuYmK2OkhcKe0AksNVJUjq9LUZ5tOekU9fBn9LujYyctI4t9XoLjuMvHJXXpCoPntY1oKltuA==", "dev": true, "license": "MIT", "dependencies": { @@ -10414,9 +10414,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", - "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, "license": "MIT", "engines": { @@ -12081,9 +12081,9 @@ } }, "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.0.tgz", - "integrity": "sha512-77R0RDmJfj9dyv5p3bM5pOHa+X8/ZkO9c7kpDstigkC4nIDobadsfSGCwB4bKhMVxqAok8tajaoR8rirM7+VFQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.2.tgz", + "integrity": "sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==", "dev": true, "license": "MIT", "engines": { diff --git a/resources/lang/en_US/rules.php b/resources/lang/en_US/rules.php index bdcd5ba17a..ce60269015 100644 --- a/resources/lang/en_US/rules.php +++ b/resources/lang/en_US/rules.php @@ -68,7 +68,7 @@ return [ 'cannot_find_piggy' => 'Firefly III can\'t find a piggy bank named ":name"', 'no_link_piggy' => 'This transaction\'s accounts are not linked to the piggy bank, so no action will be taken', 'both_link_piggy' => 'This transaction\'s accounts are both linked to the piggy bank, so no action will be taken', - 'already_linked' => 'This transaction is already linked to piggy bank ":name"', + 'already_linked' => 'This transaction is already linked to piggy bank ":name"', 'cannot_unlink_tag' => 'Tag ":tag" isn\'t linked to this transaction', 'cannot_find_budget' => 'Firefly III can\'t find budget ":name"', 'cannot_find_category' => 'Firefly III can\'t find category ":name"',