Update EC.FieldAsInterface to use Charging for referencing rating/accounting

ChargingID is expected to have either *rating or *accounting prefix.
This commit is contained in:
ionutboangiu
2023-12-22 13:49:14 -05:00
committed by Dan Christian Bogos
parent 37578d3743
commit 75cf4a75cc
3 changed files with 289 additions and 277 deletions

View File

@@ -285,6 +285,7 @@ const (
ConfigPath = "/etc/cgrates/"
DisconnectCause = "DisconnectCause"
MetaRating = "*rating"
MetaAccounting = "*accounting"
NotAvailable = "N/A"
Call = "call"
ExtraFields = "ExtraFields"
@@ -509,6 +510,7 @@ const (
AccountSummary = "AccountSummary"
RatingFilters = "RatingFilters"
RatingFilter = "RatingFilter"
Charging = "Charging"
Accounting = "Accounting"
Rating = "Rating"
Charges = "Charges"

View File

@@ -21,6 +21,7 @@ package utils
import (
"fmt"
"slices"
"strings"
)
// NewEventChargers instantiates the EventChargers in a central place
@@ -566,13 +567,22 @@ func (ec *EventCharges) getChargesForPath(fldPath []string, chr *ChargeEntry) (v
if len(fldPath) == 0 {
return chr, nil
}
switch fldPath[0] {
case Rating:
return ec.getRatingForPath(fldPath[1:], ec.Rating[chr.ChargingID])
case Accounting:
return ec.getAccountingForPath(fldPath[1:], ec.Accounting[chr.ChargingID])
if fldPath[0] != Charging {
return chr.FieldAsInterface(fldPath)
}
return chr.FieldAsInterface(fldPath)
chargingType, chargingID, sepFound := strings.Cut(chr.ChargingID, InInFieldSep)
if !sepFound {
return nil, fmt.Errorf("expected ChargingID format '*accounting:*' or '*rating:*', got '%s'", chr.ChargingID)
}
// Handle different charging types.
switch chargingType {
case MetaRating:
return ec.getRatingForPath(fldPath[1:], ec.Rating[chargingID])
case MetaAccounting:
return ec.getAccountingForPath(fldPath[1:], ec.Accounting[chargingID])
}
return nil, fmt.Errorf("unsupported field prefix: <%s>", fldPath[0])
}
func (ec *EventCharges) getAccountingForPath(fldPath []string, accCharge *AccountCharge) (val any, err error) {

View File

@@ -2039,11 +2039,11 @@ func TestEventChargesFieldAsInterface(t *testing.T) {
Abstracts: &Decimal{decimal.New(145, 1)},
Charges: []*ChargeEntry{
{
ChargingID: "accounting1",
ChargingID: "*accounting:accounting1",
CompressFactor: 1,
},
{
ChargingID: "rating1",
ChargingID: "*rating:rating1",
CompressFactor: 2,
},
},
@@ -2320,17 +2320,17 @@ func TestEventChargesFieldAsInterface(t *testing.T) {
{
name: "Charges",
fields: []string{"Charges"},
exp: `[{"ChargingID":"accounting1","CompressFactor":1},{"ChargingID":"rating1","CompressFactor":2}]`,
exp: `[{"ChargingID":"*accounting:accounting1","CompressFactor":1},{"ChargingID":"*rating:rating1","CompressFactor":2}]`,
},
{
name: "Charges[1]",
fields: []string{"Charges[1]"},
exp: `{"ChargingID":"rating1","CompressFactor":2}`,
exp: `{"ChargingID":"*rating:rating1","CompressFactor":2}`,
},
{
name: "Charges[1].ChargingID",
fields: []string{"Charges[1]", "ChargingID"},
exp: "rating1",
exp: "*rating:rating1",
},
{
name: "Charges[1].CompressFactor",
@@ -2338,668 +2338,668 @@ func TestEventChargesFieldAsInterface(t *testing.T) {
exp: "2",
},
{
name: "Charges[0].Accounting",
fields: []string{"Charges[0]", "Accounting"},
name: "Charges[0].Charging",
fields: []string{"Charges[0]", "Charging"},
exp: `{"AccountID":"acc1","BalanceID":"balance1","Units":10,"BalanceLimit":0,"UnitFactorID":"unit_factor1","AttributeIDs":["attr1","attr2"],"RatingID":"rating2","JoinedChargeIDs":["joined_charge"]}`,
},
{
name: "Charges[0].Accounting.AccountID",
fields: []string{"Charges[0]", "Accounting", "AccountID"},
name: "Charges[0].Charging.AccountID",
fields: []string{"Charges[0]", "Charging", "AccountID"},
exp: "acc1",
},
{
name: "Charges[0].Accounting.BalanceID",
fields: []string{"Charges[0]", "Accounting", "BalanceID"},
name: "Charges[0].Charging.BalanceID",
fields: []string{"Charges[0]", "Charging", "BalanceID"},
exp: "balance1",
},
{
name: "Charges[0].Accounting.Units",
fields: []string{"Charges[0]", "Accounting", "Units"},
name: "Charges[0].Charging.Units",
fields: []string{"Charges[0]", "Charging", "Units"},
exp: "10",
},
{
name: "Charges[0].Accounting.BalanceLimit",
fields: []string{"Charges[0]", "Accounting", "BalanceLimit"},
name: "Charges[0].Charging.BalanceLimit",
fields: []string{"Charges[0]", "Charging", "BalanceLimit"},
exp: "0",
},
{
name: "Charges[0].Accounting.UnitFactorID",
fields: []string{"Charges[0]", "Accounting", "UnitFactorID"},
name: "Charges[0].Charging.UnitFactorID",
fields: []string{"Charges[0]", "Charging", "UnitFactorID"},
exp: "unit_factor1",
},
{
name: "Charges[0].Accounting.AttributeIDs",
fields: []string{"Charges[0]", "Accounting", "AttributeIDs"},
name: "Charges[0].Charging.AttributeIDs",
fields: []string{"Charges[0]", "Charging", "AttributeIDs"},
exp: `["attr1","attr2"]`,
},
{
name: "Charges[0].Accounting.AttributeIDs[1]",
fields: []string{"Charges[0]", "Accounting", "AttributeIDs[1]"},
name: "Charges[0].Charging.AttributeIDs[1]",
fields: []string{"Charges[0]", "Charging", "AttributeIDs[1]"},
exp: "attr2",
},
{
name: "Charges[0].Accounting.RatingID",
fields: []string{"Charges[0]", "Accounting", "RatingID"},
name: "Charges[0].Charging.RatingID",
fields: []string{"Charges[0]", "Charging", "RatingID"},
exp: "rating2",
},
{
name: "Charges[0].Accounting.JoinedChargeIDs",
fields: []string{"Charges[0]", "Accounting", "JoinedChargeIDs"},
name: "Charges[0].Charging.JoinedChargeIDs",
fields: []string{"Charges[0]", "Charging", "JoinedChargeIDs"},
exp: `["joined_charge"]`,
},
{
name: "Charges[0].Accounting.JoinedChargeIDs[0]",
fields: []string{"Charges[0]", "Accounting", "JoinedChargeIDs[0]"},
name: "Charges[0].Charging.JoinedChargeIDs[0]",
fields: []string{"Charges[0]", "Charging", "JoinedChargeIDs[0]"},
exp: "joined_charge",
},
{
name: "Charges[0].Accounting.Account",
fields: []string{"Charges[0]", "Accounting", "Account"},
name: "Charges[0].Charging.Account",
fields: []string{"Charges[0]", "Charging", "Account"},
exp: `{"Tenant":"cgrates.org","ID":"acc1","FilterIDs":["fltr1"],"Weights":[{"FilterIDs":["fltr2"],"Weight":10}],"Blockers":[{"FilterIDs":["fltr3"],"Blocker":true}],"Opts":{"opt1":"value1"},"Balances":{"balance1":{"ID":"balance1","FilterIDs":["fltr4"],"Weights":[{"FilterIDs":["fltr3"],"Weight":20}],"Blockers":[{"FilterIDs":["fltr3"],"Blocker":true}],"Type":"*monetary","Units":1,"UnitFactors":[{"FilterIDs":["fltr1","fltr2"],"Factor":2}],"Opts":{"opt1":"value1"},"CostIncrements":[{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}],"AttributeIDs":["attr1"],"RateProfileIDs":["rate_prf1"]},"balance2":{"ID":"balance2","FilterIDs":["fltr3"],"Weights":[{"FilterIDs":["fltr5"],"Weight":20}],"Blockers":[{"FilterIDs":["fltr5"],"Blocker":true}],"Type":"*voice","Units":5,"UnitFactors":[{"FilterIDs":["fltr3","fltr4"],"Factor":1}],"Opts":{"opts1":"value1"},"CostIncrements":[{"FilterIDs":["fltr2"],"Increment":1,"FixedFee":2,"RecurrentFee":3}],"AttributeIDs":["attr2"],"RateProfileIDs":["rate_prf2"]}},"ThresholdIDs":null}`,
},
{
name: "Charges[0].Accounting.Account.Tenant",
fields: []string{"Charges[0]", "Accounting", "Account", "Tenant"},
name: "Charges[0].Charging.Account.Tenant",
fields: []string{"Charges[0]", "Charging", "Account", "Tenant"},
exp: "cgrates.org",
},
{
name: "Charges[0].Accounting.Account.FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "FilterIDs"},
name: "Charges[0].Charging.Account.FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "FilterIDs"},
exp: `["fltr1"]`,
},
{
name: "Charges[0].Accounting.Account.FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "FilterIDs[0]"},
name: "Charges[0].Charging.Account.FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "FilterIDs[0]"},
exp: "fltr1",
},
{
name: "Charges[0].Accounting.Account.ID",
fields: []string{"Charges[0]", "Accounting", "Account", "ID"},
name: "Charges[0].Charging.Account.ID",
fields: []string{"Charges[0]", "Charging", "Account", "ID"},
exp: "acc1",
},
{
name: "Charges[0].Accounting.Account.Weights",
fields: []string{"Charges[0]", "Accounting", "Account", "Weights"},
name: "Charges[0].Charging.Account.Weights",
fields: []string{"Charges[0]", "Charging", "Account", "Weights"},
exp: "fltr2;10",
},
{
name: "Charges[0].Accounting.Account.Weights[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Weights[0]"},
name: "Charges[0].Charging.Account.Weights[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Weights[0]"},
exp: `{"FilterIDs":["fltr2"],"Weight":10}`,
},
{
name: "Charges[0].Accounting.Account.Weights[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Weights[0]", "FilterIDs"},
name: "Charges[0].Charging.Account.Weights[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Weights[0]", "FilterIDs"},
exp: `["fltr2"]`,
},
{
name: "Charges[0].Accounting.Account.Weights[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Weights[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Account.Weights[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Weights[0]", "FilterIDs[0]"},
exp: "fltr2",
},
{
name: "Charges[0].Accounting.Account.Weights[0].Weight",
fields: []string{"Charges[0]", "Accounting", "Account", "Weights[0]", "Weight"},
name: "Charges[0].Charging.Account.Weights[0].Weight",
fields: []string{"Charges[0]", "Charging", "Account", "Weights[0]", "Weight"},
exp: "10",
},
{
name: "Charges[0].Accounting.Account.Blockers",
fields: []string{"Charges[0]", "Accounting", "Account", "Blockers"},
name: "Charges[0].Charging.Account.Blockers",
fields: []string{"Charges[0]", "Charging", "Account", "Blockers"},
exp: "fltr3;true",
},
{
name: "Charges[0].Accounting.Account.Blockers[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Blockers[0]"},
name: "Charges[0].Charging.Account.Blockers[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Blockers[0]"},
exp: `{"FilterIDs":["fltr3"],"Blocker":true}`,
},
{
name: "Charges[0].Accounting.Account.Blockers[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Blockers[0]", "FilterIDs"},
name: "Charges[0].Charging.Account.Blockers[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Blockers[0]", "FilterIDs"},
exp: `["fltr3"]`,
},
{
name: "Charges[0].Accounting.Account.Blockers[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Blockers[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Account.Blockers[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Blockers[0]", "FilterIDs[0]"},
exp: "fltr3",
},
{
name: "Charges[0].Accounting.Account.Blockers[0].Blocker",
fields: []string{"Charges[0]", "Accounting", "Account", "Blockers[0]", "Blocker"},
name: "Charges[0].Charging.Account.Blockers[0].Blocker",
fields: []string{"Charges[0]", "Charging", "Account", "Blockers[0]", "Blocker"},
exp: "true",
},
{
name: "Charges[0].Accounting.Account.Opts",
fields: []string{"Charges[0]", "Accounting", "Account", "Opts"},
name: "Charges[0].Charging.Account.Opts",
fields: []string{"Charges[0]", "Charging", "Account", "Opts"},
exp: `{"opt1":"value1"}`,
},
{
name: "Charges[0].Accounting.Account.Opts.opt1",
fields: []string{"Charges[0]", "Accounting", "Account", "Opts", "opt1"},
name: "Charges[0].Charging.Account.Opts.opt1",
fields: []string{"Charges[0]", "Charging", "Account", "Opts", "opt1"},
exp: "value1",
},
{
name: "Charges[0].Accounting.Account.Balances",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances"},
name: "Charges[0].Charging.Account.Balances",
fields: []string{"Charges[0]", "Charging", "Account", "Balances"},
exp: `{"balance1":{"ID":"balance1","FilterIDs":["fltr4"],"Weights":[{"FilterIDs":["fltr3"],"Weight":20}],"Blockers":[{"FilterIDs":["fltr3"],"Blocker":true}],"Type":"*monetary","Units":1,"UnitFactors":[{"FilterIDs":["fltr1","fltr2"],"Factor":2}],"Opts":{"opt1":"value1"},"CostIncrements":[{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}],"AttributeIDs":["attr1"],"RateProfileIDs":["rate_prf1"]},"balance2":{"ID":"balance2","FilterIDs":["fltr3"],"Weights":[{"FilterIDs":["fltr5"],"Weight":20}],"Blockers":[{"FilterIDs":["fltr5"],"Blocker":true}],"Type":"*voice","Units":5,"UnitFactors":[{"FilterIDs":["fltr3","fltr4"],"Factor":1}],"Opts":{"opts1":"value1"},"CostIncrements":[{"FilterIDs":["fltr2"],"Increment":1,"FixedFee":2,"RecurrentFee":3}],"AttributeIDs":["attr2"],"RateProfileIDs":["rate_prf2"]}}`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1"},
name: "Charges[0].Charging.Account.Balances.balance1",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1"},
exp: `{"ID":"balance1","FilterIDs":["fltr4"],"Weights":[{"FilterIDs":["fltr3"],"Weight":20}],"Blockers":[{"FilterIDs":["fltr3"],"Blocker":true}],"Type":"*monetary","Units":1,"UnitFactors":[{"FilterIDs":["fltr1","fltr2"],"Factor":2}],"Opts":{"opt1":"value1"},"CostIncrements":[{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}],"AttributeIDs":["attr1"],"RateProfileIDs":["rate_prf1"]}`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.ID",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "ID"},
name: "Charges[0].Charging.Account.Balances.balance1.ID",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "ID"},
exp: "balance1",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "FilterIDs"},
name: "Charges[0].Charging.Account.Balances.balance1.FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "FilterIDs"},
exp: `["fltr4"]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "FilterIDs[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "FilterIDs[0]"},
exp: "fltr4",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Weights",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Weights"},
name: "Charges[0].Charging.Account.Balances.balance1.Weights",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Weights"},
exp: "fltr3;20",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Weights[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Weights[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.Weights[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Weights[0]"},
exp: `{"FilterIDs":["fltr3"],"Weight":20}`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Weights[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Weights[0]", "FilterIDs"},
name: "Charges[0].Charging.Account.Balances.balance1.Weights[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Weights[0]", "FilterIDs"},
exp: `["fltr3"]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Weights[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Weights[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.Weights[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Weights[0]", "FilterIDs[0]"},
exp: "fltr3",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Weights[0].Weight",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Weights[0]", "Weight"},
name: "Charges[0].Charging.Account.Balances.balance1.Weights[0].Weight",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Weights[0]", "Weight"},
exp: "20",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Blockers",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Blockers"},
name: "Charges[0].Charging.Account.Balances.balance1.Blockers",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Blockers"},
exp: "fltr3;true",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Blockers[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Blockers[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.Blockers[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Blockers[0]"},
exp: `{"FilterIDs":["fltr3"],"Blocker":true}`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Blockers[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Blockers[0]", "FilterIDs"},
name: "Charges[0].Charging.Account.Balances.balance1.Blockers[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Blockers[0]", "FilterIDs"},
exp: `["fltr3"]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Blockers[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Blockers[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.Blockers[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Blockers[0]", "FilterIDs[0]"},
exp: "fltr3",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Blockers[0].Blocker",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Blockers[0]", "Blocker"},
name: "Charges[0].Charging.Account.Balances.balance1.Blockers[0].Blocker",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Blockers[0]", "Blocker"},
exp: "true",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Type",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Type"},
name: "Charges[0].Charging.Account.Balances.balance1.Type",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Type"},
exp: MetaMonetary,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Units",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Units"},
name: "Charges[0].Charging.Account.Balances.balance1.Units",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Units"},
exp: "1",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.UnitFactors",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "UnitFactors"},
name: "Charges[0].Charging.Account.Balances.balance1.UnitFactors",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "UnitFactors"},
exp: `[{"FilterIDs":["fltr1","fltr2"],"Factor":2}]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.UnitFactors[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "UnitFactors[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.UnitFactors[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "UnitFactors[0]"},
exp: `{"FilterIDs":["fltr1","fltr2"],"Factor":2}`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.UnitFactors[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "UnitFactors[0]", "FilterIDs"},
name: "Charges[0].Charging.Account.Balances.balance1.UnitFactors[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "UnitFactors[0]", "FilterIDs"},
exp: `["fltr1","fltr2"]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.UnitFactors[0].FilterIDs[1]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "UnitFactors[0]", "FilterIDs[1]"},
name: "Charges[0].Charging.Account.Balances.balance1.UnitFactors[0].FilterIDs[1]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "UnitFactors[0]", "FilterIDs[1]"},
exp: "fltr2",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.UnitFactors[0].Factor",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "UnitFactors[0]", "Factor"},
name: "Charges[0].Charging.Account.Balances.balance1.UnitFactors[0].Factor",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "UnitFactors[0]", "Factor"},
exp: "2",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Opts",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Opts"},
name: "Charges[0].Charging.Account.Balances.balance1.Opts",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Opts"},
exp: `{"opt1":"value1"}`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.Opts.opt1",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "Opts", "opt1"},
name: "Charges[0].Charging.Account.Balances.balance1.Opts.opt1",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "Opts", "opt1"},
exp: "value1",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.CostIncrements",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "CostIncrements"},
name: "Charges[0].Charging.Account.Balances.balance1.CostIncrements",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "CostIncrements"},
exp: `[{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.CostIncrements[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "CostIncrements[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.CostIncrements[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "CostIncrements[0]"},
exp: `{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.CostIncrements[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "CostIncrements[0]", "FilterIDs"},
name: "Charges[0].Charging.Account.Balances.balance1.CostIncrements[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "CostIncrements[0]", "FilterIDs"},
exp: `["fltr3"]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.CostIncrements[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "CostIncrements[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.CostIncrements[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "CostIncrements[0]", "FilterIDs[0]"},
exp: "fltr3",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.CostIncrements[0].Increment",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "CostIncrements[0]", "Increment"},
name: "Charges[0].Charging.Account.Balances.balance1.CostIncrements[0].Increment",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "CostIncrements[0]", "Increment"},
exp: "3",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.CostIncrements[0].FixedFee",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "CostIncrements[0]", "FixedFee"},
name: "Charges[0].Charging.Account.Balances.balance1.CostIncrements[0].FixedFee",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "CostIncrements[0]", "FixedFee"},
exp: "1",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.CostIncrements[0].RecurrentFee",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "CostIncrements[0]", "RecurrentFee"},
name: "Charges[0].Charging.Account.Balances.balance1.CostIncrements[0].RecurrentFee",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "CostIncrements[0]", "RecurrentFee"},
exp: "2",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.AttributeIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "AttributeIDs"},
name: "Charges[0].Charging.Account.Balances.balance1.AttributeIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "AttributeIDs"},
exp: `["attr1"]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.AttributeIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "AttributeIDs[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.AttributeIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "AttributeIDs[0]"},
exp: "attr1",
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.RateProfileIDs",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "RateProfileIDs"},
name: "Charges[0].Charging.Account.Balances.balance1.RateProfileIDs",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "RateProfileIDs"},
exp: `["rate_prf1"]`,
},
{
name: "Charges[0].Accounting.Account.Balances.balance1.RateProfileIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Account", "Balances", "balance1", "RateProfileIDs[0]"},
name: "Charges[0].Charging.Account.Balances.balance1.RateProfileIDs[0]",
fields: []string{"Charges[0]", "Charging", "Account", "Balances", "balance1", "RateProfileIDs[0]"},
exp: "rate_prf1",
},
{
name: "Charges[0].Accounting.Balance",
fields: []string{"Charges[0]", "Accounting", "Balance"},
name: "Charges[0].Charging.Balance",
fields: []string{"Charges[0]", "Charging", "Balance"},
exp: `{"ID":"balance1","FilterIDs":["fltr4"],"Weights":[{"FilterIDs":["fltr3"],"Weight":20}],"Blockers":[{"FilterIDs":["fltr3"],"Blocker":true}],"Type":"*monetary","Units":1,"UnitFactors":[{"FilterIDs":["fltr1","fltr2"],"Factor":2}],"Opts":{"opt1":"value1"},"CostIncrements":[{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}],"AttributeIDs":["attr1"],"RateProfileIDs":["rate_prf1"]}`,
},
{
name: "Charges[0].Accounting.Balance.ID",
fields: []string{"Charges[0]", "Accounting", "Balance", "ID"},
name: "Charges[0].Charging.Balance.ID",
fields: []string{"Charges[0]", "Charging", "Balance", "ID"},
exp: "balance1",
},
{
name: "Charges[0].Accounting.Balance.FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Balance", "FilterIDs"},
name: "Charges[0].Charging.Balance.FilterIDs",
fields: []string{"Charges[0]", "Charging", "Balance", "FilterIDs"},
exp: `["fltr4"]`,
},
{
name: "Charges[0].Accounting.Balance.FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "FilterIDs[0]"},
name: "Charges[0].Charging.Balance.FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "FilterIDs[0]"},
exp: "fltr4",
},
{
name: "Charges[0].Accounting.Balance.Weights",
fields: []string{"Charges[0]", "Accounting", "Balance", "Weights"},
name: "Charges[0].Charging.Balance.Weights",
fields: []string{"Charges[0]", "Charging", "Balance", "Weights"},
exp: "fltr3;20",
},
{
name: "Charges[0].Accounting.Balance.Weights[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "Weights[0]"},
name: "Charges[0].Charging.Balance.Weights[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "Weights[0]"},
exp: `{"FilterIDs":["fltr3"],"Weight":20}`,
},
{
name: "Charges[0].Accounting.Balance.Weights[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Balance", "Weights[0]", "FilterIDs"},
name: "Charges[0].Charging.Balance.Weights[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Balance", "Weights[0]", "FilterIDs"},
exp: `["fltr3"]`,
},
{
name: "Charges[0].Accounting.Balance.Weights[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "Weights[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Balance.Weights[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "Weights[0]", "FilterIDs[0]"},
exp: "fltr3",
},
{
name: "Charges[0].Accounting.Balance.Weights[0].Weight",
fields: []string{"Charges[0]", "Accounting", "Balance", "Weights[0]", "Weight"},
name: "Charges[0].Charging.Balance.Weights[0].Weight",
fields: []string{"Charges[0]", "Charging", "Balance", "Weights[0]", "Weight"},
exp: "20",
},
{
name: "Charges[0].Accounting.Balance.Blockers",
fields: []string{"Charges[0]", "Accounting", "Balance", "Blockers"},
name: "Charges[0].Charging.Balance.Blockers",
fields: []string{"Charges[0]", "Charging", "Balance", "Blockers"},
exp: "fltr3;true",
},
{
name: "Charges[0].Accounting.Balance.Blockers[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "Blockers[0]"},
name: "Charges[0].Charging.Balance.Blockers[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "Blockers[0]"},
exp: `{"FilterIDs":["fltr3"],"Blocker":true}`,
},
{
name: "Charges[0].Accounting.Balance.Blockers[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Balance", "Blockers[0]", "FilterIDs"},
name: "Charges[0].Charging.Balance.Blockers[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Balance", "Blockers[0]", "FilterIDs"},
exp: `["fltr3"]`,
},
{
name: "Charges[0].Accounting.Balance.Blockers[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "Blockers[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Balance.Blockers[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "Blockers[0]", "FilterIDs[0]"},
exp: "fltr3",
},
{
name: "Charges[0].Accounting.Balance.Blockers[0].Blocker",
fields: []string{"Charges[0]", "Accounting", "Balance", "Blockers[0]", "Blocker"},
name: "Charges[0].Charging.Balance.Blockers[0].Blocker",
fields: []string{"Charges[0]", "Charging", "Balance", "Blockers[0]", "Blocker"},
exp: "true",
},
{
name: "Charges[0].Accounting.Balance.Type",
fields: []string{"Charges[0]", "Accounting", "Balance", "Type"},
name: "Charges[0].Charging.Balance.Type",
fields: []string{"Charges[0]", "Charging", "Balance", "Type"},
exp: MetaMonetary,
},
{
name: "Charges[0].Accounting.Balance.Units",
fields: []string{"Charges[0]", "Accounting", "Balance", "Units"},
name: "Charges[0].Charging.Balance.Units",
fields: []string{"Charges[0]", "Charging", "Balance", "Units"},
exp: "1",
},
{
name: "Charges[0].Accounting.Balance.UnitFactors",
fields: []string{"Charges[0]", "Accounting", "Balance", "UnitFactors"},
name: "Charges[0].Charging.Balance.UnitFactors",
fields: []string{"Charges[0]", "Charging", "Balance", "UnitFactors"},
exp: `[{"FilterIDs":["fltr1","fltr2"],"Factor":2}]`,
},
{
name: "Charges[0].Accounting.Balance.UnitFactors[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "UnitFactors[0]"},
name: "Charges[0].Charging.Balance.UnitFactors[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "UnitFactors[0]"},
exp: `{"FilterIDs":["fltr1","fltr2"],"Factor":2}`,
},
{
name: "Charges[0].Accounting.Balance.UnitFactors[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Balance", "UnitFactors[0]", "FilterIDs"},
name: "Charges[0].Charging.Balance.UnitFactors[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Balance", "UnitFactors[0]", "FilterIDs"},
exp: `["fltr1","fltr2"]`,
},
{
name: "Charges[0].Accounting.Balance.UnitFactors[0].FilterIDs[1]",
fields: []string{"Charges[0]", "Accounting", "Balance", "UnitFactors[0]", "FilterIDs[1]"},
name: "Charges[0].Charging.Balance.UnitFactors[0].FilterIDs[1]",
fields: []string{"Charges[0]", "Charging", "Balance", "UnitFactors[0]", "FilterIDs[1]"},
exp: "fltr2",
},
{
name: "Charges[0].Accounting.Balance.UnitFactors[0].Factor",
fields: []string{"Charges[0]", "Accounting", "Balance", "UnitFactors[0]", "Factor"},
name: "Charges[0].Charging.Balance.UnitFactors[0].Factor",
fields: []string{"Charges[0]", "Charging", "Balance", "UnitFactors[0]", "Factor"},
exp: "2",
},
{
name: "Charges[0].Accounting.Balance.Opts",
fields: []string{"Charges[0]", "Accounting", "Balance", "Opts"},
name: "Charges[0].Charging.Balance.Opts",
fields: []string{"Charges[0]", "Charging", "Balance", "Opts"},
exp: `{"opt1":"value1"}`,
},
{
name: "Charges[0].Accounting.Balance.Opts.opt1",
fields: []string{"Charges[0]", "Accounting", "Balance", "Opts", "opt1"},
name: "Charges[0].Charging.Balance.Opts.opt1",
fields: []string{"Charges[0]", "Charging", "Balance", "Opts", "opt1"},
exp: "value1",
},
{
name: "Charges[0].Accounting.Balance.CostIncrements",
fields: []string{"Charges[0]", "Accounting", "Balance", "CostIncrements"},
name: "Charges[0].Charging.Balance.CostIncrements",
fields: []string{"Charges[0]", "Charging", "Balance", "CostIncrements"},
exp: `[{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}]`,
},
{
name: "Charges[0].Accounting.Balance.CostIncrements[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "CostIncrements[0]"},
name: "Charges[0].Charging.Balance.CostIncrements[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "CostIncrements[0]"},
exp: `{"FilterIDs":["fltr3"],"Increment":3,"FixedFee":1,"RecurrentFee":2}`,
},
{
name: "Charges[0].Accounting.Balance.CostIncrements[0].FilterIDs",
fields: []string{"Charges[0]", "Accounting", "Balance", "CostIncrements[0]", "FilterIDs"},
name: "Charges[0].Charging.Balance.CostIncrements[0].FilterIDs",
fields: []string{"Charges[0]", "Charging", "Balance", "CostIncrements[0]", "FilterIDs"},
exp: `["fltr3"]`,
},
{
name: "Charges[0].Accounting.Balance.CostIncrements[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "CostIncrements[0]", "FilterIDs[0]"},
name: "Charges[0].Charging.Balance.CostIncrements[0].FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "CostIncrements[0]", "FilterIDs[0]"},
exp: "fltr3",
},
{
name: "Charges[0].Accounting.Balance.CostIncrements[0].Increment",
fields: []string{"Charges[0]", "Accounting", "Balance", "CostIncrements[0]", "Increment"},
name: "Charges[0].Charging.Balance.CostIncrements[0].Increment",
fields: []string{"Charges[0]", "Charging", "Balance", "CostIncrements[0]", "Increment"},
exp: "3",
},
{
name: "Charges[0].Accounting.Balance.CostIncrements[0].FixedFee",
fields: []string{"Charges[0]", "Accounting", "Balance", "CostIncrements[0]", "FixedFee"},
name: "Charges[0].Charging.Balance.CostIncrements[0].FixedFee",
fields: []string{"Charges[0]", "Charging", "Balance", "CostIncrements[0]", "FixedFee"},
exp: "1",
},
{
name: "Charges[0].Accounting.Balance.CostIncrements[0].RecurrentFee",
fields: []string{"Charges[0]", "Accounting", "Balance", "CostIncrements[0]", "RecurrentFee"},
name: "Charges[0].Charging.Balance.CostIncrements[0].RecurrentFee",
fields: []string{"Charges[0]", "Charging", "Balance", "CostIncrements[0]", "RecurrentFee"},
exp: "2",
},
{
name: "Charges[0].Accounting.Balance.AttributeIDs",
fields: []string{"Charges[0]", "Accounting", "Balance", "AttributeIDs"},
name: "Charges[0].Charging.Balance.AttributeIDs",
fields: []string{"Charges[0]", "Charging", "Balance", "AttributeIDs"},
exp: `["attr1"]`,
},
{
name: "Charges[0].Accounting.Balance.AttributeIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "AttributeIDs[0]"},
name: "Charges[0].Charging.Balance.AttributeIDs[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "AttributeIDs[0]"},
exp: "attr1",
},
{
name: "Charges[0].Accounting.Balance.RateProfileIDs",
fields: []string{"Charges[0]", "Accounting", "Balance", "RateProfileIDs"},
name: "Charges[0].Charging.Balance.RateProfileIDs",
fields: []string{"Charges[0]", "Charging", "Balance", "RateProfileIDs"},
exp: `["rate_prf1"]`,
},
{
name: "Charges[0].Accounting.Balance.RateProfileIDs[0]",
fields: []string{"Charges[0]", "Accounting", "Balance", "RateProfileIDs[0]"},
name: "Charges[0].Charging.Balance.RateProfileIDs[0]",
fields: []string{"Charges[0]", "Charging", "Balance", "RateProfileIDs[0]"},
exp: "rate_prf1",
},
{
name: "Charges[0].Accounting.UnitFactor",
fields: []string{"Charges[0]", "Accounting", "UnitFactor"},
name: "Charges[0].Charging.UnitFactor",
fields: []string{"Charges[0]", "Charging", "UnitFactor"},
exp: `{"FilterIDs":["fltr1","fltr2"],"Factor":2}`,
},
{
name: "Charges[0].Accounting.UnitFactor.FilterIDs",
fields: []string{"Charges[0]", "Accounting", "UnitFactor", "FilterIDs"},
name: "Charges[0].Charging.UnitFactor.FilterIDs",
fields: []string{"Charges[0]", "Charging", "UnitFactor", "FilterIDs"},
exp: `["fltr1","fltr2"]`,
},
{
name: "Charges[0].Accounting.UnitFactor.FilterIDs[0]",
fields: []string{"Charges[0]", "Accounting", "UnitFactor", "FilterIDs[0]"},
name: "Charges[0].Charging.UnitFactor.FilterIDs[0]",
fields: []string{"Charges[0]", "Charging", "UnitFactor", "FilterIDs[0]"},
exp: "fltr1",
},
{
name: "Charges[0].Accounting.UnitFactor.Factor",
fields: []string{"Charges[0]", "Accounting", "UnitFactor", "Factor"},
name: "Charges[0].Charging.UnitFactor.Factor",
fields: []string{"Charges[0]", "Charging", "UnitFactor", "Factor"},
exp: "2",
},
{
name: "Charges[0].Accounting.Rating",
fields: []string{"Charges[0]", "Accounting", "Rating"},
name: "Charges[0].Charging.Rating",
fields: []string{"Charges[0]", "Charging", "Rating"},
exp: `{"IntervalStart":5,"Increments":[{"IncrementStart":9,"RateIntervalIndex":3,"RateID":"rate1","CompressFactor":1,"Usage":10}],"CompressFactor":3}`,
},
{
name: "Charges[0].Accounting.Rating.IntervalStart",
fields: []string{"Charges[0]", "Accounting", "Rating", "IntervalStart"},
name: "Charges[0].Charging.Rating.IntervalStart",
fields: []string{"Charges[0]", "Charging", "Rating", "IntervalStart"},
exp: "5",
},
{
name: "Charges[0].Accounting.Rating.Increments",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments"},
name: "Charges[0].Charging.Rating.Increments",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments"},
exp: `[{"IncrementStart":9,"RateIntervalIndex":3,"RateID":"rate1","CompressFactor":1,"Usage":10}]`,
},
{
name: "Charges[0].Accounting.Rating.Increments[0]",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]"},
name: "Charges[0].Charging.Rating.Increments[0]",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]"},
exp: `{"IncrementStart":9,"RateIntervalIndex":3,"RateID":"rate1","CompressFactor":1,"Usage":10}`,
},
{
name: "Charges[0].Accounting.Rating.Increments[0].IncrementStart",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "IncrementStart"},
name: "Charges[0].Charging.Rating.Increments[0].IncrementStart",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "IncrementStart"},
exp: "9",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].RateIntervalIndex",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "RateIntervalIndex"},
name: "Charges[0].Charging.Rating.Increments[0].RateIntervalIndex",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "RateIntervalIndex"},
exp: "3",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].RateID",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "RateID"},
name: "Charges[0].Charging.Rating.Increments[0].RateID",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "RateID"},
exp: "rate1",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].CompressFactor",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "CompressFactor"},
name: "Charges[0].Charging.Rating.Increments[0].CompressFactor",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "CompressFactor"},
exp: "1",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].Usage",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "Usage"},
name: "Charges[0].Charging.Rating.Increments[0].Usage",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "Usage"},
exp: "10",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].Rate",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "Rate"},
name: "Charges[0].Charging.Rating.Increments[0].Rate",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "Rate"},
exp: `{"IntervalStart":1,"FixedFee":2,"RecurrentFee":3,"Unit":4,"Increment":5}`,
},
{
name: "Charges[0].Accounting.Rating.Increments[0].Rate.IntervalStart",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "Rate", "IntervalStart"},
name: "Charges[0].Charging.Rating.Increments[0].Rate.IntervalStart",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "Rate", "IntervalStart"},
exp: "1",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].Rate.FixedFee",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "Rate", "FixedFee"},
name: "Charges[0].Charging.Rating.Increments[0].Rate.FixedFee",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "Rate", "FixedFee"},
exp: "2",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].Rate.RecurrentFee",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "Rate", "RecurrentFee"},
name: "Charges[0].Charging.Rating.Increments[0].Rate.RecurrentFee",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "Rate", "RecurrentFee"},
exp: "3",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].Rate.Unit",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "Rate", "Unit"},
name: "Charges[0].Charging.Rating.Increments[0].Rate.Unit",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "Rate", "Unit"},
exp: "4",
},
{
name: "Charges[0].Accounting.Rating.Increments[0].Rate.Increment",
fields: []string{"Charges[0]", "Accounting", "Rating", "Increments[0]", "Rate", "Increment"},
name: "Charges[0].Charging.Rating.Increments[0].Rate.Increment",
fields: []string{"Charges[0]", "Charging", "Rating", "Increments[0]", "Rate", "Increment"},
exp: "5",
},
{
name: "Charges[0].Accounting.Rating.CompressFactor",
fields: []string{"Charges[0]", "Accounting", "Rating", "CompressFactor"},
name: "Charges[0].Charging.Rating.CompressFactor",
fields: []string{"Charges[0]", "Charging", "Rating", "CompressFactor"},
exp: "3",
},
{
name: "Charges[1].Rating",
fields: []string{"Charges[1]", "Rating"},
name: "Charges[1].Charging",
fields: []string{"Charges[1]", "Charging"},
exp: `{"IntervalStart":4,"Increments":[{"IncrementStart":5,"RateIntervalIndex":1,"RateID":"rate1","CompressFactor":1,"Usage":6},{"IncrementStart":7,"RateIntervalIndex":2,"RateID":"rate2","CompressFactor":1,"Usage":8}],"CompressFactor":3}`,
},
{
name: "Charges[1].Rating.IntervalStart",
fields: []string{"Charges[1]", "Rating", "IntervalStart"},
name: "Charges[1].Charging.IntervalStart",
fields: []string{"Charges[1]", "Charging", "IntervalStart"},
exp: "4",
},
{
name: "Charges[1].Rating.Increments",
fields: []string{"Charges[1]", "Rating", "Increments"},
name: "Charges[1].Charging.Increments",
fields: []string{"Charges[1]", "Charging", "Increments"},
exp: `[{"IncrementStart":5,"RateIntervalIndex":1,"RateID":"rate1","CompressFactor":1,"Usage":6},{"IncrementStart":7,"RateIntervalIndex":2,"RateID":"rate2","CompressFactor":1,"Usage":8}]`,
},
{
name: "Charges[1].Rating.Increments[1]",
fields: []string{"Charges[1]", "Rating", "Increments[1]"},
name: "Charges[1].Charging.Increments[1]",
fields: []string{"Charges[1]", "Charging", "Increments[1]"},
exp: `{"IncrementStart":7,"RateIntervalIndex":2,"RateID":"rate2","CompressFactor":1,"Usage":8}`,
},
{
name: "Charges[1].Rating.Increments[1].IncrementStart",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "IncrementStart"},
name: "Charges[1].Charging.Increments[1].IncrementStart",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "IncrementStart"},
exp: "7",
},
{
name: "Charges[1].Rating.Increments[1].RateIntervalIndex",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "RateIntervalIndex"},
name: "Charges[1].Charging.Increments[1].RateIntervalIndex",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "RateIntervalIndex"},
exp: "2",
},
{
name: "Charges[1].Rating.Increments[1].RateID",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "RateID"},
name: "Charges[1].Charging.Increments[1].RateID",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "RateID"},
exp: "rate2",
},
{
name: "Charges[1].Rating.Increments[1].CompressFactor",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "CompressFactor"},
name: "Charges[1].Charging.Increments[1].CompressFactor",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "CompressFactor"},
exp: "1",
},
{
name: "Charges[1].Rating.Increments[1].Usage",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "Usage"},
name: "Charges[1].Charging.Increments[1].Usage",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "Usage"},
exp: "8",
},
{
name: "Charges[1].Rating.Increments[1].Rate",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "Rate"},
name: "Charges[1].Charging.Increments[1].Rate",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "Rate"},
exp: `{"IntervalStart":6,"FixedFee":7,"RecurrentFee":8,"Unit":9,"Increment":10}`,
},
{
name: "Charges[1].Rating.Increments[1].Rate.IntervalStart",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "Rate", "IntervalStart"},
name: "Charges[1].Charging.Increments[1].Rate.IntervalStart",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "Rate", "IntervalStart"},
exp: "6",
},
{
name: "Charges[1].Rating.Increments[1].Rate.FixedFee",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "Rate", "FixedFee"},
name: "Charges[1].Charging.Increments[1].Rate.FixedFee",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "Rate", "FixedFee"},
exp: "7",
},
{
name: "Charges[1].Rating.Increments[1].Rate.RecurrentFee",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "Rate", "RecurrentFee"},
name: "Charges[1].Charging.Increments[1].Rate.RecurrentFee",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "Rate", "RecurrentFee"},
exp: "8",
},
{
name: "Charges[1].Rating.Increments[1].Rate.Unit",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "Rate", "Unit"},
name: "Charges[1].Charging.Increments[1].Rate.Unit",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "Rate", "Unit"},
exp: "9",
},
{
name: "Charges[1].Rating.Increments[1].Rate.Increment",
fields: []string{"Charges[1]", "Rating", "Increments[1]", "Rate", "Increment"},
name: "Charges[1].Charging.Increments[1].Rate.Increment",
fields: []string{"Charges[1]", "Charging", "Increments[1]", "Rate", "Increment"},
exp: "10",
},
{
name: "Charges[1].Rating.CompressFactor",
fields: []string{"Charges[1]", "Rating", "CompressFactor"},
name: "Charges[1].Charging.CompressFactor",
fields: []string{"Charges[1]", "Charging", "CompressFactor"},
exp: "3",
},
}