modify balance modification transaction
This commit is contained in:
+10
-2
@@ -809,7 +809,7 @@ func (a *TransactionsApi) TransactionCreateHandler(c *core.WebContext) (any, *er
|
||||
return nil, errs.ErrTransactionTypeInvalid
|
||||
}
|
||||
|
||||
if transactionCreateReq.Type == models.TRANSACTION_TYPE_MODIFY_BALANCE && transactionCreateReq.CategoryId > 0 {
|
||||
if transactionCreateReq.Type == models.TRANSACTION_TYPE_MODIFY_BALANCE && transactionCreateReq.CategoryId != 0 {
|
||||
log.Warnf(c, "[transactions.TransactionCreateHandler] balance modification transaction cannot set category id")
|
||||
return nil, errs.ErrBalanceModificationTransactionCannotSetCategory
|
||||
}
|
||||
@@ -957,6 +957,14 @@ func (a *TransactionsApi) TransactionModifyHandler(c *core.WebContext) (any, *er
|
||||
return nil, errs.ErrTransactionTypeInvalid
|
||||
}
|
||||
|
||||
if transaction.Type == models.TRANSACTION_DB_TYPE_MODIFY_BALANCE && transactionModifyReq.CategoryId != 0 {
|
||||
log.Warnf(c, "[transactions.TransactionModifyHandler] balance modification transaction cannot set category id")
|
||||
return nil, errs.ErrBalanceModificationTransactionCannotSetCategory
|
||||
} else if transaction.Type != models.TRANSACTION_DB_TYPE_MODIFY_BALANCE && transactionModifyReq.CategoryId == 0 {
|
||||
log.Warnf(c, "[transactions.TransactionModifyHandler] non-balance modification transaction must set category id")
|
||||
return nil, errs.ErrIncompleteOrIncorrectSubmission
|
||||
}
|
||||
|
||||
allTransactionTagIds, err := a.transactionTags.GetAllTagIdsOfTransactions(c, uid, []int64{transaction.TransactionId})
|
||||
|
||||
if err != nil {
|
||||
@@ -1498,7 +1506,7 @@ func (a *TransactionsApi) TransactionImportHandler(c *core.WebContext) (any, *er
|
||||
return nil, errs.ErrTransactionTypeInvalid
|
||||
}
|
||||
|
||||
if transactionCreateReq.Type == models.TRANSACTION_TYPE_MODIFY_BALANCE && transactionCreateReq.CategoryId > 0 {
|
||||
if transactionCreateReq.Type == models.TRANSACTION_TYPE_MODIFY_BALANCE && transactionCreateReq.CategoryId != 0 {
|
||||
log.Warnf(c, "[transactions.TransactionImportHandler] balance modification transaction \"index:%d\" cannot set category id", i)
|
||||
return nil, errs.ErrBalanceModificationTransactionCannotSetCategory
|
||||
}
|
||||
|
||||
@@ -1002,7 +1002,7 @@ func (s *TransactionService) ModifyTransaction(c core.Context, transaction *mode
|
||||
return errs.ErrBalanceModificationTransactionCannotChangeAccountId
|
||||
}
|
||||
|
||||
if transaction.RelatedAccountAmount != oldTransaction.RelatedAccountAmount {
|
||||
if transaction.Amount != oldTransaction.Amount && transaction.RelatedAccountAmount != oldTransaction.RelatedAccountAmount {
|
||||
sourceAccount.UpdatedUnixTime = time.Now().Unix()
|
||||
updatedRows, err := sess.ID(sourceAccount.AccountId).SetExpr("balance", fmt.Sprintf("balance-(%d)+(%d)", oldTransaction.RelatedAccountAmount, transaction.RelatedAccountAmount)).Cols("updated_unix_time").Where("uid=? AND deleted=?", sourceAccount.Uid, false).Update(sourceAccount)
|
||||
|
||||
|
||||
@@ -246,9 +246,15 @@ export class Transaction implements TransactionInfoResponse {
|
||||
}
|
||||
|
||||
public toModifyRequest(actualTime?: number): TransactionModifyRequest {
|
||||
let categoryId = this.getCategoryId();
|
||||
|
||||
if (this.type === TransactionType.ModifyBalance) {
|
||||
categoryId = '0';
|
||||
}
|
||||
|
||||
return {
|
||||
id: this.id,
|
||||
categoryId: this.getCategoryId(),
|
||||
categoryId: categoryId,
|
||||
time: actualTime ? actualTime : this.time,
|
||||
utcOffset: this.utcOffset,
|
||||
sourceAccountId: this.sourceAccountId,
|
||||
|
||||
@@ -1050,7 +1050,11 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
||||
|
||||
if (transaction.type !== TransactionType.Expense &&
|
||||
transaction.type !== TransactionType.Income &&
|
||||
transaction.type !== TransactionType.Transfer) {
|
||||
transaction.type !== TransactionType.Transfer &&
|
||||
transaction.type !== TransactionType.ModifyBalance) {
|
||||
reject({ message: 'An error occurred' });
|
||||
return;
|
||||
} else if (!isEdit && transaction.type === TransactionType.ModifyBalance) {
|
||||
reject({ message: 'An error occurred' });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -480,7 +480,7 @@
|
||||
</v-btn>
|
||||
</v-btn-group>
|
||||
<v-btn color="warning" variant="tonal" :disabled="loading || submitting"
|
||||
v-if="mode === TransactionEditPageMode.View && originalTransactionEditable && transaction.type !== TransactionType.ModifyBalance"
|
||||
v-if="mode === TransactionEditPageMode.View && originalTransactionEditable"
|
||||
@click="edit">{{ tt('Edit') }}</v-btn>
|
||||
<v-btn color="error" variant="tonal" :disabled="loading || submitting"
|
||||
v-if="mode === TransactionEditPageMode.View && originalTransactionEditable" @click="remove">
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
@click="duplicate(transaction)"></f7-swipeout-button>
|
||||
<f7-swipeout-button color="orange" close
|
||||
:text="tt('Edit')"
|
||||
v-if="transaction.editable && transaction.type !== TransactionType.ModifyBalance"
|
||||
v-if="transaction.editable"
|
||||
@click="edit(transaction)"></f7-swipeout-button>
|
||||
<f7-swipeout-button color="red" class="padding-left padding-right"
|
||||
v-if="transaction.editable"
|
||||
|
||||
Reference in New Issue
Block a user