diff --git a/engine/eventcost.go b/engine/eventcost.go index b1ad6bd86..a79e27e37 100644 --- a/engine/eventcost.go +++ b/engine/eventcost.go @@ -47,7 +47,7 @@ func NewEventCostFromCallCost(cc *CallCost, cgrID, runID string) (ec *EventCost) cIl := &ChargingInterval{CompressFactor: ts.CompressFactor} rf := RatingMatchedFilters{"Subject": ts.MatchedSubject, "DestinationPrefix": ts.MatchedPrefix, "DestinationID": ts.MatchedDestId, "RatingPlanID": ts.RatingPlanId} - cIl.RatingUUID = ec.ratingUUIDForRateInterval(ts.RateInterval, rf) + cIl.RatingID = ec.ratingIDForRateInterval(ts.RateInterval, rf) if len(ts.Increments) != 0 { cIl.Increments = make([]*ChargingIncrement, len(ts.Increments)) } @@ -59,35 +59,35 @@ func NewEventCostFromCallCost(cc *CallCost, cgrID, runID string) (ec *EventCost) if incr.BalanceInfo == nil { continue } - //AccountingUUID + //AccountingID if incr.BalanceInfo.Unit != nil { // 2 balances work-around ecUUID := utils.META_NONE // populate no matter what due to Unit not nil if incr.BalanceInfo.Monetary != nil { - if uuid := ec.Accounting.GetUUIDWithSet( + if uuid := ec.Accounting.GetIDWithSet( &BalanceCharge{ AccountID: incr.BalanceInfo.AccountID, BalanceUUID: incr.BalanceInfo.Monetary.UUID, Units: incr.Cost, - RatingUUID: ec.ratingUUIDForRateInterval(incr.BalanceInfo.Monetary.RateInterval, rf), + RatingID: ec.ratingIDForRateInterval(incr.BalanceInfo.Monetary.RateInterval, rf), }); uuid != "" { ecUUID = uuid } } - cIt.AccountingUUID = ec.Accounting.GetUUIDWithSet( + cIt.AccountingID = ec.Accounting.GetIDWithSet( &BalanceCharge{ - AccountID: incr.BalanceInfo.AccountID, - BalanceUUID: incr.BalanceInfo.Unit.UUID, - Units: incr.BalanceInfo.Unit.Consumed, - RatingUUID: ec.ratingUUIDForRateInterval(incr.BalanceInfo.Unit.RateInterval, rf), - ExtraChargeUUID: ecUUID}) + AccountID: incr.BalanceInfo.AccountID, + BalanceUUID: incr.BalanceInfo.Unit.UUID, + Units: incr.BalanceInfo.Unit.Consumed, + RatingID: ec.ratingIDForRateInterval(incr.BalanceInfo.Unit.RateInterval, rf), + ExtraChargeID: ecUUID}) } else if incr.BalanceInfo.Monetary != nil { // Only monetary - cIt.AccountingUUID = ec.Accounting.GetUUIDWithSet( + cIt.AccountingID = ec.Accounting.GetIDWithSet( &BalanceCharge{ AccountID: incr.BalanceInfo.AccountID, BalanceUUID: incr.BalanceInfo.Monetary.UUID, Units: incr.Cost, - RatingUUID: ec.ratingUUIDForRateInterval(incr.BalanceInfo.Monetary.RateInterval, rf)}) + RatingID: ec.ratingIDForRateInterval(incr.BalanceInfo.Monetary.RateInterval, rf)}) } cIl.Increments[j] = cIt } @@ -112,17 +112,17 @@ type EventCost struct { Timings ChargedTimings } -func (ec *EventCost) ratingUUIDForRateInterval(ri *RateInterval, rf RatingMatchedFilters) string { +func (ec *EventCost) ratingIDForRateInterval(ri *RateInterval, rf RatingMatchedFilters) string { if ri == nil || ri.Rating == nil { return "" } var rfUUID string if rf != nil { - rfUUID = ec.RatingFilters.GetUUIDWithSet(rf) + rfUUID = ec.RatingFilters.GetIDWithSet(rf) } var tmID string if ri.Timing != nil { - tmID = ec.Timings.GetUUIDWithSet( + tmID = ec.Timings.GetIDWithSet( &ChargedTiming{ Years: ri.Timing.Years, Months: ri.Timing.Months, @@ -132,35 +132,35 @@ func (ec *EventCost) ratingUUIDForRateInterval(ri *RateInterval, rf RatingMatche } var rtUUID string if len(ri.Rating.Rates) != 0 { - rtUUID = ec.Rates.GetUUIDWithSet(ri.Rating.Rates) + rtUUID = ec.Rates.GetIDWithSet(ri.Rating.Rates) } - return ec.Rating.GetUUIDWithSet( + return ec.Rating.GetIDWithSet( &RatingUnit{ - ConnectFee: ri.Rating.ConnectFee, - RoundingMethod: ri.Rating.RoundingMethod, - RoundingDecimals: ri.Rating.RoundingDecimals, - MaxCost: ri.Rating.MaxCost, - MaxCostStrategy: ri.Rating.MaxCostStrategy, - TimingUUID: tmID, - RatesUUID: rtUUID, - RatingFiltersUUID: rfUUID}) + ConnectFee: ri.Rating.ConnectFee, + RoundingMethod: ri.Rating.RoundingMethod, + RoundingDecimals: ri.Rating.RoundingDecimals, + MaxCost: ri.Rating.MaxCost, + MaxCostStrategy: ri.Rating.MaxCostStrategy, + TimingID: tmID, + RatesID: rtUUID, + RatingFiltersID: rfUUID}) } -func (ec *EventCost) rateIntervalForRatingUUID(ratingUUID string) (ri *RateInterval) { - if ratingUUID == "" { +func (ec *EventCost) rateIntervalForRatingID(ratingID string) (ri *RateInterval) { + if ratingID == "" { return } - cIlRU := ec.Rating[ratingUUID] + cIlRU := ec.Rating[ratingID] ri = new(RateInterval) ri.Rating = &RIRate{ConnectFee: cIlRU.ConnectFee, RoundingMethod: cIlRU.RoundingMethod, RoundingDecimals: cIlRU.RoundingDecimals, MaxCost: cIlRU.MaxCost, MaxCostStrategy: cIlRU.MaxCostStrategy} - if cIlRU.RatesUUID != "" { - ri.Rating.Rates = ec.Rates[cIlRU.RatesUUID] + if cIlRU.RatesID != "" { + ri.Rating.Rates = ec.Rates[cIlRU.RatesID] } - if cIlRU.TimingUUID != "" { - cIlTm := ec.Timings[cIlRU.TimingUUID] + if cIlRU.TimingID != "" { + cIlTm := ec.Timings[cIlRU.TimingID] ri.Timing = &RITiming{Years: cIlTm.Years, Months: cIlTm.Months, MonthDays: cIlTm.MonthDays, WeekDays: cIlTm.WeekDays, StartTime: cIlTm.StartTime} } @@ -263,36 +263,36 @@ func (ec *EventCost) AsCallCost() *CallCost { ts.TimeStart = ec.StartTime.Add(*cIl.ecUsageIdx) ts.TimeEnd = ts.TimeStart.Add( time.Duration(cIl.Usage().Nanoseconds() * int64(cIl.CompressFactor))) - if cIl.RatingUUID != "" { - if ec.Rating[cIl.RatingUUID].RatingFiltersUUID != "" { - rfs := ec.RatingFilters[ec.Rating[cIl.RatingUUID].RatingFiltersUUID] + if cIl.RatingID != "" { + if ec.Rating[cIl.RatingID].RatingFiltersID != "" { + rfs := ec.RatingFilters[ec.Rating[cIl.RatingID].RatingFiltersID] ts.MatchedSubject = rfs["Subject"].(string) ts.MatchedPrefix = rfs["DestinationPrefix"].(string) ts.MatchedDestId = rfs["DestinationID"].(string) ts.RatingPlanId = rfs["RatingPlanID"].(string) } } - ts.RateInterval = ec.rateIntervalForRatingUUID(cIl.RatingUUID) + ts.RateInterval = ec.rateIntervalForRatingID(cIl.RatingID) if len(cIl.Increments) != 0 { ts.Increments = make(Increments, len(cIl.Increments)) } for j, cInc := range cIl.Increments { incr := &Increment{Duration: cInc.Usage, Cost: cInc.Cost, CompressFactor: cInc.CompressFactor} - if cInc.AccountingUUID != "" { - cBC := ec.Accounting[cInc.AccountingUUID] + if cInc.AccountingID != "" { + cBC := ec.Accounting[cInc.AccountingID] incr.BalanceInfo = &DebitInfo{AccountID: cBC.AccountID} - if cBC.ExtraChargeUUID != "" { // have both monetary and data + if cBC.ExtraChargeID != "" { // have both monetary and data // Work around, enforce logic with 2 balances for *voice/*monetary combination // so we can stay compatible with CallCost incr.BalanceInfo.Unit = &UnitInfo{UUID: cBC.BalanceUUID, Consumed: cBC.Units} - incr.BalanceInfo.Unit.RateInterval = ec.rateIntervalForRatingUUID(cBC.RatingUUID) - if cBC.ExtraChargeUUID != utils.META_NONE { - cBC = ec.Accounting[cBC.ExtraChargeUUID] // overwrite original balance so we can process it in one place + incr.BalanceInfo.Unit.RateInterval = ec.rateIntervalForRatingID(cBC.RatingID) + if cBC.ExtraChargeID != utils.META_NONE { + cBC = ec.Accounting[cBC.ExtraChargeID] // overwrite original balance so we can process it in one place } } - if cBC.ExtraChargeUUID != utils.META_NONE { + if cBC.ExtraChargeID != utils.META_NONE { incr.BalanceInfo.Monetary = &MonetaryInfo{UUID: cBC.BalanceUUID} - incr.BalanceInfo.Monetary.RateInterval = ec.rateIntervalForRatingUUID(cBC.RatingUUID) + incr.BalanceInfo.Monetary.RateInterval = ec.rateIntervalForRatingID(cBC.RatingID) } } ts.Increments[j] = incr @@ -302,35 +302,35 @@ func (ec *EventCost) AsCallCost() *CallCost { return cc } -// ratingGetUUIDFomEventCost retrieves UUID based on data from another EventCost -func (ec *EventCost) ratingGetUUIDFomEventCost(oEC *EventCost, oRatingUUID string) string { - if oRatingUUID == "" { +// ratingGetIDFomEventCost retrieves UUID based on data from another EventCost +func (ec *EventCost) ratingGetIDFomEventCost(oEC *EventCost, oRatingID string) string { + if oRatingID == "" { return "" } - oCIlRating := oEC.Rating[oRatingUUID].Clone() // clone so we don't influence the original data - oCIlRating.TimingUUID = ec.Timings.GetUUIDWithSet(oEC.Timings[oCIlRating.TimingUUID]) - oCIlRating.RatingFiltersUUID = ec.RatingFilters.GetUUIDWithSet(oEC.RatingFilters[oCIlRating.RatingFiltersUUID]) - oCIlRating.RatesUUID = ec.Rates.GetUUIDWithSet(oEC.Rates[oCIlRating.RatesUUID]) - return ec.Rating.GetUUIDWithSet(oCIlRating) + oCIlRating := oEC.Rating[oRatingID].Clone() // clone so we don't influence the original data + oCIlRating.TimingID = ec.Timings.GetIDWithSet(oEC.Timings[oCIlRating.TimingID]) + oCIlRating.RatingFiltersID = ec.RatingFilters.GetIDWithSet(oEC.RatingFilters[oCIlRating.RatingFiltersID]) + oCIlRating.RatesID = ec.Rates.GetIDWithSet(oEC.Rates[oCIlRating.RatesID]) + return ec.Rating.GetIDWithSet(oCIlRating) } -// accountingGetUUIDFromEventCost retrieves UUID based on data from another EventCost -func (ec *EventCost) accountingGetUUIDFromEventCost(oEC *EventCost, oAccountingUUID string) string { - if oAccountingUUID == "" || oAccountingUUID == utils.META_NONE { +// accountingGetIDFromEventCost retrieves UUID based on data from another EventCost +func (ec *EventCost) accountingGetIDFromEventCost(oEC *EventCost, oAccountingID string) string { + if oAccountingID == "" || oAccountingID == utils.META_NONE { return "" } - oBC := oEC.Accounting[oAccountingUUID].Clone() - oBC.RatingUUID = ec.ratingGetUUIDFomEventCost(oEC, oBC.RatingUUID) - oBC.ExtraChargeUUID = ec.accountingGetUUIDFromEventCost(oEC, oBC.ExtraChargeUUID) - return ec.Accounting.GetUUIDWithSet(oBC) + oBC := oEC.Accounting[oAccountingID].Clone() + oBC.RatingID = ec.ratingGetIDFomEventCost(oEC, oBC.RatingID) + oBC.ExtraChargeID = ec.accountingGetIDFromEventCost(oEC, oBC.ExtraChargeID) + return ec.Accounting.GetIDWithSet(oBC) } // appendCIl appends a ChargingInterval to existing chargers, no compression done func (ec *EventCost) appendCIlFromEC(oEC *EventCost, cIlIdx int) { cIl := oEC.Charges[cIlIdx] - cIl.RatingUUID = ec.ratingGetUUIDFomEventCost(oEC, cIl.RatingUUID) + cIl.RatingID = ec.ratingGetIDFomEventCost(oEC, cIl.RatingID) for _, cIt := range cIl.Increments { - cIt.AccountingUUID = ec.accountingGetUUIDFromEventCost(oEC, cIt.AccountingUUID) + cIt.AccountingID = ec.accountingGetIDFromEventCost(oEC, cIt.AccountingID) } ec.Charges = append(ec.Charges, cIl) } @@ -358,18 +358,18 @@ func (ec *EventCost) Merge(ecs ...*EventCost) { // RemoveStaleReferences iterates through cached data and makes sure it is still referenced from Charging func (ec *EventCost) RemoveStaleReferences() { - // RatingUUIDs + // RatingIDs for key := range ec.Rating { var keyUsed bool for _, cIl := range ec.Charges { - if cIl.RatingUUID == key { + if cIl.RatingID == key { keyUsed = true break } } if !keyUsed { // look also in accounting for references for _, bc := range ec.Accounting { - if bc.RatingUUID == key { + if bc.RatingID == key { keyUsed = true break } @@ -383,7 +383,7 @@ func (ec *EventCost) RemoveStaleReferences() { var keyUsed bool for _, cIl := range ec.Charges { for _, cIt := range cIl.Increments { - if cIt.AccountingUUID == key { + if cIt.AccountingID == key { keyUsed = true break } @@ -396,7 +396,7 @@ func (ec *EventCost) RemoveStaleReferences() { for key := range ec.RatingFilters { var keyUsed bool for _, ru := range ec.Rating { - if ru.RatingFiltersUUID == key { + if ru.RatingFiltersID == key { keyUsed = true break } @@ -408,7 +408,7 @@ func (ec *EventCost) RemoveStaleReferences() { for key := range ec.Rates { var keyUsed bool for _, ru := range ec.Rating { - if ru.RatesUUID == key { + if ru.RatesID == key { keyUsed = true break } @@ -420,7 +420,7 @@ func (ec *EventCost) RemoveStaleReferences() { for key := range ec.Timings { var keyUsed bool for _, ru := range ec.Rating { - if ru.TimingUUID == key { + if ru.TimingID == key { keyUsed = true break } @@ -581,9 +581,9 @@ func (ec *EventCost) Trim(atUsage time.Duration) (srplusEC *EventCost, err error } // close surplus with missing cache for _, cIl := range srplusEC.Charges { - cIl.RatingUUID = srplusEC.ratingGetUUIDFomEventCost(ec, cIl.RatingUUID) + cIl.RatingID = srplusEC.ratingGetIDFomEventCost(ec, cIl.RatingID) for _, incr := range cIl.Increments { - incr.AccountingUUID = srplusEC.accountingGetUUIDFromEventCost(ec, incr.AccountingUUID) + incr.AccountingID = srplusEC.accountingGetIDFromEventCost(ec, incr.AccountingID) } } ec.RemoveStaleReferences() // data should be transfered by now, can clean the old one diff --git a/engine/eventcost_test.go b/engine/eventcost_test.go index 826e33029..de45c8f53 100644 --- a/engine/eventcost_test.go +++ b/engine/eventcost_test.go @@ -32,42 +32,42 @@ var testEC = &EventCost{ StartTime: time.Date(2017, 1, 9, 16, 18, 21, 0, time.UTC), Charges: []*ChargingInterval{ &ChargingInterval{ - RatingUUID: "c1a5ab9", + RatingID: "c1a5ab9", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(0), Cost: 0.1, - AccountingUUID: "9bdad10", + AccountingID: "9bdad10", CompressFactor: 1, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0, - AccountingUUID: "3455b83", + AccountingID: "3455b83", CompressFactor: 10, }, &ChargingIncrement{ Usage: time.Duration(10 * time.Second), Cost: 0.01, - AccountingUUID: "a012888", + AccountingID: "a012888", CompressFactor: 2, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.005, - AccountingUUID: "44d6c02", + AccountingID: "44d6c02", CompressFactor: 30, }, }, CompressFactor: 1, }, &ChargingInterval{ - RatingUUID: "c1a5ab9", + RatingID: "c1a5ab9", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.01, - AccountingUUID: "a012888", + AccountingID: "a012888", CompressFactor: 60, }, }, @@ -98,19 +98,19 @@ var testEC = &EventCost{ }, Rating: Rating{ "3cd6425": &RatingUnit{ - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "7f324ab", - RatesUUID: "4910ecf", - RatingFiltersUUID: "43e77dc", + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingID: "7f324ab", + RatesID: "4910ecf", + RatingFiltersID: "43e77dc", }, "c1a5ab9": &RatingUnit{ - ConnectFee: 0.1, - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "7f324ab", - RatesUUID: "ec1a177", - RatingFiltersUUID: "43e77dc", + ConnectFee: 0.1, + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingID: "7f324ab", + RatesID: "ec1a177", + RatingFiltersID: "43e77dc", }, }, Accounting: Accounting{ @@ -130,17 +130,17 @@ var testEC = &EventCost{ Units: 0.1, }, "44d6c02": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", - RatingUUID: "3cd6425", - Units: 1, - ExtraChargeUUID: "188bfa6", + AccountID: "cgrates.org:dan", + BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", + RatingID: "3cd6425", + Units: 1, + ExtraChargeID: "188bfa6", }, "3455b83": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", - Units: 1, - ExtraChargeUUID: "*none", + AccountID: "cgrates.org:dan", + BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", + Units: 1, + ExtraChargeID: "*none", }, }, RatingFilters: RatingFilters{ @@ -396,24 +396,24 @@ func TestNewEventCostFromCallCost(t *testing.T) { Usage: utils.DurationPointer(time.Duration(2 * time.Minute)), Charges: []*ChargingInterval{ &ChargingInterval{ - RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", + RatingID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(0), Cost: 0.1, - AccountingUUID: "44e97dec-8a7e-43d0-8b0a-736d46b5613e", + AccountingID: "44e97dec-8a7e-43d0-8b0a-736d46b5613e", CompressFactor: 1, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0, - AccountingUUID: "a555cde8-4bd0-408a-afbc-c3ba64888927", + AccountingID: "a555cde8-4bd0-408a-afbc-c3ba64888927", CompressFactor: 30, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.005, - AccountingUUID: "906bfd0f-035c-40a3-93a8-46f71627983e", + AccountingID: "906bfd0f-035c-40a3-93a8-46f71627983e", CompressFactor: 30, }, }, @@ -423,12 +423,12 @@ func TestNewEventCostFromCallCost(t *testing.T) { ecUsageIdx: utils.DurationPointer(time.Duration(0)), }, &ChargingInterval{ - RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", + RatingID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.01, - AccountingUUID: "c890a899-df43-497a-9979-38492713f57b", + AccountingID: "c890a899-df43-497a-9979-38492713f57b", CompressFactor: 60, }, }, @@ -440,19 +440,19 @@ func TestNewEventCostFromCallCost(t *testing.T) { }, Rating: Rating{ "4607d907-02c3-4f2b-bc08-95a0dcc7222c": &RatingUnit{ - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", - RatesUUID: "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4", - RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesID: "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4", + RatingFiltersID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", }, "f2518464-68b8-42f4-acec-aef23d714314": &RatingUnit{ - ConnectFee: 0.1, - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", - RatesUUID: "6504fb84-6b27-47a8-a1c6-c0d843959f89", - RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", + ConnectFee: 0.1, + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesID: "6504fb84-6b27-47a8-a1c6-c0d843959f89", + RatingFiltersID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", }, }, Accounting: Accounting{ @@ -472,17 +472,17 @@ func TestNewEventCostFromCallCost(t *testing.T) { Units: 0.1, }, "906bfd0f-035c-40a3-93a8-46f71627983e": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", - RatingUUID: "4607d907-02c3-4f2b-bc08-95a0dcc7222c", - Units: 1, - ExtraChargeUUID: "a894f8f1-206a-4457-99ce-df21a0c7fedc", + AccountID: "cgrates.org:dan", + BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", + RatingID: "4607d907-02c3-4f2b-bc08-95a0dcc7222c", + Units: 1, + ExtraChargeID: "a894f8f1-206a-4457-99ce-df21a0c7fedc", }, "a555cde8-4bd0-408a-afbc-c3ba64888927": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", - Units: 1, - ExtraChargeUUID: "*none", + AccountID: "cgrates.org:dan", + BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", + Units: 1, + ExtraChargeID: "*none", }, }, RatingFilters: RatingFilters{ @@ -537,17 +537,17 @@ func TestNewEventCostFromCallCost(t *testing.T) { // Make sure main rating is correct if cc.Timespans[i].RateInterval.Rating != nil && !reflect.DeepEqual(cc.Timespans[i].RateInterval.Rating.Rates, - ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) { + ec.Rates[ec.Rating[ec.Charges[i].RatingID].RatesID]) { t.Errorf("Index: %d, expecting: %s, received: %s", i, utils.ToJSON(cc.Timespans[i].RateInterval.Rating.Rates), - ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) + ec.Rates[ec.Rating[ec.Charges[i].RatingID].RatesID]) } // Make sure it matches also the expected rates - if !reflect.DeepEqual(eEC.Rates[eEC.Rating[eEC.Charges[i].RatingUUID].RatesUUID], - ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID]) { + if !reflect.DeepEqual(eEC.Rates[eEC.Rating[eEC.Charges[i].RatingID].RatesID], + ec.Rates[ec.Rating[ec.Charges[i].RatingID].RatesID]) { t.Errorf("Index: %d, expecting: %s, received: %s", i, - utils.ToJSON(eEC.Rates[eEC.Rating[eEC.Charges[i].RatingUUID].RatesUUID]), - utils.ToJSON(ec.Rates[ec.Rating[ec.Charges[i].RatingUUID].RatesUUID])) + utils.ToJSON(eEC.Rates[eEC.Rating[eEC.Charges[i].RatingID].RatesID]), + utils.ToJSON(ec.Rates[ec.Rating[ec.Charges[i].RatingID].RatesID])) } if len(eEC.Charges[i].Increments) != len(ec.Charges[i].Increments) { t.Errorf("Index %d, expecting: %+v, received: %+v", @@ -580,17 +580,17 @@ func TestNewEventCostFromCallCost(t *testing.T) { } // Compare to original timestamp if !reflect.DeepEqual(cc.Timespans[0].Increments[2].BalanceInfo.Unit.RateInterval.Rating.Rates, - ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingUUID].RatingUUID].RatesUUID]) { + ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingID].RatingID].RatesID]) { t.Errorf("Expecting: %s, received: %s", utils.ToJSON(cc.Timespans[0].Increments[2].BalanceInfo.Unit.RateInterval.Rating.Rates), - utils.ToJSON(ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingUUID].RatingUUID].RatesUUID])) + utils.ToJSON(ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingID].RatingID].RatesID])) } // Compare to expected EC - if !reflect.DeepEqual(eEC.Rates[eEC.Rating[eEC.Accounting[eEC.Charges[0].Increments[2].AccountingUUID].RatingUUID].RatesUUID], - ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingUUID].RatingUUID].RatesUUID]) { + if !reflect.DeepEqual(eEC.Rates[eEC.Rating[eEC.Accounting[eEC.Charges[0].Increments[2].AccountingID].RatingID].RatesID], + ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingID].RatingID].RatesID]) { t.Errorf("Expecting: %s, received: %s", - utils.ToJSON(eEC.Rates[eEC.Rating[eEC.Accounting[eEC.Charges[0].Increments[2].AccountingUUID].RatingUUID].RatesUUID]), - utils.ToJSON(ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingUUID].RatingUUID].RatesUUID])) + utils.ToJSON(eEC.Rates[eEC.Rating[eEC.Accounting[eEC.Charges[0].Increments[2].AccountingID].RatingID].RatesID]), + utils.ToJSON(ec.Rates[ec.Rating[ec.Accounting[ec.Charges[0].Increments[2].AccountingID].RatingID].RatesID])) } if len(ec.Accounting) != len(eEC.Accounting) { t.Errorf("Expecting: %+v, received: %+v", eEC, ec) @@ -637,36 +637,36 @@ func TestECAsCallCost(t *testing.T) { Usage: utils.DurationPointer(time.Duration(2 * time.Minute)), Charges: []*ChargingInterval{ &ChargingInterval{ - RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", + RatingID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(0), Cost: 0.1, - AccountingUUID: "44e97dec-8a7e-43d0-8b0a-736d46b5613e", + AccountingID: "44e97dec-8a7e-43d0-8b0a-736d46b5613e", CompressFactor: 1, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0, - AccountingUUID: "a555cde8-4bd0-408a-afbc-c3ba64888927", + AccountingID: "a555cde8-4bd0-408a-afbc-c3ba64888927", CompressFactor: 30, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.005, - AccountingUUID: "906bfd0f-035c-40a3-93a8-46f71627983e", + AccountingID: "906bfd0f-035c-40a3-93a8-46f71627983e", CompressFactor: 30, }, }, CompressFactor: 1, }, &ChargingInterval{ - RatingUUID: "f2518464-68b8-42f4-acec-aef23d714314", + RatingID: "f2518464-68b8-42f4-acec-aef23d714314", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.01, - AccountingUUID: "c890a899-df43-497a-9979-38492713f57b", + AccountingID: "c890a899-df43-497a-9979-38492713f57b", CompressFactor: 60, }, }, @@ -676,19 +676,19 @@ func TestECAsCallCost(t *testing.T) { AccountSummary: acntSummary, Rating: Rating{ "4607d907-02c3-4f2b-bc08-95a0dcc7222c": &RatingUnit{ - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", - RatesUUID: "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4", - RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesID: "e5eb0f1c-3612-4e8c-b749-7f8f41dd90d4", + RatingFiltersID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", }, "f2518464-68b8-42f4-acec-aef23d714314": &RatingUnit{ - ConnectFee: 0.1, - RoundingMethod: "*up", - RoundingDecimals: 5, - TimingUUID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", - RatesUUID: "6504fb84-6b27-47a8-a1c6-c0d843959f89", - RatingFiltersUUID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", + ConnectFee: 0.1, + RoundingMethod: "*up", + RoundingDecimals: 5, + TimingID: "27f1e5f8-05bb-4f1c-a596-bf1010ad296c", + RatesID: "6504fb84-6b27-47a8-a1c6-c0d843959f89", + RatingFiltersID: "7e73a00d-be53-4083-a1ee-8ee0b546c62a", }, }, Accounting: Accounting{ @@ -708,17 +708,17 @@ func TestECAsCallCost(t *testing.T) { Units: 0.1, }, "906bfd0f-035c-40a3-93a8-46f71627983e": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", - RatingUUID: "4607d907-02c3-4f2b-bc08-95a0dcc7222c", - Units: 1, - ExtraChargeUUID: "a894f8f1-206a-4457-99ce-df21a0c7fedc", + AccountID: "cgrates.org:dan", + BalanceUUID: "7a54a9e9-d610-4c82-bcb5-a315b9a65010", + RatingID: "4607d907-02c3-4f2b-bc08-95a0dcc7222c", + Units: 1, + ExtraChargeID: "a894f8f1-206a-4457-99ce-df21a0c7fedc", }, "a555cde8-4bd0-408a-afbc-c3ba64888927": &BalanceCharge{ - AccountID: "cgrates.org:dan", - BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", - Units: 1, - ExtraChargeUUID: "*none", + AccountID: "cgrates.org:dan", + BalanceUUID: "9d54a9e9-d610-4c82-bcb5-a315b9a65089", + Units: 1, + ExtraChargeID: "*none", }, }, RatingFilters: RatingFilters{ @@ -926,54 +926,54 @@ func TestECTrimMiddle1(t *testing.T) { eEC := testEC.Clone() eEC.Charges = []*ChargingInterval{ &ChargingInterval{ - RatingUUID: "c1a5ab9", + RatingID: "c1a5ab9", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(0), Cost: 0.1, - AccountingUUID: "9bdad10", + AccountingID: "9bdad10", CompressFactor: 1, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0, - AccountingUUID: "3455b83", + AccountingID: "3455b83", CompressFactor: 10, }, &ChargingIncrement{ Usage: time.Duration(10 * time.Second), Cost: 0.01, - AccountingUUID: "a012888", + AccountingID: "a012888", CompressFactor: 2, }, &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.005, - AccountingUUID: "44d6c02", + AccountingID: "44d6c02", CompressFactor: 30, }, }, CompressFactor: 1, }, &ChargingInterval{ - RatingUUID: "c1a5ab9", + RatingID: "c1a5ab9", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.01, - AccountingUUID: "a012888", + AccountingID: "a012888", CompressFactor: 60, }, }, CompressFactor: 2, }, &ChargingInterval{ - RatingUUID: "c1a5ab9", + RatingID: "c1a5ab9", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.01, - AccountingUUID: "a012888", + AccountingID: "a012888", CompressFactor: 10, }, }, @@ -983,24 +983,24 @@ func TestECTrimMiddle1(t *testing.T) { eSrplsEC := testEC.Clone() eSrplsEC.Charges = []*ChargingInterval{ &ChargingInterval{ - RatingUUID: "c1a5ab9", + RatingID: "c1a5ab9", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.01, - AccountingUUID: "a012888", + AccountingID: "a012888", CompressFactor: 50, }, }, CompressFactor: 1, }, &ChargingInterval{ - RatingUUID: "c1a5ab9", + RatingID: "c1a5ab9", Increments: []*ChargingIncrement{ &ChargingIncrement{ Usage: time.Duration(1 * time.Second), Cost: 0.01, - AccountingUUID: "a012888", + AccountingID: "a012888", CompressFactor: 60, }, }, @@ -1111,7 +1111,7 @@ func TestECMerge(t *testing.T) { newEC = &EventCost{ Charges: []*ChargingInterval{ &ChargingInterval{ - RatingUUID: testEC.Charges[1].RatingUUID, + RatingID: testEC.Charges[1].RatingID, Increments: testEC.Charges[1].Increments, CompressFactor: 1}}, AccountSummary: testEC.AccountSummary, diff --git a/engine/libeventcost.go b/engine/libeventcost.go index 92da672df..798d64792 100644 --- a/engine/libeventcost.go +++ b/engine/libeventcost.go @@ -26,7 +26,7 @@ import ( // ChargingInterval represents one interval out of Usage providing charging info // eg: PEAK vs OFFPEAK type ChargingInterval struct { - RatingUUID string // reference to RatingUnit + RatingID string // reference to RatingUnit Increments []*ChargingIncrement // specific increments applied to this interval CompressFactor int usage *time.Duration // cache usage computation for this interval @@ -37,7 +37,7 @@ type ChargingInterval struct { // PartiallyEquals does not compare CompressFactor, usefull for Merge func (cIl *ChargingInterval) PartiallyEquals(oCIl *ChargingInterval) (equals bool) { - if equals = cIl.RatingUUID == oCIl.RatingUUID && + if equals = cIl.RatingID == oCIl.RatingID && len(cIl.Increments) == len(oCIl.Increments); !equals { return } @@ -112,7 +112,7 @@ func (cIl *ChargingInterval) TotalCost() float64 { // Clone returns a new instance of ChargingInterval with independent data func (cIl *ChargingInterval) Clone() (cln *ChargingInterval) { cln = new(ChargingInterval) - cln.RatingUUID = cIl.RatingUUID + cln.RatingID = cIl.RatingID cln.CompressFactor = cIl.CompressFactor cln.Increments = make([]*ChargingIncrement, len(cIl.Increments)) for i, cIt := range cIl.Increments { @@ -125,14 +125,14 @@ func (cIl *ChargingInterval) Clone() (cln *ChargingInterval) { type ChargingIncrement struct { Usage time.Duration Cost float64 - AccountingUUID string + AccountingID string CompressFactor int } func (cIt *ChargingIncrement) Equals(oCIt *ChargingIncrement) bool { return cIt.Usage == oCIt.Usage && cIt.Cost == oCIt.Cost && - cIt.AccountingUUID == oCIt.AccountingUUID && + cIt.AccountingID == oCIt.AccountingID && cIt.CompressFactor == oCIt.CompressFactor } @@ -149,19 +149,19 @@ func (cIt *ChargingIncrement) TotalUsage() time.Duration { // BalanceCharge represents one unit charged to a balance type BalanceCharge struct { - AccountID string // keep reference for shared balances - BalanceUUID string // balance charged - RatingUUID string // special price applied on this balance - Units float64 // number of units charged - ExtraChargeUUID string // used in cases when paying *voice with *monetary + AccountID string // keep reference for shared balances + BalanceUUID string // balance charged + RatingID string // special price applied on this balance + Units float64 // number of units charged + ExtraChargeID string // used in cases when paying *voice with *monetary } func (bc *BalanceCharge) Equals(oBC *BalanceCharge) bool { return bc.AccountID == oBC.AccountID && bc.BalanceUUID == oBC.BalanceUUID && - bc.RatingUUID == oBC.RatingUUID && + bc.RatingID == oBC.RatingID && bc.Units == oBC.Units && - bc.ExtraChargeUUID == oBC.ExtraChargeUUID + bc.ExtraChargeID == oBC.ExtraChargeID } func (bc *BalanceCharge) Clone() *BalanceCharge { @@ -214,14 +214,14 @@ func (ct *ChargedTiming) Clone() (cln *ChargedTiming) { // RatingUnit represents one unit out of RatingPlan matching for an event type RatingUnit struct { - ConnectFee float64 - RoundingMethod string - RoundingDecimals int - MaxCost float64 - MaxCostStrategy string - TimingUUID string // This RatingUnit is bounded to specific timing profile - RatesUUID string - RatingFiltersUUID string + ConnectFee float64 + RoundingMethod string + RoundingDecimals int + MaxCost float64 + MaxCostStrategy string + TimingID string // This RatingUnit is bounded to specific timing profile + RatesID string + RatingFiltersID string } func (ru *RatingUnit) Equals(oRU *RatingUnit) bool { @@ -230,9 +230,9 @@ func (ru *RatingUnit) Equals(oRU *RatingUnit) bool { ru.RoundingDecimals == oRU.RoundingDecimals && ru.MaxCost == oRU.MaxCost && ru.MaxCostStrategy == oRU.MaxCostStrategy && - ru.TimingUUID == oRU.TimingUUID && - ru.RatesUUID == oRU.RatesUUID && - ru.RatingFiltersUUID == oRU.RatingFiltersUUID + ru.TimingID == oRU.TimingID && + ru.RatesID == oRU.RatesID && + ru.RatingFiltersID == oRU.RatingFiltersID } func (ru *RatingUnit) Clone() (cln *RatingUnit) { @@ -244,7 +244,7 @@ func (ru *RatingUnit) Clone() (cln *RatingUnit) { type RatingFilters map[string]RatingMatchedFilters // so we can define search methods // GetWithSet attempts to retrieve the UUID of a matching data or create a new one -func (rfs RatingFilters) GetUUIDWithSet(rmf RatingMatchedFilters) string { +func (rfs RatingFilters) GetIDWithSet(rmf RatingMatchedFilters) string { if rmf == nil || len(rmf) == 0 { return "" } @@ -269,8 +269,8 @@ func (rfs RatingFilters) Clone() (cln RatingFilters) { type Rating map[string]*RatingUnit -// GetUUIDWithSet attempts to retrieve the UUID of a matching data or create a new one -func (crus Rating) GetUUIDWithSet(cru *RatingUnit) string { +// GetIDWithSet attempts to retrieve the UUID of a matching data or create a new one +func (crus Rating) GetIDWithSet(cru *RatingUnit) string { if cru == nil { return "" } @@ -295,8 +295,8 @@ func (crus Rating) Clone() (cln Rating) { type ChargedRates map[string]RateGroups -// GetUUIDWithSet attempts to retrieve the UUID of a matching data or create a new one -func (crs ChargedRates) GetUUIDWithSet(rg RateGroups) string { +// GetIDWithSet attempts to retrieve the UUID of a matching data or create a new one +func (crs ChargedRates) GetIDWithSet(rg RateGroups) string { if rg == nil || len(rg) == 0 { return "" } @@ -321,8 +321,8 @@ func (crs ChargedRates) Clone() (cln ChargedRates) { type ChargedTimings map[string]*ChargedTiming -// GetUUIDWithSet attempts to retrieve the UUID of a matching data or create a new one -func (cts ChargedTimings) GetUUIDWithSet(ct *ChargedTiming) string { +// GetIDWithSet attempts to retrieve the UUID of a matching data or create a new one +func (cts ChargedTimings) GetIDWithSet(ct *ChargedTiming) string { if ct == nil { return "" } @@ -347,8 +347,8 @@ func (cts ChargedTimings) Clone() (cln ChargedTimings) { type Accounting map[string]*BalanceCharge -// GetUUIDWithSet attempts to retrieve the UUID of a matching data or create a new one -func (cbs Accounting) GetUUIDWithSet(cb *BalanceCharge) string { +// GetIDWithSet attempts to retrieve the UUID of a matching data or create a new one +func (cbs Accounting) GetIDWithSet(cb *BalanceCharge) string { if cb == nil { return "" }