Various updates.

This commit is contained in:
James Cole 2021-04-04 08:31:15 +02:00
parent f8c725e5b2
commit 85b22341a4
No known key found for this signature in database
GPG Key ID: B5669F9493CDE38D
41 changed files with 161 additions and 54 deletions

View File

@ -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
}
}
}

View File

@ -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
}
);
}
}
}

View File

@ -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;

View File

@ -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'));
}

View File

@ -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

View File

@ -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 => {

View File

@ -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",

View File

@ -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"

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.',
'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' => 'Невалиден тип повторение за повтарящи се транзакции.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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' => 'Μη έγκυρος τύπος επανάληψης για επαναλαμβανόμενες συναλλαγές.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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',

View File

@ -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.',

View File

@ -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.',

View File

@ -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' => 'Недопустимый тип для повторяющихся транзакций.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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.',

View File

@ -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ỳ.',

View File

@ -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' => '此重复类型不能用于定期交易',

View File

@ -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' => '定期重複交易的重複類型無效。',

View File

@ -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));