func (self *Mediator) rateCDR(storedCdr *utils.StoredCdr) error { var qryCC *CallCost var errCost error if storedCdr.ReqType == utils.PREPAID { // Should be previously calculated and stored in DB qryCC, errCost = self.getCostsFromDB(storedCdr.CgrId, storedCdr.MediationRunId) } else { qryCC, errCost = self.getCostFromRater(storedCdr) } if errCost != nil { return errCost } else if qryCC == nil { return errors.New("No cost returned from rater") } storedCdr.Cost = qryCC.Cost return nil }
func (fsev FSEvent) AsStoredCdr() *utils.StoredCdr { storCdr := new(utils.StoredCdr) storCdr.CgrId = fsev.GetCgrId() storCdr.TOR = utils.VOICE storCdr.AccId = fsev.GetUUID() storCdr.CdrHost = fsev.GetOriginatorIP(utils.META_DEFAULT) storCdr.CdrSource = "FS_" + fsev.GetName() storCdr.ReqType = fsev.GetReqType(utils.META_DEFAULT) storCdr.Direction = fsev.GetDirection(utils.META_DEFAULT) storCdr.Tenant = fsev.GetTenant(utils.META_DEFAULT) storCdr.Category = fsev.GetCategory(utils.META_DEFAULT) storCdr.Account = fsev.GetAccount(utils.META_DEFAULT) storCdr.Subject = fsev.GetSubject(utils.META_DEFAULT) storCdr.Destination = fsev.GetDestination(utils.META_DEFAULT) storCdr.SetupTime, _ = fsev.GetSetupTime(utils.META_DEFAULT) storCdr.AnswerTime, _ = fsev.GetAnswerTime(utils.META_DEFAULT) storCdr.Usage, _ = fsev.GetDuration(utils.META_DEFAULT) storCdr.ExtraFields = fsev.GetExtraFields() storCdr.Cost = -1 return storCdr }
func (fsCdr FSCdr) AsStoredCdr() *utils.StoredCdr { storCdr := new(utils.StoredCdr) storCdr.CgrId = fsCdr.getCgrId() storCdr.TOR = utils.VOICE storCdr.AccId = fsCdr.vars[FS_UUID] storCdr.CdrHost = fsCdr.vars[FS_IP] storCdr.CdrSource = FS_CDR_SOURCE storCdr.ReqType = utils.FirstNonEmpty(fsCdr.vars[FS_REQTYPE], cfg.DefaultReqType) storCdr.Direction = "*out" storCdr.Tenant = utils.FirstNonEmpty(fsCdr.vars[FS_CSTMID], cfg.DefaultTenant) storCdr.Category = utils.FirstNonEmpty(fsCdr.vars[FS_CATEGORY], cfg.DefaultCategory) storCdr.Account = utils.FirstNonEmpty(fsCdr.vars[FS_ACCOUNT], fsCdr.vars[FS_USERNAME]) storCdr.Subject = utils.FirstNonEmpty(fsCdr.vars[FS_SUBJECT], fsCdr.vars[FS_USERNAME]) storCdr.Destination = utils.FirstNonEmpty(fsCdr.vars[FS_DESTINATION], fsCdr.vars[FS_CALL_DEST_NR], fsCdr.vars[FS_SIP_REQUSER]) storCdr.SetupTime, _ = utils.ParseTimeDetectLayout(fsCdr.vars[FS_SETUP_TIME]) // Not interested to process errors, should do them if necessary in a previous step storCdr.AnswerTime, _ = utils.ParseTimeDetectLayout(fsCdr.vars[FS_ANSWER_TIME]) storCdr.Usage, _ = utils.ParseDurationWithSecs(fsCdr.vars[FS_DURATION]) storCdr.ExtraFields = fsCdr.getExtraFields() storCdr.Cost = -1 return storCdr }