From a7280bf7ede1fbc340031184a12d6427e5db7c11 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 23 Jul 2024 00:47:19 +0800 Subject: [PATCH] not allow to add transaction with hidden transaction category --- pkg/errs/transaction.go | 1 + pkg/services/transactions.go | 17 +++++++++++++++++ src/locales/en.js | 1 + src/locales/zh_Hans.js | 1 + 4 files changed, 20 insertions(+) diff --git a/pkg/errs/transaction.go b/pkg/errs/transaction.go index 372b1cd5..12365acd 100644 --- a/pkg/errs/transaction.go +++ b/pkg/errs/transaction.go @@ -21,4 +21,5 @@ var ( ErrCannotCreateTransactionWithThisTransactionTime = NewNormalError(NormalSubcategoryTransaction, 14, http.StatusBadRequest, "cannot add transaction with this transaction time") ErrCannotModifyTransactionWithThisTransactionTime = NewNormalError(NormalSubcategoryTransaction, 15, http.StatusBadRequest, "cannot modify transaction with this transaction time") ErrCannotDeleteTransactionWithThisTransactionTime = NewNormalError(NormalSubcategoryTransaction, 16, http.StatusBadRequest, "cannot delete transaction with this transaction time") + ErrCannotUseHiddenTransactionCategory = NewNormalError(NormalSubcategoryTransaction, 17, http.StatusBadRequest, "cannot use hidden transaction category") ) diff --git a/pkg/services/transactions.go b/pkg/services/transactions.go index 375ac975..963ada53 100644 --- a/pkg/services/transactions.go +++ b/pkg/services/transactions.go @@ -1635,6 +1635,10 @@ func (s *TransactionService) isCategoryValid(sess *xorm.Session, transaction *mo return errs.ErrTransactionCategoryNotFound } + if category.Hidden { + return errs.ErrCannotUseHiddenTransactionCategory + } + if category.ParentCategoryId < 1 { return errs.ErrCannotUsePrimaryCategoryForTransaction } @@ -1644,6 +1648,19 @@ func (s *TransactionService) isCategoryValid(sess *xorm.Session, transaction *mo ((transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN) && category.Type != models.CATEGORY_TYPE_TRANSFER) { return errs.ErrTransactionCategoryTypeInvalid } + + parentCategory := &models.TransactionCategory{} + has, err = sess.ID(category.ParentCategoryId).Where("uid=? AND deleted=?", transaction.Uid, false).Get(parentCategory) + + if err != nil { + return err + } else if !has { + return errs.ErrTransactionCategoryNotFound + } + + if parentCategory.Hidden { + return errs.ErrCannotUseHiddenTransactionCategory + } } return nil diff --git a/src/locales/en.js b/src/locales/en.js index 103ae455..c27beb25 100644 --- a/src/locales/en.js +++ b/src/locales/en.js @@ -674,6 +674,7 @@ export default { 'cannot add transaction with this transaction time': 'You cannot add transaction with this transaction time', 'cannot modify transaction with this transaction time': 'You cannot modify this transaction with this transaction time', 'cannot delete transaction with this transaction time': 'You cannot delete this transaction with this transaction time', + 'cannot use hidden transaction category': 'You cannot use hidden transaction category', 'transaction category id is invalid': 'Transaction category ID is invalid', 'transaction category not found': 'Transaction category is not found', 'transaction category type is invalid': 'Transaction category type is invalid', diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js index e2f60a22..8cd6c9ab 100644 --- a/src/locales/zh_Hans.js +++ b/src/locales/zh_Hans.js @@ -674,6 +674,7 @@ export default { 'cannot add transaction with this transaction time': '您不能添加该交易时间的交易', 'cannot modify transaction with this transaction time': '您不能修改该交易时间的交易', 'cannot delete transaction with this transaction time': '您不能删除该交易时间的交易', + 'cannot use hidden transaction category': '您不能使用隐藏的交易分类', 'transaction category id is invalid': '交易分类ID无效', 'transaction category not found': '交易分类不存在', 'transaction category type is invalid': '交易分类类型无效',