Compare commits

...

14 Commits

Author SHA1 Message Date
James Cole
f56de6e719 Merge pull request #7218 from firefly-iii/develop
Release v6.0.4
2023-03-12 18:25:25 +01:00
James Cole
86ba1d151a Merge pull request #7217 from firefly-iii/v604
v604 into develop
2023-03-12 18:24:40 +01:00
James Cole
8d24db14e9 Update packages. 2023-03-12 18:23:18 +01:00
James Cole
cead122d96 Meta files for new release 2023-03-12 18:22:56 +01:00
James Cole
b7dd335fb7 Meta files for release v6.0.4 2023-03-12 18:18:02 +01:00
James Cole
20a7092fe3 Merge pull request #7213 from marcoil/catalan_name
Update Catalan description
2023-03-12 16:09:24 +01:00
James Cole
1d3da33e1d Merge pull request #7216 from firefly-iii/fix-7214
Possible fix for #7214
2023-03-12 16:06:31 +01:00
James Cole
e36675e232 Possible fix for #7214 2023-03-12 16:06:12 +01:00
Marc Ordinas i Llopis
aa8588758a Update Catalan description
Signed-off-by: Marc Ordinas i Llopis <mail@marcoil.org>
2023-03-12 13:48:06 +01:00
James Cole
47a58738d4 Merge pull request #7211 from firefly-iii/develop
Release v6.0.3
2023-03-12 11:04:35 +01:00
James Cole
e0a31d29a4 Merge pull request #7210 from firefly-iii/603
chore: Meta data for 603
2023-03-12 11:00:24 +01:00
James Cole
45369868ad chore: Meta data for 603 2023-03-12 10:59:35 +01:00
James Cole
639c51d651 Merge pull request #7202 from firefly-iii/fix-7201
Fix #7201
2023-03-11 15:05:31 +01:00
James Cole
3d424972cc Fix #7201 2023-03-11 15:04:16 +01:00
21 changed files with 98 additions and 56 deletions

View File

@@ -25,6 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Database\QueryException;
use League\Flysystem\FilesystemException;
use Log;
use Storage;
@@ -55,9 +56,7 @@ class VerifySecurityAlerts extends Command
*/
public function handle(): int
{
// remove old advisory
app('fireflyconfig')->delete('upgrade_security_message');
app('fireflyconfig')->delete('upgrade_security_level');
$this->removeOldAdvisory();
// check for security advisories.
$version = config('firefly.version');
@@ -76,8 +75,7 @@ class VerifySecurityAlerts extends Command
if ($version === $array['version'] && true === $array['advisory']) {
Log::debug(sprintf('Version %s has an alert!', $array['version']));
// add advisory to configuration.
app('fireflyconfig')->set('upgrade_security_message', $array['message']);
app('fireflyconfig')->set('upgrade_security_level', $array['level']);
$this->saveSecurityAdvisory($array);
// depends on level
if ('info' === $array['level']) {
@@ -110,4 +108,31 @@ class VerifySecurityAlerts extends Command
return 0;
}
/**
* @return void
*/
private function removeOldAdvisory(): void
{
try {
app('fireflyconfig')->delete('upgrade_security_message');
app('fireflyconfig')->delete('upgrade_security_level');
} catch (QueryException $e) {
Log::debug(sprintf('Could not delete old security advisory, but thats OK: %s', $e->getMessage()));
}
}
/**
* @param array $array
* @return void
*/
private function saveSecurityAdvisory(array $array): void
{
try {
app('fireflyconfig')->set('upgrade_security_message', $array['message']);
app('fireflyconfig')->set('upgrade_security_level', $array['level']);
} catch (QueryException $e) {
Log::debug(sprintf('Could not save new security advisory, but thats OK: %s', $e->getMessage()));
}
}
}

View File

@@ -200,8 +200,13 @@ trait TransactionValidation
Log::debug('Both accounts have the same currency, continue.');
return;
}
Log::debug(sprintf('Source account expects %s', $sourceCurrency->code));
Log::debug(sprintf('Destination account expects %s', $destinationCurrency->code));
Log::debug(sprintf('Amount is %s', $transaction['amount']));
if (TransactionType::DEPOSIT === ucfirst($transactionType)) {
Log::debug(sprintf('Processing as a "%s"', $transactionType));
// use case: deposit from liability account to an asset account
// the foreign amount must be in the currency of the source
// the amount must be in the currency of the destination
@@ -214,12 +219,15 @@ trait TransactionValidation
// wrong currency information is present
$foreignCurrencyCode = $transaction['foreign_currency_code'] ?? false;
if ($foreignCurrencyCode !== $sourceCurrency->code) {
$foreignCurrencyId = (int)($transaction['foreign_currency_id'] ?? 0);
Log::debug(sprintf('Foreign currency code seems to be #%d "%s"', $foreignCurrencyId, $foreignCurrencyCode), $transaction);
if ($foreignCurrencyCode !== $sourceCurrency->code && $foreignCurrencyId !== (int)$sourceCurrency->id) {
$validator->errors()->add(sprintf('transactions.%d.foreign_currency_code', $index), (string)trans('validation.require_foreign_src'));
return;
}
}
if (TransactionType::TRANSFER === ucfirst($transactionType) || TransactionType::WITHDRAWAL === ucfirst($transactionType)) {
Log::debug(sprintf('Processing as a "%s"', $transactionType));
// use case: withdrawal from asset account to a liability account.
// the foreign amount must be in the currency of the destination
// the amount must be in the currency of the source
@@ -236,8 +244,12 @@ trait TransactionValidation
// wrong currency information is present
$foreignCurrencyCode = $transaction['foreign_currency_code'] ?? false;
if ($foreignCurrencyCode !== $destinationCurrency->code) {
$validator->errors()->add(sprintf('transactions.%d.foreign_currency_code', $index), (string)trans('validation.require_foreign_dest'));
$foreignCurrencyId = (int)($transaction['foreign_currency_id'] ?? 0);
Log::debug(sprintf('Foreign currency code seems to be #%d "%s"', $foreignCurrencyId, $foreignCurrencyCode), $transaction);
if ($foreignCurrencyCode !== $destinationCurrency->code && $foreignCurrencyId !== (int)$destinationCurrency->id) {
Log::debug(sprintf('No match on code, "%s" vs "%s"', $foreignCurrencyCode, $destinationCurrency->code));
Log::debug(sprintf('No match on ID, #%d vs #%d', $foreignCurrencyId, $destinationCurrency->id));
$validator->errors()->add(sprintf('transactions.%d.foreign_amount', $index), (string)trans('validation.require_foreign_dest'));
}
}
}

View File

@@ -2,6 +2,15 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## v6.0.4 - 2023-03-13
### Fixed
- [Issue 7214](https://github.com/firefly-iii/firefly-iii/issues/7214) Import issue blocking multi currency transactions
## v6.0.3 - 2023-03-13
### Fixed
- [Issue 7201](https://github.com/firefly-iii/firefly-iii/issues/7201) Security-related console automatically command runs before a database is set, and may error out.
## v6.0.2 - 2023-03-11

29
composer.lock generated
View File

@@ -2868,34 +2868,37 @@
},
{
"name": "league/csv",
"version": "9.8.0",
"version": "9.9.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/csv.git",
"reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47"
"reference": "b4418ede47fbd88facc34e40a16c8ce9153b961b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/csv/zipball/9d2e0265c5d90f5dd601bc65ff717e05cec19b47",
"reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47",
"url": "https://api.github.com/repos/thephpleague/csv/zipball/b4418ede47fbd88facc34e40a16c8ce9153b961b",
"reference": "b4418ede47fbd88facc34e40a16c8ce9153b961b",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"php": "^7.4 || ^8.0"
"php": "^8.1.2"
},
"require-dev": {
"ext-curl": "*",
"doctrine/collections": "^2.1.2",
"ext-dom": "*",
"friendsofphp/php-cs-fixer": "^v3.4.0",
"phpstan/phpstan": "^1.3.0",
"phpstan/phpstan-phpunit": "^1.0.0",
"phpstan/phpstan-strict-rules": "^1.1.0",
"phpunit/phpunit": "^9.5.11"
"ext-xdebug": "*",
"friendsofphp/php-cs-fixer": "^v3.14.3",
"phpbench/phpbench": "^1.2.8",
"phpstan/phpstan": "^1.10.4",
"phpstan/phpstan-deprecation-rules": "^1.1.2",
"phpstan/phpstan-phpunit": "^1.3.10",
"phpstan/phpstan-strict-rules": "^1.5.0",
"phpunit/phpunit": "^10.0.14"
},
"suggest": {
"ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes",
"ext-dom": "Required to use the XMLConverter and the HTMLConverter classes",
"ext-iconv": "Needed to ease transcoding CSV using iconv stream filters"
},
"type": "library",
@@ -2948,7 +2951,7 @@
"type": "github"
}
],
"time": "2022-01-04T00:13:07+00:00"
"time": "2023-03-11T15:57:12+00:00"
},
{
"name": "league/event",

View File

@@ -107,7 +107,7 @@ return [
'webhooks' => true,
'handle_debts' => true,
],
'version' => '6.0.2',
'version' => '6.0.4',
'api_version' => '2.0.1',
'db_version' => 19,
@@ -161,7 +161,7 @@ return [
'en_GB' => ['name_locale' => 'English (GB)', 'name_english' => 'English (GB)'],
'en_US' => ['name_locale' => 'English (US)', 'name_english' => 'English (US)'],
'es_ES' => ['name_locale' => 'Español', 'name_english' => 'Spanish'],
'ca_ES' => ['name_locale' => 'Español (català)', 'name_english' => 'Spanish (Catalan)'],
'ca_ES' => ['name_locale' => 'Català (Espanya)', 'name_english' => 'Catalan (Spain)'],
// 'et_EE' => ['name_locale' => 'Estonian', 'name_english' => 'Estonian'],
// 'fa_IR' => ['name_locale' => 'فارسی', 'name_english' => 'Persian'],
'fi_FI' => ['name_locale' => 'Suomi', 'name_english' => 'Finnish'],

View File

@@ -338,7 +338,7 @@ page container: q-ma-xs (margin all, xs) AND q-mb-md to give the page content so
<q-footer class="bg-grey-8 text-white" bordered>
<q-toolbar>
<div>
<small>Firefly III v v6.0.2 &copy; James Cole, AGPL-3.0-or-later.</small>
<small>Firefly III v v6.0.4 &copy; James Cole, AGPL-3.0-or-later.</small>
</div>
</q-toolbar>
</q-footer>

View File

@@ -18,17 +18,10 @@
~ You should have received a copy of the GNU Affero General Public License
~ along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
stopOnFailure="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.6/phpunit.xsd">
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="false" bootstrap="vendor/autoload.php"
colors="true" stopOnFailure="true" processIsolation="false"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.0/phpunit.xsd" cacheDirectory=".phpunit.cache"
backupStaticProperties="false">
<coverage>
<include>
<directory suffix=".php">./app</directory>

View File

@@ -1 +1 @@
<!DOCTYPE html><html><head><base href=/v3/ ><title>Firefly III</title><meta charset=utf-8><meta content="Personal finances manager" name=description><meta content="telephone=no" name=format-detection><meta content=no name=msapplication-tap-highlight><meta content="user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,width=device-width" name=viewport><link href=favicon-32x32.png rel=icon sizes=32x32 type=image/png><link href=favicon-16x16.png rel=icon sizes=16x16 type=image/png><link href=maskable76.png rel=apple-touch-icon sizes=76x76><link href=maskable120.png rel=apple-touch-icon sizes=120x120><link href=maskable152.png rel=apple-touch-icon sizes=152x152><link href=apple-touch-icon.png rel=apple-touch-icon sizes=180x180><link color=#3c8dbc href=safari-pinned-tab.svg rel=mask-icon><link href=maskable192.png rel=icon sizes=192x192><link href=maskable128.png rel=icon sizes=128x128><link href=manifest.webmanifest rel=manifest><meta content=#1e6581 name=msapplication-TileColor><meta content=maskable512.png name=msapplication-TileImage><meta content=no name=msapplication-tap-highlight><meta content="Firefly III" name=application-name><meta content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir" name=robots><meta content=yes name=apple-mobile-web-app-capable><meta content="Firefly III" name=apple-mobile-web-app-title><meta content="Firefly III" name=application-name><meta content=#3c8dbc name=msapplication-TileColor><meta content="mstile-144x144.png?v=3e8AboOwbd" name=msapplication-TileImage><meta content=#3c8dbc name=theme-color><script defer src=/v3/js/vendor.43fbf1b0.js></script><script defer src=/v3/js/app.416c86f7.js></script><link href=/v3/css/vendor.b7419aa9.css rel=stylesheet><link href=/v3/css/app.50c7ba73.css rel=stylesheet></head><body><div id=q-app></div></body></html>
<!DOCTYPE html><html><head><base href=/v3/ ><title>Firefly III</title><meta charset=utf-8><meta content="Personal finances manager" name=description><meta content="telephone=no" name=format-detection><meta content=no name=msapplication-tap-highlight><meta content="user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,width=device-width" name=viewport><link href=favicon-32x32.png rel=icon sizes=32x32 type=image/png><link href=favicon-16x16.png rel=icon sizes=16x16 type=image/png><link href=maskable76.png rel=apple-touch-icon sizes=76x76><link href=maskable120.png rel=apple-touch-icon sizes=120x120><link href=maskable152.png rel=apple-touch-icon sizes=152x152><link href=apple-touch-icon.png rel=apple-touch-icon sizes=180x180><link color=#3c8dbc href=safari-pinned-tab.svg rel=mask-icon><link href=maskable192.png rel=icon sizes=192x192><link href=maskable128.png rel=icon sizes=128x128><link href=manifest.webmanifest rel=manifest><meta content=#1e6581 name=msapplication-TileColor><meta content=maskable512.png name=msapplication-TileImage><meta content=no name=msapplication-tap-highlight><meta content="Firefly III" name=application-name><meta content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir" name=robots><meta content=yes name=apple-mobile-web-app-capable><meta content="Firefly III" name=apple-mobile-web-app-title><meta content="Firefly III" name=application-name><meta content=#3c8dbc name=msapplication-TileColor><meta content="mstile-144x144.png?v=3e8AboOwbd" name=msapplication-TileImage><meta content=#3c8dbc name=theme-color><script defer src=/v3/js/vendor.43fbf1b0.js></script><script defer src=/v3/js/app.efb4b22c.js></script><link href=/v3/css/vendor.b7419aa9.css rel=stylesheet><link href=/v3/css/app.50c7ba73.css rel=stylesheet></head><body><div id=q-app></div></body></html>

1
public/v3/js/719.bd9acfe0.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/v3/js/app.efb4b22c.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -67,8 +67,8 @@ return [
'not_transfer_account' => 'Aquest compte no és un compte que puguis fer servir per transferències.',
'require_currency_amount' => 'El contingut d\'aquest camp no és vàlid sense informació de la quantitat estrangera.',
'require_foreign_currency' => 'This field requires a number',
'require_foreign_dest' => 'This field value must match the currency of the destination account.',
'require_foreign_src' => 'This field value must match the currency of the source account.',
'require_foreign_dest' => 'El valor d\'aquest camp ha de quadrar amb la moneda del compte destí.',
'require_foreign_src' => 'El valor d\'aquest camp ha de quadrar amb la moneda del compte font.',
'equal_description' => 'La descripció de la transacció no hauria de ser igual a la descripció global.',
'file_invalid_mime' => 'El fitxer ":name" és de tipus ":mime", el qual no s\'accepta com a pujada.',
'file_too_large' => 'El fitxer ":name" és massa gran.',

View File

@@ -67,8 +67,8 @@ return [
'not_transfer_account' => 'Dieses Konto ist kein Konto, welches für Buchungen genutzt werden kann.',
'require_currency_amount' => 'Der Inhalt dieses Feldes ist ohne Eingabe eines Betrags in Fremdwährung ungültig.',
'require_foreign_currency' => 'Dieses Feld muss eine Nummer enthalten',
'require_foreign_dest' => 'This field value must match the currency of the destination account.',
'require_foreign_src' => 'This field value must match the currency of the source account.',
'require_foreign_dest' => 'Der Wert dieses Feldes muss mit der Währung des Zielkontos übereinstimmen.',
'require_foreign_src' => 'Der Wert dieses Feldes muss mit der Währung des Quellkontos übereinstimmen.',
'equal_description' => 'Die Transaktionsbeschreibung darf nicht der globalen Beschreibung entsprechen.',
'file_invalid_mime' => 'Die Datei „:name” ist vom Typ „:mime”, welcher nicht zum Hochladen zugelassen ist.',
'file_too_large' => 'Die Datei „:name” ist zu groß.',

View File

@@ -648,10 +648,10 @@ return [
'search_modifier_updated_at_after_day' => 'La transacción se actualizó por última vez en o después día del mes ":value"',
'search_modifier_created_at_on_year' => 'La transacción fue creada en el año":value"',
'search_modifier_created_at_on_month' => 'La transacción fue creada en el mes ":value"',
'search_modifier_created_at_on_day' => 'Transaction was created on day of month ":value"',
'search_modifier_created_at_on_day' => 'La transacción fue creada en el día del mes ":value"',
'search_modifier_not_created_at_on_year' => 'La transacción no fue creada en el año ":value"',
'search_modifier_not_created_at_on_month' => 'La transacción no fue creada en el mes ":value"',
'search_modifier_not_created_at_on_day' => 'Transaction was not created on day of month ":value"',
'search_modifier_not_created_at_on_day' => 'La transacción no fue creada en el día del mes ":value"',
'search_modifier_created_at_before_year' => 'Transaction was created in or before year ":value"',
'search_modifier_created_at_before_month' => 'Transaction was created in or before month ":value"',
'search_modifier_created_at_before_day' => 'Transaction was created on or before day of month ":value"',

View File

@@ -67,8 +67,8 @@ return [
'not_transfer_account' => 'Esta cuenta no es una cuenta que se pueda utilizar para transferencias.',
'require_currency_amount' => 'El contenido de este campo no es válido sin información de cantidad extranjera.',
'require_foreign_currency' => 'Este campo requiere un número',
'require_foreign_dest' => 'This field value must match the currency of the destination account.',
'require_foreign_src' => 'This field value must match the currency of the source account.',
'require_foreign_dest' => 'El valor de este campo debe coincidir con la moneda de la cuenta de destino.',
'require_foreign_src' => 'El valor de este campo debe coincidir con la moneda de la cuenta de origen.',
'equal_description' => 'La descripción de la transacción no debería ser igual a la descripción global.',
'file_invalid_mime' => 'El archivo ":name" es de tipo ":mime", el cual no se acepta.',
'file_too_large' => 'El archivo ":name" es demasiado grande.',

View File

@@ -67,8 +67,8 @@ return [
'not_transfer_account' => 'Ce compte n\'est pas un compte qui peut être utilisé pour les transferts.',
'require_currency_amount' => 'Le contenu de ce champ est invalide sans informations sur le montant en devise étrangère.',
'require_foreign_currency' => 'Ce champ doit être un nombre',
'require_foreign_dest' => 'This field value must match the currency of the destination account.',
'require_foreign_src' => 'This field value must match the currency of the source account.',
'require_foreign_dest' => 'Ce champ doit correspondre à la devise du compte de destination.',
'require_foreign_src' => 'Ce champ doit correspondre à la devise du compte source.',
'equal_description' => 'La description de l\'opération ne doit pas être identique à la description globale.',
'file_invalid_mime' => 'Le fichier ":name" est du type ":mime" ce qui n\'est pas accepté pour un nouvel envoi.',
'file_too_large' => 'Le fichier ":name" est trop grand.',

View File

@@ -67,8 +67,8 @@ return [
'not_transfer_account' => 'Этот счёт нельзя использовать для перевода.',
'require_currency_amount' => 'Содержимое этого поля недействительно без информации о валюте.',
'require_foreign_currency' => 'Это поле требует число',
'require_foreign_dest' => 'This field value must match the currency of the destination account.',
'require_foreign_src' => 'This field value must match the currency of the source account.',
'require_foreign_dest' => 'Это значение поля должно совпадать с валютой счета назначения.',
'require_foreign_src' => 'Это поле должно совпадать с валютой исходного счета.',
'equal_description' => 'Описание транзакции не должно совпадать с глобальным описанием.',
'file_invalid_mime' => 'Файл ":name" имеет тип ":mime". Загрузка файлов такого типа невозможна.',
'file_too_large' => 'Файл ":name" слишком большой.',

View File

@@ -2365,8 +2365,8 @@ return [
// administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_is_already_redeemed' => 'Inbjudan till ":address" har redan lösts in.',
'invite_is_deleted' => 'Inbjudan till ":address" har tagits bort.',
'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address',

View File

@@ -66,9 +66,9 @@ return [
'require_currency_info' => 'Innehållet i det här fältet är ogiltigt utan valutainformation.',
'not_transfer_account' => 'Detta är inte ett konto som kan användas för transaktioner.',
'require_currency_amount' => 'Innehållet i det här fältet är ogiltigt utan utländskt belopp.',
'require_foreign_currency' => 'This field requires a number',
'require_foreign_dest' => 'This field value must match the currency of the destination account.',
'require_foreign_src' => 'This field value must match the currency of the source account.',
'require_foreign_currency' => 'Detta fält kräver ett nummer',
'require_foreign_dest' => 'Detta fältvärde måste matcha valutan för målkontot.',
'require_foreign_src' => 'Detta fältvärde måste matcha valutan för källkontot.',
'equal_description' => 'Transaktions beskrivning bör inte vara samma som den globala beskrivningen.',
'file_invalid_mime' => 'Filen ”:name” är av typ ”:mime” som inte accepteras som en ny uppladdning.',
'file_too_large' => 'Filen ”:name” är för stor.',

View File

@@ -12,6 +12,6 @@ sonar.organization=firefly-iii
#sonar.sourceEncoding=UTF-8
sonar.projectVersion=6.0.2
sonar.projectVersion=6.0.4
sonar.sources=app,bootstrap,database,resources/assets,resources/views,routes,tests
sonar.sourceEncoding=UTF-8