diff --git a/src/lib/transaction.ts b/src/lib/transaction.ts index 6983c27d..f0709221 100644 --- a/src/lib/transaction.ts +++ b/src/lib/transaction.ts @@ -7,6 +7,7 @@ import { TransactionPicture } from '@/models/transaction_picture_info.ts'; import { Transaction } from '@/models/transaction.ts'; import { + isDefined, isNumber } from './common.ts'; import { @@ -21,6 +22,7 @@ import { } from './category.ts'; export interface SetTransactionOptions { + time?: number; type?: number; categoryId?: string; accountId?: string; @@ -32,6 +34,10 @@ export interface SetTransactionOptions { } export function setTransactionModelByTransaction(transaction: Transaction, transaction2: Transaction | null | undefined, allCategories: Record, allCategoriesMap: Record, allVisibleAccounts: Account[], allAccountsMap: Record, allTagsMap: Record, defaultAccountId: string, options: SetTransactionOptions, setContextData: boolean, convertContextTime: boolean): void { + if (isDefined(options.time)) { + transaction.time = options.time; + } + if (!options.type && options.categoryId && options.categoryId !== '0' && allCategoriesMap[options.categoryId]) { const category = allCategoriesMap[options.categoryId]; const type = categoryTypeToTransactionType(category.type); @@ -41,6 +47,14 @@ export function setTransactionModelByTransaction(transaction: Transaction, trans } } + if (isDefined(options.amount)) { + transaction.sourceAmount = options.amount; + } + + if (isDefined(options.destinationAmount)) { + transaction.destinationAmount = options.destinationAmount; + } + if (allCategories[CategoryType.Expense] && allCategories[CategoryType.Expense].length) { if (options.categoryId && options.categoryId !== '0') { diff --git a/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue b/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue index d3d3842d..637b73c1 100644 --- a/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue +++ b/src/views/desktop/accounts/list/dialogs/ReconciliationStatementDialog.vue @@ -442,14 +442,11 @@ function updateClosingBalance(): void { } const currentUnixTime = getCurrentUnixTime(); - let setTransactionTime = false; let newTransactionTime: number | undefined = undefined; if (endTime.value < currentUnixTime) { - setTransactionTime = true; newTransactionTime = endTime.value; } else if (currentUnixTime < startTime.value) { - setTransactionTime = true; newTransactionTime = startTime.value; } @@ -466,8 +463,6 @@ function updateClosingBalance(): void { type: newTransactionType, amount: newTransactionAmount, accountId: accountId.value, - setAmount: true, - setTransactionTime: setTransactionTime, noTransactionDraft: true }).then(result => { if (result && result.message) { diff --git a/src/views/desktop/transactions/ListPage.vue b/src/views/desktop/transactions/ListPage.vue index 80c1763e..865a968a 100644 --- a/src/views/desktop/transactions/ListPage.vue +++ b/src/views/desktop/transactions/ListPage.vue @@ -1580,15 +1580,12 @@ function changeAmountFilter(filterType: string): void { function add(template?: TransactionTemplate): void { const currentUnixTime = getCurrentUnixTime(); - let setTransactionTime = false; let newTransactionTime: number | undefined = undefined; if (query.value.maxTime && query.value.minTime) { if (query.value.maxTime < currentUnixTime) { - setTransactionTime = true; newTransactionTime = query.value.maxTime; } else if (currentUnixTime < query.value.minTime) { - setTransactionTime = true; newTransactionTime = query.value.minTime; } } @@ -1599,8 +1596,7 @@ function add(template?: TransactionTemplate): void { categoryId: queryAllFilterCategoryIdsCount.value === 1 ? query.value.categoryIds : '', accountId: queryAllFilterAccountIdsCount.value === 1 ? query.value.accountIds : '', tagIds: query.value.tagIds || '', - template: template, - setTransactionTime: setTransactionTime + template: template }).then(result => { if (result && result.message) { snackbar.value?.showMessage(result.message); diff --git a/src/views/desktop/transactions/list/dialogs/EditDialog.vue b/src/views/desktop/transactions/list/dialogs/EditDialog.vue index 27e9e9cf..3e576d53 100644 --- a/src/views/desktop/transactions/list/dialogs/EditDialog.vue +++ b/src/views/desktop/transactions/list/dialogs/EditDialog.vue @@ -497,7 +497,6 @@ import { TransactionTemplate } from '@/models/transaction_template.ts'; import type { TransactionPictureInfoBasicResponse } from '@/models/transaction_picture_info.ts'; import { Transaction } from '@/models/transaction.ts'; -import { isDefined } from '@/lib/common.ts'; import { getTimezoneOffsetMinutes, getCurrentUnixTime @@ -538,9 +537,6 @@ export interface TransactionEditOptions extends SetTransactionOptions { template?: TransactionTemplate; currentTransaction?: Transaction; currentTemplate?: TransactionTemplate; - time?: number; - setAmount?: boolean; - setTransactionTime?: boolean; noTransactionDraft?: boolean; } @@ -688,6 +684,7 @@ function setTransaction(newTransaction: Transaction | null, options: SetTransact allTagsMap.value, defaultAccountId.value, { + time: options.time, type: options.type, categoryId: options.categoryId, accountId: options.accountId, @@ -714,10 +711,7 @@ function open(options: TransactionEditOptions): Promise