From 5d2e880bc5a203779196cbebedb9af59f6ee5307 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Tue, 23 Jul 2024 23:18:34 +0800 Subject: [PATCH] not allow to add / modify / delete transaction with parent account --- pkg/errs/transaction.go | 13 ++++++++----- pkg/services/transactions.go | 12 ++++++++++++ src/locales/en.js | 3 +++ src/locales/zh_Hans.js | 3 +++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/pkg/errs/transaction.go b/pkg/errs/transaction.go index 7691f539..d573cf49 100644 --- a/pkg/errs/transaction.go +++ b/pkg/errs/transaction.go @@ -18,9 +18,12 @@ var ( ErrCannotAddTransactionToHiddenAccount = NewNormalError(NormalSubcategoryTransaction, 11, http.StatusBadRequest, "cannot add transaction to hidden account") ErrCannotModifyTransactionInHiddenAccount = NewNormalError(NormalSubcategoryTransaction, 12, http.StatusBadRequest, "cannot modify transaction of hidden account") ErrCannotDeleteTransactionInHiddenAccount = NewNormalError(NormalSubcategoryTransaction, 13, http.StatusBadRequest, "cannot delete transaction in hidden account") - 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") - ErrCannotUseHiddenTransactionTag = NewNormalError(NormalSubcategoryTransaction, 18, http.StatusBadRequest, "cannot use hidden transaction tag") + ErrCannotAddTransactionToParentAccount = NewNormalError(NormalSubcategoryTransaction, 14, http.StatusBadRequest, "cannot add transaction to parent account") + ErrCannotModifyTransactionInParentAccount = NewNormalError(NormalSubcategoryTransaction, 15, http.StatusBadRequest, "cannot modify transaction of parent account") + ErrCannotDeleteTransactionInParentAccount = NewNormalError(NormalSubcategoryTransaction, 16, http.StatusBadRequest, "cannot delete transaction in parent account") + ErrCannotCreateTransactionWithThisTransactionTime = NewNormalError(NormalSubcategoryTransaction, 17, http.StatusBadRequest, "cannot add transaction with this transaction time") + ErrCannotModifyTransactionWithThisTransactionTime = NewNormalError(NormalSubcategoryTransaction, 18, http.StatusBadRequest, "cannot modify transaction with this transaction time") + ErrCannotDeleteTransactionWithThisTransactionTime = NewNormalError(NormalSubcategoryTransaction, 19, http.StatusBadRequest, "cannot delete transaction with this transaction time") + ErrCannotUseHiddenTransactionCategory = NewNormalError(NormalSubcategoryTransaction, 20, http.StatusBadRequest, "cannot use hidden transaction category") + ErrCannotUseHiddenTransactionTag = NewNormalError(NormalSubcategoryTransaction, 21, http.StatusBadRequest, "cannot use hidden transaction tag") ) diff --git a/pkg/services/transactions.go b/pkg/services/transactions.go index dde349bb..bdb29379 100644 --- a/pkg/services/transactions.go +++ b/pkg/services/transactions.go @@ -267,6 +267,10 @@ func (s *TransactionService) CreateTransaction(c *core.Context, transaction *mod return errs.ErrCannotAddTransactionToHiddenAccount } + if sourceAccount.Type == models.ACCOUNT_TYPE_MULTI_SUB_ACCOUNTS || (destinationAccount != nil && destinationAccount.Type == models.ACCOUNT_TYPE_MULTI_SUB_ACCOUNTS) { + return errs.ErrCannotAddTransactionToParentAccount + } + if (transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN) && sourceAccount.Currency == destinationAccount.Currency && transaction.Amount != transaction.RelatedAccountAmount { return errs.ErrTransactionSourceAndDestinationAmountNotEqual @@ -492,6 +496,10 @@ func (s *TransactionService) ModifyTransaction(c *core.Context, transaction *mod return errs.ErrCannotModifyTransactionInHiddenAccount } + if sourceAccount.Type == models.ACCOUNT_TYPE_MULTI_SUB_ACCOUNTS || (destinationAccount != nil && destinationAccount.Type == models.ACCOUNT_TYPE_MULTI_SUB_ACCOUNTS) { + return errs.ErrCannotModifyTransactionInParentAccount + } + if (transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN) && sourceAccount.Currency == destinationAccount.Currency && transaction.Amount != transaction.RelatedAccountAmount { return errs.ErrTransactionSourceAndDestinationAmountNotEqual @@ -852,6 +860,10 @@ func (s *TransactionService) DeleteTransaction(c *core.Context, uid int64, trans return errs.ErrCannotDeleteTransactionInHiddenAccount } + if sourceAccount.Type == models.ACCOUNT_TYPE_MULTI_SUB_ACCOUNTS || (destinationAccount != nil && destinationAccount.Type == models.ACCOUNT_TYPE_MULTI_SUB_ACCOUNTS) { + return errs.ErrCannotDeleteTransactionInParentAccount + } + // Update transaction row to deleted deletedRows, err := sess.ID(oldTransaction.TransactionId).Cols("deleted", "deleted_unix_time").Where("uid=? AND deleted=?", uid, false).Update(updateModel) diff --git a/src/locales/en.js b/src/locales/en.js index 41f2f3b9..2b9ca104 100644 --- a/src/locales/en.js +++ b/src/locales/en.js @@ -671,6 +671,9 @@ export default { 'cannot add transaction to hidden account': 'You cannot add transaction to an hidden account', 'cannot modify transaction of hidden account': 'You cannot modify transaction of an hidden account', 'cannot delete transaction in hidden account': 'You cannot delete transaction in an hidden account', + 'cannot add transaction to parent account': 'You cannot add transaction to a parent account', + 'cannot modify transaction of parent account': 'You cannot modify transaction of a parent account', + 'cannot delete transaction in parent account': 'You cannot delete transaction in a parent account', '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', diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js index fad73595..3050a23d 100644 --- a/src/locales/zh_Hans.js +++ b/src/locales/zh_Hans.js @@ -671,6 +671,9 @@ export default { 'cannot add transaction to hidden account': '您不能在隐藏账户中添加交易', 'cannot modify transaction of hidden account': '您不能修改隐藏账户中的交易', 'cannot delete transaction in hidden account': '您不能删除隐藏账户中的交易', + 'cannot add transaction to parent account': '您不能在父账户中添加交易', + 'cannot modify transaction of parent account': '您不能修改父账户中的交易', + 'cannot delete transaction in parent account': '您不能删除父账户中的交易', 'cannot add transaction with this transaction time': '您不能添加该交易时间的交易', 'cannot modify transaction with this transaction time': '您不能修改该交易时间的交易', 'cannot delete transaction with this transaction time': '您不能删除该交易时间的交易',