From e0d15f1a9eaf8aed15d884b69d291510c4bc6fa8 Mon Sep 17 00:00:00 2001 From: DanB Date: Fri, 19 Jan 2024 16:28:09 +0100 Subject: [PATCH] Prevent balance Blocker to partially debit --- engine/account.go | 10 ++++++++-- general_tests/balance_blocker_it_test.go | 12 ++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/engine/account.go b/engine/account.go index 7402804c4..3f448888d 100644 --- a/engine/account.go +++ b/engine/account.go @@ -421,7 +421,10 @@ func (acc *Account) debitCreditBalance(cd *CallDescriptor, count bool, dryRun bo } // check for blocker if balance.Blocker { - return // don't go to next balances + if cd.GetDuration() != 0 { + return nil, errors.New("insufficient credit with balance Blocker") + } + goto COMMIT // don't go to next balances } } } @@ -454,7 +457,10 @@ func (acc *Account) debitCreditBalance(cd *CallDescriptor, count bool, dryRun bo } // check for blocker if balance.Blocker { - return // don't go to next balances + if cd.GetDuration() != 0 { + return nil, errors.New("insufficient credit with balance Blocker") + } + goto COMMIT // don't go to next balances } } } diff --git a/general_tests/balance_blocker_it_test.go b/general_tests/balance_blocker_it_test.go index 8319cb1d0..c9920ec12 100644 --- a/general_tests/balance_blocker_it_test.go +++ b/general_tests/balance_blocker_it_test.go @@ -21,7 +21,7 @@ along with this program. If not, see package general_tests import ( - "fmt" + //"fmt" "testing" "time" @@ -54,6 +54,10 @@ func TestBalanceBlocker(t *testing.T) { content := `{ +"general": { + "log_level": 7, +}, + "data_db": { "db_type": "*internal" }, @@ -119,7 +123,7 @@ cgrates.org,sms,1001,2014-01-14T00:00:00Z,RP_ANY,`, if err := client.Call(context.Background(), utils.APIerSv2GetAccount, attrs, &acnt); err != nil { t.Fatal(err) } - fmt.Println(utils.ToJSON(acnt)) + //fmt.Println("initial account: " + utils.ToJSON(acnt)) }) t.Run("ProcessCDR", func(t *testing.T) { @@ -156,7 +160,7 @@ cgrates.org,sms,1001,2014-01-14T00:00:00Z,RP_ANY,`, t.Fatal(err) } - fmt.Println(utils.ToJSON(cdrs)) + //fmt.Println(utils.ToJSON(cdrs)) }) t.Run("CheckFinalBalance", func(t *testing.T) { @@ -166,6 +170,6 @@ cgrates.org,sms,1001,2014-01-14T00:00:00Z,RP_ANY,`, t.Fatal(err) } - fmt.Println(utils.ToJSON(acnt)) + //fmt.Println("final account: " + utils.ToJSON(acnt)) }) }