Finished removing timings

This commit is contained in:
andronache
2021-05-17 16:00:09 +03:00
committed by Dan Christian Bogos
parent 7671c0cb5e
commit 1cd52b4e81
15 changed files with 29 additions and 267 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,62 +0,0 @@
/*
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
Copyright (C) ITsysCOM GmbH
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package console
import "github.com/cgrates/cgrates/utils"
func init() {
c := &CmdSetDestination{
name: "destination_set",
}
commands[c.Name()] = c
c.CommandExecuter = &CommandExecuter{c}
}
// Commander implementation
type CmdSetDestination struct {
name string
rpcMethod string
rpcParams *utils.AttrSetDestination
rpcResult string
*CommandExecuter
}
func (self *CmdSetDestination) Name() string {
return self.name
}
func (self *CmdSetDestination) RpcMethod() string {
return self.rpcMethod
}
func (self *CmdSetDestination) RpcParams(reset bool) interface{} {
if reset || self.rpcParams == nil {
self.rpcParams = &utils.AttrSetDestination{}
}
return self.rpcParams
}
func (self *CmdSetDestination) PostprocessRpcParams() error {
return nil
}
func (self *CmdSetDestination) RpcResult() interface{} {
var s string
return &s
}

View File

@@ -1,67 +0,0 @@
/*
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
Copyright (C) ITsysCOM GmbH
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package console
/*
import (
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/utils"
)
func init() {
c := &CmdGetDestination{
name: "destinations",
rpcMethod: utils.APIerSv2GetDestinations,
}
commands[c.Name()] = c
c.CommandExecuter = &CommandExecuter{c}
}
// Commander implementation
type CmdGetDestination struct {
name string
rpcMethod string
rpcParams *v2.AttrGetDestinations
*CommandExecuter
}
func (self *CmdGetDestination) Name() string {
return self.name
}
func (self *CmdGetDestination) RpcMethod() string {
return self.rpcMethod
}
func (self *CmdGetDestination) RpcParams(reset bool) interface{} {
if reset || self.rpcParams == nil {
self.rpcParams = &v2.AttrGetDestinations{}
}
return self.rpcParams
}
func (self *CmdGetDestination) PostprocessRpcParams() error {
return nil
}
func (self *CmdGetDestination) RpcResult() interface{} {
a := make([]*engine.Destination, 0)
return &a
}
*/

View File

@@ -259,8 +259,7 @@
// "*accounts": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false}, // for account storing
// // internal storDB tabels
// "*session_costs": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},
// "*cdrs": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},
// "*tp_timings":{"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},
// "*cdrs": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},
// "*tp_rates": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},
// "*tp_destination_rates": {"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},
// "*tp_rating_plans":{"limit": -1, "ttl": "", "static_ttl": false, "replicate": false},

View File

@@ -1,16 +1,16 @@
#ActionsId[0],Action[1],ExtraParameters[2],Filter[3],BalanceId[4],BalanceType[5],Categories[6],DestinationIds[7],RatingSubject[8],SharedGroup[9],ExpiryTime[10],TimingIds[11],Units[12],BalanceWeight[13],BalanceBlocker[14],BalanceDisabled[15],Weight[16]
PREPAID_10,*topup,,,,*monetary,,*any,,,*unlimited,,10,10,false,false,20
BONUS_3,*topup,,,,*monetary,,*any,,,*unlimited,,3,10,false,false,10
LOG_BALANCE,*log,,,,,,,,,,,,,false,false,10
CDRST_WARN_HTTP,*http_post,http://localhost:8080,,,,,,,,,,,,false,false,10
#ActionsId[0],Action[1],ExtraParameters[2],Filter[3],BalanceId[4],BalanceType[5],Categories[6],DestinationIds[7],RatingSubject[8],SharedGroup[9],ExpiryTime[10],Units[11],BalanceWeight[12],BalanceBlocker[13],BalanceDisabled[14],Weight[15]
PREPAID_10,*topup,,,,*monetary,,*any,,,*unlimited,10,10,false,false,20
BONUS_3,*topup,,,,*monetary,,*any,,,*unlimited,3,10,false,false,10
LOG_BALANCE,*log,,,,,,,,,,,,false,false,10
CDRST_WARN_HTTP,*http_post,http://localhost:8080,,,,,,,,,,,false,false,10
CDRST_LOG,*log,,,,,,,,,,,,,false,false,10
TOPUP_EXE,*topup,,,,*monetary,,*any,,,*unlimited,,5,10,false,false,10
TOPUP_DATA_r,*topup,,,,*monetary,,DATA_DEST,,,*unlimited,,5000000,10,false,false,10
TOPUP_DATA_r,*topup,,,,*data,,DATA_DEST,datar,,*unlimited,,50000000000,10,false,false,10
TOPUP_VOICE,*topup,,,,*voice,,GERMANY_MOBILE,,,*unlimited,,50000,10,false,false,10
TOPUP_NEG,*topup,,,,*voice,,GERMANY;!GERMANY_MOBILE,*zero1m,,*unlimited,,100,10,false,false,10
RPC,*cgr_rpc,"{""Address"": ""localhost:2013"",""Transport"":""*gob"",""Method"":""APIerSv2.SetAccount"",""Attempts"":1,""Async"" :false,""Params"":{""Account"":""rpc"",""Tenant"":""cgrates.org""}}",,,,,,,,,,,,,,
DID,*debit,,,,*monetary,,*any,,,*unlimited,*any,"{""Method"":""*incremental"",""Params"":{""Units"":1, ""Interval"":""month"",""Increment"":""day""}}",10.0,,,10.0
DID,*cdrlog,"{""action"":""^DID"",""prev_balance"":""BalanceValue""}",,,*monetary,,*any,,,*unlimited,,,10.0,,,10.0
RPC_DEST,*cgr_rpc,"{""Address"": ""localhost:2013"",""Transport"":""*gob"",""Method"":""APIerSv2.SetDestination"",""Attempts"":1,""Async"" :false,""Params"":{""Id"":""<<.Account.GetID>>"",""Prefixes"":[""1"",""2"",""3""]}}",,,,,,,,,,,,,,
RPC_CDRSTATS,*cgr_rpc,"{""Address"": ""localhost:2013"",""Transport"":""*gob"",""Method"":""CDRStatsV1.AddQueue"",""Attempts"":1,""Async"" :false,""Params"":{""Id"":""qtest""}}",,,,,,,,,,,,,,
TOPUP_EXE,*topup,,,,*monetary,,*any,,,*unlimited,5,10,false,false,10
TOPUP_DATA_r,*topup,,,,*monetary,,DATA_DEST,,,*unlimited,5000000,10,false,false,10
TOPUP_DATA_r,*topup,,,,*data,,DATA_DEST,datar,,*unlimited,50000000000,10,false,false,10
TOPUP_VOICE,*topup,,,,*voice,,GERMANY_MOBILE,,,*unlimited,50000,10,false,false,10
TOPUP_NEG,*topup,,,,*voice,,GERMANY;!GERMANY_MOBILE,*zero1m,,*unlimited,100,10,false,false,10
RPC,*cgr_rpc,"{""Address"": ""localhost:2013"",""Transport"":""*gob"",""Method"":""APIerSv2.SetAccount"",""Attempts"":1,""Async"" :false,""Params"":{""Account"":""rpc"",""Tenant"":""cgrates.org""}}",,,,,,,,,,,,,
DID,*debit,,,,*monetary,,*any,,,*unlimited,"{""Method"":""*incremental"",""Params"":{""Units"":1, ""Interval"":""month"",""Increment"":""day""}}",10.0,,,10.0
DID,*cdrlog,"{""action"":""^DID"",""prev_balance"":""BalanceValue""}",,,*monetary,,*any,,,*unlimited,,,10.0,,10.0
RPC_DEST,*cgr_rpc,"{""Address"": ""localhost:2013"",""Transport"":""*gob"",""Method"":""APIerSv2.SetDestination"",""Attempts"":1,""Async"" :false,""Params"":{""Id"":""<<.Account.GetID>>"",""Prefixes"":[""1"",""2"",""3""]}}",,,,,,,,,,,,,
RPC_CDRSTATS,*cgr_rpc,"{""Address"": ""localhost:2013"",""Transport"":""*gob"",""Method"":""CDRStatsV1.AddQueue"",""Attempts"":1,""Async"" :false,""Params"":{""Id"":""qtest""}}",,,,,,,,,,,,,
1 #ActionsId[0] Action[1] ExtraParameters[2] Filter[3] BalanceId[4] BalanceType[5] Categories[6] DestinationIds[7] RatingSubject[8] SharedGroup[9] ExpiryTime[10] TimingIds[11] Units[12] Units[11] BalanceWeight[13] BalanceWeight[12] BalanceBlocker[14] BalanceBlocker[13] BalanceDisabled[15] BalanceDisabled[14] Weight[16] Weight[15]
2 PREPAID_10 *topup *monetary *any *unlimited 10 10 false false 20
3 BONUS_3 *topup *monetary *any *unlimited 3 10 false false 10
4 LOG_BALANCE *log false false 10
5 CDRST_WARN_HTTP *http_post http://localhost:8080 false false 10
6 CDRST_LOG *log false false 10 false
7 TOPUP_EXE *topup *monetary *any *unlimited 5 10 false false 10
8 TOPUP_DATA_r *topup *monetary DATA_DEST *unlimited 5000000 10 false false 10
9 TOPUP_DATA_r *topup *data DATA_DEST datar *unlimited 50000000000 10 false false 10
10 TOPUP_VOICE *topup *voice GERMANY_MOBILE *unlimited 50000 10 false false 10
11 TOPUP_NEG *topup *voice GERMANY;!GERMANY_MOBILE *zero1m *unlimited 100 10 false false 10
12 RPC *cgr_rpc {"Address": "localhost:2013","Transport":"*gob","Method":"APIerSv2.SetAccount","Attempts":1,"Async" :false,"Params":{"Account":"rpc","Tenant":"cgrates.org"}}
13 DID *debit *monetary *any *unlimited *any {"Method":"*incremental","Params":{"Units":1, "Interval":"month","Increment":"day"}} 10.0 10.0
14 DID *cdrlog {"action":"^DID","prev_balance":"BalanceValue"} *monetary *any *unlimited 10.0 10.0 10.0
15 RPC_DEST *cgr_rpc {"Address": "localhost:2013","Transport":"*gob","Method":"APIerSv2.SetDestination","Attempts":1,"Async" :false,"Params":{"Id":"<<.Account.GetID>>","Prefixes":["1","2","3"]}}
16 RPC_CDRSTATS *cgr_rpc {"Address": "localhost:2013","Transport":"*gob","Method":"CDRStatsV1.AddQueue","Attempts":1,"Async" :false,"Params":{"Id":"qtest"}}

View File

@@ -1,3 +1,3 @@
#ActionsId[0],Action[1],ExtraParameters[2],Filter[3],BalanceId[4],BalanceType[5],Categories[6],DestinationIds[7],RatingSubject[8],SharedGroup[9],ExpiryTime[10],TimingIds[11],Units[12],BalanceWeight[13],BalanceBlocker[14],BalanceDisabled[15],Weight[16]
#ActionsId[0],Action[1],ExtraParameters[2],Filter[3],BalanceId[4],BalanceType[5],Categories[6],DestinationIds[7],RatingSubject[8],SharedGroup[9],ExpiryTime[10],Units[11],BalanceWeight[12],BalanceBlocker[13],BalanceDisabled[14],Weight[15]
ACT_TOPUP_RST_10,*topup_reset,,,test,*monetary,,*any,,,*unlimited,,10,10,false,false,10
ACT_LOG_WARNING,*log,,,,,,,,,,,,,false,false,10
1 #ActionsId[0] #ActionsId[0],Action[1],ExtraParameters[2],Filter[3],BalanceId[4],BalanceType[5],Categories[6],DestinationIds[7],RatingSubject[8],SharedGroup[9],ExpiryTime[10],Units[11],BalanceWeight[12],BalanceBlocker[13],BalanceDisabled[14],Weight[15] Action[1] ExtraParameters[2] Filter[3] BalanceId[4] BalanceType[5] Categories[6] DestinationIds[7] RatingSubject[8] SharedGroup[9] ExpiryTime[10] TimingIds[11] Units[12] BalanceWeight[13] BalanceBlocker[14] BalanceDisabled[15] Weight[16]
2 ACT_TOPUP_RST_10 ACT_TOPUP_RST_10,*topup_reset,,,test,*monetary,,*any,,,*unlimited,,10,10,false,false,10 *topup_reset test *monetary *any *unlimited 10 10 false false 10
3 ACT_LOG_WARNING ACT_LOG_WARNING,*log,,,,,,,,,,,,,false,false,10 *log false false 10

View File

@@ -1,7 +1,7 @@
#Id,ActionsId,TimingId,Weight
STANDARD_PLAN,TOPUP_RST_MONETARY_10,*asap,10
STANDARD_PLAN,TOPUP_RST_5M_VOICE,*asap,10
STANDARD_PLAN,TOPUP_RST_10M_VOICE,*asap,10
STANDARD_PLAN,TOPUP_RST_100_SMS,*asap,10
STANDARD_PLAN,TOPUP_RST_1024_DATA,*asap,10
STANDARD_PLAN,TOPUP_RST_1024_DATA,TM_NOON,10
#Id,ActionsId,Weight
STANDARD_PLAN,TOPUP_RST_MONETARY_10,10
STANDARD_PLAN,TOPUP_RST_5M_VOICE,10
STANDARD_PLAN,TOPUP_RST_10M_VOICE,10
STANDARD_PLAN,TOPUP_RST_100_SMS,10
STANDARD_PLAN,TOPUP_RST_1024_DATA,10
STANDARD_PLAN,TOPUP_RST_1024_DATA,10
1 #Id ActionsId TimingId Weight
2 STANDARD_PLAN TOPUP_RST_MONETARY_10 *asap 10
3 STANDARD_PLAN TOPUP_RST_5M_VOICE *asap 10
4 STANDARD_PLAN TOPUP_RST_10M_VOICE *asap 10
5 STANDARD_PLAN TOPUP_RST_100_SMS *asap 10
6 STANDARD_PLAN TOPUP_RST_1024_DATA *asap 10
7 STANDARD_PLAN TOPUP_RST_1024_DATA TM_NOON 10

View File

@@ -1,4 +1,4 @@
#ID[0],UniqueID[1],ThresholdType[2],ThresholdValue[3],Recurrent[4],MinSleep[5],ExpiryTime[6],ActivationTime[7],BalanceTag[8],BalanceType[9],BalanceCategories[10],BalanceDestinationIDs[11],BalanceRatingSubject[12],BalanceSharedGroup[13],BalanceExpiryTime[14],BalanceTimingIDs[15],BalanceWeight[16],BalanceBlocker[17],BalanceDisabled[18],ActionsID[19],Weight[20]
#ID[0],UniqueID[1],ThresholdType[2],ThresholdValue[3],Recurrent[4],MinSleep[5],ExpiryTime[6],ActivationTime[7],BalanceTag[8],BalanceType[9],BalanceCategories[10],BalanceDestinationIDs[11],BalanceRatingSubject[12],BalanceSharedGroup[13],BalanceExpiryTime[14],BalanceWeight[15],BalanceBlocker[16],BalanceDisabled[17],ActionsID[18],Weight[19]
# STANDARD_TRIGGERS *min_balance will call the action <TOPUP_BONUS_10SMS> when the monetary balance will go bellow 2 units
STANDARD_TRIGGERS,,*min_balance,2,,,,,,*monetary,,,,,,,,,,TOPUP_BONUS_10SMS,10
1 #ID[0],UniqueID[1],ThresholdType[2],ThresholdValue[3],Recurrent[4],MinSleep[5],ExpiryTime[6],ActivationTime[7],BalanceTag[8],BalanceType[9],BalanceCategories[10],BalanceDestinationIDs[11],BalanceRatingSubject[12],BalanceSharedGroup[13],BalanceExpiryTime[14],BalanceTimingIDs[15],BalanceWeight[16],BalanceBlocker[17],BalanceDisabled[18],ActionsID[19],Weight[20] #ID[0],UniqueID[1],ThresholdType[2],ThresholdValue[3],Recurrent[4],MinSleep[5],ExpiryTime[6],ActivationTime[7],BalanceTag[8],BalanceType[9],BalanceCategories[10],BalanceDestinationIDs[11],BalanceRatingSubject[12],BalanceSharedGroup[13],BalanceExpiryTime[14],BalanceWeight[15],BalanceBlocker[16],BalanceDisabled[17],ActionsID[18],Weight[19]
2 # STANDARD_TRIGGERS *min_balance will call the action <TOPUP_BONUS_10SMS> when the monetary balance will go bellow 2 units # STANDARD_TRIGGERS *min_balance will call the action <TOPUP_BONUS_10SMS> when the monetary balance will go bellow 2 units
3 STANDARD_TRIGGERS,,*min_balance,2,,,,,,*monetary,,,,,,,,,,TOPUP_BONUS_10SMS,10 STANDARD_TRIGGERS,,*min_balance,2,,,,,,*monetary,,,,,,,,,,TOPUP_BONUS_10SMS,10
4 # STANDARD_TRIGGERS *max_balance will call <DISABLE_ACCOUNT> action when the monetary balance will go above 100 units # STANDARD_TRIGGERS *max_balance will call <DISABLE_ACCOUNT> action when the monetary balance will go above 100 units

View File

@@ -134,7 +134,6 @@ func testDspChcLoadAfterFolder(t *testing.T) {
expStats[utils.CacheThresholdProfiles].Items = 2
expStats[utils.CacheThresholds].Items = 2
expStats[utils.CacheLoadIDs].Items = 26
expStats[utils.CacheTimings].Items = 10
expStats[utils.CacheThresholdFilterIndexes].Items = 2
expStats[utils.CacheThresholdFilterIndexes].Groups = 1
expStats[utils.CacheStatFilterIndexes].Items = 7
@@ -161,7 +160,6 @@ func testDspChcPrecacheStatus(t *testing.T) {
expected := map[string]string{
utils.CacheResourceProfiles: utils.MetaReady,
utils.CacheResources: utils.MetaReady,
utils.CacheTimings: utils.MetaReady,
utils.CacheStatQueueProfiles: utils.MetaReady,
utils.CacheStatQueues: utils.MetaReady,
utils.CacheThresholdProfiles: utils.MetaReady,
@@ -203,7 +201,6 @@ func testDspChcPrecacheStatus(t *testing.T) {
utils.CacheAccounts: utils.MetaReady,
utils.CacheVersions: utils.MetaReady,
utils.CacheTBLTPTimings: utils.MetaReady,
utils.CacheTBLTPResources: utils.MetaReady,
utils.CacheTBLTPStats: utils.MetaReady,
utils.CacheTBLTPThresholds: utils.MetaReady,

View File

@@ -43,7 +43,6 @@ var sTestsDspRpl = []func(t *testing.T){
testDspRplStatQueueProfile,
testDspRplResource,
testDspRplResourceProfile,
testDspRplTiming,
testDspRplRateProfile,
testDspRplAccount,
testDspRplActionProfile,
@@ -837,64 +836,6 @@ func testDspRplResourceProfile(t *testing.T) {
}
}
func testDspRplTiming(t *testing.T) {
// Set Timing
var replyStr string
setTiming := &utils.TPTimingWithAPIOpts{
TPTiming: &utils.TPTiming{
ID: "testTimings",
Years: utils.Years{1999},
},
Tenant: "cgrates.org",
APIOpts: map[string]interface{}{
utils.OptsAPIKey: "repl12345",
},
}
if err := dispEngine.RPC.Call(utils.ReplicatorSv1SetTiming, setTiming, &replyStr); err != nil {
t.Error("Unexpected error when calling ReplicatorSv1.SetTiming: ", err)
} else if replyStr != utils.OK {
t.Error("Unexpected reply returned", replyStr)
}
// Get Timing
var reply utils.TPTiming
argsTiming := &utils.StringWithAPIOpts{
Arg: "testTimings",
Tenant: "cgrates.org",
APIOpts: map[string]interface{}{
utils.OptsAPIKey: "repl12345",
},
}
if err := dispEngine.RPC.Call(utils.ReplicatorSv1GetTiming, argsTiming, &reply); err != nil {
t.Error("Unexpected error when calling ReplicatorSv1.GetTiming: ", err)
} else if reply.ID != argsTiming.Arg {
t.Errorf("Expecting: %+v, received: %+v", argsTiming.Arg, reply.ID)
} else if reply.Years[0] != 1999 {
t.Errorf("Expecting: %+v, received: %+v", utils.Years{1999}, reply.Years)
}
// Stop engine 1
allEngine.stopEngine(t)
// Get Timing
if err := dispEngine.RPC.Call(utils.ReplicatorSv1GetTiming, argsTiming, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() {
t.Errorf("Expecting: %+v, received: %+v, ", utils.ErrNotFound, err)
}
// Start engine 1
allEngine.startEngine(t)
// Remove Timing
if err := dispEngine.RPC.Call(utils.ReplicatorSv1RemoveTiming, argsTiming, &replyStr); err != nil {
t.Error(err)
} else if replyStr != utils.OK {
t.Error("Unexpected reply returned", replyStr)
}
// Get Timing
if err := dispEngine.RPC.Call(utils.ReplicatorSv1GetTiming, argsTiming, &reply); err == nil || err.Error() != utils.ErrNotFound.Error() {
t.Errorf("Expecting: %+v, received: %+v, ", utils.ErrNotFound, err)
}
}
func testDspRplRateProfile(t *testing.T) {
// Set RateProfile
var replyStr string

View File

@@ -77,9 +77,6 @@ The following types are implemented:
\*notexists
Is the negation of *\*exists*.
\*nottimings
Is the negation of *\*timings*.
\*destinations
Will make sure that the *Element* is a prefix contained inside one of the destination IDs as *Values*.

View File

@@ -51,7 +51,7 @@ FallbackSubjects
RatingPlan
^^^^^^^^^^
Groups together rates per destination and relates them to event timing. Configured via the following parameters:
Groups together rates per destination. Configured via the following parameters:
ID
The tag uniquely idenfying each RatingPlan. There can be multiple entries grouped by the same ID.
@@ -59,11 +59,8 @@ ID
DestinationRatesID
The identifier of the :ref:`DestinationRate` set.
TimingID
The itentifier of the :ref:`Timing` profile.
Weight
Priority of matching rule (*DestinationRatesID*+*TimingID*). Higher value equals higher priority.
Priority of matching rule (*DestinationRatesID*). Higher value equals higher priority.
.. _DestinationRate:
@@ -150,36 +147,6 @@ GroupIntervalStart
Activates the rate at specific usage within the event.
.. _Timing:
Timing
^^^^^^
A *Timing* profile is giving time awarness to an event. Configured via the following parameters:
ID
The tag uniquely idenfying each *Timing* profile.
Years
List of years to match within the event. Defaults to the catch-all meta: *\*any*.
Months
List of months to match within the event. Defaults to the catch-all meta: *\*any*.
MonthDays
List of month days to match within the event. Defaults to the catch-all meta: *\*any*.
WeekDays
List of week days to match within the event as integer values. Special case for *Sunday* which matches for both 0 and 7.
Time
The exact time to match (mostly as time start). Defined in the format: *hh:mm:ss*
.. Note:: Due to optimization, CGRateS encapsulates and stores the rating information into just three objects: *Destinations*, *RatingProfiles* and *RatingPlan* (composed out of *RatingPlan*, *DestinationRate*, *Rate* and *Timing* objects).
.. _Accounting:

View File

@@ -10,7 +10,6 @@ started with custom configuration, depending on the tutorial you have followed.
For our tutorial we load again prepared data out of shared folder, containing
following rules:
- Create the necessary timings (always, asap, peak, offpeak).
- Configure 3 destinations (1002, 1003 and 10 used as catch all rule).
- As rating we configure the following:

View File

@@ -113,10 +113,6 @@ func (dbM *DataDBMock) RemoveResourceDrv(string, string) error {
return utils.ErrNotImplemented
}
func (dbM *DataDBMock) RemoveTimingDrv(string) error {
return utils.ErrNotImplemented
}
func (dbM *DataDBMock) GetLoadHistory(int, bool, string) ([]*utils.LoadInstance, error) {
return nil, utils.ErrNotImplemented
}

View File

@@ -98,11 +98,6 @@ func (t *Threshold) ProcessEvent(args *ThresholdsArgsProcessEvent, dm *DataManag
// }
// for _, actionSetID := range t.tPrfl.ActionIDs {
// at := &ActionTiming{
// Uuid: utils.GenUUID(),
// ActionsID: actionSetID,
// ExtraData: args.CGREvent,
// }
// if tntAcnt != utils.EmptyString {
// at.accountIDs = utils.NewStringMap(tntAcnt)
// }