mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-09-03 20:52:58 -05:00
Merge pull request #12460 from firefly-iii/release-1783619839
🤖 Automatically merge the PR into the develop branch.
This commit is contained in:
Generated
+7
-7
@@ -468,16 +468,16 @@
|
||||
},
|
||||
{
|
||||
"name": "friendsofphp/php-cs-fixer",
|
||||
"version": "v3.95.11",
|
||||
"version": "v3.95.12",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
||||
"reference": "35f98e1293283397824d7f349ce5afb8747c3cd5"
|
||||
"reference": "b1b9055997a98dce3c2338e884626e718a25a923"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/35f98e1293283397824d7f349ce5afb8747c3cd5",
|
||||
"reference": "35f98e1293283397824d7f349ce5afb8747c3cd5",
|
||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b1b9055997a98dce3c2338e884626e718a25a923",
|
||||
"reference": "b1b9055997a98dce3c2338e884626e718a25a923",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -517,7 +517,7 @@
|
||||
"php-coveralls/php-coveralls": "^2.9.1",
|
||||
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.8",
|
||||
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.8",
|
||||
"phpunit/phpunit": "^9.6.34 || ^10.5.63 || ^11.5.55",
|
||||
"phpunit/phpunit": "^9.6.35 || ^10.5.64 || ^11.5.56",
|
||||
"symfony/polyfill-php85": "^1.38",
|
||||
"symfony/var-dumper": "^5.4.48 || ^6.4.36 || ^7.4.8 || ^8.1.0",
|
||||
"symfony/yaml": "^5.4.53 || ^6.4.41 || ^7.4.13 || ^8.1.0"
|
||||
@@ -561,7 +561,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
|
||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.95.11"
|
||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.95.12"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -569,7 +569,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-25T14:17:04+00:00"
|
||||
"time": "2026-07-07T13:29:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
|
||||
@@ -158,7 +158,10 @@ final class TagController extends Controller
|
||||
'currency_id' => (string) $foreignCurrencyId,
|
||||
'currency_code' => $journal['foreign_currency_code'],
|
||||
];
|
||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
||||
$response[$foreignKey]['difference'] = bcadd(
|
||||
(string) $response[$foreignKey]['difference'],
|
||||
Steam::positive($journal['foreign_amount'])
|
||||
);
|
||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,7 +155,10 @@ final class TagController extends Controller
|
||||
'currency_id' => (string) $foreignCurrencyId,
|
||||
'currency_code' => $journal['foreign_currency_code'],
|
||||
];
|
||||
$response[$foreignKey]['difference'] = bcadd((string) $response[$foreignKey]['difference'], Steam::positive($journal['foreign_amount']));
|
||||
$response[$foreignKey]['difference'] = bcadd(
|
||||
(string) $response[$foreignKey]['difference'],
|
||||
Steam::positive($journal['foreign_amount'])
|
||||
);
|
||||
$response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // intentional float
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use League\CommonMark\GithubFlavoredMarkdownConverter;
|
||||
|
||||
use function Safe\json_decode;
|
||||
use function Safe\mb_ord;
|
||||
use function Safe\preg_match;
|
||||
@@ -51,7 +52,7 @@ if (!function_exists('env_default_when_empty')) {
|
||||
/**
|
||||
* @return null|mixed
|
||||
*/
|
||||
function env_default_when_empty(mixed $value, bool | int | string | null $default = null): mixed
|
||||
function env_default_when_empty(mixed $value, bool|int|string|null $default = null): mixed
|
||||
{
|
||||
if (null === $value) {
|
||||
return $default;
|
||||
@@ -65,7 +66,6 @@ if (!function_exists('env_default_when_empty')) {
|
||||
}
|
||||
|
||||
if (!function_exists('sign_amount')) {
|
||||
|
||||
function sign_amount(string $amount, string $transactionType, string $sourceType): string
|
||||
{
|
||||
// withdrawals stay negative
|
||||
@@ -89,7 +89,7 @@ if (!function_exists('sign_amount')) {
|
||||
if (!function_exists('normal_journal_object_amount')) {
|
||||
function normal_journal_object_amount(TransactionJournal $journal): string
|
||||
{
|
||||
$type = $journal->transactionType->type;
|
||||
$type = $journal->transactionType->type;
|
||||
|
||||
/** @var Transaction $first */
|
||||
$first = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
@@ -98,12 +98,12 @@ if (!function_exists('normal_journal_object_amount')) {
|
||||
$colored = true;
|
||||
$sourceType = $first->account->accountType()->first()->type;
|
||||
|
||||
$amount = sign_amount($amount, $type, $sourceType);
|
||||
$amount = sign_amount($amount, $type, $sourceType);
|
||||
|
||||
if (TransactionTypeEnum::TRANSFER->value === $type) {
|
||||
$colored = false;
|
||||
}
|
||||
$result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored);
|
||||
$result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored);
|
||||
if (TransactionTypeEnum::TRANSFER->value === $type) {
|
||||
return sprintf('<span class="text-info money-transfer">%s</span>', $result);
|
||||
}
|
||||
@@ -123,10 +123,9 @@ if (!function_exists('journal_object_has_foreign')) {
|
||||
}
|
||||
|
||||
if (function_exists('foreign_journal_object_amount')) {
|
||||
|
||||
function foreign_journal_object_amount(TransactionJournal $journal): string
|
||||
{
|
||||
$type = $journal->transactionType->type;
|
||||
$type = $journal->transactionType->type;
|
||||
|
||||
/** @var Transaction $first */
|
||||
$first = $journal->transactions()->where('amount', '<', 0)->first();
|
||||
@@ -135,12 +134,12 @@ if (function_exists('foreign_journal_object_amount')) {
|
||||
$colored = true;
|
||||
$sourceType = $first->account->accountType()->first()->type;
|
||||
|
||||
$amount = sign_amount($amount, $type, $sourceType);
|
||||
$amount = sign_amount($amount, $type, $sourceType);
|
||||
|
||||
if (TransactionTypeEnum::TRANSFER->value === $type) {
|
||||
$colored = false;
|
||||
}
|
||||
$result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored);
|
||||
$result = Amount::formatFlat($currency->symbol, $currency->decimal_places, $amount, $colored);
|
||||
if (TransactionTypeEnum::TRANSFER->value === $type) {
|
||||
return sprintf('<span class="text-info money-transfer">%s</span>', $result);
|
||||
}
|
||||
@@ -168,10 +167,11 @@ if (!function_exists('journal_link_translation')) {
|
||||
function journal_link_translation(string $direction, string $original): string
|
||||
{
|
||||
$key = sprintf('firefly.%s_%s', $original, $direction);
|
||||
$translation = (string)trans($key);
|
||||
$translation = (string) trans($key);
|
||||
if ($key === $translation) {
|
||||
return $original;
|
||||
}
|
||||
|
||||
return $translation;
|
||||
}
|
||||
}
|
||||
@@ -180,9 +180,9 @@ if (!function_exists('all_journal_triggers')) {
|
||||
function all_journal_triggers(): array
|
||||
{
|
||||
return [
|
||||
'store-journal' => (string)trans('firefly.rule_trigger_store_journal'),
|
||||
'update-journal' => (string)trans('firefly.rule_trigger_update_journal'),
|
||||
'manual-activation' => (string)trans('firefly.rule_trigger_manual'),
|
||||
'store-journal' => (string) trans('firefly.rule_trigger_store_journal'),
|
||||
'update-journal' => (string) trans('firefly.rule_trigger_update_journal'),
|
||||
'manual-activation' => (string) trans('firefly.rule_trigger_manual'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -194,10 +194,11 @@ if (!function_exists('all_rule_actions')) {
|
||||
$ruleActions = array_keys(config('firefly.rule-actions'));
|
||||
$possibleActions = [];
|
||||
foreach ($ruleActions as $key) {
|
||||
$possibleActions[$key] = (string)trans('firefly.rule_action_' . $key . '_choice');
|
||||
$possibleActions[$key] = (string) trans('firefly.rule_action_'.$key.'_choice');
|
||||
}
|
||||
unset($ruleActions);
|
||||
asort($possibleActions);
|
||||
|
||||
return $possibleActions;
|
||||
}
|
||||
}
|
||||
@@ -206,9 +207,9 @@ if (!function_exists('all_journal_triggers')) {
|
||||
function all_journal_triggers(): array
|
||||
{
|
||||
return [
|
||||
'store-journal' => (string)trans('firefly.rule_trigger_store_journal'),
|
||||
'update-journal' => (string)trans('firefly.rule_trigger_update_journal'),
|
||||
'manual-activation' => (string)trans('firefly.rule_trigger_manual'),
|
||||
'store-journal' => (string) trans('firefly.rule_trigger_store_journal'),
|
||||
'update-journal' => (string) trans('firefly.rule_trigger_update_journal'),
|
||||
'manual-activation' => (string) trans('firefly.rule_trigger_manual'),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -217,14 +218,14 @@ if (!function_exists('mime_icon')) {
|
||||
function mime_icon(string $file): string
|
||||
{
|
||||
return match ($file) {
|
||||
'application/pdf' => 'bi-file-earmark-pdf',
|
||||
'application/pdf' => 'bi-file-earmark-pdf',
|
||||
'image/webp',
|
||||
'image/png',
|
||||
'image/jpeg',
|
||||
'image/svg+xml',
|
||||
'image/heic',
|
||||
'image/heic-sequence',
|
||||
'application/vnd.oasis.opendocument.image' => 'bi-file-earmark-image',
|
||||
'application/vnd.oasis.opendocument.image' => 'bi-file-earmark-image',
|
||||
'application/msword',
|
||||
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
|
||||
@@ -237,7 +238,7 @@ if (!function_exists('mime_icon')) {
|
||||
'application/vnd.oasis.opendocument.text',
|
||||
'application/vnd.oasis.opendocument.text-template',
|
||||
'application/vnd.oasis.opendocument.text-web',
|
||||
'application/vnd.oasis.opendocument.text-master' => 'bi-file-earmark-word',
|
||||
'application/vnd.oasis.opendocument.text-master' => 'bi-file-earmark-word',
|
||||
'application/vnd.ms-excel',
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
|
||||
@@ -245,7 +246,7 @@ if (!function_exists('mime_icon')) {
|
||||
'application/vnd.sun.xml.calc.template',
|
||||
'application/vnd.stardivision.calc',
|
||||
'application/vnd.oasis.opendocument.spreadsheet',
|
||||
'application/vnd.oasis.opendocument.spreadsheet-template' => 'bi-file-earmark-excel',
|
||||
'application/vnd.oasis.opendocument.spreadsheet-template' => 'bi-file-earmark-excel',
|
||||
'application/vnd.ms-powerpoint',
|
||||
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
||||
'application/vnd.openxmlformats-officedocument.presentationml.template',
|
||||
@@ -254,18 +255,18 @@ if (!function_exists('mime_icon')) {
|
||||
'application/vnd.sun.xml.impress.template',
|
||||
'application/vnd.stardivision.impress',
|
||||
'application/vnd.oasis.opendocument.presentation',
|
||||
'application/vnd.oasis.opendocument.presentation-template' => 'bi-file-earmark-slides',
|
||||
'application/vnd.oasis.opendocument.presentation-template' => 'bi-file-earmark-slides',
|
||||
'application/vnd.sun.xml.draw',
|
||||
'application/vnd.sun.xml.draw.template',
|
||||
'application/vnd.stardivision.draw',
|
||||
'application/vnd.oasis.opendocument.chart' => 'bi-file-earmark-easel',
|
||||
'application/vnd.oasis.opendocument.chart' => 'bi-file-earmark-easel',
|
||||
'application/vnd.oasis.opendocument.graphics',
|
||||
'application/vnd.oasis.opendocument.graphics-template',
|
||||
'application/vnd.sun.xml.math',
|
||||
'application/vnd.stardivision.math',
|
||||
'application/vnd.oasis.opendocument.formula',
|
||||
'application/vnd.oasis.opendocument.database' => 'bi-file-earmark-rules',
|
||||
default => 'bi-file-earmark'
|
||||
'application/vnd.oasis.opendocument.database' => 'bi-file-earmark-rules',
|
||||
default => 'bi-file-earmark'
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -275,7 +276,7 @@ if (!function_exists('parse_markdown')) {
|
||||
{
|
||||
$converter = new GithubFlavoredMarkdownConverter(['allow_unsafe_links' => false, 'max_nesting_level' => 5, 'html_input' => 'escape']);
|
||||
|
||||
return (string)$converter->convert($string);
|
||||
return (string) $converter->convert($string);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,11 +370,11 @@ if (!function_exists('account_balance')) {
|
||||
function account_balance(Account $account): string
|
||||
{
|
||||
/** @var Carbon $date */
|
||||
$date = now();
|
||||
$date = now();
|
||||
|
||||
// get the date from the current session. If it's in the future, keep `now()`.
|
||||
/** @var Carbon $session */
|
||||
$session = clone session('end', today(config('app.timezone'))->endOfMonth());
|
||||
$session = clone session('end', today(config('app.timezone'))->endOfMonth());
|
||||
if ($session->lt($date)) {
|
||||
$date = $session->copy();
|
||||
$date->endOfDay();
|
||||
@@ -381,13 +382,13 @@ if (!function_exists('account_balance')) {
|
||||
Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String()));
|
||||
|
||||
// 2025-10-08 replace finalAccountBalance with accountsBalancesOptimized.
|
||||
$info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id];
|
||||
$info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id];
|
||||
// $info = Steam::finalAccountBalance($account, $date);
|
||||
$currency = Steam::getAccountCurrency($account);
|
||||
$primary = Amount::getPrimaryCurrency();
|
||||
$convertToPrimary = Amount::convertToPrimary();
|
||||
$usePrimary = $convertToPrimary && $primary->id !== $currency->id;
|
||||
$currency ??= $primary;
|
||||
$currency ??= $primary;
|
||||
$strings = [];
|
||||
foreach ($info as $key => $balance) {
|
||||
if ('balance' === $key) {
|
||||
@@ -454,15 +455,15 @@ if (!function_exists('print_nice_filesize')) {
|
||||
{
|
||||
// less than one GB, more than one MB
|
||||
if ($size < (1024 * 1024 * 2014) && $size >= (1024 * 1024)) {
|
||||
return round($size / (1024 * 1024), 2) . ' MB';
|
||||
return round($size / (1024 * 1024), 2).' MB';
|
||||
}
|
||||
|
||||
// less than one MB
|
||||
if ($size < (1024 * 1024)) {
|
||||
return round($size / 1024, 2) . ' KB';
|
||||
return round($size / 1024, 2).' KB';
|
||||
}
|
||||
|
||||
return $size . ' bytes';
|
||||
return $size.' bytes';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -483,11 +484,11 @@ if (!function_exists('journal_get_meta_field')) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return json_decode((string)$entry->data, true);
|
||||
return json_decode((string) $entry->data, true);
|
||||
}
|
||||
}
|
||||
if (!function_exists('journal_get_meta_date')) {
|
||||
function journal_get_meta_date(int $journalId, string $metaField): Carbon | CarbonInterface
|
||||
function journal_get_meta_date(int $journalId, string $metaField): Carbon|CarbonInterface
|
||||
{
|
||||
/** @var null|TransactionJournalMeta $entry */
|
||||
$entry = DB::table('journal_meta')->where('name', $metaField)->where('transaction_journal_id', $journalId)->whereNull('deleted_at')->first();
|
||||
@@ -495,7 +496,7 @@ if (!function_exists('journal_get_meta_date')) {
|
||||
return today(config('app.timezone'));
|
||||
}
|
||||
|
||||
return new Carbon(json_decode((string)$entry->data, false));
|
||||
return new Carbon(json_decode((string) $entry->data, false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,14 +525,14 @@ if (!function_exists('blade_escape_js')) {
|
||||
return preg_replace_callback(
|
||||
'#[^a-zA-Z0-9,\._]#Su',
|
||||
static function ($matches) {
|
||||
$char = $matches[0];
|
||||
$char = $matches[0];
|
||||
|
||||
/*
|
||||
* A few characters have short escape sequences in JSON and JavaScript.
|
||||
* Escape sequences supported only by JavaScript, not JSON, are omitted.
|
||||
* \" is also supported but omitted, because the resulting string is not HTML safe.
|
||||
*/
|
||||
$short = match ($char) {
|
||||
$short = match ($char) {
|
||||
'\\' => '\\\\',
|
||||
'/' => '\/',
|
||||
"\x08" => '\b',
|
||||
@@ -553,9 +554,9 @@ if (!function_exists('blade_escape_js')) {
|
||||
|
||||
// Split characters outside the BMP into surrogate pairs
|
||||
// https://tools.ietf.org/html/rfc2781.html#section-2.1
|
||||
$u = $codepoint - 0x10_000;
|
||||
$high = 0xD800 | ($u >> 10);
|
||||
$low = 0xDC00 | ($u & 0x3FF);
|
||||
$u = $codepoint - 0x10_000;
|
||||
$high = 0xD800 | ($u >> 10);
|
||||
$low = 0xDC00 | ($u & 0x3FF);
|
||||
|
||||
return \sprintf('\u%04X\u%04X', $high, $low);
|
||||
},
|
||||
|
||||
@@ -80,7 +80,7 @@ final class IndexController extends Controller
|
||||
$collection = $this->repository->getInactiveAccountsByType($types);
|
||||
$total = $collection->count();
|
||||
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$accounts = $collection->slice(($page - 1) * $pageSize, $pageSize);
|
||||
$inactiveCount = $this->repository->getInactiveAccountsByType($types)->count();
|
||||
@@ -147,7 +147,7 @@ final class IndexController extends Controller
|
||||
$collection = $this->repository->getActiveAccountsByType($types);
|
||||
$total = $collection->count();
|
||||
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$accounts = $collection->slice(($page - 1) * $pageSize, $pageSize);
|
||||
$inactiveCount = $this->repository->getInactiveAccountsByType($types)->count();
|
||||
|
||||
@@ -121,7 +121,7 @@ final class ShowController extends Controller
|
||||
$currency = $accountCurrency ?? $this->primaryCurrency;
|
||||
$fStart = $start->isoFormat($this->monthAndDayFormat);
|
||||
$fEnd = $end->isoFormat($this->monthAndDayFormat);
|
||||
$isLiability = $this->repository->isLiability($account);
|
||||
$isLiability = $this->repository->isLiability($account);
|
||||
$subTitle = (string) trans('firefly.journals_in_period_for_account', ['name' => $account->name, 'start' => $fStart, 'end' => $fEnd]);
|
||||
$chartUrl = route('chart.account.period', [$account->id, $start->format('Y-m-d'), $end->format('Y-m-d')]);
|
||||
$firstTransaction = $this->repository->oldestJournalDate($account) ?? $start;
|
||||
@@ -179,7 +179,7 @@ final class ShowController extends Controller
|
||||
'currency' => $currency,
|
||||
'today' => $today,
|
||||
'periods' => $periods,
|
||||
'isLiability' => $isLiability,
|
||||
'isLiability' => $isLiability,
|
||||
'subTitleIcon' => $subTitleIcon,
|
||||
'groups' => $groups,
|
||||
'attachments' => $attachments,
|
||||
@@ -215,7 +215,7 @@ final class ShowController extends Controller
|
||||
$start = $this->repository->oldestJournalDate($account) ?? today(config('app.timezone'))->startOfMonth();
|
||||
$subTitleIcon = config('firefly.subIconsByIdentifier.'.$account->accountType->type);
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$currency = $this->repository->getAccountCurrency($account) ?? $this->primaryCurrency;
|
||||
$subTitle = (string) trans('firefly.all_journals_for_account', ['name' => $account->name]);
|
||||
|
||||
@@ -255,7 +255,10 @@ final class IndexController extends Controller
|
||||
if (count($bill['paid_dates']) < count($bill['pay_dates'])) {
|
||||
$count = count($bill['pay_dates']) - count($bill['paid_dates']);
|
||||
if ($count > 0) {
|
||||
$avg = bcdiv(bcadd((string) $bill['amount_min'], (string) $bill['amount_max']), '2');
|
||||
$avg = bcdiv(
|
||||
bcadd((string) $bill['amount_min'], (string) $bill['amount_max']),
|
||||
'2'
|
||||
);
|
||||
$avg = bcmul($avg, (string) $count);
|
||||
$sums[$groupOrder][$currencyId]['total_left_to_pay'] = bcadd($sums[$groupOrder][$currencyId]['total_left_to_pay'], $avg);
|
||||
Log::debug(
|
||||
|
||||
@@ -130,7 +130,7 @@ final class ShowController extends Controller
|
||||
$end = session('end');
|
||||
$year = $start->year;
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$yearAverage = $this->repository->getYearAverage($bill, $start);
|
||||
$overallAverage = $this->repository->getOverallAverage($bill);
|
||||
|
||||
@@ -198,7 +198,13 @@ final class BudgetLimitController extends Controller
|
||||
if ($request->expectsJson()) {
|
||||
$array = $limit->toArray();
|
||||
// add some extra metadata:
|
||||
$spentArr = $this->opsRepository->sumExpenses($limit->start_date, $limit->end_date, null, new Collection()->push($budget), $currency);
|
||||
$spentArr = $this->opsRepository->sumExpenses(
|
||||
$limit->start_date,
|
||||
$limit->end_date,
|
||||
null,
|
||||
new Collection()->push($budget),
|
||||
$currency
|
||||
);
|
||||
$array['spent'] = $spentArr[$currency->id]['sum'] ?? '0';
|
||||
$array['left_formatted'] = Amount::formatAnything($limit->transactionCurrency, bcadd($array['spent'], (string) $array['amount']));
|
||||
$array['amount_formatted'] = Amount::formatAnything($limit->transactionCurrency, $limit['amount']);
|
||||
|
||||
@@ -284,7 +284,10 @@ final class IndexController extends Controller
|
||||
|
||||
if (array_key_exists($currency->id, $spentArr) && array_key_exists('sum', $spentArr[$currency->id])) {
|
||||
$array['spent'][$currency->id]['spent'] = $spentArr[$currency->id]['sum'];
|
||||
$array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub($spentInLimits[$currency->id], $spentArr[$currency->id]['sum']));
|
||||
$array['spent'][$currency->id]['spent_outside'] = Steam::negative(bcsub(
|
||||
$spentInLimits[$currency->id],
|
||||
$spentArr[$currency->id]['sum']
|
||||
));
|
||||
$array['spent'][$currency->id]['currency_id'] = $currency->id;
|
||||
$array['spent'][$currency->id]['currency_symbol'] = $currency->symbol;
|
||||
$array['spent'][$currency->id]['currency_decimal_places'] = $currency->decimal_places;
|
||||
|
||||
@@ -97,7 +97,7 @@ final class ShowController extends Controller
|
||||
$firstDate = $first instanceof TransactionJournal ? $first->date : $start;
|
||||
$periods = $this->getNoModelPeriodOverview('budget', $firstDate, $end);
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
|
||||
/** @var GroupCollectorInterface $collector */
|
||||
@@ -132,7 +132,7 @@ final class ShowController extends Controller
|
||||
$start = $first instanceof TransactionJournal ? $first->date : new Carbon();
|
||||
$end = today(config('app.timezone'));
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
|
||||
/** @var GroupCollectorInterface $collector */
|
||||
@@ -166,7 +166,7 @@ final class ShowController extends Controller
|
||||
$allStart = session('first', today(config('app.timezone'))->startOfYear());
|
||||
$allEnd = today();
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$limits = $this->getLimits($budget, $allStart, $allEnd);
|
||||
$repetition = null;
|
||||
@@ -216,7 +216,7 @@ final class ShowController extends Controller
|
||||
|
||||
$currencySymbol = $budgetLimit->transactionCurrency->symbol;
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$subTitle = trans('firefly.budget_in_period', [
|
||||
'name' => $budget->name,
|
||||
|
||||
@@ -71,7 +71,7 @@ final class IndexController extends Controller
|
||||
public function index(Request $request): Factory|\Illuminate\Contracts\View\View
|
||||
{
|
||||
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$collection = $this->repository->getCategories();
|
||||
$total = $collection->count();
|
||||
|
||||
@@ -85,7 +85,7 @@ final class NoCategoryController extends Controller
|
||||
/** @var Carbon $start */
|
||||
/** @var Carbon $end */
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$subTitle = trans('firefly.without_category_between', [
|
||||
'start' => $start->isoFormat($this->monthAndDayFormat),
|
||||
@@ -135,7 +135,7 @@ final class NoCategoryController extends Controller
|
||||
$end = null;
|
||||
$periods = new Collection();
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
Log::debug('Start of noCategory()');
|
||||
$subTitle = (string) trans('firefly.all_journals_without_category');
|
||||
|
||||
@@ -84,7 +84,7 @@ final class ShowController extends Controller
|
||||
/** @var Carbon $end */
|
||||
$subTitleIcon = 'bi-bookmark';
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$attachments = $this->repository->getAttachments($category);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$oldest = $this->repository->firstUseDate($category) ?? today(config('app.timezone'))->startOfYear();
|
||||
@@ -136,7 +136,7 @@ final class ShowController extends Controller
|
||||
// default values:
|
||||
$subTitleIcon = 'bi-bookmark';
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$start = null;
|
||||
$end = null;
|
||||
|
||||
@@ -539,7 +539,13 @@ final class BudgetController extends Controller
|
||||
}
|
||||
|
||||
// get spent amount in this period for this currency.
|
||||
$sum = $this->opsRepository->sumExpenses($currentStart, $currentEnd, $accounts, new Collection()->push($budget), $currency);
|
||||
$sum = $this->opsRepository->sumExpenses(
|
||||
$currentStart,
|
||||
$currentEnd,
|
||||
$accounts,
|
||||
new Collection()->push($budget),
|
||||
$currency
|
||||
);
|
||||
$amount = Steam::positive($sum[$currency->id]['sum'] ?? '0');
|
||||
$chartData[0]['entries'][$title] = Steam::bcround($amount, $currency->decimal_places);
|
||||
|
||||
|
||||
@@ -74,13 +74,14 @@ abstract class Controller extends BaseController
|
||||
{
|
||||
// is site a demo site?
|
||||
try {
|
||||
$isDemoSiteConfig = AppConfiguration::get('is_demo_site', config('firefly.configuration.is_demo_site', false));
|
||||
} catch(FireflyException $e) {
|
||||
$isDemoSiteConfig = AppConfiguration::get('is_demo_site', config('firefly.configuration.is_demo_site', false));
|
||||
} catch (FireflyException $e) {
|
||||
// if this breaks, just stop right here.
|
||||
Log::error($e->getMessage());
|
||||
|
||||
return;
|
||||
}
|
||||
$isDemoSite = (bool) $isDemoSiteConfig->data;
|
||||
$isDemoSite = (bool) $isDemoSiteConfig->data;
|
||||
View::share('IS_DEMO_SITE', $isDemoSite);
|
||||
View::share('DEMO_USERNAME', config('firefly.demo_username'));
|
||||
View::share('DEMO_PASSWORD', config('firefly.demo_password'));
|
||||
@@ -88,21 +89,24 @@ abstract class Controller extends BaseController
|
||||
View::share('FF_BUILD_TIME', config('firefly.build_time'));
|
||||
|
||||
// this breaks when running < PHP 8.5 and is totally intentional.
|
||||
$input = ' James is cool';
|
||||
$output = $input
|
||||
$input = ' James is cool';
|
||||
$output = $input
|
||||
|> trim(...)
|
||||
|> (fn (string $string) => str_replace(' ', '-', $string))
|
||||
|> (fn (string $string) => str_replace(['.', '/', '…'], '', $string))
|
||||
|> strtolower(...);
|
||||
|
||||
// is webhooks enabled?
|
||||
View::share('featuringWebhooks', true === config('firefly.feature_flags.webhooks') && true === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data);
|
||||
View::share(
|
||||
'featuringWebhooks',
|
||||
true === config('firefly.feature_flags.webhooks') && true === AppConfiguration::get('allow_webhooks', config('firefly.allow_webhooks'))->data
|
||||
);
|
||||
// is currency exchange enabled?
|
||||
View::share('featuringCer', true === AppConfiguration::get('enable_exchange_rates', config('cer.enabled'))->data);
|
||||
|
||||
// share custom auth guard info.
|
||||
$authGuard = config('firefly.authentication_guard');
|
||||
$logoutUrl = config('firefly.custom_logout_url');
|
||||
$authGuard = config('firefly.authentication_guard');
|
||||
$logoutUrl = config('firefly.custom_logout_url');
|
||||
|
||||
// overrule v2 layout back to v1.
|
||||
|
||||
@@ -116,15 +120,15 @@ abstract class Controller extends BaseController
|
||||
View::share('logoutUrl', $logoutUrl);
|
||||
|
||||
// upload size
|
||||
$maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
|
||||
$maxPostSize = Steam::phpBytes(ini_get('post_max_size'));
|
||||
$uploadSize = min($maxFileSize, $maxPostSize);
|
||||
$maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
|
||||
$maxPostSize = Steam::phpBytes(ini_get('post_max_size'));
|
||||
$uploadSize = min($maxFileSize, $maxPostSize);
|
||||
View::share('uploadSize', $uploadSize);
|
||||
|
||||
// share is alpha, is beta
|
||||
$isAlpha = false;
|
||||
$isBeta = false;
|
||||
$isDevelop = false;
|
||||
$isAlpha = false;
|
||||
$isBeta = false;
|
||||
$isDevelop = false;
|
||||
if (str_contains((string) config('firefly.version'), 'alpha')) {
|
||||
$isAlpha = true;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,13 @@ final class RuleController extends Controller
|
||||
}
|
||||
|
||||
try {
|
||||
$view = view('rules.partials.action', ['actions' => $actions, 'count' => $count,'oldAction' => null, 'oldValue' => null,'oldChecked' => null])->render();
|
||||
$view = view('rules.partials.action', [
|
||||
'actions' => $actions,
|
||||
'count' => $count,
|
||||
'oldAction' => null,
|
||||
'oldValue' => null,
|
||||
'oldChecked' => null,
|
||||
])->render();
|
||||
} catch (Throwable $e) {
|
||||
Log::error(sprintf('Cannot render rules.partials.action: %s', $e->getMessage()));
|
||||
Log::error($e->getTraceAsString());
|
||||
@@ -81,7 +87,14 @@ final class RuleController extends Controller
|
||||
asort($triggers);
|
||||
|
||||
try {
|
||||
$view = view('rules.partials.trigger', ['triggers' => $triggers, 'count' => $count,'oldTrigger' => null, 'oldProhibited' => null,'oldValue' => null,'oldChecked' =>null])->render();
|
||||
$view = view('rules.partials.trigger', [
|
||||
'triggers' => $triggers,
|
||||
'count' => $count,
|
||||
'oldTrigger' => null,
|
||||
'oldProhibited' => null,
|
||||
'oldValue' => null,
|
||||
'oldChecked' => null,
|
||||
])->render();
|
||||
} catch (Throwable $e) {
|
||||
Log::error(sprintf('Cannot render rules.partials.trigger: %s', $e->getMessage()));
|
||||
Log::error($e->getTraceAsString());
|
||||
|
||||
@@ -128,9 +128,8 @@ final class PreferencesController extends Controller
|
||||
|
||||
// missing fields will give an error unless set, so:
|
||||
$tjOptionalFields['external_url'] ??= false;
|
||||
$tjOptionalFields['location'] ??= false;
|
||||
$tjOptionalFields['links'] ??= false;
|
||||
|
||||
$tjOptionalFields['location'] ??= false;
|
||||
$tjOptionalFields['links'] ??= false;
|
||||
|
||||
$availableDarkModes = config('firefly.available_dark_modes');
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ final class IndexController extends Controller
|
||||
public function index(Request $request): Factory|\Illuminate\Contracts\View\View
|
||||
{
|
||||
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$collection = $this->repository->get();
|
||||
$today = today(config('app.timezone'));
|
||||
|
||||
@@ -134,8 +134,9 @@ final class BalanceController extends Controller
|
||||
|
||||
// get transactions in budget
|
||||
}
|
||||
// echo '<pre>';
|
||||
// print_r($report);exit;
|
||||
|
||||
// echo '<pre>';
|
||||
// print_r($report);exit;
|
||||
try {
|
||||
$result = view('reports.partials.balance', ['report' => $report])->render();
|
||||
} catch (Throwable $e) {
|
||||
|
||||
@@ -353,9 +353,9 @@ final class BudgetController extends Controller
|
||||
*/
|
||||
public function topExpenses(Collection $accounts, Collection $budgets, Carbon $start, Carbon $end)
|
||||
{
|
||||
$spent = $this->opsRepository->listExpenses($start, $end, $accounts, $budgets);
|
||||
$spent = $this->opsRepository->listExpenses($start, $end, $accounts, $budgets);
|
||||
$incomeTopLength = 0;
|
||||
$result = [];
|
||||
$result = [];
|
||||
foreach ($spent as $currency) {
|
||||
foreach ($currency['budgets'] as $budget) {
|
||||
foreach ($budget['transaction_journals'] as $journal) {
|
||||
@@ -376,16 +376,16 @@ final class BudgetController extends Controller
|
||||
'budget_name' => $budget['name'],
|
||||
];
|
||||
}
|
||||
$incomeTopLength++;
|
||||
++$incomeTopLength;
|
||||
}
|
||||
}
|
||||
// sort by amount_float
|
||||
// sort temp array by amount.
|
||||
$amounts = array_column($result, 'amount_float');
|
||||
$amounts = array_column($result, 'amount_float');
|
||||
array_multisort($amounts, SORT_ASC, $result);
|
||||
|
||||
try {
|
||||
$result = view('reports.budget.partials.top-expenses', ['result' => $result, 'incomeTopLength'=>$incomeTopLength])->render();
|
||||
$result = view('reports.budget.partials.top-expenses', ['result' => $result, 'incomeTopLength' => $incomeTopLength])->render();
|
||||
} catch (Throwable $e) {
|
||||
Log::error(sprintf('Could not render reports.partials.budget-period: %s', $e->getMessage()));
|
||||
$result = sprintf('Could not render view: %s', $e->getMessage());
|
||||
|
||||
@@ -604,7 +604,7 @@ final class CategoryController extends Controller
|
||||
{
|
||||
$incomeTopLength = 0;
|
||||
// chart properties for cache:
|
||||
$cache = new CacheProperties();
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty('category-report');
|
||||
@@ -614,15 +614,15 @@ final class CategoryController extends Controller
|
||||
}
|
||||
|
||||
/** @var CategoryReportGenerator $generator */
|
||||
$generator = app(CategoryReportGenerator::class);
|
||||
$generator = app(CategoryReportGenerator::class);
|
||||
$generator->setAccounts($accounts);
|
||||
$generator->setStart($start);
|
||||
$generator->setEnd($end);
|
||||
$generator->operations();
|
||||
$report = $generator->getReport();
|
||||
$report = $generator->getReport();
|
||||
|
||||
try {
|
||||
$result = view('reports.partials.categories', ['report' => $report,'incomeTopLength' => $incomeTopLength])->render();
|
||||
$result = view('reports.partials.categories', ['report' => $report, 'incomeTopLength' => $incomeTopLength])->render();
|
||||
$cache->store($result);
|
||||
} catch (Throwable $e) {
|
||||
Log::error(sprintf('Could not render category::expenses: %s', $e->getMessage()));
|
||||
@@ -641,12 +641,12 @@ final class CategoryController extends Controller
|
||||
*/
|
||||
public function topExpenses(Collection $accounts, Collection $categories, Carbon $start, Carbon $end)
|
||||
{
|
||||
$spent = $this->opsRepository->listExpenses($start, $end, $accounts, $categories);
|
||||
$spent = $this->opsRepository->listExpenses($start, $end, $accounts, $categories);
|
||||
$incomeTopLength = 0;
|
||||
$result = [];
|
||||
$result = [];
|
||||
foreach ($spent as $currency) {
|
||||
foreach ($currency['categories'] as $category) {
|
||||
$incomeTopLength++;
|
||||
++$incomeTopLength;
|
||||
foreach ($category['transaction_journals'] as $journal) {
|
||||
$result[] = [
|
||||
'description' => $journal['description'],
|
||||
@@ -669,7 +669,7 @@ final class CategoryController extends Controller
|
||||
}
|
||||
// sort by amount_float
|
||||
// sort temp array by amount.
|
||||
$amounts = array_column($result, 'amount_float');
|
||||
$amounts = array_column($result, 'amount_float');
|
||||
array_multisort($amounts, SORT_ASC, $result);
|
||||
|
||||
try {
|
||||
|
||||
@@ -65,7 +65,7 @@ final class OperationsController extends Controller
|
||||
public function expenses(Collection $accounts, Carbon $start, Carbon $end)
|
||||
{
|
||||
// chart properties for cache:
|
||||
$cache = new CacheProperties();
|
||||
$cache = new CacheProperties();
|
||||
$cache->addProperty($start);
|
||||
$cache->addProperty($end);
|
||||
$cache->addProperty('expense-report');
|
||||
@@ -73,9 +73,9 @@ final class OperationsController extends Controller
|
||||
if ($cache->has()) {
|
||||
return $cache->get();
|
||||
}
|
||||
$report = $this->tasker->getExpenseReport($start, $end, $accounts);
|
||||
$type = 'expense-entry';
|
||||
$incomeTopLength= count($report['accounts']);
|
||||
$report = $this->tasker->getExpenseReport($start, $end, $accounts);
|
||||
$type = 'expense-entry';
|
||||
$incomeTopLength = count($report['accounts']);
|
||||
|
||||
try {
|
||||
$result = view('reports.partials.income-expenses', ['report' => $report, 'type' => $type, 'incomeTopLength' => $incomeTopLength])->render();
|
||||
|
||||
@@ -446,12 +446,12 @@ final class TagController extends Controller
|
||||
*/
|
||||
public function topExpenses(Collection $accounts, Collection $tags, Carbon $start, Carbon $end)
|
||||
{
|
||||
$spent = $this->opsRepository->listExpenses($start, $end, $accounts, $tags);
|
||||
$result = [];
|
||||
$spent = $this->opsRepository->listExpenses($start, $end, $accounts, $tags);
|
||||
$result = [];
|
||||
$incomeTopLength = 0;
|
||||
foreach ($spent as $currency) {
|
||||
foreach ($currency['tags'] as $tag) {
|
||||
$incomeTopLength++;
|
||||
++$incomeTopLength;
|
||||
foreach ($tag['transaction_journals'] as $journal) {
|
||||
$result[] = [
|
||||
'description' => $journal['description'],
|
||||
@@ -474,7 +474,7 @@ final class TagController extends Controller
|
||||
}
|
||||
// sort by amount_float
|
||||
// sort temp array by amount.
|
||||
$amounts = array_column($result, 'amount_float');
|
||||
$amounts = array_column($result, 'amount_float');
|
||||
array_multisort($amounts, SORT_ASC, $result);
|
||||
|
||||
try {
|
||||
|
||||
@@ -67,7 +67,7 @@ final class SearchController extends Controller
|
||||
}
|
||||
$fullQuery = (string) $fullQuery;
|
||||
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$ruleId = (int) $request->input('rule');
|
||||
$ruleChanged = false;
|
||||
|
||||
@@ -117,7 +117,7 @@ final class SearchController extends Controller
|
||||
}
|
||||
$fullQuery = (string) $entry;
|
||||
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
|
||||
$searcher->parseQuery($fullQuery);
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\View\View;
|
||||
use Laravel\Passport\Passport;
|
||||
use phpseclib3\Crypt\RSA;
|
||||
|
||||
use function Safe\file_put_contents;
|
||||
|
||||
/**
|
||||
@@ -55,37 +56,37 @@ final class InstallController extends Controller
|
||||
public const string FORBIDDEN_ERROR = 'Internal PHP function "proc_close" is disabled for your installation. Auto-migration is not possible.';
|
||||
public const string OTHER_ERROR = 'An unknown error prevented Firefly III from executing the upgrade commands. Sorry.';
|
||||
|
||||
private string $lastError = '';
|
||||
private string $lastError = '';
|
||||
// empty on purpose.
|
||||
private array $upgradeCommands
|
||||
= [
|
||||
// there are 5 initial commands
|
||||
// Check 4 places: InstallController, Docker image, UpgradeDatabase, composer.json
|
||||
'firefly-iii:create-database' => [],
|
||||
'migrate' => ['--seed' => true, '--force' => true],
|
||||
'generate-keys' => [], // an exception :(
|
||||
'firefly-iii:upgrade-database' => [],
|
||||
'firefly-iii:set-latest-version' => ['--james-is-cool' => true],
|
||||
'firefly-iii:verify-security-alerts' => [],
|
||||
];
|
||||
private array $upgradeCommands = [
|
||||
// there are 5 initial commands
|
||||
// Check 4 places: InstallController, Docker image, UpgradeDatabase, composer.json
|
||||
'firefly-iii:create-database' => [],
|
||||
'migrate' => ['--seed' => true, '--force' => true],
|
||||
'generate-keys' => [], // an exception :(
|
||||
'firefly-iii:upgrade-database' => [],
|
||||
'firefly-iii:set-latest-version' => ['--james-is-cool' => true],
|
||||
'firefly-iii:verify-security-alerts' => [],
|
||||
];
|
||||
|
||||
/**
|
||||
* Show index.
|
||||
*
|
||||
* @return Factory|View
|
||||
*/
|
||||
public function index(): Factory | \Illuminate\Contracts\View\View
|
||||
public function index(): Factory|\Illuminate\Contracts\View\View
|
||||
{
|
||||
if ($this->hasNoTables() || $this->isOldVersionInstalled()) {
|
||||
app('view')->share('FF_VERSION', config('firefly.version'));
|
||||
|
||||
// index will set FF3 version.
|
||||
try {
|
||||
AppConfiguration::set('ff3_version', (string)config('firefly.version'));
|
||||
AppConfiguration::set('ff3_build_time', (int)config('firefly.build_time'));
|
||||
AppConfiguration::set('ff3_version', (string) config('firefly.version'));
|
||||
AppConfiguration::set('ff3_build_time', (int) config('firefly.build_time'));
|
||||
} catch (FireflyException $e) {
|
||||
Log::warning($e->getMessage());
|
||||
}
|
||||
|
||||
return view('install.index');
|
||||
}
|
||||
|
||||
@@ -98,7 +99,7 @@ final class InstallController extends Controller
|
||||
public function keys(): void
|
||||
{
|
||||
if ($this->hasNoTables() || $this->isOldVersionInstalled()) {
|
||||
$key = RSA::createKey(4096);
|
||||
$key = RSA::createKey(4096);
|
||||
|
||||
[$publicKey, $privateKey] = [Passport::keyPath('oauth-public.key'), Passport::keyPath('oauth-private.key')];
|
||||
|
||||
@@ -106,7 +107,7 @@ final class InstallController extends Controller
|
||||
return;
|
||||
}
|
||||
|
||||
file_put_contents($publicKey, (string)$key->getPublicKey());
|
||||
file_put_contents($publicKey, (string) $key->getPublicKey());
|
||||
file_put_contents($privateKey, $key->toString('PKCS1'));
|
||||
}
|
||||
}
|
||||
@@ -114,14 +115,14 @@ final class InstallController extends Controller
|
||||
public function runCommand(Request $request): JsonResponse
|
||||
{
|
||||
if ($this->hasNoTables() || $this->isOldVersionInstalled()) {
|
||||
$requestIndex = (int)$request->input('index');
|
||||
$requestIndex = (int) $request->input('index');
|
||||
$response = ['hasNextCommand' => false, 'done' => true, 'previous' => null, 'error' => false, 'errorMessage' => null];
|
||||
|
||||
Log::debug(sprintf('Will now run commands. Request index is %d', $requestIndex));
|
||||
$indexes = array_keys($this->upgradeCommands);
|
||||
$indexes = array_keys($this->upgradeCommands);
|
||||
if (array_key_exists($requestIndex, $indexes)) {
|
||||
$command = $indexes[$requestIndex];
|
||||
$parameters = $this->upgradeCommands[$command];
|
||||
$command = $indexes[$requestIndex];
|
||||
$parameters = $this->upgradeCommands[$command];
|
||||
Log::debug(sprintf('Will now execute command "%s" with parameters', $command), $parameters);
|
||||
|
||||
try {
|
||||
|
||||
@@ -298,7 +298,7 @@ final class TagController extends Controller
|
||||
// default values:
|
||||
$subTitleIcon = 'bi-tag';
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$periods = [];
|
||||
$subTitle = (string) trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]);
|
||||
|
||||
@@ -152,7 +152,7 @@ final class IndexController extends Controller
|
||||
$subTitleIcon = config('firefly.transactionIconsByType.'.$objectType);
|
||||
$types = config('firefly.transactionTypesByType.'.$objectType);
|
||||
$page = (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$path = route('transactions.index.all', [$objectType]);
|
||||
$first = $this->repository->firstNull();
|
||||
|
||||
@@ -37,7 +37,6 @@ use FireflyIII\User;
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\View\View;
|
||||
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
|
||||
@@ -72,7 +72,7 @@ final class IndexController extends Controller
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
$page = 0 === (int) $request->input('page') ? 1 : (int) $request->input('page');
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$page = min(max(1, $page), 2 ** 16);
|
||||
$pageSize = (int) Preferences::get('listPageSize', 50)->data;
|
||||
$collection = $this->repository->getAll();
|
||||
|
||||
|
||||
@@ -74,6 +74,4 @@ class Installer
|
||||
// update firefly version
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -122,7 +122,13 @@ class CreateAutoBudgetLimits implements ShouldQueue
|
||||
// if has one, calculate expenses and use that as a base.
|
||||
$repository = app(OperationsRepositoryInterface::class);
|
||||
$repository->setUser($autoBudget->budget->user);
|
||||
$spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
|
||||
$spent = $repository->sumExpenses(
|
||||
$previousStart,
|
||||
$previousEnd,
|
||||
null,
|
||||
new Collection()->push($autoBudget->budget),
|
||||
$autoBudget->transactionCurrency
|
||||
);
|
||||
$currencyId = $autoBudget->transaction_currency_id;
|
||||
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
||||
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
||||
@@ -212,7 +218,13 @@ class CreateAutoBudgetLimits implements ShouldQueue
|
||||
// if has one, calculate expenses and use that as a base.
|
||||
$repository = app(OperationsRepositoryInterface::class);
|
||||
$repository->setUser($autoBudget->budget->user);
|
||||
$spent = $repository->sumExpenses($previousStart, $previousEnd, null, new Collection()->push($autoBudget->budget), $autoBudget->transactionCurrency);
|
||||
$spent = $repository->sumExpenses(
|
||||
$previousStart,
|
||||
$previousEnd,
|
||||
null,
|
||||
new Collection()->push($autoBudget->budget),
|
||||
$autoBudget->transactionCurrency
|
||||
);
|
||||
$currencyId = $autoBudget->transaction_currency_id;
|
||||
$spentAmount = $spent[$currencyId]['sum'] ?? '0';
|
||||
Log::debug(sprintf('Spent in previous budget period (%s-%s) is %s', $previousStart->format('Y-m-d'), $previousEnd->format('Y-m-d'), $spentAmount));
|
||||
|
||||
@@ -61,7 +61,7 @@ class AppConfiguration
|
||||
try {
|
||||
/** @var null|Configuration $config */
|
||||
$config = Configuration::query()->where('name', $name)->first(['id', 'name', 'data']);
|
||||
} catch (Exception|QueryException|FireflyException $e) {
|
||||
} catch (Exception|FireflyException|QueryException $e) {
|
||||
throw new FireflyException(sprintf('Could not poll the database: %s', $e->getMessage()), 0, $e);
|
||||
}
|
||||
|
||||
|
||||
@@ -100,15 +100,14 @@ class ExpandedForm
|
||||
|
||||
try {
|
||||
$html = view('form.checkbox', [
|
||||
'classes' => $classes,
|
||||
'name' => $name,
|
||||
'label' => $label,
|
||||
'value' => $value,
|
||||
'options' => $options,
|
||||
'classes' => $classes,
|
||||
'name' => $name,
|
||||
'label' => $label,
|
||||
'value' => $value,
|
||||
'options' => $options,
|
||||
'inputClasses' => $inputClasses,
|
||||
])->render();
|
||||
} catch (Throwable $e) {
|
||||
|
||||
Log::debug(sprintf('Could not render checkbox(): %s', $e->getMessage()));
|
||||
$html = 'Could not render checkbox.';
|
||||
|
||||
@@ -165,6 +164,23 @@ class ExpandedForm
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public function hidden(string $name, mixed $value): string
|
||||
{
|
||||
try {
|
||||
$html = view('form.hidden', ['name' => $name, 'value' => $value])->render();
|
||||
} catch (Throwable $e) {
|
||||
Log::debug(sprintf('Could not render hidden(): %s', $e->getMessage()));
|
||||
$html = sprintf('Could not render hidden: %s', $e->getMessage());
|
||||
|
||||
throw new FireflyException($html, 0, $e);
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $value
|
||||
*
|
||||
@@ -325,23 +341,6 @@ class ExpandedForm
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public function hidden(string $name, mixed $value): string
|
||||
{
|
||||
try {
|
||||
$html = view('form.hidden', ['name' => $name, 'value' => $value])->render();
|
||||
} catch (Throwable $e) {
|
||||
Log::debug(sprintf('Could not render hidden(): %s', $e->getMessage()));
|
||||
$html = sprintf('Could not render hidden: %s', $e->getMessage());
|
||||
|
||||
throw new FireflyException($html, 0, $e);
|
||||
}
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws FireflyException
|
||||
*/
|
||||
|
||||
@@ -286,7 +286,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -357,7 +357,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -418,7 +418,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -465,7 +465,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -547,7 +547,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -716,7 +716,7 @@ class ExportDataGenerator
|
||||
}
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -865,7 +865,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -923,7 +923,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
@@ -1121,7 +1121,7 @@ class ExportDataGenerator
|
||||
|
||||
// load the CSV document from a string
|
||||
$csv = Writer::fromString();
|
||||
$escaper = new EscapeFormula();
|
||||
$escaper = new EscapeFormula();
|
||||
$csv->addFormatter($escaper->escapeRecord(...));
|
||||
|
||||
// insert the header
|
||||
|
||||
@@ -139,19 +139,6 @@ trait FormSupport
|
||||
return today(config('app.timezone'));
|
||||
}
|
||||
|
||||
protected function getHolderClasses(string $name): string
|
||||
{
|
||||
// Get errors from session:
|
||||
/** @var null|MessageBag $errors */
|
||||
$errors = session('errors');
|
||||
|
||||
if (null !== $errors && $errors->has($name)) {
|
||||
return 'has-error has-feedback';
|
||||
}
|
||||
|
||||
return 'has-error has-feedback';
|
||||
}
|
||||
|
||||
protected function getErrorClassesForCheckbox(string $name): string
|
||||
{
|
||||
// Get errors from session:
|
||||
@@ -165,6 +152,19 @@ trait FormSupport
|
||||
return 'form-check-input';
|
||||
}
|
||||
|
||||
protected function getHolderClasses(string $name): string
|
||||
{
|
||||
// Get errors from session:
|
||||
/** @var null|MessageBag $errors */
|
||||
$errors = session('errors');
|
||||
|
||||
if (null !== $errors && $errors->has($name)) {
|
||||
return 'has-error has-feedback';
|
||||
}
|
||||
|
||||
return 'has-error has-feedback';
|
||||
}
|
||||
|
||||
protected function label(string $name, ?array $options = null): string
|
||||
{
|
||||
$options ??= [];
|
||||
|
||||
@@ -222,7 +222,14 @@ trait AugumentData
|
||||
$currentEnd->addMonth();
|
||||
}
|
||||
// primary currency amount.
|
||||
$expenses = $opsRepository->sumExpenses($currentStart, $currentEnd, null, $budgetCollection, $entry->transactionCurrency, $this->convertToPrimary);
|
||||
$expenses = $opsRepository->sumExpenses(
|
||||
$currentStart,
|
||||
$currentEnd,
|
||||
null,
|
||||
$budgetCollection,
|
||||
$entry->transactionCurrency,
|
||||
$this->convertToPrimary
|
||||
);
|
||||
$spent = $expenses[$currency->id]['sum'] ?? '0';
|
||||
$entry->pc_spent = $spent;
|
||||
|
||||
|
||||
@@ -354,7 +354,11 @@ class RecurringEnrichment implements EnrichmentInterface
|
||||
|
||||
/** @var RecurrenceRepetition $repetition */
|
||||
foreach ($set as $repetition) {
|
||||
$recurrence = $this->collection->filter(static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id)->first();
|
||||
$recurrence = $this->collection->filter(
|
||||
static fn (Recurrence $item): bool => (int) $item->id === (int) $repetition->recurrence_id
|
||||
)
|
||||
->first()
|
||||
;
|
||||
$fromDate = clone ($recurrence->latest_date ?? $recurrence->first_date);
|
||||
$recurrenceId = (int) $repetition->recurrence_id;
|
||||
$repId = (int) $repetition->id;
|
||||
|
||||
@@ -47,8 +47,8 @@ trait IsOldVersion
|
||||
return 0;
|
||||
}
|
||||
|
||||
$currentDate = Carbon::createFromFormat('!Y-m-d', $currentParts[1]);
|
||||
$latestDate = Carbon::createFromFormat('!Y-m-d', $latestParts[1]);
|
||||
$currentDate = Carbon::createFromFormat('!Y-m-d', $currentParts[1]);
|
||||
$latestDate = Carbon::createFromFormat('!Y-m-d', $latestParts[1]);
|
||||
|
||||
if ($currentDate->lt($latestDate)) {
|
||||
Log::debug(sprintf('This current version is older, current = %s, latest version %s.', $current, $latest));
|
||||
@@ -71,16 +71,16 @@ trait IsOldVersion
|
||||
protected function isOldVersionInstalled(): bool
|
||||
{
|
||||
// version compare thing.
|
||||
$configBuildTime = (int)config('firefly.build_time');
|
||||
$dbBuildTime = (int)AppConfiguration::getFresh('ff3_build_time', 123)->data;
|
||||
$configBuildTime = (int) config('firefly.build_time');
|
||||
$dbBuildTime = (int) AppConfiguration::getFresh('ff3_build_time', 123)->data;
|
||||
$configTime = Carbon::createFromTimestamp($configBuildTime, config('app.timezone'));
|
||||
$dbTime = Carbon::createFromTimestamp($dbBuildTime, config('app.timezone'));
|
||||
if ($dbBuildTime < $configBuildTime) {
|
||||
Log::warning(sprintf(
|
||||
'Your database was last managed by an older version of Firefly III (I see %s, I expect %s). Redirect to migrate routine.',
|
||||
$dbTime->format('Y-m-d H:i:s'),
|
||||
$configTime->format('Y-m-d H:i:s')
|
||||
));
|
||||
'Your database was last managed by an older version of Firefly III (I see %s, I expect %s). Redirect to migrate routine.',
|
||||
$dbTime->format('Y-m-d H:i:s'),
|
||||
$configTime->format('Y-m-d H:i:s')
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ use Override;
|
||||
use Twig\Extension\AbstractExtension;
|
||||
use Twig\TwigFilter;
|
||||
use Twig\TwigFunction;
|
||||
|
||||
use function Safe\parse_url;
|
||||
|
||||
/**
|
||||
@@ -103,9 +104,9 @@ class General extends AbstractExtension
|
||||
'activeRoutePartialObjectType',
|
||||
static function (array $context): string {
|
||||
[, $route, $objectType] = func_get_args();
|
||||
$activeObjectType = $context['objectType'] ?? false;
|
||||
$activeObjectType = $context['objectType'] ?? false;
|
||||
|
||||
if ($objectType === $activeObjectType && false !== stripos((string)Route::getCurrentRoute()->getName(), (string)$route)) {
|
||||
if ($objectType === $activeObjectType && false !== stripos((string) Route::getCurrentRoute()->getName(), (string) $route)) {
|
||||
return 'active';
|
||||
}
|
||||
|
||||
@@ -144,11 +145,11 @@ class General extends AbstractExtension
|
||||
}
|
||||
|
||||
/** @var Carbon $date */
|
||||
$date = now();
|
||||
$date = now();
|
||||
|
||||
// get the date from the current session. If it's in the future, keep `now()`.
|
||||
/** @var Carbon $session */
|
||||
$session = clone session('end', today(config('app.timezone'))->endOfMonth());
|
||||
$session = clone session('end', today(config('app.timezone'))->endOfMonth());
|
||||
if ($session->lt($date)) {
|
||||
$date = $session->copy();
|
||||
$date->endOfDay();
|
||||
@@ -156,13 +157,13 @@ class General extends AbstractExtension
|
||||
Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String()));
|
||||
|
||||
// 2025-10-08 replace finalAccountBalance with accountsBalancesOptimized.
|
||||
$info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id];
|
||||
$info = Steam::accountsBalancesOptimized(new Collection()->push($account), $date)[$account->id];
|
||||
// $info = Steam::finalAccountBalance($account, $date);
|
||||
$currency = Steam::getAccountCurrency($account);
|
||||
$primary = Amount::getPrimaryCurrency();
|
||||
$convertToPrimary = Amount::convertToPrimary();
|
||||
$usePrimary = $convertToPrimary && $primary->id !== $currency->id;
|
||||
$currency ??= $primary;
|
||||
$currency ??= $primary;
|
||||
$strings = [];
|
||||
foreach ($info as $key => $balance) {
|
||||
if ('balance' === $key) {
|
||||
@@ -202,7 +203,7 @@ class General extends AbstractExtension
|
||||
|
||||
protected function carbonize(): TwigFunction
|
||||
{
|
||||
return new TwigFunction('carbonize', static fn(string $date): Carbon => new Carbon($date, config('app.timezone')));
|
||||
return new TwigFunction('carbonize', static fn (string $date): Carbon => new Carbon($date, config('app.timezone')));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -225,15 +226,15 @@ class General extends AbstractExtension
|
||||
return new TwigFilter('filesize', static function (int $size): string {
|
||||
// less than one GB, more than one MB
|
||||
if ($size < (1024 * 1024 * 2014) && $size >= (1024 * 1024)) {
|
||||
return round($size / (1024 * 1024), 2) . ' MB';
|
||||
return round($size / (1024 * 1024), 2).' MB';
|
||||
}
|
||||
|
||||
// less than one MB
|
||||
if ($size < (1024 * 1024)) {
|
||||
return round($size / 1024, 2) . ' KB';
|
||||
return round($size / 1024, 2).' KB';
|
||||
}
|
||||
|
||||
return $size . ' bytes';
|
||||
return $size.' bytes';
|
||||
});
|
||||
}
|
||||
|
||||
@@ -282,7 +283,7 @@ class General extends AbstractExtension
|
||||
static function (string $text): string {
|
||||
$converter = new GithubFlavoredMarkdownConverter(['allow_unsafe_links' => false, 'max_nesting_level' => 5, 'html_input' => 'escape']);
|
||||
|
||||
return (string)$converter->convert($text);
|
||||
return (string) $converter->convert($text);
|
||||
},
|
||||
['is_safe' => ['html']]
|
||||
);
|
||||
@@ -315,15 +316,15 @@ class General extends AbstractExtension
|
||||
{
|
||||
return new TwigFilter(
|
||||
'mimeIcon',
|
||||
static fn(string $string): string => match ($string) {
|
||||
'application/pdf' => 'fa-file-pdf-o',
|
||||
static fn (string $string): string => match ($string) {
|
||||
'application/pdf' => 'fa-file-pdf-o',
|
||||
'image/webp',
|
||||
'image/png',
|
||||
'image/jpeg',
|
||||
'image/svg+xml',
|
||||
'image/heic',
|
||||
'image/heic-sequence',
|
||||
'application/vnd.oasis.opendocument.image' => 'fa-file-image-o',
|
||||
'application/vnd.oasis.opendocument.image' => 'fa-file-image-o',
|
||||
'application/msword',
|
||||
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
|
||||
@@ -336,7 +337,7 @@ class General extends AbstractExtension
|
||||
'application/vnd.oasis.opendocument.text',
|
||||
'application/vnd.oasis.opendocument.text-template',
|
||||
'application/vnd.oasis.opendocument.text-web',
|
||||
'application/vnd.oasis.opendocument.text-master' => 'fa-file-word-o',
|
||||
'application/vnd.oasis.opendocument.text-master' => 'fa-file-word-o',
|
||||
'application/vnd.ms-excel',
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
|
||||
@@ -344,7 +345,7 @@ class General extends AbstractExtension
|
||||
'application/vnd.sun.xml.calc.template',
|
||||
'application/vnd.stardivision.calc',
|
||||
'application/vnd.oasis.opendocument.spreadsheet',
|
||||
'application/vnd.oasis.opendocument.spreadsheet-template' => 'fa-file-excel-o',
|
||||
'application/vnd.oasis.opendocument.spreadsheet-template' => 'fa-file-excel-o',
|
||||
'application/vnd.ms-powerpoint',
|
||||
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
||||
'application/vnd.openxmlformats-officedocument.presentationml.template',
|
||||
@@ -353,18 +354,18 @@ class General extends AbstractExtension
|
||||
'application/vnd.sun.xml.impress.template',
|
||||
'application/vnd.stardivision.impress',
|
||||
'application/vnd.oasis.opendocument.presentation',
|
||||
'application/vnd.oasis.opendocument.presentation-template' => 'fa-file-powerpoint-o',
|
||||
'application/vnd.oasis.opendocument.presentation-template' => 'fa-file-powerpoint-o',
|
||||
'application/vnd.sun.xml.draw',
|
||||
'application/vnd.sun.xml.draw.template',
|
||||
'application/vnd.stardivision.draw',
|
||||
'application/vnd.oasis.opendocument.chart' => 'bi-paint-bucket',
|
||||
'application/vnd.oasis.opendocument.chart' => 'bi-paint-bucket',
|
||||
'application/vnd.oasis.opendocument.graphics',
|
||||
'application/vnd.oasis.opendocument.graphics-template',
|
||||
'application/vnd.sun.xml.math',
|
||||
'application/vnd.stardivision.math',
|
||||
'application/vnd.oasis.opendocument.formula',
|
||||
'application/vnd.oasis.opendocument.database' => 'fa-calculator',
|
||||
default => 'fa-file-o'
|
||||
'application/vnd.oasis.opendocument.database' => 'fa-calculator',
|
||||
default => 'fa-file-o'
|
||||
},
|
||||
['is_safe' => ['html']]
|
||||
);
|
||||
@@ -399,6 +400,6 @@ class General extends AbstractExtension
|
||||
|
||||
private function fireflyIIIConfig(): TwigFunction
|
||||
{
|
||||
return new TwigFunction('fireflyiiiconfig', static fn(string $string, mixed $default): mixed => AppConfiguration::get($string, $default)->data);
|
||||
return new TwigFunction('fireflyiiiconfig', static fn (string $string, mixed $default): mixed => AppConfiguration::get($string, $default)->data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,11 +23,11 @@ class TransactionAmount extends Component
|
||||
*/
|
||||
public function __construct(string $type, array $amount, array $foreign, array $sourceAccount, ?string $pcAmount, ?Account $account)
|
||||
{
|
||||
$this->type = $type;
|
||||
$this->amount = $amount;
|
||||
$this->foreign = $foreign;
|
||||
$this->account = $account;
|
||||
$this->pcAmount = $pcAmount;
|
||||
$this->type = $type;
|
||||
$this->amount = $amount;
|
||||
$this->foreign = $foreign;
|
||||
$this->account = $account;
|
||||
$this->pcAmount = $pcAmount;
|
||||
$this->sourceAccount = $sourceAccount;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Form\Alpine;
|
||||
|
||||
use Closure;
|
||||
@@ -14,20 +13,21 @@ class Checkbox extends Component
|
||||
public string $id;
|
||||
public string $value;
|
||||
public string $title;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(string $id, string $value, string $title)
|
||||
{
|
||||
$this->id = $id;
|
||||
$this->value= $value;
|
||||
$this->id = $id;
|
||||
$this->value = $value;
|
||||
$this->title = $title;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.form.alpine.checkbox');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Form\Alpine;
|
||||
|
||||
use Closure;
|
||||
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
|
||||
class Deliveries extends Component
|
||||
{
|
||||
public string $value;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(string $value)
|
||||
{
|
||||
$this->value= $value;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.form.alpine.deliveries');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Form\Alpine;
|
||||
|
||||
use Closure;
|
||||
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
|
||||
class Responses extends Component
|
||||
{
|
||||
public string $value;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(string $value)
|
||||
{
|
||||
$this->value= $value;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.form.alpine.responses');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Form\Alpine;
|
||||
|
||||
use Closure;
|
||||
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
|
||||
class Title extends Component
|
||||
{
|
||||
public string $value;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(string $value)
|
||||
{
|
||||
$this->value= $value;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.form.alpine.title');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Form\Alpine;
|
||||
|
||||
use Closure;
|
||||
@@ -13,19 +12,20 @@ class Triggers extends Component
|
||||
{
|
||||
public string $value;
|
||||
public string $multiple = '';
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(string $value, string $multiple = '')
|
||||
{
|
||||
$this->value= $value;
|
||||
$this->value = $value;
|
||||
$this->multiple = $multiple;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.form.alpine.triggers');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Form\Alpine;
|
||||
|
||||
use Closure;
|
||||
@@ -12,18 +11,19 @@ use Illuminate\View\Component;
|
||||
class Url extends Component
|
||||
{
|
||||
public string $value;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(string $value)
|
||||
{
|
||||
$this->value= $value;
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.form.alpine.url');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Lists;
|
||||
|
||||
use Closure;
|
||||
@@ -13,6 +12,7 @@ use Illuminate\View\Component;
|
||||
class Ale extends Component
|
||||
{
|
||||
public array|Collection $logEntries;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
@@ -24,7 +24,7 @@ class Ale extends Component
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.lists.ale');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Lists;
|
||||
|
||||
use Closure;
|
||||
@@ -12,11 +11,12 @@ use Illuminate\View\Component;
|
||||
|
||||
class Attachments extends Component
|
||||
{
|
||||
public Collection|array $attachments;
|
||||
public array|Collection $attachments;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(Collection|array $attachments)
|
||||
public function __construct(array|Collection $attachments)
|
||||
{
|
||||
$this->attachments = $attachments;
|
||||
}
|
||||
@@ -24,7 +24,7 @@ class Attachments extends Component
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.lists.attachments');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Lists;
|
||||
|
||||
use Closure;
|
||||
@@ -13,6 +12,7 @@ use Illuminate\View\Component;
|
||||
class Categories extends Component
|
||||
{
|
||||
public LengthAwarePaginator $categories;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
@@ -24,7 +24,7 @@ class Categories extends Component
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.lists.categories');
|
||||
}
|
||||
|
||||
@@ -13,26 +13,26 @@ use Illuminate\View\Component;
|
||||
|
||||
class GroupsLarge extends Component
|
||||
{
|
||||
public LengthAwarePaginator|Collection $groups;
|
||||
public ?Account $account;
|
||||
public bool $showCategory;
|
||||
public bool $showBudget;
|
||||
public Collection|LengthAwarePaginator $groups;
|
||||
public ?Account $account;
|
||||
public bool $showCategory;
|
||||
public bool $showBudget;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(LengthAwarePaginator| Collection $groups, ?bool $showCategory, ?bool $showBudget, ?Account $account = null)
|
||||
public function __construct(Collection|LengthAwarePaginator $groups, ?bool $showCategory, ?bool $showBudget, ?Account $account = null)
|
||||
{
|
||||
$this->groups = $groups;
|
||||
$this->account = $account;
|
||||
$this->showCategory = $showCategory ??false;
|
||||
$this->showCategory = $showCategory ?? false;
|
||||
$this->showBudget = $showBudget ?? false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): Closure | string | View
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.lists.groups-large');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Lists;
|
||||
|
||||
use Closure;
|
||||
@@ -14,19 +13,20 @@ class PiggyBankEvents extends Component
|
||||
{
|
||||
public Collection $events;
|
||||
public bool $showPiggyBank;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(Collection $events, bool $showPiggyBank)
|
||||
{
|
||||
$this->events = $events;
|
||||
$this->events = $events;
|
||||
$this->showPiggyBank = $showPiggyBank;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.lists.piggy-bank-events');
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
|
||||
namespace FireflyIII\View\Components\Report\Partial;
|
||||
|
||||
use Closure;
|
||||
@@ -15,12 +14,13 @@ class JournalsAudit extends Component
|
||||
public array $journals;
|
||||
public array $auditData;
|
||||
public Account $account;
|
||||
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct(array $journals,array $auditData, Account $account)
|
||||
public function __construct(array $journals, array $auditData, Account $account)
|
||||
{
|
||||
$this->journals = $journals;
|
||||
$this->journals = $journals;
|
||||
$this->auditData = $auditData;
|
||||
$this->account = $account;
|
||||
}
|
||||
@@ -28,7 +28,7 @@ class JournalsAudit extends Component
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
public function render(): Closure|string|View
|
||||
{
|
||||
return view('components.report.partial.journals-audit');
|
||||
}
|
||||
|
||||
Generated
+80
-80
@@ -1246,22 +1246,22 @@
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "7.13.2",
|
||||
"version": "7.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle.git",
|
||||
"reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd"
|
||||
"reference": "aef242412e13128b5049864867bb49fc37dd39de"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/bcd989ad36c92d42a3715379af91f2defee5b8dd",
|
||||
"reference": "bcd989ad36c92d42a3715379af91f2defee5b8dd",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/aef242412e13128b5049864867bb49fc37dd39de",
|
||||
"reference": "aef242412e13128b5049864867bb49fc37dd39de",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"guzzlehttp/promises": "^2.5",
|
||||
"guzzlehttp/psr7": "^2.12.3",
|
||||
"guzzlehttp/promises": "^2.5.1",
|
||||
"guzzlehttp/psr7": "^2.12.4",
|
||||
"php": "^7.2.5 || ^8.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"symfony/deprecation-contracts": "^2.5 || ^3.0",
|
||||
@@ -1354,7 +1354,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/guzzle/issues",
|
||||
"source": "https://github.com/guzzle/guzzle/tree/7.13.2"
|
||||
"source": "https://github.com/guzzle/guzzle/tree/7.14.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1370,20 +1370,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-07-05T19:00:11+00:00"
|
||||
"time": "2026-07-08T22:54:09+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/promises",
|
||||
"version": "2.5.0",
|
||||
"version": "2.5.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/promises.git",
|
||||
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e"
|
||||
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/4360e982f87f5f258bf872d094647791db2f4c8e",
|
||||
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/9ad1e4fc607446a055b95870c7f668e93b5cff29",
|
||||
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1438,7 +1438,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/promises/issues",
|
||||
"source": "https://github.com/guzzle/promises/tree/2.5.0"
|
||||
"source": "https://github.com/guzzle/promises/tree/2.5.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1454,20 +1454,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-02T12:23:43+00:00"
|
||||
"time": "2026-07-08T15:48:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/psr7",
|
||||
"version": "2.12.3",
|
||||
"version": "2.12.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/psr7.git",
|
||||
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d"
|
||||
"reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
|
||||
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c",
|
||||
"reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1557,7 +1557,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/psr7/issues",
|
||||
"source": "https://github.com/guzzle/psr7/tree/2.12.3"
|
||||
"source": "https://github.com/guzzle/psr7/tree/2.12.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1573,20 +1573,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-23T15:21:08+00:00"
|
||||
"time": "2026-07-08T15:56:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/uri-template",
|
||||
"version": "v1.0.8",
|
||||
"version": "v1.0.9",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/uri-template.git",
|
||||
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd"
|
||||
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/9c19128923b05a5d7355e5d2318d7808b7e33bbd",
|
||||
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd",
|
||||
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/d7580af6d3f8384325d9cd3e99b21c3ed1848176",
|
||||
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1643,7 +1643,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/uri-template/issues",
|
||||
"source": "https://github.com/guzzle/uri-template/tree/v1.0.8"
|
||||
"source": "https://github.com/guzzle/uri-template/tree/v1.0.9"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -1659,7 +1659,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-23T13:02:23+00:00"
|
||||
"time": "2026-07-08T16:19:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "jc5/google2fa-laravel",
|
||||
@@ -1885,16 +1885,16 @@
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v13.18.1",
|
||||
"version": "v13.19.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/framework.git",
|
||||
"reference": "7d66044819e269f05924793a6800022dc181d850"
|
||||
"reference": "514502b38e11bd676ecf83b271c9452cc7500f16"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/7d66044819e269f05924793a6800022dc181d850",
|
||||
"reference": "7d66044819e269f05924793a6800022dc181d850",
|
||||
"url": "https://api.github.com/repos/laravel/framework/zipball/514502b38e11bd676ecf83b271c9452cc7500f16",
|
||||
"reference": "514502b38e11bd676ecf83b271c9452cc7500f16",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2105,7 +2105,7 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2026-07-02T18:35:20+00:00"
|
||||
"time": "2026-07-07T14:13:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/passport",
|
||||
@@ -2844,16 +2844,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem",
|
||||
"version": "3.35.1",
|
||||
"version": "3.35.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/flysystem.git",
|
||||
"reference": "f23af6c5aafd958a7593029a271d77baf5ed793c"
|
||||
"reference": "b277b5dc3d56650b68904117124e79c851e12376"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f23af6c5aafd958a7593029a271d77baf5ed793c",
|
||||
"reference": "f23af6c5aafd958a7593029a271d77baf5ed793c",
|
||||
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b277b5dc3d56650b68904117124e79c851e12376",
|
||||
"reference": "b277b5dc3d56650b68904117124e79c851e12376",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -2921,9 +2921,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/flysystem/issues",
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.35.1"
|
||||
"source": "https://github.com/thephpleague/flysystem/tree/3.35.2"
|
||||
},
|
||||
"time": "2026-06-25T06:52:23+00:00"
|
||||
"time": "2026-07-06T14:42:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/flysystem-local",
|
||||
@@ -3046,16 +3046,16 @@
|
||||
},
|
||||
{
|
||||
"name": "league/mime-type-detection",
|
||||
"version": "1.16.0",
|
||||
"version": "1.17.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/mime-type-detection.git",
|
||||
"reference": "2d6702ff215bf922936ccc1ad31007edc76451b9"
|
||||
"reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9",
|
||||
"reference": "2d6702ff215bf922936ccc1ad31007edc76451b9",
|
||||
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/f5f47eff7c48ed1003069a2ca67f316fb4021c76",
|
||||
"reference": "f5f47eff7c48ed1003069a2ca67f316fb4021c76",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -3065,7 +3065,7 @@
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^3.2",
|
||||
"phpstan/phpstan": "^0.12.68",
|
||||
"phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
|
||||
"phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0 || ^11.0 || ^12.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@@ -3086,7 +3086,7 @@
|
||||
"description": "Mime-type detection for Flysystem",
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/mime-type-detection/issues",
|
||||
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0"
|
||||
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.17.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -3098,7 +3098,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-21T08:32:55+00:00"
|
||||
"time": "2026-07-09T11:49:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/oauth2-server",
|
||||
@@ -9936,16 +9936,16 @@
|
||||
},
|
||||
{
|
||||
"name": "vlucas/phpdotenv",
|
||||
"version": "v5.6.3",
|
||||
"version": "v5.6.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/vlucas/phpdotenv.git",
|
||||
"reference": "955e7815d677a3eaa7075231212f2110983adecc"
|
||||
"reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc",
|
||||
"reference": "955e7815d677a3eaa7075231212f2110983adecc",
|
||||
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/416df702837983f8d5ff48c9c3fee4f5f57b980b",
|
||||
"reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -10004,7 +10004,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/vlucas/phpdotenv/issues",
|
||||
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3"
|
||||
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -10016,7 +10016,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2025-12-27T19:49:13+00:00"
|
||||
"time": "2026-07-06T19:11:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "voku/portable-ascii",
|
||||
@@ -11798,16 +11798,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
"version": "14.2.2",
|
||||
"version": "14.2.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||
"reference": "10d7da3628a99289cdf4c662dd7f0d73f1baec83"
|
||||
"reference": "82f6e49ff224e2cde923d74425e583a883910783"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/10d7da3628a99289cdf4c662dd7f0d73f1baec83",
|
||||
"reference": "10d7da3628a99289cdf4c662dd7f0d73f1baec83",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/82f6e49ff224e2cde923d74425e583a883910783",
|
||||
"reference": "82f6e49ff224e2cde923d74425e583a883910783",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -11815,7 +11815,7 @@
|
||||
"ext-libxml": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"nikic/php-parser": "^5.7.0",
|
||||
"nikic/php-parser": "^5.8.0",
|
||||
"php": ">=8.4",
|
||||
"phpunit/php-text-template": "^6.0",
|
||||
"sebastian/complexity": "^6.0",
|
||||
@@ -11826,7 +11826,7 @@
|
||||
"theseer/tokenizer": "^2.0.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^13.2.0"
|
||||
"phpunit/phpunit": "^13.2.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-pcov": "PHP extension that provides line coverage",
|
||||
@@ -11864,7 +11864,7 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
||||
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/14.2.2"
|
||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/14.2.3"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -11884,7 +11884,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-08T11:50:38+00:00"
|
||||
"time": "2026-07-06T15:04:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-file-iterator",
|
||||
@@ -12181,30 +12181,30 @@
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "13.2.2",
|
||||
"version": "13.2.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "492c067e618de7b3c76105082c90f9d2833401b7"
|
||||
"reference": "8f5180f4627fc1978be2f61d8d9979dbe37e0c10"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/492c067e618de7b3c76105082c90f9d2833401b7",
|
||||
"reference": "492c067e618de7b3c76105082c90f9d2833401b7",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8f5180f4627fc1978be2f61d8d9979dbe37e0c10",
|
||||
"reference": "8f5180f4627fc1978be2f61d8d9979dbe37e0c10",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-dom": "*",
|
||||
"ext-filter": "*",
|
||||
"ext-json": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-xml": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"myclabs/deep-copy": "^1.13.4",
|
||||
"phar-io/manifest": "^2.0.4",
|
||||
"phar-io/version": "^3.2.1",
|
||||
"php": ">=8.4.1",
|
||||
"phpunit/php-code-coverage": "^14.2.2",
|
||||
"phpunit/php-code-coverage": "^14.2.3",
|
||||
"phpunit/php-file-iterator": "^7.0.0",
|
||||
"phpunit/php-invoker": "^7.0.0",
|
||||
"phpunit/php-text-template": "^6.0.0",
|
||||
@@ -12261,7 +12261,7 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/13.2.2"
|
||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/13.2.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -12269,20 +12269,20 @@
|
||||
"type": "other"
|
||||
}
|
||||
],
|
||||
"time": "2026-06-29T13:36:29+00:00"
|
||||
"time": "2026-07-08T08:36:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "rector/rector",
|
||||
"version": "2.5.3",
|
||||
"version": "2.5.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/rectorphp/rector.git",
|
||||
"reference": "3d3577ad88d70d9f8dccd0a4c2f75bf13d6268e6"
|
||||
"reference": "9718a72e7f1aacacbdcb6eeed07a47147bce802e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/rectorphp/rector/zipball/3d3577ad88d70d9f8dccd0a4c2f75bf13d6268e6",
|
||||
"reference": "3d3577ad88d70d9f8dccd0a4c2f75bf13d6268e6",
|
||||
"url": "https://api.github.com/repos/rectorphp/rector/zipball/9718a72e7f1aacacbdcb6eeed07a47147bce802e",
|
||||
"reference": "9718a72e7f1aacacbdcb6eeed07a47147bce802e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -12321,7 +12321,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/rectorphp/rector/issues",
|
||||
"source": "https://github.com/rectorphp/rector/tree/2.5.3"
|
||||
"source": "https://github.com/rectorphp/rector/tree/2.5.5"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -12329,7 +12329,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-07-05T01:32:08+00:00"
|
||||
"time": "2026-07-09T09:48:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/cli-parser",
|
||||
@@ -13021,24 +13021,24 @@
|
||||
},
|
||||
{
|
||||
"name": "sebastian/lines-of-code",
|
||||
"version": "5.0.1",
|
||||
"version": "5.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
|
||||
"reference": "d2cff273a90c79b0eb590baa682d4b5c318bdbb7"
|
||||
"reference": "d1b6f8fce682505dbd048977f1abedf1b8ad3ff8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d2cff273a90c79b0eb590baa682d4b5c318bdbb7",
|
||||
"reference": "d2cff273a90c79b0eb590baa682d4b5c318bdbb7",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d1b6f8fce682505dbd048977f1abedf1b8ad3ff8",
|
||||
"reference": "d1b6f8fce682505dbd048977f1abedf1b8ad3ff8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"nikic/php-parser": "^5.7.0",
|
||||
"nikic/php-parser": "^5.8.0",
|
||||
"php": ">=8.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^13.1.10"
|
||||
"phpunit/phpunit": "^13.2.4"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -13067,7 +13067,7 @@
|
||||
"support": {
|
||||
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
|
||||
"security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
|
||||
"source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.1"
|
||||
"source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -13087,7 +13087,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-05-19T16:23:37+00:00"
|
||||
"time": "2026-07-09T08:42:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/object-enumerator",
|
||||
|
||||
+3
-3
@@ -78,8 +78,8 @@ return [
|
||||
'running_balance_column' => (bool)env_default_when_empty(env('USE_RUNNING_BALANCE'), true), // this is only the default value, is not used.
|
||||
// see cer.php for exchange rates feature flag.
|
||||
],
|
||||
'version' => 'develop/2026-07-06',
|
||||
'build_time' => 1783312383,
|
||||
'version' => 'develop/2026-07-09',
|
||||
'build_time' => 1783619838,
|
||||
'api_version' => '2.1.0', // field is no longer used.
|
||||
'db_version' => 28, // field is no longer used.
|
||||
|
||||
@@ -390,7 +390,7 @@ return [
|
||||
AccountTypeEnum::MORTGAGE->value => AccountTypeEnum::MORTGAGE->value,
|
||||
],
|
||||
'transactionTypesByType' => [
|
||||
'all' => [TransactionTypeEnum::WITHDRAWAL->value, TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::TRANSFER->value],
|
||||
'all' => [TransactionTypeEnum::WITHDRAWAL->value, TransactionTypeEnum::DEPOSIT->value, TransactionTypeEnum::TRANSFER->value],
|
||||
'expenses' => ['Withdrawal'],
|
||||
'withdrawal' => ['Withdrawal'],
|
||||
'revenue' => ['Deposit'],
|
||||
|
||||
@@ -39,7 +39,7 @@ return [
|
||||
'date',
|
||||
'rate',
|
||||
'triggers',
|
||||
'help_rate_form'
|
||||
'help_rate_form',
|
||||
],
|
||||
'list' => [
|
||||
'drag_and_drop',
|
||||
@@ -143,7 +143,7 @@ return [
|
||||
'webhook_trigger_STORE_TRANSACTION',
|
||||
'webhook_trigger_UPDATE_TRANSACTION',
|
||||
'webhook_response_RELEVANT',
|
||||
'webhook_delivery_JSON'
|
||||
'webhook_delivery_JSON',
|
||||
// 'account_column_opt_drag_and_drop',
|
||||
// 'account_column_opt_active',
|
||||
// 'account_column_opt_name',
|
||||
|
||||
Generated
+76
-124
@@ -97,9 +97,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@oxc-project/types": {
|
||||
"version": "0.138.0",
|
||||
"resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.138.0.tgz",
|
||||
"integrity": "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==",
|
||||
"version": "0.139.0",
|
||||
"resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz",
|
||||
"integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
@@ -235,9 +235,6 @@
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -259,9 +256,6 @@
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -283,9 +277,6 @@
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -307,9 +298,6 @@
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -331,9 +319,6 @@
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -355,9 +340,6 @@
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -459,9 +441,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-android-arm64": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.4.tgz",
|
||||
"integrity": "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz",
|
||||
"integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -476,9 +458,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-darwin-arm64": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.4.tgz",
|
||||
"integrity": "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz",
|
||||
"integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -493,9 +475,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-darwin-x64": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.4.tgz",
|
||||
"integrity": "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz",
|
||||
"integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -510,9 +492,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-freebsd-x64": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.4.tgz",
|
||||
"integrity": "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz",
|
||||
"integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -527,9 +509,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.4.tgz",
|
||||
"integrity": "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz",
|
||||
"integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -544,16 +526,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-linux-arm64-gnu": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.4.tgz",
|
||||
"integrity": "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz",
|
||||
"integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -564,16 +543,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-linux-arm64-musl": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.4.tgz",
|
||||
"integrity": "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz",
|
||||
"integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -584,16 +560,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-linux-ppc64-gnu": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.4.tgz",
|
||||
"integrity": "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz",
|
||||
"integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -604,16 +577,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-linux-s390x-gnu": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.4.tgz",
|
||||
"integrity": "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz",
|
||||
"integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -624,16 +594,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-linux-x64-gnu": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.4.tgz",
|
||||
"integrity": "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz",
|
||||
"integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -644,16 +611,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-linux-x64-musl": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.4.tgz",
|
||||
"integrity": "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz",
|
||||
"integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -664,9 +628,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-openharmony-arm64": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.4.tgz",
|
||||
"integrity": "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz",
|
||||
"integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -681,9 +645,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-wasm32-wasi": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.4.tgz",
|
||||
"integrity": "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz",
|
||||
"integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==",
|
||||
"cpu": [
|
||||
"wasm32"
|
||||
],
|
||||
@@ -700,9 +664,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-win32-arm64-msvc": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.4.tgz",
|
||||
"integrity": "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz",
|
||||
"integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -717,9 +681,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rolldown/binding-win32-x64-msvc": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.4.tgz",
|
||||
"integrity": "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz",
|
||||
"integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1494,9 +1458,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/i18next": {
|
||||
"version": "26.3.4",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.4.tgz",
|
||||
"integrity": "sha512-pa7m0d7pBDqGHZxljT+WPFeyFgQ7P7SciPPo1tTqYuO0z4sqADYhwnBESmmGp/wEof1inwdls/k8ZgTg8rxFHA==",
|
||||
"version": "26.3.6",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-26.3.6.tgz",
|
||||
"integrity": "sha512-Bu5Z2nAXgfVyM8xvW3jk9EKRIuX37PudsrBViThNFx7CR7aaYTpP01cxNB/E4c4UUzTDiAZRstEhsRfPOL/8xA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
@@ -1513,7 +1477,7 @@
|
||||
],
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"typescript": "^5 || ^6"
|
||||
"typescript": "^5 || ^6 || ^7"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
@@ -1857,9 +1821,6 @@
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MPL-2.0",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -1881,9 +1842,6 @@
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MPL-2.0",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -1905,9 +1863,6 @@
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"glibc"
|
||||
],
|
||||
"license": "MPL-2.0",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -1929,9 +1884,6 @@
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"libc": [
|
||||
"musl"
|
||||
],
|
||||
"license": "MPL-2.0",
|
||||
"optional": true,
|
||||
"os": [
|
||||
@@ -2217,13 +2169,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rolldown": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.4.tgz",
|
||||
"integrity": "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA==",
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz",
|
||||
"integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@oxc-project/types": "=0.138.0",
|
||||
"@oxc-project/types": "=0.139.0",
|
||||
"@rolldown/pluginutils": "^1.0.0"
|
||||
},
|
||||
"bin": {
|
||||
@@ -2233,21 +2185,21 @@
|
||||
"node": "^20.19.0 || >=22.12.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rolldown/binding-android-arm64": "1.1.4",
|
||||
"@rolldown/binding-darwin-arm64": "1.1.4",
|
||||
"@rolldown/binding-darwin-x64": "1.1.4",
|
||||
"@rolldown/binding-freebsd-x64": "1.1.4",
|
||||
"@rolldown/binding-linux-arm-gnueabihf": "1.1.4",
|
||||
"@rolldown/binding-linux-arm64-gnu": "1.1.4",
|
||||
"@rolldown/binding-linux-arm64-musl": "1.1.4",
|
||||
"@rolldown/binding-linux-ppc64-gnu": "1.1.4",
|
||||
"@rolldown/binding-linux-s390x-gnu": "1.1.4",
|
||||
"@rolldown/binding-linux-x64-gnu": "1.1.4",
|
||||
"@rolldown/binding-linux-x64-musl": "1.1.4",
|
||||
"@rolldown/binding-openharmony-arm64": "1.1.4",
|
||||
"@rolldown/binding-wasm32-wasi": "1.1.4",
|
||||
"@rolldown/binding-win32-arm64-msvc": "1.1.4",
|
||||
"@rolldown/binding-win32-x64-msvc": "1.1.4"
|
||||
"@rolldown/binding-android-arm64": "1.1.5",
|
||||
"@rolldown/binding-darwin-arm64": "1.1.5",
|
||||
"@rolldown/binding-darwin-x64": "1.1.5",
|
||||
"@rolldown/binding-freebsd-x64": "1.1.5",
|
||||
"@rolldown/binding-linux-arm-gnueabihf": "1.1.5",
|
||||
"@rolldown/binding-linux-arm64-gnu": "1.1.5",
|
||||
"@rolldown/binding-linux-arm64-musl": "1.1.5",
|
||||
"@rolldown/binding-linux-ppc64-gnu": "1.1.5",
|
||||
"@rolldown/binding-linux-s390x-gnu": "1.1.5",
|
||||
"@rolldown/binding-linux-x64-gnu": "1.1.5",
|
||||
"@rolldown/binding-linux-x64-musl": "1.1.5",
|
||||
"@rolldown/binding-openharmony-arm64": "1.1.5",
|
||||
"@rolldown/binding-wasm32-wasi": "1.1.5",
|
||||
"@rolldown/binding-win32-arm64-msvc": "1.1.5",
|
||||
"@rolldown/binding-win32-x64-msvc": "1.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/rxjs": {
|
||||
@@ -2536,16 +2488,16 @@
|
||||
"link": true
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "8.1.3",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-8.1.3.tgz",
|
||||
"integrity": "sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==",
|
||||
"version": "8.1.4",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-8.1.4.tgz",
|
||||
"integrity": "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"lightningcss": "^1.32.0",
|
||||
"picomatch": "^4.0.4",
|
||||
"picomatch": "^4.0.5",
|
||||
"postcss": "^8.5.16",
|
||||
"rolldown": "~1.1.3",
|
||||
"rolldown": "~1.1.4",
|
||||
"tinyglobby": "^0.2.17"
|
||||
},
|
||||
"bin": {
|
||||
|
||||
@@ -49,7 +49,7 @@ return [
|
||||
'reports' => 'Reports',
|
||||
'search_result' => 'Search results for ":query"',
|
||||
'withdrawal_list' => 'Expenses',
|
||||
'all_list' => 'All transactions',
|
||||
'all_list' => 'All transactions',
|
||||
'Withdrawal_list' => 'Expenses',
|
||||
'deposit_list' => 'Revenue, income and deposits',
|
||||
'transfer_list' => 'Transfers',
|
||||
|
||||
@@ -186,7 +186,7 @@ return [
|
||||
'all_withdrawal' => 'All expenses',
|
||||
'all_transactions' => 'All transactions',
|
||||
'title_withdrawal_between' => 'All expenses between :start and :end',
|
||||
'title_all_between' => 'All transactions between :start and :end',
|
||||
'title_all_between' => 'All transactions between :start and :end',
|
||||
'all_deposit' => 'All revenue',
|
||||
'title_deposit_between' => 'All revenue between :start and :end',
|
||||
'all_transfers' => 'All transfers',
|
||||
@@ -249,7 +249,7 @@ return [
|
||||
'webhooks' => 'Webhooks',
|
||||
'webhooks_breadcrumb' => 'Webhooks',
|
||||
'webhooks_menu_disabled' => 'disabled',
|
||||
'cer_menu_disabled' => 'disabled',
|
||||
'cer_menu_disabled' => 'disabled',
|
||||
'no_webhook_messages' => 'There are no webhook messages',
|
||||
'webhook_trigger_ANY' => 'After any event',
|
||||
'webhook_trigger_STORE_TRANSACTION' => 'After transaction creation',
|
||||
@@ -295,7 +295,7 @@ return [
|
||||
'reset_webhook_secret' => 'Reset webhook secret',
|
||||
'webhook_stored_link' => '<a href="webhooks/show/{ID}">Webhook #{ID} ("{title}")</a> has been stored.',
|
||||
'webhook_updated_link' => '<a href="webhooks/show/{ID}">Webhook #{ID}</a> ("{title}") has been updated.',
|
||||
'no_webhooks' => 'You have no webhooks. Please create one. Webhooks can be used to make external systems respond to Firefly III events, like newly created transactions or updated budgets.',
|
||||
'no_webhooks' => 'You have no webhooks. Please create one. Webhooks can be used to make external systems respond to Firefly III events, like newly created transactions or updated budgets.',
|
||||
|
||||
// API access
|
||||
'authorization_request' => 'Firefly III v:version Authorization Request',
|
||||
@@ -1963,8 +1963,8 @@ return [
|
||||
'extension_date_is' => 'Extension date is {date}',
|
||||
|
||||
// accounts:
|
||||
'disabled_split_account_dest' => 'This field is disabled. You can only change the destination account from the first split, and it will be applied to all splits.',
|
||||
'disabled_split_account_src' => 'This field is disabled. You can only change the source account from the first split, and it will be applied to all splits.',
|
||||
'disabled_split_account_dest' => 'This field is disabled. You can only change the destination account from the first split, and it will be applied to all splits.',
|
||||
'disabled_split_account_src' => 'This field is disabled. You can only change the source account from the first split, and it will be applied to all splits.',
|
||||
'account_locked_currency' => 'The currency of this account must remain :name as long as piggy banks are linked to it.',
|
||||
'i_am_owed_amount' => 'I am owed amount',
|
||||
'i_owe_amount' => 'I owe amount',
|
||||
@@ -2071,7 +2071,7 @@ return [
|
||||
'reconcile_this_account' => 'Reconcile this account',
|
||||
'reconcile' => 'Reconcile',
|
||||
'show' => 'Show',
|
||||
'hide' => 'Hide',
|
||||
'hide' => 'Hide',
|
||||
'confirm_reconciliation' => 'Confirm reconciliation',
|
||||
'submitted_start_balance' => 'Submitted start balance',
|
||||
'selected_transactions' => 'Selected transactions (:count)',
|
||||
@@ -2148,7 +2148,7 @@ return [
|
||||
'deleted_reconciliation' => 'Successfully deleted reconciliation transaction ":description"',
|
||||
'stored_journal' => 'Successfully created new transaction ":description"',
|
||||
'stored_journal_js' => 'Successfully created new transaction "{{description}}"',
|
||||
'updated_journal_js' => 'Successfully updated transaction "{{description}}"',
|
||||
'updated_journal_js' => 'Successfully updated transaction "{{description}}"',
|
||||
'stored_journal_no_descr' => 'Successfully created your new transaction',
|
||||
'updated_journal_no_descr' => 'Successfully updated your transaction',
|
||||
'select_transactions' => 'Select transactions',
|
||||
@@ -2801,9 +2801,9 @@ return [
|
||||
'no_categories_intro_default' => 'You have no categories yet. Categories are used to fine tune your transactions and label them with their designated category.',
|
||||
'no_categories_imperative_default' => 'Categories are created automatically when you create transactions, but you can create one manually too. Let\'s create one now:',
|
||||
'no_categories_create_default' => 'Create a category',
|
||||
'no_object-groups_title_default' => 'Object groups',
|
||||
'no_object-groups_intro_default' => 'Some things in Firefly III can be divided into groups. Piggy banks for example, feature a "Group" field in the edit and create screens. When you set this field, you can edit the names and the order of the groups on this page.',
|
||||
'no_object-groups_imperative_default' => 'For more information, check out the help-pages in the top right corner, under the (?)-icon. ',
|
||||
'no_object-groups_title_default' => 'Object groups',
|
||||
'no_object-groups_intro_default' => 'Some things in Firefly III can be divided into groups. Piggy banks for example, feature a "Group" field in the edit and create screens. When you set this field, you can edit the names and the order of the groups on this page.',
|
||||
'no_object-groups_imperative_default' => 'For more information, check out the help-pages in the top right corner, under the (?)-icon. ',
|
||||
'no_tags_title_default' => 'Let\'s create a tag!',
|
||||
'no_tags_intro_default' => 'You have no tags yet. Tags are used to fine tune your transactions and label them with specific keywords.',
|
||||
'no_tags_imperative_default' => 'Tags are created automatically when you create transactions, but you can create one manually too. Let\'s create one now:',
|
||||
|
||||
@@ -136,7 +136,7 @@ return [
|
||||
'mime' => 'Mime type',
|
||||
'size' => 'Size',
|
||||
'trigger' => 'Trigger',
|
||||
'triggers' => 'Triggers',
|
||||
'triggers' => 'Triggers',
|
||||
'stop_processing' => 'Stop processing',
|
||||
'end_date' => 'End date',
|
||||
'enddate' => 'End date',
|
||||
@@ -269,9 +269,9 @@ return [
|
||||
'key' => 'Key',
|
||||
'value' => 'Content of record',
|
||||
'webhook_delivery' => 'Delivery',
|
||||
'deliveries' => 'Deliveries',
|
||||
'deliveries' => 'Deliveries',
|
||||
'webhook_response' => 'Response',
|
||||
'responses' => 'Responses',
|
||||
'responses' => 'Responses',
|
||||
'webhook_trigger' => 'Trigger',
|
||||
'pushover_app_token' => 'Pushover app token',
|
||||
'pushover_user_token' => 'Pushover user token',
|
||||
|
||||
@@ -27,8 +27,8 @@ return [
|
||||
'icon' => 'Icon',
|
||||
'id' => 'ID',
|
||||
'create_date' => 'Created at',
|
||||
'responds_when' => 'Responds when',
|
||||
'responds_with' => 'Responds with',
|
||||
'responds_when' => 'Responds when',
|
||||
'responds_with' => 'Responds with',
|
||||
'primary_currency' => 'Primary currency',
|
||||
'update_date' => 'Updated at',
|
||||
'updated_at' => 'Updated at',
|
||||
|
||||
Reference in New Issue
Block a user