diff --git a/pkg/api/transactions.go b/pkg/api/transactions.go index 10efb21e..6e264837 100644 --- a/pkg/api/transactions.go +++ b/pkg/api/transactions.go @@ -689,10 +689,6 @@ 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) @@ -823,10 +819,6 @@ 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/services/transactions.go b/pkg/services/transactions.go index d331f644..1650dbde 100644 --- a/pkg/services/transactions.go +++ b/pkg/services/transactions.go @@ -599,6 +599,11 @@ func (s *TransactionService) ModifyTransaction(c core.Context, transaction *mode return errs.ErrTransactionSourceAndDestinationAmountNotEqual } + if (transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN) && + (transaction.Amount < 0 || transaction.RelatedAccountAmount < 0) { + return errs.ErrTransferTransactionAmountCannotBeLessThanZero + } + oldSourceAccount, oldDestinationAccount, err := s.getOldAccountModels(sess, transaction, oldTransaction, sourceAccount, destinationAccount) if err != nil { @@ -1566,6 +1571,11 @@ func (s *TransactionService) doCreateTransaction(sess *xorm.Session, transaction return errs.ErrTransactionSourceAndDestinationAmountNotEqual } + if (transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_OUT || transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN) && + (transaction.Amount < 0 || transaction.RelatedAccountAmount < 0) { + return errs.ErrTransferTransactionAmountCannotBeLessThanZero + } + // Get and verify category err = s.isCategoryValid(sess, transaction)