Compare commits

...

15 Commits

Author SHA1 Message Date
github-actions[bot]
b0b2e5b752 Merge pull request #11411 from firefly-iii/release-1766901579
🤖 Automatically merge the PR into the develop branch.
2025-12-28 06:59:46 +01:00
JC5
ff3a935e9d 🤖 Auto commit for release 'develop' on 2025-12-28 2025-12-28 06:59:39 +01:00
James Cole
f0e2f09da7 Fix some end of period stuff. 2025-12-28 06:54:03 +01:00
github-actions[bot]
f3fbebb9a4 Merge pull request #11409 from firefly-iii/release-1766836192
🤖 Automatically merge the PR into the develop branch.
2025-12-27 12:49:59 +01:00
JC5
6e6e42dab6 🤖 Auto commit for release 'develop' on 2025-12-27 2025-12-27 12:49:53 +01:00
James Cole
d9efd63fad Add debug details. 2025-12-27 12:45:46 +01:00
github-actions[bot]
bc273ada39 Merge pull request #11406 from firefly-iii/release-1766776026
🤖 Automatically merge the PR into the develop branch.
2025-12-26 20:07:14 +01:00
JC5
75c76bb6dd 🤖 Auto commit for release 'develop' on 2025-12-26 2025-12-26 20:07:06 +01:00
James Cole
4d2dd1d8f7 Fix view of running balance column 2025-12-26 20:02:09 +01:00
James Cole
456e73ac16 Fix #11403 2025-12-26 07:09:04 +01:00
James Cole
86f1d8a1bc Fix ALE amount logging. 2025-12-24 07:45:03 +01:00
James Cole
7dac164556 Remove maxlength 2025-12-22 15:39:41 +01:00
James Cole
532df54f10 Merge pull request #11394 from firefly-iii/dependabot/composer/develop/mailersend/laravel-driver-2.12.0 2025-12-22 05:20:33 +01:00
mergify[bot]
daa76d01ca Merge branch 'develop' into dependabot/composer/develop/mailersend/laravel-driver-2.12.0 2025-12-22 03:37:04 +00:00
dependabot[bot]
6b7aed7658 Bump mailersend/laravel-driver from 2.9.1 to 2.12.0
Bumps [mailersend/laravel-driver](https://github.com/mailersend/mailersend-laravel-driver) from 2.9.1 to 2.12.0.
- [Release notes](https://github.com/mailersend/mailersend-laravel-driver/releases)
- [Commits](https://github.com/mailersend/mailersend-laravel-driver/compare/v2.9.1...v2.12.0)

---
updated-dependencies:
- dependency-name: mailersend/laravel-driver
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 03:01:04 +00:00
19 changed files with 243 additions and 173 deletions

View File

@@ -731,16 +731,16 @@
}, },
{ {
"name": "react/child-process", "name": "react/child-process",
"version": "v0.6.6", "version": "v0.6.7",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/reactphp/child-process.git", "url": "https://github.com/reactphp/child-process.git",
"reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", "url": "https://api.github.com/repos/reactphp/child-process/zipball/970f0e71945556422ee4570ccbabaedc3cf04ad3",
"reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -794,7 +794,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/reactphp/child-process/issues", "issues": "https://github.com/reactphp/child-process/issues",
"source": "https://github.com/reactphp/child-process/tree/v0.6.6" "source": "https://github.com/reactphp/child-process/tree/v0.6.7"
}, },
"funding": [ "funding": [
{ {
@@ -802,7 +802,7 @@
"type": "open_collective" "type": "open_collective"
} }
], ],
"time": "2025-01-01T16:37:48+00:00" "time": "2025-12-23T15:25:20+00:00"
}, },
{ {
"name": "react/dns", "name": "react/dns",

View File

@@ -28,10 +28,10 @@ use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Jobs\SendWebhookMessage; use FireflyIII\Jobs\SendWebhookMessage;
use FireflyIII\Models\Webhook; use FireflyIII\Models\Webhook;
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface; use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
use FireflyIII\Support\Facades\FireflyConfig;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use FireflyIII\Support\Facades\FireflyConfig;
/** /**
* Class SubmitController * Class SubmitController

View File

@@ -84,7 +84,7 @@ class CorrectsAmounts extends Command
/** @var AccountRepositoryInterface $repository */ /** @var AccountRepositoryInterface $repository */
$repository = app(AccountRepositoryInterface::class); $repository = app(AccountRepositoryInterface::class);
$type = TransactionType::where('type', TransactionTypeEnum::TRANSFER->value)->first(); $type = TransactionType::where('type', TransactionTypeEnum::TRANSFER->value)->first();
$journals = TransactionJournal::where('transaction_type_id', $type->id)->get(); $journals = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')->whereNotNull('transactions.foreign_amount')->where('transaction_journals.transaction_type_id', $type->id)->distinct()->get(['transaction_journals.*']);
/** @var TransactionJournal $journal */ /** @var TransactionJournal $journal */
foreach ($journals as $journal) { foreach ($journals as $journal) {
@@ -93,7 +93,7 @@ class CorrectsAmounts extends Command
$valid = $this->validateJournal($journal); $valid = $this->validateJournal($journal);
if (false === $valid) { if (false === $valid) {
Log::debug(sprintf('Journal #%d does not need to be fixed or is invalid (see previous messages)', $journal->id)); // Log::debug(sprintf('Journal #%d does not need to be fixed or is invalid (see previous messages)', $journal->id));
continue; continue;
} }
@@ -298,7 +298,7 @@ class CorrectsAmounts extends Command
return false; return false;
} }
if (null === $source->foreign_currency_id || null === $destination->foreign_currency_id) { if (null === $source->foreign_currency_id || null === $destination->foreign_currency_id) {
Log::debug('No foreign currency information is present, can safely continue with other transactions.'); // Log::debug('No foreign currency information is present, can safely continue with other transactions.');
return false; return false;
} }

View File

@@ -652,7 +652,7 @@ class JournalUpdateService
} }
$value = $this->data['amount'] ?? ''; $value = $this->data['amount'] ?? '';
Log::debug(sprintf('Amount is now "%s"', $value)); Log::debug(sprintf('[a] Amount is now "%s"', $value));
try { try {
$amount = $this->getAmount($value); $amount = $this->getAmount($value);
@@ -661,15 +661,18 @@ class JournalUpdateService
return; return;
} }
Log::debug(sprintf('[b] Amount is now "%s"', $value));
$origSourceTransaction = $this->getSourceTransaction(); $origSourceTransaction = $this->getSourceTransaction();
$destTransaction = $this->getDestinationTransaction();
$originalSourceAmount = $origSourceTransaction->amount;
$originalDestAmount = $destTransaction->amount;
$origSourceTransaction->amount = Steam::negative($amount); $origSourceTransaction->amount = Steam::negative($amount);
$origSourceTransaction->balance_dirty = true; $origSourceTransaction->balance_dirty = true;
$origSourceTransaction->save();
$destTransaction = $this->getDestinationTransaction();
$originalAmount = $destTransaction->amount;
$destTransaction->amount = Steam::positive($amount); $destTransaction->amount = Steam::positive($amount);
$destTransaction->balance_dirty = true; $destTransaction->balance_dirty = true;
$destTransaction->save(); $destTransaction->save();
$origSourceTransaction->save();
// refresh transactions. // refresh transactions.
$this->sourceTransaction->refresh(); $this->sourceTransaction->refresh();
$this->destinationTransaction->refresh(); $this->destinationTransaction->refresh();
@@ -679,28 +682,51 @@ class JournalUpdateService
if (null === $group) { if (null === $group) {
$group = $this->transactionJournal?->transactionGroup; $group = $this->transactionJournal?->transactionGroup;
} }
if (null === $group) { if (null === $group || null === $this->transactionJournal) {
return; return;
} }
if (0 === bccomp($origSourceTransaction->amount, $originalSourceAmount)) {
Log::debug('Amount was not actually changed, return.');
// should not return in NULL but seems to do. return;
if (0 !== bccomp($originalAmount, $value)) {
event(new TriggeredAuditLog(
$group->user,
$group,
'update_amount',
[
'currency_symbol' => $destTransaction->transactionCurrency->symbol,
'decimal_places' => $destTransaction->transactionCurrency->decimal_places,
'amount' => $originalAmount,
],
[
'currency_symbol' => $destTransaction->transactionCurrency->symbol,
'decimal_places' => $destTransaction->transactionCurrency->decimal_places,
'amount' => $value,
]
));
} }
Log::debug('Amount was changed.');
$transfer = TransactionTypeEnum::TRANSFER->value === $this->transactionJournal->transactionType->type;
$withdrawal = TransactionTypeEnum::WITHDRAWAL->value === $this->transactionJournal->transactionType->type;
$deposit = TransactionTypeEnum::DEPOSIT->value === $this->transactionJournal->transactionType->type;
$makePositive = $transfer || $deposit ? true : false;
// assume withdrawal, use the source for amount (negative), and destination for currency.
$originalAmount = $originalSourceAmount;
$recordCurrency = $destTransaction->transactionCurrency;
Log::debug(sprintf('Transaction is a %s, original amount is %s and currency is %s', $this->transactionJournal->transactionType->type, $originalAmount, $recordCurrency->code));
if ($withdrawal || $transfer) {
Log::debug('Use these values to record a changed withdrawal amount');
}
if (!$withdrawal && !$transfer) {
$originalAmount = $originalDestAmount;
$recordCurrency = $origSourceTransaction->transactionCurrency;
Log::debug('Use destination amount to record a changed withdrawal amount');
Log::debug(sprintf('Transaction is a %s, original amount now is %s and currency is now %s', $this->transactionJournal->transactionType->type, $originalAmount, $recordCurrency->code));
}
$originalAmount = $makePositive ? Steam::positive($originalAmount) : Steam::negative($originalAmount);
$value = $makePositive ? Steam::positive($value) : Steam::negative($value);
// should not return in NULL but seems to do.
event(new TriggeredAuditLog(
$group->user,
$group,
'update_amount',
[
'currency_symbol' => $recordCurrency->symbol,
'decimal_places' => $recordCurrency->decimal_places,
'amount' => $originalAmount,
],
[
'currency_symbol' => $recordCurrency->symbol,
'decimal_places' => $recordCurrency->decimal_places,
'amount' => $value,
]
));
} }
private function updateForeignAmount(): void private function updateForeignAmount(): void

View File

@@ -78,6 +78,8 @@ class AccountBalanceCalculator
private function getLatestBalance(int $accountId, int $currencyId, ?Carbon $notBefore): string private function getLatestBalance(int $accountId, int $currencyId, ?Carbon $notBefore): string
{ {
if (!$notBefore instanceof Carbon) { if (!$notBefore instanceof Carbon) {
Log::debug(sprintf('Start balance for account #%d and currency #%d is 0.', $accountId, $currencyId));
return '0'; return '0';
} }
Log::debug(sprintf('getLatestBalance: notBefore date is "%s", calculating', $notBefore->format('Y-m-d'))); Log::debug(sprintf('getLatestBalance: notBefore date is "%s", calculating', $notBefore->format('Y-m-d')));

View File

@@ -23,16 +23,16 @@ declare(strict_types=1);
namespace FireflyIII\Support; namespace FireflyIII\Support;
use FireflyIII\Support\Facades\Preferences;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Exceptions\IntervalException; use FireflyIII\Exceptions\IntervalException;
use FireflyIII\Helpers\Fiscal\FiscalHelperInterface; use FireflyIII\Helpers\Fiscal\FiscalHelperInterface;
use FireflyIII\Support\Calendar\Calculator; use FireflyIII\Support\Calendar\Calculator;
use FireflyIII\Support\Calendar\Periodicity; use FireflyIII\Support\Calendar\Periodicity;
use FireflyIII\Support\Facades\Preferences;
use FireflyIII\Support\Facades\Steam;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Throwable; use Throwable;
use FireflyIII\Support\Facades\Steam;
/** /**
* Class Navigation. * Class Navigation.
@@ -214,6 +214,11 @@ class Navigation
Log::debug('endOfPeriod() requests "YTD" + future, set it to "1Y" instead.'); Log::debug('endOfPeriod() requests "YTD" + future, set it to "1Y" instead.');
$repeatFreq = '1Y'; $repeatFreq = '1Y';
} }
if ('QTD' === $repeatFreq && $end->isFuture()) {
// fall back to a yearly schedule if the requested period is YTD.
Log::debug('endOfPeriod() requests "YTD" + future, set it to "3M" instead.');
$repeatFreq = '3M';
}
$functionMap = [ $functionMap = [
'1D' => 'endOfDay', '1D' => 'endOfDay',
@@ -295,7 +300,25 @@ class Navigation
if (null !== $result) { if (null !== $result) {
// add sanity check. // add sanity check.
if ($currentEnd->lt($end)) { if ($currentEnd->lt($end)) {
throw new FireflyException(sprintf('[d] endOfPeriod(%s, %s) failed, because it resulted in %s.', $end->toW3cString(), $repeatFreq, $currentEnd->toW3cString())); switch ($repeatFreq) {
case 'QTD':
$currentEnd->endOfQuarter()->setMilli(0);
break;
case 'MTD':
$currentEnd->endOfMonth()->setMilli(0);
break;
case 'YTD':
$currentEnd->endOfYear()->setMilli(0);
break;
}
if ($currentEnd->lt($end)) {
throw new FireflyException(sprintf('[d] endOfPeriod(%s, %s) failed, because it resulted in %s.', $end->toW3cString(), $repeatFreq, $currentEnd->toW3cString()));
}
} }
return $result; return $result;

View File

@@ -28,6 +28,7 @@ use FireflyIII\Models\Account;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface;
use FireflyIII\Support\Facades\Amount; use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Facades\FireflyConfig;
use FireflyIII\Support\Facades\Steam; use FireflyIII\Support\Facades\Steam;
use FireflyIII\Support\Search\OperatorQuerySearch; use FireflyIII\Support\Search\OperatorQuerySearch;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -72,6 +73,7 @@ class General extends AbstractExtension
$this->hasRole(), $this->hasRole(),
$this->getRootSearchOperator(), $this->getRootSearchOperator(),
$this->carbonize(), $this->carbonize(),
$this->fireflyIIIConfig(),
]; ];
} }
@@ -393,4 +395,14 @@ class General extends AbstractExtension
static fn (string $str): string => date($str) static fn (string $str): string => date($str)
); );
} }
private function fireflyIIIConfig()
{
return new TwigFunction(
'fireflyiiiconfig',
static function (string $string, mixed $default): mixed {
return FireflyConfig::get($string, $default)->data;
}
);
}
} }

View File

@@ -96,7 +96,7 @@
"league/commonmark": "^2", "league/commonmark": "^2",
"league/csv": "^9.10", "league/csv": "^9.10",
"league/fractal": "0.*", "league/fractal": "0.*",
"mailersend/laravel-driver": "^2.7", "mailersend/laravel-driver": "^2.12",
"nunomaduro/collision": "^8", "nunomaduro/collision": "^8",
"pragmarx/google2fa": "^8.0", "pragmarx/google2fa": "^8.0",
"predis/predis": "^3", "predis/predis": "^3",

199
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "8fff223d32252d22c0e6028d19a76756", "content-hash": "434b4c996dad2af3b38326bd81c57534",
"packages": [ "packages": [
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@@ -1182,24 +1182,24 @@
}, },
{ {
"name": "graham-campbell/result-type", "name": "graham-campbell/result-type",
"version": "v1.1.3", "version": "v1.1.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git", "url": "https://github.com/GrahamCampbell/Result-Type.git",
"reference": "3ba905c11371512af9d9bdd27d99b782216b6945" "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b",
"reference": "3ba905c11371512af9d9bdd27d99b782216b6945", "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.2.5 || ^8.0", "php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.9.3" "phpoption/phpoption": "^1.9.5"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@@ -1228,7 +1228,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues", "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
"source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4"
}, },
"funding": [ "funding": [
{ {
@@ -1240,7 +1240,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-07-20T21:45:45+00:00" "time": "2025-12-27T19:43:20+00:00"
}, },
{ {
"name": "guzzlehttp/guzzle", "name": "guzzlehttp/guzzle",
@@ -1878,16 +1878,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v12.43.1", "version": "v12.44.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "195b893593a9298edee177c0844132ebaa02102f" "reference": "592bbf1c036042958332eb98e3e8131b29102f33"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/195b893593a9298edee177c0844132ebaa02102f", "url": "https://api.github.com/repos/laravel/framework/zipball/592bbf1c036042958332eb98e3e8131b29102f33",
"reference": "195b893593a9298edee177c0844132ebaa02102f", "reference": "592bbf1c036042958332eb98e3e8131b29102f33",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2096,7 +2096,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2025-12-16T18:53:08+00:00" "time": "2025-12-23T15:29:43+00:00"
}, },
{ {
"name": "laravel/passport", "name": "laravel/passport",
@@ -2813,16 +2813,16 @@
}, },
{ {
"name": "league/csv", "name": "league/csv",
"version": "9.27.1", "version": "9.28.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/csv.git", "url": "https://github.com/thephpleague/csv.git",
"reference": "26de738b8fccf785397d05ee2fc07b6cd8749797" "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/csv/zipball/26de738b8fccf785397d05ee2fc07b6cd8749797", "url": "https://api.github.com/repos/thephpleague/csv/zipball/6582ace29ae09ba5b07049d40ea13eb19c8b5073",
"reference": "26de738b8fccf785397d05ee2fc07b6cd8749797", "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -2832,14 +2832,14 @@
"require-dev": { "require-dev": {
"ext-dom": "*", "ext-dom": "*",
"ext-xdebug": "*", "ext-xdebug": "*",
"friendsofphp/php-cs-fixer": "^3.75.0", "friendsofphp/php-cs-fixer": "^3.92.3",
"phpbench/phpbench": "^1.4.1", "phpbench/phpbench": "^1.4.3",
"phpstan/phpstan": "^1.12.27", "phpstan/phpstan": "^1.12.32",
"phpstan/phpstan-deprecation-rules": "^1.2.1", "phpstan/phpstan-deprecation-rules": "^1.2.1",
"phpstan/phpstan-phpunit": "^1.4.2", "phpstan/phpstan-phpunit": "^1.4.2",
"phpstan/phpstan-strict-rules": "^1.6.2", "phpstan/phpstan-strict-rules": "^1.6.2",
"phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.3.6", "phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.5.4",
"symfony/var-dumper": "^6.4.8 || ^7.3.0" "symfony/var-dumper": "^6.4.8 || ^7.4.0 || ^8.0"
}, },
"suggest": { "suggest": {
"ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes",
@@ -2900,7 +2900,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-10-25T08:35:20+00:00" "time": "2025-12-27T15:18:42+00:00"
}, },
{ {
"name": "league/event", "name": "league/event",
@@ -3486,22 +3486,22 @@
}, },
{ {
"name": "mailersend/laravel-driver", "name": "mailersend/laravel-driver",
"version": "v2.9.1", "version": "v2.12.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mailersend/mailersend-laravel-driver.git", "url": "https://github.com/mailersend/mailersend-laravel-driver.git",
"reference": "87fd5ab76808bbaac9221be0d306baef13e98725" "reference": "15e1ec41e29e65d3ca226929c65804190aaa93eb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/mailersend/mailersend-laravel-driver/zipball/87fd5ab76808bbaac9221be0d306baef13e98725", "url": "https://api.github.com/repos/mailersend/mailersend-laravel-driver/zipball/15e1ec41e29e65d3ca226929c65804190aaa93eb",
"reference": "87fd5ab76808bbaac9221be0d306baef13e98725", "reference": "15e1ec41e29e65d3ca226929c65804190aaa93eb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"illuminate/support": "^9.0 || ^10.0 || ^11.0 || ^12.0", "illuminate/support": "^9.0 || ^10.0 || ^11.0 || ^12.0",
"mailersend/mailersend": "^0.31.0", "mailersend/mailersend": "^0.35.0",
"nyholm/psr7": "^1.5", "nyholm/psr7": "^1.5",
"php": ">=8.0", "php": ">=8.0",
"php-http/guzzle7-adapter": "^1.0", "php-http/guzzle7-adapter": "^1.0",
@@ -3549,29 +3549,28 @@
], ],
"support": { "support": {
"issues": "https://github.com/mailersend/mailersend-laravel-driver/issues", "issues": "https://github.com/mailersend/mailersend-laravel-driver/issues",
"source": "https://github.com/mailersend/mailersend-laravel-driver/tree/v2.9.1" "source": "https://github.com/mailersend/mailersend-laravel-driver/tree/v2.12.0"
}, },
"time": "2025-04-09T09:33:07+00:00" "time": "2025-10-28T14:59:16+00:00"
}, },
{ {
"name": "mailersend/mailersend", "name": "mailersend/mailersend",
"version": "v0.31.0", "version": "v0.35.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/mailersend/mailersend-php.git", "url": "https://github.com/mailersend/mailersend-php.git",
"reference": "513ff83ee768526055ad52987cde401ea7218c67" "reference": "f1696cf9e727e9503fbc5882d2a111bd966ad276"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/mailersend/mailersend-php/zipball/513ff83ee768526055ad52987cde401ea7218c67", "url": "https://api.github.com/repos/mailersend/mailersend-php/zipball/f1696cf9e727e9503fbc5882d2a111bd966ad276",
"reference": "513ff83ee768526055ad52987cde401ea7218c67", "reference": "f1696cf9e727e9503fbc5882d2a111bd966ad276",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"beberlei/assert": "^3.2", "beberlei/assert": "^3.2",
"ext-json": "*", "ext-json": "*",
"illuminate/collections": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0", "php": "^7.4 || ^8.0 <8.5",
"php": "^7.4|^8.0",
"php-http/client-common": "^2.2", "php-http/client-common": "^2.2",
"php-http/discovery": "^1.9", "php-http/discovery": "^1.9",
"php-http/httplug": "^2.1", "php-http/httplug": "^2.1",
@@ -3616,9 +3615,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/mailersend/mailersend-php/issues", "issues": "https://github.com/mailersend/mailersend-php/issues",
"source": "https://github.com/mailersend/mailersend-php/tree/v0.31.0" "source": "https://github.com/mailersend/mailersend-php/tree/v0.35.0"
}, },
"time": "2025-04-03T12:16:11+00:00" "time": "2025-10-28T13:11:43+00:00"
}, },
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
@@ -3895,16 +3894,16 @@
}, },
{ {
"name": "nette/utils", "name": "nette/utils",
"version": "v4.1.0", "version": "v4.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nette/utils.git", "url": "https://github.com/nette/utils.git",
"reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72",
"reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -3978,9 +3977,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nette/utils/issues", "issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v4.1.0" "source": "https://github.com/nette/utils/tree/v4.1.1"
}, },
"time": "2025-12-01T17:49:23+00:00" "time": "2025-12-22T12:14:32+00:00"
}, },
{ {
"name": "nunomaduro/collision", "name": "nunomaduro/collision",
@@ -4750,16 +4749,16 @@
}, },
{ {
"name": "phpoption/phpoption", "name": "phpoption/phpoption",
"version": "1.9.4", "version": "1.9.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/schmittjoh/php-option.git", "url": "https://github.com/schmittjoh/php-option.git",
"reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" "reference": "75365b91986c2405cf5e1e012c5595cd487a98be"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be",
"reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", "reference": "75365b91986c2405cf5e1e012c5595cd487a98be",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -4809,7 +4808,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/schmittjoh/php-option/issues", "issues": "https://github.com/schmittjoh/php-option/issues",
"source": "https://github.com/schmittjoh/php-option/tree/1.9.4" "source": "https://github.com/schmittjoh/php-option/tree/1.9.5"
}, },
"funding": [ "funding": [
{ {
@@ -4821,7 +4820,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-21T11:53:16+00:00" "time": "2025-12-27T19:41:33+00:00"
}, },
{ {
"name": "phpseclib/phpseclib", "name": "phpseclib/phpseclib",
@@ -6205,16 +6204,16 @@
}, },
{ {
"name": "spatie/laravel-html", "name": "spatie/laravel-html",
"version": "3.12.1", "version": "3.12.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/spatie/laravel-html.git", "url": "https://github.com/spatie/laravel-html.git",
"reference": "72af3cad24d153c230ff6e1da9fa3b7b702834c9" "reference": "dd4a946ea9e2d7af8945fdfcf282663c69fac26a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-html/zipball/72af3cad24d153c230ff6e1da9fa3b7b702834c9", "url": "https://api.github.com/repos/spatie/laravel-html/zipball/dd4a946ea9e2d7af8945fdfcf282663c69fac26a",
"reference": "72af3cad24d153c230ff6e1da9fa3b7b702834c9", "reference": "dd4a946ea9e2d7af8945fdfcf282663c69fac26a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -6271,7 +6270,7 @@
"spatie" "spatie"
], ],
"support": { "support": {
"source": "https://github.com/spatie/laravel-html/tree/3.12.1" "source": "https://github.com/spatie/laravel-html/tree/3.12.3"
}, },
"funding": [ "funding": [
{ {
@@ -6279,7 +6278,7 @@
"type": "custom" "type": "custom"
} }
], ],
"time": "2025-10-02T07:26:38+00:00" "time": "2025-12-22T12:05:50+00:00"
}, },
{ {
"name": "spatie/laravel-ignition", "name": "spatie/laravel-ignition",
@@ -9919,26 +9918,26 @@
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
"version": "v5.6.2", "version": "v5.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/vlucas/phpdotenv.git", "url": "https://github.com/vlucas/phpdotenv.git",
"reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" "reference": "955e7815d677a3eaa7075231212f2110983adecc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc",
"reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", "reference": "955e7815d677a3eaa7075231212f2110983adecc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-pcre": "*", "ext-pcre": "*",
"graham-campbell/result-type": "^1.1.3", "graham-campbell/result-type": "^1.1.4",
"php": "^7.2.5 || ^8.0", "php": "^7.2.5 || ^8.0",
"phpoption/phpoption": "^1.9.3", "phpoption/phpoption": "^1.9.5",
"symfony/polyfill-ctype": "^1.24", "symfony/polyfill-ctype": "^1.26",
"symfony/polyfill-mbstring": "^1.24", "symfony/polyfill-mbstring": "^1.26",
"symfony/polyfill-php80": "^1.24" "symfony/polyfill-php80": "^1.26"
}, },
"require-dev": { "require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2", "bamarni/composer-bin-plugin": "^1.8.2",
@@ -9987,7 +9986,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/vlucas/phpdotenv/issues", "issues": "https://github.com/vlucas/phpdotenv/issues",
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3"
}, },
"funding": [ "funding": [
{ {
@@ -9999,7 +9998,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-04-30T23:37:27+00:00" "time": "2025-12-27T19:49:13+00:00"
}, },
{ {
"name": "voku/portable-ascii", "name": "voku/portable-ascii",
@@ -10079,16 +10078,16 @@
"packages-dev": [ "packages-dev": [
{ {
"name": "barryvdh/laravel-debugbar", "name": "barryvdh/laravel-debugbar",
"version": "v3.16.2", "version": "v3.16.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git", "url": "https://github.com/barryvdh/laravel-debugbar.git",
"reference": "730dbf8bf41f5691e026dd771e64dd54ad1b10b3" "reference": "c91e57ea113edd6526f5b8cd6b1c6ee02c67b28e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/730dbf8bf41f5691e026dd771e64dd54ad1b10b3", "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/c91e57ea113edd6526f5b8cd6b1c6ee02c67b28e",
"reference": "730dbf8bf41f5691e026dd771e64dd54ad1b10b3", "reference": "c91e57ea113edd6526f5b8cd6b1c6ee02c67b28e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -10097,7 +10096,7 @@
"illuminate/support": "^10|^11|^12", "illuminate/support": "^10|^11|^12",
"php": "^8.1", "php": "^8.1",
"php-debugbar/php-debugbar": "^2.2.4", "php-debugbar/php-debugbar": "^2.2.4",
"symfony/finder": "^6|^7" "symfony/finder": "^6|^7|^8"
}, },
"require-dev": { "require-dev": {
"mockery/mockery": "^1.3.3", "mockery/mockery": "^1.3.3",
@@ -10148,7 +10147,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/barryvdh/laravel-debugbar/issues", "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.16.2" "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.16.3"
}, },
"funding": [ "funding": [
{ {
@@ -10160,7 +10159,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-12-03T14:52:46+00:00" "time": "2025-12-23T17:37:00+00:00"
}, },
{ {
"name": "barryvdh/laravel-ide-helper", "name": "barryvdh/laravel-ide-helper",
@@ -10516,16 +10515,16 @@
}, },
{ {
"name": "driftingly/rector-laravel", "name": "driftingly/rector-laravel",
"version": "2.1.8", "version": "2.1.9",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/driftingly/rector-laravel.git", "url": "https://github.com/driftingly/rector-laravel.git",
"reference": "5c5f97354e562b6742b2b7989959061bde60fa71" "reference": "aee9d4a1d489e7ec484fc79f33137f8ee051b3f7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/driftingly/rector-laravel/zipball/5c5f97354e562b6742b2b7989959061bde60fa71", "url": "https://api.github.com/repos/driftingly/rector-laravel/zipball/aee9d4a1d489e7ec484fc79f33137f8ee051b3f7",
"reference": "5c5f97354e562b6742b2b7989959061bde60fa71", "reference": "aee9d4a1d489e7ec484fc79f33137f8ee051b3f7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -10546,9 +10545,9 @@
"description": "Rector upgrades rules for Laravel Framework", "description": "Rector upgrades rules for Laravel Framework",
"support": { "support": {
"issues": "https://github.com/driftingly/rector-laravel/issues", "issues": "https://github.com/driftingly/rector-laravel/issues",
"source": "https://github.com/driftingly/rector-laravel/tree/2.1.8" "source": "https://github.com/driftingly/rector-laravel/tree/2.1.9"
}, },
"time": "2025-12-17T15:29:24+00:00" "time": "2025-12-25T23:31:36+00:00"
}, },
{ {
"name": "fakerphp/faker", "name": "fakerphp/faker",
@@ -11181,16 +11180,16 @@
}, },
{ {
"name": "php-debugbar/php-debugbar", "name": "php-debugbar/php-debugbar",
"version": "v2.2.5", "version": "v2.2.6",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-debugbar/php-debugbar.git", "url": "https://github.com/php-debugbar/php-debugbar.git",
"reference": "c5dce08e98dd101c771e55949fd89124b216271d" "reference": "abb9fa3c5c8dbe7efe03ddba56782917481de3e8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/c5dce08e98dd101c771e55949fd89124b216271d", "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/abb9fa3c5c8dbe7efe03ddba56782917481de3e8",
"reference": "c5dce08e98dd101c771e55949fd89124b216271d", "reference": "abb9fa3c5c8dbe7efe03ddba56782917481de3e8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11249,9 +11248,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-debugbar/php-debugbar/issues", "issues": "https://github.com/php-debugbar/php-debugbar/issues",
"source": "https://github.com/php-debugbar/php-debugbar/tree/v2.2.5" "source": "https://github.com/php-debugbar/php-debugbar/tree/v2.2.6"
}, },
"time": "2025-12-21T08:50:08+00:00" "time": "2025-12-22T13:21:32+00:00"
}, },
{ {
"name": "phpstan/extension-installer", "name": "phpstan/extension-installer",
@@ -11451,16 +11450,16 @@
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "12.5.1", "version": "12.5.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "c467c59a4f6e04b942be422844e7a6352fa01b57" "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c467c59a4f6e04b942be422844e7a6352fa01b57", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4a9739b51cbcb355f6e95659612f92e282a7077b",
"reference": "c467c59a4f6e04b942be422844e7a6352fa01b57", "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11475,7 +11474,7 @@
"sebastian/environment": "^8.0.3", "sebastian/environment": "^8.0.3",
"sebastian/lines-of-code": "^4.0", "sebastian/lines-of-code": "^4.0",
"sebastian/version": "^6.0", "sebastian/version": "^6.0",
"theseer/tokenizer": "^2.0" "theseer/tokenizer": "^2.0.1"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^12.5.1" "phpunit/phpunit": "^12.5.1"
@@ -11516,7 +11515,7 @@
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.1" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.2"
}, },
"funding": [ "funding": [
{ {
@@ -11536,7 +11535,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-12-08T07:17:58+00:00" "time": "2025-12-24T07:03:04+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@@ -11890,16 +11889,16 @@
}, },
{ {
"name": "rector/rector", "name": "rector/rector",
"version": "2.2.14", "version": "2.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/rectorphp/rector.git", "url": "https://github.com/rectorphp/rector.git",
"reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d" "reference": "f7166355dcf47482f27be59169b0825995f51c7d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/6d56bb0e94d4df4f57a78610550ac76ab403657d", "url": "https://api.github.com/repos/rectorphp/rector/zipball/f7166355dcf47482f27be59169b0825995f51c7d",
"reference": "6d56bb0e94d4df4f57a78610550ac76ab403657d", "reference": "f7166355dcf47482f27be59169b0825995f51c7d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -11938,7 +11937,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/rectorphp/rector/issues", "issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.2.14" "source": "https://github.com/rectorphp/rector/tree/2.3.0"
}, },
"funding": [ "funding": [
{ {
@@ -11946,7 +11945,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-12-09T10:57:55+00:00" "time": "2025-12-25T22:00:18+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",

View File

@@ -75,11 +75,11 @@ return [
'webhooks' => true, 'webhooks' => true,
'handle_debts' => true, 'handle_debts' => true,
'expression_engine' => true, 'expression_engine' => true,
'running_balance_column' => env('USE_RUNNING_BALANCE', true), // this is only the default value, is not used. '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. // see cer.php for exchange rates feature flag.
], ],
'version' => 'develop/2025-12-22', 'version' => 'develop/2025-12-28',
'build_time' => 1766374469, 'build_time' => 1766901480,
'api_version' => '2.1.0', // field is no longer used. 'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used. 'db_version' => 28, // field is no longer used.

18
package-lock.json generated
View File

@@ -6183,9 +6183,9 @@
} }
}, },
"node_modules/fastq": { "node_modules/fastq": {
"version": "1.19.1", "version": "1.20.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
@@ -7082,9 +7082,9 @@
} }
}, },
"node_modules/i18next-chained-backend": { "node_modules/i18next-chained-backend": {
"version": "4.6.2", "version": "4.6.3",
"resolved": "https://registry.npmjs.org/i18next-chained-backend/-/i18next-chained-backend-4.6.2.tgz", "resolved": "https://registry.npmjs.org/i18next-chained-backend/-/i18next-chained-backend-4.6.3.tgz",
"integrity": "sha512-2P092fR+nAPQlGzPUoIIxbwo7PTBqQYgLxwv1XhSTQUAUoelLo5LkX+FqRxxSDg9WEAsrc8+2WL6mJtMGIa6WQ==", "integrity": "sha512-Yg4hAKg/98zRAMQs87vJSNevTzaPPrYF3Eb7Kpx+UEaaXLd3p69g7dulAL+hpmZQHeMQ/5gFqHVtdwva53mB0Q==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.23.2" "@babel/runtime": "^7.23.2"
@@ -11710,9 +11710,9 @@
} }
}, },
"node_modules/watchpack": { "node_modules/watchpack": {
"version": "2.4.4", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz",
"integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {

View File

@@ -2908,6 +2908,7 @@ return [
'placeholder' => '[Placeholder]', 'placeholder' => '[Placeholder]',
// audit log entries // audit log entries
'incomplete_ale' => 'Not all events are recorded as audit log entries.',
'audit_log_entries' => 'Audit log entries', 'audit_log_entries' => 'Audit log entries',
'ale_action_log_add' => 'Added :amount to piggy bank ":name"', 'ale_action_log_add' => 'Added :amount to piggy bank ":name"',
'ale_action_log_remove' => 'Removed :amount from piggy bank ":name"', 'ale_action_log_remove' => 'Removed :amount from piggy bank ":name"',

View File

@@ -1,16 +1,21 @@
<table class="table" aria-label="Table"> <table class="table" aria-label="Table">
<thead>
<tr>
<td colspan="3"><em>{{ 'incomplete_ale'|_ }}</em></td>
</tr>
</thead>
<tbody>
{% for logEntry in logEntries %} {% for logEntry in logEntries %}
<tr> <tr>
<th style="width:20%;" scope="row"> <th style="width:20%;" scope="row">
{# link to object: #} {# link to object: #}
{% if 'FireflyIII\\Models\\Rule' == logEntry.changer_type %} {% if 'FireflyIII\\Models\\Rule' == logEntry.changer_type %}
<a href="{{ route('rules.edit', [logEntry.changer_id] ) }}"> <a href="{{ route('rules.edit', [logEntry.changer_id] ) }}">
{% endif %} {% endif %}
{% if 'FireflyIII\\User' == logEntry.changer_type %} {% if 'FireflyIII\\User' == logEntry.changer_type %}
<a href="{{ route('profile.index') }}"> <a href="{{ route('profile.index') }}">
{% endif %} {% endif %}
{{ logEntry.changer_type|replace({"FireflyIII\\Models\\": ""})|replace({"FireflyIII\\": ""}) }} {{ logEntry.changer_type|replace({"FireflyIII\\Models\\": ""})|replace({"FireflyIII\\": ""}) }} #{{ logEntry.changer_id }}
#{{ logEntry.changer_id }}
</a> </a>
</th> </th>
<td style="width:30%;" title="{{ logEntry.created_at.isoFormat(dateTimeFormat) }}"> <td style="width:30%;" title="{{ logEntry.created_at.isoFormat(dateTimeFormat) }}">
@@ -103,4 +108,5 @@
</tr> </tr>
{% endfor %} {% endfor %}
</tbody>
</table> </table>

View File

@@ -33,7 +33,7 @@
<th class="hidden-xs">&nbsp;</th> <th class="hidden-xs">&nbsp;</th>
<th>{{ trans('list.description') }}</th> <th>{{ trans('list.description') }}</th>
<th>{{ trans('list.amount') }}</th> <th>{{ trans('list.amount') }}</th>
{% if FireflyConfig.get('use_running_balance', config('firefly.feature_flags.running_balance_column')) %} {% if fireflyiiiconfig('use_running_balance', true) %}
<th>{{ trans('list.running_balance') }}</th> <th>{{ trans('list.running_balance') }}</th>
{% endif %} {% endif %}
<th>{{ trans('list.date') }}</th> <th>{{ trans('list.date') }}</th>
@@ -266,14 +266,15 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
</td> </td>
{% if FireflyConfig.get('use_running_balance', config('firefly.feature_flags.running_balance_column')) %} {% if (fireflyiiiconfig('use_running_balance', true)) %}
<td> <td>
{# RUNNING BALANCE #}
{% if (null == transaction.balance_dirty or false == transaction.balance_dirty) and null != transaction.destination_balance_after and null != transaction.source_balance_after %} {% if (null == transaction.balance_dirty or false == transaction.balance_dirty) and null != transaction.destination_balance_after and null != transaction.source_balance_after %}
{% if transaction.transaction_type_type == 'Deposit' %} {% if transaction.transaction_type_type == 'Deposit' %}
{% if transaction.source_account_id == account.id %} {% if transaction.source_account_id == account.id %}
{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Deposit, source">{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% else %} {% else %}
{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Deposit, dest">{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% endif %} {% endif %}
{% elseif transaction.transaction_type_type == 'Withdrawal' %} {% elseif transaction.transaction_type_type == 'Withdrawal' %}
@@ -281,39 +282,39 @@
{% if 'Loan' == transaction.destination_account_type or 'Mortgage' == transaction.destination_account_type or 'Debt' == transaction.destination_account_type %} {% if 'Loan' == transaction.destination_account_type or 'Mortgage' == transaction.destination_account_type or 'Debt' == transaction.destination_account_type %}
{% if currency.id == transaction.currency_id %} {% if currency.id == transaction.currency_id %}
{% if account.id == transaction.source_account_id %} {% if account.id == transaction.source_account_id %}
{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Withdrawal, liab, source">{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% elseif account.id == transaction.destination_account_id %} {% elseif account.id == transaction.destination_account_id %}
{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Withdrawal, liab, dest">{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% else %} {% else %}
- -
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if currency.id == transaction.foreign_currency_id and null != transaction.destination_balance_after and null != transaction.destination_balance_after %} {% if currency.id == transaction.foreign_currency_id and null != transaction.destination_balance_after and null != transaction.destination_balance_after %}
{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.foreign_currency_symbol ?? transaction.currency_symbol, transaction.foreign_currency_decimal_places ?? transaction.currency_decimal_places) }} <span title="Withdrawal, liab, dest 2">{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.foreign_currency_symbol ?? transaction.currency_symbol, transaction.foreign_currency_decimal_places ?? transaction.currency_decimal_places) }}</span>
{% endif %} {% endif %}
{# withdrawal into an expense account #} {# withdrawal into an expense account #}
{% else %} {% else %}
{% if account.id == transaction.source_account_id %} {% if account.id == transaction.source_account_id %}
{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Withdrawal, source">{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% elseif account.id == transaction.destination_account_id %} {% elseif account.id == transaction.destination_account_id %}
{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Withdrawal, dest">{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% else %} {% else %}
- -
{% endif %} {% endif %}
{% endif %} {% endif %}
{% elseif transaction.transaction_type_type == 'Opening balance' %} {% elseif transaction.transaction_type_type == 'Opening balance' %}
{% if account.id == transaction.source_account_id %} {% if account.id == transaction.source_account_id %}
{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Opening balance, dest">{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% elseif account.id == transaction.destination_account_id %} {% elseif account.id == transaction.destination_account_id %}
{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Opening balance, src">{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% else %} {% else %}
- -
{% endif %} {% endif %}
{% elseif transaction.transaction_type_type == 'Transfer' %} {% elseif transaction.transaction_type_type == 'Transfer' %}
{% if account.id == transaction.source_account_id %} {% if account.id == transaction.source_account_id %}
{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Transfer, source">{{ formatAmountBySymbol(transaction.source_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% else %} {% else %}
{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }} <span title="Transfer, dest">{{ formatAmountBySymbol(transaction.destination_balance_after, transaction.currency_symbol, transaction.currency_decimal_places) }}</span>
{% endif %} {% endif %}
{% else %} {% else %}
&nbsp; &nbsp;

View File

@@ -119,11 +119,11 @@
</tr> </tr>
<tr> <tr>
<td>Exchange rates</td> <td>Exchange rates</td>
<td>{% if FireflyConfig.get('enable_exchange_rates', config('cer.enabled')) %}Enabled{% else %}Disabled{% endif %}, downloads {% if FireflyConfig.get('enable_external_rates', config('cer.download_enabled')) %}enabled{% else %}disabled{% endif %}</td> <td>{% if fireflyiiiconfig('enable_exchange_rates', true) %}Enabled{% else %}Disabled{% endif %}, downloads {% if FireflyConfig.get('enable_external_rates', config('cer.download_enabled')) %}enabled{% else %}disabled{% endif %}</td>
</tr> </tr>
<tr> <tr>
<td>RB-column</td> <td>RB-column</td>
<td>{% if FireflyConfig.get('use_running_balance', config('firefly.feature_flags.running_balance_column')) %}Enabled{% else %}Disabled{% endif %}</td> <td>{% if fireflyiiiconfig('use_running_balance', true) %}Enabled{% else %}Disabled{% endif %}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -226,7 +226,7 @@
<span>{{ 'currencies'|_ }}</span> <span>{{ 'currencies'|_ }}</span>
</a> </a>
</li> </li>
{% if FireflyConfig.get('enable_exchange_rates', config('cer.enabled')) %} {% if (fireflyiiiconfig('enable_exchange_rates', true)) %}
<li class="{{ activeRoutePartial('exchange-rates') }}"> <li class="{{ activeRoutePartial('exchange-rates') }}">
<a class="{{ activeRoutePartial('exchange-rates') }}" href="{{ route('exchange-rates.index') }}"> <a class="{{ activeRoutePartial('exchange-rates') }}" href="{{ route('exchange-rates.index') }}">
<span class="fa fa-angle-right fa-fw"></span> <span class="fa fa-angle-right fa-fw"></span>

View File

@@ -36,7 +36,7 @@
<td style="width:40%;">{{ 'saveOnAccounts'|_ }}</td> <td style="width:40%;">{{ 'saveOnAccounts'|_ }}</td>
<td> <td>
{% for account in piggy.accounts %} {% for account in piggy.accounts %}
<a href="{{ route('accounts.show', account.id) }}">{{ account.name }}</a><br> <a href="{{ route('accounts.show', [account.account_id]) }}">{{ account.name }}</a><br>
{% endfor %} {% endfor %}
</td> </td>
</tr> </tr>
@@ -58,7 +58,7 @@
<tr> <tr>
<td> <td>
{{ 'saved_so_far'|_ }} {{ 'saved_so_far'|_ }}
(<a href="{{ route('accounts.show', account.id) }}">{{ account.name }}</a>) (<a href="{{ route('accounts.show', account.account_id) }}">{{ account.name }}</a>)
</td> </td>
<td> <td>
{{ formatAmountBySymbol(account.current_amount, piggy.currency_symbol, piggy.currency_decimal_places) }} {{ formatAmountBySymbol(account.current_amount, piggy.currency_symbol, piggy.currency_decimal_places) }}

View File

@@ -101,7 +101,7 @@
</div> </div>
{# conversion back to primary currency #} {# conversion back to primary currency #}
{% if FireflyConfig.get('enable_exchange_rates', config('cer.enabled')) %} {% if fireflyiiiconfig('enable_exchange_rates', true) %}
<div class="preferences-box"> <div class="preferences-box">
<h3>{{ 'pref_convert_to_primary'|_ }}</h3> <h3>{{ 'pref_convert_to_primary'|_ }}</h3>
<p class="text-info"> <p class="text-info">

View File

@@ -20,7 +20,7 @@
<div class="form-group"> <div class="form-group">
<label for="query" class="col-sm-1 control-label">{{ 'search_query'|_ }}</label> <label for="query" class="col-sm-1 control-label">{{ 'search_query'|_ }}</label>
<div class="col-sm-10"> <div class="col-sm-10">
<input autocomplete="off" maxlength="255" type="text" name="search" id="query" value="{{ fullQuery }}" class="form-control" spellcheck="false" <input autocomplete="off" type="text" name="search" id="query" value="{{ fullQuery }}" class="form-control" spellcheck="false"
placeholder="{{ fullQuery }}"> placeholder="{{ fullQuery }}">
</div> </div>
</div> </div>