mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Various updates.
This commit is contained in:
parent
f8c725e5b2
commit
85b22341a4
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/*
|
||||
* AccountController.php
|
||||
* Copyright (c) 2021 james@firefly-iii.org
|
||||
@ -67,4 +68,4 @@ class AccountController extends Controller
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/*
|
||||
* MoveTransactionsRequest.php
|
||||
* Copyright (c) 2021 james@firefly-iii.org
|
||||
@ -101,4 +102,4 @@ class MoveTransactionsRequest extends FormRequest
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -186,6 +186,9 @@ class BelongsUser implements Rule
|
||||
*/
|
||||
private function validateBillId(int $value): bool
|
||||
{
|
||||
if (0 === $value) {
|
||||
return true;
|
||||
}
|
||||
$count = Bill::where('id', '=', $value)->where('user_id', '=', auth()->user()->id)->count();
|
||||
|
||||
return 1 === $count;
|
||||
|
@ -123,12 +123,19 @@ trait GroupValidation
|
||||
*/
|
||||
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));
|
||||
if (0 === $journalId) {
|
||||
Log::debug('Submitted 0, will accept to be used in a new transaction.');
|
||||
|
||||
$journalId = null === $journalId ? null : (int)$journalId;
|
||||
$count = $transactionGroup->transactionJournals()->where('id', $journalId)->count();
|
||||
if (null === $journalId || (null !== $journalId && 0 !== $journalId && 0 === $count)) {
|
||||
return;
|
||||
}
|
||||
$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).');
|
||||
$validator->errors()->add(sprintf('transactions.%d.source_name', $index), (string)trans('validation.need_id_in_edit'));
|
||||
}
|
||||
|
10
changelog.md
10
changelog.md
@ -17,13 +17,19 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
- Nothing (yet)
|
||||
|
||||
### 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
|
||||
- Nothing (yet)
|
||||
|
||||
### 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
|
||||
|
||||
|
@ -460,6 +460,13 @@ export default {
|
||||
shouldSubmit = true;
|
||||
}
|
||||
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) {
|
||||
if (this.transactions.hasOwnProperty(i) && /^0$|^[1-9]\d*$/.test(i) && i <= 4294967294) {
|
||||
// original transaction present?
|
||||
@ -480,11 +487,41 @@ export default {
|
||||
'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) {
|
||||
if (basicFields.hasOwnProperty(ii) && /^0$|^[1-9]\d*$/.test(ii) && ii <= 4294967294) {
|
||||
let fieldName = basicFields[ii];
|
||||
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]) {
|
||||
// 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(originalTransaction[fieldName]);
|
||||
// console.log(currentTransaction[fieldName]);
|
||||
@ -503,7 +540,7 @@ export default {
|
||||
if ('destination_account_name' === submissionFieldName) {
|
||||
submissionFieldName = 'destination_name';
|
||||
}
|
||||
// console.log('post: ' + submissionFieldName);
|
||||
|
||||
|
||||
diff[submissionFieldName] = currentTransaction[fieldName];
|
||||
shouldSubmit = true;
|
||||
@ -574,12 +611,15 @@ export default {
|
||||
dateStr = toW3CString(theDate);
|
||||
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;
|
||||
submission.transactions.push(lodashClonedeep(diff));
|
||||
shouldSubmit = true;
|
||||
} 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));
|
||||
shouldSubmit = true;
|
||||
}
|
||||
@ -637,6 +677,7 @@ export default {
|
||||
console.log('submitUpdate');
|
||||
this.inError = false;
|
||||
const url = './api/v1/transactions/' + this.groupId;
|
||||
console.log(JSON.stringify(submission));
|
||||
console.log(submission);
|
||||
axios.put(url, submission)
|
||||
.then(response => {
|
||||
|
@ -58,7 +58,7 @@
|
||||
"spent": "Gasto",
|
||||
"Default asset account": "Conta de activos padr\u00e3o",
|
||||
"search_results": "Resultados da pesquisa",
|
||||
"include": "Include?",
|
||||
"include": "Incluir?",
|
||||
"transaction": "Transac\u00e7\u00e3o",
|
||||
"account_role_defaultAsset": "Conta de activos padr\u00e3o",
|
||||
"account_role_savingAsset": "Conta poupan\u00e7a",
|
||||
|
@ -2061,9 +2061,9 @@ caniuse-api@^3.0.0:
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196:
|
||||
version "1.0.30001205"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz#d79bf6a6fb13196b4bb46e5143a22ca0242e0ef8"
|
||||
integrity sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==
|
||||
version "1.0.30001207"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz#364d47d35a3007e528f69adb6fecb07c2bb2cc50"
|
||||
integrity sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw==
|
||||
|
||||
chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
|
||||
version "2.4.2"
|
||||
|
2
public/v2/js/accounts/index.js
vendored
2
public/v2/js/accounts/index.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/accounts/show.js
vendored
2
public/v2/js/accounts/show.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/dashboard.js
vendored
2
public/v2/js/dashboard.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/create.js
vendored
2
public/v2/js/transactions/create.js
vendored
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/edit.js
vendored
2
public/v2/js/transactions/edit.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/v2/js/transactions/index.js
vendored
2
public/v2/js/transactions/index.js
vendored
File diff suppressed because one or more lines are too long
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Стойността трябва да започва с :values.',
|
||||
'unique_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',
|
||||
'valid_recurrence_rep_type' => 'Невалиден тип повторение за повтарящи се транзакции.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Hodnota musí začínat :values.',
|
||||
'unique_webhook' => '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',
|
||||
'valid_recurrence_rep_type' => 'Neplatný typ opakování pro opakované transakce.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Der Wert muss mit :values beginnen.',
|
||||
'unique_webhook' => 'Sie haben bereits einen 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',
|
||||
'valid_recurrence_rep_type' => 'Ungültige Wiederholungsart für Daueraufträge.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Η τιμή πρέπει να ξεκινά με :values.',
|
||||
'unique_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',
|
||||
'valid_recurrence_rep_type' => 'Μη έγκυρος τύπος επανάληψης για επαναλαμβανόμενες συναλλαγές.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Invalid repetition type for recurring transactions.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'El valor debe comenzar con :values.',
|
||||
'unique_webhook' => 'Ya tiene un 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',
|
||||
'valid_recurrence_rep_type' => 'Tipo de repetición no válido para transacciones recurrentes.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Virheellinen toiston tyyppi toistuville tapahtumille.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'La valeur doit commencer par :values.',
|
||||
'unique_webhook' => 'Vous avez déjà un 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',
|
||||
'valid_recurrence_rep_type' => 'Type de répétition non valide pour des opérations périodiques.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Érvénytelen ismétléstípus az ismétlődő tranzakciókhoz.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Tipe pengulangan yang tidak valid untuk transaksi berkala.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Il valore deve iniziare con :values.',
|
||||
'unique_webhook' => 'Hai già un 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',
|
||||
'valid_recurrence_rep_type' => 'Il tipo di ripetizione della transazione ricorrente non è valido.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Ugyldig repetisjons type for gjentakende transaksjoner.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'De waarde moet beginnen met :values.',
|
||||
'unique_webhook' => 'Je hebt al een 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',
|
||||
'valid_recurrence_rep_type' => 'Dit is geen geldige herhaling voor periodieke transacties.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Wartość musi zaczynać się od :values.',
|
||||
'unique_webhook' => 'Masz już 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',
|
||||
'valid_recurrence_rep_type' => 'Nieprawidłowy typ powtórzeń dla cyklicznych transakcji.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'O valor deve começar com :values.',
|
||||
'unique_webhook' => 'Você já tem um 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',
|
||||
'valid_recurrence_rep_type' => 'Tipo de repetição inválido para transações recorrentes.',
|
||||
|
@ -423,7 +423,7 @@ return [
|
||||
'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.',
|
||||
'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".',
|
||||
'execute' => 'Executar',
|
||||
'apply_rule_group_selection' => 'Aplicar grupo de regras ":title" a uma selecção de transacções',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'O valor deve começar com :values.',
|
||||
'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.',
|
||||
'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',
|
||||
'valid_recurrence_rep_type' => 'Tipo de repetição inválido para transações recorrentes.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Tip de repetare nevalid pentru tranzacțiile recurente.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Значение должно начинаться с :values.',
|
||||
'unique_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',
|
||||
'valid_recurrence_rep_type' => 'Недопустимый тип для повторяющихся транзакций.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Hodnota musí začínať :values.',
|
||||
'unique_webhook' => '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',
|
||||
'valid_recurrence_rep_type' => 'Neplatný typ opakovania pre opakované transakcie.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Värdet måste börja med :values.',
|
||||
'unique_webhook' => 'Du har redan en 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',
|
||||
'valid_recurrence_rep_type' => 'Ogiltig repetitionstyp får återkommande transaktioner.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Invalid repetition type for recurring transactions.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'Giá trị phải bắt đầu bằng :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => 'Loại lặp lại không hợp lệ cho các giao dịch định kỳ.',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => '此值必须以 :values 开头',
|
||||
'unique_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 获取更多信息。',
|
||||
'valid_recurrence_rep_type' => '此重复类型不能用于定期交易',
|
||||
|
@ -134,6 +134,8 @@ return [
|
||||
'starts_with' => 'The value must start with :values.',
|
||||
'unique_webhook' => 'You already have a 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',
|
||||
'valid_recurrence_rep_type' => '定期重複交易的重複類型無效。',
|
||||
|
@ -21,8 +21,8 @@
|
||||
declare(strict_types=1);
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Diglactic\Breadcrumbs\Generator;
|
||||
use Diglactic\Breadcrumbs\Exceptions\DuplicateBreadcrumbException;
|
||||
use Diglactic\Breadcrumbs\Generator;
|
||||
use FireflyIII\Models\Account;
|
||||
use FireflyIII\Models\Attachment;
|
||||
use FireflyIII\Models\Bill;
|
||||
@ -114,8 +114,8 @@ try {
|
||||
if (null !== $start && null !== $end) {
|
||||
$title = trans(
|
||||
'firefly.between_dates_breadcrumb',
|
||||
['start' =>$start->formatLocalized((string) trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string) trans('config.month_and_day')),]
|
||||
['start' => $start->formatLocalized((string)trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string)trans('config.month_and_day')),]
|
||||
);
|
||||
$breadcrumbs->push($title, route('accounts.show', $account));
|
||||
}
|
||||
@ -420,8 +420,8 @@ try {
|
||||
if (null !== $start && null !== $end) {
|
||||
$title = trans(
|
||||
'firefly.between_dates_breadcrumb',
|
||||
['start' => $start->formatLocalized((string) trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string) trans('config.month_and_day')),]
|
||||
['start' => $start->formatLocalized((string)trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string)trans('config.month_and_day')),]
|
||||
);
|
||||
$breadcrumbs->push($title, route('budgets.no-budget'));
|
||||
}
|
||||
@ -454,8 +454,8 @@ try {
|
||||
|
||||
$title = trans(
|
||||
'firefly.between_dates_breadcrumb',
|
||||
['start' => $budgetLimit->start_date->formatLocalized((string) trans('config.month_and_day')),
|
||||
'end' => $budgetLimit->end_date->formatLocalized((string) trans('config.month_and_day')),]
|
||||
['start' => $budgetLimit->start_date->formatLocalized((string)trans('config.month_and_day')),
|
||||
'end' => $budgetLimit->end_date->formatLocalized((string)trans('config.month_and_day')),]
|
||||
);
|
||||
|
||||
$breadcrumbs->push(
|
||||
@ -504,8 +504,8 @@ try {
|
||||
if (null !== $start && null !== $end) {
|
||||
$title = trans(
|
||||
'firefly.between_dates_breadcrumb',
|
||||
['start' => $start->formatLocalized((string) trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string) trans('config.month_and_day')),]
|
||||
['start' => $start->formatLocalized((string)trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string)trans('config.month_and_day')),]
|
||||
);
|
||||
$breadcrumbs->push($title, route('categories.show', [$category->id]));
|
||||
}
|
||||
@ -529,8 +529,8 @@ try {
|
||||
if (null !== $start && null !== $end) {
|
||||
$title = trans(
|
||||
'firefly.between_dates_breadcrumb',
|
||||
['start' => $start->formatLocalized((string) trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string) trans('config.month_and_day')),]
|
||||
['start' => $start->formatLocalized((string)trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string)trans('config.month_and_day')),]
|
||||
);
|
||||
$breadcrumbs->push($title, route('categories.no-category'));
|
||||
}
|
||||
@ -724,10 +724,10 @@ try {
|
||||
static function (Generator $breadcrumbs, string $accountIds, Carbon $start, Carbon $end) {
|
||||
$breadcrumbs->parent('reports.index');
|
||||
|
||||
$monthFormat = (string) trans('config.month_and_day');
|
||||
$monthFormat = (string)trans('config.month_and_day');
|
||||
$startString = $start->formatLocalized($monthFormat);
|
||||
$endString = $end->formatLocalized($monthFormat);
|
||||
$title = (string) trans('firefly.report_audit', ['start' => $startString, 'end' => $endString]);
|
||||
$title = (string)trans('firefly.report_audit', ['start' => $startString, 'end' => $endString]);
|
||||
|
||||
$breadcrumbs->push($title, route('reports.report.audit', [$accountIds, $start->format('Ymd'), $end->format('Ymd')]));
|
||||
}
|
||||
@ -737,10 +737,10 @@ try {
|
||||
static function (Generator $breadcrumbs, string $accountIds, string $budgetIds, Carbon $start, Carbon $end) {
|
||||
$breadcrumbs->parent('reports.index');
|
||||
|
||||
$monthFormat = (string) trans('config.month_and_day');
|
||||
$monthFormat = (string)trans('config.month_and_day');
|
||||
$startString = $start->formatLocalized($monthFormat);
|
||||
$endString = $end->formatLocalized($monthFormat);
|
||||
$title = (string) trans('firefly.report_budget', ['start' => $startString, 'end' => $endString]);
|
||||
$title = (string)trans('firefly.report_budget', ['start' => $startString, 'end' => $endString]);
|
||||
|
||||
$breadcrumbs->push($title, route('reports.report.budget', [$accountIds, $budgetIds, $start->format('Ymd'), $end->format('Ymd')]));
|
||||
}
|
||||
@ -751,10 +751,10 @@ try {
|
||||
static function (Generator $breadcrumbs, string $accountIds, string $tagTags, Carbon $start, Carbon $end) {
|
||||
$breadcrumbs->parent('reports.index');
|
||||
|
||||
$monthFormat = (string) trans('config.month_and_day');
|
||||
$monthFormat = (string)trans('config.month_and_day');
|
||||
$startString = $start->formatLocalized($monthFormat);
|
||||
$endString = $end->formatLocalized($monthFormat);
|
||||
$title = (string) trans('firefly.report_tag', ['start' => $startString, 'end' => $endString]);
|
||||
$title = (string)trans('firefly.report_tag', ['start' => $startString, 'end' => $endString]);
|
||||
|
||||
$breadcrumbs->push($title, route('reports.report.tag', [$accountIds, $tagTags, $start->format('Ymd'), $end->format('Ymd')]));
|
||||
}
|
||||
@ -765,10 +765,10 @@ try {
|
||||
static function (Generator $breadcrumbs, string $accountIds, string $categoryIds, Carbon $start, Carbon $end) {
|
||||
$breadcrumbs->parent('reports.index');
|
||||
|
||||
$monthFormat = (string) trans('config.month_and_day');
|
||||
$monthFormat = (string)trans('config.month_and_day');
|
||||
$startString = $start->formatLocalized($monthFormat);
|
||||
$endString = $end->formatLocalized($monthFormat);
|
||||
$title = (string) trans('firefly.report_category', ['start' => $startString, 'end' => $endString]);
|
||||
$title = (string)trans('firefly.report_category', ['start' => $startString, 'end' => $endString]);
|
||||
|
||||
$breadcrumbs->push($title, route('reports.report.category', [$accountIds, $categoryIds, $start->format('Ymd'), $end->format('Ymd')]));
|
||||
}
|
||||
@ -779,10 +779,10 @@ try {
|
||||
static function (Generator $breadcrumbs, string $accountIds, string $doubleIds, Carbon $start, Carbon $end) {
|
||||
$breadcrumbs->parent('reports.index');
|
||||
|
||||
$monthFormat = (string) trans('config.month_and_day');
|
||||
$monthFormat = (string)trans('config.month_and_day');
|
||||
$startString = $start->formatLocalized($monthFormat);
|
||||
$endString = $end->formatLocalized($monthFormat);
|
||||
$title = (string) trans('firefly.report_double', ['start' => $startString, 'end' => $endString]);
|
||||
$title = (string)trans('firefly.report_double', ['start' => $startString, 'end' => $endString]);
|
||||
|
||||
$breadcrumbs->push($title, route('reports.report.double', [$accountIds, $doubleIds, $start->format('Ymd'), $end->format('Ymd')]));
|
||||
}
|
||||
@ -793,10 +793,10 @@ try {
|
||||
static function (Generator $breadcrumbs, string $accountIds, Carbon $start, Carbon $end) {
|
||||
$breadcrumbs->parent('reports.index');
|
||||
|
||||
$monthFormat = (string) trans('config.month_and_day');
|
||||
$monthFormat = (string)trans('config.month_and_day');
|
||||
$startString = $start->formatLocalized($monthFormat);
|
||||
$endString = $end->formatLocalized($monthFormat);
|
||||
$title = (string) trans('firefly.report_default', ['start' => $startString, 'end' => $endString]);
|
||||
$title = (string)trans('firefly.report_default', ['start' => $startString, 'end' => $endString]);
|
||||
|
||||
$breadcrumbs->push($title, route('reports.report.default', [$accountIds, $start->format('Ymd'), $end->format('Ymd')]));
|
||||
}
|
||||
@ -1006,8 +1006,8 @@ try {
|
||||
if (null !== $start && null !== $end) {
|
||||
$title = trans(
|
||||
'firefly.between_dates_breadcrumb',
|
||||
['start' => $start->formatLocalized((string) trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string) trans('config.month_and_day')),]
|
||||
['start' => $start->formatLocalized((string)trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string)trans('config.month_and_day')),]
|
||||
);
|
||||
$breadcrumbs->push($title, route('tags.show', [$tag->id, $start, $end]));
|
||||
}
|
||||
@ -1019,7 +1019,7 @@ try {
|
||||
static function (Generator $breadcrumbs, Tag $tag) {
|
||||
$breadcrumbs->parent('tags.index');
|
||||
$breadcrumbs->push($tag->tag, route('tags.show', [$tag->id]));
|
||||
$title = (string) trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]);
|
||||
$title = (string)trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]);
|
||||
$breadcrumbs->push($title, route('tags.show.all', $tag->id));
|
||||
}
|
||||
);
|
||||
@ -1036,8 +1036,8 @@ try {
|
||||
// add date range:
|
||||
$title = trans(
|
||||
'firefly.between_dates_breadcrumb',
|
||||
['start' => $start->formatLocalized((string) trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string) trans('config.month_and_day')),]
|
||||
['start' => $start->formatLocalized((string)trans('config.month_and_day')),
|
||||
'end' => $end->formatLocalized((string)trans('config.month_and_day')),]
|
||||
);
|
||||
$breadcrumbs->push($title, route('transactions.index', [$what, $start, $end]));
|
||||
}
|
||||
@ -1069,7 +1069,7 @@ try {
|
||||
$first = $group->transactionJournals()->first();
|
||||
|
||||
$breadcrumbs->push(
|
||||
trans('breadcrumbs.edit_journal', ['description' => limitStringLength($first->description)]),
|
||||
trans('breadcrumbs.edit_journal', ['description' => limitStringLength((string)$first->description)]),
|
||||
route('transactions.edit', [$group->id])
|
||||
);
|
||||
}
|
||||
@ -1108,7 +1108,7 @@ try {
|
||||
$type = strtolower($first->transactionType->type);
|
||||
$title = limitStringLength($first->description);
|
||||
if ($group->transactionJournals()->count() > 1) {
|
||||
$title = limitStringLength($group->title);
|
||||
$title = limitStringLength((string)$group->title);
|
||||
}
|
||||
if ('opening balance' === $type) {
|
||||
// TODO link to account.
|
||||
@ -1168,7 +1168,7 @@ try {
|
||||
'transactions.bulk.edit',
|
||||
static function (Generator $breadcrumbs, array $journals): void {
|
||||
if (!empty($journals)) {
|
||||
$ids = Arr::pluck($journals, 'transaction_journal_id');
|
||||
$ids = Arr::pluck($journals, 'transaction_journal_id');
|
||||
$first = reset($journals);
|
||||
$breadcrumbs->parent('transactions.index', strtolower($first['transaction_type_type']));
|
||||
$breadcrumbs->push(trans('firefly.mass_bulk_journals'), route('transactions.bulk.edit', $ids));
|
||||
|
Loading…
Reference in New Issue
Block a user