Compare commits

...

6 Commits

Author SHA1 Message Date
github-actions[bot]
7efc2861bc Merge pull request #10468 from firefly-iii/release-1750044727
🤖 Automatically merge the PR into the develop branch.
2025-06-16 05:32:16 +02:00
JC5
5c689a2ca2 🤖 Auto commit for release 'develop' on 2025-06-16 2025-06-16 05:32:08 +02:00
github-actions[bot]
d5d65df76f Merge pull request #10459 from firefly-iii/release-1749897382
🤖 Automatically merge the PR into the develop branch.
2025-06-14 12:36:32 +02:00
JC5
df7d4f700c 🤖 Auto commit for release 'develop' on 2025-06-14 2025-06-14 12:36:22 +02:00
James Cole
efebe3cb41 Remove debug letters. 2025-06-14 12:31:54 +02:00
James Cole
2ba5b6ae49 Fix #10454 2025-06-14 10:18:58 +02:00
23 changed files with 77 additions and 91 deletions

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers\Autocomplete;
use Deprecated;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
use FireflyIII\Models\TransactionCurrency;
@@ -83,9 +84,8 @@ class CurrencyController extends Controller
/**
* Documentation for this endpoint is at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesCodeAC
*
* @deprecated
*/
#[Deprecated]
public function currenciesWithCode(AutocompleteRequest $request): JsonResponse
{
$data = $request->getData();

View File

@@ -237,9 +237,7 @@ class BudgetController extends Controller
/** @var array $entry */
// only spent the entry where the entry's currency matches the budget limit's currency
// so $filtered will only have 1 or 0 entries
$filtered = array_filter($spent, function ($entry) use ($limitCurrencyId) {
return $entry['currency_id'] === $limitCurrencyId;
});
$filtered = array_filter($spent, fn ($entry) => $entry['currency_id'] === $limitCurrencyId);
$result = $this->processExpenses($budget->id, $filtered, $limit->start_date, $end);
if (1 === count($result)) {
$compare = bccomp($limit->amount, (string) app('steam')->positive($result[$limitCurrencyId]['spent']));

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Events\RequestedVersionCheckStatus;
use FireflyIII\Exceptions\FireflyException;
@@ -42,9 +43,8 @@ class VersionCheckEventHandler
* Checks with GitHub to see if there is a new version.
*
* @throws FireflyException
*
* @deprecated ?
*/
#[Deprecated(message: '?')]
public function checkForUpdates(RequestedVersionCheckStatus $event): void
{
Log::debug('Now in checkForUpdates()');

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Helpers\Report;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Exceptions\FireflyException;
@@ -134,9 +135,7 @@ class NetWorth implements NetWorthInterface
$this->currencyRepos->setUserGroup($this->userGroup);
}
/**
* @deprecated
*/
#[Deprecated]
public function sumNetWorthByCurrency(Carbon $date): array
{
/**

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Helpers\Report;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Models\UserGroup;
use FireflyIII\User;
@@ -53,8 +54,7 @@ interface NetWorthInterface
* TODO move to repository
*
* Same as above but cleaner function with less dependencies.
*
* @deprecated
*/
#[Deprecated]
public function sumNetWorthByCurrency(Carbon $date): array;
}

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Http\Controllers\Json;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Enums\TransactionTypeEnum;
@@ -46,9 +47,8 @@ class BoxController extends Controller
/**
* Deprecated method, no longer in use.
*
* @deprecated
*/
#[Deprecated]
public function available(): JsonResponse
{
return response()->json([]);

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Budget;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Models\AvailableBudget;
use FireflyIII\Models\TransactionCurrency;
@@ -205,9 +206,7 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface, U
;
}
/**
* @deprecated
*/
#[Deprecated]
public function setAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end, string $amount): AvailableBudget
{
/** @var null|AvailableBudget */

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Budget;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\AvailableBudget;
@@ -66,9 +67,7 @@ interface AvailableBudgetRepositoryInterface
*/
public function get(?Carbon $start = null, ?Carbon $end = null): Collection;
/**
* @deprecated
*/
#[Deprecated]
public function getAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end): string;
public function getAvailableBudgetWithCurrency(Carbon $start, Carbon $end): array;
@@ -90,9 +89,7 @@ interface AvailableBudgetRepositoryInterface
*/
public function getByCurrencyDate(Carbon $start, Carbon $end, TransactionCurrency $currency): ?AvailableBudget;
/**
* @deprecated
*/
#[Deprecated]
public function setAvailableBudget(TransactionCurrency $currency, Carbon $start, Carbon $end, string $amount): AvailableBudget;
public function store(array $data): ?AvailableBudget;

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Budget;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\TransactionCurrency;
@@ -44,9 +45,7 @@ use Illuminate\Support\Collection;
*/
interface NoBudgetRepositoryInterface
{
/**
* @deprecated
*/
#[Deprecated]
public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array;
public function sumExpenses(Carbon $start, Carbon $end, ?Collection $accounts = null, ?TransactionCurrency $currency = null): array;

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Budget;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
@@ -74,9 +75,8 @@ class OperationsRepository implements OperationsRepositoryInterface, UserGroupIn
/**
* This method is being used to generate the budget overview in the year/multi-year report. Its used
* in both the year/multi-year budget overview AND in the accompanying chart.
*
* @deprecated
*/
#[Deprecated]
public function getBudgetPeriodReport(Collection $budgets, Collection $accounts, Carbon $start, Carbon $end): array
{
$carbonFormat = app('navigation')->preferredCarbonFormat($start, $end);

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Repositories\Budget;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Models\Budget;
@@ -51,9 +52,7 @@ interface OperationsRepositoryInterface
*/
public function budgetedPerDay(Budget $budget): string;
/**
* @deprecated
*/
#[Deprecated]
public function getBudgetPeriodReport(Collection $budgets, Collection $accounts, Carbon $start, Carbon $end): array;
/**

View File

@@ -444,7 +444,7 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface, UserGroupInte
{
$piggyBank->piggyBankEvents()->delete();
foreach ($piggyBank->accounts as $account) {
if (0 !== bccomp('0', $account->pivot->current_amount)) {
if (0 !== bccomp('0', (string) $account->pivot->current_amount)) {
event(new ChangedAmount($piggyBank, $account->pivot->current_amount, null, null));
}
}

View File

@@ -443,7 +443,7 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface,
/** @var Transaction $transaction */
foreach ($journal->transactions as $transaction) {
if (-1 === bccomp('0', (string)$transaction->amount)) {
$sum = bcadd($sum, $transaction->amount);
$sum = bcadd($sum, (string) $transaction->amount);
$names = sprintf('%s%s', $names, $transaction->account->name);
}
}

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Services\Internal\Support;
use Deprecated;
use Carbon\Carbon;
use FireflyIII\Enums\AccountTypeEnum;
use FireflyIII\Exceptions\DuplicateTransactionException;
@@ -193,8 +194,8 @@ trait AccountServiceTrait
/**
* @throws FireflyException
* *
* @deprecated
*/
#[Deprecated]
protected function createOBGroup(Account $account, array $data): TransactionGroup
{
app('log')->debug('Now going to create an OB group.');

View File

@@ -825,7 +825,13 @@ class JournalUpdateService
public function isCompareHashChanged(): bool
{
Log::debug(sprintf('Now in %s', __METHOD__));
$compareHash = $this->transactionGroupRepository->getCompareHash($this->transactionGroup);
$compareHash = hash('sha256', sprintf('%s', Carbon::now()->getTimestamp()));
if (!$this->transactionGroup instanceof TransactionGroup) {
$compareHash = $this->transactionGroupRepository->getCompareHash($this->transactionJournal->transactionGroup);
}
if ($this->transactionGroup instanceof TransactionGroup) {
$this->transactionGroupRepository->getCompareHash($this->transactionGroup);
}
Log::debug(sprintf('Compare hash is "%s".', $compareHash));
Log::debug(sprintf('Start compare hash is "%s".', $this->startCompareHash));

View File

@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace FireflyIII\Support;
use Deprecated;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency;
@@ -195,25 +196,19 @@ class Amount
return $user->currencies()->orderBy('code', 'ASC')->get();
}
/**
* @deprecated
*/
#[Deprecated]
public function getDefaultCurrency(): TransactionCurrency
{
return $this->getNativeCurrency();
}
/**
* @deprecated use getDefaultCurrencyByUserGroup instead
*/
#[Deprecated(message: 'use getDefaultCurrencyByUserGroup instead')]
public function getDefaultCurrencyByUser(User $user): TransactionCurrency
{
return $this->getDefaultCurrencyByUserGroup($user->userGroup);
}
/**
* @deprecated
*/
#[Deprecated]
public function getDefaultCurrencyByUserGroup(UserGroup $userGroup): TransactionCurrency
{
return $this->getNativeCurrencyByUserGroup($userGroup);

View File

@@ -54,7 +54,7 @@ class TransactionGroupEnrichment implements EnrichmentInterface
private array $notes; // @phpstan-ignore-line
private array $tags;
private User $user;
private TransactionCurrency $nativeCurrency;
private readonly TransactionCurrency $nativeCurrency;
private UserGroup $userGroup;
public function __construct()

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII;
use Deprecated;
use FireflyIII\Enums\UserRoleEnum;
use FireflyIII\Events\RequestedNewPassword;
use FireflyIII\Exceptions\FireflyException;
@@ -188,9 +189,8 @@ class User extends Authenticatable
* Get the models LDAP domain.
*
* @return string
*
* @deprecated
*/
#[Deprecated]
public function getLdapDomain()
{
return $this->{$this->getLdapDomainColumn()};
@@ -200,9 +200,8 @@ class User extends Authenticatable
* Get the database column name of the domain.
*
* @return string
*
* @deprecated
*/
#[Deprecated]
public function getLdapDomainColumn()
{
return 'domain';
@@ -212,9 +211,8 @@ class User extends Authenticatable
* Get the models LDAP GUID.
*
* @return string
*
* @deprecated
*/
#[Deprecated]
public function getLdapGuid()
{
return $this->{$this->getLdapGuidColumn()};
@@ -224,9 +222,8 @@ class User extends Authenticatable
* Get the models LDAP GUID database column name.
*
* @return string
*
* @deprecated
*/
#[Deprecated]
public function getLdapGuidColumn()
{
return 'objectguid';
@@ -468,9 +465,8 @@ class User extends Authenticatable
* Set the models LDAP domain.
*
* @param string $domain
*
* @deprecated
*/
#[Deprecated]
public function setLdapDomain($domain): void
{
$this->{$this->getLdapDomainColumn()} = $domain;
@@ -480,9 +476,8 @@ class User extends Authenticatable
* Set the models LDAP GUID.
*
* @param string $guid
*
* @deprecated
*/
#[Deprecated]
public function setLdapGuid($guid): void
{
$this->{$this->getLdapGuidColumn()} = $guid;

36
composer.lock generated
View File

@@ -939,16 +939,16 @@
},
{
"name": "filp/whoops",
"version": "2.18.2",
"version": "2.18.3",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
"reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3"
"reference": "59a123a3d459c5a23055802237cb317f609867e5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/89dabca1490bc77dbcab41c2b20968c7e44bf7c3",
"reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3",
"url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5",
"reference": "59a123a3d459c5a23055802237cb317f609867e5",
"shasum": ""
},
"require": {
@@ -998,7 +998,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
"source": "https://github.com/filp/whoops/tree/2.18.2"
"source": "https://github.com/filp/whoops/tree/2.18.3"
},
"funding": [
{
@@ -1006,7 +1006,7 @@
"type": "github"
}
],
"time": "2025-06-11T20:42:19+00:00"
"time": "2025-06-16T00:02:10+00:00"
},
{
"name": "firebase/php-jwt",
@@ -4805,16 +4805,16 @@
},
{
"name": "phpseclib/phpseclib",
"version": "3.0.43",
"version": "3.0.44",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
"reference": "709ec107af3cb2f385b9617be72af8cf62441d02"
"reference": "1d0b5e7e1434678411787c5a0535e68907cf82d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/709ec107af3cb2f385b9617be72af8cf62441d02",
"reference": "709ec107af3cb2f385b9617be72af8cf62441d02",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/1d0b5e7e1434678411787c5a0535e68907cf82d9",
"reference": "1d0b5e7e1434678411787c5a0535e68907cf82d9",
"shasum": ""
},
"require": {
@@ -4895,7 +4895,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.43"
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.44"
},
"funding": [
{
@@ -4911,7 +4911,7 @@
"type": "tidelift"
}
],
"time": "2024-12-14T21:12:59+00:00"
"time": "2025-06-15T09:59:26+00:00"
},
{
"name": "pragmarx/google2fa",
@@ -11550,16 +11550,16 @@
},
{
"name": "phpunit/phpunit",
"version": "12.2.1",
"version": "12.2.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "5f09fda04e7caea93cff50b4e90319184f3e6ee3"
"reference": "19e25c2da3f8071a683ee1e445b0e24bba25de61"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5f09fda04e7caea93cff50b4e90319184f3e6ee3",
"reference": "5f09fda04e7caea93cff50b4e90319184f3e6ee3",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/19e25c2da3f8071a683ee1e445b0e24bba25de61",
"reference": "19e25c2da3f8071a683ee1e445b0e24bba25de61",
"shasum": ""
},
"require": {
@@ -11627,7 +11627,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.2.1"
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.2.2"
},
"funding": [
{
@@ -11651,7 +11651,7 @@
"type": "tidelift"
}
],
"time": "2025-06-07T05:17:47+00:00"
"time": "2025-06-13T05:49:28+00:00"
},
{
"name": "rector/rector",

View File

@@ -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-12',
'version' => 'develop/2025-06-16',
'api_version' => '2.1.0', // field is no longer used.
'db_version' => 25,

24
package-lock.json generated
View File

@@ -3869,9 +3869,9 @@
}
},
"node_modules/axios": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
"integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz",
"integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4417,9 +4417,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001722",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001722.tgz",
"integrity": "sha512-DCQHBBZtiK6JVkAGw7drvAMK0Q0POD/xZvEmDp6baiMMP6QXXk9HpD6mNYBZWhOPG6LvIDb82ITqtWjhDckHCA==",
"version": "1.0.30001723",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz",
"integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==",
"dev": true,
"funding": [
{
@@ -4465,9 +4465,9 @@
}
},
"node_modules/chart.js": {
"version": "4.4.9",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.9.tgz",
"integrity": "sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==",
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz",
"integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==",
"license": "MIT",
"dependencies": {
"@kurkle/color": "^0.3.0"
@@ -5632,9 +5632,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.166",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.166.tgz",
"integrity": "sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==",
"version": "1.5.167",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz",
"integrity": "sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ==",
"dev": true,
"license": "ISC"
},

View File

@@ -31,7 +31,7 @@
"apply_rules_checkbox": "Apply rules",
"fire_webhooks_checkbox": "Fire webhooks",
"no_budget_pointer": "Hen\u00fcz b\u00fct\u00e7eniz yok gibi g\u00f6r\u00fcn\u00fcyor. <a href=\"budgets\">b\u00fct\u00e7eler<\/a> sayfas\u0131nda biraz olu\u015fturmal\u0131s\u0131n\u0131z. B\u00fct\u00e7eler, giderleri takip etmenize yard\u0131mc\u0131 olabilir.",
"no_bill_pointer": "You seem to have no subscription yet. You should create some on the <a href=\"subscriptions\">subscription<\/a>-page. Subscriptions can help you keep track of expenses.",
"no_bill_pointer": "Hen\u00fcz aboneli\u011finiz yok gibi g\u00f6r\u00fcn\u00fcyor. <a href=\"subscriptions\">Abonelik<\/a> sayfas\u0131nda bir abonelik olu\u015fturmal\u0131s\u0131n\u0131z. Abonelikler, harcamalar\u0131n\u0131z\u0131 takip etmenize yard\u0131mc\u0131 olabilir.",
"source_account": "Kaynak hesap",
"hidden_fields_preferences": "You can enable more transaction options in your <a href=\"preferences\">preferences<\/a>.",
"destination_account": "Hedef hesap",

View File

@@ -369,9 +369,7 @@
{% endif %}
{% endfor %}
{% for budgetLimit in budget.budgeted %}
D
{% if null == budget.spent[budgetLimit.currency_id] %}
E
<span class="left_span" data-currency="{{ spentInfo.currency_id }}" data-limit="{{ budgetLimit.id }}"
data-value="{{ spentInfo.spent + budgetLimit.amount }}" class="amount_left">
{{ formatAmountBySymbol(budgetLimit.amount, budgetLimit.currency_symbol, budgetLimit.currency_decimal_places) }}