From 73b554aa4804863f9ef030ea156b9d90147ff664 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 24 Jul 2022 17:56:49 +0800 Subject: [PATCH] auto set transaction type in transaction adding page according to the category id --- src/lib/utils.js | 28 ++++++++++++++++++++++++++ src/views/mobile/transactions/Edit.vue | 12 +++++++++++ 2 files changed, 40 insertions(+) diff --git a/src/lib/utils.js b/src/lib/utils.js index b0057101..019892d1 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -4,6 +4,8 @@ import uaParser from 'ua-parser-js'; import dateTimeConstants from '../consts/datetime.js'; import accountConstants from '../consts/account.js'; +import categoryConstants from '../consts/category.js'; +import transactionConstants from '../consts/transaction.js'; import settings from './settings.js'; function isFunction(val) { @@ -559,6 +561,30 @@ function parseUserAgent(ua) { }; } +function transactionTypeToCategroyType(transactionType) { + if (transactionType === transactionConstants.allTransactionTypes.Income) { + return categoryConstants.allCategoryTypes.Income; + } else if (transactionType === transactionConstants.allTransactionTypes.Expense) { + return categoryConstants.allCategoryTypes.Expense; + } else if (transactionType === transactionConstants.allTransactionTypes.Transfer) { + return categoryConstants.allCategoryTypes.Transfer; + } else { + return null; + } +} + +function categroyTypeToTransactionType(categoryType) { + if (categoryType === categoryConstants.allCategoryTypes.Income) { + return transactionConstants.allTransactionTypes.Income; + } else if (categoryType === categoryConstants.allCategoryTypes.Expense) { + return transactionConstants.allTransactionTypes.Expense; + } else if (categoryType === categoryConstants.allCategoryTypes.Transfer) { + return transactionConstants.allTransactionTypes.Transfer; + } else { + return null; + } +} + function getCategoryInfo(categoryId) { for (let i = 0; i < accountConstants.allCategories.length; i++) { if (accountConstants.allCategories[i].id === categoryId) { @@ -700,6 +726,8 @@ export default { stringToArrayBuffer, generateRandomString, parseUserAgent, + transactionTypeToCategroyType, + categroyTypeToTransactionType, getCategoryInfo, getCategorizedAccounts, getAllFilteredAccountsBalance, diff --git a/src/views/mobile/transactions/Edit.vue b/src/views/mobile/transactions/Edit.vue index 02fb3fcb..74388fb3 100644 --- a/src/views/mobile/transactions/Edit.vue +++ b/src/views/mobile/transactions/Edit.vue @@ -458,6 +458,9 @@ export default { allCategories() { return this.$store.state.allTransactionCategories; }, + allCategoriesMap() { + return this.$store.state.allTransactionCategoriesMap; + }, allTags() { return this.$store.state.allTransactionTags; }, @@ -601,6 +604,15 @@ export default { return; } + if ((!query.type || query.type === '0') && query.categoryId && query.categoryId !== '0' && self.allCategoriesMap[query.categoryId]) { + const category = self.allCategoriesMap[query.categoryId]; + const type = self.$utilities.categroyTypeToTransactionType(category.type); + + if (self.$utilities.isNumber(type)) { + self.transaction.type = type; + } + } + if (self.allCategories[self.$constants.category.allCategoryTypes.Expense] && self.allCategories[self.$constants.category.allCategoryTypes.Expense].length) { if (query.categoryId && query.categoryId !== '0' && self.isCategoryIdAvailable(self.allCategories[self.$constants.category.allCategoryTypes.Expense], query.categoryId)) {