diff --git a/pkg/api/transactions.go b/pkg/api/transactions.go index 6e264837..10efb21e 100644 --- a/pkg/api/transactions.go +++ b/pkg/api/transactions.go @@ -689,6 +689,10 @@ func (a *TransactionsApi) TransactionCreateHandler(c *core.WebContext) (any, *er return nil, errs.ErrTransactionDestinationAmountCannotBeSet } + if transactionCreateReq.Type == models.TRANSACTION_TYPE_TRANSFER && (transactionCreateReq.SourceAmount < 0 || transactionCreateReq.DestinationAmount < 0) { + return nil, errs.ErrTransferTransactionAmountCannotBeLessThanZero + } + uid := c.GetCurrentUid() user, err := a.users.GetUserById(c, uid) @@ -819,6 +823,10 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.WebContext) (any, *er return nil, errs.ErrTransactionTypeInvalid } + if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT && (transactionModifyReq.SourceAmount < 0 || transactionModifyReq.DestinationAmount < 0) { + return nil, errs.ErrTransferTransactionAmountCannotBeLessThanZero + } + allTransactionTagIds, err := a.transactionTags.GetAllTagIdsOfTransactions(c, uid, []int64{transaction.TransactionId}) if err != nil { diff --git a/pkg/errs/transaction.go b/pkg/errs/transaction.go index a0e0448e..5c7d8e26 100644 --- a/pkg/errs/transaction.go +++ b/pkg/errs/transaction.go @@ -34,4 +34,5 @@ var ( ErrNoDataToImport = NewSystemError(NormalSubcategoryTransaction, 27, http.StatusBadRequest, "no data to import") ErrCannotAddTransactionBeforeBalanceModificationTransaction = NewSystemError(NormalSubcategoryTransaction, 28, http.StatusBadRequest, "cannot add transaction before balance modification transaction") ErrBalanceModificationTransactionCannotModifyTime = NewSystemError(NormalSubcategoryTransaction, 29, http.StatusBadRequest, "balance modification transaction cannot modify transaction time") + ErrTransferTransactionAmountCannotBeLessThanZero = NewNormalError(NormalSubcategoryTransaction, 30, http.StatusBadRequest, "transfer transaction amount cannot be less than zero") ) diff --git a/src/locales/en.json b/src/locales/en.json index 0939a6d6..79c4942f 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1081,6 +1081,7 @@ "no data to import": "No data to import", "cannot add transaction before balance modification transaction": "You cannot add transaction before the balance modification transaction", "balance modification transaction cannot modify transaction time": "You cannot modify transaction time for balance modification transaction", + "transfer transaction amount cannot be less than zero": "Amount cannot be less than 0 for transfer transaction", "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.json b/src/locales/zh_Hans.json index 12d9e390..d73b3c0e 100644 --- a/src/locales/zh_Hans.json +++ b/src/locales/zh_Hans.json @@ -1081,6 +1081,7 @@ "no data to import": "没有可以导入的数据", "cannot add transaction before balance modification transaction": "不能添加早于修改余额的交易", "balance modification transaction cannot modify transaction time": "您无法对修改余额的交易修改交易时间", + "transfer transaction amount cannot be less than zero": "转账交易的金额不能小于0", "transaction category id is invalid": "交易分类ID无效", "transaction category not found": "交易分类不存在", "transaction category type is invalid": "交易分类类型无效",