mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-23 08:08:45 +05:00
Logic to handle multiple derived charging run filters inside mediator and session manager
This commit is contained in:
@@ -839,10 +839,13 @@ func (csvr *CSVReader) LoadDerivedChargers() (err error) {
|
||||
for record, err := csvReader.Read(); err == nil; record, err = csvReader.Read() {
|
||||
tag := utils.DerivedChargersKey(record[0], record[1], record[2], record[3], record[4])
|
||||
_, found := csvr.derivedChargers[tag]
|
||||
if _, err = utils.ParseRSRFields(record[6], utils.INFIELD_SEP); err != nil { // Make sure rules are OK before loading in db
|
||||
return err
|
||||
}
|
||||
if found {
|
||||
if csvr.derivedChargers[tag], err = csvr.derivedChargers[tag].Append(&utils.DerivedCharger{
|
||||
RunId: ValueOrDefault(record[5], "*default"),
|
||||
RunFilter: record[6],
|
||||
RunFilters: record[6],
|
||||
ReqTypeField: ValueOrDefault(record[7], "*default"),
|
||||
DirectionField: ValueOrDefault(record[8], "*default"),
|
||||
TenantField: ValueOrDefault(record[9], "*default"),
|
||||
@@ -862,7 +865,7 @@ func (csvr *CSVReader) LoadDerivedChargers() (err error) {
|
||||
}
|
||||
csvr.derivedChargers[tag] = utils.DerivedChargers{&utils.DerivedCharger{
|
||||
RunId: ValueOrDefault(record[5], "*default"),
|
||||
RunFilter: record[6],
|
||||
RunFilters: record[6],
|
||||
ReqTypeField: ValueOrDefault(record[7], "*default"),
|
||||
DirectionField: ValueOrDefault(record[8], "*default"),
|
||||
TenantField: ValueOrDefault(record[9], "*default"),
|
||||
|
||||
@@ -178,7 +178,7 @@ vdf,emptyY,*out,TOPUP_EMPTY_AT,
|
||||
|
||||
derivedCharges = `
|
||||
#Direction,Tenant,Category,Account,Subject,RunId,RunFilter,ReqTypeField,DirectionField,TenantField,TorField,AccountField,SubjectField,DestinationField,SetupTimeField,AnswerTimeField,UsageField
|
||||
*out,cgrates.org,call,dan,dan,extra1,^filteredHeader1/filterValue1,^prepaid,,,,rif,rif,,,,
|
||||
*out,cgrates.org,call,dan,dan,extra1,^filteredHeader1/filterValue1/,^prepaid,,,,rif,rif,,,,
|
||||
*out,cgrates.org,call,dan,dan,extra2,,,,,,ivo,ivo,,,,
|
||||
*out,cgrates.org,call,dan,*any,extra1,,,,,,rif2,rif2,,,,
|
||||
`
|
||||
@@ -932,8 +932,8 @@ func TestLoadDerivedChargers(t *testing.T) {
|
||||
t.Error("Failed to load derivedChargers: ", csvr.derivedChargers)
|
||||
}
|
||||
expCharger1 := utils.DerivedChargers{
|
||||
&utils.DerivedCharger{RunId: "extra1", RunFilter: "^filteredHeader1/filterValue1", ReqTypeField: "^prepaid", DirectionField: "*default", TenantField: "*default",
|
||||
CategoryField: "*default", AccountField: "rif", SubjectField: "rif", DestinationField: "*default",
|
||||
&utils.DerivedCharger{RunId: "extra1", RunFilters: "^filteredHeader1/filterValue1/", ReqTypeField: "^prepaid", DirectionField: "*default",
|
||||
TenantField: "*default", CategoryField: "*default", AccountField: "rif", SubjectField: "rif", DestinationField: "*default",
|
||||
SetupTimeField: "*default", AnswerTimeField: "*default", UsageField: "*default"},
|
||||
&utils.DerivedCharger{RunId: "extra2", ReqTypeField: "*default", DirectionField: "*default", TenantField: "*default", CategoryField: "*default",
|
||||
AccountField: "ivo", SubjectField: "ivo", DestinationField: "*default", SetupTimeField: "*default", AnswerTimeField: "*default", UsageField: "*default"},
|
||||
|
||||
Reference in New Issue
Block a user