mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-12-10 13:21:21 +00:00
Merge pull request #11156 from firefly-iii/develop
🤖 Automatically merge the PR into the main branch.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
11
changelog.md
11
changelog.md
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user