diff --git a/src/views/desktop/transactions/ListPage.vue b/src/views/desktop/transactions/ListPage.vue index a2bc0445..80c1763e 100644 --- a/src/views/desktop/transactions/ListPage.vue +++ b/src/views/desktop/transactions/ListPage.vue @@ -1578,12 +1578,29 @@ 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; + } + } + editDialog.value?.open({ + time: newTransactionTime, type: query.value.type, categoryId: queryAllFilterCategoryIdsCount.value === 1 ? query.value.categoryIds : '', accountId: queryAllFilterAccountIdsCount.value === 1 ? query.value.accountIds : '', tagIds: query.value.tagIds || '', - template: template + template: template, + setTransactionTime: setTransactionTime }).then(result => { if (result && result.message) { snackbar.value?.showMessage(result.message); diff --git a/src/views/mobile/transactions/ListPage.vue b/src/views/mobile/transactions/ListPage.vue index 094182d0..f90082bb 100644 --- a/src/views/mobile/transactions/ListPage.vue +++ b/src/views/mobile/transactions/ListPage.vue @@ -16,7 +16,7 @@ - + @@ -1374,6 +1374,48 @@ function changeAmountFilter(filterType: string): void { } } +function add(): 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; + } + } + + const params: string[] = []; + + if (setTransactionTime) { + params.push(`time=${newTransactionTime}`); + params.push('withTime=true'); + } + + if (query.value.type !== TransactionType.ModifyBalance) { + params.push(`type=${query.value.type}`); + } + + if (queryAllFilterCategoryIdsCount.value === 1) { + params.push(`categoryId=${query.value.categoryIds}`); + } + + if (queryAllFilterAccountIdsCount.value === 1) { + params.push(`accountId=${query.value.accountIds}`); + } + + if (query.value.tagIds) { + params.push(`tagIds=${query.value.tagIds}`); + } + + props.f7router.navigate(`/transaction/add?${params.join('&')}`); +} + function duplicate(transaction: Transaction): void { props.f7router.navigate(`/transaction/add?id=${transaction.id}&type=${transaction.type}`); }