mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-19 17:24:26 +08:00
support batch update tags for transactions
This commit is contained in:
@@ -395,6 +395,9 @@ func startWebServer(c *core.CliContext) error {
|
|||||||
apiV1Route.POST("/transactions/modify.json", bindApi(api.Transactions.TransactionModifyHandler))
|
apiV1Route.POST("/transactions/modify.json", bindApi(api.Transactions.TransactionModifyHandler))
|
||||||
apiV1Route.POST("/transactions/batch_update/category.json", bindApi(api.Transactions.TransactionBatchUpdateCategoriesHandler))
|
apiV1Route.POST("/transactions/batch_update/category.json", bindApi(api.Transactions.TransactionBatchUpdateCategoriesHandler))
|
||||||
apiV1Route.POST("/transactions/batch_update/account.json", bindApi(api.Transactions.TransactionBatchUpdateAccountsHandler))
|
apiV1Route.POST("/transactions/batch_update/account.json", bindApi(api.Transactions.TransactionBatchUpdateAccountsHandler))
|
||||||
|
apiV1Route.POST("/transactions/batch_update/tag/add.json", bindApi(api.Transactions.TransactionBatchAddTagsHandler))
|
||||||
|
apiV1Route.POST("/transactions/batch_update/tag/remove.json", bindApi(api.Transactions.TransactionBatchRemoveTagsHandler))
|
||||||
|
apiV1Route.POST("/transactions/batch_update/tag/clear.json", bindApi(api.Transactions.TransactionBatchClearTagsHandler))
|
||||||
apiV1Route.POST("/transactions/move/all.json", bindApi(api.Transactions.TransactionMoveAllBetweenAccountsHandler))
|
apiV1Route.POST("/transactions/move/all.json", bindApi(api.Transactions.TransactionMoveAllBetweenAccountsHandler))
|
||||||
apiV1Route.POST("/transactions/delete.json", bindApi(api.Transactions.TransactionDeleteHandler))
|
apiV1Route.POST("/transactions/delete.json", bindApi(api.Transactions.TransactionDeleteHandler))
|
||||||
apiV1Route.POST("/transactions/batch_delete.json", bindApi(api.Transactions.TransactionBatchDeleteHandler))
|
apiV1Route.POST("/transactions/batch_delete.json", bindApi(api.Transactions.TransactionBatchDeleteHandler))
|
||||||
|
|||||||
@@ -1588,6 +1588,291 @@ func (a *TransactionsApi) TransactionBatchUpdateAccountsHandler(c *core.WebConte
|
|||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TransactionBatchAddTagsHandler batch add tags to transactions by request parameters for current user
|
||||||
|
func (a *TransactionsApi) TransactionBatchAddTagsHandler(c *core.WebContext) (any, *errs.Error) {
|
||||||
|
var transactionBatchUpdateReq models.TransactionBatchAddTagsRequest
|
||||||
|
err := c.ShouldBindJSON(&transactionBatchUpdateReq)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchAddTagsHandler] parse request failed, because %s", err.Error())
|
||||||
|
return nil, errs.NewIncompleteOrIncorrectSubmissionError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
clientTimezone, err := c.GetClientTimezone()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchAddTagsHandler] cannot get client timezone, because %s", err.Error())
|
||||||
|
return nil, errs.ErrClientTimezoneOffsetInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionIds, err := utils.StringArrayToInt64Array(transactionBatchUpdateReq.TransactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchAddTagsHandler] parse transaction ids failed, because %s", err.Error())
|
||||||
|
return nil, errs.ErrTransactionIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
tagIds, err := utils.StringArrayToInt64Array(transactionBatchUpdateReq.TagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchAddTagsHandler] parse tag ids failed, because %s", err.Error())
|
||||||
|
return nil, errs.ErrTransactionTagIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
tagIds = utils.ToUniqueInt64Slice(tagIds)
|
||||||
|
|
||||||
|
uid := c.GetCurrentUid()
|
||||||
|
user, err := a.users.GetUserById(c, uid)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if !errs.IsCustomError(err) {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchAddTagsHandler] failed to get user, because %s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, errs.ErrUserNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
tags, err := a.transactionTags.GetTagsByTagIds(c, uid, tagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchAddTagsHandler] failed to get tags for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(tags) != len(tagIds) {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchAddTagsHandler] some tags do not exist for user \"uid:%d\"", uid)
|
||||||
|
return nil, errs.ErrTransactionTagNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
transactions, err := a.transactions.GetTransactionsByTransactionIds(c, uid, transactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchAddTagsHandler] failed to get transactions for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionTagIndexes, err := a.transactionTags.GetAllTagIdsOfTransactions(c, uid, transactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchAddTagsHandler] failed to get transactions tag indexes for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
allNewTransactionTagIndexes := make(map[int64][]int64, len(transactions))
|
||||||
|
|
||||||
|
for i := 0; i < len(transactions); i++ {
|
||||||
|
transaction := transactions[i]
|
||||||
|
|
||||||
|
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchAddTagsHandler] cannot modify transaction \"id:%d\" for user \"uid:%d\", because transaction type is transfer in", transaction.TransactionId, uid)
|
||||||
|
return nil, errs.ErrTransactionTypeInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionEditable := user.CanEditTransactionByTransactionTime(transaction.TransactionTime, clientTimezone)
|
||||||
|
|
||||||
|
if !transactionEditable {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchAddTagsHandler] transaction \"id:%d\" is not editable for user \"uid:%d\"", transaction.TransactionId, uid)
|
||||||
|
return nil, errs.ErrCannotModifyTransactionWithThisTransactionTime
|
||||||
|
}
|
||||||
|
|
||||||
|
existedTagIds := transactionTagIndexes[transaction.TransactionId]
|
||||||
|
existedTagIdsMap := make(map[int64]bool, len(existedTagIds))
|
||||||
|
|
||||||
|
for j := 0; j < len(existedTagIds); j++ {
|
||||||
|
existedTagIdsMap[existedTagIds[j]] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
var newTagIds []int64
|
||||||
|
|
||||||
|
for j := 0; j < len(tagIds); j++ {
|
||||||
|
tagId := tagIds[j]
|
||||||
|
|
||||||
|
if _, exists := existedTagIdsMap[tagId]; !exists {
|
||||||
|
newTagIds = append(newTagIds, tagId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
allNewTransactionTagIndexes[transaction.TransactionId] = newTagIds
|
||||||
|
}
|
||||||
|
|
||||||
|
err = a.transactions.BatchAddTagsToTransactions(c, uid, transactions, allNewTransactionTagIndexes)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchAddTagsHandler] failed to batch update transactions tags for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Infof(c, "[transactions.TransactionBatchAddTagsHandler] user \"uid:%d\" has batch updated tag of %d transactions successfully", uid, len(allNewTransactionTagIndexes))
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TransactionBatchRemoveTagsHandler batch remove tags from transactions by request parameters for current user
|
||||||
|
func (a *TransactionsApi) TransactionBatchRemoveTagsHandler(c *core.WebContext) (any, *errs.Error) {
|
||||||
|
var transactionBatchUpdateReq models.TransactionBatchRemoveTagsRequest
|
||||||
|
err := c.ShouldBindJSON(&transactionBatchUpdateReq)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchRemoveTagsHandler] parse request failed, because %s", err.Error())
|
||||||
|
return nil, errs.NewIncompleteOrIncorrectSubmissionError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
clientTimezone, err := c.GetClientTimezone()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchRemoveTagsHandler] cannot get client timezone, because %s", err.Error())
|
||||||
|
return nil, errs.ErrClientTimezoneOffsetInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionIds, err := utils.StringArrayToInt64Array(transactionBatchUpdateReq.TransactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchRemoveTagsHandler] parse transaction ids failed, because %s", err.Error())
|
||||||
|
return nil, errs.ErrTransactionIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
tagIds, err := utils.StringArrayToInt64Array(transactionBatchUpdateReq.TagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchRemoveTagsHandler] parse tag ids failed, because %s", err.Error())
|
||||||
|
return nil, errs.ErrTransactionTagIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
tagIds = utils.ToUniqueInt64Slice(tagIds)
|
||||||
|
|
||||||
|
uid := c.GetCurrentUid()
|
||||||
|
user, err := a.users.GetUserById(c, uid)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if !errs.IsCustomError(err) {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchRemoveTagsHandler] failed to get user, because %s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, errs.ErrUserNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
tags, err := a.transactionTags.GetTagsByTagIds(c, uid, tagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchRemoveTagsHandler] failed to get tags for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(tags) != len(tagIds) {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchRemoveTagsHandler] some tags do not exist for user \"uid:%d\"", uid)
|
||||||
|
return nil, errs.ErrTransactionTagNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
transactions, err := a.transactions.GetTransactionsByTransactionIds(c, uid, transactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchRemoveTagsHandler] failed to get transactions for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
allTransactionIds := make([]int64, 0, len(transactions))
|
||||||
|
|
||||||
|
for i := 0; i < len(transactions); i++ {
|
||||||
|
transaction := transactions[i]
|
||||||
|
|
||||||
|
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchRemoveTagsHandler] cannot modify transaction \"id:%d\" for user \"uid:%d\", because transaction type is transfer in", transaction.TransactionId, uid)
|
||||||
|
return nil, errs.ErrTransactionTypeInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionEditable := user.CanEditTransactionByTransactionTime(transaction.TransactionTime, clientTimezone)
|
||||||
|
|
||||||
|
if !transactionEditable {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchRemoveTagsHandler] transaction \"id:%d\" is not editable for user \"uid:%d\"", transaction.TransactionId, uid)
|
||||||
|
return nil, errs.ErrCannotModifyTransactionWithThisTransactionTime
|
||||||
|
}
|
||||||
|
|
||||||
|
allTransactionIds = append(allTransactionIds, transaction.TransactionId)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = a.transactions.BatchRemoveTagsFromTransactions(c, uid, allTransactionIds, tagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchRemoveTagsHandler] failed to batch update transactions tags for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Infof(c, "[transactions.TransactionBatchRemoveTagsHandler] user \"uid:%d\" has batch updated tag of %d transactions successfully", uid, len(allTransactionIds))
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TransactionBatchClearTagsHandler batch clear all tags from transactions by request parameters for current user
|
||||||
|
func (a *TransactionsApi) TransactionBatchClearTagsHandler(c *core.WebContext) (any, *errs.Error) {
|
||||||
|
var transactionBatchUpdateReq models.TransactionBatchClearTagsRequest
|
||||||
|
err := c.ShouldBindJSON(&transactionBatchUpdateReq)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchClearTagsHandler] parse request failed, because %s", err.Error())
|
||||||
|
return nil, errs.NewIncompleteOrIncorrectSubmissionError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
clientTimezone, err := c.GetClientTimezone()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchClearTagsHandler] cannot get client timezone, because %s", err.Error())
|
||||||
|
return nil, errs.ErrClientTimezoneOffsetInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionIds, err := utils.StringArrayToInt64Array(transactionBatchUpdateReq.TransactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchClearTagsHandler] parse transaction ids failed, because %s", err.Error())
|
||||||
|
return nil, errs.ErrTransactionIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
uid := c.GetCurrentUid()
|
||||||
|
user, err := a.users.GetUserById(c, uid)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if !errs.IsCustomError(err) {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchClearTagsHandler] failed to get user, because %s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, errs.ErrUserNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
transactions, err := a.transactions.GetTransactionsByTransactionIds(c, uid, transactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchClearTagsHandler] failed to get transactions for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
allTransactionIds := make([]int64, 0, len(transactions))
|
||||||
|
|
||||||
|
for i := 0; i < len(transactions); i++ {
|
||||||
|
transaction := transactions[i]
|
||||||
|
|
||||||
|
if transaction.Type == models.TRANSACTION_DB_TYPE_TRANSFER_IN {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchClearTagsHandler] cannot modify transaction \"id:%d\" for user \"uid:%d\", because transaction type is transfer in", transaction.TransactionId, uid)
|
||||||
|
return nil, errs.ErrTransactionTypeInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionEditable := user.CanEditTransactionByTransactionTime(transaction.TransactionTime, clientTimezone)
|
||||||
|
|
||||||
|
if !transactionEditable {
|
||||||
|
log.Warnf(c, "[transactions.TransactionBatchClearTagsHandler] transaction \"id:%d\" is not editable for user \"uid:%d\"", transaction.TransactionId, uid)
|
||||||
|
return nil, errs.ErrCannotModifyTransactionWithThisTransactionTime
|
||||||
|
}
|
||||||
|
|
||||||
|
allTransactionIds = append(allTransactionIds, transaction.TransactionId)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = a.transactions.BatchClearAllTagsFromTransactions(c, uid, allTransactionIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf(c, "[transactions.TransactionBatchClearTagsHandler] failed to batch update transactions tags for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Infof(c, "[transactions.TransactionBatchClearTagsHandler] user \"uid:%d\" has batch updated tag of %d transactions successfully", uid, len(allTransactionIds))
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
// TransactionMoveAllBetweenAccountsHandler moves all transactions from one account to another account for current user
|
// TransactionMoveAllBetweenAccountsHandler moves all transactions from one account to another account for current user
|
||||||
func (a *TransactionsApi) TransactionMoveAllBetweenAccountsHandler(c *core.WebContext) (any, *errs.Error) {
|
func (a *TransactionsApi) TransactionMoveAllBetweenAccountsHandler(c *core.WebContext) (any, *errs.Error) {
|
||||||
var transactionMoveReq models.TransactionMoveBetweenAccountsRequest
|
var transactionMoveReq models.TransactionMoveBetweenAccountsRequest
|
||||||
|
|||||||
@@ -45,4 +45,5 @@ var (
|
|||||||
ErrCannotMoveTransactionFromOrToHiddenAccount = NewNormalError(NormalSubcategoryTransaction, 38, http.StatusBadRequest, "cannot move transaction from or to hidden account")
|
ErrCannotMoveTransactionFromOrToHiddenAccount = NewNormalError(NormalSubcategoryTransaction, 38, http.StatusBadRequest, "cannot move transaction from or to hidden account")
|
||||||
ErrCannotMoveTransactionFromOrToParentAccount = NewNormalError(NormalSubcategoryTransaction, 39, http.StatusBadRequest, "cannot move transaction from or to parent account")
|
ErrCannotMoveTransactionFromOrToParentAccount = NewNormalError(NormalSubcategoryTransaction, 39, http.StatusBadRequest, "cannot move transaction from or to parent account")
|
||||||
ErrCannotMoveTransactionBetweenAccountsWithDifferentCurrencies = NewNormalError(NormalSubcategoryTransaction, 40, http.StatusBadRequest, "cannot move transaction between accounts with different currencies")
|
ErrCannotMoveTransactionBetweenAccountsWithDifferentCurrencies = NewNormalError(NormalSubcategoryTransaction, 40, http.StatusBadRequest, "cannot move transaction between accounts with different currencies")
|
||||||
|
ErrCannotAddTagsToTooManyTransactionsOneTime = NewNormalError(NormalSubcategoryTransaction, 41, http.StatusBadRequest, "cannot add tags to too many transactions one time")
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -327,17 +327,34 @@ type TransactionGetRequest struct {
|
|||||||
|
|
||||||
// TransactionBatchUpdateCategoryRequest represents all parameters of transaction batch update category request
|
// TransactionBatchUpdateCategoryRequest represents all parameters of transaction batch update category request
|
||||||
type TransactionBatchUpdateCategoryRequest struct {
|
type TransactionBatchUpdateCategoryRequest struct {
|
||||||
TransactionIds []string `json:"transactionIds,string" binding:"required"`
|
TransactionIds []string `json:"transactionIds" binding:"required"`
|
||||||
CategoryId int64 `json:"categoryId,string" binding:"required"`
|
CategoryId int64 `json:"categoryId,string" binding:"required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TransactionBatchUpdateAccountRequest represents all parameters of transaction batch update account request
|
// TransactionBatchUpdateAccountRequest represents all parameters of transaction batch update account request
|
||||||
type TransactionBatchUpdateAccountRequest struct {
|
type TransactionBatchUpdateAccountRequest struct {
|
||||||
TransactionIds []string `json:"transactionIds,string" binding:"required"`
|
TransactionIds []string `json:"transactionIds" binding:"required"`
|
||||||
AccountId int64 `json:"accountId,string" binding:"required"`
|
AccountId int64 `json:"accountId,string" binding:"required"`
|
||||||
IsDestinationAccount bool `json:"isDestinationAccount"`
|
IsDestinationAccount bool `json:"isDestinationAccount"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TransactionBatchAddTagsRequest represents all parameters of transaction batch add tags request
|
||||||
|
type TransactionBatchAddTagsRequest struct {
|
||||||
|
TransactionIds []string `json:"transactionIds" binding:"required"`
|
||||||
|
TagIds []string `json:"tagIds" binding:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TransactionBatchRemoveTagsRequest represents all parameters of transaction batch remove tags request
|
||||||
|
type TransactionBatchRemoveTagsRequest struct {
|
||||||
|
TransactionIds []string `json:"transactionIds" binding:"required"`
|
||||||
|
TagIds []string `json:"tagIds" binding:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// TransactionBatchClearTagsRequest represents all parameters of transaction batch clear tags request
|
||||||
|
type TransactionBatchClearTagsRequest struct {
|
||||||
|
TransactionIds []string `json:"transactionIds" binding:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
// TransactionMoveBetweenAccountsRequest represents all parameters of moving all transactions between accounts request
|
// TransactionMoveBetweenAccountsRequest represents all parameters of moving all transactions between accounts request
|
||||||
type TransactionMoveBetweenAccountsRequest struct {
|
type TransactionMoveBetweenAccountsRequest struct {
|
||||||
FromAccountId int64 `json:"fromAccountId,string" binding:"required,min=1"`
|
FromAccountId int64 `json:"fromAccountId,string" binding:"required,min=1"`
|
||||||
|
|||||||
@@ -1033,7 +1033,7 @@ func (s *TransactionService) ModifyTransaction(c core.Context, transaction *mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get and verify tags
|
// Get and verify tags
|
||||||
err = s.isTagsValid(sess, transaction, transactionTagIndexes, addTagIds)
|
err = s.isTagsValid(sess, transaction.Uid, transactionTagIndexes, addTagIds)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -1373,6 +1373,160 @@ func (s *TransactionService) BatchUpdateTransactionsCategory(c core.Context, uid
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BatchAddTagsToTransactions batch adds tags to transactions
|
||||||
|
func (s *TransactionService) BatchAddTagsToTransactions(c core.Context, uid int64, transactions []*models.Transaction, addTransactionTagIds map[int64][]int64) error {
|
||||||
|
if uid <= 0 {
|
||||||
|
return errs.ErrUserIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(addTransactionTagIds) < 1 {
|
||||||
|
return errs.ErrTransactionIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
now := time.Now().Unix()
|
||||||
|
transactionTagIndexes := make([]*models.TransactionTagIndex, 0, len(addTransactionTagIds))
|
||||||
|
transactionsMap := make(map[int64]*models.Transaction, len(transactions))
|
||||||
|
transactionTagIdsMap := make(map[int64]bool, 0)
|
||||||
|
|
||||||
|
for i := 0; i < len(transactions); i++ {
|
||||||
|
transaction := transactions[i]
|
||||||
|
transactionsMap[transaction.TransactionId] = transaction
|
||||||
|
}
|
||||||
|
|
||||||
|
for transactionId, tagIds := range addTransactionTagIds {
|
||||||
|
if transactionId <= 0 {
|
||||||
|
return errs.ErrTransactionIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transaction, exists := transactionsMap[transactionId]
|
||||||
|
|
||||||
|
if !exists || transaction == nil {
|
||||||
|
return errs.ErrTransactionNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
tagIds = utils.ToUniqueInt64Slice(tagIds)
|
||||||
|
|
||||||
|
for i := 0; i < len(tagIds); i++ {
|
||||||
|
tagId := tagIds[i]
|
||||||
|
|
||||||
|
if tagId <= 0 {
|
||||||
|
return errs.ErrTransactionTagIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
transactionTagIndexes = append(transactionTagIndexes, &models.TransactionTagIndex{
|
||||||
|
Uid: uid,
|
||||||
|
Deleted: false,
|
||||||
|
TransactionTime: transaction.TransactionTime,
|
||||||
|
TagId: tagId,
|
||||||
|
TransactionId: transactionId,
|
||||||
|
CreatedUnixTime: now,
|
||||||
|
UpdatedUnixTime: now,
|
||||||
|
})
|
||||||
|
|
||||||
|
transactionTagIdsMap[tagId] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tagIndexUuids := s.GenerateUuids(uuid.UUID_TYPE_TAG_INDEX, uint16(len(transactionTagIndexes)))
|
||||||
|
|
||||||
|
if len(tagIndexUuids) < len(transactionTagIndexes) {
|
||||||
|
return errs.ErrCannotAddTagsToTooManyTransactionsOneTime
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < len(transactionTagIndexes); i++ {
|
||||||
|
transactionTagIndexes[i].TagIndexId = tagIndexUuids[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
tagIds := make([]int64, 0, len(transactionTagIdsMap))
|
||||||
|
|
||||||
|
for tagId := range transactionTagIdsMap {
|
||||||
|
tagIds = append(tagIds, tagId)
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.UserDataDB(uid).DoTransaction(c, func(sess *xorm.Session) error {
|
||||||
|
// Get and verify tags
|
||||||
|
err := s.isTagsValid(sess, uid, transactionTagIndexes, tagIds)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < len(transactionTagIndexes); i++ {
|
||||||
|
transactionTagIndex := transactionTagIndexes[i]
|
||||||
|
_, err := sess.Insert(transactionTagIndex)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// BatchRemoveTagsFromTransactions batch removes tags from transactions
|
||||||
|
func (s *TransactionService) BatchRemoveTagsFromTransactions(c core.Context, uid int64, transactionIds []int64, tagIds []int64) error {
|
||||||
|
if uid <= 0 {
|
||||||
|
return errs.ErrUserIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(transactionIds) < 1 {
|
||||||
|
return errs.ErrTransactionIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
uniqueTransactionIds := utils.ToUniqueInt64Slice(transactionIds)
|
||||||
|
uniqueTagIds := utils.ToUniqueInt64Slice(tagIds)
|
||||||
|
now := time.Now().Unix()
|
||||||
|
|
||||||
|
tagIndexUpdateModel := &models.TransactionTagIndex{
|
||||||
|
Deleted: true,
|
||||||
|
DeletedUnixTime: now,
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.UserDataDB(uid).DoTransaction(c, func(sess *xorm.Session) error {
|
||||||
|
deletedRows, err := sess.Cols("deleted", "deleted_unix_time").Where("uid=? AND deleted=?", uid, false).In("transaction_id", uniqueTransactionIds).In("tag_id", uniqueTagIds).Update(tagIndexUpdateModel)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if deletedRows < 1 {
|
||||||
|
return errs.ErrTransactionTagNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// BatchClearAllTagsFromTransactions batch clears all tags from transactions
|
||||||
|
func (s *TransactionService) BatchClearAllTagsFromTransactions(c core.Context, uid int64, transactionIds []int64) error {
|
||||||
|
if uid <= 0 {
|
||||||
|
return errs.ErrUserIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(transactionIds) < 1 {
|
||||||
|
return errs.ErrTransactionIdInvalid
|
||||||
|
}
|
||||||
|
|
||||||
|
uniqueTransactionIds := utils.ToUniqueInt64Slice(transactionIds)
|
||||||
|
now := time.Now().Unix()
|
||||||
|
|
||||||
|
tagIndexUpdateModel := &models.TransactionTagIndex{
|
||||||
|
Deleted: true,
|
||||||
|
DeletedUnixTime: now,
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.UserDataDB(uid).DoTransaction(c, func(sess *xorm.Session) error {
|
||||||
|
deletedRows, err := sess.Cols("deleted", "deleted_unix_time").Where("uid=? AND deleted=?", uid, false).In("transaction_id", uniqueTransactionIds).Update(tagIndexUpdateModel)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if deletedRows < 1 {
|
||||||
|
return errs.ErrTransactionTagNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// MoveAllTransactionsBetweenAccounts moves all transactions from one account to another account, and combine balance modification transactions if necessary
|
// MoveAllTransactionsBetweenAccounts moves all transactions from one account to another account, and combine balance modification transactions if necessary
|
||||||
func (s *TransactionService) MoveAllTransactionsBetweenAccounts(c core.Context, uid int64, fromAccountId int64, toAccountId int64) error {
|
func (s *TransactionService) MoveAllTransactionsBetweenAccounts(c core.Context, uid int64, fromAccountId int64, toAccountId int64) error {
|
||||||
if uid <= 0 {
|
if uid <= 0 {
|
||||||
@@ -2317,7 +2471,7 @@ func (s *TransactionService) doCreateTransaction(c core.Context, database *datas
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get and verify tags
|
// Get and verify tags
|
||||||
err = s.isTagsValid(sess, transaction, transactionTagIndexes, tagIds)
|
err = s.isTagsValid(sess, transaction.Uid, transactionTagIndexes, tagIds)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -2954,10 +3108,10 @@ func (s *TransactionService) isCategoryValid(sess *xorm.Session, transaction *mo
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TransactionService) isTagsValid(sess *xorm.Session, transaction *models.Transaction, transactionTagIndexes []*models.TransactionTagIndex, tagIds []int64) error {
|
func (s *TransactionService) isTagsValid(sess *xorm.Session, uid int64, transactionTagIndexes []*models.TransactionTagIndex, tagIds []int64) error {
|
||||||
if len(transactionTagIndexes) > 0 {
|
if len(transactionTagIndexes) > 0 {
|
||||||
var tags []*models.TransactionTag
|
var tags []*models.TransactionTag
|
||||||
err := sess.Where("uid=? AND deleted=?", transaction.Uid, false).In("tag_id", tagIds).Find(&tags)
|
err := sess.Where("uid=? AND deleted=?", uid, false).In("tag_id", tagIds).Find(&tags)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -67,6 +67,9 @@ import type {
|
|||||||
TransactionModifyRequest,
|
TransactionModifyRequest,
|
||||||
TransactionBatchUpdateCategoryRequest,
|
TransactionBatchUpdateCategoryRequest,
|
||||||
TransactionBatchUpdateAccountRequest,
|
TransactionBatchUpdateAccountRequest,
|
||||||
|
TransactionBatchAddTagsRequest,
|
||||||
|
TransactionBatchRemoveTagsRequest,
|
||||||
|
TransactionBatchClearTagsRequest,
|
||||||
TransactionMoveBetweenAccountsRequest,
|
TransactionMoveBetweenAccountsRequest,
|
||||||
TransactionDeleteRequest,
|
TransactionDeleteRequest,
|
||||||
TransactionBatchDeleteRequest,
|
TransactionBatchDeleteRequest,
|
||||||
@@ -625,6 +628,21 @@ export default {
|
|||||||
timeout: DEFAULT_BATCH_UPDATE_TRANSACTIONS_API_TIMEOUT
|
timeout: DEFAULT_BATCH_UPDATE_TRANSACTIONS_API_TIMEOUT
|
||||||
} as ApiRequestConfig);
|
} as ApiRequestConfig);
|
||||||
},
|
},
|
||||||
|
batchAddTagsToTransaction: (req: TransactionBatchAddTagsRequest): ApiResponsePromise<boolean> => {
|
||||||
|
return axios.post<ApiResponse<boolean>>('v1/transactions/batch_update/tag/add.json', req, {
|
||||||
|
timeout: DEFAULT_BATCH_UPDATE_TRANSACTIONS_API_TIMEOUT
|
||||||
|
} as ApiRequestConfig);
|
||||||
|
},
|
||||||
|
batchRemoveTagsFromTransaction: (req: TransactionBatchRemoveTagsRequest): ApiResponsePromise<boolean> => {
|
||||||
|
return axios.post<ApiResponse<boolean>>('v1/transactions/batch_update/tag/remove.json', req, {
|
||||||
|
timeout: DEFAULT_BATCH_UPDATE_TRANSACTIONS_API_TIMEOUT
|
||||||
|
} as ApiRequestConfig);
|
||||||
|
},
|
||||||
|
batchClearAllTagsFromTransaction: (req: TransactionBatchClearTagsRequest): ApiResponsePromise<boolean> => {
|
||||||
|
return axios.post<ApiResponse<boolean>>('v1/transactions/batch_update/tag/clear.json', req, {
|
||||||
|
timeout: DEFAULT_BATCH_UPDATE_TRANSACTIONS_API_TIMEOUT
|
||||||
|
} as ApiRequestConfig);
|
||||||
|
},
|
||||||
moveAllTransactionsBetweenAccounts: (req: TransactionMoveBetweenAccountsRequest): ApiResponsePromise<boolean> => {
|
moveAllTransactionsBetweenAccounts: (req: TransactionMoveBetweenAccountsRequest): ApiResponsePromise<boolean> => {
|
||||||
return axios.post<ApiResponse<boolean>>('v1/transactions/move/all.json', req);
|
return axios.post<ApiResponse<boolean>>('v1/transactions/move/all.json', req);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "Diese Aktion kann NICHT rückgängig gemacht werden. Alle Transaktionen werden von {fromAccount} nach {toAccount} verschoben.",
|
"moveTransactionsInAccountTip": "Diese Aktion kann NICHT rückgängig gemacht werden. Alle Transaktionen werden von {fromAccount} nach {toAccount} verschoben.",
|
||||||
"clearTransactionsInAccountTip": "Diese Aktion kann NICHT rückgängig gemacht werden. Ihre Transaktionsdaten in {account} werden gelöscht. Bitte geben Sie Ihr aktuelles Passwort zur Bestätigung ein.",
|
"clearTransactionsInAccountTip": "Diese Aktion kann NICHT rückgängig gemacht werden. Ihre Transaktionsdaten in {account} werden gelöscht. Bitte geben Sie Ihr aktuelles Passwort zur Bestätigung ein.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Ein Aktivierungslink wurde an Ihre E-Mail-Adresse gesendet: {email}. Wenn Sie die E-Mail nicht erhalten haben, geben Sie bitte das Passwort erneut ein und klicken Sie auf die Schaltfläche unten, um die Bestätigungs-E-Mail erneut zu senden.",
|
"accountActivationAndResendValidationEmailTip": "Ein Aktivierungslink wurde an Ihre E-Mail-Adresse gesendet: {email}. Wenn Sie die E-Mail nicht erhalten haben, geben Sie bitte das Passwort erneut ein und klicken Sie auf die Schaltfläche unten, um die Bestätigungs-E-Mail erneut zu senden.",
|
||||||
"resendValidationEmailTip": "Wenn Sie die E-Mail nicht erhalten haben, geben Sie bitte das Passwort erneut ein und klicken Sie auf die Schaltfläche unten, um die Bestätigungs-E-Mail an: {email} erneut zu senden.",
|
"resendValidationEmailTip": "Wenn Sie die E-Mail nicht erhalten haben, geben Sie bitte das Passwort erneut ein und klicken Sie auf die Schaltfläche unten, um die Bestätigungs-E-Mail an: {email} erneut zu senden.",
|
||||||
"oauth2bindTip": "Sie melden sich beim Benutzer {userName} mit {providerName} an. Bitte geben Sie Ihr ezBookkeeping-Passwort zur Bestätigung ein."
|
"oauth2bindTip": "Sie melden sich beim Benutzer {userName} mit {providerName} an. Bitte geben Sie Ihr ezBookkeeping-Passwort zur Bestätigung ein."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Transaktion kann nicht von oder zu einem versteckten Konto verschoben werden",
|
"cannot move transaction from or to hidden account": "Transaktion kann nicht von oder zu einem versteckten Konto verschoben werden",
|
||||||
"cannot move transaction from or to parent account": "Transaktion kann nicht von oder zu einem übergeordneten Konto verschoben werden",
|
"cannot move transaction from or to parent account": "Transaktion kann nicht von oder zu einem übergeordneten Konto verschoben werden",
|
||||||
"cannot move transaction between accounts with different currencies": "Transaktion kann nicht zwischen Konten mit unterschiedlichen Währungen verschoben werden",
|
"cannot move transaction between accounts with different currencies": "Transaktion kann nicht zwischen Konten mit unterschiedlichen Währungen verschoben werden",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "Transaktionskategorie-ID ist ungültig",
|
"transaction category id is invalid": "Transaktionskategorie-ID ist ungültig",
|
||||||
"transaction category not found": "Transaktionskategorie nicht gefunden",
|
"transaction category not found": "Transaktionskategorie nicht gefunden",
|
||||||
"transaction category type is invalid": "Transaktionskategorietyp ist ungültig",
|
"transaction category type is invalid": "Transaktionskategorietyp ist ungültig",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Kontoliste",
|
"Account List": "Kontoliste",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Account activation link has been sent to your email address: {email}, If you don't receive the mail, please fill password again and click the button below to resend the validation mail.",
|
"accountActivationAndResendValidationEmailTip": "Account activation link has been sent to your email address: {email}, If you don't receive the mail, please fill password again and click the button below to resend the validation mail.",
|
||||||
"resendValidationEmailTip": "If you don't receive the mail, please fill password again and click the button below to resend the validation mail to: {email}",
|
"resendValidationEmailTip": "If you don't receive the mail, please fill password again and click the button below to resend the validation mail to: {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "Transaction category ID is invalid",
|
"transaction category id is invalid": "Transaction category ID is invalid",
|
||||||
"transaction category not found": "Transaction category is not found",
|
"transaction category not found": "Transaction category is not found",
|
||||||
"transaction category type is invalid": "Transaction category type is invalid",
|
"transaction category type is invalid": "Transaction category type is invalid",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Account List",
|
"Account List": "Account List",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "NO PUEDES deshacer esta acción. Se moverán todas las transacciones de {fromAccount} a {toAccount}.",
|
"moveTransactionsInAccountTip": "NO PUEDES deshacer esta acción. Se moverán todas las transacciones de {fromAccount} a {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "NO PUEDES deshacer esta acción. Se eliminarán todas las transacciones de {account}. Por favor introduce tu contraseña para confirmar.",
|
"clearTransactionsInAccountTip": "NO PUEDES deshacer esta acción. Se eliminarán todas las transacciones de {account}. Por favor introduce tu contraseña para confirmar.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "El enlace de activación de la cuenta se envió a tu dirección de correo electrónico: {email}. Si no recibes el correo, introduce nuevamente la contraseña y haz clic en el botón de abajo para reenviar el correo de validación.",
|
"accountActivationAndResendValidationEmailTip": "El enlace de activación de la cuenta se envió a tu dirección de correo electrónico: {email}. Si no recibes el correo, introduce nuevamente la contraseña y haz clic en el botón de abajo para reenviar el correo de validación.",
|
||||||
"resendValidationEmailTip": "Si no recibes el correo, introduce nuevamente la contraseña y haz clic en el botón de abajo para reenviar el correo de validación a: {email}",
|
"resendValidationEmailTip": "Si no recibes el correo, introduce nuevamente la contraseña y haz clic en el botón de abajo para reenviar el correo de validación a: {email}",
|
||||||
"oauth2bindTip": "Estás iniciando sesión con el usuario {userName} usando {providerName}. Porfavor introduce tu contraseña de ezBookkeeping para verificar."
|
"oauth2bindTip": "Estás iniciando sesión con el usuario {userName} usando {providerName}. Porfavor introduce tu contraseña de ezBookkeeping para verificar."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "No se puede mover la transacción desde o hacia una cuenta oculta",
|
"cannot move transaction from or to hidden account": "No se puede mover la transacción desde o hacia una cuenta oculta",
|
||||||
"cannot move transaction from or to parent account": "No se puede mover la transacción desde o hacia la cuenta principal",
|
"cannot move transaction from or to parent account": "No se puede mover la transacción desde o hacia la cuenta principal",
|
||||||
"cannot move transaction between accounts with different currencies": "No se pueden mover transacciones entre cuentas con diferentes monedas",
|
"cannot move transaction between accounts with different currencies": "No se pueden mover transacciones entre cuentas con diferentes monedas",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "El ID de categoría de transacción no es válido",
|
"transaction category id is invalid": "El ID de categoría de transacción no es válido",
|
||||||
"transaction category not found": "No se encuentra la categoría de transacción",
|
"transaction category not found": "No se encuentra la categoría de transacción",
|
||||||
"transaction category type is invalid": "El tipo de categoría de transacción no es válido",
|
"transaction category type is invalid": "El tipo de categoría de transacción no es válido",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Lista de Cuentas",
|
"Account List": "Lista de Cuentas",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Le lien d'activation du compte a été envoyé à votre adresse e-mail : {email}, Si vous ne recevez pas le mail, veuillez remplir à nouveau le mot de passe et cliquer sur le bouton ci-dessous pour renvoyer l'e-mail de validation.",
|
"accountActivationAndResendValidationEmailTip": "Le lien d'activation du compte a été envoyé à votre adresse e-mail : {email}, Si vous ne recevez pas le mail, veuillez remplir à nouveau le mot de passe et cliquer sur le bouton ci-dessous pour renvoyer l'e-mail de validation.",
|
||||||
"resendValidationEmailTip": "Si vous ne recevez pas le mail, veuillez remplir à nouveau le mot de passe et cliquer sur le bouton ci-dessous pour renvoyer l'e-mail de validation à : {email}",
|
"resendValidationEmailTip": "Si vous ne recevez pas le mail, veuillez remplir à nouveau le mot de passe et cliquer sur le bouton ci-dessous pour renvoyer l'e-mail de validation à : {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "L'ID de catégorie de transaction est invalide",
|
"transaction category id is invalid": "L'ID de catégorie de transaction est invalide",
|
||||||
"transaction category not found": "Catégorie de transaction non trouvée",
|
"transaction category not found": "Catégorie de transaction non trouvée",
|
||||||
"transaction category type is invalid": "Le type de catégorie de transaction est invalide",
|
"transaction category type is invalid": "Le type de catégorie de transaction est invalide",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Liste des comptes",
|
"Account List": "Liste des comptes",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Abbiamo inviato un link per l'attivazione del tuo account all'indirizzo {email}. Se non hai ricevuto la mail, inserisci nuovamente la password e premi il bottone per ritentare l'invio.",
|
"accountActivationAndResendValidationEmailTip": "Abbiamo inviato un link per l'attivazione del tuo account all'indirizzo {email}. Se non hai ricevuto la mail, inserisci nuovamente la password e premi il bottone per ritentare l'invio.",
|
||||||
"resendValidationEmailTip": "Se non hai ricevuto la mail, inserisci nuovamente la password e premi il bottone per ritentare l'invio all'indirizzo: {email}",
|
"resendValidationEmailTip": "Se non hai ricevuto la mail, inserisci nuovamente la password e premi il bottone per ritentare l'invio all'indirizzo: {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "ID categoria transazione non valido",
|
"transaction category id is invalid": "ID categoria transazione non valido",
|
||||||
"transaction category not found": "Categoria transazione non trovata",
|
"transaction category not found": "Categoria transazione non trovata",
|
||||||
"transaction category type is invalid": "Tipo di categoria transazione non valido",
|
"transaction category type is invalid": "Tipo di categoria transazione non valido",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Elenco account",
|
"Account List": "Elenco account",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "アカウントの有効化リンクがメールアドレスに送信されました:{email}、メールが届かない場合はパスワードをもう一度入力して下のボタンをクリックして認証メールを再送信してください。",
|
"accountActivationAndResendValidationEmailTip": "アカウントの有効化リンクがメールアドレスに送信されました:{email}、メールが届かない場合はパスワードをもう一度入力して下のボタンをクリックして認証メールを再送信してください。",
|
||||||
"resendValidationEmailTip": "メールが届かない場合は、パスワードをもう一度入力の上、以下のボタンをクリックして検証メールを再送信してください: {email}",
|
"resendValidationEmailTip": "メールが届かない場合は、パスワードをもう一度入力の上、以下のボタンをクリックして検証メールを再送信してください: {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "取引カテゴリIDは無効です",
|
"transaction category id is invalid": "取引カテゴリIDは無効です",
|
||||||
"transaction category not found": "取引カテゴリは見つかりません",
|
"transaction category not found": "取引カテゴリは見つかりません",
|
||||||
"transaction category type is invalid": "取引カテゴリタイプは無効です",
|
"transaction category type is invalid": "取引カテゴリタイプは無効です",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "口座リスト",
|
"Account List": "口座リスト",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂದಕ್ಕೆ ತರಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇದು {fromAccount} ನ ಎಲ್ಲಾ ವಹಿವಾಟುಗಳನ್ನು {toAccount} ಗೆ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ.",
|
"moveTransactionsInAccountTip": "ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂದಕ್ಕೆ ತರಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇದು {fromAccount} ನ ಎಲ್ಲಾ ವಹಿವಾಟುಗಳನ್ನು {toAccount} ಗೆ ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ.",
|
||||||
"clearTransactionsInAccountTip": "ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂದಕ್ಕೆ ತರಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇದು {account} ನಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ವಹಿವಾಟುಗಳನ್ನು ಅಳಿಸುತ್ತದೆ. ದೃಢೀಕರಿಸಲು ದಯವಿಟ್ಟು ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ.",
|
"clearTransactionsInAccountTip": "ಈ ಕ್ರಿಯೆಯನ್ನು ಹಿಂದಕ್ಕೆ ತರಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇದು {account} ನಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ವಹಿವಾಟುಗಳನ್ನು ಅಳಿಸುತ್ತದೆ. ದೃಢೀಕರಿಸಲು ದಯವಿಟ್ಟು ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "ಖಾತೆ ಸಕ್ರಿಯಗೊಳಿಸುವ ಲಿಂಕ್ ಅನ್ನು ನಿಮ್ಮ ಈಮೇಲ್ಗೆ ಕಳುಹಿಸಲಾಗಿದೆ: {email}. ನೀವು ಇಮೇಲ್ ಪಡೆಯದಿದ್ದರೆ, ದಯವಿಟ್ಟು ಪಾಸ್ವರ್ಡ್ ಮರು ನಮೂದಿಸಿ ಮತ್ತು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿ ಸರೀಕರಿಸುವ ಇಮೇಲ್ ಮರು ಕಳುಹಿಸಿ.",
|
"accountActivationAndResendValidationEmailTip": "ಖಾತೆ ಸಕ್ರಿಯಗೊಳಿಸುವ ಲಿಂಕ್ ಅನ್ನು ನಿಮ್ಮ ಈಮೇಲ್ಗೆ ಕಳುಹಿಸಲಾಗಿದೆ: {email}. ನೀವು ಇಮೇಲ್ ಪಡೆಯದಿದ್ದರೆ, ದಯವಿಟ್ಟು ಪಾಸ್ವರ್ಡ್ ಮರು ನಮೂದಿಸಿ ಮತ್ತು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿ ಸರೀಕರಿಸುವ ಇಮೇಲ್ ಮರು ಕಳುಹಿಸಿ.",
|
||||||
"resendValidationEmailTip": "ನೀವು ಇಮೇಲ್ ಪಡೆಯದಿದ್ದರೆ, ದಯವಿಟ್ಟು ಪಾಸ್ವರ್ಡ್ ಮರು ನಮೂದಿಸಿ ಮತ್ತು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿ ಮರು ಸರೀಕರಿಸುವ ಇಮೇಲ್ ಕಳುಹಿಸಲಾಗುವುದು: {email}",
|
"resendValidationEmailTip": "ನೀವು ಇಮೇಲ್ ಪಡೆಯದಿದ್ದರೆ, ದಯವಿಟ್ಟು ಪಾಸ್ವರ್ಡ್ ಮರು ನಮೂದಿಸಿ ಮತ್ತು ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿ ಮರು ಸರೀಕರಿಸುವ ಇಮೇಲ್ ಕಳುಹಿಸಲಾಗುವುದು: {email}",
|
||||||
"oauth2bindTip": "ನೀವು {providerName} ಬಳಸಿ {userName} ಬಳಕೆದಾರರಾಗಿ ಲಾಗಿನ್ ಆಗುತ್ತಿದ್ದೀರಿ. ದೃಢೀಕರಿಸಲು ದಯವಿಟ್ಟು ನಿಮ್ಮ ezBookkeeping ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ."
|
"oauth2bindTip": "ನೀವು {providerName} ಬಳಸಿ {userName} ಬಳಕೆದಾರರಾಗಿ ಲಾಗಿನ್ ಆಗುತ್ತಿದ್ದೀರಿ. ದೃಢೀಕರಿಸಲು ದಯವಿಟ್ಟು ನಿಮ್ಮ ezBookkeeping ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "ಗೋಚರಿಸದ ಖಾತೆಯಿಂದ/ಖಾತೆಗೆ ವಹಿವಾಟು ಸ್ಥಳಾಂತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ",
|
"cannot move transaction from or to hidden account": "ಗೋಚರಿಸದ ಖಾತೆಯಿಂದ/ಖಾತೆಗೆ ವಹಿವಾಟು ಸ್ಥಳಾಂತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ",
|
||||||
"cannot move transaction from or to parent account": "ಪೋಷಕ ಖಾತೆಯಿಂದ ಅಥವಾ ಖಾತೆಗೆ ವಹಿವಾಟು ಸ್ಥಳಾಂತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ",
|
"cannot move transaction from or to parent account": "ಪೋಷಕ ಖಾತೆಯಿಂದ ಅಥವಾ ಖಾತೆಗೆ ವಹಿವಾಟು ಸ್ಥಳಾಂತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ",
|
||||||
"cannot move transaction between accounts with different currencies": "ವಿವಿಧ ಕರೆನ್ಸಿಗಳ ಖಾತೆಗಳ ನಡುವೆ ವಹಿವಾಟು ಸ್ಥಳಾಂತರ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ",
|
"cannot move transaction between accounts with different currencies": "ವಿವಿಧ ಕರೆನ್ಸಿಗಳ ಖಾತೆಗಳ ನಡುವೆ ವಹಿವಾಟು ಸ್ಥಳಾಂತರ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "ವಹಿವಾಟು ವರ್ಗ ID ಅಮಾನ್ಯವಾಗಿದೆ",
|
"transaction category id is invalid": "ವಹಿವಾಟು ವರ್ಗ ID ಅಮಾನ್ಯವಾಗಿದೆ",
|
||||||
"transaction category not found": "ವಹಿವಾಟು ವರ್ಗ ಸಿಕ್ಕಿಲ್ಲ",
|
"transaction category not found": "ವಹಿವಾಟು ವರ್ಗ ಸಿಕ್ಕಿಲ್ಲ",
|
||||||
"transaction category type is invalid": "ವಹಿವಾಟು ವರ್ಗದ ಪ್ರಕಾರ ಅಮಾನ್ಯವಾಗಿದೆ",
|
"transaction category type is invalid": "ವಹಿವಾಟು ವರ್ಗದ ಪ್ರಕಾರ ಅಮಾನ್ಯವಾಗಿದೆ",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "ಖಾತೆಗಳ ಪಟ್ಟಿ",
|
"Account List": "ಖಾತೆಗಳ ಪಟ್ಟಿ",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "이 작업은 되돌릴 수 없습니다. {fromAccount}에서 {toAccount}로 모든 거래를 이동합니다.",
|
"moveTransactionsInAccountTip": "이 작업은 되돌릴 수 없습니다. {fromAccount}에서 {toAccount}로 모든 거래를 이동합니다.",
|
||||||
"clearTransactionsInAccountTip": "이 작업은 되돌릴 수 없습니다. {account}의 거래 데이터를 지웁니다. 계속하시려면 현재 비밀번호를 입력하세요.",
|
"clearTransactionsInAccountTip": "이 작업은 되돌릴 수 없습니다. {account}의 거래 데이터를 지웁니다. 계속하시려면 현재 비밀번호를 입력하세요.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "계정 활성화 링크가 귀하의 이메일 주소({email})로 전송되었습니다. 메일을 받지 못하신 경우, 비밀번호를 다시 입력하고 아래 버튼을 클릭하여 확인 메일을 재전송하십시오.",
|
"accountActivationAndResendValidationEmailTip": "계정 활성화 링크가 귀하의 이메일 주소({email})로 전송되었습니다. 메일을 받지 못하신 경우, 비밀번호를 다시 입력하고 아래 버튼을 클릭하여 확인 메일을 재전송하십시오.",
|
||||||
"resendValidationEmailTip": "메일을 받지 못하신 경우, 비밀번호를 다시 입력하고 아래 버튼을 클릭하여 확인 메일을 {email}로 재전송하십시오.",
|
"resendValidationEmailTip": "메일을 받지 못하신 경우, 비밀번호를 다시 입력하고 아래 버튼을 클릭하여 확인 메일을 {email}로 재전송하십시오.",
|
||||||
"oauth2bindTip": "{providerName}를 사용하여 {userName} 사용자로 로그인하고 있습니다. 확인을 위해 ezBookkeeping 비밀번호를 입력하세요."
|
"oauth2bindTip": "{providerName}를 사용하여 {userName} 사용자로 로그인하고 있습니다. 확인을 위해 ezBookkeeping 비밀번호를 입력하세요."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "숨겨진 계좌에서 또는 숨겨진 계좌로 거래를 이동할 수 없습니다.",
|
"cannot move transaction from or to hidden account": "숨겨진 계좌에서 또는 숨겨진 계좌로 거래를 이동할 수 없습니다.",
|
||||||
"cannot move transaction from or to parent account": "상위 계좌에서 또는 상위 계좌로 거래를 이동할 수 없습니다.",
|
"cannot move transaction from or to parent account": "상위 계좌에서 또는 상위 계좌로 거래를 이동할 수 없습니다.",
|
||||||
"cannot move transaction between accounts with different currencies": "다른 통화를 사용하는 계좌 간에 거래를 이동할 수 없습니다.",
|
"cannot move transaction between accounts with different currencies": "다른 통화를 사용하는 계좌 간에 거래를 이동할 수 없습니다.",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "거래 카테고리 ID가 유효하지 않습니다.",
|
"transaction category id is invalid": "거래 카테고리 ID가 유효하지 않습니다.",
|
||||||
"transaction category not found": "거래 카테고리를 찾을 수 없습니다.",
|
"transaction category not found": "거래 카테고리를 찾을 수 없습니다.",
|
||||||
"transaction category type is invalid": "거래 카테고리 유형이 유효하지 않습니다.",
|
"transaction category type is invalid": "거래 카테고리 유형이 유효하지 않습니다.",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "계좌 목록",
|
"Account List": "계좌 목록",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Een activatielink is verzonden naar je e-mailadres: {email}. Als je de e-mail niet ontvangt, vul dan je wachtwoord opnieuw in en klik op de knop hieronder om de validatiemail opnieuw te verzenden.",
|
"accountActivationAndResendValidationEmailTip": "Een activatielink is verzonden naar je e-mailadres: {email}. Als je de e-mail niet ontvangt, vul dan je wachtwoord opnieuw in en klik op de knop hieronder om de validatiemail opnieuw te verzenden.",
|
||||||
"resendValidationEmailTip": "Als je de e-mail niet ontvangt, vul dan je wachtwoord opnieuw in en klik op de knop hieronder om de validatiemail opnieuw te verzenden naar: {email}",
|
"resendValidationEmailTip": "Als je de e-mail niet ontvangt, vul dan je wachtwoord opnieuw in en klik op de knop hieronder om de validatiemail opnieuw te verzenden naar: {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "Transactiecategorie-ID is ongeldig",
|
"transaction category id is invalid": "Transactiecategorie-ID is ongeldig",
|
||||||
"transaction category not found": "Transactiecategorie niet gevonden",
|
"transaction category not found": "Transactiecategorie niet gevonden",
|
||||||
"transaction category type is invalid": "Type transactiecategorie is ongeldig",
|
"transaction category type is invalid": "Type transactiecategorie is ongeldig",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Rekeningenlijst",
|
"Account List": "Rekeningenlijst",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "Você NÃO PODE desfazer esta ação. Isso moverá todas as transações de {fromAccount} para {toAccount}.",
|
"moveTransactionsInAccountTip": "Você NÃO PODE desfazer esta ação. Isso moverá todas as transações de {fromAccount} para {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "Você NÃO PODE desfazer esta ação. Isso apagará todas as transações em {account}. Por favor, insira sua senha atual para confirmar.",
|
"clearTransactionsInAccountTip": "Você NÃO PODE desfazer esta ação. Isso apagará todas as transações em {account}. Por favor, insira sua senha atual para confirmar.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "O link de ativação da conta foi enviado para seu endereço de e-mail: {email}. Se você não receber o e-mail, por favor, insira a senha novamente e clique no botão abaixo para reenviar o e-mail de validação.",
|
"accountActivationAndResendValidationEmailTip": "O link de ativação da conta foi enviado para seu endereço de e-mail: {email}. Se você não receber o e-mail, por favor, insira a senha novamente e clique no botão abaixo para reenviar o e-mail de validação.",
|
||||||
"resendValidationEmailTip": "Se você não receber o e-mail, por favor, insira a senha novamente e clique no botão abaixo para reenviar o e-mail de validação para: {email}",
|
"resendValidationEmailTip": "Se você não receber o e-mail, por favor, insira a senha novamente e clique no botão abaixo para reenviar o e-mail de validação para: {email}",
|
||||||
"oauth2bindTip": "Você está fazendo login como {userName} usando {providerName}. Por favor, insira sua senha do ezBookkeeping para verificar."
|
"oauth2bindTip": "Você está fazendo login como {userName} usando {providerName}. Por favor, insira sua senha do ezBookkeeping para verificar."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Não é possível mover transação de ou para conta oculta",
|
"cannot move transaction from or to hidden account": "Não é possível mover transação de ou para conta oculta",
|
||||||
"cannot move transaction from or to parent account": "Não é possível mover transação de ou para conta principal",
|
"cannot move transaction from or to parent account": "Não é possível mover transação de ou para conta principal",
|
||||||
"cannot move transaction between accounts with different currencies": "Não é possível mover transação entre contas com moedas diferentes",
|
"cannot move transaction between accounts with different currencies": "Não é possível mover transação entre contas com moedas diferentes",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "ID de categoria de transação é inválido",
|
"transaction category id is invalid": "ID de categoria de transação é inválido",
|
||||||
"transaction category not found": "Categoria de transação não encontrada",
|
"transaction category not found": "Categoria de transação não encontrada",
|
||||||
"transaction category type is invalid": "Tipo de categoria de transação é inválido",
|
"transaction category type is invalid": "Tipo de categoria de transação é inválido",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Lista de Contas",
|
"Account List": "Lista de Contas",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "Вы НЕ сможете отменить это действие. Все транзакции будут перемещены с {fromAccount} на {toAccount}.",
|
"moveTransactionsInAccountTip": "Вы НЕ сможете отменить это действие. Все транзакции будут перемещены с {fromAccount} на {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "Вы НЕ сможете отменить это действие. Все транзакции будут отчищеы с {account}. Пожалуйста введите пароль.",
|
"clearTransactionsInAccountTip": "Вы НЕ сможете отменить это действие. Все транзакции будут отчищеы с {account}. Пожалуйста введите пароль.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Ссылка для активации учетной записи была отправлена на ваш электронный адрес: {email}. Если вы не получили письмо, заполните пароль снова и нажмите кнопку ниже, чтобы отправить письмо повторно.",
|
"accountActivationAndResendValidationEmailTip": "Ссылка для активации учетной записи была отправлена на ваш электронный адрес: {email}. Если вы не получили письмо, заполните пароль снова и нажмите кнопку ниже, чтобы отправить письмо повторно.",
|
||||||
"resendValidationEmailTip": "Если вы не получили письмо, заполните пароль снова и нажмите кнопку ниже, чтобы отправить письмо повторно на: {email}",
|
"resendValidationEmailTip": "Если вы не получили письмо, заполните пароль снова и нажмите кнопку ниже, чтобы отправить письмо повторно на: {email}",
|
||||||
"oauth2bindTip": "Вы входите как пользователь {userName} используя {providerName}. Пожалуйста введите ваш ezBookkeeping пароль для подтверждения."
|
"oauth2bindTip": "Вы входите как пользователь {userName} используя {providerName}. Пожалуйста введите ваш ezBookkeeping пароль для подтверждения."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Нельзя переместить транзакцию из/в скрытый счёт",
|
"cannot move transaction from or to hidden account": "Нельзя переместить транзакцию из/в скрытый счёт",
|
||||||
"cannot move transaction from or to parent account": "Нельзя переместить транзакцию из/в родительский счёт",
|
"cannot move transaction from or to parent account": "Нельзя переместить транзакцию из/в родительский счёт",
|
||||||
"cannot move transaction between accounts with different currencies": "Нельзя переместить транзакцию между счетами с разными валютами",
|
"cannot move transaction between accounts with different currencies": "Нельзя переместить транзакцию между счетами с разными валютами",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "ID категории транзакции недействителен",
|
"transaction category id is invalid": "ID категории транзакции недействителен",
|
||||||
"transaction category not found": "Категория транзакции не найдена",
|
"transaction category not found": "Категория транзакции не найдена",
|
||||||
"transaction category type is invalid": "Тип категории транзакции недействителен",
|
"transaction category type is invalid": "Тип категории транзакции недействителен",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Список счетов",
|
"Account List": "Список счетов",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "Tega dejanja NE MORETE razveljaviti. S tem boste vse transakcije premaknili iz računa {fromAccount} v račun {toAccount}.",
|
"moveTransactionsInAccountTip": "Tega dejanja NE MORETE razveljaviti. S tem boste vse transakcije premaknili iz računa {fromAccount} v račun {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "Tega dejanja NE MORETE razveljaviti. S tem boste izbrisali podatke o transakcijah v računu {account}. Za potrditev vnesite trenutno geslo.",
|
"clearTransactionsInAccountTip": "Tega dejanja NE MORETE razveljaviti. S tem boste izbrisali podatke o transakcijah v računu {account}. Za potrditev vnesite trenutno geslo.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Povezava za aktivacijo računa je bila poslana na vaš e-poštni naslov: {email}. Če e-pošte ne prejmete, ponovno vnesite geslo in kliknite spodnji gumb, da ponovno pošljete potrditveno e-pošto.",
|
"accountActivationAndResendValidationEmailTip": "Povezava za aktivacijo računa je bila poslana na vaš e-poštni naslov: {email}. Če e-pošte ne prejmete, ponovno vnesite geslo in kliknite spodnji gumb, da ponovno pošljete potrditveno e-pošto.",
|
||||||
"resendValidationEmailTip": "Če ne prejmete e-pošte, ponovno vnesite geslo in kliknite spodnji gumb, da ponovno pošljete potrditveno e-pošto na: {email}",
|
"resendValidationEmailTip": "Če ne prejmete e-pošte, ponovno vnesite geslo in kliknite spodnji gumb, da ponovno pošljete potrditveno e-pošto na: {email}",
|
||||||
"oauth2bindTip": "Prijavljate se v uporabniški račun {userName} z uporabo računa {providerName}. Za potrditev vnesite svoje geslo za ezBookkeeping."
|
"oauth2bindTip": "Prijavljate se v uporabniški račun {userName} z uporabo računa {providerName}. Za potrditev vnesite svoje geslo za ezBookkeeping."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Transakcije ni mogoče premakniti iz ali v skrit račun",
|
"cannot move transaction from or to hidden account": "Transakcije ni mogoče premakniti iz ali v skrit račun",
|
||||||
"cannot move transaction from or to parent account": "Transakcije ni mogoče premakniti iz ali v nadrejeni račun",
|
"cannot move transaction from or to parent account": "Transakcije ni mogoče premakniti iz ali v nadrejeni račun",
|
||||||
"cannot move transaction between accounts with different currencies": "Transakcij ni mogoče premikati med računi z različnimi valutami",
|
"cannot move transaction between accounts with different currencies": "Transakcij ni mogoče premikati med računi z različnimi valutami",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "ID kategorije transakcije ni veljaven",
|
"transaction category id is invalid": "ID kategorije transakcije ni veljaven",
|
||||||
"transaction category not found": "Kategorije transakcije ni mogoče najti",
|
"transaction category not found": "Kategorije transakcije ni mogoče najti",
|
||||||
"transaction category type is invalid": "Vrsta kategorije transakcije ni veljavna",
|
"transaction category type is invalid": "Vrsta kategorije transakcije ni veljavna",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Seznam računov",
|
"Account List": "Seznam računov",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "இந்த செயலை மீட்டெடுக்க முடியாது. இது {fromAccount} இலிருந்து அனைத்து பரிவர்த்தனைகளையும் {toAccount} க்கு மாற்றும்.",
|
"moveTransactionsInAccountTip": "இந்த செயலை மீட்டெடுக்க முடியாது. இது {fromAccount} இலிருந்து அனைத்து பரிவர்த்தனைகளையும் {toAccount} க்கு மாற்றும்.",
|
||||||
"clearTransactionsInAccountTip": "இந்த செயலை மீட்டெடுக்க முடியாது. இது {account} இல் உள்ள உங்கள் அனைத்து பரிவர்த்தனைகளையும் நீக்கும். உறுதிப்படுத்த உங்கள் தற்போதைய கடவுச்சொல்லை உள்ளிடவும்.",
|
"clearTransactionsInAccountTip": "இந்த செயலை மீட்டெடுக்க முடியாது. இது {account} இல் உள்ள உங்கள் அனைத்து பரிவர்த்தனைகளையும் நீக்கும். உறுதிப்படுத்த உங்கள் தற்போதைய கடவுச்சொல்லை உள்ளிடவும்.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "கணக்கு செயல்படுத்தும் இணைப்பு உங்கள் மின்னஞ்சலுக்கு அனுப்பப்பட்டது: {email}. நீங்கள் மின்னஞ்சலைப் பெறவில்லை என்றால், கடவுச்சொல்லை மீண்டும் உள்ளிட்டு கீழே உள்ள பொத்தானை அழுத்தி சரிபார்ப்பு மின்னஞ்சலை மீண்டும் அனுப்பவும்.",
|
"accountActivationAndResendValidationEmailTip": "கணக்கு செயல்படுத்தும் இணைப்பு உங்கள் மின்னஞ்சலுக்கு அனுப்பப்பட்டது: {email}. நீங்கள் மின்னஞ்சலைப் பெறவில்லை என்றால், கடவுச்சொல்லை மீண்டும் உள்ளிட்டு கீழே உள்ள பொத்தானை அழுத்தி சரிபார்ப்பு மின்னஞ்சலை மீண்டும் அனுப்பவும்.",
|
||||||
"resendValidationEmailTip": "நீங்கள் மின்னஞ்சலைப் பெறவில்லை என்றால், கடவுச்சொல்லை மீண்டும் உள்ளிட்டு கீழே உள்ள பொத்தானை அழுத்தவும், சரிபார்ப்பு மின்னஞ்சல் அனுப்பப்படும்: {email}",
|
"resendValidationEmailTip": "நீங்கள் மின்னஞ்சலைப் பெறவில்லை என்றால், கடவுச்சொல்லை மீண்டும் உள்ளிட்டு கீழே உள்ள பொத்தானை அழுத்தவும், சரிபார்ப்பு மின்னஞ்சல் அனுப்பப்படும்: {email}",
|
||||||
"oauth2bindTip": "நீங்கள் {providerName} பயன்படுத்தி {userName} பயனராக உள்நுழைகிறீர்கள். உறுதிப்படுத்த உங்கள் ezBookkeeping கடவுச்சொல்லை உள்ளிடவும்."
|
"oauth2bindTip": "நீங்கள் {providerName} பயன்படுத்தி {userName} பயனராக உள்நுழைகிறீர்கள். உறுதிப்படுத்த உங்கள் ezBookkeeping கடவுச்சொல்லை உள்ளிடவும்."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "மறைந்த கணக்கிலிருந்து/கணக்கிற்கு பரிவர்த்தனை நகர்த்த முடியாது",
|
"cannot move transaction from or to hidden account": "மறைந்த கணக்கிலிருந்து/கணக்கிற்கு பரிவர்த்தனை நகர்த்த முடியாது",
|
||||||
"cannot move transaction from or to parent account": "பெற்றோர் கணக்கிலிருந்து அல்லது கணக்கிற்கு பரிவர்த்தனை நகர்த்த முடியாது",
|
"cannot move transaction from or to parent account": "பெற்றோர் கணக்கிலிருந்து அல்லது கணக்கிற்கு பரிவர்த்தனை நகர்த்த முடியாது",
|
||||||
"cannot move transaction between accounts with different currencies": "பல்வேறு நாணயம்களின் கணக்குகளின் இடையே பரிவர்த்தனை இடம்மாற்றம் செய்ய முடியாது",
|
"cannot move transaction between accounts with different currencies": "பல்வேறு நாணயம்களின் கணக்குகளின் இடையே பரிவர்த்தனை இடம்மாற்றம் செய்ய முடியாது",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "பரிவர்த்தனை வகை ID தவறானது உள்ளது",
|
"transaction category id is invalid": "பரிவர்த்தனை வகை ID தவறானது உள்ளது",
|
||||||
"transaction category not found": "பரிவர்த்தனை வகை கிடைக்கவில்லை",
|
"transaction category not found": "பரிவர்த்தனை வகை கிடைக்கவில்லை",
|
||||||
"transaction category type is invalid": "பரிவர்த்தனை வகையின் வகை தவறானது உள்ளது",
|
"transaction category type is invalid": "பரிவர்த்தனை வகையின் வகை தவறானது உள்ளது",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "கணக்குகளின் பட்டியல்",
|
"Account List": "கணக்குகளின் பட்டியல்",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "คุณไม่สามารถยกเลิกการกระทำนี้ได้ การกระทำนี้จะลบข้อมูลธุรกรรมทั้งหมดใน {account} โปรดป้อนรหัสผ่านปัจจุบันเพื่อยืนยัน",
|
"clearTransactionsInAccountTip": "คุณไม่สามารถยกเลิกการกระทำนี้ได้ การกระทำนี้จะลบข้อมูลธุรกรรมทั้งหมดใน {account} โปรดป้อนรหัสผ่านปัจจุบันเพื่อยืนยัน",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "ลิงก์สำหรับเปิดใช้งานบัญชีได้ถูกส่งไปยังอีเมลของคุณแล้ว: {email} หากคุณไม่ได้รับอีเมล โปรดกรอกรหัสผ่านอีกครั้งแล้วกดปุ่มด้านล่างเพื่อส่งอีเมลยืนยันอีกครั้ง",
|
"accountActivationAndResendValidationEmailTip": "ลิงก์สำหรับเปิดใช้งานบัญชีได้ถูกส่งไปยังอีเมลของคุณแล้ว: {email} หากคุณไม่ได้รับอีเมล โปรดกรอกรหัสผ่านอีกครั้งแล้วกดปุ่มด้านล่างเพื่อส่งอีเมลยืนยันอีกครั้ง",
|
||||||
"resendValidationEmailTip": "หากคุณไม่ได้รับอีเมล โปรดกรอกรหัสผ่านอีกครั้งแล้วกดปุ่มด้านล่างเพื่อส่งอีเมลยืนยันไปยัง: {email}",
|
"resendValidationEmailTip": "หากคุณไม่ได้รับอีเมล โปรดกรอกรหัสผ่านอีกครั้งแล้วกดปุ่มด้านล่างเพื่อส่งอีเมลยืนยันไปยัง: {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "รหัสหมวดหมู่ธุรกรรมไม่ถูกต้อง",
|
"transaction category id is invalid": "รหัสหมวดหมู่ธุรกรรมไม่ถูกต้อง",
|
||||||
"transaction category not found": "ไม่พบหมวดหมู่ธุรกรรม",
|
"transaction category not found": "ไม่พบหมวดหมู่ธุรกรรม",
|
||||||
"transaction category type is invalid": "ประเภทหมวดหมู่ธุรกรรมไม่ถูกต้อง",
|
"transaction category type is invalid": "ประเภทหมวดหมู่ธุรกรรมไม่ถูกต้อง",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "รายการบัญชี",
|
"Account List": "รายการบัญชี",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "Bu işlem GERİ ALINAMAZ. Bu, {fromAccount} hesabındaki tüm işlemleri {toAccount} hesabına taşıyacaktır.",
|
"moveTransactionsInAccountTip": "Bu işlem GERİ ALINAMAZ. Bu, {fromAccount} hesabındaki tüm işlemleri {toAccount} hesabına taşıyacaktır.",
|
||||||
"clearTransactionsInAccountTip": "Bu işlem GERİ ALINAMAZ. Bu, {account} hesabındaki işlem verilerinizi silecektir. Onaylamak için lütfen mevcut şifrenizi girin.",
|
"clearTransactionsInAccountTip": "Bu işlem GERİ ALINAMAZ. Bu, {account} hesabındaki işlem verilerinizi silecektir. Onaylamak için lütfen mevcut şifrenizi girin.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Hesap aktivasyon bağlantısı e-posta adresinize ({email}) gönderildi. Eğer e-postayı almadıysanız, lütfen şifrenizi tekrar girin ve doğrulama postasını yeniden göndermek için aşağıdaki butona tıklayın.",
|
"accountActivationAndResendValidationEmailTip": "Hesap aktivasyon bağlantısı e-posta adresinize ({email}) gönderildi. Eğer e-postayı almadıysanız, lütfen şifrenizi tekrar girin ve doğrulama postasını yeniden göndermek için aşağıdaki butona tıklayın.",
|
||||||
"resendValidationEmailTip": "Eğer e-postayı almadıysanız, lütfen şifrenizi tekrar girin ve doğrulama postasını şu adrese yeniden göndermek için aşağıdaki butona tıklayın: {email}",
|
"resendValidationEmailTip": "Eğer e-postayı almadıysanız, lütfen şifrenizi tekrar girin ve doğrulama postasını şu adrese yeniden göndermek için aşağıdaki butona tıklayın: {email}",
|
||||||
"oauth2bindTip": "{providerName} kullanarak {userName} hesabına giriş yapıyorsunuz. Doğrulamak için lütfen ezBookkeeping şifrenizi girin."
|
"oauth2bindTip": "{providerName} kullanarak {userName} hesabına giriş yapıyorsunuz. Doğrulamak için lütfen ezBookkeeping şifrenizi girin."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Gizli hesaptan veya gizli hesaba işlem taşınamaz",
|
"cannot move transaction from or to hidden account": "Gizli hesaptan veya gizli hesaba işlem taşınamaz",
|
||||||
"cannot move transaction from or to parent account": "Ana hesaptan veya ana hesaba işlem taşınamaz",
|
"cannot move transaction from or to parent account": "Ana hesaptan veya ana hesaba işlem taşınamaz",
|
||||||
"cannot move transaction between accounts with different currencies": "Farklı para birimlerine sahip hesaplar arasında işlem taşınamaz",
|
"cannot move transaction between accounts with different currencies": "Farklı para birimlerine sahip hesaplar arasında işlem taşınamaz",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "İşlem kategori ID geçersiz",
|
"transaction category id is invalid": "İşlem kategori ID geçersiz",
|
||||||
"transaction category not found": "İşlem kategorisi bulunamadı",
|
"transaction category not found": "İşlem kategorisi bulunamadı",
|
||||||
"transaction category type is invalid": "İşlem kategori türü geçersiz",
|
"transaction category type is invalid": "İşlem kategori türü geçersiz",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Hesap Listesi",
|
"Account List": "Hesap Listesi",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Посилання для активації облікового запису було надіслано на вашу електронну адресу: {email}. Якщо ви не отримали лист, введіть пароль ще раз і натисніть кнопку нижче, щоб надіслати лист повторно.",
|
"accountActivationAndResendValidationEmailTip": "Посилання для активації облікового запису було надіслано на вашу електронну адресу: {email}. Якщо ви не отримали лист, введіть пароль ще раз і натисніть кнопку нижче, щоб надіслати лист повторно.",
|
||||||
"resendValidationEmailTip": "Якщо ви не отримали лист, введіть пароль ще раз і натисніть кнопку нижче, щоб надіслати лист повторно на адресу: {email}",
|
"resendValidationEmailTip": "Якщо ви не отримали лист, введіть пароль ще раз і натисніть кнопку нижче, щоб надіслати лист повторно на адресу: {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "ID категорії транзакції недійсний",
|
"transaction category id is invalid": "ID категорії транзакції недійсний",
|
||||||
"transaction category not found": "Категорію транзакції не знайдено",
|
"transaction category not found": "Категорію транзакції не знайдено",
|
||||||
"transaction category type is invalid": "Тип категорії транзакції недійсний",
|
"transaction category type is invalid": "Тип категорії транзакції недійсний",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Список рахунків",
|
"Account List": "Список рахунків",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
"moveTransactionsInAccountTip": "You CANNOT undo this action. This will move all transactions from {fromAccount} to {toAccount}.",
|
||||||
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
"clearTransactionsInAccountTip": "You CANNOT undo this action. This will clear your transactions data in {account}. Please enter your current password to confirm.",
|
||||||
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
"deleteTransactionsTip": "You CANNOT undo this action. This will delete {count} transactions. Please enter your current password to confirm.",
|
||||||
|
"clearTransactionsTagsTip": "You CANNOT undo this action. This will clear all tags from {count} transactions.",
|
||||||
"accountActivationAndResendValidationEmailTip": "Liên kết kích hoạt tài khoản đã được gửi tới email của bạn: {email}. Nếu bạn không nhận được email, vui lòng nhập lại mật khẩu và nhấp nút bên dưới để gửi lại email xác nhận.",
|
"accountActivationAndResendValidationEmailTip": "Liên kết kích hoạt tài khoản đã được gửi tới email của bạn: {email}. Nếu bạn không nhận được email, vui lòng nhập lại mật khẩu và nhấp nút bên dưới để gửi lại email xác nhận.",
|
||||||
"resendValidationEmailTip": "Nếu bạn không nhận được email, vui lòng nhập lại mật khẩu và nhấp nút bên dưới để gửi lại email xác nhận tới: {email}",
|
"resendValidationEmailTip": "Nếu bạn không nhận được email, vui lòng nhập lại mật khẩu và nhấp nút bên dưới để gửi lại email xác nhận tới: {email}",
|
||||||
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
"oauth2bindTip": "You're signing in to the {userName} user using {providerName}. Please enter your ezBookkeeping password to verify."
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
"cannot move transaction from or to hidden account": "Cannot move transaction from or to hidden account",
|
||||||
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
"cannot move transaction from or to parent account": "Cannot move transaction from or to parent account",
|
||||||
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
"cannot move transaction between accounts with different currencies": "Cannot move transaction between accounts with different currencies",
|
||||||
|
"cannot add tags to too many transactions one time": "You cannot add tags to too many transactions one time",
|
||||||
"transaction category id is invalid": "ID danh mục giao dịch không hợp lệ",
|
"transaction category id is invalid": "ID danh mục giao dịch không hợp lệ",
|
||||||
"transaction category not found": "Không tìm thấy danh mục giao dịch",
|
"transaction category not found": "Không tìm thấy danh mục giao dịch",
|
||||||
"transaction category type is invalid": "Loại danh mục giao dịch không hợp lệ",
|
"transaction category type is invalid": "Loại danh mục giao dịch không hợp lệ",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
"Update Accounts for Transactions": "Update Accounts for Transactions",
|
||||||
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
"Update Destination Accounts for Transactions": "Update Destination Accounts for Transactions",
|
||||||
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
"Unable to update accounts for transactions": "Unable to update accounts for transactions",
|
||||||
|
"Add Tags to Transactions": "Add Tags to Transactions",
|
||||||
|
"Remove Tags from Transactions": "Remove Tags from Transactions",
|
||||||
|
"Clear All Tags from Transactions": "Clear All Tags from Transactions",
|
||||||
|
"Unable to update tags for transactions": "Unable to update tags for transactions",
|
||||||
"Delete Transactions": "Delete Transactions",
|
"Delete Transactions": "Delete Transactions",
|
||||||
"Unable to delete these transactions": "Unable to delete these transactions",
|
"Unable to delete these transactions": "Unable to delete these transactions",
|
||||||
"Account List": "Danh sách tài khoản",
|
"Account List": "Danh sách tài khoản",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "您不能撤销该操作。该操作将会把 {fromAccount} 账户中所有的交易数据移动到 {toAccount}。",
|
"moveTransactionsInAccountTip": "您不能撤销该操作。该操作将会把 {fromAccount} 账户中所有的交易数据移动到 {toAccount}。",
|
||||||
"clearTransactionsInAccountTip": "您不能撤销该操作。该操作将会清除您在 {account} 账户中的交易数据。请输入您当前的密码以确认。",
|
"clearTransactionsInAccountTip": "您不能撤销该操作。该操作将会清除您在 {account} 账户中的交易数据。请输入您当前的密码以确认。",
|
||||||
"deleteTransactionsTip": "您不能撤销该操作。该操作将会删除 {count} 个交易数据。请输入您当前的密码以确认。",
|
"deleteTransactionsTip": "您不能撤销该操作。该操作将会删除 {count} 个交易数据。请输入您当前的密码以确认。",
|
||||||
|
"clearTransactionsTagsTip": "您不能撤销该操作。该操作将会清除 {count} 个交易中的全部标签。",
|
||||||
"accountActivationAndResendValidationEmailTip": "账号激活链接已经发送到您的邮箱地址:{email},如果您没有收到邮件,请再次输入密码并点击下方的按钮重新发送验证邮件。",
|
"accountActivationAndResendValidationEmailTip": "账号激活链接已经发送到您的邮箱地址:{email},如果您没有收到邮件,请再次输入密码并点击下方的按钮重新发送验证邮件。",
|
||||||
"resendValidationEmailTip": "如果您没有收到邮件,请再次输入密码并点击下方的按钮重新发送验证邮件到:{email}",
|
"resendValidationEmailTip": "如果您没有收到邮件,请再次输入密码并点击下方的按钮重新发送验证邮件到:{email}",
|
||||||
"oauth2bindTip": "您正在使用 {providerName} 登录 \"{userName}\" 用户,请输入你的 ezBookkeeping 的密码进行验证。"
|
"oauth2bindTip": "您正在使用 {providerName} 登录 \"{userName}\" 用户,请输入你的 ezBookkeeping 的密码进行验证。"
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "不能从隐藏账户移动交易或移动交易到隐藏账户",
|
"cannot move transaction from or to hidden account": "不能从隐藏账户移动交易或移动交易到隐藏账户",
|
||||||
"cannot move transaction from or to parent account": "不能从父账户移动交易或移动交易到父账户",
|
"cannot move transaction from or to parent account": "不能从父账户移动交易或移动交易到父账户",
|
||||||
"cannot move transaction between accounts with different currencies": "不能在不同货币的账户之间移动交易",
|
"cannot move transaction between accounts with different currencies": "不能在不同货币的账户之间移动交易",
|
||||||
|
"cannot add tags to too many transactions one time": "一次不能将标签添加到太多交易",
|
||||||
"transaction category id is invalid": "交易分类ID无效",
|
"transaction category id is invalid": "交易分类ID无效",
|
||||||
"transaction category not found": "交易分类不存在",
|
"transaction category not found": "交易分类不存在",
|
||||||
"transaction category type is invalid": "交易分类类型无效",
|
"transaction category type is invalid": "交易分类类型无效",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "更新交易的账户",
|
"Update Accounts for Transactions": "更新交易的账户",
|
||||||
"Update Destination Accounts for Transactions": "更新交易的目标账户",
|
"Update Destination Accounts for Transactions": "更新交易的目标账户",
|
||||||
"Unable to update accounts for transactions": "无法更新交易的账户",
|
"Unable to update accounts for transactions": "无法更新交易的账户",
|
||||||
|
"Add Tags to Transactions": "为交易添加标签",
|
||||||
|
"Remove Tags from Transactions": "从交易移除标签",
|
||||||
|
"Clear All Tags from Transactions": "从交易清除所有标签",
|
||||||
|
"Unable to update tags for transactions": "无法更新交易的标签",
|
||||||
"Delete Transactions": "删除交易",
|
"Delete Transactions": "删除交易",
|
||||||
"Unable to delete these transactions": "无法删除这些交易",
|
"Unable to delete these transactions": "无法删除这些交易",
|
||||||
"Account List": "账户列表",
|
"Account List": "账户列表",
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
"moveTransactionsInAccountTip": "您不能還原此操作。此操作將會把 {fromAccount} 帳戶中的所有交易資料移動到 {toAccount}。",
|
"moveTransactionsInAccountTip": "您不能還原此操作。此操作將會把 {fromAccount} 帳戶中的所有交易資料移動到 {toAccount}。",
|
||||||
"clearTransactionsInAccountTip": "您不能還原此操作。此操作將會清除您在 {account} 帳戶中的交易資料。請輸入您目前的密碼以確認。",
|
"clearTransactionsInAccountTip": "您不能還原此操作。此操作將會清除您在 {account} 帳戶中的交易資料。請輸入您目前的密碼以確認。",
|
||||||
"deleteTransactionsTip": "您不能還原此操作。此操作將會刪除 {count} 個交易資料。請輸入您目前的密碼以確認。",
|
"deleteTransactionsTip": "您不能還原此操作。此操作將會刪除 {count} 個交易資料。請輸入您目前的密碼以確認。",
|
||||||
|
"clearTransactionsTagsTip": "您不能還原此操作。此操作將會清除 {count} 個交易中的全部標籤。",
|
||||||
"accountActivationAndResendValidationEmailTip": "帳號啟用連結已經傳送到您的信箱地址:{email},如果您沒有收到郵件,請再次輸入密碼並點擊下方的按鈕重新發送驗證郵件。",
|
"accountActivationAndResendValidationEmailTip": "帳號啟用連結已經傳送到您的信箱地址:{email},如果您沒有收到郵件,請再次輸入密碼並點擊下方的按鈕重新發送驗證郵件。",
|
||||||
"resendValidationEmailTip": "如果您沒有收到郵件,請再次輸入密碼並點擊下方的按鈕重新發送驗證郵件到:{email}",
|
"resendValidationEmailTip": "如果您沒有收到郵件,請再次輸入密碼並點擊下方的按鈕重新發送驗證郵件到:{email}",
|
||||||
"oauth2bindTip": "您正在使用 {providerName} 登入 \"{userName}\" 使用者,請輸入您的 ezBookkeeping 的密碼以進行驗證。"
|
"oauth2bindTip": "您正在使用 {providerName} 登入 \"{userName}\" 使用者,請輸入您的 ezBookkeeping 的密碼以進行驗證。"
|
||||||
@@ -1195,6 +1196,7 @@
|
|||||||
"cannot move transaction from or to hidden account": "不能從隱藏帳戶移動交易或移動交易到隱藏帳戶",
|
"cannot move transaction from or to hidden account": "不能從隱藏帳戶移動交易或移動交易到隱藏帳戶",
|
||||||
"cannot move transaction from or to parent account": "不能從父帳戶移動交易或移動交易到父帳戶",
|
"cannot move transaction from or to parent account": "不能從父帳戶移動交易或移動交易到父帳戶",
|
||||||
"cannot move transaction between accounts with different currencies": "不能在不同幣別的帳戶之間移動交易",
|
"cannot move transaction between accounts with different currencies": "不能在不同幣別的帳戶之間移動交易",
|
||||||
|
"cannot add tags to too many transactions one time": "一次不能將標籤添加到太多交易",
|
||||||
"transaction category id is invalid": "交易分類ID無效",
|
"transaction category id is invalid": "交易分類ID無效",
|
||||||
"transaction category not found": "交易分類不存在",
|
"transaction category not found": "交易分類不存在",
|
||||||
"transaction category type is invalid": "交易分類類型無效",
|
"transaction category type is invalid": "交易分類類型無效",
|
||||||
@@ -1856,6 +1858,10 @@
|
|||||||
"Update Accounts for Transactions": "更新交易的帳戶",
|
"Update Accounts for Transactions": "更新交易的帳戶",
|
||||||
"Update Destination Accounts for Transactions": "更新交易的目標帳戶",
|
"Update Destination Accounts for Transactions": "更新交易的目標帳戶",
|
||||||
"Unable to update accounts for transactions": "無法更新交易的帳戶",
|
"Unable to update accounts for transactions": "無法更新交易的帳戶",
|
||||||
|
"Add Tags to Transactions": "為交易添加標籤",
|
||||||
|
"Remove Tags from Transactions": "從交易移除標籤",
|
||||||
|
"Clear All Tags from Transactions": "從交易清除所有標籤",
|
||||||
|
"Unable to update tags for transactions": "無法更新交易的標籤",
|
||||||
"Delete Transactions": "刪除交易",
|
"Delete Transactions": "刪除交易",
|
||||||
"Unable to delete these transactions": "無法刪除這些交易",
|
"Unable to delete these transactions": "無法刪除這些交易",
|
||||||
"Account List": "帳戶清單",
|
"Account List": "帳戶清單",
|
||||||
|
|||||||
@@ -569,6 +569,20 @@ export interface TransactionBatchUpdateAccountRequest {
|
|||||||
readonly isDestinationAccount: boolean;
|
readonly isDestinationAccount: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface TransactionBatchAddTagsRequest {
|
||||||
|
readonly transactionIds: string[];
|
||||||
|
readonly tagIds: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TransactionBatchRemoveTagsRequest {
|
||||||
|
readonly transactionIds: string[];
|
||||||
|
readonly tagIds: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TransactionBatchClearTagsRequest {
|
||||||
|
readonly transactionIds: string[];
|
||||||
|
}
|
||||||
|
|
||||||
export interface TransactionMoveBetweenAccountsRequest {
|
export interface TransactionMoveBetweenAccountsRequest {
|
||||||
readonly fromAccountId: string;
|
readonly fromAccountId: string;
|
||||||
readonly toAccountId: string;
|
readonly toAccountId: string;
|
||||||
|
|||||||
@@ -1198,6 +1198,99 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function batchAddTagsToTransaction({ transactionIds, tagIds }: { transactionIds: string[], tagIds: string[] }): Promise<boolean> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
services.batchAddTagsToTransaction({ transactionIds, tagIds }).then(response => {
|
||||||
|
const data = response.data;
|
||||||
|
|
||||||
|
if (!data || !data.success || !data.result) {
|
||||||
|
reject({ message: 'Unable to update tags for transactions' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateStoreInvalidState({
|
||||||
|
transactionList: true,
|
||||||
|
reconciliationStatement: true,
|
||||||
|
explorer: true
|
||||||
|
});
|
||||||
|
|
||||||
|
resolve(data.result);
|
||||||
|
}).catch(error => {
|
||||||
|
logger.error('failed to update tags for transactions', error);
|
||||||
|
|
||||||
|
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||||
|
reject({ error: error.response.data });
|
||||||
|
} else if (!error.processed) {
|
||||||
|
reject({ message: 'Unable to update tags for transactions' });
|
||||||
|
} else {
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function batchRemoveTagsFromTransaction({ transactionIds, tagIds }: { transactionIds: string[], tagIds: string[] }): Promise<boolean> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
services.batchRemoveTagsFromTransaction({ transactionIds, tagIds }).then(response => {
|
||||||
|
const data = response.data;
|
||||||
|
|
||||||
|
if (!data || !data.success || !data.result) {
|
||||||
|
reject({ message: 'Unable to update tags for transactions' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateStoreInvalidState({
|
||||||
|
transactionList: true,
|
||||||
|
reconciliationStatement: true,
|
||||||
|
explorer: true
|
||||||
|
});
|
||||||
|
|
||||||
|
resolve(data.result);
|
||||||
|
}).catch(error => {
|
||||||
|
logger.error('failed to update tags for transactions', error);
|
||||||
|
|
||||||
|
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||||
|
reject({ error: error.response.data });
|
||||||
|
} else if (!error.processed) {
|
||||||
|
reject({ message: 'Unable to update tags for transactions' });
|
||||||
|
} else {
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function batchClearAllTagsFromTransaction({ transactionIds }: { transactionIds: string[] }): Promise<boolean> {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
services.batchClearAllTagsFromTransaction({ transactionIds }).then(response => {
|
||||||
|
const data = response.data;
|
||||||
|
|
||||||
|
if (!data || !data.success || !data.result) {
|
||||||
|
reject({ message: 'Unable to update tags for transactions' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateStoreInvalidState({
|
||||||
|
transactionList: true,
|
||||||
|
reconciliationStatement: true,
|
||||||
|
explorer: true
|
||||||
|
});
|
||||||
|
|
||||||
|
resolve(data.result);
|
||||||
|
}).catch(error => {
|
||||||
|
logger.error('failed to update tags for transactions', error);
|
||||||
|
|
||||||
|
if (error.response && error.response.data && error.response.data.errorMessage) {
|
||||||
|
reject({ error: error.response.data });
|
||||||
|
} else if (!error.processed) {
|
||||||
|
reject({ message: 'Unable to update tags for transactions' });
|
||||||
|
} else {
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function moveAllTransactionsBetweenAccounts({ fromAccountId, toAccountId }: { fromAccountId: string, toAccountId: string }): Promise<boolean> {
|
function moveAllTransactionsBetweenAccounts({ fromAccountId, toAccountId }: { fromAccountId: string, toAccountId: string }): Promise<boolean> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
services.moveAllTransactionsBetweenAccounts({ fromAccountId, toAccountId }).then(response => {
|
services.moveAllTransactionsBetweenAccounts({ fromAccountId, toAccountId }).then(response => {
|
||||||
@@ -1574,6 +1667,9 @@ export const useTransactionsStore = defineStore('transactions', () => {
|
|||||||
saveTransaction,
|
saveTransaction,
|
||||||
batchUpdateTransactionCategories,
|
batchUpdateTransactionCategories,
|
||||||
batchUpdateTransactionAccounts,
|
batchUpdateTransactionAccounts,
|
||||||
|
batchAddTagsToTransaction,
|
||||||
|
batchRemoveTagsFromTransaction,
|
||||||
|
batchClearAllTagsFromTransaction,
|
||||||
moveAllTransactionsBetweenAccounts,
|
moveAllTransactionsBetweenAccounts,
|
||||||
deleteTransaction,
|
deleteTransaction,
|
||||||
batchDeleteTransactions,
|
batchDeleteTransactions,
|
||||||
|
|||||||
@@ -0,0 +1,180 @@
|
|||||||
|
<template>
|
||||||
|
<v-dialog width="600" :persistent="true" v-model="showState">
|
||||||
|
<v-card class="pa-sm-1 pa-md-2">
|
||||||
|
<template #title>
|
||||||
|
<div class="d-flex flex-wrap align-center">
|
||||||
|
<h4 class="text-h4 text-wrap" v-if="type === 'add'">{{ tt('Add Tags to Transactions') }}</h4>
|
||||||
|
<h4 class="text-h4 text-wrap" v-if="type === 'remove'">{{ tt('Remove Tags from Transactions') }}</h4>
|
||||||
|
<h4 class="text-h4 text-wrap" v-if="type === 'clear'">{{ tt('Clear All Tags from Transactions') }}</h4>
|
||||||
|
<v-btn class="ms-2" density="compact" color="default" variant="text" size="24"
|
||||||
|
:icon="true" :disabled="loading || submitting" :loading="loading"
|
||||||
|
@click="reload" v-if="type !== 'clear'">
|
||||||
|
<template #loader>
|
||||||
|
<v-progress-circular indeterminate size="20"/>
|
||||||
|
</template>
|
||||||
|
<v-icon :icon="mdiRefresh" size="24" />
|
||||||
|
<v-tooltip activator="parent">{{ tt('Refresh') }}</v-tooltip>
|
||||||
|
</v-btn>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<v-card-text class="pb-4" v-if="type === 'clear'">{{ tt('format.misc.clearTransactionsTagsTip', { count: formatNumberToLocalizedNumerals(updateIds?.length ?? 0) }) }}</v-card-text>
|
||||||
|
<v-card-text class="w-100 d-flex justify-center" v-if="type !== 'clear'">
|
||||||
|
<v-row>
|
||||||
|
<v-col cols="12">
|
||||||
|
<transaction-tag-auto-complete
|
||||||
|
:disabled="loading || submitting"
|
||||||
|
:show-label="true"
|
||||||
|
:allow-add-new-tag="type === 'add'"
|
||||||
|
v-model="tagIds"
|
||||||
|
@tag:saving="onSavingTag"
|
||||||
|
/>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-text>
|
||||||
|
<div class="w-100 d-flex justify-center flex-wrap mt-sm-1 mt-md-2 gap-4">
|
||||||
|
<v-btn :disabled="loading || submitting || updateIds.length < 1 || (type !== 'clear' && (!tagIds || tagIds.length < 1))" @click="confirm">
|
||||||
|
{{ tt('OK') }}
|
||||||
|
<v-progress-circular indeterminate size="22" class="ms-2" v-if="submitting"></v-progress-circular>
|
||||||
|
</v-btn>
|
||||||
|
<v-btn color="secondary" variant="tonal" :disabled="loading || submitting" @click="cancel">{{ tt('Cancel') }}</v-btn>
|
||||||
|
</div>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
|
||||||
|
<snack-bar ref="snackbar" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import SnackBar from '@/components/desktop/SnackBar.vue';
|
||||||
|
|
||||||
|
import { ref, useTemplateRef } from 'vue';
|
||||||
|
|
||||||
|
import { useI18n } from '@/locales/helpers.ts';
|
||||||
|
|
||||||
|
import { useTransactionTagsStore } from '@/stores/transactionTag.ts';
|
||||||
|
import { useTransactionsStore } from '@/stores/transaction.ts';
|
||||||
|
|
||||||
|
import {
|
||||||
|
mdiRefresh
|
||||||
|
} from '@mdi/js'
|
||||||
|
|
||||||
|
export type BatchUpdateTagsOperationType = 'add' | 'remove' | 'clear';
|
||||||
|
|
||||||
|
type SnackBarType = InstanceType<typeof SnackBar>;
|
||||||
|
|
||||||
|
const {
|
||||||
|
tt,
|
||||||
|
formatNumberToLocalizedNumerals
|
||||||
|
} = useI18n();
|
||||||
|
|
||||||
|
const transactionTagsStore = useTransactionTagsStore();
|
||||||
|
const transactionsStore = useTransactionsStore();
|
||||||
|
|
||||||
|
const snackbar = useTemplateRef<SnackBarType>('snackbar');
|
||||||
|
|
||||||
|
const showState = ref<boolean>(false);
|
||||||
|
const loading = ref<boolean>(false);
|
||||||
|
const submitting = ref<boolean>(false);
|
||||||
|
const type = ref<BatchUpdateTagsOperationType>('add');
|
||||||
|
const updateIds = ref<string[]>([]);
|
||||||
|
const tagIds = ref<string[]>([]);
|
||||||
|
|
||||||
|
let resolveFunc: ((response: number) => void) | null = null;
|
||||||
|
let rejectFunc: ((reason?: unknown) => void) | null = null;
|
||||||
|
|
||||||
|
function open(options: { type: BatchUpdateTagsOperationType; updateIds: string[] }): Promise<number> {
|
||||||
|
type.value = options.type;
|
||||||
|
updateIds.value = options.updateIds;
|
||||||
|
tagIds.value = [];
|
||||||
|
submitting.value = false;
|
||||||
|
showState.value = true;
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
resolveFunc = resolve;
|
||||||
|
rejectFunc = reject;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function reload(): void {
|
||||||
|
loading.value = true;
|
||||||
|
|
||||||
|
transactionTagsStore.loadAllTags({ force: true }).then(() => {
|
||||||
|
loading.value = false;
|
||||||
|
}).catch(error => {
|
||||||
|
loading.value = false;
|
||||||
|
|
||||||
|
if (!error.processed) {
|
||||||
|
snackbar.value?.showError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function confirm(): void {
|
||||||
|
if (type.value === 'add') {
|
||||||
|
submitting.value = true;
|
||||||
|
|
||||||
|
transactionsStore.batchAddTagsToTransaction({
|
||||||
|
transactionIds: updateIds.value,
|
||||||
|
tagIds: tagIds.value
|
||||||
|
}).then(() => {
|
||||||
|
submitting.value = false;
|
||||||
|
showState.value = false;
|
||||||
|
resolveFunc?.(updateIds.value.length);
|
||||||
|
}).catch(error => {
|
||||||
|
submitting.value = false;
|
||||||
|
|
||||||
|
if (!error.processed) {
|
||||||
|
snackbar.value?.showError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (type.value === 'remove') {
|
||||||
|
submitting.value = true;
|
||||||
|
|
||||||
|
transactionsStore.batchRemoveTagsFromTransaction({
|
||||||
|
transactionIds: updateIds.value,
|
||||||
|
tagIds: tagIds.value
|
||||||
|
}).then(() => {
|
||||||
|
submitting.value = false;
|
||||||
|
showState.value = false;
|
||||||
|
resolveFunc?.(updateIds.value.length);
|
||||||
|
}).catch(error => {
|
||||||
|
submitting.value = false;
|
||||||
|
|
||||||
|
if (!error.processed) {
|
||||||
|
snackbar.value?.showError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (type.value === 'clear') {
|
||||||
|
submitting.value = true;
|
||||||
|
|
||||||
|
transactionsStore.batchClearAllTagsFromTransaction({
|
||||||
|
transactionIds: updateIds.value
|
||||||
|
}).then(() => {
|
||||||
|
submitting.value = false;
|
||||||
|
showState.value = false;
|
||||||
|
resolveFunc?.(updateIds.value.length);
|
||||||
|
}).catch(error => {
|
||||||
|
submitting.value = false;
|
||||||
|
|
||||||
|
if (!error.processed) {
|
||||||
|
snackbar.value?.showError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function cancel(): void {
|
||||||
|
rejectFunc?.();
|
||||||
|
showState.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSavingTag(state: boolean): void {
|
||||||
|
submitting.value = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -100,6 +100,19 @@
|
|||||||
:disabled="!isAllSelectedTransactionsTransfer"
|
:disabled="!isAllSelectedTransactionsTransfer"
|
||||||
@click="batchUpdateTransactionAccounts(true)"></v-list-item>
|
@click="batchUpdateTransactionAccounts(true)"></v-list-item>
|
||||||
<v-divider class="my-2" />
|
<v-divider class="my-2" />
|
||||||
|
<v-list-item :prepend-icon="mdiTextBoxEditOutline"
|
||||||
|
:title="tt('Add Tags to Transactions')"
|
||||||
|
:disabled="selectedTransactionCount < 1"
|
||||||
|
@click="batchUpdateTransactionTags('add')"></v-list-item>
|
||||||
|
<v-list-item :prepend-icon="mdiTextBoxEditOutline"
|
||||||
|
:title="tt('Remove Tags from Transactions')"
|
||||||
|
:disabled="selectedTransactionCount < 1"
|
||||||
|
@click="batchUpdateTransactionTags('remove')"></v-list-item>
|
||||||
|
<v-list-item :prepend-icon="mdiTextBoxEditOutline"
|
||||||
|
:title="tt('Clear All Tags from Transactions')"
|
||||||
|
:disabled="selectedTransactionCount < 1"
|
||||||
|
@click="batchUpdateTransactionTags('clear')"></v-list-item>
|
||||||
|
<v-divider class="my-2" />
|
||||||
<v-list-item :prepend-icon="mdiDeleteOutline"
|
<v-list-item :prepend-icon="mdiDeleteOutline"
|
||||||
:title="tt('Delete Transactions')"
|
:title="tt('Delete Transactions')"
|
||||||
:disabled="selectedTransactionCount < 1"
|
:disabled="selectedTransactionCount < 1"
|
||||||
@@ -190,6 +203,7 @@
|
|||||||
|
|
||||||
<batch-update-category-dialog ref="batchUpdateCategoryDialog" />
|
<batch-update-category-dialog ref="batchUpdateCategoryDialog" />
|
||||||
<batch-update-account-dialog ref="batchUpdateAccountDialog" />
|
<batch-update-account-dialog ref="batchUpdateAccountDialog" />
|
||||||
|
<batch-update-tags-dialog ref="batchUpdateTagsDialog" />
|
||||||
<batch-delete-dialog ref="batchDeleteDialog" />
|
<batch-delete-dialog ref="batchDeleteDialog" />
|
||||||
<snack-bar ref="snackbar" />
|
<snack-bar ref="snackbar" />
|
||||||
</template>
|
</template>
|
||||||
@@ -199,6 +213,7 @@ import SnackBar from '@/components/desktop/SnackBar.vue';
|
|||||||
import PaginationButtons from '@/components/desktop/PaginationButtons.vue';
|
import PaginationButtons from '@/components/desktop/PaginationButtons.vue';
|
||||||
import BatchUpdateCategoryDialog from '@/views/desktop/insights/dialogs/BatchUpdateCategoryDialog.vue';
|
import BatchUpdateCategoryDialog from '@/views/desktop/insights/dialogs/BatchUpdateCategoryDialog.vue';
|
||||||
import BatchUpdateAccountDialog from '@/views/desktop/insights/dialogs/BatchUpdateAccountDialog.vue';
|
import BatchUpdateAccountDialog from '@/views/desktop/insights/dialogs/BatchUpdateAccountDialog.vue';
|
||||||
|
import BatchUpdateTagsDialog, { type BatchUpdateTagsOperationType } from '@/views/desktop/insights/dialogs/BatchUpdateTagsDialog.vue';
|
||||||
import BatchDeleteDialog from '@/views/desktop/insights/dialogs/BatchDeleteDialog.vue';
|
import BatchDeleteDialog from '@/views/desktop/insights/dialogs/BatchDeleteDialog.vue';
|
||||||
|
|
||||||
import { ref, computed, useTemplateRef, watch } from 'vue';
|
import { ref, computed, useTemplateRef, watch } from 'vue';
|
||||||
@@ -228,6 +243,7 @@ import {
|
|||||||
type SnackBarType = InstanceType<typeof SnackBar>;
|
type SnackBarType = InstanceType<typeof SnackBar>;
|
||||||
type BatchUpdateCategoryDialogType = InstanceType<typeof BatchUpdateCategoryDialog>;
|
type BatchUpdateCategoryDialogType = InstanceType<typeof BatchUpdateCategoryDialog>;
|
||||||
type BatchUpdateAccountDialogType = InstanceType<typeof BatchUpdateAccountDialog>;
|
type BatchUpdateAccountDialogType = InstanceType<typeof BatchUpdateAccountDialog>;
|
||||||
|
type BatchUpdateTagsDialogType = InstanceType<typeof BatchUpdateTagsDialog>;
|
||||||
type BatchDeleteDialogType = InstanceType<typeof BatchDeleteDialog>;
|
type BatchDeleteDialogType = InstanceType<typeof BatchDeleteDialog>;
|
||||||
|
|
||||||
interface InsightsExplorerDataTableTabProps {
|
interface InsightsExplorerDataTableTabProps {
|
||||||
@@ -245,6 +261,7 @@ const emit = defineEmits<{
|
|||||||
const snackbar = useTemplateRef<SnackBarType>('snackbar');
|
const snackbar = useTemplateRef<SnackBarType>('snackbar');
|
||||||
const batchUpdateCategoryDialog = useTemplateRef<BatchUpdateCategoryDialogType>('batchUpdateCategoryDialog');
|
const batchUpdateCategoryDialog = useTemplateRef<BatchUpdateCategoryDialogType>('batchUpdateCategoryDialog');
|
||||||
const batchUpdateAccountDialog = useTemplateRef<BatchUpdateAccountDialogType>('batchUpdateAccountDialog');
|
const batchUpdateAccountDialog = useTemplateRef<BatchUpdateAccountDialogType>('batchUpdateAccountDialog');
|
||||||
|
const batchUpdateTagsDialog = useTemplateRef<BatchUpdateTagsDialogType>('batchUpdateTagsDialog');
|
||||||
const batchDeleteDialog = useTemplateRef<BatchDeleteDialogType>('batchDeleteDialog');
|
const batchDeleteDialog = useTemplateRef<BatchDeleteDialogType>('batchDeleteDialog');
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@@ -365,6 +382,25 @@ function batchUpdateTransactionAccounts(isDestinationAccount: boolean): void {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function batchUpdateTransactionTags(type: BatchUpdateTagsOperationType): void {
|
||||||
|
batchUpdateTagsDialog.value?.open({
|
||||||
|
type: type,
|
||||||
|
updateIds: getAllSelectedTransactionIds()
|
||||||
|
}).then(updatedCount => {
|
||||||
|
if (updatedCount > 0) {
|
||||||
|
snackbar.value?.showMessage('format.misc.youHaveUpdatedTransactions', {
|
||||||
|
count: formatNumberToLocalizedNumerals(updatedCount)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
selectedTransactions.value = {};
|
||||||
|
emit('update:transactions');
|
||||||
|
}).catch(error => {
|
||||||
|
if (error) {
|
||||||
|
snackbar.value?.showError(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function batchDeleteTransactions(): void {
|
function batchDeleteTransactions(): void {
|
||||||
batchDeleteDialog.value?.open({
|
batchDeleteDialog.value?.open({
|
||||||
updateIds: getAllSelectedTransactionIds()
|
updateIds: getAllSelectedTransactionIds()
|
||||||
|
|||||||
Reference in New Issue
Block a user