Merge pull request #11156 from firefly-iii/develop

🤖 Automatically merge the PR into the main branch.
This commit is contained in:
github-actions[bot]
2025-11-01 20:47:59 +01:00
committed by GitHub
10 changed files with 46 additions and 20 deletions

View File

@@ -4,6 +4,7 @@ Over time, many people have contributed to Firefly III. Their efforts are not al
Please find below all the people who contributed to the Firefly III code. Their names are mentioned in the year of their first contribution.
## 2025
- Jihad
- jreyesr
- codearena-bot
- Nicky De Maeyer

View File

@@ -81,6 +81,7 @@ class AccountController extends Controller
*/
public function accounts(AutocompleteApiRequest $request): JsonResponse
{
Log::debug('Before All.');
[
'types' => $types,
'query' => $query,
@@ -89,7 +90,6 @@ class AccountController extends Controller
]
= $request->attributes->all();
$date ??= today(config('app.timezone'));
// set date to end-of-day for account balance. so it is at $date 23:59:59

View File

@@ -40,10 +40,6 @@ class DateRangeRequest extends ApiRequest
$validator->after(
function (Validator $validator): void {
if ($validator->failed()) {
// set null values
$this->attributes->set('start', null);
$this->attributes->set('end', null);
return;
}
$start = $this->getCarbonDate('start')?->startOfDay();

View File

@@ -47,11 +47,14 @@ class AccountTypesApiRequest extends ApiRequest
if ($validator->failed()) {
return;
}
$type = $this->convertString('types', 'all');
$this->attributes->add([
'types' => $this->mapAccountTypes($type),
]);
$types = explode(',', $this->convertString('types', 'all'));
$result = [];
// split and find all types:
foreach ($types as $type) {
$result = array_merge($result, $this->mapAccountTypes($type));
}
$result = array_unique($result);
$this->attributes->set('types', $result);
}
);
}

View File

@@ -68,12 +68,10 @@ class PaginationRequest extends ApiRequest
$user = auth()->user();
$limit = (int)Preferences::getForUser($user, 'listPageSize', 50)->data;
}
$page = $this->convertInteger('page');
$page = min(max(1, $page), 2 ** 16);
$offset = ($page - 1) * $limit;
$sort = $this->sortClass ? $this->convertSortParameters('sort', $this->sortClass) : $this->get('sort');
$this->attributes->set('limit', $limit);
$this->attributes->set('sort', $sort);
$this->attributes->set('page', $page);

View File

@@ -39,6 +39,7 @@ use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Safe\Exceptions\UrlException;
use ValueError;
use function Safe\parse_url;
@@ -671,8 +672,22 @@ class Steam
{
// Log::debug(sprintf('getSafeUrl(%s, %s)', $unknownUrl, $safeUrl));
$returnUrl = $safeUrl;
$unknownHost = parse_url($unknownUrl, PHP_URL_HOST);
$safeHost = parse_url($safeUrl, PHP_URL_HOST);
try {
$unknownHost = parse_url($unknownUrl, PHP_URL_HOST);
} catch (UrlException $e) {
Log::error(sprintf('Could not parse "%s": %s', $unknownUrl, $e->getMessage()));
return $returnUrl;
}
try {
$safeHost = parse_url($safeUrl, PHP_URL_HOST);
} catch (UrlException $e) {
Log::error(sprintf('Could not parse "%s": %s', $unknownUrl, $e->getMessage()));
return $returnUrl;
}
if (null !== $unknownHost && $unknownHost === $safeHost) {
$returnUrl = $unknownUrl;

View File

@@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## 6.4.4 - 2025-11-02
### Added
- [PR 11140](https://github.com/firefly-iii/firefly-iii/pull/11140) (Add Saudi Riyal (SAR) currency) reported by @Jihad
### Fixed
- [Issue 11144](https://github.com/firefly-iii/firefly-iii/issues/11144) (Initial balance is auto suggested as an account) reported by @elliot-gh
- [Issue 11147](https://github.com/firefly-iii/firefly-iii/issues/11147) (Start and End Balance gets blanked out during reconciliation) reported by @lrdshaper
## 6.4.3 - 2025-11-01
### Added

View File

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

View File

@@ -85,6 +85,7 @@ class TransactionCurrencySeeder extends Seeder
$currencies[] = ['code' => 'NOK', 'name' => 'Norwegian krone', 'symbol' => 'kr.', 'decimal_places' => 2];
$currencies[] = ['code' => 'CZK', 'name' => 'Czech koruna', 'symbol' => 'Kč', 'decimal_places' => 2];
$currencies[] = ['code' => 'KZT', 'name' => 'Kazakhstani tenge', 'symbol' => '₸', 'decimal_places' => 2];
$currencies[] = ['code' => 'SAR', 'name' => 'Saudi Riyal', 'symbol' => 'SAR', 'decimal_places' => 2];
foreach ($currencies as $currency) {
if (null === TransactionCurrency::where('code', $currency['code'])->first()) {

View File

@@ -89,9 +89,9 @@ function selectAllReconcile(e) {
console.log('in selectAllReconcile(' + journalId + ') with amount ' + amount + ' and selected amount ' + selectedAmount);
// do nothing if line is already in target state
if (check.prop('checked') === doCheck )
if (check.prop('checked') === doCheck)
return;
check.prop('checked', doCheck);
// if checked, add to selected amount
if (doCheck === true && check.data('younger') === false) {
@@ -201,6 +201,7 @@ function getTransactionsForRange() {
$.getJSON(url).done(placeTransactions).catch(exceptionHandling)
}
function exceptionHandling() {
$('#transactions_holder').empty().append($('<p>').addClass('text-center lead').html(selectRangeAndBalance));
$('.start_reconcile').show();
@@ -254,8 +255,8 @@ function placeTransactions(data) {
selectedAmount = 0;
// update start + end balance when user has not touched them.
if (!changedBalances) {
$('input[name="start_balance"]').val(data.startBalance);
$('input[name="end_balance"]').val(data.endBalance);
$('input[name="start_balance"]').val(data.startBalance.balance);
$('input[name="end_balance"]').val(data.endBalance.balance);
}
// as long as the dates are equal, changing the balance does not matter.