Compare commits

...

18 Commits

Author SHA1 Message Date
github-actions[bot]
c91c87d646 Merge pull request #11043 from firefly-iii/release-1760095977
🤖 Automatically merge the PR into the develop branch.
2025-10-10 13:33:06 +02:00
JC5
e09b6034f7 🤖 Auto commit for release 'develop' on 2025-10-10 2025-10-10 13:32:57 +02:00
Sander Dorigo
a88d0de34d Merge branch 'develop' of https://github.com/firefly-iii/firefly-iii into develop 2025-10-10 13:28:56 +02:00
Sander Dorigo
ecf498cc81 Add more options 2025-10-10 13:18:47 +02:00
James Cole
7d45bc46b8 Merge pull request #11041 from jreyesr/patch-1
Add XML mimetypes to the allowedMimes list
2025-10-10 08:58:18 +02:00
mergify[bot]
08553fcfb2 Merge branch 'develop' into patch-1 2025-10-10 06:47:30 +00:00
mergify[bot]
3fa1b6dd27 Merge branch 'develop' into patch-1 2025-10-10 06:46:54 +00:00
Sander Dorigo
63aa8adab7 Import forgotten class 2025-10-10 08:46:47 +02:00
Sander Dorigo
70b8ea0acb Basic check on numbers, needs improv still. 2025-10-10 08:46:11 +02:00
jreyesr
d800a01e33 Add XML mimetypes to the allowedMimes list
Signed-off-by: jreyesr <jreyesr@users.noreply.github.com>
2025-10-09 15:40:07 -05:00
Sander Dorigo
d4978a09ee Fix #11038 2025-10-09 12:35:51 +02:00
github-actions[bot]
77095276e2 Merge pull request #11037 from firefly-iii/release-1759999962
🤖 Automatically merge the PR into the develop branch.
2025-10-09 10:52:52 +02:00
JC5
b77a8591dc 🤖 Auto commit for release 'develop' on 2025-10-09 2025-10-09 10:52:43 +02:00
James Cole
132d7d9ff8 Update some logging. 2025-10-09 06:27:15 +02:00
github-actions[bot]
a981e2c5cb Merge pull request #11034 from firefly-iii/release-1759932290
🤖 Automatically merge the PR into the develop branch.
2025-10-08 16:05:00 +02:00
JC5
77b88b7758 🤖 Auto commit for release 'develop' on 2025-10-08 2025-10-08 16:04:50 +02:00
James Cole
b9894eea57 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2025-10-08 15:58:43 +02:00
James Cole
469319a240 Remove plusses. 2025-10-08 15:56:33 +02:00
10 changed files with 66 additions and 50 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
- jreyesr
- codearena-bot
- Nicky De Maeyer
- Denis Iskandarov

View File

@@ -26,6 +26,7 @@ namespace FireflyIII\Factory;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
use Illuminate\Support\Facades\Log;
/**
* Create piggy bank events.
@@ -36,9 +37,9 @@ class PiggyBankEventFactory
{
public function create(TransactionJournal $journal, ?PiggyBank $piggyBank): void
{
app('log')->debug(sprintf('Now in PiggyBankEventCreate for a %s', $journal->transactionType->type));
Log::debug(sprintf('Now in PiggyBankEventCreate for a %s', $journal->transactionType->type));
if (!$piggyBank instanceof PiggyBank) {
app('log')->debug('Piggy bank is null');
Log::debug('Piggy bank is null');
return;
}
@@ -49,7 +50,7 @@ class PiggyBankEventFactory
$amount = $piggyRepos->getExactAmount($piggyBank, $journal);
if (0 === bccomp($amount, '0')) {
app('log')->debug('Amount is zero, will not create event.');
Log::debug('Amount is zero, will not create event.');
return;
}

View File

@@ -81,6 +81,12 @@ class ReconcileController extends Controller
if (!$start instanceof Carbon && !$end instanceof Carbon) {
throw new FireflyException('Invalid dates submitted.');
}
if (!is_numeric($startBalance)) {
$startBalance = '0';
}
if (!is_numeric($endBalance)) {
$endBalance = '0';
}
if ($end->lt($start)) {
[$start, $end] = [$end, $start];
}

View File

@@ -263,6 +263,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
[ // @phpstan-ignore-line
'rules' => static function (HasMany $query): void {
$query->orderBy('order', 'ASC');
$query->where('rules.active', true);
},
'rules.ruleTriggers' => static function (HasMany $query): void {
$query->orderBy('order', 'ASC');
@@ -319,6 +320,7 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInte
[ // @phpstan-ignore-line
'rules' => static function (HasMany $query): void {
$query->orderBy('order', 'ASC');
$query->where('rules.active', true);
},
'rules.ruleTriggers' => static function (HasMany $query): void {
$query->orderBy('order', 'ASC');

View File

@@ -420,6 +420,7 @@ class Navigation
'week' => (string)trans('config.week_in_year_js'),
'weekly' => (string)trans('config.week_in_year_js'),
'1M' => (string)trans('config.month_js'),
'MTD' => (string)trans('config.month_js'),
'month' => (string)trans('config.month_js'),
'monthly' => (string)trans('config.month_js'),
'1Y' => (string)trans('config.year_js'),
@@ -427,6 +428,11 @@ class Navigation
'year' => (string)trans('config.year_js'),
'yearly' => (string)trans('config.year_js'),
'6M' => (string)trans('config.half_year_js'),
'last7' => (string)trans('config.specific_day_js'),
'last30' => (string)trans('config.month_js'),
'last90' => (string)trans('config.month_js'),
'last365' => (string)trans('config.year_js'),
'QTD' => (string)trans('config.month_js'),
];
if (array_key_exists($repeatFrequency, $formatMap)) {

View File

@@ -59,9 +59,7 @@ class UpdatePiggyBank implements ActionInterface
$piggyBank = $this->findPiggyBank($user, $actionValue);
if (!$piggyBank instanceof PiggyBank) {
Log::info(
sprintf('No piggy bank named "%s", cant execute action #%d of rule #%d', $actionValue, $this->action->id, $this->action->rule_id)
);
Log::info(sprintf('No piggy bank named "%s", cant execute action #%d of rule #%d', $actionValue, $this->action->id, $this->action->rule_id));
event(new RuleActionFailedOnArray($this->action, $journal, trans('rules.cannot_find_piggy', ['name' => $actionValue])));
return false;

50
composer.lock generated
View File

@@ -2485,34 +2485,34 @@
},
{
"name": "lcobucci/clock",
"version": "3.3.1",
"version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/lcobucci/clock.git",
"reference": "db3713a61addfffd615b79bf0bc22f0ccc61b86b"
"reference": "f91d84f65cb3e974988bbe872b5da8ca132a155f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lcobucci/clock/zipball/db3713a61addfffd615b79bf0bc22f0ccc61b86b",
"reference": "db3713a61addfffd615b79bf0bc22f0ccc61b86b",
"url": "https://api.github.com/repos/lcobucci/clock/zipball/f91d84f65cb3e974988bbe872b5da8ca132a155f",
"reference": "f91d84f65cb3e974988bbe872b5da8ca132a155f",
"shasum": ""
},
"require": {
"php": "~8.2.0 || ~8.3.0 || ~8.4.0",
"php": "~8.3.0 || ~8.4.0",
"psr/clock": "^1.0"
},
"provide": {
"psr/clock-implementation": "1.0"
},
"require-dev": {
"infection/infection": "^0.29",
"infection/infection": "^0.31",
"lcobucci/coding-standard": "^11.1.0",
"phpstan/extension-installer": "^1.3.1",
"phpstan/phpstan": "^1.10.25",
"phpstan/phpstan-deprecation-rules": "^1.1.3",
"phpstan/phpstan-phpunit": "^1.3.13",
"phpstan/phpstan-strict-rules": "^1.5.1",
"phpunit/phpunit": "^11.3.6"
"phpstan/phpstan": "^2.0.0",
"phpstan/phpstan-deprecation-rules": "^2.0.0",
"phpstan/phpstan-phpunit": "^2.0.0",
"phpstan/phpstan-strict-rules": "^2.0.0",
"phpunit/phpunit": "^12.0.0"
},
"type": "library",
"autoload": {
@@ -2533,7 +2533,7 @@
"description": "Yet another clock abstraction",
"support": {
"issues": "https://github.com/lcobucci/clock/issues",
"source": "https://github.com/lcobucci/clock/tree/3.3.1"
"source": "https://github.com/lcobucci/clock/tree/3.4.0"
},
"funding": [
{
@@ -2545,7 +2545,7 @@
"type": "patreon"
}
],
"time": "2024-09-24T20:45:14+00:00"
"time": "2025-10-08T18:00:48+00:00"
},
{
"name": "lcobucci/jwt",
@@ -11815,16 +11815,16 @@
},
{
"name": "phpunit/phpunit",
"version": "12.4.0",
"version": "12.4.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "f62aab5794e36ccd26860db2d1bbf89ac19028d9"
"reference": "fc5413a2e6d240d2f6d9317bdf7f0a24e73de194"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f62aab5794e36ccd26860db2d1bbf89ac19028d9",
"reference": "f62aab5794e36ccd26860db2d1bbf89ac19028d9",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc5413a2e6d240d2f6d9317bdf7f0a24e73de194",
"reference": "fc5413a2e6d240d2f6d9317bdf7f0a24e73de194",
"shasum": ""
},
"require": {
@@ -11892,7 +11892,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.4.0"
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.4.1"
},
"funding": [
{
@@ -11916,20 +11916,20 @@
"type": "tidelift"
}
],
"time": "2025-10-03T04:28:03+00:00"
"time": "2025-10-09T14:08:29+00:00"
},
{
"name": "rector/rector",
"version": "2.2.1",
"version": "2.2.2",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
"reference": "e1aaf3061e9ae9342ed0824865e3a3360defddeb"
"reference": "5b353f7457b9a0c63fc91ef340f5d119a40991ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/e1aaf3061e9ae9342ed0824865e3a3360defddeb",
"reference": "e1aaf3061e9ae9342ed0824865e3a3360defddeb",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/5b353f7457b9a0c63fc91ef340f5d119a40991ed",
"reference": "5b353f7457b9a0c63fc91ef340f5d119a40991ed",
"shasum": ""
},
"require": {
@@ -11968,7 +11968,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.2.1"
"source": "https://github.com/rectorphp/rector/tree/2.2.2"
},
"funding": [
{
@@ -11976,7 +11976,7 @@
"type": "github"
}
],
"time": "2025-10-06T21:25:14+00:00"
"time": "2025-10-09T19:50:20+00:00"
},
{
"name": "sebastian/cli-parser",

View File

@@ -78,8 +78,8 @@ return [
'running_balance_column' => env('USE_RUNNING_BALANCE', false),
// see cer.php for exchange rates feature flag.
],
'version' => 'develop/2025-10-08',
'build_time' => 1759931348,
'version' => 'develop/2025-10-10',
'build_time' => 1760095871,
'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used.
@@ -225,6 +225,8 @@ return [
// plain files
'text/plain',
'text/html',
'text/xml',
'application/xml',
// images
'image/jpeg',

View File

@@ -53,10 +53,10 @@ class TransactionCurrencySeeder extends Seeder
$currencies[] = ['code' => 'BRL', 'name' => 'Brazilian real', 'symbol' => 'R$', 'decimal_places' => 2];
$currencies[] = ['code' => 'CAD', 'name' => 'Canadian dollar', 'symbol' => 'C$', 'decimal_places' => 2];
$currencies[] = ['code' => 'MXN', 'name' => 'Mexican peso', 'symbol' => 'MX$', 'decimal_places' => 2];
+ $currencies[] = ['code' => 'PEN', 'name' => 'Peruvian Sol', 'symbol' => 'S/', 'decimal_places' => 2];
+ $currencies[] = ['code' => 'ARS', 'name' => 'Argentinian Peso', 'symbol' => '$', 'decimal_places' => 2];
+ $currencies[] = ['code' => 'COP', 'name' => 'Colombian Peso', 'symbol' => '$', 'decimal_places' => 2];
+ $currencies[] = ['code' => 'CLP', 'name' => 'Chilean Peso', 'symbol' => '$', 'decimal_places' => 2];
$currencies[] = ['code' => 'PEN', 'name' => 'Peruvian Sol', 'symbol' => 'S/', 'decimal_places' => 2];
$currencies[] = ['code' => 'ARS', 'name' => 'Argentinian Peso', 'symbol' => '$', 'decimal_places' => 2];
$currencies[] = ['code' => 'COP', 'name' => 'Colombian Peso', 'symbol' => '$', 'decimal_places' => 2];
$currencies[] = ['code' => 'CLP', 'name' => 'Chilean Peso', 'symbol' => '$', 'decimal_places' => 2];
// oceanian currencies
$currencies[] = ['code' => 'IDR', 'name' => 'Indonesian rupiah', 'symbol' => 'Rp', 'decimal_places' => 2];

26
package-lock.json generated
View File

@@ -3173,9 +3173,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "24.7.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.0.tgz",
"integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==",
"version": "24.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.1.tgz",
"integrity": "sha512-CmyhGZanP88uuC5GpWU9q+fI61j2SkhO3UGMUdfYRE6Bcy0ccyzn1Rqj9YAB/ZY4kOXmNf0ocah5GtphmLMP6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4075,9 +4075,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
"version": "2.8.13",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.13.tgz",
"integrity": "sha512-7s16KR8io8nIBWQyCYhmFhd+ebIzb9VKTzki+wOJXHTxTnV6+mFGH3+Jwn1zoKaY9/H9T/0BcKCZnzXljPnpSQ==",
"version": "2.8.15",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.15.tgz",
"integrity": "sha512-qsJ8/X+UypqxHXN75M7dF88jNK37dLBRW7LeUzCPz+TNs37G8cfWy9nWzS+LS//g600zrt2le9KuXt0rWfDz5Q==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -4966,13 +4966,13 @@
"license": "MIT"
},
"node_modules/core-js-compat": {
"version": "3.45.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.1.tgz",
"integrity": "sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==",
"version": "3.46.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz",
"integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==",
"dev": true,
"license": "MIT",
"dependencies": {
"browserslist": "^4.25.3"
"browserslist": "^4.26.3"
},
"funding": {
"type": "opencollective",
@@ -5736,9 +5736,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.233",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.233.tgz",
"integrity": "sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg==",
"version": "1.5.234",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.234.tgz",
"integrity": "sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==",
"dev": true,
"license": "ISC"
},