Various updates.

This commit is contained in:
James Cole
2021-04-04 08:31:15 +02:00
parent f8c725e5b2
commit 85b22341a4
41 changed files with 161 additions and 54 deletions

View File

@@ -1,4 +1,5 @@
<?php <?php
declare(strict_types=1);
/* /*
* AccountController.php * AccountController.php
* Copyright (c) 2021 james@firefly-iii.org * Copyright (c) 2021 james@firefly-iii.org

View File

@@ -1,4 +1,5 @@
<?php <?php
declare(strict_types=1);
/* /*
* MoveTransactionsRequest.php * MoveTransactionsRequest.php
* Copyright (c) 2021 james@firefly-iii.org * Copyright (c) 2021 james@firefly-iii.org

View File

@@ -186,6 +186,9 @@ class BelongsUser implements Rule
*/ */
private function validateBillId(int $value): bool private function validateBillId(int $value): bool
{ {
if (0 === $value) {
return true;
}
$count = Bill::where('id', '=', $value)->where('user_id', '=', auth()->user()->id)->count(); $count = Bill::where('id', '=', $value)->where('user_id', '=', auth()->user()->id)->count();
return 1 === $count; return 1 === $count;

View File

@@ -123,12 +123,19 @@ trait GroupValidation
*/ */
private function validateJournalId(Validator $validator, int $index, array $transaction, TransactionGroup $transactionGroup): void private function validateJournalId(Validator $validator, int $index, array $transaction, TransactionGroup $transactionGroup): void
{ {
$journalId = $transaction['transaction_journal_id'] ?? null; $journalId = 0;
if (array_key_exists('transaction_journal_id', $transaction)) {
$journalId = $transaction['transaction_journal_id'];
}
Log::debug(sprintf('Now in validateJournalId(%d, %d)', $index, $journalId)); Log::debug(sprintf('Now in validateJournalId(%d, %d)', $index, $journalId));
if (0 === $journalId) {
Log::debug('Submitted 0, will accept to be used in a new transaction.');
$journalId = null === $journalId ? null : (int)$journalId; return;
$count = $transactionGroup->transactionJournals()->where('id', $journalId)->count(); }
if (null === $journalId || (null !== $journalId && 0 !== $journalId && 0 === $count)) { $count = $transactionGroup->transactionJournals()->where('transaction_journals.id', $journalId)->count();
if (null === $journalId || 0 === $count) {
Log::warning(sprintf('Transaction group #%d has %d journals with ID %d', $transactionGroup->id, $count, $journalId));
Log::warning('Invalid submission: Each split must have transaction_journal_id (either valid ID or 0).'); Log::warning('Invalid submission: Each split must have transaction_journal_id (either valid ID or 0).');
$validator->errors()->add(sprintf('transactions.%d.source_name', $index), (string)trans('validation.need_id_in_edit')); $validator->errors()->add(sprintf('transactions.%d.source_name', $index), (string)trans('validation.need_id_in_edit'));
} }

View File

@@ -17,13 +17,19 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Nothing (yet) - Nothing (yet)
### Fixed ### Fixed
- Nothing (yet) - [Issue 4589](https://github.com/firefly-iii/firefly-iii/issues/4589) It was not possible to change accounts in layout v2.
- [Issue 4591](https://github.com/firefly-iii/firefly-iii/issues/4591) It was not possible to create splits in layout v2.
### Security ### Security
- Nothing (yet) - Nothing (yet)
### API ### API
- Nothing (yet)
This release features an update API version. Check out [the difference](https://github.com/firefly-iii/api-docs-generator/compare/1.5.1...1.5.2).
- New endpoint to bulk update transactions.
- The chart API endpoint includes the time in the labels.
## 5.5.3 (API 1.5.1) 2021-04-03 ## 5.5.3 (API 1.5.1) 2021-04-03

View File

@@ -460,6 +460,13 @@ export default {
shouldSubmit = true; shouldSubmit = true;
} }
let transactionCount = this.originalTransactions.length; let transactionCount = this.originalTransactions.length;
let newTransactionCount = this.transactions.length;
console.log('Found ' + this.transactions.length + ' split(s).');
if(newTransactionCount > 1 && typeof submission.group_title === 'undefined' && (null === this.originalGroupTitle || '' === this.originalGroupTitle)) {
submission.group_title = this.transactions[0].description;
}
for (let i in this.transactions) { for (let i in this.transactions) {
if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\d*$/.test(i) && i <= 4294967294) { if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\d*$/.test(i) && i <= 4294967294) {
// original transaction present? // original transaction present?
@@ -480,11 +487,41 @@ export default {
'zoom_level', 'longitude', 'latitude' 'zoom_level', 'longitude', 'latitude'
]; ];
// source and destination may be overruled:
if (i > 0) {
diff.type = this.transactionType.toLowerCase();
if ('Deposit' === this.transactionType || 'Transfer' === this.transactionType) {
// set destination to be whatever is in transaction zero:
currentTransaction.destination_account_name = this.originalTransactions[0].destination_account_name;
currentTransaction.destination_account_id = this.originalTransactions[0].destination_account_id;
}
if ('Withdrawal' === this.transactionType || 'Transfer' === this.transactionType) {
currentTransaction.source_account_name = this.originalTransactions[0].source_account_name;
currentTransaction.source_account_id = this.originalTransactions[0].source_account_id;
}
console.log('Will overrule accounts for split ' + i);
}
for (let ii in basicFields) { for (let ii in basicFields) {
if (basicFields.hasOwnProperty(ii) && /^0$|^[1-9]\d*$/.test(ii) && ii <= 4294967294) { if (basicFields.hasOwnProperty(ii) && /^0$|^[1-9]\d*$/.test(ii) && ii <= 4294967294) {
let fieldName = basicFields[ii]; let fieldName = basicFields[ii];
let submissionFieldName = fieldName; let submissionFieldName = fieldName;
// if the original is undefined and the new one is null, just skip it.
if (currentTransaction[fieldName] === null && 'undefined' === typeof originalTransaction[fieldName]) {
continue;
}
if (currentTransaction[fieldName] !== originalTransaction[fieldName]) { if (currentTransaction[fieldName] !== originalTransaction[fieldName]) {
// some fields are ignored:
if ('foreign_amount' === submissionFieldName && '' === currentTransaction[fieldName]) {
continue;
}
if ('foreign_currency_id' === submissionFieldName && 0 === currentTransaction[fieldName]) {
continue;
}
// console.log('Index ' + i + ': Field ' + fieldName + ' updated ("' + originalTransaction[fieldName] + '" > "' + currentTransaction[fieldName] + '")'); // console.log('Index ' + i + ': Field ' + fieldName + ' updated ("' + originalTransaction[fieldName] + '" > "' + currentTransaction[fieldName] + '")');
// console.log(originalTransaction[fieldName]); // console.log(originalTransaction[fieldName]);
// console.log(currentTransaction[fieldName]); // console.log(currentTransaction[fieldName]);
@@ -503,7 +540,7 @@ export default {
if ('destination_account_name' === submissionFieldName) { if ('destination_account_name' === submissionFieldName) {
submissionFieldName = 'destination_name'; submissionFieldName = 'destination_name';
} }
// console.log('post: ' + submissionFieldName);
diff[submissionFieldName] = currentTransaction[fieldName]; diff[submissionFieldName] = currentTransaction[fieldName];
shouldSubmit = true; shouldSubmit = true;
@@ -574,12 +611,15 @@ export default {
dateStr = toW3CString(theDate); dateStr = toW3CString(theDate);
diff.date = dateStr; diff.date = dateStr;
} }
if (Object.keys(diff).length === 0 && transactionCount > 1) { console.log('Now at index ' + i);
console.log(Object.keys(diff).length);
if (Object.keys(diff).length === 0 && newTransactionCount > 1) {
console.log('Will submit just the ID!');
diff.transaction_journal_id = originalTransaction.transaction_journal_id; diff.transaction_journal_id = originalTransaction.transaction_journal_id;
submission.transactions.push(lodashClonedeep(diff)); submission.transactions.push(lodashClonedeep(diff));
shouldSubmit = true; shouldSubmit = true;
} else if (Object.keys(diff).length !== 0) { } else if (Object.keys(diff).length !== 0) {
diff.transaction_journal_id = originalTransaction.transaction_journal_id; diff.transaction_journal_id = originalTransaction.transaction_journal_id ?? 0;
submission.transactions.push(lodashClonedeep(diff)); submission.transactions.push(lodashClonedeep(diff));
shouldSubmit = true; shouldSubmit = true;
} }
@@ -637,6 +677,7 @@ export default {
console.log('submitUpdate'); console.log('submitUpdate');
this.inError = false; this.inError = false;
const url = './api/v1/transactions/' + this.groupId; const url = './api/v1/transactions/' + this.groupId;
console.log(JSON.stringify(submission));
console.log(submission); console.log(submission);
axios.put(url, submission) axios.put(url, submission)
.then(response => { .then(response => {

View File

@@ -58,7 +58,7 @@
"spent": "Gasto", "spent": "Gasto",
"Default asset account": "Conta de activos padr\u00e3o", "Default asset account": "Conta de activos padr\u00e3o",
"search_results": "Resultados da pesquisa", "search_results": "Resultados da pesquisa",
"include": "Include?", "include": "Incluir?",
"transaction": "Transac\u00e7\u00e3o", "transaction": "Transac\u00e7\u00e3o",
"account_role_defaultAsset": "Conta de activos padr\u00e3o", "account_role_defaultAsset": "Conta de activos padr\u00e3o",
"account_role_savingAsset": "Conta poupan\u00e7a", "account_role_savingAsset": "Conta poupan\u00e7a",

View File

@@ -2061,9 +2061,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196:
version "1.0.30001205" version "1.0.30001207"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz#d79bf6a6fb13196b4bb46e5143a22ca0242e0ef8" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz#364d47d35a3007e528f69adb6fecb07c2bb2cc50"
integrity sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og== integrity sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==
chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2" version "2.4.2"

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

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

File diff suppressed because one or more lines are too long

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Стойността трябва да започва с :values.', 'starts_with' => 'Стойността трябва да започва с :values.',
'unique_webhook' => 'Вече имате уеб кука с тези стойности.', 'unique_webhook' => 'Вече имате уеб кука с тези стойности.',
'unique_existing_webhook' => 'Вече имате друга уеб кука с тези стойности.', 'unique_existing_webhook' => 'Вече имате друга уеб кука с тези стойности.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Това не е сигурна парола. Моля, опитайте отново. За повече информация посетете https://bit.ly/FF3-password-security', 'secure_password' => 'Това не е сигурна парола. Моля, опитайте отново. За повече информация посетете https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Невалиден тип повторение за повтарящи се транзакции.', 'valid_recurrence_rep_type' => 'Невалиден тип повторение за повтарящи се транзакции.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Hodnota musí začínat :values.', 'starts_with' => 'Hodnota musí začínat :values.',
'unique_webhook' => 'Webhook s těmito hodnotami již existuje.', 'unique_webhook' => 'Webhook s těmito hodnotami již existuje.',
'unique_existing_webhook' => 'Jiný webhook s těmito hodnotami již existuje.', 'unique_existing_webhook' => 'Jiný webhook s těmito hodnotami již existuje.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Toto není bezpečné heslo. Zkuste jiné. Více se dozvíte na http://bit.ly/FF3-password-security', 'secure_password' => 'Toto není bezpečné heslo. Zkuste jiné. Více se dozvíte na http://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Neplatný typ opakování pro opakované transakce.', 'valid_recurrence_rep_type' => 'Neplatný typ opakování pro opakované transakce.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Der Wert muss mit :values beginnen.', 'starts_with' => 'Der Wert muss mit :values beginnen.',
'unique_webhook' => 'Sie haben bereits einen Webhook mit diesen Werten.', 'unique_webhook' => 'Sie haben bereits einen Webhook mit diesen Werten.',
'unique_existing_webhook' => 'Sie haben bereits einen anderen Webhook mit diesen Werten.', 'unique_existing_webhook' => 'Sie haben bereits einen anderen Webhook mit diesen Werten.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Dies ist ein unsicheres Passwort. Bitte versuchen Sie es erneut. Weitere Informationen finden Sie unter https://github.com/firefly-iii/help/wiki/Secure-password', 'secure_password' => 'Dies ist ein unsicheres Passwort. Bitte versuchen Sie es erneut. Weitere Informationen finden Sie unter https://github.com/firefly-iii/help/wiki/Secure-password',
'valid_recurrence_rep_type' => 'Ungültige Wiederholungsart für Daueraufträge.', 'valid_recurrence_rep_type' => 'Ungültige Wiederholungsart für Daueraufträge.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Η τιμή πρέπει να ξεκινά με :values.', 'starts_with' => 'Η τιμή πρέπει να ξεκινά με :values.',
'unique_webhook' => 'Έχετε ήδη ένα webhook με αυτές τις τιμές.', 'unique_webhook' => 'Έχετε ήδη ένα webhook με αυτές τις τιμές.',
'unique_existing_webhook' => 'Έχετε ήδη ένα άλλο webhook με αυτές τις τιμές.', 'unique_existing_webhook' => 'Έχετε ήδη ένα άλλο webhook με αυτές τις τιμές.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Αυτό δεν είναι ασφαλές συνθηματικό. Παρακαλώ δοκιμάστε ξανά. Για περισσότερες πληροφορίες επισκεφτείτε https://bit.ly/FF3-password-security', 'secure_password' => 'Αυτό δεν είναι ασφαλές συνθηματικό. Παρακαλώ δοκιμάστε ξανά. Για περισσότερες πληροφορίες επισκεφτείτε https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Μη έγκυρος τύπος επανάληψης για επαναλαμβανόμενες συναλλαγές.', 'valid_recurrence_rep_type' => 'Μη έγκυρος τύπος επανάληψης για επαναλαμβανόμενες συναλλαγές.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'This is not a secure password. Please try again. For more information, visit https://bit.ly/FF3-password-security', 'secure_password' => 'This is not a secure password. Please try again. For more information, visit https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Invalid repetition type for recurring transactions.', 'valid_recurrence_rep_type' => 'Invalid repetition type for recurring transactions.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'El valor debe comenzar con :values.', 'starts_with' => 'El valor debe comenzar con :values.',
'unique_webhook' => 'Ya tiene un webhook con estos valores.', 'unique_webhook' => 'Ya tiene un webhook con estos valores.',
'unique_existing_webhook' => 'Ya tiene otro webhook con estos valores.', 'unique_existing_webhook' => 'Ya tiene otro webhook con estos valores.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Esta contraseña no es segura. Por favor inténtalo de nuevo. Para más información, visita https://bit.ly/FF3-password-security', 'secure_password' => 'Esta contraseña no es segura. Por favor inténtalo de nuevo. Para más información, visita https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Tipo de repetición no válido para transacciones recurrentes.', 'valid_recurrence_rep_type' => 'Tipo de repetición no válido para transacciones recurrentes.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Tämä ei ole turvallinen salasana. Yritäpä uudestaan. Lisätietoja löydät osoitteesta https://bit.ly/FF3-password-security', 'secure_password' => 'Tämä ei ole turvallinen salasana. Yritäpä uudestaan. Lisätietoja löydät osoitteesta https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Virheellinen toiston tyyppi toistuville tapahtumille.', 'valid_recurrence_rep_type' => 'Virheellinen toiston tyyppi toistuville tapahtumille.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'La valeur doit commencer par :values.', 'starts_with' => 'La valeur doit commencer par :values.',
'unique_webhook' => 'Vous avez déjà un webhook avec ces valeurs.', 'unique_webhook' => 'Vous avez déjà un webhook avec ces valeurs.',
'unique_existing_webhook' => 'Vous avez déjà un autre webhook avec ces valeurs.', 'unique_existing_webhook' => 'Vous avez déjà un autre webhook avec ces valeurs.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Ce n\'est pas un mot de passe sécurisé. Veuillez essayez à nouveau. Pour plus d\'informations, visitez https://bit.ly/FF3-password-security', 'secure_password' => 'Ce n\'est pas un mot de passe sécurisé. Veuillez essayez à nouveau. Pour plus d\'informations, visitez https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Type de répétition non valide pour des opérations périodiques.', 'valid_recurrence_rep_type' => 'Type de répétition non valide pour des opérations périodiques.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Ez nem biztonságos jelszó. Kérlek próbáld meg újra. További információért lásd: https://bit.ly/FF3-password-security', 'secure_password' => 'Ez nem biztonságos jelszó. Kérlek próbáld meg újra. További információért lásd: https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Érvénytelen ismétléstípus az ismétlődő tranzakciókhoz.', 'valid_recurrence_rep_type' => 'Érvénytelen ismétléstípus az ismétlődő tranzakciókhoz.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'This is not a secure password. Please try again. For more information, visit https://bit.ly/FF3-password-security', 'secure_password' => 'This is not a secure password. Please try again. For more information, visit https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Tipe pengulangan yang tidak valid untuk transaksi berkala.', 'valid_recurrence_rep_type' => 'Tipe pengulangan yang tidak valid untuk transaksi berkala.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Il valore deve iniziare con :values.', 'starts_with' => 'Il valore deve iniziare con :values.',
'unique_webhook' => 'Hai già un webhook con questi valori.', 'unique_webhook' => 'Hai già un webhook con questi valori.',
'unique_existing_webhook' => 'Hai già un altro webhook con questi valori.', 'unique_existing_webhook' => 'Hai già un altro webhook con questi valori.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Questa non è una password sicura. Riprova. Per maggiori informazioni visita https://bit.ly/FF3-password-security', 'secure_password' => 'Questa non è una password sicura. Riprova. Per maggiori informazioni visita https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Il tipo di ripetizione della transazione ricorrente non è valido.', 'valid_recurrence_rep_type' => 'Il tipo di ripetizione della transazione ricorrente non è valido.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Dette er ikke et sikkert passord. Vennligst prøv igjen. For mer informasjon, se https://bit.ly/FF3-password-security', 'secure_password' => 'Dette er ikke et sikkert passord. Vennligst prøv igjen. For mer informasjon, se https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Ugyldig repetisjons type for gjentakende transaksjoner.', 'valid_recurrence_rep_type' => 'Ugyldig repetisjons type for gjentakende transaksjoner.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'De waarde moet beginnen met :values.', 'starts_with' => 'De waarde moet beginnen met :values.',
'unique_webhook' => 'Je hebt al een webhook met deze waarden.', 'unique_webhook' => 'Je hebt al een webhook met deze waarden.',
'unique_existing_webhook' => 'Je hebt al een andere webhook met deze waarden.', 'unique_existing_webhook' => 'Je hebt al een andere webhook met deze waarden.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Dit is geen veilig wachtwoord. Probeer het nog een keer. Zie ook: https://bit.ly/FF3-password-security', 'secure_password' => 'Dit is geen veilig wachtwoord. Probeer het nog een keer. Zie ook: https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Dit is geen geldige herhaling voor periodieke transacties.', 'valid_recurrence_rep_type' => 'Dit is geen geldige herhaling voor periodieke transacties.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Wartość musi zaczynać się od :values.', 'starts_with' => 'Wartość musi zaczynać się od :values.',
'unique_webhook' => 'Masz już webhook z tymi wartościami.', 'unique_webhook' => 'Masz już webhook z tymi wartościami.',
'unique_existing_webhook' => 'Masz już inny webhook z tymi wartościami.', 'unique_existing_webhook' => 'Masz już inny webhook z tymi wartościami.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'To nie jest bezpieczne hasło. Proszę spróbować ponownie. Aby uzyskać więcej informacji odwiedź https://bit.ly/FF3-password-security', 'secure_password' => 'To nie jest bezpieczne hasło. Proszę spróbować ponownie. Aby uzyskać więcej informacji odwiedź https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Nieprawidłowy typ powtórzeń dla cyklicznych transakcji.', 'valid_recurrence_rep_type' => 'Nieprawidłowy typ powtórzeń dla cyklicznych transakcji.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'O valor deve começar com :values.', 'starts_with' => 'O valor deve começar com :values.',
'unique_webhook' => 'Você já tem um webhook com esses valores.', 'unique_webhook' => 'Você já tem um webhook com esses valores.',
'unique_existing_webhook' => 'Você já tem outro webhook com esses valores.', 'unique_existing_webhook' => 'Você já tem outro webhook com esses valores.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Esta não é uma senha segura. Por favor, tente novamente. Para mais informações, visite https://bit.ly/FF3-password-security', 'secure_password' => 'Esta não é uma senha segura. Por favor, tente novamente. Para mais informações, visite https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Tipo de repetição inválido para transações recorrentes.', 'valid_recurrence_rep_type' => 'Tipo de repetição inválido para transações recorrentes.',

View File

@@ -423,7 +423,7 @@ return [
'apply_rule_selection' => 'Aplicar a regra ":title" a uma selecção de transacções', 'apply_rule_selection' => 'Aplicar a regra ":title" a uma selecção de transacções',
'apply_rule_selection_intro' => 'Regras como ":title" são normalmente aplicadas a transações novas ou atualizadas, no entanto pode dizer ao Firefly III para executar as mesmas em transações selecionadas. Isto pode ser útil quando tiver atualizado uma regra e necessite de aplicar as alterações a todas as transações que devem ser afetas.', 'apply_rule_selection_intro' => 'Regras como ":title" são normalmente aplicadas a transações novas ou atualizadas, no entanto pode dizer ao Firefly III para executar as mesmas em transações selecionadas. Isto pode ser útil quando tiver atualizado uma regra e necessite de aplicar as alterações a todas as transações que devem ser afetas.',
'include_transactions_from_accounts' => 'Incluir transações destas contas', 'include_transactions_from_accounts' => 'Incluir transações destas contas',
'include' => 'Include?', 'include' => 'Incluir?',
'applied_rule_selection' => '{0} Nenhuma transação na sua seleção foi alterada pela regra ":title".[1] Uma transação na sua seleção foi alterada pela regra ":title".├[2,*] :count transações na sua seleção foram alteradas pela regra ":title".', 'applied_rule_selection' => '{0} Nenhuma transação na sua seleção foi alterada pela regra ":title".[1] Uma transação na sua seleção foi alterada pela regra ":title".├[2,*] :count transações na sua seleção foram alteradas pela regra ":title".',
'execute' => 'Executar', 'execute' => 'Executar',
'apply_rule_group_selection' => 'Aplicar grupo de regras ":title" a uma selecção de transacções', 'apply_rule_group_selection' => 'Aplicar grupo de regras ":title" a uma selecção de transacções',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'O valor deve começar com :values.', 'starts_with' => 'O valor deve começar com :values.',
'unique_webhook' => 'Você já tem um gancho web (webhook) com esses valores.', 'unique_webhook' => 'Você já tem um gancho web (webhook) com esses valores.',
'unique_existing_webhook' => 'Você já tem outro gancho web (webhook) com esses valores.', 'unique_existing_webhook' => 'Você já tem outro gancho web (webhook) com esses valores.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Esta nao e uma password segura. Tenta de novo por favor. Para mais informacoes visita https://bit.ly/FF3-password-security', 'secure_password' => 'Esta nao e uma password segura. Tenta de novo por favor. Para mais informacoes visita https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Tipo de repetição inválido para transações recorrentes.', 'valid_recurrence_rep_type' => 'Tipo de repetição inválido para transações recorrentes.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Aceasta nu este o parolă sigură. Vă rugăm să încercați din nou. Pentru mai multe informații, vizitați https://bit.ly/FF3-password-security', 'secure_password' => 'Aceasta nu este o parolă sigură. Vă rugăm să încercați din nou. Pentru mai multe informații, vizitați https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Tip de repetare nevalid pentru tranzacțiile recurente.', 'valid_recurrence_rep_type' => 'Tip de repetare nevalid pentru tranzacțiile recurente.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Значение должно начинаться с :values.', 'starts_with' => 'Значение должно начинаться с :values.',
'unique_webhook' => 'У вас уже есть webhook с таким именем.', 'unique_webhook' => 'У вас уже есть webhook с таким именем.',
'unique_existing_webhook' => 'У вас уже есть другой webhook с таким именем.', 'unique_existing_webhook' => 'У вас уже есть другой webhook с таким именем.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Это не безопасный пароль. Попробуйте еще раз. Подробнее можно узнать по ссылке https://bit.ly/FF3-password-security', 'secure_password' => 'Это не безопасный пароль. Попробуйте еще раз. Подробнее можно узнать по ссылке https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Недопустимый тип для повторяющихся транзакций.', 'valid_recurrence_rep_type' => 'Недопустимый тип для повторяющихся транзакций.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Hodnota musí začínať :values.', 'starts_with' => 'Hodnota musí začínať :values.',
'unique_webhook' => 'Webhook s týmito hodnotami už existuje.', 'unique_webhook' => 'Webhook s týmito hodnotami už existuje.',
'unique_existing_webhook' => 'Iný webhook s týmito hodnotami už existuje.', 'unique_existing_webhook' => 'Iný webhook s týmito hodnotami už existuje.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Toto nie je bezpečné heslo. Skúste iné. Viac se dozviete na http://bit.ly/FF3-password-security', 'secure_password' => 'Toto nie je bezpečné heslo. Skúste iné. Viac se dozviete na http://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Neplatný typ opakovania pre opakované transakcie.', 'valid_recurrence_rep_type' => 'Neplatný typ opakovania pre opakované transakcie.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Värdet måste börja med :values.', 'starts_with' => 'Värdet måste börja med :values.',
'unique_webhook' => 'Du har redan en webhook med dessa värden.', 'unique_webhook' => 'Du har redan en webhook med dessa värden.',
'unique_existing_webhook' => 'Du har redan en annan webhook med dessa värden.', 'unique_existing_webhook' => 'Du har redan en annan webhook med dessa värden.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Detta lösenord är inte säkert. Vänligen försök igen. För mer info se https://bit.ly/FF3-password-security', 'secure_password' => 'Detta lösenord är inte säkert. Vänligen försök igen. För mer info se https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Ogiltig repetitionstyp får återkommande transaktioner.', 'valid_recurrence_rep_type' => 'Ogiltig repetitionstyp får återkommande transaktioner.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'This is not a secure password. Please try again. For more information, visit https://bit.ly/FF3-password-security', 'secure_password' => 'This is not a secure password. Please try again. For more information, visit https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Invalid repetition type for recurring transactions.', 'valid_recurrence_rep_type' => 'Invalid repetition type for recurring transactions.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'Giá trị phải bắt đầu bằng :values.', 'starts_with' => 'Giá trị phải bắt đầu bằng :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => 'Đây không phải là một mật khẩu an toàn. Vui lòng thử lại. Để biết thêm thông tin, hãy truy cập https://bit.ly/FF3-password-security', 'secure_password' => 'Đây không phải là một mật khẩu an toàn. Vui lòng thử lại. Để biết thêm thông tin, hãy truy cập https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => 'Loại lặp lại không hợp lệ cho các giao dịch định kỳ.', 'valid_recurrence_rep_type' => 'Loại lặp lại không hợp lệ cho các giao dịch định kỳ.',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => '此值必须以 :values 开头', 'starts_with' => '此值必须以 :values 开头',
'unique_webhook' => '您已经拥有使用此值的 Webhook', 'unique_webhook' => '您已经拥有使用此值的 Webhook',
'unique_existing_webhook' => '您已经拥有另一个使用此值的 Webhook', 'unique_existing_webhook' => '您已经拥有另一个使用此值的 Webhook',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => '此密码不安全,请重试。访问 https://bit.ly/FF3-password-security 获取更多信息。', 'secure_password' => '此密码不安全,请重试。访问 https://bit.ly/FF3-password-security 获取更多信息。',
'valid_recurrence_rep_type' => '此重复类型不能用于定期交易', 'valid_recurrence_rep_type' => '此重复类型不能用于定期交易',

View File

@@ -134,6 +134,8 @@ return [
'starts_with' => 'The value must start with :values.', 'starts_with' => 'The value must start with :values.',
'unique_webhook' => 'You already have a webhook with these values.', 'unique_webhook' => 'You already have a webhook with these values.',
'unique_existing_webhook' => 'You already have another webhook with these values.', 'unique_existing_webhook' => 'You already have another webhook with these values.',
'same_account_type' => 'Both accounts must be of the same account type',
'same_account_currency' => 'Both accounts must have the same currency setting',
'secure_password' => '此密碼不安全,請再試一遍。如需更多資訊,請瀏覽 https://bit.ly/FF3-password-security', 'secure_password' => '此密碼不安全,請再試一遍。如需更多資訊,請瀏覽 https://bit.ly/FF3-password-security',
'valid_recurrence_rep_type' => '定期重複交易的重複類型無效。', 'valid_recurrence_rep_type' => '定期重複交易的重複類型無效。',

View File

@@ -21,8 +21,8 @@
declare(strict_types=1); declare(strict_types=1);
use Carbon\Carbon; use Carbon\Carbon;
use Diglactic\Breadcrumbs\Generator;
use Diglactic\Breadcrumbs\Exceptions\DuplicateBreadcrumbException; use Diglactic\Breadcrumbs\Exceptions\DuplicateBreadcrumbException;
use Diglactic\Breadcrumbs\Generator;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Models\Attachment; use FireflyIII\Models\Attachment;
use FireflyIII\Models\Bill; use FireflyIII\Models\Bill;
@@ -1069,7 +1069,7 @@ try {
$first = $group->transactionJournals()->first(); $first = $group->transactionJournals()->first();
$breadcrumbs->push( $breadcrumbs->push(
trans('breadcrumbs.edit_journal', ['description' => limitStringLength($first->description)]), trans('breadcrumbs.edit_journal', ['description' => limitStringLength((string)$first->description)]),
route('transactions.edit', [$group->id]) route('transactions.edit', [$group->id])
); );
} }
@@ -1108,7 +1108,7 @@ try {
$type = strtolower($first->transactionType->type); $type = strtolower($first->transactionType->type);
$title = limitStringLength($first->description); $title = limitStringLength($first->description);
if ($group->transactionJournals()->count() > 1) { if ($group->transactionJournals()->count() > 1) {
$title = limitStringLength($group->title); $title = limitStringLength((string)$group->title);
} }
if ('opening balance' === $type) { if ('opening balance' === $type) {
// TODO link to account. // TODO link to account.