From a9cd8b6512dae2df9e4406c0777cfbb3390d1f46 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 1 Jun 2025 14:00:35 +0200 Subject: [PATCH] Better fit for run recalculations. --- .../Models/Transaction/UpdateController.php | 10 +- .../Model/Transaction/UpdateController.php | 4 +- .../Correction/CorrectsGroupAccounts.php | 1 + app/Events/UpdatedTransactionGroup.php | 2 +- .../Transaction/ConvertController.php | 2 +- .../Transaction/MassController.php | 4 +- .../TransactionGroupRepository.php | 146 +++++++++--------- .../TransactionGroupRepositoryInterface.php | 8 +- .../Internal/Update/JournalUpdateService.php | 18 ++- .../v2/src/pages/transactions/create.js | 5 +- .../transactions/shared/add-autocomplete.js | 2 +- .../shared/autocomplete-functions.js | 4 +- 12 files changed, 106 insertions(+), 100 deletions(-) diff --git a/app/Api/V1/Controllers/Models/Transaction/UpdateController.php b/app/Api/V1/Controllers/Models/Transaction/UpdateController.php index 246666f0e0..ea32e8093a 100644 --- a/app/Api/V1/Controllers/Models/Transaction/UpdateController.php +++ b/app/Api/V1/Controllers/Models/Transaction/UpdateController.php @@ -74,18 +74,16 @@ class UpdateController extends Controller { app('log')->debug('Now in update routine for transaction group'); $data = $request->getAll(); - $oldAmount = $this->groupRepository->getTotalAmount($transactionGroup); + $oldHash = $this->groupRepository->getCompareHash($transactionGroup); $transactionGroup = $this->groupRepository->update($transactionGroup, $data); - $newAmount = $this->groupRepository->getTotalAmount($transactionGroup); + $newHash = $this->groupRepository->getCompareHash($transactionGroup); $manager = $this->getManager(); - Log::debug(sprintf('Old amount: %s, new amount: %s', $oldAmount, $newAmount)); - app('preferences')->mark(); $applyRules = $data['apply_rules'] ?? true; $fireWebhooks = $data['fire_webhooks'] ?? true; - $amountChanged = 0 !== bccomp($oldAmount, $newAmount); - event(new UpdatedTransactionGroup($transactionGroup, $applyRules, $fireWebhooks, $amountChanged)); + $runRecalculations = $oldHash !== $newHash; + event(new UpdatedTransactionGroup($transactionGroup, $applyRules, $fireWebhooks, $runRecalculations)); /** @var User $admin */ $admin = auth()->user(); diff --git a/app/Api/V2/Controllers/Model/Transaction/UpdateController.php b/app/Api/V2/Controllers/Model/Transaction/UpdateController.php index bdb751fa56..13a049847c 100644 --- a/app/Api/V2/Controllers/Model/Transaction/UpdateController.php +++ b/app/Api/V2/Controllers/Model/Transaction/UpdateController.php @@ -69,9 +69,9 @@ class UpdateController extends Controller $transactionGroup = $this->groupRepository->update($transactionGroup, $data); $applyRules = $data['apply_rules'] ?? true; $fireWebhooks = $data['fire_webhooks'] ?? true; - $amountChanged = true; + $runRecalculations = true; - event(new UpdatedTransactionGroup($transactionGroup, $applyRules, $fireWebhooks, $amountChanged)); + event(new UpdatedTransactionGroup($transactionGroup, $applyRules, $fireWebhooks, $runRecalculations)); app('preferences')->mark(); /** @var User $admin */ diff --git a/app/Console/Commands/Correction/CorrectsGroupAccounts.php b/app/Console/Commands/Correction/CorrectsGroupAccounts.php index dd8fc74884..39989cf164 100644 --- a/app/Console/Commands/Correction/CorrectsGroupAccounts.php +++ b/app/Console/Commands/Correction/CorrectsGroupAccounts.php @@ -58,6 +58,7 @@ class CorrectsGroupAccounts extends Command $handler = new UpdatedGroupEventHandler(); foreach ($groups as $groupId) { $group = TransactionGroup::find($groupId); + // TODO in theory the "unifyAccounts" method could lead to the need for run recalculations. $event = new UpdatedTransactionGroup($group, true, true, false); $handler->unifyAccounts($event); } diff --git a/app/Events/UpdatedTransactionGroup.php b/app/Events/UpdatedTransactionGroup.php index 0a704d9c3c..637bb99f6f 100644 --- a/app/Events/UpdatedTransactionGroup.php +++ b/app/Events/UpdatedTransactionGroup.php @@ -37,5 +37,5 @@ class UpdatedTransactionGroup extends Event /** * Create a new event instance. */ - public function __construct(public TransactionGroup $transactionGroup, public bool $applyRules, public bool $fireWebhooks, public bool $amountChanged) {} + public function __construct(public TransactionGroup $transactionGroup, public bool $applyRules, public bool $fireWebhooks, public bool $runRecalculations) {} } diff --git a/app/Http/Controllers/Transaction/ConvertController.php b/app/Http/Controllers/Transaction/ConvertController.php index ac951deb7b..5a524db619 100644 --- a/app/Http/Controllers/Transaction/ConvertController.php +++ b/app/Http/Controllers/Transaction/ConvertController.php @@ -292,7 +292,7 @@ class ConvertController extends Controller $group->refresh(); session()->flash('success', (string) trans('firefly.converted_to_'.$destinationType->type)); - event(new UpdatedTransactionGroup($group, true, true, false)); + event(new UpdatedTransactionGroup($group, true, true, true)); return redirect(route('transactions.show', [$group->id])); } diff --git a/app/Http/Controllers/Transaction/MassController.php b/app/Http/Controllers/Transaction/MassController.php index dfc7e4510a..8f055bede9 100644 --- a/app/Http/Controllers/Transaction/MassController.php +++ b/app/Http/Controllers/Transaction/MassController.php @@ -217,8 +217,8 @@ class MassController extends Controller $service->setData($data); $service->update(); // trigger rules - $amountChanged = $service->isAmountChanged(); - event(new UpdatedTransactionGroup($journal->transactionGroup, true, true, $amountChanged)); + $runRecalculations = $service->isCompareHashChanged(); + event(new UpdatedTransactionGroup($journal->transactionGroup, true, true, $runRecalculations)); } private function getDateFromRequest(MassEditJournalRequest $request, int $journalId, string $key): ?Carbon diff --git a/app/Repositories/TransactionGroup/TransactionGroupRepository.php b/app/Repositories/TransactionGroup/TransactionGroupRepository.php index 3c8ad4a8ed..dc07a385e7 100644 --- a/app/Repositories/TransactionGroup/TransactionGroupRepository.php +++ b/app/Repositories/TransactionGroup/TransactionGroupRepository.php @@ -85,7 +85,7 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, public function expandGroup(TransactionGroup $group): array { - $result = $group->toArray(); + $result = $group->toArray(); $result['transaction_journals'] = []; /** @var TransactionJournal $journal */ @@ -98,16 +98,16 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, private function expandJournal(TransactionJournal $journal): array { - $array = $journal->toArray(); - $array['transactions'] = []; - $array['meta'] = $journal->transactionJournalMeta->toArray(); - $array['tags'] = $journal->tags->toArray(); - $array['categories'] = $journal->categories->toArray(); - $array['budgets'] = $journal->budgets->toArray(); - $array['notes'] = $journal->notes->toArray(); - $array['locations'] = []; - $array['attachments'] = $journal->attachments->toArray(); - $array['links'] = []; + $array = $journal->toArray(); + $array['transactions'] = []; + $array['meta'] = $journal->transactionJournalMeta->toArray(); + $array['tags'] = $journal->tags->toArray(); + $array['categories'] = $journal->categories->toArray(); + $array['budgets'] = $journal->budgets->toArray(); + $array['notes'] = $journal->notes->toArray(); + $array['locations'] = []; + $array['attachments'] = $journal->attachments->toArray(); + $array['links'] = []; $array['piggy_bank_events'] = $journal->piggyBankEvents->toArray(); /** @var Transaction $transaction */ @@ -120,9 +120,9 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, private function expandTransaction(Transaction $transaction): array { - $array = $transaction->toArray(); - $array['account'] = $transaction->account->toArray(); - $array['budgets'] = []; + $array = $transaction->toArray(); + $array['account'] = $transaction->account->toArray(); + $array['budgets'] = []; $array['categories'] = []; foreach ($transaction->categories as $category) { @@ -143,25 +143,24 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, { $repository = app(AttachmentRepositoryInterface::class); $repository->setUser($this->user); - $journals = $group->transactionJournals->pluck('id')->toArray(); - $set = Attachment::whereIn('attachable_id', $journals) + $journals = $group->transactionJournals->pluck('id')->toArray(); + $set = Attachment::whereIn('attachable_id', $journals) ->where('attachable_type', TransactionJournal::class) ->where('uploaded', true) - ->whereNull('deleted_at')->get() - ; + ->whereNull('deleted_at')->get(); - $result = []; + $result = []; /** @var Attachment $attachment */ foreach ($set as $attachment) { - $journalId = $attachment->attachable_id; + $journalId = $attachment->attachable_id; $result[$journalId] ??= []; - $current = $attachment->toArray(); - $current['file_exists'] = true; - $current['notes'] = $repository->getNoteText($attachment); + $current = $attachment->toArray(); + $current['file_exists'] = true; + $current['notes'] = $repository->getNoteText($attachment); // already determined that this attachable is a TransactionJournal. $current['journal_title'] = $attachment->attachable->description; - $result[$journalId][] = $current; + $result[$journalId][] = $current; } return $result; @@ -175,8 +174,7 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, /** @var null|Note $note */ $note = Note::where('noteable_id', $journalId) ->where('noteable_type', TransactionJournal::class) - ->first() - ; + ->first(); if (null === $note) { return null; } @@ -189,9 +187,9 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, */ public function getLinks(TransactionGroup $group): array { - $return = []; + $return = []; $journals = $group->transactionJournals->pluck('id')->toArray(); - $set = TransactionJournalLink::where( + $set = TransactionJournalLink::where( static function (Builder $q) use ($journals): void { $q->whereIn('source_id', $journals); $q->orWhereIn('destination_id', $journals); @@ -199,8 +197,7 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, ) ->with(['source', 'destination', 'source.transactions']) ->leftJoin('link_types', 'link_types.id', '=', 'journal_links.link_type_id') - ->get(['journal_links.*', 'link_types.inward', 'link_types.outward', 'link_types.editable']) - ; + ->get(['journal_links.*', 'link_types.inward', 'link_types.outward', 'link_types.editable']); /** @var TransactionJournalLink $entry */ foreach ($set as $entry) { @@ -210,28 +207,28 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, // phpstan: the editable field is provided by the query. if ($journalId === $entry->source_id) { - $amount = $this->getFormattedAmount($entry->destination); - $foreignAmount = $this->getFormattedForeignAmount($entry->destination); + $amount = $this->getFormattedAmount($entry->destination); + $foreignAmount = $this->getFormattedForeignAmount($entry->destination); $return[$journalId][] = [ - 'id' => $entry->id, - 'link' => $entry->outward, - 'group' => $entry->destination->transaction_group_id, - 'description' => $entry->destination->description, - 'editable' => 1 === (int) $entry->editable, - 'amount' => $amount, + 'id' => $entry->id, + 'link' => $entry->outward, + 'group' => $entry->destination->transaction_group_id, + 'description' => $entry->destination->description, + 'editable' => 1 === (int)$entry->editable, + 'amount' => $amount, 'foreign_amount' => $foreignAmount, ]; } if ($journalId === $entry->destination_id) { - $amount = $this->getFormattedAmount($entry->source); - $foreignAmount = $this->getFormattedForeignAmount($entry->source); + $amount = $this->getFormattedAmount($entry->source); + $foreignAmount = $this->getFormattedForeignAmount($entry->source); $return[$journalId][] = [ - 'id' => $entry->id, - 'link' => $entry->inward, - 'group' => $entry->source->transaction_group_id, - 'description' => $entry->source->description, - 'editable' => 1 === (int) $entry->editable, - 'amount' => $amount, + 'id' => $entry->id, + 'link' => $entry->inward, + 'group' => $entry->source->transaction_group_id, + 'description' => $entry->source->description, + 'editable' => 1 === (int)$entry->editable, + 'amount' => $amount, 'foreign_amount' => $foreignAmount, ]; } @@ -244,9 +241,9 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, { /** @var Transaction $transaction */ $transaction = $journal->transactions->first(); - $currency = $transaction->transactionCurrency; - $type = $journal->transactionType->type; - $amount = app('steam')->positive($transaction->amount); + $currency = $transaction->transactionCurrency; + $type = $journal->transactionType->type; + $amount = app('steam')->positive($transaction->amount); if (TransactionTypeEnum::WITHDRAWAL->value === $type) { return app('amount')->formatAnything($currency, app('steam')->negative($amount)); } @@ -264,12 +261,12 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, if (null === $transaction->foreign_amount || '' === $transaction->foreign_amount) { return ''; } - if (0 === bccomp('0', (string) $transaction->foreign_amount)) { + if (0 === bccomp('0', (string)$transaction->foreign_amount)) { return ''; } - $currency = $transaction->foreignCurrency; - $type = $journal->transactionType->type; - $amount = app('steam')->positive($transaction->foreign_amount); + $currency = $transaction->foreignCurrency; + $type = $journal->transactionType->type; + $amount = app('steam')->positive($transaction->foreign_amount); if (TransactionTypeEnum::WITHDRAWAL->value === $type) { return app('amount')->formatAnything($currency, app('steam')->negative($amount)); } @@ -296,16 +293,15 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, */ public function getMetaDateFields(int $journalId, array $fields): NullArrayObject { - $query = DB::table('journal_meta') + $query = DB::table('journal_meta') ->where('transaction_journal_id', $journalId) ->whereIn('name', $fields) ->whereNull('deleted_at') - ->get(['name', 'data']) - ; + ->get(['name', 'data']); $return = []; foreach ($query as $row) { - $return[$row->name] = new Carbon(json_decode((string) $row->data, true, 512, JSON_THROW_ON_ERROR)); + $return[$row->name] = new Carbon(json_decode((string)$row->data, true, 512, JSON_THROW_ON_ERROR)); } return new NullArrayObject($return); @@ -316,16 +312,15 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, */ public function getMetaFields(int $journalId, array $fields): NullArrayObject { - $query = DB::table('journal_meta') + $query = DB::table('journal_meta') ->where('transaction_journal_id', $journalId) ->whereIn('name', $fields) ->whereNull('deleted_at') - ->get(['name', 'data']) - ; + ->get(['name', 'data']); $return = []; foreach ($query as $row) { - $return[$row->name] = json_decode((string) $row->data); + $return[$row->name] = json_decode((string)$row->data); } return new NullArrayObject($return); @@ -338,13 +333,12 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, */ public function getPiggyEvents(TransactionGroup $group): array { - $return = []; + $return = []; $journals = $group->transactionJournals->pluck('id')->toArray(); $currency = app('amount')->getNativeCurrencyByUserGroup($this->user->userGroup); - $data = PiggyBankEvent::whereIn('transaction_journal_id', $journals) + $data = PiggyBankEvent::whereIn('transaction_journal_id', $journals) ->with('piggyBank', 'piggyBank.account') - ->get(['piggy_bank_events.*']) - ; + ->get(['piggy_bank_events.*']); /** @var PiggyBankEvent $row */ foreach ($data as $row) { @@ -352,20 +346,19 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, continue; } // get currency preference. - $currencyPreference = AccountMeta::where('account_id', $row->piggyBank->account_id) + $currencyPreference = AccountMeta::where('account_id', $row->piggyBank->account_id) ->where('name', 'currency_id') - ->first() - ; + ->first(); if (null !== $currencyPreference) { $currency = TransactionCurrency::where('id', $currencyPreference->data)->first(); } - $journalId = $row->transaction_journal_id; + $journalId = $row->transaction_journal_id; $return[$journalId] ??= []; $return[$journalId][] = [ - 'piggy' => $row->piggyBank->name, + 'piggy' => $row->piggyBank->name, 'piggy_id' => $row->piggy_bank_id, - 'amount' => app('amount')->formatAnything($currency, $row->amount), + 'amount' => app('amount')->formatAnything($currency, $row->amount), ]; } @@ -389,8 +382,7 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, ->leftJoin('tags', 'tag_transaction_journal.tag_id', '=', 'tags.id') ->where('tag_transaction_journal.transaction_journal_id', $journalId) ->orderBy('tags.tag', 'ASC') - ->get(['tags.tag']) - ; + ->get(['tags.tag']); return $result->pluck('tag')->toArray(); } @@ -433,20 +425,22 @@ class TransactionGroupRepository implements TransactionGroupRepositoryInterface, return $service->update($transactionGroup, $data); } - public function getTotalAmount(TransactionGroup $group): string + public function getCompareHash(TransactionGroup $group): string { $sum = '0'; + $names = ''; /** @var TransactionJournal $journal */ foreach ($group->transactionJournals as $journal) { /** @var Transaction $transaction */ foreach ($journal->transactions as $transaction) { - if (-1 === bccomp('0', (string) $transaction->amount)) { + if (-1 === bccomp('0', (string)$transaction->amount)) { $sum = bcadd($sum, $transaction->amount); + $names = sprintf('%s%s', $names, $transaction->account->name); } } } - return $sum; + return hash('sha256', sprintf('%s-%s', $names, $sum)); } } diff --git a/app/Repositories/TransactionGroup/TransactionGroupRepositoryInterface.php b/app/Repositories/TransactionGroup/TransactionGroupRepositoryInterface.php index 2bbacbfeae..12bbc05248 100644 --- a/app/Repositories/TransactionGroup/TransactionGroupRepositoryInterface.php +++ b/app/Repositories/TransactionGroup/TransactionGroupRepositoryInterface.php @@ -49,7 +49,13 @@ interface TransactionGroupRepositoryInterface { public function countAttachments(int $journalId): int; - public function getTotalAmount(TransactionGroup $group): string; + /** + * Small method that returns a hash that can be used to compare two transaction groups. + * + * @param TransactionGroup $group + * @return string + */ + public function getCompareHash(TransactionGroup $group): string; public function destroy(TransactionGroup $group): void; diff --git a/app/Services/Internal/Update/JournalUpdateService.php b/app/Services/Internal/Update/JournalUpdateService.php index 32cdb7c9f1..3fa4ad5fca 100644 --- a/app/Services/Internal/Update/JournalUpdateService.php +++ b/app/Services/Internal/Update/JournalUpdateService.php @@ -43,6 +43,7 @@ use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; +use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; use FireflyIII\Services\Internal\Support\JournalServiceTrait; use FireflyIII\Support\Facades\FireflyConfig; use FireflyIII\Support\NullArrayObject; @@ -60,6 +61,7 @@ class JournalUpdateService private BillRepositoryInterface $billRepository; private CurrencyRepositoryInterface $currencyRepository; + private TransactionGroupRepositoryInterface $transactionGroupRepository; private array $data; private ?Account $destinationAccount; private ?Transaction $destinationTransaction; @@ -69,7 +71,7 @@ class JournalUpdateService private ?Transaction $sourceTransaction; private ?TransactionGroup $transactionGroup; private ?TransactionJournal $transactionJournal; - private bool $amountChanged = false; + private string $startCompareHash = ''; /** * JournalUpdateService constructor. @@ -88,6 +90,7 @@ class JournalUpdateService $this->tagFactory = app(TagFactory::class); $this->accountRepository = app(AccountRepositoryInterface::class); $this->currencyRepository = app(CurrencyRepositoryInterface::class); + $this->transactionGroupRepository = app(TransactionGroupRepositoryInterface::class); $this->metaString = [ 'sepa_cc', 'sepa_ct_op', @@ -120,10 +123,12 @@ class JournalUpdateService $this->budgetRepository->setUser($transactionGroup->user); $this->tagFactory->setUser($transactionGroup->user); $this->accountRepository->setUser($transactionGroup->user); + $this->transactionGroupRepository->setUser($transactionGroup->user); $this->destinationAccount = null; $this->destinationTransaction = null; $this->sourceAccount = null; $this->sourceTransaction = null; + $this->startCompareHash = $this->transactionGroupRepository->getCompareHash($transactionGroup); } public function setTransactionJournal(TransactionJournal $transactionJournal): void @@ -675,7 +680,6 @@ class JournalUpdateService return; } $origSourceTransaction = $this->getSourceTransaction(); - $this->amountChanged = 0 !== bccomp($origSourceTransaction->amount, app('steam')->negative($amount)); $origSourceTransaction->amount = app('steam')->negative($amount); $origSourceTransaction->balance_dirty = true; $origSourceTransaction->save(); @@ -818,8 +822,12 @@ class JournalUpdateService return false; } - public function isAmountChanged(): bool - { - return $this->amountChanged; + public function isCompareHashChanged(): bool { + Log::debug(sprintf('Now in %s', __METHOD__)); + $compareHash = $this->transactionGroupRepository->getCompareHash($this->transactionGroup); + Log::debug(sprintf('Compare hash is "%s".', $compareHash)); + Log::debug(sprintf('Start compare hash is "%s".', $this->startCompareHash)); + + return $compareHash !== $this->startCompareHash; } } diff --git a/resources/assets/v2/src/pages/transactions/create.js b/resources/assets/v2/src/pages/transactions/create.js index 6443b60e0e..3a2b60beae 100644 --- a/resources/assets/v2/src/pages/transactions/create.js +++ b/resources/assets/v2/src/pages/transactions/create.js @@ -490,7 +490,6 @@ let transactions = function () { // addedSplit, is called from the HTML // for source account const renderAccount = function (item, b, c) { - console.log('render account'); return item.name_with_balance + '
' + i18next.t('firefly.account_type_' + item.type) + ''; }; console.log('here we are in'); @@ -499,7 +498,7 @@ let transactions = function () { serverUrl: urls.account, onRenderItem: renderAccount, valueField: 'id', - labelField: 'title', + labelField: 'name_with_balance', onChange: changeSourceAccount, onSelectItem: selectSourceAccount, hiddenValue: this.entries[count].source_account.alpine_name @@ -509,7 +508,7 @@ let transactions = function () { serverUrl: urls.account, account_types: this.filters.destination, valueField: 'id', - labelField: 'title', + labelField: 'name_with_balance', onRenderItem: renderAccount, onChange: changeDestinationAccount, onSelectItem: selectDestinationAccount diff --git a/resources/assets/v2/src/pages/transactions/shared/add-autocomplete.js b/resources/assets/v2/src/pages/transactions/shared/add-autocomplete.js index 75c595d3e6..a71dcf023e 100644 --- a/resources/assets/v2/src/pages/transactions/shared/add-autocomplete.js +++ b/resources/assets/v2/src/pages/transactions/shared/add-autocomplete.js @@ -45,7 +45,7 @@ export function addAutocomplete(options) { liveServer: true, }; if (typeof options.account_types !== 'undefined' && options.account_types.length > 0) { - params.serverParams['filter[account_types]'] = options.account_types; + params.serverParams['types'] = options.account_types; } if (typeof options.onRenderItem !== 'undefined' && null !== options.onRenderItem) { console.log('overrule onRenderItem.'); diff --git a/resources/assets/v2/src/pages/transactions/shared/autocomplete-functions.js b/resources/assets/v2/src/pages/transactions/shared/autocomplete-functions.js index d878837dcc..4755f2e33c 100644 --- a/resources/assets/v2/src/pages/transactions/shared/autocomplete-functions.js +++ b/resources/assets/v2/src/pages/transactions/shared/autocomplete-functions.js @@ -55,7 +55,7 @@ export function changeDestinationAccount(item, ac) { export function selectDestinationAccount(item, ac) { const index = parseInt(ac._searchInput.attributes['data-index'].value); document.querySelector('#form')._x_dataStack[0].$data.entries[index].destination_account = { - id: item.id, name: item.title, alpine_name: item.title, type: item.meta.type, currency_code: item.meta.currency_code, + id: item.id, name: item.name, alpine_name: item.name, type: item.type, currency_code: item.currency_code, }; document.querySelector('#form')._x_dataStack[0].changedDestinationAccount(); } @@ -78,7 +78,7 @@ export function changeSourceAccount(item, ac) { export function selectSourceAccount(item, ac) { const index = parseInt(ac._searchInput.attributes['data-index'].value); document.querySelector('#form')._x_dataStack[0].$data.entries[index].source_account = { - id: item.id, name: item.title, alpine_name: item.title, type: item.meta.type, currency_code: item.meta.currency_code, + id: item.id, name: item.name, alpine_name: item.name, type: item.type, currency_code: item.currency_code, }; document.querySelector('#form')._x_dataStack[0].changedSourceAccount(); }