mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
EventCost UUIDs -> IDs
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user