diff --git a/engine/action_trigger.go b/engine/action_trigger.go index ec51114d9..5ae816ff8 100644 --- a/engine/action_trigger.go +++ b/engine/action_trigger.go @@ -47,6 +47,8 @@ func (at *ActionTrigger) Execute(ub *UserBalance) (err error) { Logger.Err(fmt.Sprintf("Failed to get actions: %v", err)) return } + at.Executed = true + atLeastOneActionExecuted := false for _, a := range aac { if a.Balance == nil { a.Balance = &Balance{} @@ -59,9 +61,14 @@ func (at *ActionTrigger) Execute(ub *UserBalance) (err error) { } go Logger.Info(fmt.Sprintf("Executing %v: %v", ub.Id, a)) err = actionFunction(ub, a) + if err == nil { + atLeastOneActionExecuted = true + } + } + if !atLeastOneActionExecuted { + at.Executed = false } storageLogger.LogActionTrigger(ub.Id, RATER_SOURCE, at, aac) - at.Executed = true accountingStorage.SetUserBalance(ub) return } diff --git a/engine/userbalance.go b/engine/userbalance.go index 52d1abb07..04e15d730 100644 --- a/engine/userbalance.go +++ b/engine/userbalance.go @@ -115,8 +115,8 @@ func (ub *UserBalance) debitBalanceAction(a *Action) error { a.Balance.Value = -a.Balance.Value ub.BalanceMap[id] = append(ub.BalanceMap[id], a.Balance) } - ub.executeActionTriggers(nil) // for triggering min/max_balance triggers - return nil //ub.BalanceMap[id].GetTotalValue() + ub.executeActionTriggers(nil) + return nil //ub.BalanceMap[id].GetTotalValue() } func (ub *UserBalance) getBalancesForPrefix(prefix string, balances BalanceChain) BalanceChain {