mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
DefaultTimezone configuration fix for cdrs_primary table
This commit is contained in:
@@ -549,6 +549,9 @@ func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) error {
|
||||
if jsnGeneralCfg.Tpexport_dir != nil {
|
||||
self.TpExportPath = *jsnGeneralCfg.Tpexport_dir
|
||||
}
|
||||
if jsnGeneralCfg.Default_timezone != nil {
|
||||
self.DefaultTimezone = *jsnGeneralCfg.Default_timezone
|
||||
}
|
||||
}
|
||||
|
||||
if jsnListenCfg != nil {
|
||||
|
||||
@@ -148,6 +148,7 @@ func (self *CdrServer) RateCdrs(cgrIds, runIds, tors, cdrHosts, cdrSources, reqT
|
||||
|
||||
// Returns error if not able to properly store the CDR, mediation is async since we can always recover offline
|
||||
func (self *CdrServer) processCdr(storedCdr *StoredCdr) (err error) {
|
||||
Logger.Debug(fmt.Sprintf("***processCdr: %+v", storedCdr))
|
||||
if storedCdr.Direction == "" {
|
||||
storedCdr.Direction = utils.OUT
|
||||
}
|
||||
@@ -177,6 +178,7 @@ func (self *CdrServer) processCdr(storedCdr *StoredCdr) (err error) {
|
||||
if err := self.cdrDb.SetCdr(storedCdr); err != nil { // Only original CDR stored in primary table, no derived
|
||||
Logger.Err(fmt.Sprintf("<CDRS> Storing primary CDR %+v, got error: %s", storedCdr, err.Error()))
|
||||
}
|
||||
Logger.Debug(fmt.Sprintf("***Have set primary CDR to: %+v", storedCdr))
|
||||
}
|
||||
go self.deriveRateStoreStatsReplicate(storedCdr)
|
||||
return nil
|
||||
@@ -184,23 +186,27 @@ func (self *CdrServer) processCdr(storedCdr *StoredCdr) (err error) {
|
||||
|
||||
// Returns error if not able to properly store the CDR, mediation is async since we can always recover offline
|
||||
func (self *CdrServer) deriveRateStoreStatsReplicate(storedCdr *StoredCdr) error {
|
||||
Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate storedCdr: %+v", storedCdr))
|
||||
cdrRuns, err := self.deriveCdrs(storedCdr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, cdr := range cdrRuns {
|
||||
// Rate CDR
|
||||
Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate cdr in runs: %+v", cdr))
|
||||
if self.rater != nil && !cdr.Rated {
|
||||
if err := self.rateCDR(cdr); err != nil {
|
||||
cdr.Cost = -1.0 // If there was an error, mark the CDR
|
||||
cdr.ExtraInfo = err.Error()
|
||||
}
|
||||
}
|
||||
Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate after rating cdr is: %+v", cdr))
|
||||
if self.cgrCfg.CDRSStoreCdrs { // Store CDRs
|
||||
// Store RatedCDR
|
||||
if err := self.cdrDb.SetRatedCdr(cdr); err != nil {
|
||||
Logger.Err(fmt.Sprintf("<CDRS> Storing rated CDR %+v, got error: %s", cdr, err.Error()))
|
||||
}
|
||||
Logger.Debug(fmt.Sprintf("***deriveRateStoreStatsReplicate stored cdr is: %+v", cdr))
|
||||
// Store CostDetails
|
||||
if cdr.Rated || utils.IsSliceMember([]string{utils.RATED, utils.META_RATED}, cdr.ReqType) { // Account related CDRs are saved automatically, so save the others here if requested
|
||||
if err := self.cdrDb.LogCallCost(cdr.CgrId, utils.CDRS_SOURCE, cdr.MediationRunId, cdr.CostDetails); err != nil {
|
||||
|
||||
@@ -142,5 +142,6 @@ func (fsCdr FSCdr) AsStoredCdr(timezone string) *StoredCdr {
|
||||
storCdr.DisconnectCause = utils.FirstNonEmpty(fsCdr.vars[utils.CGR_DISCONNECT_CAUSE], fsCdr.vars["hangup_cause"])
|
||||
storCdr.ExtraFields = fsCdr.getExtraFields()
|
||||
storCdr.Cost = -1
|
||||
Logger.Debug(fmt.Sprintf("***FSCdr.AsStoredCDR, original answer time: %s, timezone: %s, returning storCdr: %+v", fsCdr.vars[FS_ANSWER_TIME], timezone, storCdr))
|
||||
return storCdr
|
||||
}
|
||||
|
||||
@@ -506,7 +506,7 @@ func TestTutFsCalls1006Cdrs(t *testing.T) {
|
||||
if reply[0].Destination != "1002" {
|
||||
t.Errorf("Unexpected Destination for CDR: %+v", reply[0])
|
||||
}
|
||||
if reply[0].Usage != "64" && reply[0].Usage != "65" { // Usage as seconds
|
||||
if reply[0].Usage != "63" && reply[0].Usage != "64" && reply[0].Usage != "65" { // Usage as seconds
|
||||
t.Errorf("Unexpected Usage for CDR: %+v", reply[0])
|
||||
}
|
||||
if reply[0].Cost == -1.0 { // Cost was not calculated
|
||||
|
||||
Reference in New Issue
Block a user