From 32c6b4a6739220583d9624bb21cae045169f3d4d Mon Sep 17 00:00:00 2001 From: DanB Date: Mon, 10 May 2021 16:43:26 +0200 Subject: [PATCH] AccountS - TestV1DebitAbstractsEventCharges with Abstracts and Concretes matching, RateProfileCost with indexed Rates --- accounts/abstractbalance.go | 2 ++ accounts/accounts_test.go | 10 ++++------ accounts/concretebalance.go | 2 ++ utils/eventcharges.go | 9 +++++---- utils/librates.go | 2 ++ 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/accounts/abstractbalance.go b/accounts/abstractbalance.go index 7ed609bbd..9d4bccdb7 100644 --- a/accounts/abstractbalance.go +++ b/accounts/abstractbalance.go @@ -118,6 +118,8 @@ func (aB *abstractBalance) debitAbstracts(usage *decimal.Big, aB.rateSConns, aB.blnCfg.RateProfileIDs, costIcrm, dbted); err != nil { return + } else if ecCost.Abstracts.Compare(utils.NewDecimal(0, 0)) == 0 { // no debit performed + return } } diff --git a/accounts/accounts_test.go b/accounts/accounts_test.go index b3a6bf62e..b355444f7 100644 --- a/accounts/accounts_test.go +++ b/accounts/accounts_test.go @@ -1428,9 +1428,8 @@ func TestV1DebitAbstractsEventCharges(t *testing.T) { cb2ID := "CB2" // populate the Account acnt1 := &utils.Account{ - Tenant: utils.CGRateSorg, - ID: "TestV1DebitAbstractsEventCharges1", - FilterIDs: []string{"*string:*~req.Account:AnotherAccount"}, + Tenant: utils.CGRateSorg, + ID: "TestV1DebitAbstractsEventCharges1", Weights: utils.DynamicWeights{ { Weight: 10, @@ -1592,8 +1591,8 @@ func TestV1DebitAbstractsEventCharges(t *testing.T) { } eEvChgs := &utils.ExtEventCharges{ - Abstracts: utils.Float64Pointer(475000000000), - Concretes: utils.Float64Pointer(5.15), + Abstracts: utils.Float64Pointer(446000000000), + Concretes: utils.Float64Pointer(4.95), Charges: []*utils.ChargeEntry{ { ChargingID: "GENUUID1", @@ -1743,7 +1742,6 @@ func TestV1DebitAbstractsEventCharges(t *testing.T) { Tenant: utils.CGRateSorg, APIOpts: map[string]interface{}{ utils.MetaUsage: "7m26s", - //utils.MetaUsage: "2m1s", }, }, } diff --git a/accounts/concretebalance.go b/accounts/concretebalance.go index 13a003714..07a0ab54f 100644 --- a/accounts/concretebalance.go +++ b/accounts/concretebalance.go @@ -92,6 +92,8 @@ func (cB *concreteBalance) debitAbstracts(aUnits *decimal.Big, cB.rateSConns, cB.blnCfg.RateProfileIDs, costIcrm, dbted); err != nil { return + } else if ecCncrt.Abstracts.Compare(utils.NewDecimal(0, 0)) == 0 { // no debit performed + return } ec = utils.NewEventCharges() ec.Abstracts = ecCncrt.Abstracts diff --git a/utils/eventcharges.go b/utils/eventcharges.go index 8436a3228..90c4cc42b 100644 --- a/utils/eventcharges.go +++ b/utils/eventcharges.go @@ -40,10 +40,11 @@ type EventCharges struct { Charges []*ChargeEntry - Accounting map[string]*AccountCharge - UnitFactors map[string]*UnitFactor - Rating map[string]*RateSInterval - Accounts map[string]*Account + Accounting map[string]*AccountCharge + UnitFactors map[string]*UnitFactor + Rating map[string]*RateSInterval + IntervalRates map[string]*IntervalRate + Accounts map[string]*Account } // ChargeEntry is a reference towards Accounting or Rating ID (depending on request type) diff --git a/utils/librates.go b/utils/librates.go index ed8da5c13..a9194826a 100644 --- a/utils/librates.go +++ b/utils/librates.go @@ -413,6 +413,7 @@ type RateSIncrement struct { IncrementStart *Decimal Rate *Rate IntervalRateIndex int + RateID string CompressFactor int64 Usage *Decimal @@ -533,6 +534,7 @@ type RateProfileCost struct { MaxCost float64 MaxCostStrategy string RateSIntervals []*RateSInterval + Rates map[string]*IntervalRate Altered []string }