don't allow adding balance modification transaction when account already has other transaction
This commit is contained in:
@@ -12,4 +12,5 @@ var (
|
||||
ErrTooMuchTransactionInOneSecond = NewNormalError(NORMAL_SUBCATEGORY_TRANSACTION, 6, http.StatusBadRequest, "too much transaction in one second")
|
||||
ErrBalanceModificationTransactionCannotSetCategory = NewNormalError(NORMAL_SUBCATEGORY_TRANSACTION, 7, http.StatusBadRequest, "balance modification transaction cannot set category")
|
||||
ErrBalanceModificationTransactionCannotChangeAccountId = NewNormalError(NORMAL_SUBCATEGORY_TRANSACTION, 8, http.StatusBadRequest, "balance modification transaction cannot change account id")
|
||||
ErrBalanceModificationTransactionCannotAddWhenNotEmpty = NewNormalError(NORMAL_SUBCATEGORY_TRANSACTION, 9, http.StatusBadRequest, "balance modification transaction cannot add when other transaction exists")
|
||||
)
|
||||
|
||||
@@ -200,8 +200,16 @@ func (s *TransactionService) CreateTransaction(transaction *models.Transaction)
|
||||
return errs.ErrTransactionCategoryTypeInvalid
|
||||
}
|
||||
|
||||
// Calculate balance modification transaction real amount
|
||||
// Verify balance modification transaction and calculate real amount
|
||||
if transaction.Type == models.TRANSACTION_TYPE_MODIFY_BALANCE {
|
||||
otherTransactionExists, err := sess.Where("uid=? AND deleted=? AND destination_account_id=?", transaction.Uid, false, destinationAccount.AccountId).Limit(1).Exist(&models.Transaction{})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
} else if otherTransactionExists {
|
||||
return errs.ErrBalanceModificationTransactionCannotAddWhenNotEmpty
|
||||
}
|
||||
|
||||
transaction.DestinationAmount = transaction.SourceAmount - destinationAccount.Balance
|
||||
}
|
||||
|
||||
|
||||
@@ -314,6 +314,7 @@ export default {
|
||||
'too much transaction in one second': 'There are too much transaction in one second, please choose another time',
|
||||
'balance modification transaction cannot set category': 'You cannot set category for balance modification transaction',
|
||||
'balance modification transaction cannot change account id': 'You cannot change account ID for balance modification transaction',
|
||||
'balance modification transaction cannot add when other transaction exists': 'You cannot add balance modification transaction when other transaction already exists in this account',
|
||||
'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',
|
||||
|
||||
@@ -314,6 +314,7 @@ export default {
|
||||
'too much transaction in one second': '一秒钟内交易太多,请选择其他时间',
|
||||
'balance modification transaction cannot set category': '您无法对修改余额的交易设置分类',
|
||||
'balance modification transaction cannot change account id': '您无法对修改余额的交易修改账户ID',
|
||||
'balance modification transaction cannot add when other transaction exists': '您不能在该账户已经存在其他交易时添加余额修改交易',
|
||||
'transaction category id is invalid': '交易分类ID无效',
|
||||
'transaction category not found': '交易分类不存在',
|
||||
'transaction category type is invalid': '交易分类类型无效',
|
||||
|
||||
Reference in New Issue
Block a user