Compare commits

...

12 Commits

Author SHA1 Message Date
github-actions[bot]
e7432d791e Merge pull request #11200 from firefly-iii/develop
🤖 Automatically merge the PR into the main branch.
2025-11-08 23:45:26 +01:00
github-actions[bot]
3a26ed5cfa Merge pull request #11199 from firefly-iii/release-1762641914
🤖 Automatically merge the PR into the develop branch.
2025-11-08 23:45:22 +01:00
JC5
119bc96669 🤖 Auto commit for release 'v6.4.6' on 2025-11-08 2025-11-08 23:45:14 +01:00
github-actions[bot]
93238e3993 Merge pull request #11198 from firefly-iii/release-1762641474
🤖 Automatically merge the PR into the develop branch.
2025-11-08 23:38:02 +01:00
JC5
eed5f1ca92 🤖 Auto commit for release 'develop' on 2025-11-08 2025-11-08 23:37:54 +01:00
James Cole
ae2ab86e88 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2025-11-08 23:33:57 +01:00
github-actions[bot]
4c4e7e4125 Merge pull request #11197 from firefly-iii/release-1762640849
🤖 Automatically merge the PR into the develop branch.
2025-11-08 23:27:38 +01:00
JC5
37d6319fb1 🤖 Auto commit for release 'develop' on 2025-11-08 2025-11-08 23:27:29 +01:00
James Cole
444c038d9f Fix #11196 2025-11-08 23:23:09 +01:00
James Cole
4cd9d543eb Merge branch 'main' into develop 2025-11-08 19:24:00 +01:00
James Cole
3963648bb7 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2025-11-08 19:23:38 +01:00
James Cole
aee5f5cdf8 Go to end of month for #11191 2025-11-08 19:23:31 +01:00
6 changed files with 36 additions and 19 deletions

View File

@@ -57,26 +57,26 @@ return RectorConfig::configure()
// uncomment to reach your current PHP version // uncomment to reach your current PHP version
->withPhpSets() ->withPhpSets()
->withPreparedSets( ->withPreparedSets(
deadCode: true,
codeQuality: true,
codingStyle: false, // leave false codingStyle: false, // leave false
typeDeclarations: true,
typeDeclarationDocblocks: false,
privatization: false, // leave false. privatization: false, // leave false.
naming: false, // leave false naming: false, // leave false
instanceOf: true, instanceOf: true,
earlyReturn: true, earlyReturn: true,
strictBooleans: true, // strictBooleans: true, // has a new thingie.
carbon: true, carbon: true,
rectorPreset: true, rectorPreset: true,
phpunitCodeQuality: true, phpunitCodeQuality: true,
doctrineCodeQuality: true, doctrineCodeQuality: true,
symfonyCodeQuality: true, symfonyCodeQuality: true,
symfonyConfigs: true symfonyConfigs: true,
) )
->withComposerBased( ->withComposerBased(
twig: true, twig: true,
doctrine: true, doctrine: true,
phpunit: true, phpunit: true,
symfony: true) symfony: true)
->withTypeCoverageLevel(0)
->withDeadCodeLevel(0)
->withCodeQualityLevel(0)
->withImportNames(removeUnusedImports: true);// import statements instead of full classes. ->withImportNames(removeUnusedImports: true);// import statements instead of full classes.

View File

@@ -69,7 +69,7 @@ class HomeController extends Controller
$stringStart = e((string) $request->get('start')); $stringStart = e((string) $request->get('start'));
$start = Carbon::createFromFormat('Y-m-d', $stringStart); $start = Carbon::createFromFormat('Y-m-d', $stringStart);
} catch (InvalidFormatException) { } catch (InvalidFormatException) {
app('log')->error(sprintf('Start: could not parse date string "%s" so ignore it.', $stringStart)); Log::error(sprintf('Start: could not parse date string "%s" so ignore it.', $stringStart));
$start = Carbon::now()->startOfMonth(); $start = Carbon::now()->startOfMonth();
} }
@@ -77,7 +77,7 @@ class HomeController extends Controller
$stringEnd = e((string) $request->get('end')); $stringEnd = e((string) $request->get('end'));
$end = Carbon::createFromFormat('Y-m-d', $stringEnd); $end = Carbon::createFromFormat('Y-m-d', $stringEnd);
} catch (InvalidFormatException) { } catch (InvalidFormatException) {
app('log')->error(sprintf('End could not parse date string "%s" so ignore it.', $stringEnd)); Log::error(sprintf('End could not parse date string "%s" so ignore it.', $stringEnd));
$end = Carbon::now()->endOfMonth(); $end = Carbon::now()->endOfMonth();
} }
if (null === $start) { if (null === $start) {
@@ -90,12 +90,12 @@ class HomeController extends Controller
$label = $request->get('label'); $label = $request->get('label');
$isCustomRange = false; $isCustomRange = false;
app('log')->debug('dateRange: Received dateRange', ['start' => $stringStart, 'end' => $stringEnd, 'label' => $request->get('label')]); Log::debug('dateRange: Received dateRange', ['start' => $stringStart, 'end' => $stringEnd, 'label' => $request->get('label')]);
// check if the label is "everything" or "Custom range" which will betray // check if the label is "everything" or "Custom range" which will betray
// a possible problem with the budgets. // a possible problem with the budgets.
if ($label === (string) trans('firefly.everything') || $label === (string) trans('firefly.customRange')) { if ($label === (string) trans('firefly.everything') || $label === (string) trans('firefly.customRange')) {
$isCustomRange = true; $isCustomRange = true;
app('log')->debug('Range is now marked as "custom".'); Log::debug('Range is now marked as "custom".');
} }
$diff = $start->diffInDays($end, true) + 1; $diff = $start->diffInDays($end, true) + 1;
@@ -105,11 +105,11 @@ class HomeController extends Controller
} }
$request->session()->put('is_custom_range', $isCustomRange); $request->session()->put('is_custom_range', $isCustomRange);
app('log')->debug(sprintf('Set is_custom_range to %s', var_export($isCustomRange, true))); Log::debug(sprintf('Set is_custom_range to %s', var_export($isCustomRange, true)));
$request->session()->put('start', $start); $request->session()->put('start', $start);
app('log')->debug(sprintf('Set start to %s', $start->format('Y-m-d H:i:s'))); Log::debug(sprintf('Set start to %s', $start->format('Y-m-d H:i:s')));
$request->session()->put('end', $end); $request->session()->put('end', $end);
app('log')->debug(sprintf('Set end to %s', $end->format('Y-m-d H:i:s'))); Log::debug(sprintf('Set end to %s', $end->format('Y-m-d H:i:s')));
return response()->json(['ok' => 'ok']); return response()->json(['ok' => 'ok']);
} }
@@ -161,7 +161,7 @@ class HomeController extends Controller
$today = today(config('app.timezone')); $today = today(config('app.timezone'));
$accounts = $accounts->sortBy('order'); // sort frontpage accounts by order $accounts = $accounts->sortBy('order'); // sort frontpage accounts by order
app('log')->debug('Frontpage accounts are ', $frontpageArray); Log::debug('Frontpage accounts are ', $frontpageArray);
/** @var BillRepositoryInterface $billRepository */ /** @var BillRepositoryInterface $billRepository */
$billRepository = app(BillRepositoryInterface::class); $billRepository = app(BillRepositoryInterface::class);

View File

@@ -154,8 +154,8 @@ class EditController extends Controller
$array['repeat_until'] = substr((string) $array['repeat_until'], 0, 10); $array['repeat_until'] = substr((string) $array['repeat_until'], 0, 10);
$array['transactions'][0]['tags'] = implode(',', $array['transactions'][0]['tags'] ?? []); $array['transactions'][0]['tags'] = implode(',', $array['transactions'][0]['tags'] ?? []);
$array['transactions'][0]['amount'] = round((float) $array['transactions'][0]['amount'], $array['transactions'][0]['currency_decimal_places']); $array['transactions'][0]['amount'] = round((float) $array['transactions'][0]['amount'], $array['transactions'][0]['currency_decimal_places']);
if (null !== $array['transactions'][0]['foreign_amount']) { if (null !== $array['transactions'][0]['foreign_amount'] && '' !== $array['transactions'][0]['foreign_amount']) {
$array['transactions'][0]['foreign_amount'] = round((float) $array['transactions'][0]['foreign_amount'], $array['transactions'][0]['foreign_currency_decimal_places']); $array['transactions'][0]['foreign_amount'] = round((float) $array['transactions'][0]['foreign_amount'], $array['transactions'][0]['foreign_currency_decimal_places'] ?? 2);
} }
return view( return view(

View File

@@ -157,6 +157,14 @@ class General extends AbstractExtension
/** @var Carbon $date */ /** @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());
if ($session->lt($date)) {
$date = $session->copy();
$date->endOfDay();
}
Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String())); Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String()));
// 2025-10-08 replace finalAccountBalance with accountsBalancesOptimized. // 2025-10-08 replace finalAccountBalance with accountsBalancesOptimized.

View File

@@ -3,7 +3,16 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/). This project adheres to [Semantic Versioning](http://semver.org/).
## 6.4.5 - 2025-11-xx ## 6.4.6 - 2025-11-09
### Fixed
- [Issue 11157](https://github.com/firefly-iii/firefly-iii/issues/11157) (Redacted amounts misbehave with Reports) reported by @barreeeiroo
- [Issue 11166](https://github.com/firefly-iii/firefly-iii/issues/11166) (Optional transaction information field not saved when updating a recuring transaction) reported by @Old-Veeh
- [Issue 11185](https://github.com/firefly-iii/firefly-iii/issues/11185) (Internal server error after apply rule) reported by @Citroene
- [Issue 11196](https://github.com/firefly-iii/firefly-iii/issues/11196) (Exception when editing recurring transaction) reported by @Insprill
## 6.4.5 - 2025-11-09
### Fixed ### Fixed

View File

@@ -78,8 +78,8 @@ return [
'running_balance_column' => env('USE_RUNNING_BALANCE', false), 'running_balance_column' => env('USE_RUNNING_BALANCE', false),
// see cer.php for exchange rates feature flag. // see cer.php for exchange rates feature flag.
], ],
'version' => '6.4.5', 'version' => '6.4.6',
'build_time' => 1762597345, 'build_time' => 1762641809,
'api_version' => '2.1.0', // field is no longer used. 'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used. 'db_version' => 28, // field is no longer used.