[RouteS] Add new field RouteRateProfileIDs in RateProfiles.csv

This commit is contained in:
TeoV
2020-11-18 14:25:11 +02:00
committed by Dan Christian Bogos
parent 27fce31f8b
commit d10cc4b4c3
16 changed files with 95 additions and 72 deletions

View File

@@ -256,11 +256,11 @@ cgrates.org,FLTR_DST_DE,*destinations,~*req.Destination,DST_DE,2014-07-29T15:00:
cgrates.org,FLTR_DST_NL,*destinations,~*req.Destination,DST_NL,2014-07-29T15:00:00Z
`
RoutesCSVContent = `
#Tenant[0],ID[1],FilterIDs[2],ActivationInterval[3],Sorting[4],SortingParameters[5],RouteID[6],RouteFilterIDs[7],RouteAccountIDs[8],RouteRatingPlanIDs[9],RouteResourceIDs[10],RouteStatIDs[11],RouteWeight[12],RouteBlocker[13],RouteParameters[14],Weight[15]
cgrates.org,RoutePrf1,*string:~*req.Account:dan,2014-07-29T15:00:00Z,*lc,,route1,FLTR_ACNT_dan,Account1;Account1_1,RPL_1,ResGroup1,Stat1,10,true,param1,20
cgrates.org,RoutePrf1,,,,,route1,,,RPL_2,ResGroup2,,10,,,
cgrates.org,RoutePrf1,,,,,route1,FLTR_DST_DE,Account2,RPL_3,ResGroup3,Stat2,10,,,
cgrates.org,RoutePrf1,,,,,route1,,,,ResGroup4,Stat3,10,,,
#Tenant[0],ID[1],FilterIDs[2],ActivationInterval[3],Sorting[4],SortingParameters[5],RouteID[6],RouteFilterIDs[7],RouteAccountIDs[8],RouteRatingPlanIDs[9],RouteRateProfileIDs[10],RouteResourceIDs[11],RouteStatIDs[12],RouteWeight[13],RouteBlocker[14],RouteParameters[15],Weight[16]
cgrates.org,RoutePrf1,*string:~*req.Account:dan,2014-07-29T15:00:00Z,*lc,,route1,FLTR_ACNT_dan,Account1;Account1_1,RPL_1,,ResGroup1,Stat1,10,true,param1,20
cgrates.org,RoutePrf1,,,,,route1,,,RPL_2,,ResGroup2,,10,,,
cgrates.org,RoutePrf1,,,,,route1,FLTR_DST_DE,Account2,RPL_3,RT_ALWAYS,ResGroup3,Stat2,10,,,
cgrates.org,RoutePrf1,,,,,route1,,,,,ResGroup4,Stat3,10,,,
`
AttributesCSVContent = `
#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight

View File

@@ -1271,6 +1271,7 @@ func TestLoadRouteProfiles(t *testing.T) {
FilterIDs: []string{"FLTR_DST_DE"},
AccountIDs: []string{"Account2"},
RatingPlanIDs: []string{"RPL_3"},
RateProfileIDs: []string{"RT_ALWAYS"},
ResourceIDs: []string{"ResGroup3"},
StatIDs: []string{"Stat2"},
Weight: 10,

View File

@@ -1901,7 +1901,7 @@ type TPRoutes []*TpRoute
func (tps TPRoutes) CSVHeader() (result []string) {
return []string{"#" + utils.Tenant, utils.ID, utils.FilterIDs, utils.ActivationIntervalString,
utils.Sorting, utils.SortingParameters, utils.RouteID, utils.RouteFilterIDs,
utils.RouteAccountIDs, utils.RouteRatingplanIDs, utils.RouteResourceIDs,
utils.RouteAccountIDs, utils.RouteRatingplanIDs, utils.RouteRateProfileIDs, utils.RouteResourceIDs,
utils.RouteStatIDs, utils.RouteWeight, utils.RouteBlocker,
utils.RouteParameters, utils.Weight,
}
@@ -1949,6 +1949,10 @@ func (tps TPRoutes) AsTPRouteProfile() (result []*utils.TPRouteProfile) {
ratingPlanSplit := strings.Split(tp.RouteRatingplanIDs, utils.INFIELD_SEP)
sup.RatingPlanIDs = append(sup.RatingPlanIDs, ratingPlanSplit...)
}
if tp.RouteRateProfileIDs != utils.EmptyString {
rateProfileSplit := strings.Split(tp.RouteRateProfileIDs, utils.INFIELD_SEP)
sup.RateProfileIDs = append(sup.RateProfileIDs, rateProfileSplit...)
}
if tp.RouteResourceIDs != utils.EmptyString {
resSplit := strings.Split(tp.RouteResourceIDs, utils.INFIELD_SEP)
sup.ResourceIDs = append(sup.ResourceIDs, resSplit...)
@@ -2064,6 +2068,12 @@ func APItoModelTPRoutes(st *utils.TPRouteProfile) (mdls TPRoutes) {
}
mdl.RouteRatingplanIDs += val
}
for i, val := range supl.RateProfileIDs {
if i != 0 {
mdl.RouteRateProfileIDs += utils.INFIELD_SEP
}
mdl.RouteRateProfileIDs += val
}
for i, val := range supl.FilterIDs {
if i != 0 {
mdl.RouteFilterIDs += utils.INFIELD_SEP
@@ -2117,6 +2127,7 @@ func APItoRouteProfile(tpRp *utils.TPRouteProfile, timezone string) (rp *RoutePr
Weight: route.Weight,
Blocker: route.Blocker,
RatingPlanIDs: route.RatingPlanIDs,
RateProfileIDs: route.RateProfileIDs,
AccountIDs: route.AccountIDs,
FilterIDs: route.FilterIDs,
ResourceIDs: route.ResourceIDs,
@@ -2145,6 +2156,7 @@ func RouteProfileToAPI(rp *RouteProfile) (tpRp *utils.TPRouteProfile) {
FilterIDs: route.FilterIDs,
AccountIDs: route.AccountIDs,
RatingPlanIDs: route.RatingPlanIDs,
RateProfileIDs: route.RateProfileIDs,
ResourceIDs: route.ResourceIDs,
StatIDs: route.StatIDs,
Weight: route.Weight,

View File

@@ -2831,7 +2831,7 @@ func TestCsvHeader(t *testing.T) {
eOut := []string{
"#" + utils.Tenant, utils.ID, utils.FilterIDs, utils.ActivationIntervalString,
utils.Sorting, utils.SortingParameters, utils.RouteID, utils.RouteFilterIDs,
utils.RouteAccountIDs, utils.RouteRatingplanIDs, utils.RouteResourceIDs,
utils.RouteAccountIDs, utils.RouteRatingplanIDs, utils.RouteRateProfileIDs, utils.RouteResourceIDs,
utils.RouteStatIDs, utils.RouteWeight, utils.RouteBlocker,
utils.RouteParameters, utils.Weight,
}

View File

@@ -349,25 +349,26 @@ func (t TBLVersion) TableName() string {
}
type TpRoute struct {
PK uint `gorm:"primary_key"`
Tpid string
Tenant string `index:"0" re:""`
ID string `index:"1" re:""`
FilterIDs string `index:"2" re:""`
ActivationInterval string `index:"3" re:""`
Sorting string `index:"4" re:""`
SortingParameters string `index:"5" re:""`
RouteID string `index:"6" re:""`
RouteFilterIDs string `index:"7" re:""`
RouteAccountIDs string `index:"8" re:""`
RouteRatingplanIDs string `index:"9" re:""`
RouteResourceIDs string `index:"10" re:""`
RouteStatIDs string `index:"11" re:""`
RouteWeight float64 `index:"12" re:"\d+\.?\d*"`
RouteBlocker bool `index:"13" re:""`
RouteParameters string `index:"14" re:""`
Weight float64 `index:"15" re:"\d+\.?\d*"`
CreatedAt time.Time
PK uint `gorm:"primary_key"`
Tpid string
Tenant string `index:"0" re:""`
ID string `index:"1" re:""`
FilterIDs string `index:"2" re:""`
ActivationInterval string `index:"3" re:""`
Sorting string `index:"4" re:""`
SortingParameters string `index:"5" re:""`
RouteID string `index:"6" re:""`
RouteFilterIDs string `index:"7" re:""`
RouteAccountIDs string `index:"8" re:""`
RouteRatingplanIDs string `index:"9" re:""`
RouteRateProfileIDs string `index:"10" re:""`
RouteResourceIDs string `index:"11" re:""`
RouteStatIDs string `index:"12" re:""`
RouteWeight float64 `index:"13" re:"\d+\.?\d*"`
RouteBlocker bool `index:"14" re:""`
RouteParameters string `index:"15" re:""`
Weight float64 `index:"16" re:"\d+\.?\d*"`
CreatedAt time.Time
}
type TPAttribute struct {

View File

@@ -35,6 +35,7 @@ type Route struct {
FilterIDs []string
AccountIDs []string
RatingPlanIDs []string // used when computing price
RateProfileIDs []string // used when computing price
ResourceIDs []string // queried in some strategies
StatIDs []string // queried in some strategies
Weight float64
@@ -285,15 +286,7 @@ func (rpS *RouteService) costForEvent(ev *utils.CGREvent,
utils.OptsRatesStartTime: sTime,
utils.OptsRatesUsage: usage,
},
CGREvent: &utils.CGREvent{ // add the rest of the field in event
Tenant: ev.Tenant,
ID: utils.UUIDSha1Prefix(),
Event: map[string]interface{}{
utils.Account: acnt,
utils.Subject: subj,
utils.Destination: dst,
},
},
CGREvent: ev,
},
}, &rateRply); err != nil {
return nil, err